X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Futils.c;h=11018739be9ad9c7e6a83340a2434fdc2fc654c1;hb=507af6fc151b69a9b7c243e30387da303c5b83cc;hp=ca4eb44481c7d3e7fc90500c91112f50aaacef09;hpb=7a946bebe4a23b07f257906b90c88fed383835aa;p=lttng-tools.git diff --git a/src/common/utils.c b/src/common/utils.c index ca4eb4448..11018739b 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -17,7 +17,6 @@ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#define _GNU_SOURCE #define _LGPL_SOURCE #include #include @@ -31,12 +30,12 @@ #include #include #include -#include #include #include #include #include +#include #include "utils.h" #include "defaults.h" @@ -480,7 +479,7 @@ int utils_create_pid_file(pid_t pid, const char *filepath) goto error; } - ret = fprintf(fp, "%d\n", pid); + ret = fprintf(fp, "%d\n", (int) pid); if (ret < 0) { PERROR("fprintf pid file"); goto error; @@ -489,7 +488,7 @@ int utils_create_pid_file(pid_t pid, const char *filepath) if (fclose(fp)) { PERROR("fclose"); } - DBG("Pid %d written in file %s", pid, filepath); + DBG("Pid %d written in file %s", (int) pid, filepath); ret = 0; error: return ret; @@ -504,11 +503,13 @@ int utils_create_lock_file(const char *filepath) { int ret; int fd; + struct flock lock; assert(filepath); - fd = open(filepath, O_CREAT, - O_WRONLY | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); + memset(&lock, 0, sizeof(lock)); + fd = open(filepath, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR | + S_IRGRP | S_IWGRP); if (fd < 0) { PERROR("open lock file %s", filepath); ret = -1; @@ -520,8 +521,12 @@ int utils_create_lock_file(const char *filepath) * already a process using the same lock file running * and we should exit. */ - ret = flock(fd, LOCK_EX | LOCK_NB); - if (ret) { + lock.l_whence = SEEK_SET; + lock.l_type = F_WRLCK; + + ret = fcntl(fd, F_SETLK, &lock); + if (ret == -1) { + PERROR("fcntl lock file"); ERR("Could not get lock file %s, another instance is running.", filepath); if (close(fd)) { @@ -1207,9 +1212,9 @@ int utils_recursive_rmdir(const char *path) PERROR("Cannot open '%s' path", path); return -1; } - dir_fd = dirfd(dir); + dir_fd = lttng_dirfd(dir); if (dir_fd < 0) { - PERROR("dirfd"); + PERROR("lttng_dirfd"); return -1; }