projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Build: Switch from tar v7 to posix archive format
[lttng-tools.git]
/
src
/
common
/
utils.c
diff --git
a/src/common/utils.c
b/src/common/utils.c
index ca4eb44481c7d3e7fc90500c91112f50aaacef09..2417a7d255ffb1445e12ec9e24ba2b5a29900e1d 100644
(file)
--- a/
src/common/utils.c
+++ b/
src/common/utils.c
@@
-17,7
+17,6
@@
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#define _GNU_SOURCE
#define _LGPL_SOURCE
#include <assert.h>
#include <ctype.h>
#define _LGPL_SOURCE
#include <assert.h>
#include <ctype.h>
@@
-31,12
+30,13
@@
#include <grp.h>
#include <pwd.h>
#include <sys/file.h>
#include <grp.h>
#include <pwd.h>
#include <sys/file.h>
-#include <dirent.h>
#include <common/common.h>
#include <common/runas.h>
#include <common/compat/getenv.h>
#include <common/compat/string.h>
#include <common/common.h>
#include <common/runas.h>
#include <common/compat/getenv.h>
#include <common/compat/string.h>
+#include <common/compat/dirent.h>
+#include <lttng/constant.h>
#include "utils.h"
#include "defaults.h"
#include "utils.h"
#include "defaults.h"
@@
-82,6
+82,8
@@
char *utils_partial_realpath(const char *path, char *resolved_path, size_t size)
/* Resolve the canonical path of the first part of the path */
while (try_path != NULL && next != end) {
/* Resolve the canonical path of the first part of the path */
while (try_path != NULL && next != end) {
+ char *try_path_buf = NULL;
+
/*
* If there is not any '/' left, we want to try with
* the full path
/*
* If there is not any '/' left, we want to try with
* the full path
@@
-98,9
+100,16
@@
char *utils_partial_realpath(const char *path, char *resolved_path, size_t size)
goto error;
}
goto error;
}
+ try_path_buf = zmalloc(LTTNG_PATH_MAX);
+ if (!try_path_buf) {
+ PERROR("zmalloc");
+ goto error;
+ }
+
/* Try to resolve this part */
/* Try to resolve this part */
- try_path = realpath((char *)cut_path,
NULL
);
+ try_path = realpath((char *)cut_path,
try_path_buf
);
if (try_path == NULL) {
if (try_path == NULL) {
+ free(try_path_buf);
/*
* There was an error, we just want to be assured it
* is linked to an unexistent directory, if it's another
/*
* There was an error, we just want to be assured it
* is linked to an unexistent directory, if it's another
@@
-117,6
+126,7
@@
char *utils_partial_realpath(const char *path, char *resolved_path, size_t size)
}
} else {
/* Save the place we are before trying the next step */
}
} else {
/* Save the place we are before trying the next step */
+ try_path_buf = NULL;
free(try_path_prev);
try_path_prev = try_path;
prev = next;
free(try_path_prev);
try_path_prev = try_path;
prev = next;
@@
-480,7
+490,7
@@
int utils_create_pid_file(pid_t pid, const char *filepath)
goto error;
}
goto error;
}
- ret = fprintf(fp, "%d\n", pid);
+ ret = fprintf(fp, "%d\n",
(int)
pid);
if (ret < 0) {
PERROR("fprintf pid file");
goto error;
if (ret < 0) {
PERROR("fprintf pid file");
goto error;
@@
-489,7
+499,7
@@
int utils_create_pid_file(pid_t pid, const char *filepath)
if (fclose(fp)) {
PERROR("fclose");
}
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;
ret = 0;
error:
return ret;
@@
-504,11
+514,13
@@
int utils_create_lock_file(const char *filepath)
{
int ret;
int fd;
{
int ret;
int fd;
+ struct flock lock;
assert(filepath);
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;
if (fd < 0) {
PERROR("open lock file %s", filepath);
ret = -1;
@@
-520,8
+532,12
@@
int utils_create_lock_file(const char *filepath)
* already a process using the same lock file running
* and we should exit.
*/
* 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)) {
ERR("Could not get lock file %s, another instance is running.",
filepath);
if (close(fd)) {
@@
-1207,9
+1223,9
@@
int utils_recursive_rmdir(const char *path)
PERROR("Cannot open '%s' path", path);
return -1;
}
PERROR("Cannot open '%s' path", path);
return -1;
}
- dir_fd = dirfd(dir);
+ dir_fd =
lttng_
dirfd(dir);
if (dir_fd < 0) {
if (dir_fd < 0) {
- PERROR("dirfd");
+ PERROR("
lttng_
dirfd");
return -1;
}
return -1;
}
This page took
0.027644 seconds
and
5
git commands to generate.