X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/82980a23840452c069c37dd7c99c3ac937536847..0f621785808f8a5104259171c197fe5e384ab6d9:/util.c diff --git a/util.c b/util.c index b9616963..d917f07b 100644 --- a/util.c +++ b/util.c @@ -1,6 +1,7 @@ -/* - Copyright (C) Andrew Tridgell 1996 - Copyright (C) Paul Mackerras 1996 +/* -*- c-file-style: "linux" -*- + + Copyright (C) 1996-2000 by Andrew Tridgell + Copyright (C) Paul Mackerras 1996 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 @@ -92,9 +93,9 @@ int fd_pair(int fd[2]) used to cope with badly broken rsh implementations like the one on solaris. */ -int piped_child(char **command,int *f_in,int *f_out) +pid_t piped_child(char **command,int *f_in,int *f_out) { - int pid; + pid_t pid; int to_child_pipe[2]; int from_child_pipe[2]; extern int blocking_io; @@ -107,7 +108,7 @@ int piped_child(char **command,int *f_in,int *f_out) pid = do_fork(); - if (pid < 0) { + if (pid == -1) { rprintf(FERROR,"fork: %s\n",strerror(errno)); exit_cleanup(RERR_IPC); } @@ -147,9 +148,9 @@ int piped_child(char **command,int *f_in,int *f_out) return pid; } -int local_child(int argc, char **argv,int *f_in,int *f_out) +pid_t local_child(int argc, char **argv,int *f_in,int *f_out) { - int pid; + pid_t pid; int to_child_pipe[2]; int from_child_pipe[2]; @@ -161,7 +162,7 @@ int local_child(int argc, char **argv,int *f_in,int *f_out) pid = do_fork(); - if (pid < 0) { + if (pid == -1) { rprintf(FERROR,"fork: %s\n",strerror(errno)); exit_cleanup(RERR_IPC); } @@ -929,7 +930,52 @@ char *timestring(time_t t) return(TimeBuf); } -#ifdef __INSURE__ + +/******************************************************************* +sleep for a specified number of milliseconds +********************************************************************/ +void msleep(int t) +{ + int tdiff=0; + struct timeval tval,t1,t2; + + gettimeofday(&t1, NULL); + gettimeofday(&t2, NULL); + + while (tdiff < t) { + tval.tv_sec = (t-tdiff)/1000; + tval.tv_usec = 1000*((t-tdiff)%1000); + + errno = 0; + select(0,NULL,NULL, NULL, &tval); + + gettimeofday(&t2, NULL); + tdiff = (t2.tv_sec - t1.tv_sec)*1000 + + (t2.tv_usec - t1.tv_usec)/1000; + } +} + + +/******************************************************************* + Determine if two file modification times are equivalent (either exact + or in the modification timestamp window established by --modify-window) + Returns 0 if the times should be treated as the same, 1 if the + first is later and -1 if the 2nd is later + *******************************************************************/ +int cmp_modtime(time_t file1, time_t file2) +{ + extern int modify_window; + + if (file2 > file1) { + if (file2 - file1 <= modify_window) return 0; + return -1; + } + if (file1 - file2 <= modify_window) return 0; + return 1; +} + + +#ifdef __INSURE__XX #include /*******************************************************************