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

Rodrigo Rubira Branco rrbranco at br.ibm.com
Tue Sep 25 00:29:40 UTC 2007


On Mon, 2007-08-06 at 21:52 +0800, GuiJianfeng wrote:
> 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.

Why not just use the output value in the tests instead of create an
opt_o option?

cya,


Rodrigo (BSDaemon).

>  
> 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;
> 
> 
> _______________________________________________
> Ltrace-devel mailing list
> Ltrace-devel at lists.alioth.debian.org
> http://lists.alioth.debian.org/mailman/listinfo/ltrace-devel

-- 
Rodrigo Rubira Branco
Software Engineer 
Advanced Linux Response Team (ALRT) / Linux on Power Toolchain
IBM Linux Technology Center (IBM/LTC)
rrbranco at br.ibm.com

GPG KeyID: 1FCEDEA1
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.alioth.debian.org/pipermail/ltrace-devel/attachments/20070924/784704d2/attachment.pgp 


More information about the Ltrace-devel mailing list