mainloop exitstatus runcmd sighandler \
lizard lizard-safe adler32 \
md5 md5hex \
- base64 base224
+ base64 base224 \
+ sync
ifdef CONFIG_OWN_REGEX
include lib/regex/Makefile
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);
--- /dev/null
+/*
+ * Sherlock Library -- Syncing Directories
+ *
+ * (c) 2004 Martin Mares <mj@ucw.cz>
+ */
+
+#include "lib/lib.h"
+
+#include <fcntl.h>
+#include <unistd.h>
+
+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);
+}