summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/path.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2006-01-24 17:40:55 +0000
committerCorinna Vinschen <corinna@vinschen.de>2006-01-24 17:40:55 +0000
commit4aac2d27099c81ef92f65af7b5446954a6a538ab (patch)
tree4b913e48fa807453ef43e7a6f32746589992ee59 /winsup/cygwin/path.cc
parent3acaaf543f9aa98b4b833d295b2d551a6621ae09 (diff)
downloadcygnal-4aac2d27099c81ef92f65af7b5446954a6a538ab.tar.gz
cygnal-4aac2d27099c81ef92f65af7b5446954a6a538ab.tar.bz2
cygnal-4aac2d27099c81ef92f65af7b5446954a6a538ab.zip
* 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.
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r--winsup/cygwin/path.cc17
1 files changed, 15 insertions, 2 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index fdba25400..a141c06fd 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -3723,13 +3723,26 @@ realpath (const char *path, char *resolved)
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