Small factorize on cmdline reading

This commit is contained in:
Mike Massonnet
2009-09-11 15:33:00 +02:00
parent e545b2e716
commit 2ea3ddc135
2 changed files with 18 additions and 11 deletions

View File

@@ -1,3 +1,7 @@
2009-09-11 Mike Massonnet <mmassonnet@xfce.org>
* Small factorize on cmdline reading.
2009-09-09 Mike Massonnet <mmassonnet@xfce.org> 2009-09-09 Mike Massonnet <mmassonnet@xfce.org>
* Show command line arguments in Linux. * Show command line arguments in Linux.

View File

@@ -34,6 +34,7 @@ static void get_cmdline(gint pid, gchar *cmdline, gint length, gchar *cmdline_fu
char *args = NULL; char *args = NULL;
int c; int c;
int i = 0, j = 0; int i = 0, j = 0;
int cmdline_found = 0;
char buffer[4096]; char buffer[4096];
int idummy; int idummy;
@@ -44,15 +45,19 @@ static void get_cmdline(gint pid, gchar *cmdline, gint length, gchar *cmdline_fu
} }
/* read byte per byte until EOF */ /* read byte per byte until EOF */
while (EOF != (c = fgetc (file))) { for (i = 0; (c = fgetc (file)) != EOF; i++) {
if (c != 0) { if (c == 0) {
cmdline_full[i++] = c; c = ' ';
} else { cmdline_found = 1;
if (args == NULL) { if (args == NULL) {
args = cmdline_full + i; args = cmdline_full + i;
} }
cmdline_full[i++] = ' ';
} }
if (!cmdline_found) {
cmdline[i] = c;
cmdline[i+1] = '\0';
}
cmdline_full[i] = c;
if (i == length_full - 1) { if (i == length_full - 1) {
break; break;
@@ -97,18 +102,16 @@ static void get_cmdline(gint pid, gchar *cmdline, gint length, gchar *cmdline_fu
} }
/* get the short version */ /* get the short version */
snprintf (filename, 255, "/proc/%i/cmdline", pid);
file = fopen (filename, "r");
fgets (cmdline, length, file);
fclose (file);
p = strchr (cmdline, ':'); p = strchr (cmdline, ':');
if (NULL != p) { if (NULL != p) {
*p = '\0'; *p = '\0';
} else { } else {
p = strrchr (cmdline, '/'); p = strrchr (cmdline, '/');
if (NULL != p) { if (NULL != p) {
strncpy (cmdline, p+1, length); for (i = p - cmdline + 1, j = 0; cmdline[i] != '\0'; i++, j++) {
cmdline[j] = cmdline[i];
}
cmdline[j] = '\0';
} }
} }