9 #include <rpm/rpmtypes.h>
15 typedef char ** ARGV_t;
16 typedef char * const *ARGV_const_t;
18 typedef int * ARGint_t;
23 typedef struct ARGI_s * ARGI_t;
24 typedef struct ARGI_s const * const ARGI_const_t;
27 * Print argv array elements.
28 * @param msg output message prefix (or NULL)
29 * @param argv argv array
30 * @param fp output file handle (NULL uses stderr)
32 void argvPrint(const char * msg, ARGV_const_t argv, FILE * fp);
35 * Destroy an argi array.
36 * @param argi argi array
39 ARGI_t argiFree(ARGI_t argi);
43 * Create an empty argv array.
44 * @return pointer to empty argv
49 * Destroy an argv array.
50 * @param argv argv array
53 ARGV_t argvFree(ARGV_t argv);
56 * Return no. of elements in argi array.
57 * @param argi argi array
58 * @return no. of elements
60 int argiCount(ARGI_const_t argi);
63 * Return data from argi array.
64 * @param argi argi array
65 * @return argi array data address
67 ARGint_t argiData(ARGI_const_t argi);
70 * Return no. of elements in argv array.
71 * @param argv argv array
72 * @return no. of elements
74 int argvCount(ARGV_const_t argv);
77 * Return data from argv array.
78 * @param argv argv array
79 * @return argv array data address
81 ARGV_t argvData(ARGV_t argv);
84 * Compare argv arrays (qsort/bsearch).
85 * @param a 1st instance address
86 * @param b 2nd instance address
87 * @return result of comparison
89 int argvCmp(const void * a, const void * b);
93 * @param argv argv array
94 * @param compar strcmp-like comparison function, or NULL for argvCmp()
97 int argvSort(ARGV_t argv, int (*compar)(const void *, const void *));
100 * Find an element in an argv array.
101 * @param argv argv array
102 * @param val string to find
103 * @param compar strcmp-like comparison function, or NULL for argvCmp()
104 * @return found string (NULL on failure)
106 ARGV_t argvSearch(ARGV_const_t argv, const char *val,
107 int (*compar)(const void *, const void *));
110 * Add an int to an argi array.
111 * @retval *argip argi array
112 * @param ix argi array index (or -1 to append)
113 * @param val int arg to add
116 int argiAdd(ARGI_t * argip, int ix, int val);
119 * Add a string to an argv array.
120 * @retval *argvp argv array
121 * @param val string arg to append
124 int argvAdd(ARGV_t * argvp, const char *val);
127 * Add a number to an argv array (converting to a string).
128 * @retval *argvp argv array
129 * @param val numeric arg to append
132 int argvAddNum(ARGV_t * argvp, int val);
135 * Append one argv array to another.
136 * @retval *argvp argv array
137 * @param av argv array to append
140 int argvAppend(ARGV_t * argvp, ARGV_const_t av);
144 ARGV_SKIPEMPTY = (1 << 0), /* omit empty strings from result */
147 typedef rpmFlags argvFlags;
150 * Split a string into an argv array.
151 * @param str string arg to split
152 * @param seps seperator characters
153 * @param flags flags to control behavior
156 ARGV_t argvSplitString(const char * str, const char * seps, argvFlags flags);
159 * Split a string into an argv array.
160 * @retval *argvp argv array
161 * @param str string arg to split
162 * @param seps seperator characters
165 int argvSplit(ARGV_t * argvp, const char * str, const char * seps);
168 * Join an argv array into a string.
169 * @param *argv argv array to join
170 * @param sep seperator string to use
171 * @return malloc'ed string
173 char *argvJoin(ARGV_const_t argv, const char *sep);
179 #endif /* _H_ARGV_ */