Merged! Thanks! David
Amit Margalit: > As requested the patch file is attached. > > > It is based on top of 3a68137cb2a86e7e8b13239fee52cae4542605af . > > Amit Margalit > IBM XIV - /Storage Reinvented/ > XIV-NAS Development Team > Tel. 03-689-7774 > Fax. 03-689-7230 > > > > From: David Goulet <[email protected]> > To: Amit Margalit/Israel/IBM@IBMIL > Cc: [email protected] > Date: 06/17/2013 10:44 PM > Subject: Re: [lttng-dev] [RFC PATCH lttng-tools] Allow environment > variable LTTNG_HOME to override HOME - for lttng-tools - UPDATED PATCH > -------------------------------------------------------------------------------- > > > > Hi Amit, > > There seems to be a problem with this patch, I can't merge it due to some > malformed part of it... > > Did you use "git send-email" ? If you don't have that, either attach the "git > format-patch" to the email, the "git log -1" or the diff in a separate file. > > Thanks! > David > > Amit Margalit: >> Hi, >> >> I've added a paragraph to the man page. Here is the new patch: >> From a72bd9dd6a58ac727280f2f9a85ee80607f1aba9 Mon Sep 17 00:00:00 2001 >> From: Amit Margalit <[email protected]> >> Date: Thu, 13 Jun 2013 12:35:13 +0300 >> Subject: [PATCH] Using LTTNG_HOME environment variable if exists, with >> fallback to HOME >> >> --- >> doc/man/lttng.1 | 4 ++++ >> src/bin/lttng-relayd/utils.c | 10 +--------- >> src/bin/lttng-sessiond/main.c | 2 +- >> src/bin/lttng-sessiond/utils.c | 10 ---------- >> src/bin/lttng/commands/create.c | 2 +- >> src/bin/lttng/conf.c | 13 +++---------- >> src/bin/lttng/conf.h | 1 - >> src/bin/lttng/utils.c | 3 ++- >> src/common/defaults.h | 2 ++ >> src/common/utils.c | 15 +++++++++++++++ >> src/common/utils.h | 1 + >> src/lib/lttng-ctl/lttng-ctl.c | 5 +++-- >> 12 files changed, 33 insertions(+), 35 deletions(-) >> >> diff --git a/doc/man/lttng.1 b/doc/man/lttng.1 >> index f472d38..26fd44a 100644 >> --- a/doc/man/lttng.1 >> +++ b/doc/man/lttng.1 >> @@ -214,6 +214,10 @@ automatically created having this form: > 'auto-yyyymmdd-hhmmss'. >> >> If no \fB\-o, \-\-output\fP is specified, the traces will be written in >> $HOME/lttng-traces. >> + >> +The $HOME environment variable can be overridden by defining the environment >> +variable LTTNG_HOME. This is useful when the user running the commands has >> +a non-writeable home directory. >> .fi >> >> .B OPTIONS: >> diff --git a/src/bin/lttng-relayd/utils.c b/src/bin/lttng-relayd/utils.c >> index ad13d32..392fab6 100644 >> --- a/src/bin/lttng-relayd/utils.c >> +++ b/src/bin/lttng-relayd/utils.c >> @@ -29,14 +29,6 @@ >> #include "lttng-relayd.h" >> #include "utils.h" >> >> -/* >> - * Returns the HOME directory path. Caller MUST NOT free(3) the return >> pointer. >> - */ >> -static char *get_default_path(void) >> -{ >> - return getenv("HOME"); >> -} >> - >> static char *create_output_path_auto(char *path_name) >> { >> int ret; >> @@ -44,7 +36,7 @@ static char *create_output_path_auto(char *path_name) >> char *alloc_path = NULL; >> char *default_path; >> >> - default_path = get_default_path(); >> + default_path = utils_get_home_dir(); >> if (default_path == NULL) { >> ERR("Home path not found.\n \ >> Please specify an output path using -o, >> --output >> PATH"); >> diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c >> index 4470afc..256ffba 100644 >> --- a/src/bin/lttng-sessiond/main.c >> +++ b/src/bin/lttng-sessiond/main.c >> @@ -4136,7 +4136,7 @@ int main(int argc, char **argv) >> DBG2("Kernel consumer cmd path: %s", >> kconsumer_data.cmd_unix_sock_path); >> } else { >> - home_path = get_home_dir(); >> + home_path = utils_get_home_dir(); >> if (home_path == NULL) { >> /* TODO: Add --socket PATH option */ >> ERR("Can't get HOME directory for sockets >> creation."); >> diff --git a/src/bin/lttng-sessiond/utils.c b/src/bin/lttng-sessiond/utils.c >> index 5ea3374..af42ad0 100644 >> --- a/src/bin/lttng-sessiond/utils.c >> +++ b/src/bin/lttng-sessiond/utils.c >> @@ -45,13 +45,3 @@ int notify_thread_pipe(int wpipe) >> >> return ret; >> } >> - >> -/* >> - * Return pointer to home directory path using the env variable HOME. >> - * >> - * No home, NULL is returned. >> - */ >> -const char *get_home_dir(void) >> -{ >> - return ((const char *) getenv("HOME")); >> -} >> diff --git a/src/bin/lttng/commands/create.c >> b/src/bin/lttng/commands/create.c >> index 805cdb1..ddd2983 100644 >> --- a/src/bin/lttng/commands/create.c >> +++ b/src/bin/lttng/commands/create.c >> @@ -250,7 +250,7 @@ static int create_session(void) >> print_str_url = url; >> } else { >> /* Auto output path */ >> - alloc_path = config_get_default_path(); >> + alloc_path = utils_get_home_dir(); >> if (alloc_path == NULL) { >> ERR("HOME path not found.\n \ >> Please specify an output path using >> -o, >> --output PATH"); >> diff --git a/src/bin/lttng/conf.c b/src/bin/lttng/conf.c >> index b6632fc..5a0da9d 100644 >> --- a/src/bin/lttng/conf.c >> +++ b/src/bin/lttng/conf.c >> @@ -25,6 +25,7 @@ >> #include <unistd.h> >> >> #include <common/error.h> >> +#include <common/utils.h> >> >> #include "conf.h" >> >> @@ -123,14 +124,6 @@ end: >> } >> >> /* >> - * Returns the HOME directory path. Caller MUST NOT free(3) the return >> pointer. >> - */ >> -char *config_get_default_path(void) >> -{ >> - return getenv("HOME"); >> -} >> - >> -/* >> * Destroys directory config and file config. >> */ >> void config_destroy(char *path) >> @@ -161,7 +154,7 @@ end: >> */ >> void config_destroy_default(void) >> { >> - char *path = config_get_default_path(); >> + char *path = utils_get_home_dir(); >> if (path == NULL) { >> return; >> } >> @@ -277,7 +270,7 @@ int config_init(char *session_name) >> int ret; >> char *path; >> >> - path = config_get_default_path(); >> + path = utils_get_home_dir(); >> if (path == NULL) { >> ret = -1; >> goto error; >> diff --git a/src/bin/lttng/conf.h b/src/bin/lttng/conf.h >> index 2cb04b0..3bed59c 100644 >> --- a/src/bin/lttng/conf.h >> +++ b/src/bin/lttng/conf.h >> @@ -25,7 +25,6 @@ void config_destroy_default(void); >> int config_exists(const char *path); >> int config_init(char *path); >> int config_add_session_name(char *path, char *name); >> -char *config_get_default_path(void); >> >> /* Must free() the return pointer */ >> char *config_read_session_name(char *path); >> diff --git a/src/bin/lttng/utils.c b/src/bin/lttng/utils.c >> index 94c4527..6041655 100644 >> --- a/src/bin/lttng/utils.c >> +++ b/src/bin/lttng/utils.c >> @@ -21,6 +21,7 @@ >> #include <limits.h> >> >> #include <common/error.h> >> +#include <common/utils.h> >> >> #include "conf.h" >> #include "utils.h" >> @@ -36,7 +37,7 @@ char *get_session_name(void) >> char *path, *session_name = NULL; >> >> /* Get path to config file */ >> - path = config_get_default_path(); >> + path = utils_get_home_dir(); >> if (path == NULL) { >> goto error; >> } >> diff --git a/src/common/defaults.h b/src/common/defaults.h >> index 66bb972..c040634 100644 >> --- a/src/common/defaults.h >> +++ b/src/common/defaults.h >> @@ -77,6 +77,8 @@ >> #define DEFAULT_USTCONSUMERD32_ERR_SOCK_PATH DEFAULT_USTCONSUMERD32_PATH > "/error" >> >> /* Default lttng run directory */ >> +#define DEFAULT_LTTNG_HOME_ENV_VAR "LTTNG_HOME" >> +#define DEFAULT_LTTNG_FALLBACK_HOME_ENV_VAR "HOME" >> #define DEFAULT_LTTNG_RUNDIR "/var/run/lttng" >> #define DEFAULT_LTTNG_HOME_RUNDIR "%s/.lttng" >> #define DEFAULT_LTTNG_SESSIOND_PIDFILE "lttng-sessiond.pid" >> diff --git a/src/common/utils.c b/src/common/utils.c >> index 38f78a7..436febe 100644 >> --- a/src/common/utils.c >> +++ b/src/common/utils.c >> @@ -32,6 +32,7 @@ >> #include <common/runas.h> >> >> #include "utils.h" >> +#include "defaults.h" >> >> /* >> * Return the realpath(3) of the path even if the last directory token does >> not >> @@ -584,3 +585,17 @@ int utils_get_count_order_u32(uint32_t x) >> >> return fls_u32(x - 1); >> } >> + >> +/** >> + * Obtain the value of LTTNG_HOME environment variable, if exists. >> + * Otherwise returns the value of HOME. >> + */ >> +char *utils_get_home_dir(void) >> +{ >> + char *val = NULL; >> + val = getenv(DEFAULT_LTTNG_HOME_ENV_VAR); >> + if (val != NULL) { >> + return val; >> + } >> + return getenv(DEFAULT_LTTNG_FALLBACK_HOME_ENV_VAR); >> +} >> diff --git a/src/common/utils.h b/src/common/utils.h >> index 083acef..9e6fb37 100644 >> --- a/src/common/utils.h >> +++ b/src/common/utils.h >> @@ -40,5 +40,6 @@ int utils_rotate_stream_file(char *path_name, char >> *file_name, >> uint64_t size, >> uint64_t count, int uid, int gid, int out_fd, uint64_t > *new_count); >> int utils_parse_size_suffix(char *str, uint64_t *size); >> int utils_get_count_order_u32(uint32_t x); >> +char *utils_get_home_dir(void); >> >> #endif /* _COMMON_UTILS_H */ >> diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c >> index a7328eb..9d76f79 100644 >> --- a/src/lib/lttng-ctl/lttng-ctl.c >> +++ b/src/lib/lttng-ctl/lttng-ctl.c >> @@ -32,6 +32,7 @@ >> #include <common/defaults.h> >> #include <common/sessiond-comm/sessiond-comm.h> >> #include <common/uri.h> >> +#include <common/utils.h> >> #include <lttng/lttng.h> >> >> #include "filter/filter-ast.h" >> @@ -485,7 +486,7 @@ static int set_session_daemon_path(void) >> * With GNU C >= 2.1, snprintf returns the required size >> (excluding closing null) >> */ >> ret = snprintf(sessiond_sock_path, >> sizeof(sessiond_sock_path), >> - DEFAULT_HOME_CLIENT_UNIX_SOCK, >> getenv("HOME")); >> + DEFAULT_HOME_CLIENT_UNIX_SOCK, >> utils_get_home_dir()); >> if ((ret < 0) || (ret >= sizeof(sessiond_sock_path))) { >> goto error; >> } >> @@ -1543,7 +1544,7 @@ static int set_health_socket_path(void) >> * With GNU C < 2.1, snprintf returns -1 if the target >> buffer >> is too small; >> * With GNU C >= 2.1, snprintf returns the required size >> (excluding closing null) >> */ >> - home = getenv("HOME"); >> + home = utils_get_home_dir(); >> if (home == NULL) { >> /* Fallback in /tmp .. */ >> home = "/tmp"; >> -- >> 1.7.11.7 >> >> >> Amit Margalit >> IBM XIV - /Storage Reinvented/ >> XIV-NAS Development Team >> Tel. 03-689-7774 >> Fax. 03-689-7230 >> >> >> >> From: Amit Margalit/Israel/IBM@IBMIL >> To: David Goulet <[email protected]> >> Cc: [email protected] >> Date: 06/13/2013 12:39 PM >> Subject: Re: [lttng-dev] [RFC PATCH lttng-tools] Allow environment >> variable LTTNG_HOME to override HOME - for lttng-tools >> -------------------------------------------------------------------------------- >> >> >> >> I think I've done all that you suggested, for lttng-tools only, though, >> based on >> cfa9a5a2b4a96e0d6a9eeddd2622a6d7c173b7ac which is the latest master as of > right now. >> >> Here is the patch: >> From 5881718a60608d640ac1124c9c1f439a2a084707 Mon Sep 17 00:00:00 2001 >> From: Amit Margalit <[email protected]> >> Date: Thu, 13 Jun 2013 12:35:13 +0300 >> Subject: [PATCH] Using LTTNG_HOME environment variable if exists, with >> fallback to HOME >> >> --- >> [Old patch deleted] >> _______________________________________________ >> lttng-dev mailing list >> [email protected] >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev >> > > _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
