Mercurial > hg > xemacs-beta
diff src/process-nt.c @ 2526:902d5bd9b75c
[xemacs-hg @ 2005-01-28 02:36:11 by ben]
Support symlinks under Windows
nt.c, fileio.c: Fix sync comments.
config.h.in, dired-msw.c, emacs.c, event-msw.c, fileio.c, glyphs.c, lisp.h, nt.c, process-nt.c, realpath.c, sound.c, symsinit.h, sysdep.c, sysfile.h, syswindows.h, win32.c: Add support for treating shortcuts under Windows as symbolic links.
Enabled with mswindows-shortcuts-are-links (t by default). Rewrite
lots of places to use PATHNAME_CONVERT_OUT, which is moved to
sysfile.h. Add PATHNAME_RESOLVE_LINKS, which only does things
under Windows.
Add profiling section for expand_file_name calls.
nt.c, sysdep.c: Unicode-ize.
realpath.c: Renamed from readlink_and_correct_case. Fix some problems with
Windows implementation due to incorrect understanding of workings
of the function.
sound.c, ntplay.c, sound.h: Rename play_sound_file to nt_play_sound_file and pass
internally-formatted data to it to avoid converting out and back
again.
text.h: is_c -> is_ascii.
author | ben |
---|---|
date | Fri, 28 Jan 2005 02:36:28 +0000 |
parents | 3d8143fc88e1 |
children | 19a72041c5ed 623d57b7fbe8 |
line wrap: on
line diff
--- a/src/process-nt.c Fri Jan 28 02:05:05 2005 +0000 +++ b/src/process-nt.c Fri Jan 28 02:36:28 2005 +0000 @@ -764,13 +764,15 @@ if (mswindows_is_executable (XSTRING_DATA (program))) { Extbyte *progext; - LISP_STRING_TO_TSTR (program, progext); + LISP_PATHNAME_CONVERT_OUT (program, progext); image_type = qxeSHGetFileInfo (progext, 0, NULL, 0, SHGFI_EXETYPE); } else { DECLARE_EISTRING (progext); - eicpy_lstr (progext, program); + Ibyte *prog2; + LISP_PATHNAME_RESOLVE_LINKS (program, prog2); + eicpy_rawz (progext, prog2); eicat_ascii (progext, ".exe"); eito_external (progext, Qmswindows_tstr); image_type = qxeSHGetFileInfo (eiextdata (progext), 0, NULL, 0, @@ -858,6 +860,7 @@ ("Bogus return value from `mswindows-construct-process-command-line'", args_or_ret); + /* #### What about path names, which may be links? */ LISP_STRING_TO_TSTR (args_or_ret, command_line); UNGCPRO; /* args_or_ret */ @@ -994,7 +997,7 @@ { Extbyte *curdirext; - LISP_STRING_TO_TSTR (cur_dir, curdirext); + LISP_PATHNAME_CONVERT_OUT (cur_dir, curdirext); err = (qxeCreateProcess (NULL, command_line, NULL, NULL, TRUE, (XEUNICODE_P ?