X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/8ef4ffd6987bb566c268d2a353d5fea1cfd9e430..0cea42440ffc9edab56710ab0baaff9454a86fea:/util.c diff --git a/util.c b/util.c index 67308cd2..ffbdc932 100644 --- a/util.c +++ b/util.c @@ -482,3 +482,52 @@ int name_to_gid(char *name, gid_t *gid) return 0; } + +/**************************************************************************** +check if a process exists. +****************************************************************************/ +int process_exists(int pid) +{ + return(kill(pid,0) == 0 || errno != ESRCH); +} + +/* lock a byte range in a open file */ +int lock_range(int fd, int offset, int len) +{ + struct flock lock; + + lock.l_type = F_WRLCK; + lock.l_whence = SEEK_SET; + lock.l_start = offset; + lock.l_len = len; + lock.l_pid = 0; + + return fcntl(fd,F_SETLK,&lock) == 0; +} + + +void glob_expand(char **argv, int *argc, int maxargs) +{ +#ifndef HAVE_GLOB + (*argc)++; + return; +#else + glob_t globbuf; + int i; + + memset(&globbuf, 0, sizeof(globbuf)); + glob(argv[*argc], 0, NULL, &globbuf); + if (globbuf.gl_pathc == 0) { + (*argc)++; + globfree(&globbuf); + return; + } + for (i=0; i<(maxargs - (*argc)) && i