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