diff --git a/apps/sync.c b/apps/sync.c index dcebe7a1..1b73a250 100644 --- a/apps/sync.c +++ b/apps/sync.c @@ -1,9 +1,27 @@ +#include #include +#include #include #include #include int main(int argc, char * argv[]) { - int fd = open(".",O_RDONLY|O_DIRECTORY); - return ioctl(fd, IOCTLSYNC, NULL); + char * file = "."; + if (argc > 1) { + file = argv[1]; + } + int fd = open(file,O_RDONLY|O_DIRECTORY); + if (fd < 0) { + fd = open(file,O_RDONLY); + } + if (fd < 0) { + fprintf(stderr, "sync: open: %s: %s (%d)\n", file, strerror(errno), fd); + return 1; + } + int res = ioctl(fd, IOCTLSYNC, NULL); + if (res < 0) { + fprintf(stderr, "sync: ioctl: %s (%d)\n", strerror(errno), fd); + return 1; + } + return 0; }