Changeset 4006
- Timestamp:
- 12/28/05 01:40:42 (3 years ago)
- Files:
-
- trunk/lisp/ChangeLog.Meadow (modified) (1 diff)
- trunk/lisp/international/mw32misc.el (modified) (2 diffs)
- trunk/src/ChangeLog.Meadow (modified) (1 diff)
- trunk/src/w32proc.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lisp/ChangeLog.Meadow
r4005 r4006 5 5 redisplay-dont-pause when calling sit-for. Preserve 6 6 buffer-modified-p. 7 8 * international/mw32misc.el (general-process-argument-editing-function): 9 Bug fix about wrapper function. 7 10 8 11 2005-12-14 Hideyuki SHIRAI <shirai@meadowy.org> trunk/lisp/international/mw32misc.el
r3947 r4006 969 969 (setq argument (cons wrapper argument))) 970 970 ((consp wrapper) 971 (setq argument (cons (car wrapper) argument)) 972 (funcall (cdr wrapper)) 973 (setq wrapper (car wrapper)))) 971 (let ((prog (car wrapper)) 972 (func (cdr wrapper))) 973 (if (stringp prog) 974 (setq argument (cons prog argument))) 975 (if (functionp func) 976 (funcall func)) 977 (setq wrapper prog)))) 974 978 975 979 (setq argument (cond ((eq quoting 'msvc) … … 985 989 (cons wrapper 986 990 (concat 987 (unix-to-dos-filename (car argument)) " " 991 (unix-to-dos-filename 992 (encode-coding-string 993 (car argument) 994 (or file-name-coding-system 995 default-file-name-coding-system))) 996 " " 988 997 (unix-to-dos-argument (mapconcat (function concat) 989 998 (cdr argument) " ") trunk/src/ChangeLog.Meadow
r4005 r4006 29 29 (mw32_WndProc<WM_IME_NOTIFY>): Set event when FEP switched. 30 30 (mw32_WndProc<WM_IME_REPORT>): Set event when FEP switched. 31 32 * w32proc.c: New include charset.h, coding.h. 33 (sys_spawnve): Properly handle multibyte characters and path 34 separator. 31 35 32 36 2005-12-25 Masayuki FUJII <boochang@m4.kcn.ne.jp> trunk/src/w32proc.c
r3991 r4006 53 53 #include "w32.h" 54 54 /* Meadow don't use w32heap.h */ 55 #ifndef MEADOW 55 #ifdef MEADOW 56 #include "charset.h" 57 #include "coding.h" 58 #else 56 59 #include "w32heap.h" 57 60 #endif … … 756 759 char *extra_env[] = {ppid_env_var_buffer, NULL}; 757 760 char *sepchars = " \t"; 758 759 761 #ifdef MEADOW 762 Lisp_Object decoded_program; 763 760 764 /* duplicate the whole elements of `argv' to prevent errors in GC. 761 765 */ … … 778 782 program = make_string (cmdname, strlen (cmdname)); 779 783 #ifdef MEADOW 780 { 781 struct gcpro gcpro1; 782 783 full = Qnil; 784 GCPRO1 (program); 785 openp (Vexec_path, program, Vexec_suffixes, &full, make_number (X_OK)); 786 UNGCPRO; 787 if (!NILP (full)) 788 program = full; 789 } 784 decoded_program = Fdos_to_unix_filename (DECODE_FILE (program)); 785 { 786 struct gcpro gcpro1, gcpro2; 787 788 full = Qnil; 789 GCPRO2 (program, decoded_program); 790 openp (Vexec_path, decoded_program, 791 Vexec_suffixes, &full, make_number (X_OK)); 792 UNGCPRO; 793 if (!NILP (full)) 794 { 795 decoded_program = full; 796 program = Funix_to_dos_filename (ENCODE_FILE (full)); 797 } 798 } 790 799 #else /* not MEADOW */ 791 800 if (NILP (Ffile_executable_p (program))) … … 845 854 #ifdef MEADOW 846 855 { 847 char *new_cmdname; 848 Lisp_Object func, arg, result; 849 new_cmdname = alloca (strlen (cmdname) + 1); 850 strcpy (new_cmdname, cmdname); 851 dostounix_filename (new_cmdname); 856 Lisp_Object func, arg, result, decoded_cmdname; 857 852 858 func = call1 (intern ("find-process-argument-editing-function"), 853 build_string (new_cmdname));859 decoded_program); 854 860 if (NILP (func)) 855 861 { … … 871 877 *--parg = '\0'; 872 878 873 cmdname = new_cmdname;874 879 argv[0] = cmdname; 875 880 } … … 890 895 { 891 896 int size; 892 893 CHECK_STRING (XCONS (result)->car); 894 CHECK_STRING (XCONS (result)->u.cdr); 895 cmdline = XSTRING (XCONS (result)->u.cdr)->data; 896 size = STRING_BYTES (XSTRING (XCONS (result)->car)) + 1; 897 Lisp_Object cmd, rcar, rcdr; 898 899 rcar = XCAR (result); 900 rcdr = XCDR (result); 901 CHECK_STRING (rcar); 902 CHECK_STRING (rcdr); 903 cmdline = SDATA (rcdr); 904 cmd = Funix_to_dos_filename (ENCODE_FILE (rcar)); 905 size = SBYTES (cmd) + 1; 897 906 cmdname = alloca (size); 898 memcpy (cmdname, XSTRING (XCONS (result)->car)->data, size);907 memcpy (cmdname, SDATA (cmd), size); 899 908 } 900 909 else 901 910 { 902 911 CHECK_STRING (result); 903 cmdline = XSTRING (result)->data;904 cmdname = new_cmdname;912 cmdline = SDATA (result); 913 cmdname = SDATA (program); 905 914 } 906 915 } 907 /* printf ("cmdline:%s\n", cmdline); */908 dostounix_filename (cmdname);909 916 910 917 /* Checks whether the cmdname exists. */ 911 program = build_string (cmdname);912 918 { 913 919 struct gcpro gcpro1; 914 920 915 921 GCPRO1 (program); 916 openp (Vexec_path, program, Vexec_suffixes, &full, make_number (X_OK)); 917 UNGCPRO; 922 openp (Vexec_path, decoded_program, 923 Vexec_suffixes, &full, make_number (X_OK)); 924 UNGCPRO ; 918 925 if (NILP (full)) 919 926 { … … 924 931 } 925 932 } 926 927 unixtodos_filename (cmdname);928 933 } 929 934 #else /* not MEADOW */
