void usage(void)
{
fprintf(stderr, "Usage: %s OPTIONS\n\nOptions:\n", progname);
- fprintf(stderr, " -h, --help Display this usage.\n");
- fprintf(stderr, " -d, --daemonize Start as a daemon.\n");
- fprintf(stderr, " -C, --control-port Control port listening (URI)\n");
- fprintf(stderr, " -D, --data-port Data port listening (URI)\n");
- fprintf(stderr, " -o, --output Output path for traces (PATH)\n");
- fprintf(stderr, " -v, --verbose Verbose mode. Activate DBG() macro.\n");
+ fprintf(stderr, " -h, --help Display this usage.\n");
+ fprintf(stderr, " -d, --daemonize Start as a daemon.\n");
+ fprintf(stderr, " -C, --control-port URL Control port listening.\n");
+ fprintf(stderr, " -D, --data-port URL Data port listening.\n");
+ fprintf(stderr, " -o, --output PATH Output path for traces. Must use an absolute path.\n");
+ fprintf(stderr, " -v, --verbose Verbose mode. Activate DBG() macro.\n");
}
static
goto end;
}
+ /*
+ * No need to use run_as API here because whatever we receives, the relayd
+ * uses its own credentials for the stream files.
+ */
ret = utils_create_stream_file(stream->path_name, stream->channel_name,
- stream->tracefile_size, 0, getuid(), getgid());
+ stream->tracefile_size, 0, -1, -1);
if (ret < 0) {
ERR("Create output file");
goto end;
goto end;
}
- ret = sscanf(VERSION, "%10u.%10u", &reply.major, &reply.minor);
- if (ret < 2) {
- ERR("Error in scanning version");
- ret = -1;
- goto end;
- }
+ reply.major = RELAYD_VERSION_COMM_MAJOR;
+ reply.minor = RELAYD_VERSION_COMM_MINOR;
/* Major versions must be the same */
if (reply.major != be32toh(msg.major)) {
stream->tracefile_size) {
ret = utils_rotate_stream_file(stream->path_name,
stream->channel_name, stream->tracefile_size,
- stream->tracefile_count, getuid(), getgid(),
+ stream->tracefile_count, -1, -1,
stream->fd, &(stream->tracefile_count_current));
if (ret < 0) {
ERR("Rotating output file");
goto end;
}
stream->fd = ret;
+ /* Reset current size because we just perform a stream rotation. */
+ stream->tracefile_size_current = 0;
}
stream->tracefile_size_current += data_size;
do {
/* Try to create directory if -o, --output is specified. */
if (opt_output_path) {
+ if (*opt_output_path != '/') {
+ ERR("Please specify an absolute path for -o, --output PATH");
+ goto exit;
+ }
+
ret = utils_mkdir_recursive(opt_output_path, S_IRWXU | S_IRWXG);
if (ret < 0) {
ERR("Unable to create %s", opt_output_path);
/* Set up max poll set size */
lttng_poll_set_max_size();
+ /* Initialize communication library */
+ lttcomm_init();
+
/* Setup the dispatcher thread */
ret = pthread_create(&dispatcher_thread, NULL,
relay_thread_dispatcher, (void *) NULL);