Postfix3.3.1
stringops.h
[詳解]
1 #ifndef _STRINGOPS_H_INCLUDED_
2 #define _STRINGOPS_H_INCLUDED_
3 
4 /*++
5 /* NAME
6 /* stringops 3h
7 /* SUMMARY
8 /* string operations
9 /* SYNOPSIS
10 /* #include <stringops.h>
11 /* DESCRIPTION
12 /* .nf
13 
14  /*
15  * Utility library.
16  */
17 #include <vstring.h>
18 
19  /*
20  * External interface.
21  */
22 extern int util_utf8_enable;
23 extern char *printable(char *, int);
24 extern char *neuter(char *, const char *, int);
25 extern char *lowercase(char *);
26 extern char *casefoldx(int, VSTRING *, const char *, ssize_t);
27 extern char *uppercase(char *);
28 extern char *skipblanks(const char *);
29 extern char *trimblanks(char *, ssize_t);
30 extern char *concatenate(const char *,...);
31 extern char *mystrtok(char **, const char *);
32 extern char *mystrtokq(char **, const char *, const char *);
33 extern char *translit(char *, const char *, const char *);
34 
35 #ifndef HAVE_BASENAME
36 #define basename postfix_basename
37 extern char *basename(const char *);
38 
39 #endif
40 extern char *sane_basename(VSTRING *, const char *);
41 extern char *sane_dirname(VSTRING *, const char *);
42 extern VSTRING *unescape(VSTRING *, const char *);
43 extern VSTRING *escape(VSTRING *, const char *, ssize_t);
44 extern int alldig(const char *);
45 extern int allprint(const char *);
46 extern int allspace(const char *);
47 extern int allascii_len(const char *, ssize_t);
48 extern const char *WARN_UNUSED_RESULT split_nameval(char *, char **, char **);
49 extern const char *WARN_UNUSED_RESULT split_qnameval(char *, char **, char **);
50 extern int valid_utf8_string(const char *, ssize_t);
51 extern size_t balpar(const char *, const char *);
52 extern char *WARN_UNUSED_RESULT extpar(char **, const char *, int);
53 extern int strcasecmp_utf8x(int, const char *, const char *);
54 extern int strncasecmp_utf8x(int, const char *, const char *, ssize_t);
55 
56 #define EXTPAR_FLAG_NONE (0)
57 #define EXTPAR_FLAG_STRIP (1<<0) /* "{ text }" -> "text" */
58 #define EXTPAR_FLAG_EXTRACT (1<<1) /* hint from caller's caller */
59 
60 #define CASEF_FLAG_UTF8 (1<<0)
61 #define CASEF_FLAG_APPEND (1<<1)
62 
63  /*
64  * Convenience wrappers for most-common use cases.
65  */
66 #define allascii(s) allascii_len((s), -1)
67 #define casefold(dst, src) \
68  casefoldx(util_utf8_enable ? CASEF_FLAG_UTF8 : 0, (dst), (src), -1)
69 #define casefold_len(dst, src, len) \
70  casefoldx(util_utf8_enable ? CASEF_FLAG_UTF8 : 0, (dst), (src), (len))
71 #define casefold_append(dst, src) \
72  casefoldx((util_utf8_enable ? CASEF_FLAG_UTF8 : 0) | CASEF_FLAG_APPEND, \
73  (dst), (src), -1)
74 
75 #define strcasecmp_utf8(s1, s2) \
76  strcasecmp_utf8x(util_utf8_enable ? CASEF_FLAG_UTF8 : 0, (s1), (s2))
77 #define strncasecmp_utf8(s1, s2, l) \
78  strncasecmp_utf8x(util_utf8_enable ? CASEF_FLAG_UTF8 : 0, (s1), (s2), (l))
79 
80 /* LICENSE
81 /* .ad
82 /* .fi
83 /* The Secure Mailer license must be distributed with this software.
84 /* AUTHOR(S)
85 /* Wietse Venema
86 /* IBM T.J. Watson Research
87 /* P.O. Box 704
88 /* Yorktown Heights, NY 10598, USA
89 /*
90 /* Wietse Venema
91 /* Google, Inc.
92 /* 111 8th Avenue
93 /* New York, NY 10011, USA
94 /*--*/
95 
96 #endif
size_t balpar(const char *, const char *)
Definition: balpar.c:39
char * neuter(char *, const char *, int)
Definition: neuter.c:47
int valid_utf8_string(const char *, ssize_t)
VSTRING * escape(VSTRING *, const char *, ssize_t)
Definition: unescape.c:133
char * uppercase(char *)
Definition: uppercase.c:34
int allprint(const char *)
Definition: allprint.c:39
char * translit(char *, const char *, const char *)
Definition: translit.c:40
char * printable(char *, int)
Definition: printable.c:49
char * mystrtok(char **, const char *)
Definition: mystrtok.c:54
int allascii_len(const char *, ssize_t)
Definition: allascii.c:51
int util_utf8_enable
Definition: printable.c:47
const char *WARN_UNUSED_RESULT split_nameval(char *, char **, char **)
Definition: split_nameval.c:61
char * casefoldx(int, VSTRING *, const char *, ssize_t)
Definition: casefold.c:114
char * sane_dirname(VSTRING *, const char *)
int strncasecmp_utf8x(int, const char *, const char *, ssize_t)
#define WARN_UNUSED_RESULT
Definition: sys_defs.h:1662
int alldig(const char *)
Definition: alldig.c:38
char *WARN_UNUSED_RESULT extpar(char **, const char *, int)
Definition: extpar.c:77
const char *WARN_UNUSED_RESULT split_qnameval(char *, char **, char **)
char * trimblanks(char *, ssize_t)
Definition: trimblanks.c:37
int strcasecmp_utf8x(int, const char *, const char *)
char * concatenate(const char *,...)
Definition: concatenate.c:42
char * skipblanks(const char *)
Definition: skipblanks.c:35
#define basename
Definition: stringops.h:36
int allspace(const char *)
Definition: allspace.c:39
char * sane_basename(VSTRING *, const char *)
Definition: sane_basename.c:69
char * mystrtokq(char **, const char *, const char *)
Definition: mystrtok.c:80
VSTRING * unescape(VSTRING *, const char *)
Definition: unescape.c:69
char * lowercase(char *)
Definition: lowercase.c:34