- do {
- 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;
- }
- } while(!feof(src));
-
- /* Add spacing between facilities */
- fwrite("\n", 1, 1, dest);
-
-close_src:
- fclose(src);
-close_dest:
- fclose(dest);
+ ret = 0;
+ if(WIFEXITED(status))
+ ret = WEXITSTATUS(status);
+ if(ret) goto start_error;
+
+ } else if(pid == 0) {
+ /* child */
+ int ret;
+ if(mode != LTT_TRACE_HYBRID) {
+ if(append_trace)
+ ret = execlp(lttd_path, lttd_path, "-t", trace_root, "-c",
+ channel_path, "-d", "-a", "-N", num_threads, NULL);
+ else
+ ret = execlp(lttd_path, lttd_path, "-t", trace_root, "-c",
+ channel_path, "-d", "-N", num_threads, NULL);
+ } else {
+ if(append_trace)
+ ret = execlp(lttd_path, lttd_path, "-t", trace_root, "-c",
+ channel_path, "-d", "-a", "-N", num_threads, "-n", NULL);
+ else
+ ret = execlp(lttd_path, lttd_path, "-t", trace_root, "-c",
+ channel_path, "-d", "-N", num_threads, "-n", NULL);
+ }
+ if(ret) {
+ ret = errno;
+ perror("Error in executing the lttd daemon");
+ exit(ret);
+ }
+ } else {
+ /* error */
+ perror("Error in forking for lttd daemon");