X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttctl%2Flttctl.c;h=105aacb61efb627cdb6a957e6f9cec0b30a73559;hb=2312de30ce2be53f81c4eaaa772ffff21511b509;hp=679936c1e3a7ced259d54f8c1ec31f4394930ce2;hpb=45653836d75635b5b841d0d03f1f0789348adc56;p=lttv.git diff --git a/ltt/branches/poly/lttctl/lttctl.c b/ltt/branches/poly/lttctl/lttctl.c index 679936c1..105aacb6 100644 --- a/ltt/branches/poly/lttctl/lttctl.c +++ b/ltt/branches/poly/lttctl/lttctl.c @@ -12,7 +12,7 @@ #include #endif -#include +#include #include #include #include @@ -25,7 +25,7 @@ #include /* Buffer for file copy : 4k seems optimal. */ -#define BUF_SIZE 4194304 +#define BUF_SIZE 4096 enum trace_ctl_op { CTL_OP_CREATE_START, @@ -93,8 +93,8 @@ void show_arguments(void) * * Parses the command line arguments. * - * Returns 1 if the arguments were correct, but doesn't ask for program - * continuation. Returns -1 if the arguments are incorrect, or 0 if OK. + * Returns -1 if the arguments were correct, but doesn't ask for program + * continuation. Returns EINVAL if the arguments are incorrect, or 0 if OK. */ int parse_arguments(int argc, char **argv) { @@ -103,7 +103,7 @@ int parse_arguments(int argc, char **argv) if(argc == 2) { if(strcmp(argv[1], "-h") == 0) { - return 1; + return -1; } } @@ -117,9 +117,9 @@ int parse_arguments(int argc, char **argv) trace_name = argv[argn+1]; argn++; } else { - printf("Specify a trace name after -n.\n", argv[argn]); + printf("Specify a trace name after -n.\n"); printf("\n"); - ret = -1; + ret = EINVAL; } break; @@ -139,12 +139,12 @@ int parse_arguments(int argc, char **argv) else { printf("Invalid mode '%s'.\n", argv[argn]); printf("\n"); - ret = -1; + ret = EINVAL; } } else { printf("Specify a mode after -m.\n"); printf("\n"); - ret = -1; + ret = EINVAL; } break; case 'r': @@ -166,7 +166,7 @@ int parse_arguments(int argc, char **argv) } else { printf("Specify a number of subbuffers after -z.\n"); printf("\n"); - ret = -1; + ret = EINVAL; } break; case 'x': @@ -176,7 +176,7 @@ int parse_arguments(int argc, char **argv) } else { printf("Specify a subbuffer size after -x.\n"); printf("\n"); - ret = -1; + ret = EINVAL; } break; case 'd': @@ -192,7 +192,7 @@ int parse_arguments(int argc, char **argv) } else { printf("Specify a trace root path after -t.\n"); printf("\n"); - ret = -1; + ret = EINVAL; } break; case 'l': @@ -202,7 +202,7 @@ int parse_arguments(int argc, char **argv) } else { printf("Specify a channel root path after -l.\n"); printf("\n"); - ret = -1; + ret = EINVAL; } break; case 'a': @@ -211,13 +211,13 @@ int parse_arguments(int argc, char **argv) default: printf("Invalid argument '%s'.\n", argv[argn]); printf("\n"); - ret = -1; + ret = EINVAL; } break; default: printf("Invalid argument '%s'.\n", argv[argn]); printf("\n"); - ret = -1; + ret = EINVAL; } argn++; } @@ -225,25 +225,25 @@ int parse_arguments(int argc, char **argv) if(op != CTL_OP_DESCRIPTION && trace_name == NULL) { printf("Please specify a trace name.\n"); printf("\n"); - ret = -1; + ret = EINVAL; } if(op == CTL_OP_NONE) { printf("Please specify an operation.\n"); printf("\n"); - ret = -1; + ret = EINVAL; } if(op == CTL_OP_DAEMON) { if(trace_root == NULL) { printf("Please specify -t trace_root_path with the -d option.\n"); printf("\n"); - ret = -1; + ret = EINVAL; } if(channel_root == NULL) { printf("Please specify -l ltt_root_path with the -d option.\n"); printf("\n"); - ret = -1; + ret = EINVAL; } } @@ -251,7 +251,7 @@ int parse_arguments(int argc, char **argv) if(trace_root == NULL) { printf("Please specify -t trace_root_path with the -e option.\n"); printf("\n"); - ret = -1; + ret = EINVAL; } } @@ -282,6 +282,7 @@ int create_eventdefs(void) ret = mkdir(trace_root, S_IRWXU|S_IRWXG|S_IRWXO); if(ret == -1 && errno != EEXIST) { + ret = errno; perror("Cannot create trace_root directory"); printf("trace_root is %s\n", trace_root); goto error; @@ -294,6 +295,7 @@ int create_eventdefs(void) size_t eventdefs_path_len = strlen(eventdefs_path); ret = mkdir(eventdefs_path, S_IRWXU|S_IRWXG|S_IRWXO); if(ret == -1 && (!append_trace || errno != EEXIST)) { + ret = errno; perror("Cannot create eventdefs directory"); goto error; } @@ -303,7 +305,7 @@ int create_eventdefs(void) if(facilities_dir == NULL) { perror("Cannot open facilities directory"); - ret = -1; + ret = EEXIST; goto error; } @@ -325,6 +327,7 @@ int create_eventdefs(void) strncat(facilities_file, entry->d_name, PATH_MAX - facilities_dir_len-1); FILE *src = fopen(facilities_file, "r"); if(!src) { + ret = errno; perror("Cannot open eventdefs file for reading"); goto close_dest; } @@ -333,11 +336,13 @@ int create_eventdefs(void) size_t read_size, write_size; read_size = fread(read_buf, sizeof(char), BUF_SIZE, src); if(ferror(src)) { + ret = errno; perror("Cannot read eventdefs file"); goto close_src; } write_size = fwrite(read_buf, sizeof(char), read_size, dest); if(ferror(dest)) { + ret = errno; perror("Cannot write eventdefs file"); goto close_src; } @@ -411,13 +416,13 @@ int lttctl_daemon(struct lttctl_handle *handle, char *trace_name) ret = execlp(lttd_path, lttd_path, "-t", trace_root, "-c", channel_path, "-d", NULL); if(ret) { + ret = errno; perror("Error in executing the lttd daemon"); - exit(-1); + exit(ret); } } else { /* error */ perror("Error in forking for lttd daemon"); - } ret = lttctl_start(handle, trace_name); @@ -441,8 +446,8 @@ int main(int argc, char ** argv) ret = parse_arguments(argc, argv); if(ret != 0) show_arguments(); - if(ret < 0) return EINVAL; - if(ret > 0) return 0; + if(ret == EINVAL) return EINVAL; + if(ret == -1) return 0; show_info();