X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/2fe1feea751bdb73797169402cd79fb25ace420c..d3d07a5e860f1cde0e234ec7a1aff7111a2c514f:/clientserver.c diff --git a/clientserver.c b/clientserver.c index 5baad1a6..a3301117 100644 --- a/clientserver.c +++ b/clientserver.c @@ -3,7 +3,7 @@ * * Copyright (C) 1998-2001 Andrew Tridgell * Copyright (C) 2001-2002 Martin Pool - * Copyright (C) 2002-2007 Wayne Davison + * Copyright (C) 2002-2008 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -120,6 +120,10 @@ int start_socket_client(char *host, int remote_argc, char *remote_argv[], set_socket_options(fd, sockopts); +#ifdef ICONV_CONST + setup_iconv(); +#endif + ret = start_inband_exchange(fd, fd, user, remote_argc, remote_argv); return ret ? ret : client_run(fd, fd, -1, argc, argv); @@ -391,7 +395,7 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) pid_t pre_exec_pid = 0; char *request = NULL; -#ifdef ICONV_CONST +#ifdef ICONV_OPTION iconv_opt = lp_charset(i); if (*iconv_opt) setup_iconv(); @@ -480,9 +484,6 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) /* TODO: Perhaps take a list of gids, and make them into the * supplementary groups. */ - /* We do a push_dir() without actually calling chdir() in order - * to make sure that the module's path is absolute. After this - * check, module_dir will be set to an absolute path. */ module_dir = lp_path(i); if (use_chroot) { if ((p = strstr(module_dir, "/./")) != NULL) { @@ -492,6 +493,8 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) out_of_memory("rsync_module"); } + /* We do a push_dir() that doesn't actually call chdir() + * just to make a relative path absolute. */ strlcpy(line, curr_dir, sizeof line); if (!push_dir(module_dir, 1)) goto chdir_failed; @@ -807,6 +810,7 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) exit_cleanup(RERR_UNSUPPORTED); } +#ifdef ICONV_OPTION if (!iconv_opt) { if (ic_send != (iconv_t)-1) { iconv_close(ic_send); @@ -817,6 +821,7 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) ic_recv = (iconv_t)-1; } } +#endif if (!numeric_ids && (use_chroot ? lp_numeric_ids(i) != False : lp_numeric_ids(i) == True))