2006-01-24 Corinna Vinschen <corinna@vinschen.de>
+ * fhandler_process.cc (fhandler_process::fill_filebuf): Disable
+ stripping the .exe suffix from the link target in PROCESS_EXE and
+ PROCESS_EXENAME case.
+ * path.cc (realpath): Tack on .exe suffix if necessary.
+
+2006-01-24 Corinna Vinschen <corinna@vinschen.de>
+
* fhandler_disk_file.cc (fhandler_base::fstat_helper): Try harder
to determine remote file systems with reliable inode numbers. Add
longish comment.
else
{
mount_table->conv_to_posix_path (p->progname, filebuf, 1);
+#if 0
+ /* Temporarily disabled. The link will have a suffix so that
+ an open(2) call will succeed on /proc/$PID/exe now. This
+ might become unnecessary if open(2) handles the .exe suffix
+ at one point. */
int len = strlen (filebuf);
if (len > 4)
{
if (strcasematch (s, ".exe"))
*s = 0;
}
+#endif
}
filesize = strlen (filebuf);
break;
if (!real_path.error && real_path.exists ())
{
+ /* Check for the suffix being tacked on. */
+ int tack_on = 0;
+ if (real_path.known_suffix)
+ {
+ char *c = strrchr (real_path.normalized_path, '.');
+ if (!c || !strcasematch (c, real_path.known_suffix))
+ tack_on = strlen (real_path.known_suffix);
+ }
+
if (!resolved)
{
- resolved = (char *) malloc (strlen (real_path.normalized_path) + 1);
+ resolved = (char *) malloc (strlen (real_path.normalized_path)
+ + tack_on + 1);
if (!resolved)
return NULL;
}
- return strcpy (resolved, real_path.normalized_path);
+ strcpy (resolved, real_path.normalized_path);
+ if (tack_on)
+ strcat (resolved, real_path.known_suffix);
+ return resolved;
}
/* FIXME: on error, we are supposed to put the name of the path