- * path is the output parameter. It needs to be PATH_MAX len.
- *
- * Return 0 on success or else a negative value.
- */
-static int utils_stream_file_name(char *path,
- const char *path_name, const char *file_name,
- uint64_t size, uint64_t count,
- const char *suffix)
-{
- int ret;
- char full_path[PATH_MAX];
- char *path_name_suffix = NULL;
- char *extra = NULL;
-
- ret = snprintf(full_path, sizeof(full_path), "%s/%s",
- path_name, file_name);
- if (ret < 0) {
- PERROR("snprintf create output file");
- goto error;
- }
-
- /* Setup extra string if suffix or/and a count is needed. */
- if (size > 0 && suffix) {
- ret = asprintf(&extra, "_%" PRIu64 "%s", count, suffix);
- } else if (size > 0) {
- ret = asprintf(&extra, "_%" PRIu64, count);
- } else if (suffix) {
- ret = asprintf(&extra, "%s", suffix);
- }
- if (ret < 0) {
- PERROR("Allocating extra string to name");
- goto error;
- }
-
- /*
- * If we split the trace in multiple files, we have to add the count at
- * the end of the tracefile name.
- */
- if (extra) {
- ret = asprintf(&path_name_suffix, "%s%s", full_path, extra);
- if (ret < 0) {
- PERROR("Allocating path name with extra string");
- goto error_free_suffix;
- }
- strncpy(path, path_name_suffix, PATH_MAX - 1);
- path[PATH_MAX - 1] = '\0';
- } else {
- ret = lttng_strncpy(path, full_path, PATH_MAX);
- if (ret) {
- ERR("Failed to copy stream file name");
- goto error_free_suffix;
- }
- }
- path[PATH_MAX - 1] = '\0';
- ret = 0;
-
- free(path_name_suffix);
-error_free_suffix:
- free(extra);
-error:
- return ret;
-}
-
-/*
- * Create the stream file on disk.