sffexec
sffexec
Simple program to run a program and stuff anything displayed it in a file.
-------- OPTION 1 -------
This option allows a file with a FipHdr to be run against an ordinary cmd-line
program. The Fiphdr can be ripped off beforehand and optionally added back
afterwards.
if the first parameter starts with a '-' then, the following syntax is used :
Input switches are :
-C : the contents of the input file are to be piped into the program default:
oh no they are not
-D : Always delete any existing file with the same name as the output file
BEFORE starting default: no
-e : Optional extra fipHdr information to add to the output file
and/or use for the process default: none
-f : File to be used as a I-am-still-running flag default: none
(ie to write a Lock file of this name - and remove when finished
-F : File to be deleted if the program returns success default: none
(success is a return code of zero - some programs are easy to satisify)
-i : Name of the input file default: none
if the filename does not start with a '/', they the current folder is
prepended.
-I : preserve any input fiphdr default: rip off before processing
-m : maximum time in seconds to wait for the process to end default: 0 for
unlimited
-n : Comment for logging default: none
-o : Name of the output file default: none
this is the name of any output file that the program might write.
if the filename does not start with a '/', they the current folder is
prepended.
-O : Do NOT replace the incoming Fiphdr on the output file default: rip and
replace
-p : Program (in FipSeq if extra data is included) default: none
topNtail with single or double quotes if parameters/switches are included
eg -p "/perl/bin/perl /fip/local/hohohehe.pl date=\$c\$y\$i\$d infile=\E1
outfile=\E2"
or single quotes inside double quotes
or -p "/perl/bin/perl /fip/local/hohohehe.pl head='\DI'"
-r : Optional name of a file to contain the displayed result default: none
ie if the program normally write its output to STDOUT, this file will hold
that data
if the filename does not start with a '/', they the current folder is
prepended.
-R : Do NOT replace the incoming Fiphdr on the output file default: rip and
replace
-u : do NOT use SX/external file if it is in the FipHdr default: SX points
to the Data Part (if it exists)
-V : Display the program to be run in the ALL log default: no
-v : display version of program and stop default: no
Note that the following are mandatory
-i for the input
-p for the program
A couple of temporary FipHdrs are used internally (in addition to the normal
fiphdrs of the incoming file and the -e extra switch)
E1 is the '-i' input file
E2 is the '-o' input file
-p '/usr/bin/xsltproc --nonet -o \E2 NITF2BAUDOT.XSL \E1'
Note that the input file is \E1 and the output file should be \E2
.. and it is a good idea to enclose in qtes or dblqtes
default is rip off any fiphdr of the incoming file and reapply it on the
output
- Example - DEBUGGING to screen using -v in xlstproc
sffexec -D -p '/usr/bin/xsltproc --nonet --novalid -v -o \E2
/fip/tables/xslt/BELGA_NITF.XSL \E1' -o /tmp/old1 -i
/fip/spool/xbelga/ipspool_0_2012-9-21_00:01:51_5_264 | tee /tmp/logold1
-------- OPTION 2 -------
If the first parameter is NOT a '-' then the old syntax is used
sffexec "prog and switches" infile logfile inuseflagfile successflagfile
timeout
var0 var1 var2 var3 var4 var5 var6
In this case, Input variables are
MANDATORY
1 - program to use, if any switches, wrap dbl qtes around (see example below)
2 - infile - file to be 'piped' into the program via its 'stdin'
3 - logfile or outputfile - file to be 'piped' from the programs 'stdout'
OPTIONAL (MANDATORY from IPSYND)
4 - file to be used as a I-am-still-running flag
Either no variable or a null string between 2 dbl qtes means ignore this
5 - file to be deleted if the program returns success (0)
Either no variable or a null string between 2 dbl qtes means ignore this
OPTIONAL (always)
6 - max time in seconds : sffexec will kill any program taking longer
Either no variable or a Zero signifies no timeout.
sffexec "/usr/bin/ftp -dinv" /fip/x/TMP.1223
/fip/log/syn/DAISY.FriJan10.182233
Environment variables can be used to define where the system is :
SFF_HOME where the home or top queue is. default: /fip
eg setenv SFF_HOME /ripexpress/underware
SFF_TABLES where the parameter files are default: (SFF_HOME)/tables
SFF_LOG where the log files queue is default: (SFF_HOME)/log
SFF_SPOOL where the data queues are default: (SFF_HOME)/spool
SFF_TMP where the tmp data queues is default: (SFF_HOME)/x
THIS MUST BE ON THE SAME UNIX VOLUME as SFF_SPOOL queues.
ie if spools are on /data99 which is hard disk /dev/sd0, you MUST also
have the TMP queue on the same disk/partition
NOTE that for all BUT SFF_HOME, if the parameter starts with a '/' then it is a
hard, absolute path; if not then the spool area is under SFF_HOME.
eg setenv SFF_SPOOL /data7 will look under /data7 for queues
while setenv SFF_SPOOL data7 will look under /fip/data7
Version Control
; 2c9 13jun25 added SX support for external Data parts (and -u to turn
off/ignore)
; 2c8 5mar09 added 2nd version of input switches ; added -D and parse in and
out filenames ;7 -n comment added ;8 zap last TMP
; 01b 29mar99 LINUX ;a 01jan03 MACOSX ;b wait3 64bit
(copyright) 2025 and previous years FingerPost Ltd.