bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#1688: 23.0.60; ttname returned by system-process-attributes points t


From: richardeng
Subject: bug#1688: 23.0.60; ttname returned by system-process-attributes points to nonexisting file
Date: Fri, 16 Jan 2009 18:22:08 +0800
User-agent: Thunderbird 2.0.0.19 (Windows/20081209)

Stefan Monnier wrote:
--- sysdep.c.~1.328.~   2009-01-03 07:04:59.000000000 -0800
+++ sysdep.c    2009-01-13 01:09:56.000000000 -0800
@@ -3322,7 +3322,7 @@

if (MINOR (rdev) >= minor_beg && MINOR (rdev) <= minor_end)
{
-                  sprintf (name + strlen (name), "%lu", MINOR (rdev));
+                  sprintf (name + strlen (name), "/%lu", MINOR (rdev));
break;
}
It's not that simple: what happens if `name' is something like "ptys"
or "tty"?  We need to generate "ptys2" and "tty39" for them, not
"ptys/2" and "tty/39".

Indeed, it's pretty messy.  Even just procfs_ttyname in itself is pretty
messy (not its implementation, but the need to go through those hoops).

Faced with this difficulty, I decided not to bother, since the value
of `ttname' is not documented to return a valid file name.

Perhaps some Linux guru (which I ain't) can suggest an easy solution.

I think it's OK for now.  When we really need something better, we'll
just look at the `ps' code.


        Stefan


check ISDIR first


--- sysdep.c.~1.328.~ 2009-01-03 07:04:59.000000000 -0800 +++ sysdep.c 2009-01-15 02:03:07.000000000 -0800 @@ -3322,7 +3322,11 @@ if (MINOR (rdev) >= minor_beg && MINOR (rdev) <= minor_end) { - sprintf (name + strlen (name), "%lu", MINOR (rdev)); + struct stat st_addr; + if (!stat (name, &st_addr) && S_ISDIR(st_addr.st_mode)) + sprintf (name + strlen (name), "/%lu", MINOR (rdev)); + else + sprintf (name + strlen (name), "%lu", MINOR (rdev)); break; } }









reply via email to

[Prev in Thread] Current Thread [Next in Thread]