Mercurial > gftp.yaz
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 } |