---
name: "vecargs"
section: "3"
platform: "macos"
package: "ksh"
version: "42"
release: "macOS 26.5"
platforms: ["macos"]
url: "https://new.carta.tech/vecargs"
---

# vecargs(3)

command argument vector insertion routines

## NAME

vecargs - command argument vector insertion routines

## SYNOPSIS

$1$2#include \<vecargs.h\>#include \<vecargs.h\>#include \<vecargs.h\>#include \<vecargs.h\>#include \<vecargs.h\>#include \<vecargs.h\>#include \<vecargs.h\>#include \<vecargs.h\>

$1$2char\*\* vecload(char\* string);char\*\* vecload(char\* string);char\*\* vecload(char\* string);char\*\* vecload(char\* string);char\*\* vecload(char\* string);char\*\* vecload(char\* string);char\*\* vecload(char\* string);char\*\* vecload(char\* string); $1$2char\*\* vecfile(const char\* path);char\*\* vecfile(const char\* path);char\*\* vecfile(const char\* path);char\*\* vecfile(const char\* path);char\*\* vecfile(const char\* path);char\*\* vecfile(const char\* path);char\*\* vecfile(const char\* path);char\*\* vecfile(const char\* path); $1$2char\*\* vecstring(const char\* string);char\*\* vecstring(const char\* string);char\*\* vecstring(const char\* string);char\*\* vecstring(const char\* string);char\*\* vecstring(const char\* string);char\*\* vecstring(const char\* string);char\*\* vecstring(const char\* string);char\*\* vecstring(const char\* string); $1$2void vecfree(char\*\*, int);void vecfree(char\*\*, int);void vecfree(char\*\*, int);void vecfree(char\*\*, int);void vecfree(char\*\*, int);void vecfree(char\*\*, int);void vecfree(char\*\*, int);void vecfree(char\*\*, int); $1$2int vecargs(char\*\* vec, int\* argcp, char\*\*\* argvp);int vecargs(char\*\* vec, int\* argcp, char\*\*\* argvp);int vecargs(char\*\* vec, int\* argcp, char\*\*\* argvp);int vecargs(char\*\* vec, int\* argcp, char\*\*\* argvp);int vecargs(char\*\* vec, int\* argcp, char\*\*\* argvp);int vecargs(char\*\* vec, int\* argcp, char\*\*\* argvp);int vecargs(char\*\* vec, int\* argcp, char\*\*\* argvp);int vecargs(char\*\* vec, int\* argcp, char\*\*\* argvp);

## DESCRIPTION

$1$2vecloadvecloadvecloadvecloadvecloadvecloadvecloadvecload loads a string vector from lines in $1$2stringstringstringstringstringstringstringstring $1$2stringstringstringstringstringstringstringstring may be modified upon return. Each line in  $1$2stringstringstringstringstringstringstringstring is treated as a new vector element. Lines with $1$2######## as the first character are comments. *\\newline* joins consecutive lines. A string vector pointer is returned, 0 on error.

$1$2vecfilevecfilevecfilevecfilevecfilevecfilevecfilevecfile constructs a string vector by calling  $1$2vecloadvecloadvecloadvecloadvecloadvecloadvecloadvecload on the contents of the file named by $1$2pathpathpathpathpathpathpathpath The string vector pointer is returned, 0 on error.

$1$2vecstringvecstringvecstringvecstringvecstringvecstringvecstringvecstring constructs a string vector by calling  $1$2vecloadvecloadvecloadvecloadvecloadvecloadvecloadvecload on a copy of $1$2stringstringstringstringstringstringstringstring The string vector pointer is returned, 0 on error.

$1$2vecfreevecfreevecfreevecfreevecfreevecfreevecfreevecfree frees a string vector allocated by $1$2vecfilevecfilevecfilevecfilevecfilevecfilevecfilevecfile $1$2vecloadvecloadvecloadvecloadvecloadvecloadvecloadvecload or $1$2vecstringvecstringvecstringvecstringvecstringvecstringvecstringvecstring

$1$2vecargsvecargsvecargsvecargsvecargsvecargsvecargsvecargs inserts the string vector $1$2vecvecvecvecvecvecvecvec (as returned by $1$2vecfilevecfilevecfilevecfilevecfilevecfilevecfilevecfile $1$2vecloadvecloadvecloadvecloadvecloadvecloadvecloadvecload or $1$2vecstringvecstringvecstringvecstringvecstringvecstringvecstringvecstring between  $1$2(\*argvp)\[0\](\*argvp)\[0\](\*argvp)\[0\](\*argvp)\[0\](\*argvp)\[0\](\*argvp)\[0\](\*argvp)\[0\](\*argvp)\[0\] and $1$2(\*argvp)\[1\](\*argvp)\[1\](\*argvp)\[1\](\*argvp)\[1\](\*argvp)\[1\](\*argvp)\[1\](\*argvp)\[1\](\*argvp)\[1\] sliding $1$2(\*argvp)\[1\] ...(\*argvp)\[1\] ...(\*argvp)\[1\] ...(\*argvp)\[1\] ...(\*argvp)\[1\] ...(\*argvp)\[1\] ...(\*argvp)\[1\] ...(\*argvp)\[1\] ... over. NULL and empty string args in $1$2vecvecvecvecvecvecvecvec are not copied. $1$2vecfree(vec)vecfree(vec)vecfree(vec)vecfree(vec)vecfree(vec)vecfree(vec)vecfree(vec)vecfree(vec) is called before the return. $1$2-1-1-1-1-1-1-1-1 is returned if the insertion failed.

## EXAMPLES

$1$2vecargsvecargsvecargsvecargsvecargsvecargsvecargsvecargs is commonly used to modify command  $1$2argvargvargvargvargvargvargvargv from fixed files. For example, [*make*(1)](/make/1.md) checks for the files $1$2./Makeargs./Makeargs./Makeargs./Makeargs./Makeargs./Makeargs./Makeargs./Makeargs and $1$2./makeargs./makeargs./makeargs./makeargs./makeargs./makeargs./makeargs./makeargs to modify its arguments on startup. Its a handy way to override default options on a directory by directory basis without modify the standard control files (Makefile in this case.)

## CAVEATS

This paradigm is not recommended for all commands; only a few exceptions make sense.
