error:
free(resolved_path);
free(cut_path);
+ free(try_path);
+ if (try_path_prev != try_path) {
+ free(try_path_prev);
+ }
return NULL;
}
PERROR("Closing tracefile");
goto error;
}
+ *stream_fd = -1;
if (count > 0) {
/*
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;
+}