Replaced by g_file_get_contents.

* procargs.c: (glibtop_get_proc_args_s): Replaced by g_file_get_contents.
This commit is contained in:
Benoît Dejean
2004-06-13 09:47:24 +00:00
parent 7fe2ca8cd7
commit 7eeae24a4a

View File

@@ -42,59 +42,31 @@ char *
glibtop_get_proc_args_s (glibtop *server, glibtop_proc_args *buf, glibtop_get_proc_args_s (glibtop *server, glibtop_proc_args *buf,
pid_t pid, unsigned max_len) pid_t pid, unsigned max_len)
{ {
char fn [BUFSIZ], buffer [BUFSIZ]; char filename[48];
int cmdline, len, total = 0;
char *retval = NULL; char *args;
gsize length;
GError *error;
glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_ARGS, 0); glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_ARGS, 0);
memset (buf, 0, sizeof (glibtop_proc_args)); memset (buf, 0, sizeof (glibtop_proc_args));
sprintf (fn, "/proc/%d/cmdline", pid); sprintf (filename, "/proc/%d/cmdline", pid);
cmdline = open (fn, O_RDONLY); if(!g_file_get_contents(filename, &args, &length, &error)) {
if (cmdline < 0) return NULL; buf->size = 0;
return NULL;
if (max_len) {
retval = g_malloc (max_len+1);
len = read (cmdline, retval, max_len);
close (cmdline);
if (len < 0) {
g_free (retval);
return NULL;
}
*(retval+len) = 0;
buf->size = len;
buf->flags = _glibtop_sysdeps_proc_args;
return retval;
} }
while (1) { if(max_len) {
len = read (cmdline, buffer, BUFSIZ-1); args = g_realloc(args, max_len);
if (len < 0) { args[max_len-1] = '\0';
close (cmdline); length = max_len;
g_free (retval);
return NULL;
}
if (len == 0)
break;
retval = g_realloc (retval, total+len+1);
memcpy (retval+total, buffer, len);
*(retval+total+len) = 0;
total += len;
} }
close (cmdline); buf->size = length;
buf->size = total;
buf->flags = _glibtop_sysdeps_proc_args; buf->flags = _glibtop_sysdeps_proc_args;
return retval; return args;
} }