From: Nahim El Atmani <n...@lse.epita.fr>

From: Nahim El Atmani <nahim+...@naam.me>

* syscall.c (reallocate_vec): New function.
  (reallocate_qual): Use it.
  (find_errno_by_name): New function.
  (find_scno_by_name): Likewise.

Signed-off-by: Nahim El Atmani <nahim+...@naam.me>
Reviewed-By: Gabriel Laskar <gabr...@lse.epita.fr>
---
 syscall.c | 46 ++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 40 insertions(+), 6 deletions(-)

diff --git a/syscall.c b/syscall.c
index ca7e83d..cf087d6 100644
--- a/syscall.c
+++ b/syscall.c
@@ -387,19 +387,53 @@ static const struct qual_options {
        { 0,            NULL,           NULL,           NULL            },
 };
 
-static void
-reallocate_qual(const unsigned int n)
+static inline void
+reallocate_vec(void **vec, size_t size, size_t elt, int n)
 {
        unsigned p;
-       qualbits_t *qp;
+       char *ptr;
+
        for (p = 0; p < SUPPORTED_PERSONALITIES; p++) {
-               qp = qual_vec[p] = xreallocarray(qual_vec[p], n,
-                                                sizeof(qualbits_t));
-               memset(&qp[num_quals], 0, (n - num_quals) * sizeof(qualbits_t));
+               ptr = vec[p] = xreallocarray(vec[p], n, elt);
+               memset(ptr + elt * size, 0, (n - size) * elt);
        }
+}
+
+static inline void
+reallocate_qual(const unsigned int n)
+{
+       reallocate_vec((void **)qual_vec, num_quals, sizeof(qualbits_t), n);
        num_quals = n;
 }
 
+static int
+find_errno_by_name(const char *name)
+{
+       unsigned int i;
+
+       for (i = 1; i < nerrnos; i++) {
+               if (errnoent[i] && (strcmp(name, errnoent[i]) == 0))
+                       return i;
+       }
+
+       return -1;
+}
+
+static int
+find_scno_by_name(const char *name, unsigned personality)
+{
+       unsigned int i;
+
+       for (i = 0; i < nsyscall_vec[personality]; i++) {
+               if (sysent_vec[personality][i].sys_name
+                   && strcmp(name, sysent_vec[personality][i].sys_name) == 0) {
+                       return i;
+               }
+       }
+
+       return -1;
+}
+
 static void
 qualify_one(const unsigned int n, unsigned int bitflag, const int not, const 
int pers)
 {
-- 
Nahim El Atmani


------------------------------------------------------------------------------
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to