]> granicus.if.org Git - strace/commitdiff
Pass less information to qualify_one and qual_*
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 15 Sep 2010 16:18:20 +0000 (16:18 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 15 Sep 2010 16:34:53 +0000 (16:34 +0000)
* syscall.c (qualify_one, qual_syscall, qual_signal, qual_fault,
qual_desc): Take just a bitflag argument instead of pointer to the whole
qual_options structure.
(struct qual_options): Update prototype of "qualify" field.
(qualify): Update use of qualify_one and qual_options->qualify.

syscall.c

index fed2fa829b729c024a526b26979b1dfbcd44bc01..a742571bb883c928cb01ab539e41309d2c6d2e6b 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -239,7 +239,7 @@ static int qual_syscall(), qual_signal(), qual_fault(), qual_desc();
 static const struct qual_options {
        int bitflag;
        const char *option_name;
-       int (*qualify)(const char *, const struct qual_options *, int);
+       int (*qualify)(const char *, int, int);
        const char *argument_name;
 } qual_options[] = {
        { QUAL_TRACE,   "trace",        qual_syscall,   "system call"   },
@@ -266,40 +266,36 @@ static const struct qual_options {
 };
 
 static void
-qualify_one(n, opt, not, pers)
-       int n;
-       const struct qual_options *opt;
-       int not;
-       int pers;
+qualify_one(int n, int bitflag, int not, int pers)
 {
        if (pers == 0 || pers < 0) {
                if (not)
-                       qual_flags0[n] &= ~opt->bitflag;
+                       qual_flags0[n] &= ~bitflag;
                else
-                       qual_flags0[n] |= opt->bitflag;
+                       qual_flags0[n] |= bitflag;
        }
 
 #if SUPPORTED_PERSONALITIES >= 2
        if (pers == 1 || pers < 0) {
                if (not)
-                       qual_flags1[n] &= ~opt->bitflag;
+                       qual_flags1[n] &= ~bitflag;
                else
-                       qual_flags1[n] |= opt->bitflag;
+                       qual_flags1[n] |= bitflag;
        }
 #endif /* SUPPORTED_PERSONALITIES >= 2 */
 
 #if SUPPORTED_PERSONALITIES >= 3
        if (pers == 2 || pers < 0) {
                if (not)
-                       qual_flags2[n] &= ~opt->bitflag;
+                       qual_flags2[n] &= ~bitflag;
                else
-                       qual_flags2[n] |= opt->bitflag;
+                       qual_flags2[n] |= bitflag;
        }
 #endif /* SUPPORTED_PERSONALITIES >= 3 */
 }
 
 static int
-qual_syscall(const char *s, const struct qual_options *opt, int not)
+qual_syscall(const char *s, int bitflag, int not)
 {
        int i;
        int rc = -1;
@@ -308,19 +304,19 @@ qual_syscall(const char *s, const struct qual_options *opt, int not)
                int i = atoi(s);
                if (i < 0 || i >= MAX_QUALS)
                        return -1;
-               qualify_one(i, opt, not, -1);
+               qualify_one(i, bitflag, not, -1);
                return 0;
        }
        for (i = 0; i < nsyscalls0; i++)
                if (strcmp(s, sysent0[i].sys_name) == 0) {
-                       qualify_one(i, opt, not, 0);
+                       qualify_one(i, bitflag, not, 0);
                        rc = 0;
                }
 
 #if SUPPORTED_PERSONALITIES >= 2
        for (i = 0; i < nsyscalls1; i++)
                if (strcmp(s, sysent1[i].sys_name) == 0) {
-                       qualify_one(i, opt, not, 1);
+                       qualify_one(i, bitflag, not, 1);
                        rc = 0;
                }
 #endif /* SUPPORTED_PERSONALITIES >= 2 */
@@ -328,7 +324,7 @@ qual_syscall(const char *s, const struct qual_options *opt, int not)
 #if SUPPORTED_PERSONALITIES >= 3
        for (i = 0; i < nsyscalls2; i++)
                if (strcmp(s, sysent2[i].sys_name) == 0) {
-                       qualify_one(i, opt, not, 2);
+                       qualify_one(i, bitflag, not, 2);
                        rc = 0;
                }
 #endif /* SUPPORTED_PERSONALITIES >= 3 */
@@ -337,7 +333,7 @@ qual_syscall(const char *s, const struct qual_options *opt, int not)
 }
 
 static int
-qual_signal(const char *s, const struct qual_options *opt, int not)
+qual_signal(const char *s, int bitflag, int not)
 {
        int i;
        char buf[32];
@@ -346,7 +342,7 @@ qual_signal(const char *s, const struct qual_options *opt, int not)
                int signo = atoi(s);
                if (signo < 0 || signo >= MAX_QUALS)
                        return -1;
-               qualify_one(signo, opt, not, -1);
+               qualify_one(signo, bitflag, not, -1);
                return 0;
        }
        if (strlen(s) >= sizeof buf)
@@ -357,26 +353,26 @@ qual_signal(const char *s, const struct qual_options *opt, int not)
                s += 3;
        for (i = 0; i <= NSIG; i++)
                if (strcasecmp(s, signame(i) + 3) == 0) {
-                       qualify_one(i, opt, not, -1);
+                       qualify_one(i, bitflag, not, -1);
                        return 0;
                }
        return -1;
 }
 
 static int
-qual_fault(const char *s, const struct qual_options *opt, int not)
+qual_fault(const char *s, int bitflag, int not)
 {
        return -1;
 }
 
 static int
-qual_desc(const char *s, const struct qual_options *opt, int not)
+qual_desc(const char *s, int bitflag, int not)
 {
        if (isdigit((unsigned char)*s)) {
                int desc = atoi(s);
                if (desc < 0 || desc >= MAX_QUALS)
                        return -1;
-               qualify_one(desc, opt, not, -1);
+               qualify_one(desc, bitflag, not, -1);
                return 0;
        }
        return -1;
@@ -429,12 +425,12 @@ qualify(const char *s)
        }
        if (strcmp(s, "all") == 0) {
                for (i = 0; i < MAX_QUALS; i++) {
-                       qualify_one(i, opt, not, -1);
+                       qualify_one(i, opt->bitflag, not, -1);
                }
                return;
        }
        for (i = 0; i < MAX_QUALS; i++) {
-               qualify_one(i, opt, !not, -1);
+               qualify_one(i, opt->bitflag, !not, -1);
        }
        if (!(copy = strdup(s))) {
                fprintf(stderr, "out of memory\n");
@@ -444,23 +440,23 @@ qualify(const char *s)
                if (opt->bitflag == QUAL_TRACE && (n = lookup_class(p)) > 0) {
                        for (i = 0; i < nsyscalls0; i++)
                                if (sysent0[i].sys_flags & n)
-                                       qualify_one(i, opt, not, 0);
+                                       qualify_one(i, opt->bitflag, not, 0);
 
 #if SUPPORTED_PERSONALITIES >= 2
                        for (i = 0; i < nsyscalls1; i++)
                                if (sysent1[i].sys_flags & n)
-                                       qualify_one(i, opt, not, 1);
+                                       qualify_one(i, opt->bitflag, not, 1);
 #endif /* SUPPORTED_PERSONALITIES >= 2 */
 
 #if SUPPORTED_PERSONALITIES >= 3
                        for (i = 0; i < nsyscalls2; i++)
                                if (sysent2[i].sys_flags & n)
-                                       qualify_one(i, opt, not, 2);
+                                       qualify_one(i, opt->bitflag, not, 2);
 #endif /* SUPPORTED_PERSONALITIES >= 3 */
 
                        continue;
                }
-               if (opt->qualify(p, opt, not)) {
+               if (opt->qualify(p, opt->bitflag, not)) {
                        fprintf(stderr, "strace: invalid %s `%s'\n",
                                opt->argument_name, p);
                        exit(1);