On Tue, Jul 12, 2016 at 03:30:37PM +0200, Amin Khorsandiaghai wrote:
> ---
>  strace.1  |  5 +++++
>  strace.c  |  6 +++++-
>  syscall.c | 21 +++++++++++++++++++++
>  3 files changed, 31 insertions(+), 1 deletion(-)
> 
> diff --git a/strace.1 b/strace.1
> index b7dddc0..5f5c1cc 100644
> --- a/strace.1
> +++ b/strace.1
> @@ -488,6 +488,11 @@ When strace can be interrupted by signals (such as 
> pressing ^C).
>  4: fatal signals and SIGTSTP (^Z) are always blocked (useful to make
>  strace -o FILE PROG not stop on ^Z).
>  .TP
> +.BI "\-m " traceclass
> +List all system calls in a trace class. For example
> +.BR "\-m file"
> +prints the list of all system calls in file class.
> +.TP

Why -m?

> @@ -1601,6 +1601,10 @@ init(int argc, char *argv[])
>               case 'e':
>                       qualify(optarg);
>                       break;
> +             case 'm':
> +                     print_trace_class(optarg);

The code shouldn't cause compilation warnings.

> --- a/syscall.c
> +++ b/syscall.c
> @@ -504,6 +504,27 @@ lookup_class(const char *s)
>  }
>  
>  void
> +print_trace_class(const char *trace_class)
> +{
> +     unsigned int i;
> +     unsigned pers;
> +     int rc;
> +
> +     if ((rc = lookup_class(trace_class)) != -1) {
> +             fprintf(stdout, "List of system calls in %s class\n", 
> trace_class);

Shouldn't there be a separate line printed for each personality?
Shouldn't shared_log be used instead of stdout?

See e.g. call_summary().

> +             fprintf(stdout, "-------------------------------------\n");
> +             for (pers = 0; pers < SUPPORTED_PERSONALITIES; pers++) {
> +                     for (i = 0; i < nsyscall_vec[pers]; i++)
> +                             if (sysent_vec[pers][i].sys_flags & rc) {
> +                                     fprintf(stdout, "\t%s \n", 
> sysent_vec[pers][i].sys_name);

This line's too long.

> +                             }
> +             }
> +     } else {
> +             error_msg_and_die("invalid class '%s'", trace_class);
> +     }

The preferred style is

        int rc = lookup_class(trace_class);

        if (rc < 0)
                error_msg_and_die("invalid class '%s'", trace_class);

        ...

-- 
ldv

Attachment: pgpuzKlI61nYO.pgp
Description: PGP signature

------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to