xref: /NextBSD/include/_simple.h (revision 33da5adc555b3bc29986eeadca03829e4ad06b1e)
1 /*
2  * Copyright (c) 2006, 2010 Apple Inc. All rights reserved.
3  *
4  * @APPLE_LICENSE_HEADER_START@
5  *
6  * This file contains Original Code and/or Modifications of Original Code
7  * as defined in and that are subject to the Apple Public Source License
8  * Version 2.0 (the 'License'). You may not use this file except in
9  * compliance with the License. Please obtain a copy of the License at
10  * http://www.opensource.apple.com/apsl/ and read it before using this
11  * file.
12  *
13  * The Original Code and all software distributed under the License are
14  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18  * Please see the License for the specific language governing rights and
19  * limitations under the License.
20  *
21  * @APPLE_LICENSE_HEADER_END@
22  */
23 #ifndef __SIMPLE_H_
24 #define __SIMPLE_H_
25 #include <sys/cdefs.h>
26 #include <stdarg.h>
27 #include <asl.h>
28 
29 typedef void *_SIMPLE_STRING;
30 typedef const char *_esc_func(unsigned char);
31 
32 __BEGIN_DECLS
33 /*
34  * A simplified vfprintf variant.  The format string is interpreted with
35  * arguments from the va_list, and the results are written to the given
36  * file descriptor.
37  */
38 void _simple_vdprintf(int __fd, const char *__fmt, va_list __ap);
39 
40 /*
41  * A simplified fprintf variant.  The format string is interpreted with
42  * arguments from the variable argument list, and the results are written
43  * to the given file descriptor.
44  */
45 void _simple_dprintf(int __fd, const char *__fmt, ...);
46 
47 /*
48  * A simplified string allocate routine.  Pass the opaque pointer to structure
49  * to _simple_*sprintf() routines.  Use _simple_string() to retrieve the
50  * current string (the string is guaranteed to be null terminated only on
51  * the call to _simple_string()).  Use _simple_sfree() to free the structure
52  * and string memory.
53  */
54 _SIMPLE_STRING _simple_salloc(void);
55 
56 /*
57  * The format string is interpreted with arguments from the va_list, and the
58  * results are appended to the string maintained by the opaque structure, as
59  * returned by a previous call to _simple_salloc().  Non-zero is returned on
60  * out-of-memory error.
61  */
62 int _simple_vsprintf(_SIMPLE_STRING __b, const char *__fmt, va_list __ap);
63 
64 /*
65  * The format string is interpreted with arguments from the variable argument
66  * list, and the results are appended to the string maintained by the opaque
67  * structure, as returned by a previous call to _simple_salloc().  Non-zero is
68  * returned on out-of-memory error.
69  */
70 int _simple_sprintf(_SIMPLE_STRING __b, const char *__fmt, ...);
71 
72 /*
73  * Like _simple_vsprintf(), except __esc is a function to call on each
74  * character; the function returns NULL if the character should be passed
75  * as is, otherwise, the returned character string is used instead.
76  */
77 int _simple_vesprintf(_SIMPLE_STRING __b, _esc_func __esc, const char *__fmt, va_list __ap);
78 
79 /*
80  * Like _simple_sprintf(), except __esc is a function to call on each
81  * character; the function returns NULL if the character should be passed
82  * as is, otherwise, the returned character string is used instead.
83  */
84 int _simple_esprintf(_SIMPLE_STRING __b, _esc_func __esc, const char *__fmt, ...);
85 
86 /*
87  * Return the null terminated string from the opaque structure, as returned
88  * by a previous call to _simple_salloc().
89  */
90 char *_simple_string(_SIMPLE_STRING __b);
91 
92 /*
93  * Reposition the pointer to the first null in the buffer.  After a call to
94  * _simple_string, the buffer can be modified, and shrunk.
95  */
96 void _simple_sresize(_SIMPLE_STRING __b);
97 
98 /*
99  * Append the null-terminated string to the string associated with the opaque
100  * structure.  Non-zero is returned on out-of-memory error.
101  */
102 int _simple_sappend(_SIMPLE_STRING __b, const char *__str);
103 
104 /*
105  * Like _simple_sappend(), except __esc is a function to call on each
106  * character; the function returns NULL if the character should be passed
107  * as is, otherwise, the returned character string is used instead.
108  */
109 int _simple_esappend(_SIMPLE_STRING __b, _esc_func __esc, const char *__str);
110 
111 /*
112  * Write the string associated with the opaque structure to the file descriptor.
113  */
114 void _simple_put(_SIMPLE_STRING __b, int __fd);
115 
116 /*
117  * Write the string associated with the opaque structure and a trailing newline,
118  * to the file descriptor.
119  */
120 void _simple_putline(_SIMPLE_STRING __b, int __fd);
121 
122 /*
123  * Free the opaque structure, and the associated string.
124  */
125 void _simple_sfree(_SIMPLE_STRING __b);
126 
127 /*
128  * Simplified ASL log interface; does not use malloc.  Unfortunately, this
129  * requires knowledge of the format used by ASL.
130  */
131 void _simple_asl_log(int __level, const char *__facility, const char *__message);
132 void _simple_asl_log_prog(int level, const char *facility, const char *message, const char *progname);
133 __END_DECLS
134 #endif
135