From 4fd0c29d35304277091d128b65fd81401bcc9114 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sun, 15 Aug 2004 12:09:57 +0000 Subject: [PATCH] Added sync_dir(). --- lib/Makefile | 3 ++- lib/lib.h | 4 ++++ lib/sync.c | 24 ++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 lib/sync.c diff --git a/lib/Makefile b/lib/Makefile index f3e0529c..df0d046a 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -22,7 +22,8 @@ LIBSH_MODS= \ mainloop exitstatus runcmd sighandler \ lizard lizard-safe adler32 \ md5 md5hex \ - base64 base224 + base64 base224 \ + sync ifdef CONFIG_OWN_REGEX include lib/regex/Makefile diff --git a/lib/lib.h b/lib/lib.h index c58d83da..2a106e7f 100644 --- a/lib/lib.h +++ b/lib/lib.h @@ -207,6 +207,10 @@ void echo_command_v(byte *buf, int size, byte *cmd, va_list args); int careful_read(int fd, void *buf, int len); int careful_write(int fd, void *buf, int len); +/* sync.c */ + +void sync_dir(byte *name); + /* sighandler.c */ typedef int (*sh_sighandler_t)(int); diff --git a/lib/sync.c b/lib/sync.c new file mode 100644 index 00000000..76bd5901 --- /dev/null +++ b/lib/sync.c @@ -0,0 +1,24 @@ +/* + * Sherlock Library -- Syncing Directories + * + * (c) 2004 Martin Mares + */ + +#include "lib/lib.h" + +#include +#include + +void +sync_dir(byte *name) +{ + int fd = open(name, O_RDONLY | O_DIRECTORY); + if (fd < 0) + goto err; + int err = fsync(fd); + close(fd); + if (err >= 0) + return; + err: + log(L_ERROR, "Unable to sync directory %s: %m", name); +} -- 2.39.2