Replace mknod() with creat()

For mknod(), mode must be S_IFIFO otherwise the behaviour is unspecified
according to SUS, and apparently Debian/kFreeBSD is in the hater list.
This commit is contained in:
yangfl
2022-01-27 00:11:00 +08:00
parent 059bfd7806
commit 5cdc5736f3
+8 -3
View File
@@ -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;
}