[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[MD:1069]script execution on 1.03a3
- X-ml-count: 1069
- Subject: [MD:1069]script execution on 1.03a3
- From: kyota@xxxxxxxxxxxxx (Kyotaro HORIGUCHI)
- Date: Mon, 8 Mar 1999 12:10:00 +0900
- X-mailer: Mew version 1.94b8 on Emacs 20.3 / Mule 4.0 (HANANOEN)
堀口です.
At 08 Mar 1999 09:51:12 +0900, Miyashita Hisashi(宮下 尚:HIMI) <himi@xxxxxxxxx> wrote in <uaexoercv.fsf@xxxxxxxxxxxxxxxxx>
> > ・mw32script-argument-editing-function で, mw32script で与えら
> > れたプログラム名が絶対パスでなかったら exec-path にしたがっ
> > て絶対パスに展開する.
>
> 絶対パスに展開するのは、Argument Editing前に行うべきです。
> この時点で余計な仕様の変更をすることは、好ましくないと思います。
そういう気はしていたのですが(^^;), そうすると
a) openp(exec_only) で×であった場合はファイルの中を覗いて最初
の行が #! で始まっていたら実行ファイルとして扱う.
b) call-process/start-process の中で openp が nil を返したとき
は再度 opnep(!exec_only)を行って処理を続行する.
c) openp で exec_only が指定されていても無視して処理を続ける.
多分, opnep の外から見て一番オリジナル版に近いのは(a)の処理だと
思うのですが...
> > ・start-process@xxxxxxxxx でも call-process@xxxxxxxxxx と同様
> > に openp の失敗を一旦無視するように修正.
> >
>
> これは、私が忘れました。
> まあ、このような方針で変更します。
こちらをこの方針で進めるということは openp は nil を返してしまっ
てよいと言うことになるので, ここでとる方針は (b)ですか?
というわけで callproc と process を修正して, それに伴って現れた
w32proc.c のバグも修正しました.
> patchを作ってくださると嬉しいです。
>
> from himi
> # 私は現在ETLでMULE-UCSまわりの仕事をしていますので、後になります。^^;;;
というわけで私がやってしまいました. こんなかんじでよろしいでしょ
うか.
#うーん, 格好の逃避ネタ;_;
--
堀口恭太郎.*** process.c.org Thu Feb 04 15:43:36 1999
--- process.c Mon Mar 08 11:44:08 1999
***************
*** 1164,1171 ****
--- 1164,1183 ----
GCPRO4 (name, program, buffer, current_dir);
openp (Vexec_path, program, EXEC_SUFFIXES, &tem, 1);
UNGCPRO;
+
if (NILP (tem))
+ #ifndef MEADOW /* For argument editing, check it later */
report_file_error ("Searching for program", Fcons (program, Qnil));
+ #else
+ {
+ /* Search for file(maybe a script) again; barf if not found. */
+ GCPRO4 (name, program, buffer, current_dir);
+ openp (Vexec_path, program, EXEC_SUFFIXES, &tem, 0);
+ UNGCPRO;
+ if(NILP (tem))
+ report_file_error ("Searching for program", Fcons (program, Qnil));
+ }
+ #endif
tem = Fexpand_file_name (tem, Qnil);
new_argv[0] = XSTRING (tem)->data;
}
*** callproc.c.org Wed Feb 24 18:49:48 1999
--- callproc.c Mon Mar 08 11:42:04 1999
***************
*** 402,408 ****
close (filefd);
report_file_error ("Searching for program", Fcons (args[0], Qnil));
#else
! path = args[0];
#endif
}
new_argv[0] = XSTRING (path)->data;
--- 402,420 ----
close (filefd);
report_file_error ("Searching for program", Fcons (args[0], Qnil));
#else
! /* Search for file(maybe a script) again; barf if not found. */
! {
! struct gcpro gcpro1;
!
! GCPRO1 (current_dir);
! openp (Vexec_path, args[0], EXEC_SUFFIXES, &path, 0);
! UNGCPRO;
! }
! if(NILP (path))
! {
! close (filefd);
! report_file_error ("Searching for program", Fcons (args[0], Qnil));
! }
#endif
}
new_argv[0] = XSTRING (path)->data;
*** w32proc.c.org Sat Feb 27 19:36:26 1999
--- w32proc.c Mon Mar 08 11:53:12 1999
***************
*** 863,872 ****
UNGCPRO;
if (NILP (full))
{
! struct stat st;
! if (stat (cmdname, &st) == 0)
! errno = ENOEXEC;
! return -1;
}
}
--- 863,873 ----
UNGCPRO;
if (NILP (full))
{
! /* Script file does not have valid exec suffixes. Search again for
! script file. */
! openp (Vexec_path, program, EXEC_SUFFIXES, &full, 0);
! if (NILP (full))
! return -1;
}
}