|
version 1.1, 2012/02/17 15:09:30
|
version 1.1.1.2, 2013/10/14 07:51:14
|
|
Line 4
|
Line 4
|
| * Copyright (C) 1996-2000 Andrew Tridgell |
* Copyright (C) 1996-2000 Andrew Tridgell |
| * Copyright (C) 1996 Paul Mackerras |
* Copyright (C) 1996 Paul Mackerras |
| * Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org> |
* Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org> |
| * Copyright (C) 2004-2009 Wayne Davison | * Copyright (C) 2004-2013 Wayne Davison |
| * |
* |
| * This program is free software; you can redistribute it and/or modify |
* 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 |
* it under the terms of the GNU General Public License as published by |
|
Line 26 extern int am_sender;
|
Line 26 extern int am_sender;
|
| extern int am_server; |
extern int am_server; |
| extern int blocking_io; |
extern int blocking_io; |
| extern int filesfrom_fd; |
extern int filesfrom_fd; |
| extern mode_t orig_umask; | extern int munge_symlinks; |
| extern char *logfile_name; |
extern char *logfile_name; |
| |
extern int remote_option_cnt; |
| |
extern const char **remote_options; |
| extern struct chmod_mode_struct *chmod_modes; |
extern struct chmod_mode_struct *chmod_modes; |
| |
|
| /** |
/** |
|
Line 49 pid_t piped_child(char **command, int *f_in, int *f_ou
|
Line 51 pid_t piped_child(char **command, int *f_in, int *f_ou
|
| int to_child_pipe[2]; |
int to_child_pipe[2]; |
| int from_child_pipe[2]; |
int from_child_pipe[2]; |
| |
|
| if (verbose >= 2) | if (DEBUG_GTE(CMD, 1)) |
| print_child_argv("opening connection using:", command); |
print_child_argv("opening connection using:", command); |
| |
|
| if (fd_pair(to_child_pipe) < 0 || fd_pair(from_child_pipe) < 0) { |
if (fd_pair(to_child_pipe) < 0 || fd_pair(from_child_pipe) < 0) { |
|
Line 75 pid_t piped_child(char **command, int *f_in, int *f_ou
|
Line 77 pid_t piped_child(char **command, int *f_in, int *f_ou
|
| close(to_child_pipe[0]); |
close(to_child_pipe[0]); |
| if (from_child_pipe[1] != STDOUT_FILENO) |
if (from_child_pipe[1] != STDOUT_FILENO) |
| close(from_child_pipe[1]); |
close(from_child_pipe[1]); |
| umask(orig_umask); |
|
| set_blocking(STDIN_FILENO); |
set_blocking(STDIN_FILENO); |
| if (blocking_io > 0) |
if (blocking_io > 0) |
| set_blocking(STDOUT_FILENO); |
set_blocking(STDOUT_FILENO); |
|
Line 131 pid_t local_child(int argc, char **argv, int *f_in, in
|
Line 132 pid_t local_child(int argc, char **argv, int *f_in, in
|
| am_sender = 0; |
am_sender = 0; |
| am_server = 1; |
am_server = 1; |
| filesfrom_fd = -1; |
filesfrom_fd = -1; |
| |
munge_symlinks = 0; /* Each side needs its own option. */ |
| chmod_modes = NULL; /* Let the sending side handle this. */ |
chmod_modes = NULL; /* Let the sending side handle this. */ |
| |
|
| /* Let the client side handle this. */ |
/* Let the client side handle this. */ |
| if (logfile_name) { |
if (logfile_name) { |
| logfile_name = NULL; |
logfile_name = NULL; |
| logfile_close(); |
logfile_close(); |
| |
} |
| |
|
| |
if (remote_option_cnt) { |
| |
int rc = remote_option_cnt + 1; |
| |
const char **rv = remote_options; |
| |
if (!parse_arguments(&rc, &rv)) { |
| |
option_error(); |
| |
exit_cleanup(RERR_SYNTAX); |
| |
} |
| } |
} |
| |
|
| if (dup2(to_child_pipe[0], STDIN_FILENO) < 0 || |
if (dup2(to_child_pipe[0], STDIN_FILENO) < 0 || |