#include <time.h>
#include <unistd.h>
-#include "cmd.h"
-#include "conf.h"
-#include "utils.h"
+#include "../cmd.h"
+#include "../conf.h"
+#include "../utils.h"
static char *opt_output_path;
static char *opt_session_name;
*/
static int create_session()
{
- int ret;
- char name[NAME_MAX];
+ int ret, have_name = 0;
+ char datetime[16];
char *session_name, *traces_path = NULL, *alloc_path = NULL;
time_t rawtime;
struct tm *timeinfo;
+ /* Get date and time for automatic session name/path */
+ time(&rawtime);
+ timeinfo = localtime(&rawtime);
+ strftime(datetime, sizeof(datetime), "%Y%m%d-%H%M%S", timeinfo);
+
/* Auto session name creation */
if (opt_session_name == NULL) {
- time(&rawtime);
- timeinfo = localtime(&rawtime);
- strftime(name, sizeof(name), "auto-%Y%m%d-%H%M%S", timeinfo);
- session_name = name;
+ ret = asprintf(&session_name, "auto-%s", datetime);
+ if (ret < 0) {
+ perror("asprintf session name");
+ goto error;
+ }
DBG("Auto session name set to %s", session_name);
} else {
session_name = opt_session_name;
+ have_name = 1;
}
/* Auto output path */
goto error;
}
- ret = asprintf(&traces_path, "%s/" LTTNG_DEFAULT_TRACE_DIR_NAME, alloc_path);
+ if (have_name) {
+ ret = asprintf(&traces_path, "%s/" LTTNG_DEFAULT_TRACE_DIR_NAME
+ "/%s-%s", alloc_path, session_name, datetime);
+ } else {
+ ret = asprintf(&traces_path, "%s/" LTTNG_DEFAULT_TRACE_DIR_NAME
+ "/%s", alloc_path, session_name);
+ }
+
if (ret < 0) {
perror("asprintf trace dir name");
goto error;
/* Init lttng session config */
ret = config_init(session_name);
if (ret < 0) {
+ if (ret == -1) {
+ ret = CMD_ERROR;
+ }
goto error;
}
MSG("Session %s created.", session_name);
- MSG("Traces will be written in %s/%s-<date>-<time> ", traces_path, session_name);
+ MSG("Traces will be written in %s" , traces_path);
ret = CMD_SUCCESS;