summaryrefslogtreecommitdiff
path: root/src/process.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2008-09-19 17:21:16 +0000
committerEli Zaretskii <eliz@gnu.org>2008-09-19 17:21:16 +0000
commita1e422f32d3adb6fed846dbcdbcc26072b8e7530 (patch)
tree01ba0c859ac70fbe21b525982cb416746025ae44 /src/process.c
parentc966fd27a1197e79b26d6230b85005168d31887a (diff)
downloademacs-a1e422f32d3adb6fed846dbcdbcc26072b8e7530.tar.gz
(procfs_system_process_attributes): Fix cmdline in case /proc/PID/cmdline
is empty.
Diffstat (limited to 'src/process.c')
-rw-r--r--src/process.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/process.c b/src/process.c
index 80a657b2eda..75f36c5fce9 100644
--- a/src/process.c
+++ b/src/process.c
@@ -7419,17 +7419,17 @@ procfs_system_process_attributes (pid)
fd = emacs_open (fn, O_RDONLY, 0);
if (fd >= 0)
{
- for (cmdsize = 0; emacs_read (fd, &c, 1) == 1; cmdsize++)
+ for (cmdline_size = 0; emacs_read (fd, &c, 1) == 1; cmdline_size++)
{
if (isspace (c) || c == '\\')
- cmdsize++; /* for later quoting, see below */
+ cmdline_size++; /* for later quoting, see below */
}
- if (cmdsize)
+ if (cmdline_size)
{
- cmdline = xmalloc (cmdsize + 1);
+ cmdline = xmalloc (cmdline_size + 1);
lseek (fd, 0L, SEEK_SET);
cmdline[0] = '\0';
- if ((nread = read (fd, cmdline, cmdsize)) >= 0)
+ if ((nread = read (fd, cmdline, cmdline_size)) >= 0)
cmdline[nread++] = '\0';
/* We don't want trailing null characters. */
for (p = cmdline + nread - 1; p > cmdline && !*p; p--)
@@ -7446,18 +7446,18 @@ procfs_system_process_attributes (pid)
else if (*p == '\0')
*p = ' ';
}
- cmdsize = nread;
+ cmdline_size = nread;
}
else
{
- cmdsize = strlen (cmd) + 2;
- cmdline = xmalloc (cmdsize + 1);
+ cmdline_size = cmdsize + 2;
+ cmdline = xmalloc (cmdline_size + 1);
strcpy (cmdline, "[");
- strcat (strcat (cmdline, cmd), "]");
+ strcat (strncat (cmdline, cmd, cmdsize), "]");
}
emacs_close (fd);
/* Command line is encoded in locale-coding-system; decode it. */
- cmd_str = make_unibyte_string (cmdline, cmdsize);
+ cmd_str = make_unibyte_string (cmdline, cmdline_size);
decoded_cmd = code_convert_string_norecord (cmd_str,
Vlocale_coding_system, 0);
xfree (cmdline);