From 09c4138dbde8c76d4c71e935f201747f80cb9dbe Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Sun, 22 Apr 2007 05:37:39 +0000 Subject: [PATCH] make sigar_proc_args_get a wrapper --- include/sigar_private.h | 5 +++-- src/os/aix/aix_sigar.c | 6 ++---- src/os/darwin/darwin_sigar.c | 8 ++------ src/os/hpux/hpux_sigar.c | 5 ++--- src/os/linux/linux_sigar.c | 4 ++-- src/os/solaris/solaris_sigar.c | 13 +++---------- src/os/win32/peb.c | 2 -- src/os/win32/win32_sigar.c | 4 ++-- src/sigar.c | 10 +++++++++- src/sigar_util.c | 2 -- 10 files changed, 25 insertions(+), 34 deletions(-) diff --git a/include/sigar_private.h b/include/sigar_private.h index 09c9b6d5..48ea1439 100644 --- a/include/sigar_private.h +++ b/include/sigar_private.h @@ -174,8 +174,6 @@ int sigar_proc_list_grow(sigar_proc_list_t *proclist); sigar_proc_list_grow(proclist); \ } -int sigar_proc_args_create(sigar_proc_args_t *procargs); - int sigar_proc_args_grow(sigar_proc_args_t *procargs); #define SIGAR_PROC_ARGS_GROW(procargs) \ @@ -183,6 +181,9 @@ int sigar_proc_args_grow(sigar_proc_args_t *procargs); sigar_proc_args_grow(procargs); \ } +int sigar_os_proc_args_get(sigar_t *sigar, sigar_pid_t pid, + sigar_proc_args_t *procargs); + int sigar_file_system_list_create(sigar_file_system_list_t *fslist); int sigar_file_system_list_grow(sigar_file_system_list_t *fslist); diff --git a/src/os/aix/aix_sigar.c b/src/os/aix/aix_sigar.c index d54d8106..b1860622 100644 --- a/src/os/aix/aix_sigar.c +++ b/src/os/aix/aix_sigar.c @@ -1126,8 +1126,8 @@ int sigar_proc_state_get(sigar_t *sigar, sigar_pid_t pid, return SIGAR_OK; } -int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, - sigar_proc_args_t *procargs) +int sigar_os_proc_args_get(sigar_t *sigar, sigar_pid_t pid, + sigar_proc_args_t *procargs) { /* XXX if buffer is not large enough args are truncated */ char buffer[8192], *ptr; @@ -1141,8 +1141,6 @@ int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, return errno; } - sigar_proc_args_create(procargs); - ptr = buffer; while (*ptr) { diff --git a/src/os/darwin/darwin_sigar.c b/src/os/darwin/darwin_sigar.c index cf41fb03..ce6c5ef1 100644 --- a/src/os/darwin/darwin_sigar.c +++ b/src/os/darwin/darwin_sigar.c @@ -1029,8 +1029,8 @@ static int kern_proc_args_skip_argv(sigar_kern_proc_args_t *kargs) } #endif -int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, - sigar_proc_args_t *procargs) +int sigar_os_proc_args_get(sigar_t *sigar, sigar_pid_t pid, + sigar_proc_args_t *procargs) { #if defined(DARWIN) int status, count; @@ -1046,8 +1046,6 @@ int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, ptr = kargs.ptr; end = kargs.end; - sigar_proc_args_create(procargs); - while ((ptr < end) && (count-- > 0)) { int slen = strlen(ptr); int alen = slen+1; @@ -1089,8 +1087,6 @@ int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, return errno; } - sigar_proc_args_create(procargs); - if (len == 0) { procargs->number = 0; return SIGAR_OK; diff --git a/src/os/hpux/hpux_sigar.c b/src/os/hpux/hpux_sigar.c index 4295d74b..bc2e2c3a 100644 --- a/src/os/hpux/hpux_sigar.c +++ b/src/os/hpux/hpux_sigar.c @@ -381,8 +381,8 @@ int sigar_proc_state_get(sigar_t *sigar, sigar_pid_t pid, * according to HP forums there isn't a way to get them * all if > 64 */ -int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, - sigar_proc_args_t *procargs) +int sigar_os_proc_args_get(sigar_t *sigar, sigar_pid_t pid, + sigar_proc_args_t *procargs) { char *args, *arg; struct pst_status status; @@ -392,7 +392,6 @@ int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, } args = status.pst_cmd; - sigar_proc_args_create(procargs); while (*args && (arg = sigar_getword(&args, ' '))) { SIGAR_PROC_ARGS_GROW(procargs); diff --git a/src/os/linux/linux_sigar.c b/src/os/linux/linux_sigar.c index 97ba3db2..cadae4a1 100644 --- a/src/os/linux/linux_sigar.c +++ b/src/os/linux/linux_sigar.c @@ -876,8 +876,8 @@ int sigar_proc_state_get(sigar_t *sigar, sigar_pid_t pid, return SIGAR_OK; } -int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, - sigar_proc_args_t *procargs) +int sigar_os_proc_args_get(sigar_t *sigar, sigar_pid_t pid, + sigar_proc_args_t *procargs) { return sigar_procfs_args_get(sigar, pid, procargs); } diff --git a/src/os/solaris/solaris_sigar.c b/src/os/solaris/solaris_sigar.c index 253ad88c..759f435c 100644 --- a/src/os/solaris/solaris_sigar.c +++ b/src/os/solaris/solaris_sigar.c @@ -844,8 +844,6 @@ static int ucb_ps_args_get(sigar_t *sigar, sigar_pid_t pid, } } - sigar_proc_args_create(procargs); - while (*args && (arg = sigar_getword(&args, ' '))) { SIGAR_PROC_ARGS_GROW(procargs); procargs->data[procargs->number++] = arg; @@ -854,8 +852,8 @@ static int ucb_ps_args_get(sigar_t *sigar, sigar_pid_t pid, return SIGAR_OK; } -int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, - sigar_proc_args_t *procargs) +int sigar_os_proc_args_get(sigar_t *sigar, sigar_pid_t pid, + sigar_proc_args_t *procargs) { psinfo_t *pinfo; int fd, status; @@ -916,12 +914,6 @@ int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, return errno; } - procargs->number = 0; - procargs->size = pinfo->pr_argc; - procargs->data = - (char **)malloc(sizeof(*(procargs->data)) * - procargs->size); - for (n = 0; n < pinfo->pr_argc; n++) { int alen; char *arg; @@ -940,6 +932,7 @@ int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, arg = malloc(alen); memcpy(arg, buffer, alen); + SIGAR_PROC_ARGS_GROW(procargs); procargs->data[procargs->number++] = arg; } diff --git a/src/os/win32/peb.c b/src/os/win32/peb.c index b62d0afa..61e8b39e 100644 --- a/src/os/win32/peb.c +++ b/src/os/win32/peb.c @@ -122,8 +122,6 @@ int sigar_parse_proc_args(sigar_t *sigar, WCHAR *buf, buf = GetCommandLine(); } - sigar_proc_args_create(procargs); - args = CommandLineToArgvW(buf, &num); if (args == NULL) { diff --git a/src/os/win32/win32_sigar.c b/src/os/win32/win32_sigar.c index 8ceed133..80d26b0f 100644 --- a/src/os/win32/win32_sigar.c +++ b/src/os/win32/win32_sigar.c @@ -1272,8 +1272,8 @@ static int sigar_remote_proc_args_get(sigar_t *sigar, sigar_pid_t pid, return status; } -SIGAR_DECLARE(int) sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid, - sigar_proc_args_t *procargs) +int sigar_os_proc_args_get(sigar_t *sigar, sigar_pid_t pid, + sigar_proc_args_t *procargs) { if (pid == sigar->pid) { return sigar_parse_proc_args(sigar, NULL, procargs); diff --git a/src/sigar.c b/src/sigar.c index ae9b643e..8357f857 100644 --- a/src/sigar.c +++ b/src/sigar.c @@ -537,7 +537,7 @@ SIGAR_DECLARE(int) sigar_proc_list_get(sigar_t *sigar, return sigar_os_proc_list_get(sigar, proclist); } -int sigar_proc_args_create(sigar_proc_args_t *procargs) +static int sigar_proc_args_create(sigar_proc_args_t *procargs) { procargs->number = 0; procargs->size = SIGAR_PROC_ARGS_MAX; @@ -572,6 +572,14 @@ SIGAR_DECLARE(int) sigar_proc_args_destroy(sigar_t *sigar, return SIGAR_OK; } +SIGAR_DECLARE(int) sigar_proc_args_get(sigar_t *sigar, + sigar_pid_t pid, + sigar_proc_args_t *procargs) +{ + sigar_proc_args_create(procargs); + return sigar_os_proc_args_get(sigar, pid, procargs); +} + int sigar_file_system_list_create(sigar_file_system_list_t *fslist) { fslist->number = 0; diff --git a/src/sigar_util.c b/src/sigar_util.c index 1f1a393f..5e5d587c 100644 --- a/src/sigar_util.c +++ b/src/sigar_util.c @@ -258,8 +258,6 @@ int sigar_procfs_args_get(sigar_t *sigar, sigar_pid_t pid, close(fd); - sigar_proc_args_create(procargs); - /* e.g. /proc/2/cmdline */ if (total == 0) { procargs->number = 0;