comparison lib/local.c @ 845:8263cc35c027

2006-11-2 Brian Masney <masneyb@gftp.org> * lib/gftp.h lib/local.c lib/misc.c lib/protocols.c lib/rfc959.c lib/sshv2.c - added gftp_filename_to_utf8() and gftp_filename_from_utf8(). (gftp_string_from_utf8) - added argument that will force the local encoding to be used.
author masneyb
date Fri, 03 Nov 2006 03:02:51 +0000
parents 32dbed7e0dc4
children 5e3005923374
comparison
equal deleted inserted replaced
844:1ece208d1357 845:8263cc35c027
67 g_strerror (errno)); 67 g_strerror (errno));
68 request->directory = NULL; 68 request->directory = NULL;
69 return (GFTP_ERETRYABLE); 69 return (GFTP_ERETRYABLE);
70 } 70 }
71 71
72 utf8 = gftp_string_to_utf8 (request, tempstr, &destlen); 72 utf8 = gftp_filename_to_utf8 (request, tempstr, &destlen);
73 if (utf8 != NULL) 73 if (utf8 != NULL)
74 request->directory = utf8; 74 request->directory = utf8;
75 else 75 else
76 request->directory = g_strdup (tempstr); 76 request->directory = g_strdup (tempstr);
77 77
88 88
89 g_return_val_if_fail (request != NULL, GFTP_EFATAL); 89 g_return_val_if_fail (request != NULL, GFTP_EFATAL);
90 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL); 90 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL);
91 g_return_val_if_fail (directory != NULL, GFTP_EFATAL); 91 g_return_val_if_fail (directory != NULL, GFTP_EFATAL);
92 92
93 utf8 = gftp_string_from_utf8 (request, directory, &destlen); 93 utf8 = gftp_filename_from_utf8 (request, directory, &destlen);
94 if (utf8 != NULL) 94 if (utf8 != NULL)
95 { 95 {
96 ret = chdir (utf8); 96 ret = chdir (utf8);
97 g_free (utf8); 97 g_free (utf8);
98 } 98 }
166 flags = O_RDONLY; 166 flags = O_RDONLY;
167 #if defined (_LARGEFILE_SOURCE) && defined (O_LARGEFILE) 167 #if defined (_LARGEFILE_SOURCE) && defined (O_LARGEFILE)
168 flags |= O_LARGEFILE; 168 flags |= O_LARGEFILE;
169 #endif 169 #endif
170 170
171 utf8 = gftp_string_from_utf8 (request, filename, &destlen); 171 utf8 = gftp_filename_from_utf8 (request, filename, &destlen);
172 if (utf8 != NULL) 172 if (utf8 != NULL)
173 { 173 {
174 request->datafd = gftp_fd_open (request, utf8, flags, 0); 174 request->datafd = gftp_fd_open (request, utf8, flags, 0);
175 g_free (utf8); 175 g_free (utf8);
176 } 176 }
225 #if defined (_LARGEFILE_SOURCE) && defined (O_LARGEFILE) 225 #if defined (_LARGEFILE_SOURCE) && defined (O_LARGEFILE)
226 flags |= O_LARGEFILE; 226 flags |= O_LARGEFILE;
227 #endif 227 #endif
228 228
229 perms = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; 229 perms = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
230 utf8 = gftp_string_from_utf8 (request, filename, &destlen); 230 utf8 = gftp_filename_from_utf8 (request, filename, &destlen);
231 if (utf8 != NULL) 231 if (utf8 != NULL)
232 { 232 {
233 request->datafd = gftp_fd_open (request, utf8, flags, perms); 233 request->datafd = gftp_fd_open (request, utf8, flags, perms);
234 g_free (utf8); 234 g_free (utf8);
235 } 235 }
296 struct stat st; 296 struct stat st;
297 size_t destlen; 297 size_t destlen;
298 char *utf8; 298 char *utf8;
299 int ret; 299 int ret;
300 300
301 utf8 = gftp_string_from_utf8 (request, filename, &destlen); 301 utf8 = gftp_filename_from_utf8 (request, filename, &destlen);
302 if (utf8 != NULL) 302 if (utf8 != NULL)
303 { 303 {
304 ret = stat (utf8, &st); 304 ret = stat (utf8, &st);
305 g_free (utf8); 305 g_free (utf8);
306 } 306 }
413 if (request->directory[strlen (request->directory) - 1] != '/') 413 if (request->directory[strlen (request->directory) - 1] != '/')
414 dir = g_strconcat (request->directory, "/", NULL); 414 dir = g_strconcat (request->directory, "/", NULL);
415 else 415 else
416 dir = request->directory; 416 dir = request->directory;
417 417
418 utf8 = gftp_string_from_utf8 (request, dir, &destlen); 418 utf8 = gftp_filename_from_utf8 (request, dir, &destlen);
419 if (utf8 != NULL) 419 if (utf8 != NULL)
420 { 420 {
421 lpd->dir = opendir (utf8); 421 lpd->dir = opendir (utf8);
422 g_free (utf8); 422 g_free (utf8);
423 } 423 }
445 struct stat st; 445 struct stat st;
446 size_t destlen; 446 size_t destlen;
447 char *utf8; 447 char *utf8;
448 int ret; 448 int ret;
449 449
450 utf8 = gftp_string_from_utf8 (request, filename, &destlen); 450 utf8 = gftp_filename_from_utf8 (request, filename, &destlen);
451 if (utf8 != NULL) 451 if (utf8 != NULL)
452 { 452 {
453 ret = stat (utf8, &st); 453 ret = stat (utf8, &st);
454 g_free (utf8); 454 g_free (utf8);
455 } 455 }
472 472
473 g_return_val_if_fail (request != NULL, GFTP_EFATAL); 473 g_return_val_if_fail (request != NULL, GFTP_EFATAL);
474 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL); 474 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL);
475 g_return_val_if_fail (directory != NULL, GFTP_EFATAL); 475 g_return_val_if_fail (directory != NULL, GFTP_EFATAL);
476 476
477 utf8 = gftp_string_from_utf8 (request, directory, &destlen); 477 utf8 = gftp_filename_from_utf8 (request, directory, &destlen);
478 if (utf8 != NULL) 478 if (utf8 != NULL)
479 { 479 {
480 ret = rmdir (utf8); 480 ret = rmdir (utf8);
481 g_free (utf8); 481 g_free (utf8);
482 } 482 }
508 508
509 g_return_val_if_fail (request != NULL, GFTP_EFATAL); 509 g_return_val_if_fail (request != NULL, GFTP_EFATAL);
510 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL); 510 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL);
511 g_return_val_if_fail (file != NULL, GFTP_EFATAL); 511 g_return_val_if_fail (file != NULL, GFTP_EFATAL);
512 512
513 utf8 = gftp_string_from_utf8 (request, file, &destlen); 513 utf8 = gftp_filename_from_utf8 (request, file, &destlen);
514 if (utf8 != NULL) 514 if (utf8 != NULL)
515 { 515 {
516 ret = unlink (utf8); 516 ret = unlink (utf8);
517 g_free (utf8); 517 g_free (utf8);
518 } 518 }
546 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL); 546 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL);
547 g_return_val_if_fail (directory != NULL, GFTP_EFATAL); 547 g_return_val_if_fail (directory != NULL, GFTP_EFATAL);
548 548
549 perms = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; 549 perms = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
550 550
551 utf8 = gftp_string_from_utf8 (request, directory, &destlen); 551 utf8 = gftp_filename_from_utf8 (request, directory, &destlen);
552 if (utf8 != NULL) 552 if (utf8 != NULL)
553 { 553 {
554 ret = mkdir (utf8, perms); 554 ret = mkdir (utf8, perms);
555 g_free (utf8); 555 g_free (utf8);
556 } 556 }
586 g_return_val_if_fail (request != NULL, GFTP_EFATAL); 586 g_return_val_if_fail (request != NULL, GFTP_EFATAL);
587 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL); 587 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL);
588 g_return_val_if_fail (oldname != NULL, GFTP_EFATAL); 588 g_return_val_if_fail (oldname != NULL, GFTP_EFATAL);
589 g_return_val_if_fail (newname != NULL, GFTP_EFATAL); 589 g_return_val_if_fail (newname != NULL, GFTP_EFATAL);
590 590
591 old_utf8 = gftp_string_from_utf8 (request, oldname, &destlen); 591 old_utf8 = gftp_filename_from_utf8 (request, oldname, &destlen);
592 conv_oldname = old_utf8 != NULL ? old_utf8 : oldname; 592 conv_oldname = old_utf8 != NULL ? old_utf8 : oldname;
593 new_utf8 = gftp_string_from_utf8 (request, newname, &destlen); 593 new_utf8 = gftp_filename_from_utf8 (request, newname, &destlen);
594 conv_newname = new_utf8 != NULL ? new_utf8 : newname; 594 conv_newname = new_utf8 != NULL ? new_utf8 : newname;
595 595
596 if (rename (conv_oldname, conv_newname) == 0) 596 if (rename (conv_oldname, conv_newname) == 0)
597 { 597 {
598 request->logging_function (gftp_logging_misc, request, 598 request->logging_function (gftp_logging_misc, request,
626 626
627 g_return_val_if_fail (request != NULL, GFTP_EFATAL); 627 g_return_val_if_fail (request != NULL, GFTP_EFATAL);
628 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL); 628 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, GFTP_EFATAL);
629 g_return_val_if_fail (file != NULL, GFTP_EFATAL); 629 g_return_val_if_fail (file != NULL, GFTP_EFATAL);
630 630
631 utf8 = gftp_string_from_utf8 (request, file, &destlen); 631 utf8 = gftp_filename_from_utf8 (request, file, &destlen);
632 if (utf8 != NULL) 632 if (utf8 != NULL)
633 { 633 {
634 ret = chmod (utf8, mode); 634 ret = chmod (utf8, mode);
635 g_free (utf8); 635 g_free (utf8);
636 } 636 }
668 g_return_val_if_fail (file != NULL, GFTP_EFATAL); 668 g_return_val_if_fail (file != NULL, GFTP_EFATAL);
669 669
670 time_buf.modtime = datetime; 670 time_buf.modtime = datetime;
671 time_buf.actime = datetime; 671 time_buf.actime = datetime;
672 672
673 utf8 = gftp_string_from_utf8 (request, file, &destlen); 673 utf8 = gftp_filename_from_utf8 (request, file, &destlen);
674 if (utf8 != NULL) 674 if (utf8 != NULL)
675 { 675 {
676 ret = utime (utf8, &time_buf); 676 ret = utime (utf8, &time_buf);
677 g_free (utf8); 677 g_free (utf8);
678 } 678 }