diff options
Diffstat (limited to 'Build/source')
-rw-r--r-- | Build/source/texk/web2c/omegadir/ChangeLog | 14 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegadir/com16bit.ch | 41 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegadir/comsrcspec.ch | 18 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegadir/omcprt.ch | 11 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegadir/omega.mk | 2 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegadir/omegaextra.h | 2 |
6 files changed, 65 insertions, 23 deletions
diff --git a/Build/source/texk/web2c/omegadir/ChangeLog b/Build/source/texk/web2c/omegadir/ChangeLog index 7ede0f3e40b..c0d6577f5bf 100644 --- a/Build/source/texk/web2c/omegadir/ChangeLog +++ b/Build/source/texk/web2c/omegadir/ChangeLog @@ -1,3 +1,17 @@ +2009-02-27 Peter Breitenlohner <peb@mppmu.mpg.de> + + Backport of changes for Aleph + + * omegaextra.h (BUG_ADDRESS): make consistent. + * omcprt.ch (new): do not announce copyright on the terminal. + * omage.mk: include omcprt.ch in sources for omega.web. + * com16bit.ch (banner_k): just make equivalent to banner, + since Web2C announces itself. + + * comsrcspec.ch, com16bit.ch: + Use runsystem() instead of system(), etc. See tex.ch entry in + ../ChangeLog + 2008-07-04 Karl Berry <karl@tug.org> * omega.mk (otps): use @OMEGA@ for otps_programs and otps. diff --git a/Build/source/texk/web2c/omegadir/com16bit.ch b/Build/source/texk/web2c/omegadir/com16bit.ch index 94ce8220d62..72aa14e3149 100644 --- a/Build/source/texk/web2c/omegadir/com16bit.ch +++ b/Build/source/texk/web2c/omegadir/com16bit.ch @@ -43,7 +43,7 @@ @d banner=='This is Omega, Version 3.1415926-1.23.2.3' {printed when \TeX\ starts} @y @d banner=='This is Omega, Version 3.1415926-1.23.2.3' {printed when \TeX\ starts} -@d banner_k=='This is Omegak, Version 3.1415926-1.23.2.3' {printed when \TeX\ starts} +@d banner_k==banner {Web2C announces itself} @z @x [1.4] l.233 - program header @@ -1006,7 +1006,7 @@ if_eof_code: begin scan_four_bit_int; b:=(read_open[cur_val]=closed); end; @y if_eof_code: begin scan_four_bit_int_or_18; - if cur_val=18 then b:=not shell_enabled_p + if cur_val=18 then b:=not shellenabledp else b:=(read_open[cur_val]=closed); end; @z @@ -2357,7 +2357,7 @@ print(" (format="); print(job_name); print_char(" "); @d setup_bound_var(#)==bound_default:=#; setup_bound_var_end @d setup_bound_var_end(#)==bound_name:=#; setup_bound_var_end_end @d setup_bound_var_end_end(#)== - setup_bound_variable(address_of(#), bound_name, bound_default); + setup_bound_variable(addressof(#), bound_name, bound_default); @p procedure main_body; begin @!{|start_here|} @@ -2573,6 +2573,7 @@ begin @<Expand macros in the token list @y @!d:integer; {number of characters in incomplete current string} @!clobbered:boolean; {system string is ok?} +@!runsystem_ret:integer; {return value from |runsystem|} begin @<Expand macros in the token list @z @@ -2595,34 +2596,39 @@ if j=18 then {If the log file isn't open yet, we can only send output to the terminal. Calling |open_log_file| from here seems to result in bad data in the log.} if not log_opened then selector:=term_only; - print_nl("system("); + print_nl("runsystem("); for d:=0 to cur_length-1 do begin {|print| gives up if passed |str_ptr|, so do it by hand.} print(so(str_pool[str_start(str_ptr)+d])); {N.B.: not |print_char|} end; print(")..."); - if shell_enabled_p then + if shellenabledp then begin str_room(1); append_char(0); {Append a null byte to the expansion.} clobbered:=false; for d:=0 to cur_length-1 do {Convert to external character set.} - begin str_pool[str_start(str_ptr)+d]:=xchr[str_pool[str_start(str_ptr)+d]]; - if (str_pool[str_start(str_ptr)+d]=null_code) - and (d<cur_length-1) then clobbered:=true; + begin + str_pool[str_start(str_ptr)+d]:=xchr[str_pool[str_start(str_ptr)+d]]; + if (str_pool[str_start(str_ptr)+d]=null_code) + and (d<cur_length-1) then clobbered:=true; {minimal checking: NUL not allowed in argument string of |system|()} end; if clobbered then print("clobbered") - else begin {We have the string; run system(3). We don't have anything - reasonable to do with the return status, unfortunately discard it.} + else begin {We have the command. See if we're allowed to execute it, + and report in the log. We don't check the actual exit status of + the command, or do anything with the output.} for d:=0 to cur_length-1 do {Convert to external character set.} begin outside_string_array[d]:=xchr[str_pool[str_start(str_ptr)+d]]; end; outside_string_array[cur_length]:=null_code; - system(stringcast(outside_string_array)); - print("executed"); - end; - end - else begin print("disabled"); + runsystem_ret := runsystem(stringcast(outside_string_array)); + if runsystem_ret = -1 then print("quotation error in system command") + else if runsystem_ret = 0 then print("disabled (restricted)") + else if runsystem_ret = 1 then print("executed") + else if runsystem_ret = 2 then print("executed (allowed)") + end; + end else begin + print("disabled"); {|shellenabledp| false} end; print_char("."); print_nl(""); print_ln; pool_ptr:=str_start(str_ptr); {erase the string} @@ -2674,7 +2680,7 @@ system-dependent section allows easy integration of Web2c and e-\TeX, etc.) @<Glob...@>= @!edit_name_start: pool_pointer; {where the filename to switch to starts} @!edit_name_length,@!edit_line: integer; {what line to start editing at} -@!ipc_on: c_int_type; {level of IPC action, 0 for none [default]} +@!ipc_on: cinttype; {level of IPC action, 0 for none [default]} @!stop_at_space: boolean; {whether |more_name| returns false for space} @ The |edit_name_start| will be set to point into |str_pool| somewhere after @@ -2690,7 +2696,8 @@ strings. @<Global...@> = @!save_str_ptr: str_number; @!save_pool_ptr: pool_pointer; -@!shell_enabled_p: c_int_type; +@!shellenabledp: cinttype; +@!restrictedshell: cinttype; @!output_comment: ^char; @!k,l: 0..65535; {used by `Make the first 256 strings', etc.} diff --git a/Build/source/texk/web2c/omegadir/comsrcspec.ch b/Build/source/texk/web2c/omegadir/comsrcspec.ch index 17c15263e2c..4656f2ce35c 100644 --- a/Build/source/texk/web2c/omegadir/comsrcspec.ch +++ b/Build/source/texk/web2c/omegadir/comsrcspec.ch @@ -7,8 +7,8 @@ @!special_loc:pointer; @!special_token:halfword; -@!parse_first_line_p:c_int_type; {parse the first line for options} -@!file_line_error_style_p:c_int_type; {format messages as file:line:error} +@!parse_first_line_p:cinttype; {parse the first line for options} +@!file_line_error_style_p:cinttype; {format messages as file:line:error} @!halt_on_error_p:boolean; {stop at first error} @!src_specials_p : boolean; @@ -35,8 +35,12 @@ else wterm(version_string); if format_ident>0 then slow_print(format_ident); print_ln; -if shell_enabled_p then begin - wterm_ln(' \write18 enabled.') +if shellenabledp then begin + wterm(' '); + if restrictedshell then begin + wterm('restricted '); + end; + wterm_ln('\write18 enabled.'); end; if src_specials_p then begin wterm_ln(' Source specials enabled.') @@ -96,8 +100,12 @@ then else wlog(banner); wlog(version_string); -if shell_enabled_p then begin +if shellenabledp then begin wlog_cr; + wlog(' '); + if restrictedshell then begin + wlog('restricted '); + end; wlog('\write18 enabled.') end; if src_specials_p then begin diff --git a/Build/source/texk/web2c/omegadir/omcprt.ch b/Build/source/texk/web2c/omegadir/omcprt.ch new file mode 100644 index 00000000000..a6ab9d581b8 --- /dev/null +++ b/Build/source/texk/web2c/omegadir/omcprt.ch @@ -0,0 +1,11 @@ +@x +wterm_ln('Copyright (c) 1994--2000 John Plaice and Yannis Haralambous'); +@y +{Let's not announce the copyright on the terminal, nothing else does.} +@z +@x +print_nl("Copyright (c) 1994--2000 John Plaice and Yannis Haralambous"); +@y +print_nl("Copyright (C) 1994--2000 John Plaice and Yannis Haralambous"); +@z + diff --git a/Build/source/texk/web2c/omegadir/omega.mk b/Build/source/texk/web2c/omegadir/omega.mk index 6a9cb1ebd26..f11b6783045 100644 --- a/Build/source/texk/web2c/omegadir/omega.mk +++ b/Build/source/texk/web2c/omegadir/omega.mk @@ -121,6 +121,7 @@ omega.web: omegadir/omocp.ch omega.web: omegadir/omfilter.ch omega.web: omegadir/omtrans.ch omega.web: omegadir/omdir.ch +omega.web: omegadir/omcprt.ch omega.web: omegadir/omxml.ch $(TIE) -m omega.web $(srcdir)/tex.web \ $(srcdir)/omegadir/omnode.ch \ @@ -134,6 +135,7 @@ omega.web: omegadir/omxml.ch $(srcdir)/omegadir/omfilter.ch \ $(srcdir)/omegadir/omtrans.ch \ $(srcdir)/omegadir/omdir.ch \ + $(srcdir)/omegadir/omcprt.ch \ $(srcdir)/omegadir/omxml.ch omega.ch: tie omega.web omegadir/omega.mk omega.ch: omegadir/comnode.ch diff --git a/Build/source/texk/web2c/omegadir/omegaextra.h b/Build/source/texk/web2c/omegadir/omegaextra.h index 9d6c693e5a1..87c80f3a74e 100644 --- a/Build/source/texk/web2c/omegadir/omegaextra.h +++ b/Build/source/texk/web2c/omegadir/omegaextra.h @@ -28,7 +28,7 @@ along with Omega; if not, write to the Free Software Foundation, Inc., #define COPYRIGHT_HOLDER "J. Plaice and Y. Haralambous" #define AUTHOR NULL #define PROGRAM_HELP OMEGAHELP -#define BUG_ADDRESS "tex-k@mail.tug.org" +#define BUG_ADDRESS "tex-k@tug.org" #define DUMP_VAR TEXformatdefault #define DUMP_LENGTH_VAR formatdefaultlength #define DUMP_OPTION "fmt" |