X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/79452d46930e5e3ec5b14d4c8380ff1e0329b9a8..66203a982b3d249bafda9b9272c4c103c19e4a9b:/util.c diff --git a/util.c b/util.c index 2d1989d4..078d59f5 100644 --- a/util.c +++ b/util.c @@ -26,33 +26,6 @@ extern int verbose; -/**************************************************************************** -Set a fd into nonblocking mode. Uses POSIX O_NONBLOCK if available, -else -if SYSV use O_NDELAY -if BSD use FNDELAY -****************************************************************************/ -int set_nonblocking(int fd) -{ - int val; -#ifdef O_NONBLOCK -#define FLAG_TO_SET O_NONBLOCK -#else -#ifdef SYSV -#define FLAG_TO_SET O_NDELAY -#else /* BSD */ -#define FLAG_TO_SET FNDELAY -#endif -#endif - - if((val = fcntl(fd, F_GETFL, 0)) == -1) - return -1; - val |= FLAG_TO_SET; - return fcntl( fd, F_SETFL, val); -#undef FLAG_TO_SET -} - - /* this is taken from CVS */ int piped_child(char **command,int *f_in,int *f_out) { @@ -101,9 +74,6 @@ int piped_child(char **command,int *f_in,int *f_out) *f_in = from_child_pipe[0]; *f_out = to_child_pipe[1]; - set_nonblocking(*f_in); - set_nonblocking(*f_out); - return pid; } @@ -282,7 +252,7 @@ int copy_file(char *source, char *dest, mode_t mode) char buf[1024 * 8]; int len; /* Number of bytes read into `buf'. */ - ifd = open(source, O_RDONLY); + ifd = do_open(source, O_RDONLY, 0); if (ifd == -1) { rprintf(FERROR,"open %s: %s\n", source,strerror(errno)); @@ -397,17 +367,6 @@ int robust_rename(char *from, char *to) return -1; return do_rename(from, to); #endif - } - - -/* sleep for a while via select */ -void u_sleep(int usec) -{ - struct timeval tv; - - tv.tv_sec = 0; - tv.tv_usec = usec; - select(0, NULL, NULL, NULL, &tv); } @@ -900,3 +859,15 @@ char *timestring(time_t t) return(TimeBuf); } + +/**************************************************************************** + like waitpid but does the WEXITSTATUS +****************************************************************************/ +#ifndef WEXITSTATUS +#define WEXITSTATUS(stat) ((int)(((stat)>>8)&0xFF)) +#endif +void wait_process(pid_t pid, int *status) +{ + waitpid(pid, status, 0); + *status = WEXITSTATUS(*status); +}