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
* uses its own credentials for the stream files.
*/
ret = utils_create_stream_file(stream->path_name, stream->channel_name,
- stream->tracefile_size, 0, -1, -1);
+ stream->tracefile_size, 0, -1, -1, NULL);
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)) {
ret = utils_rotate_stream_file(stream->path_name,
stream->channel_name, stream->tracefile_size,
stream->tracefile_count, -1, -1,
- stream->fd, &(stream->tracefile_count_current));
+ stream->fd, &(stream->tracefile_count_current),
+ &stream->fd);
if (ret < 0) {
ERR("Rotating output file");
goto end;
/* 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);