X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=extras%2Fcollect%2Fcollect.c;h=f78f3b778eaea5c0eb8dc452db69f5651299ea92;hb=1f5a5100f3bdfdaf9ef71b29931574b678ff0d82;hp=0069dea0df3c18c63ee93cfc28e4ee4ffcfaebdd;hpb=78715f65c92a8892960e2a5fce945496939f8599;p=elogind.git diff --git a/extras/collect/collect.c b/extras/collect/collect.c index 0069dea0d..f78f3b778 100644 --- a/extras/collect/collect.c +++ b/extras/collect/collect.c @@ -34,7 +34,6 @@ #include "libudev.h" #include "libudev-private.h" -#define TMPFILE "/dev/.udev/collect" #define BUFSIZE 16 #define UDEV_ALARM_TIMEOUT 180 @@ -338,6 +337,7 @@ static void everybody(void) int main(int argc, char **argv) { + struct udev *udev; static const struct option options[] = { { "add", no_argument, NULL, 'a' }, { "remove", no_argument, NULL, 'r' }, @@ -349,8 +349,15 @@ int main(int argc, char **argv) char *checkpoint, *us; int fd; int i; - int ret = 0; + int ret = EXIT_SUCCESS; int prune = 0; + char tmpdir[UTIL_PATH_SIZE]; + + udev = udev_new(); + if (udev == NULL) { + ret = EXIT_FAILURE; + goto exit; + } while (1) { int option; @@ -393,12 +400,13 @@ int main(int argc, char **argv) goto exit; } - udev_list_init(&bunch); + udev_list_node_init(&bunch); if (debug) fprintf(stderr, "Using checkpoint '%s'\n", checkpoint); - fd = prepare(TMPFILE, checkpoint); + util_strscpyl(tmpdir, sizeof(tmpdir), udev_get_run_path(udev), "/collect", NULL); + fd = prepare(tmpdir, checkpoint); if (fd < 0) { ret = 3; goto out; @@ -454,11 +462,12 @@ int main(int argc, char **argv) lockf(fd, F_ULOCK, 0); close(fd); - out: +out: if (debug) everybody(); if (ret >= 0) printf("COLLECT_%s=%d\n", checkpoint, ret); - exit: +exit: + udev_unref(udev); return ret; }