[Ltrace-devel] [PATCH] ltrace doesn't call fclose when it exits.

GuiJianfeng jianfenggui at gmail.com
Mon Aug 6 13:52:02 UTC 2007


Hi all,

I find that ltrace doesn't call fclose() to close the output file when 
use option "-o".
I think that might be a bug.
 
diff -Narup ltrace-0.5/ltrace.c ltrace-0.5.prep/ltrace.c
--- ltrace-0.5/ltrace.c 2007-08-03 04:55:15.000000000 +0800
+++ ltrace-0.5.prep/ltrace.c    2007-08-04 22:07:40.000000000 +0800
@@ -54,6 +54,10 @@ static void signal_exit(int sig)
 {
        exiting = 1;
        debug(1, "Received interrupt signal; exiting...");
+       if (opt_o) {
+               fclose(output);
+       }
+
        signal(SIGINT, SIG_IGN);
        signal(SIGTERM, SIG_IGN);
        signal(SIGALRM, signal_alarm);
@@ -74,6 +78,9 @@ static void normal_exit(void)
        if (opt_c) {
                show_summary();
        }
+       if (opt_o) {
+               fclose(output);
+       }
 }
 
 static void guess_cols(void)
diff -Narup ltrace-0.5/options.c ltrace-0.5.prep/options.c
--- ltrace-0.5/options.c        2007-08-03 04:55:15.000000000 +0800
+++ ltrace-0.5.prep/options.c   2007-08-04 22:07:41.000000000 +0800
@@ -42,6 +42,7 @@ int opt_C = 0;                        /* Demangle 
low-level s
 #endif
 int opt_n = 0;                 /* indent trace output according to 
program flow */
 int opt_T = 0;                 /* show the time spent inside each call */
+int opt_o = 0;                 /* output to a specific file */
 
 /* List of pids given to option -p: */
 struct opt_p_t *opt_p = NULL;  /* attach to process with a given pid */
@@ -274,6 +275,7 @@ char **process_options(int argc, char **
                        opt_n = atoi(optarg);
                        break;
                case 'o':
+                       opt_o++;
                        output = fopen(optarg, "w");
                        if (!output) {
                                fprintf(stderr,
diff -Narup ltrace-0.5/options.h ltrace-0.5.prep/options.h
--- ltrace-0.5/options.h        2007-08-03 04:55:15.000000000 +0800
+++ ltrace-0.5.prep/options.h   2007-08-04 22:07:41.000000000 +0800
@@ -20,6 +20,7 @@ extern int opt_t;             /* print absolute tim
 extern int opt_C;              /* Demanglelow-level symbol names into 
user-level names */
 extern int opt_n;              /* indent trace output according to 
program flow */
 extern int opt_T;              /* show the time spent inside each call */
+extern int opt_o;              /* output to a specific file */
 
 struct opt_p_t {
        pid_t pid;




More information about the Ltrace-devel mailing list