sffexec (Sat Oct 25 2014 01:31:01)

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) 2014 and previous years FingerPost Ltd.