Postfix3.3.1
argv.h
[詳解]
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  */
17 typedef 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 
23 extern ARGV *argv_alloc(ssize_t);
24 extern ARGV *argv_sort(ARGV *);
25 extern void argv_add(ARGV *,...);
26 extern void argv_addn(ARGV *,...);
27 extern void argv_terminate(ARGV *);
28 extern void argv_truncate(ARGV *, ssize_t);
29 extern void argv_insert_one(ARGV *, ssize_t, const char *);
30 extern void argv_replace_one(ARGV *, ssize_t, const char *);
31 extern void argv_delete(ARGV *, ssize_t, ssize_t);
32 extern ARGV *argv_free(ARGV *);
33 
34 extern ARGV *argv_split(const char *, const char *);
35 extern ARGV *argv_split_count(const char *, const char *, ssize_t);
36 extern ARGV *argv_split_append(ARGV *, const char *, const char *);
37 
38 extern ARGV *argv_splitq(const char *, const char *, const char *);
39 extern ARGV *argv_splitq_count(const char *, const char *, const char *, ssize_t);
40 extern ARGV *argv_splitq_append(ARGV *, const char *, const char *, const char *);
41 
42 #define ARGV_FAKE_BEGIN(fake_argv, arg) { \
43  ARGV fake_argv; \
44  char *__fake_argv_args__[2]; \
45  __fake_argv_args__[0] = (char *) (arg); \
46  __fake_argv_args__[1] = 0; \
47  fake_argv.argv = __fake_argv_args__; \
48  fake_argv.argc = fake_argv.len = 1;
49 
50 #define ARGV_FAKE_END }
51 
52 #define ARGV_END ((char *) 0)
53 
54 /* LICENSE
55 /* .ad
56 /* .fi
57 /* The Secure Mailer license must be distributed with this software.
58 /* AUTHOR(S)
59 /* Wietse Venema
60 /* IBM T.J. Watson Research
61 /* P.O. Box 704
62 /* Yorktown Heights, NY 10598, USA
63 /*--*/
64 
65 #endif
void argv_addn(ARGV *,...)
Definition: argv.c:219
Definition: argv.h:17
ARGV * argv_free(ARGV *)
Definition: argv.c:136
ARGV * argv_split_count(const char *, const char *, ssize_t)
Definition: argv_split.c:79
ARGV * argv_splitq_count(const char *, const char *, const char *, ssize_t)
Definition: argv_splitq.c:83
char ** argv
Definition: argv.h:20
void argv_insert_one(ARGV *, ssize_t, const char *)
Definition: argv.c:273
void argv_truncate(ARGV *, ssize_t)
Definition: argv.c:253
ARGV * argv_splitq_append(ARGV *, const char *, const char *, const char *)
Definition: argv_splitq.c:106
void argv_replace_one(ARGV *, ssize_t, const char *)
Definition: argv.c:293
struct ARGV ARGV
void argv_add(ARGV *,...)
Definition: argv.c:197
ARGV * argv_splitq(const char *, const char *, const char *)
Definition: argv_splitq.c:67
ARGV * argv_alloc(ssize_t)
Definition: argv.c:149
void argv_terminate(ARGV *)
Definition: argv.c:242
ARGV * argv_sort(ARGV *)
Definition: argv.c:177
ARGV * argv_split(const char *, const char *)
Definition: argv_split.c:63
void argv_delete(ARGV *, ssize_t, ssize_t)
Definition: argv.c:310
ARGV * argv_split_append(ARGV *, const char *, const char *)
Definition: argv_split.c:101
ssize_t len
Definition: argv.h:18
ssize_t argc
Definition: argv.h:19