da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.fp 5 CW
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de Af
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ds ;G \\*(;G\\f\\$1\\$3\\f\\$2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.if !\\$4 .Af \\$2 \\$1 "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de aF
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ie \\$3 .ft \\$1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.el \{\
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ds ;G \&
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.nr ;G \\n(.f
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin\\*(;G
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ft \\n(;G \}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de L
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de LR
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de RL
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de EX \" start example
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ta 1i 2i 3i 4i 5i 6i
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.RS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PD 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ft 5
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.nf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de EE \" end example
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.fi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ft
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PD
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.RE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.TH VECARGS 3
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH NAME
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinvecargs \- command argument vector insertion routines
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH SYNOPSIS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L "#include <vecargs.h>"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.sp
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L "char** vecload(char* string);"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L "char** vecfile(const char* path);"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L "char** vecstring(const char* string);"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L "void vecfree(char**, int);"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L "int vecargs(char** vec, int* argcp, char*** argvp);"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH DESCRIPTION
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vecload
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinloads a string vector from lines in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR string .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L string
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmay be modified upon return.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinEach line in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L string
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis treated as a new vector element.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinLines with
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinas the first character are comments.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I \enewline
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinjoins consecutive lines.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinA string vector pointer is returned, 0 on error.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vecfile
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinconstructs a string vector by calling
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vecload
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinon the contents of the file named by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR path .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe string vector pointer is returned, 0 on error.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vecstring
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinconstructs a string vector by calling
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vecload
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinon a copy of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR string .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe string vector pointer is returned, 0 on error.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vecfree
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfrees a string vector allocated by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR vecfile ,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vecload
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR vecstring .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vecargs
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chininserts the string vector
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vec
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin(as returned by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR vecfile ,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vecload
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR vecstring )
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinbetween
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L "(*argvp)[0]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR "(*argvp)[1]" ,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinsliding
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L "(*argvp)[1] ..."
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinover.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinNULL and empty string args in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vec
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinare not copied.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L "vecfree(vec)"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis called before the return.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L \-1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis returned if the insertion failed.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH EXAMPLES
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L vecargs
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis commonly used to modify command
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L argv
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfrom fixed files.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinFor example,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR make (1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinchecks for the files
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L ./Makeargs
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L ./makeargs
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinto modify its arguments on startup.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIts a handy way to override default options on a directory by directory basis
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinwithout modify the standard control files
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin(\f5Makefile\fP in this case.)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH CAVEATS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThis paradigm is not recommended for all commands; only a few exceptions
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmake sense.