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
        -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
        -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
;002c5   5mar09 added 2nd version of input switches ; added -D and parse in and
out filenames
;001b   29mar99 LINUX   ;a 01jan03 MACOSX ;b wait3 64bit

(copyright) 2017 and previous years FingerPost Ltd.