From d76f37084e62596ddeb611218c3b77a32289b1bc Mon Sep 17 00:00:00 2001 From: Stefan de Konink Date: Sun, 3 Aug 2008 05:15:06 +0200 Subject: [PATCH] Creator --- create.c | 53 ++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/create.c b/create.c index 9b61639..20f89fa 100644 --- a/create.c +++ b/create.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -8,8 +9,8 @@ #define BUF_LEN (1024 * (EVENT_SIZE + 16)) int main(int argc, char *argv[]) { - if (argc != 2) { - fprintf(stderr, "%s \n", argv[0]); + if (argc != 3) { + fprintf(stderr, "%s \n", argv[0]); exit(-1); } @@ -50,15 +51,45 @@ int main(int argc, char *argv[]) { event = (struct inotify_event *) &buf[i]; if (event->len) { - char file[1024]; - int namelen; - - if ((namelen = readlink(event->name, file, 1024)) < 0) - perror("readlink"); - else { - file[namelen] = '\0'; - printf ("name=%s\n", file); - } + int len = strlen(event->name); + + if (len > 7 && strncmp(&event->name[len-7], ".queued", 7) == 0) { + char stripfile[512], file[1024], hardlink[1024]; + int namelen; + + stripfile[0] = '\0'; + + strncpy(stripfile, event->name, len-7); + + snprintf(file, 1024, "%s/%s", argv[1], event->name); + + if ((namelen = readlink(file, hardlink, 1024)) < 0) + perror("readlink"); + else { + char cmd[1024]; + fprintf (stderr, "DELETE: name=%s\n", file); + unlink(file); + + len = strlen(file); + + strncpy(&file[len-7], ".busy\0", 6); + + hardlink[namelen] = '\0'; + + snprintf(cmd, 1023, "cp %s %s", hardlink, file); + cmd[1023] = '\0'; + + system(cmd); + fprintf (stderr, "CP: source=%s name=%s\n", hardlink, file); + + snprintf(cmd, 1023, "%s/%s", argv[2], file); + cmd[1023] = '\0'; + + fprintf (stderr, "MV: source=%s name=%s\n", file, cmd); + + rename(file, cmd); + } + } } i += EVENT_SIZE + event->len; -- 2.11.4.GIT