Mercurial > gftp.yaz
diff src/text/gftp-text.c @ 182:33b394ebba68
2003-6-15 Brian Masney <masneyb@gftp.org>
* lib/cache.c lib/gftp.h - added gftp_generate_cache_description().
* lib/cache.c lib/gftp.h src/text/gftp-text.c src/gtk/delete-dialog.c
src/gtk/menu-items.c src/gtk/misc-gtk.c src/gtk/mkdir-dialog.c - Added
description parameter to gftp_delete_cache_entry().
* lib/protocols.c lib/gftp.h - added gftp_fd_open(). It will call
open() and then set the socket option close on exec
* lib/cache.c lib/local.c lib/misc.c - use gftp_fd_open() instead of
open()
* lib/rfc959.c lib/protocols.c - on newly created sockets, make sure
the close on exec socket option is set
* lib/options.h src/text/gftp-text.c src/gtk/transfer.c - added
preserve_permissions option
* lib/protocols.c (gftp_parse_url) - allow an @ to be in the username
* src/text/gftp-text.c - after transfering a file, honor
preserve_permissions if it is set
* src/gtk/delete-dialog.c - improvments to clearing the expired cache
entries
author | masneyb |
---|---|
date | Sun, 15 Jun 2003 21:28:02 +0000 |
parents | 8d933999bba6 |
children | 13ca1defdc75 |
line wrap: on
line diff
--- a/src/text/gftp-text.c Sun Jun 15 13:22:09 2003 +0000 +++ b/src/text/gftp-text.c Sun Jun 15 21:28:02 2003 +0000 @@ -502,7 +502,7 @@ else { if (gftp_remove_file (request, command) == 0) - gftp_delete_cache_entry (request, 0); + gftp_delete_cache_entry (request, NULL, 0); } return (1); } @@ -843,12 +843,16 @@ int gftp_text_transfer_files (gftp_transfer * transfer) { + int i, j, sw, tot, preserve_permissions; char buf[8192], *progress = "|/-\\"; struct timeval updatetime; long fromsize, total; gftp_file * curfle; - int i, j, sw, tot; ssize_t num_read; + mode_t mode; + + gftp_lookup_request_option (transfer->fromreq, "preserve_permissions", + &preserve_permissions); for (transfer->curfle = transfer->files; transfer->curfle != NULL; @@ -929,6 +933,19 @@ gftp_end_transfer (transfer->toreq); } + if (!curfle->is_fd && preserve_permissions) + { + if (curfle->attribs) + { + mode = gftp_parse_attribs (curfle->attribs); + if (mode != 0) + gftp_chmod (transfer->toreq, curfle->destfile, mode); + } + + if (curfle->datetime != 0) + gftp_set_file_time (transfer->toreq, curfle->destfile, + curfle->datetime); + } } return (1); }