ilock.c - dedup - deduplicating backup program Err bitreich.org 70 hgit clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ URL:git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ bitreich.org 70 1Log /scm/dedup/log.gph bitreich.org 70 1Files /scm/dedup/files.gph bitreich.org 70 1Refs /scm/dedup/refs.gph bitreich.org 70 1Tags /scm/dedup/tag bitreich.org 70 1README /scm/dedup/file/README.gph bitreich.org 70 1LICENSE /scm/dedup/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 ilock.c (686B) Err bitreich.org 70 i--- Err bitreich.org 70 i 1 #include Err bitreich.org 70 i 2 #include Err bitreich.org 70 i 3 #include Err bitreich.org 70 i 4 #include Err bitreich.org 70 i 5 Err bitreich.org 70 i 6 int Err bitreich.org 70 i 7 lockrepo(char *repo) Err bitreich.org 70 i 8 { Err bitreich.org 70 i 9 char path[PATH_MAX]; Err bitreich.org 70 i 10 struct flock fl; Err bitreich.org 70 i 11 int fd; Err bitreich.org 70 i 12 Err bitreich.org 70 i 13 if (snprintf(path, sizeof(path), "%s/lock", repo) >= Err bitreich.org 70 i 14 sizeof(path)) Err bitreich.org 70 i 15 return -1; Err bitreich.org 70 i 16 Err bitreich.org 70 i 17 fd = open(path, O_RDWR | O_CREAT, 0600); Err bitreich.org 70 i 18 if (fd < 0) Err bitreich.org 70 i 19 return -1; Err bitreich.org 70 i 20 fl.l_type = F_WRLCK; Err bitreich.org 70 i 21 fl.l_whence = SEEK_SET; Err bitreich.org 70 i 22 fl.l_start = 0; Err bitreich.org 70 i 23 fl.l_len = 0; Err bitreich.org 70 i 24 if (fcntl(fd, F_SETLK, &fl) < 0) { Err bitreich.org 70 i 25 close(fd); Err bitreich.org 70 i 26 return -1; Err bitreich.org 70 i 27 } Err bitreich.org 70 i 28 return fd; Err bitreich.org 70 i 29 } Err bitreich.org 70 i 30 Err bitreich.org 70 i 31 int Err bitreich.org 70 i 32 unlockrepo(int fd) Err bitreich.org 70 i 33 { Err bitreich.org 70 i 34 struct flock fl; Err bitreich.org 70 i 35 Err bitreich.org 70 i 36 fl.l_type = F_UNLCK; Err bitreich.org 70 i 37 fl.l_whence = SEEK_SET; Err bitreich.org 70 i 38 fl.l_start = 0; Err bitreich.org 70 i 39 fl.l_len = 0; Err bitreich.org 70 i 40 if (fcntl(fd, F_SETLK, &fl) < 0) Err bitreich.org 70 i 41 return -1; Err bitreich.org 70 i 42 if (close(fd) < 0) Err bitreich.org 70 i 43 return -1; Err bitreich.org 70 i 44 return 0; Err bitreich.org 70 i 45 } Err bitreich.org 70 .