1#ifndef _ARGV_H_INCLUDED_ 2#define _ARGV_H_INCLUDED_ 3 4/*++ 5/* NAME 6/* argv 3h 7/* SUMMARY 8/* string array utilities 9/* SYNOPSIS 10/* #include "argv.h" 11/* DESCRIPTION 12/* .nf 13 14 /* 15 * External interface. 16 */ 17typedef struct ARGV { 18 ssize_t len; /* number of array elements */ 19 ssize_t argc; /* array elements in use */ 20 char **argv; /* string array */ 21} ARGV; 22 23extern ARGV *argv_alloc(ssize_t); 24extern ARGV *argv_sort(ARGV *); 25extern void argv_add(ARGV *,...); 26extern void argv_addn(ARGV *,...); 27extern void argv_terminate(ARGV *); 28extern void argv_truncate(ARGV *, ssize_t); 29extern void argv_insert_one(ARGV *, ssize_t, const char *); 30extern void argv_replace_one(ARGV *, ssize_t, const char *); 31extern void argv_delete(ARGV *, ssize_t, ssize_t); 32extern ARGV *argv_free(ARGV *); 33 34extern ARGV *argv_split(const char *, const char *); 35extern ARGV *argv_split_count(const char *, const char *, ssize_t); 36extern ARGV *argv_split_append(ARGV *, const char *, const char *); 37 38#define ARGV_FAKE_BEGIN(fake_argv, arg) { \ 39 ARGV fake_argv; \ 40 char *__fake_argv_args__[2]; \ 41 __fake_argv_args__[0] = (char *) (arg); \ 42 __fake_argv_args__[1] = 0; \ 43 fake_argv.argv = __fake_argv_args__; \ 44 fake_argv.argc = fake_argv.len = 1; 45 46#define ARGV_FAKE_END } 47 48#define ARGV_END ((char *) 0) 49 50/* LICENSE 51/* .ad 52/* .fi 53/* The Secure Mailer license must be distributed with this software. 54/* AUTHOR(S) 55/* Wietse Venema 56/* IBM T.J. Watson Research 57/* P.O. Box 704 58/* Yorktown Heights, NY 10598, USA 59/*--*/ 60 61#endif 62