diff options
| author | Eli Zaretskii | 2013-11-30 16:27:46 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2013-11-30 16:27:46 +0200 |
| commit | 9f9974b4e090f092e9b66b0e4189cc5e59ed2133 (patch) | |
| tree | 338825e5704a2dc7db356f467cdbad6959272bd3 /src | |
| parent | ff0c63f29a2dde0022cd7aad32ead28d7b5ac43d (diff) | |
| download | emacs-9f9974b4e090f092e9b66b0e4189cc5e59ed2133.tar.gz emacs-9f9974b4e090f092e9b66b0e4189cc5e59ed2133.zip | |
Debugged and fixed w32-shell-execute.
Diffstat (limited to 'src')
| -rw-r--r-- | src/w32fns.c | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/src/w32fns.c b/src/w32fns.c index 1acf5cb6efd..4664ea79a12 100644 --- a/src/w32fns.c +++ b/src/w32fns.c | |||
| @@ -6809,17 +6809,21 @@ an integer representing a ShowWindow flag: | |||
| 6809 | filename_to_utf16 (SSDATA (current_dir), current_dir_w); | 6809 | filename_to_utf16 (SSDATA (current_dir), current_dir_w); |
| 6810 | if (STRINGP (document)) | 6810 | if (STRINGP (document)) |
| 6811 | { | 6811 | { |
| 6812 | document = ENCODE_FILE (document); | ||
| 6812 | filename_to_utf16 (SSDATA (document), document_w); | 6813 | filename_to_utf16 (SSDATA (document), document_w); |
| 6813 | doc_w = document_w; | 6814 | doc_w = document_w; |
| 6814 | } | 6815 | } |
| 6815 | if (STRINGP (parameters)) | 6816 | if (STRINGP (parameters)) |
| 6816 | { | 6817 | { |
| 6817 | int len = MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, | 6818 | int len; |
| 6818 | SSDATA (parameters), -1, NULL, 0); | 6819 | |
| 6820 | parameters = ENCODE_SYSTEM (parameters); | ||
| 6821 | len = MultiByteToWideChar (CP_ACP, MB_ERR_INVALID_CHARS, | ||
| 6822 | SSDATA (parameters), -1, NULL, 0); | ||
| 6819 | if (len > 32768) | 6823 | if (len > 32768) |
| 6820 | len = 32768; | 6824 | len = 32768; |
| 6821 | params_w = alloca (len * sizeof (wchar_t)); | 6825 | params_w = alloca (len * sizeof (wchar_t)); |
| 6822 | MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, | 6826 | MultiByteToWideChar (CP_ACP, MB_ERR_INVALID_CHARS, |
| 6823 | SSDATA (parameters), -1, params_w, len); | 6827 | SSDATA (parameters), -1, params_w, len); |
| 6824 | } | 6828 | } |
| 6825 | if (STRINGP (operation)) | 6829 | if (STRINGP (operation)) |
| @@ -6827,7 +6831,7 @@ an integer representing a ShowWindow flag: | |||
| 6827 | /* Assume OPERATION is pure ASCII. */ | 6831 | /* Assume OPERATION is pure ASCII. */ |
| 6828 | const char *s = SSDATA (operation); | 6832 | const char *s = SSDATA (operation); |
| 6829 | wchar_t *d; | 6833 | wchar_t *d; |
| 6830 | int len = SBYTES (operation); | 6834 | int len = SBYTES (operation) + 1; |
| 6831 | 6835 | ||
| 6832 | if (len > 32768) | 6836 | if (len > 32768) |
| 6833 | len = 32768; | 6837 | len = 32768; |
| @@ -6849,25 +6853,16 @@ an integer representing a ShowWindow flag: | |||
| 6849 | filename_to_ansi (SSDATA (current_dir), current_dir_a); | 6853 | filename_to_ansi (SSDATA (current_dir), current_dir_a); |
| 6850 | if (STRINGP (document)) | 6854 | if (STRINGP (document)) |
| 6851 | { | 6855 | { |
| 6856 | ENCODE_FILE (document); | ||
| 6852 | filename_to_ansi (SSDATA (document), document_a); | 6857 | filename_to_ansi (SSDATA (document), document_a); |
| 6853 | doc_a = document_a; | 6858 | doc_a = document_a; |
| 6854 | } | 6859 | } |
| 6855 | if (STRINGP (parameters)) | 6860 | if (STRINGP (parameters)) |
| 6856 | { | 6861 | { |
| 6857 | int len = MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, | 6862 | int len; |
| 6858 | SSDATA (parameters), -1, NULL, 0); | 6863 | |
| 6859 | if (len > 32768) | 6864 | parameters = ENCODE_SYSTEM (parameters); |
| 6860 | len = 32768; | 6865 | params_a = SSDATA (parameters); |
| 6861 | params_w = alloca (len * sizeof (wchar_t)); | ||
| 6862 | MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, | ||
| 6863 | SSDATA (parameters), -1, params_w, len); | ||
| 6864 | len = WideCharToMultiByte (CP_ACP, 0, params_w, -1, NULL, 0, | ||
| 6865 | NULL, NULL); | ||
| 6866 | if (len > 32768) | ||
| 6867 | len = 32768; | ||
| 6868 | params_a = alloca (len); | ||
| 6869 | WideCharToMultiByte (CP_ACP, 0, params_w, -1, params_a, len, | ||
| 6870 | NULL, NULL); | ||
| 6871 | } | 6866 | } |
| 6872 | if (STRINGP (operation)) | 6867 | if (STRINGP (operation)) |
| 6873 | { | 6868 | { |