12 typedef const char * ARGstr_t;
13 typedef ARGstr_t * ARGV_t;
15 typedef int * ARGint_t;
20 typedef struct ARGI_s * ARGI_t;
23 * Print argv array elements.
24 * @param msg output message prefix (or NULL)
25 * @param argv argv array
26 * @param fp output file handle (NULL uses stderr)
28 void argvPrint(const char * msg, ARGV_t argv, FILE * fp);
31 * Destroy an argi array.
32 * @param argi argi array
35 ARGI_t argiFree(ARGI_t argi);
38 * Destroy an argv array.
39 * @param argv argv array
42 ARGV_t argvFree(ARGV_t argv);
45 * Return no. of elements in argi array.
46 * @param argi argi array
47 * @return no. of elements
49 int argiCount(const ARGI_t argi);
52 * Return data from argi array.
53 * @param argi argi array
54 * @return argi array data address
56 ARGint_t argiData(const ARGI_t argi);
59 * Return no. of elements in argv array.
60 * @param argv argv array
61 * @return no. of elements
63 int argvCount(const ARGV_t argv);
66 * Return data from argv array.
67 * @param argv argv array
68 * @return argv array data address
70 ARGV_t argvData(const ARGV_t argv);
73 * Compare argv arrays (qsort/bsearch).
74 * @param a 1st instance address
75 * @param b 2nd instance address
76 * @return result of comparison
78 int argvCmp(const void * a, const void * b);
82 * @param argv argv array
83 * @param compar strcmp-like comparison function, or NULL for argvCmp()
86 int argvSort(ARGV_t argv, int (*compar)(const void *, const void *));
89 * Find an element in an argv array.
90 * @param argv argv array
91 * @param val string to find
92 * @param compar strcmp-like comparison function, or NULL for argvCmp()
93 * @return found string (NULL on failure)
95 ARGV_t argvSearch(ARGV_t argv, ARGstr_t val,
96 int (*compar)(const void *, const void *));
99 * Add an int to an argi array.
100 * @retval *argip argi array
101 * @param ix argi array index (or -1 to append)
102 * @param val int arg to add
105 int argiAdd(ARGI_t * argip, int ix, int val);
108 * Add a string to an argv array.
109 * @retval *argvp argv array
110 * @param val string arg to append
113 int argvAdd(ARGV_t * argvp, ARGstr_t val);
116 * Append one argv array to another.
117 * @retval *argvp argv array
118 * @param av argv array to append
121 int argvAppend(ARGV_t * argvp, const ARGV_t av);
124 * Split a string into an argv array.
125 * @retval *argvp argv array
126 * @param str string arg to split
127 * @param seps seperator characters
130 int argvSplit(ARGV_t * argvp, const char * str, const char * seps);
136 #endif /* _H_ARGV_ */