diff --git a/src/fisdir.c b/src/fisdir.c index 1626eee..fd5384d 100644 --- a/src/fisdir.c +++ b/src/fisdir.c @@ -41,7 +41,7 @@ int fisdir(const char *path) { struct stat sb; - if (!stat(path, &sb) && S_ISDIR(sb.st_mode)) + if (path && !stat(path, &sb) && S_ISDIR(sb.st_mode)) return 1; return 0; diff --git a/src/lite.h b/src/lite.h index 944135b..4ce3c62 100644 --- a/src/lite.h +++ b/src/lite.h @@ -139,10 +139,15 @@ int whichp (const char *cmd); */ static inline int touch(const char *path) { + int fd; + if (utimensat(AT_FDCWD, path, NULL, 0)) { - if (errno == ENOENT) - return mknod((path), S_IFREG|0644, 0); - return -1; + if (errno != ENOENT) + return -1; + fd = creat(path, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); + if (fd < 0) + return -1; + close(fd); } return 0; } diff --git a/test/pidfile.c b/test/pidfile.c index a627dc7..79fa92e 100644 --- a/test/pidfile.c +++ b/test/pidfile.c @@ -41,7 +41,7 @@ static int mtime() char buf[80]; /* Must sleep a while here otherwise we execute too fast => no mtime change :-( */ - usleep(10000); + sleep(2); PRINT("Calling pidfile() again to update mtime ...\n"); if (pidfile(pidfile_arg)) diff --git a/test/touch.c b/test/touch.c index f1630a9..d8d2cd6 100644 --- a/test/touch.c +++ b/test/touch.c @@ -23,7 +23,7 @@ static int mtime(char *file) stat(file, &before); /* Must sleep a while here otherwise we execute too fast => no mtime change :-( */ - usleep(10000); + sleep(2); PRINT("Calling touch() again to update mtime ...\n"); if (touch(file)) {