Blame src/lib/libast/man/vecargs.3

Packit Service a8c26c
.fp 5 CW
Packit Service a8c26c
.de Af
Packit Service a8c26c
.ds ;G \\*(;G\\f\\$1\\$3\\f\\$2
Packit Service a8c26c
.if !?\\$4?? .Af \\$2 \\$1 "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
Packit Service a8c26c
..
Packit Service a8c26c
.de aF
Packit Service a8c26c
.ie ?\\$3?? .ft \\$1
Packit Service a8c26c
.el \{\
Packit Service a8c26c
.ds ;G \&
Packit Service a8c26c
.nr ;G \\n(.f
Packit Service a8c26c
.Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
Packit Service a8c26c
\\*(;G
Packit Service a8c26c
.ft \\n(;G \}
Packit Service a8c26c
..
Packit Service a8c26c
.de L
Packit Service a8c26c
.aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
Packit Service a8c26c
..
Packit Service a8c26c
.de LR
Packit Service a8c26c
.aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
Packit Service a8c26c
..
Packit Service a8c26c
.de RL
Packit Service a8c26c
.aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
Packit Service a8c26c
..
Packit Service a8c26c
.de EX		\" start example
Packit Service a8c26c
.ta 1i 2i 3i 4i 5i 6i
Packit Service a8c26c
.PP
Packit Service a8c26c
.RS 
Packit Service a8c26c
.PD 0
Packit Service a8c26c
.ft 5
Packit Service a8c26c
.nf
Packit Service a8c26c
..
Packit Service a8c26c
.de EE		\" end example
Packit Service a8c26c
.fi
Packit Service a8c26c
.ft
Packit Service a8c26c
.PD
Packit Service a8c26c
.RE
Packit Service a8c26c
.PP
Packit Service a8c26c
..
Packit Service a8c26c
.TH VECARGS 3
Packit Service a8c26c
.SH NAME
Packit Service a8c26c
vecargs \- command argument vector insertion routines
Packit Service a8c26c
.SH SYNOPSIS
Packit Service a8c26c
.L "#include <vecargs.h>"
Packit Service a8c26c
.sp
Packit Service a8c26c
.L "char** vecload(char* string);"
Packit Service a8c26c
.L "char** vecfile(const char* path);"
Packit Service a8c26c
.L "char** vecstring(const char* string);"
Packit Service a8c26c
.L "void vecfree(char**, int);"
Packit Service a8c26c
.L "int vecargs(char** vec, int* argcp, char*** argvp);"
Packit Service a8c26c
.SH DESCRIPTION
Packit Service a8c26c
.L vecload
Packit Service a8c26c
loads a string vector from lines in
Packit Service a8c26c
.LR string .
Packit Service a8c26c
.L string
Packit Service a8c26c
may be modified upon return.
Packit Service a8c26c
Each line in 
Packit Service a8c26c
.L string
Packit Service a8c26c
is treated as a new vector element.
Packit Service a8c26c
Lines with
Packit Service a8c26c
.L #
Packit Service a8c26c
as the first character are comments.
Packit Service a8c26c
.I \enewline
Packit Service a8c26c
joins consecutive lines.
Packit Service a8c26c
A string vector pointer is returned, 0 on error.
Packit Service a8c26c
.PP
Packit Service a8c26c
.L vecfile
Packit Service a8c26c
constructs a string vector by calling 
Packit Service a8c26c
.L vecload 
Packit Service a8c26c
on the contents of the file named by
Packit Service a8c26c
.LR path .
Packit Service a8c26c
The string vector pointer is returned, 0 on error.
Packit Service a8c26c
.PP
Packit Service a8c26c
.L vecstring
Packit Service a8c26c
constructs a string vector by calling 
Packit Service a8c26c
.L vecload 
Packit Service a8c26c
on a copy of
Packit Service a8c26c
.LR string .
Packit Service a8c26c
The string vector pointer is returned, 0 on error.
Packit Service a8c26c
.PP
Packit Service a8c26c
.L vecfree
Packit Service a8c26c
frees a string vector allocated by
Packit Service a8c26c
.LR vecfile ,
Packit Service a8c26c
.L vecload
Packit Service a8c26c
or
Packit Service a8c26c
.LR vecstring .
Packit Service a8c26c
.PP
Packit Service a8c26c
.L vecargs
Packit Service a8c26c
inserts the string vector
Packit Service a8c26c
.L vec
Packit Service a8c26c
(as returned by
Packit Service a8c26c
.LR vecfile ,
Packit Service a8c26c
.L vecload
Packit Service a8c26c
or
Packit Service a8c26c
.LR vecstring )
Packit Service a8c26c
between 
Packit Service a8c26c
.L "(*argvp)[0]"
Packit Service a8c26c
and
Packit Service a8c26c
.LR "(*argvp)[1]" ,
Packit Service a8c26c
sliding
Packit Service a8c26c
.L "(*argvp)[1] ..."
Packit Service a8c26c
over.
Packit Service a8c26c
NULL and empty string args in
Packit Service a8c26c
.L vec
Packit Service a8c26c
are not copied.
Packit Service a8c26c
.L "vecfree(vec)"
Packit Service a8c26c
is called before the return.
Packit Service a8c26c
.L \-1
Packit Service a8c26c
is returned if the insertion failed.
Packit Service a8c26c
.SH EXAMPLES
Packit Service a8c26c
.L vecargs
Packit Service a8c26c
is commonly used to modify command 
Packit Service a8c26c
.L argv
Packit Service a8c26c
from fixed files.
Packit Service a8c26c
For example,
Packit Service a8c26c
.IR make (1)
Packit Service a8c26c
checks for the files
Packit Service a8c26c
.L ./Makeargs
Packit Service a8c26c
and
Packit Service a8c26c
.L ./makeargs
Packit Service a8c26c
to modify its arguments on startup.
Packit Service a8c26c
Its a handy way to override default options on a directory by directory basis
Packit Service a8c26c
without modify the standard control files
Packit Service a8c26c
(\f5Makefile\fP in this case.)
Packit Service a8c26c
.SH CAVEATS
Packit Service a8c26c
This paradigm is not recommended for all commands; only a few exceptions
Packit Service a8c26c
make sense.