#include <sys/types.h>
#include <sys/stat.h>
-#include "../../udev/lib/libudev.h"
-#include "../../udev/lib/libudev-private.h"
+#include "libudev.h"
+#include "libudev-private.h"
-#define TMPFILE UDEV_PREFIX "/dev/.udev/collect"
#define BUFSIZE 16
#define UDEV_ALARM_TIMEOUT 180
* Read checkpoint file
*
* Tricky reading this. We allocate a buffer twice as large
- * as we're goint to read. Then we read into the upper half
+ * as we're going to read. Then we read into the upper half
* of that buffer and start parsing.
* Once we do _not_ find end-of-work terminator (whitespace
* character) we move the upper half to the lower half,
case STATE_CONFIRMED:
state = "confirmed";
break;
- fprintf(stderr, "ID: %s=%s\n", him->name, state);
}
+ fprintf(stderr, "ID: %s=%s\n", him->name, state);
}
}
int main(int argc, char **argv)
{
+ struct udev *udev;
static const struct option options[] = {
{ "add", no_argument, NULL, 'a' },
{ "remove", no_argument, NULL, 'r' },
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;
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;
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;
}