X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/0f8f98c8ff7e81e2853d8e6cd78d00275198c95d..7c1b4daa6fb236e82eda5ff6595b8e3f1b257f1b:/util.c diff --git a/util.c b/util.c index 4fef0b3e..1752faeb 100644 --- a/util.c +++ b/util.c @@ -930,20 +930,52 @@ char *timestring(time_t t) } -/**************************************************************************** - like waitpid but does the WEXITSTATUS -****************************************************************************/ -#ifndef WEXITSTATUS -#define WEXITSTATUS(stat) ((int)(((stat)>>8)&0xFF)) -#endif -void wait_process(pid_t pid, int *status) +/******************************************************************* +sleep for a specified number of milliseconds +********************************************************************/ +void msleep(int t) { - waitpid(pid, status, 0); - *status = WEXITSTATUS(*status); + 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) +{ + time_t diff; + 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__ +#ifdef __INSURE__XX #include /*******************************************************************