diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2006-01-24 17:40:55 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2006-01-24 17:40:55 +0000 |
commit | 4aac2d27099c81ef92f65af7b5446954a6a538ab (patch) | |
tree | 4b913e48fa807453ef43e7a6f32746589992ee59 /winsup/cygwin/path.cc | |
parent | 3acaaf543f9aa98b4b833d295b2d551a6621ae09 (diff) | |
download | cygnal-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.cc | 17 |
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 |