X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Futils.c;h=30a5f106ba8b19ec6ebbf26a059ff20fd278062c;hp=d71d92446ce71e14177e26005797211c4f7f0730;hb=b86d5f3ff9f8056db2590f881044b7ecbfc21527;hpb=93ec662e687dc15a3601704a1e0c96c51ad228c9 diff --git a/src/common/utils.c b/src/common/utils.c index d71d92446..30a5f106b 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -189,6 +189,8 @@ char *utils_partial_realpath(const char *path, char *resolved_path, size_t size) error: free(resolved_path); free(cut_path); + free(try_path); + free(try_path_prev); return NULL; } @@ -1341,7 +1343,40 @@ int utils_truncate_stream_file(int fd, off_t length) PERROR("lseek"); goto end; } - end: return ret; } + +static const char *get_man_bin_path(void) +{ + char *env_man_path = lttng_secure_getenv(DEFAULT_MAN_BIN_PATH_ENV); + + if (env_man_path) { + return env_man_path; + } + + return DEFAULT_MAN_BIN_PATH; +} + +LTTNG_HIDDEN +int utils_show_man_page(int section, const char *page_name) +{ + char section_string[8]; + const char *man_bin_path = get_man_bin_path(); + int ret; + + /* Section integer -> section string */ + ret = sprintf(section_string, "%d", section); + assert(ret > 0 && ret < 8); + + /* + * Execute man pager. + * + * We provide --manpath to man here because LTTng-tools can + * be installed outside /usr, in which case its man pages are + * not located in the default /usr/share/man directory. + */ + ret = execlp(man_bin_path, "man", "--manpath", MANPATH, + section_string, page_name, NULL); + return ret; +}