14 typedef char ** ARGV_t;
16 typedef int * ARGint_t;
21 typedef struct ARGI_s * ARGI_t;
24 * Print argv array elements.
25 * @param msg output message prefix (or NULL)
26 * @param argv argv array
27 * @param fp output file handle (NULL uses stderr)
29 void argvPrint(const char * msg, ARGV_t argv, FILE * fp);
32 * Destroy an argi array.
33 * @param argi argi array
36 ARGI_t argiFree(ARGI_t argi);
39 * Destroy an argv array.
40 * @param argv argv array
43 ARGV_t argvFree(ARGV_t argv);
46 * Return no. of elements in argi array.
47 * @param argi argi array
48 * @return no. of elements
50 int argiCount(const ARGI_t argi);
53 * Return data from argi array.
54 * @param argi argi array
55 * @return argi array data address
57 ARGint_t argiData(const ARGI_t argi);
60 * Return no. of elements in argv array.
61 * @param argv argv array
62 * @return no. of elements
64 int argvCount(const ARGV_t argv);
67 * Return data from argv array.
68 * @param argv argv array
69 * @return argv array data address
71 ARGV_t argvData(const ARGV_t argv);
74 * Compare argv arrays (qsort/bsearch).
75 * @param a 1st instance address
76 * @param b 2nd instance address
77 * @return result of comparison
79 int argvCmp(const void * a, const void * b);
83 * @param argv argv array
84 * @param compar strcmp-like comparison function, or NULL for argvCmp()
87 int argvSort(ARGV_t argv, int (*compar)(const void *, const void *));
90 * Find an element in an argv array.
91 * @param argv argv array
92 * @param val string to find
93 * @param compar strcmp-like comparison function, or NULL for argvCmp()
94 * @return found string (NULL on failure)
96 ARGV_t argvSearch(ARGV_t argv, const char *val,
97 int (*compar)(const void *, const void *));
100 * Add an int to an argi array.
101 * @retval *argip argi array
102 * @param ix argi array index (or -1 to append)
103 * @param val int arg to add
106 int argiAdd(ARGI_t * argip, int ix, int val);
109 * Add a string to an argv array.
110 * @retval *argvp argv array
111 * @param val string arg to append
114 int argvAdd(ARGV_t * argvp, const char *val);
117 * Append one argv array to another.
118 * @retval *argvp argv array
119 * @param av argv array to append
122 int argvAppend(ARGV_t * argvp, const ARGV_t av);
125 * Split a string into an argv array.
126 * @retval *argvp argv array
127 * @param str string arg to split
128 * @param seps seperator characters
131 int argvSplit(ARGV_t * argvp, const char * str, const char * seps);
137 #endif /* _H_ARGV_ */