/usr/lib/x86_64-linux-gnu/fis-gtm/V6.3-000A_x86_64/_xcmd.m is in fis-gtm-6.3-000a 6.3-000A-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;
; Copyright (c) 2016 Fidelity National Information ;
; Services, Inc. and/or its subsidiaries. All rights reserved. ;
; ;
; This source code contains the intellectual property ;
; of its copyright holder(s), and is made available ;
; under a license. If you do not know the terms of ;
; the license, please stop and do not read further. ;
; ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Utility to execute a shell command and return a non-zero status on error
;
%XCMD ; Usage: mumps -run %XCMD '<string>'
; If no $ETRAP defined, use CLIERR^%XCMD overriding a potential $ZTRAP error handler
if ""=$ETRAP new $ETRAP set $ETRAP="goto CLIERR^%XCMD"
new etrap set etrap=$ETRAP
; Protect %XCMD's error handler by NEWing and SETing $ETRAP at the beginning of the XECUTEd command
xecute "new $ETRAP set $ETRAP=etrap "_$zcmdline
quit
CLIERR
for i=1:1:$length($zstatus,",") quit:i>$length($zstatus,",") do
. if $piece($zstatus,",",i)?1(1"%",1"-")3.U1"-"1U1"-".E do ; split on GTM error format
. . write:$data(lasti) $piece($zstatus,",",lasti,i-1),!
. . set lasti=i
write $piece($zstatus,",",$get(lasti,3),i),!
zhalt +$piece($zstatus,",",1)
quit
; Perform a given command on every line of input
;
LOOP ; Usage: mumps -run LOOP^%XCMD [--before=|<string>|] [--after=|<string>|] [--xec=|<string>|]
; %l keeps the current line contents and %NR keeps its line #
; If no $ETRAP defined, use LOOPERR^%XCMD overriding a potential $ZTRAP error handler
if ""=$ETRAP new $ETRAP set $ETRAP="goto LOOPERR^%XCMD"
new %cli,%l,%NR,%xcmd,etrap,xec
set %cli=$zcmdline,etrap=$ETRAP
for quit:'$$trimleadingstr(.%cli,"--") do ; process command line options
. if $$trimleadingstr(.%cli,"after=") set %xcmd("after")=$$trimleadingdelimstr(.%cli)
. else if $$trimleadingstr(.%cli,"before=") set %xcmd("before")=$$trimleadingdelimstr(.%cli)
. else if $$trimleadingstr(.%cli,"xec=") set %xcmd("xec")=$$trimleadingdelimstr(.%cli)
. else set $ecode=",U254,"
. if $$trimleadingstr(.%cli," ")
set:$length(%cli) $ecode=",U252,"
kill %cli
set xec=$length($get(%xcmd("xec"))) ; xec=0 means nothing to do on each line
do cmd($get(%xcmd("before")),0,"",etrap)
for %NR=1:1 read %l quit:$zeof do:xec cmd(%xcmd("xec"),%NR,%l,etrap)
do cmd($get(%xcmd("after")),%NR,%l,etrap)
quit
cmd(cmd,%NR,%l,ltrap)
quit:$length(cmd)=0
; Protect LOOP^%XCMD's internal variables %xcmd and etrap and $ETRAP from modification by the XECUTEd command
new %xcmd,etrap,$ETRAP
set $ETRAP=ltrap
xecute cmd
quit
LOOPERR
; attempt to trap internal errors
set uecode=$piece($ecode,",",2),uemsg=$text(@uecode)
if $length(uemsg) write $text(+0),@$piece(uemsg,";",2),! zhalt +$extract(uecode,2,$length(uecode))
use $principal
write $zstatus,!
zhalt 1
quit
; Remove and optionally return leading delimited string from str
trimleadingdelimstr(str)
new delim,substr
set delim=$extract(str,1)
set substr=$piece(str,delim,2)
set str=$extract(str,$length(substr)+3,$length(str))
quit:$quit substr quit
; Remove and optionally return first piece of s with space as piece separator
trimleadingpiece(str)
new tmp
set tmp=$piece(str," ",1)
set str=$piece(str," ",2,$length(str," "))
quit:$quit tmp quit
; Return s without leading $length(x) characters; return 1/0 if called as function
trimleadingstr(str,x)
if x=$extract(str,1,$length(x)) set str=$extract(str,$length(x)+1,$length(str)) quit:$quit 1 quit
else quit:$quit 0 quit
; Error message texts
U252 ;"-F-UNRECCMD Unrecognized commands starting with "_%cli
U254 ;"-F-ILLEGALCMD Illegal command line option(s) starting with --"_%cli
|