[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[MD:1053]script execution on 1.03a3
- X-ml-count: 1053
- Subject: [MD:1053]script execution on 1.03a3
- From: kyota@xxxxxxxxxxxxx (Kyotaro HORIGUCHI)
- Date: Wed, 3 Mar 1999 12:24:38 +0900
- X-mailer: Mew version 1.94b8 on Emacs 20.3 / Mule 4.0 (HANANOEN)
堀口です. なんかちょっと見ないうちに a3 ですね. で, さっそく試し
てみました.
スクリプト実行関係がうまく動いていなかったのを直しました. 見ての
とおり Mew も動いています. パッチは添付しています.
call-process 関係の状況はこのような感じ
・Fcall_process は openp が与えられたプログラムファイル名を絶
対パスに展開して返すことを要求しているらしい.
・1.01 ではスクリプトファイルでもとりあえず実行ファイルとみな
して絶対パスに展開しているが, 1.03 では openp が使っている
sys_access@xxxxx がDOSの実行ファイルの拡張子をもたいないとOK
を返さないため, 絶対パスへの展開を行わない.
・というわけで mw32script-argument-editing-function の (car
argument) は 1.01 では絶対パスであるので正常に動作. 1.03 で
はファイル名のみとなっているため, mw32script-resolve-script
の中で勝手にカレントディレクトリを元に間違った
expand-file-name をしてしまう.
さらに start-process がらみでは
・call-process では openp の失敗を一旦無視するようにしているが,
start-process ではその処置を行っていない.
この不具合への対策として行った修正は以下のとおり.
・mw32script-argument-editing-function で, mw32script で与えら
れたプログラム名が絶対パスでなかったら exec-path にしたがっ
て絶対パスに展開する.
・start-process@xxxxxxxxx でも call-process@xxxxxxxxxx と同様
に openp の失敗を一旦無視するように修正.
の2点となぜかわたしのところの環境では CSTR_EQUAL がないと言って
コンパイラが怒ります. さらにディスクの中をあさってもそのようなも
のが書かれているヘッダファイルが見当たりません.
仕方がないので w32.c で CSTR_EQUAL がなければ無理やり定義するよ
うにしてしまいました. (0 で正しいんですよね?)
--
堀口恭太郎.*** src/w32.c.org Fri Feb 19 11:03:28 1999
--- src/w32.c Tue Mar 02 22:51:00 1999
***************
*** 62,67 ****
--- 62,71 ----
#include <pwd.h>
#include <windows.h>
+
+ #ifndef CSTR_EQUAL
+ #define CSTR_EQUAL 0 /* Why should I define this symbol? */
+ #endif
#ifdef MEADOW
#include "mw32reg.h"
*** src/process.c.org Thu Feb 04 15:43:36 1999
--- src/process.c Tue Mar 02 22:50:38 1999
***************
*** 1164,1173 ****
--- 1164,1178 ----
GCPRO4 (name, program, buffer, current_dir);
openp (Vexec_path, program, EXEC_SUFFIXES, &tem, 1);
UNGCPRO;
+
+ #ifndef MEADOW /* For argument editing, check it later */
if (NILP (tem))
report_file_error ("Searching for program", Fcons (program, Qnil));
tem = Fexpand_file_name (tem, Qnil);
new_argv[0] = XSTRING (tem)->data;
+ #else
+ new_argv[0] = XSTRING (program)->data;
+ #endif
}
else
{
*** lisp/international/mw32script.el.org Tue Feb 17 01:44:26 1998
--- lisp/international/mw32script.el Tue Mar 02 22:51:34 1999
***************
*** 142,147 ****
--- 142,160 ----
(funcall default-process-argument-editing-function argument)
(and mw32script-resolve-extention
(setq sargs (mw32script-resolve-extention argv0)))
+
+ ;; if argv0 is not absolute, expand it with exec-path
+ (if (not (file-name-absolute-p argv0))
+ (catch 'found
+ (let ((path exec-path))
+ (while path
+ (if (file-exists-p (expand-file-name argv0 (car path)))
+ (progn
+ (setq argv0 (expand-file-name argv0 (car path))
+ argument (cons argv0 (cdr argument)))
+ (throw 'found t)))
+ (setq path (cdr path))))))
+
(and mw32script-resolve-script
(or (not sargs) (eq sargs 'notfound))
(setq sargs (mw32script-resolve-script argv0)))