English Language flag
// Log In
// CVSweb
Project: FreeWRT
// Summary // Activity // Search // Tracker // Lists // News // SCM // Wiki

SCM Repository

ViewVC logotype

Contents of /branches/common-nfo/tools/sqlite/nfohelpr.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3456 - (show annotations) (download)
Thu Aug 9 13:18:23 2007 UTC (6 years, 6 months ago) by tg
File MIME type: text/plain
File size: 3694 byte(s)
fix
1 /* $FreeWRT: src/share/misc/licence.template,v 1.20 2006/12/11 21:04:56 tg Rel $ */
2
3 /*-
4 * Copyright (c) 2007
5 * Thorsten Glaser <tg@mirbsd.de>
6 *
7 * Provided that these terms and disclaimer and all copyright notices
8 * are retained or reproduced in an accompanying document, permission
9 * is granted to deal in this work without restriction, including un-
10 * limited rights to use, publicly perform, distribute, sell, modify,
11 * merge, give away, or sublicence.
12 *
13 * Advertising materials mentioning features or use of this work must
14 * display the following acknowledgement:
15 * This product includes material provided by Thorsten Glaser.
16 * This acknowledgement does not need to be reprinted if this work is
17 * linked into a bigger work whose licence does not allow such clause
18 * and the author of this work is given due credit in the bigger work
19 * or its accompanying documents, where such information is generally
20 * kept, provided that said credits are retained.
21 *
22 * This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
23 * the utmost extent permitted by applicable law, neither express nor
24 * implied; without malicious intent or gross negligence. In no event
25 * may a licensor, author or contributor be held liable for indirect,
26 * direct, other damage, loss, or other issues arising in any way out
27 * of dealing in the work, even if advised of the possibility of such
28 * damage or existence of a defect, except proven that it results out
29 * of said person's immediate fault when using the work as intended.
30 */
31
32 #ifndef NFOHELPR_H
33 #define NFOHELPR_H
34
35 /* stolen from mksh's sh.h */
36 #ifdef EXTERN
37 # define I__(i) = i
38 #else
39 # define I__(i)
40 # define EXTERN extern
41 # define EXTERN_DEFINED
42 #endif
43
44 /* debugging */
45 #define D(level, fmt, ...) do { \
46 if (debug >= (level)) \
47 fprintf(stderr, (fmt), ##__VA_ARGS__); \
48 } while (0)
49
50 __BEGIN_DECLS
51 EXTERN int debug I__(0);
52
53 #ifdef NFOTISER
54 #ifdef __GLIBC__
55 /* fgetln.c */
56 char *fgetln(FILE *, size_t *);
57 /* strlfun.c */
58 size_t strlcat(char *, const char *, size_t);
59 size_t strlcpy(char *, const char *, size_t);
60 #endif
61 #endif
62 __END_DECLS
63
64 /* useful stuff */
65 #define xmalloc(size) ({ \
66 void *xmalloc_ptr; \
67 size_t xmalloc_sz = (size); \
68 \
69 if ((xmalloc_ptr = malloc(xmalloc_sz)) == NULL) \
70 err(255, "cannot allocate %zu bytes", \
71 xmalloc_sz); \
72 (xmalloc_ptr); \
73 })
74
75 #define xrealloc(ptr, size) ({ \
76 void *xrealloc_newptr; \
77 size_t xrealloc_sz = (size); \
78 \
79 xrealloc_newptr = realloc((ptr), xrealloc_sz); \
80 if (xrealloc_newptr == NULL) \
81 err(255, "cannot realloc to %zu bytes", \
82 xrealloc_sz); \
83 (xrealloc_newptr); \
84 })
85
86 #define str_save(s) ({ \
87 const char *str_save_s = (s); \
88 \
89 (str_nsave(str_save_s, strlen(str_save_s))); \
90 })
91
92 #define str_nsave(s, n) ({ \
93 char *str_nsave_ptr; \
94 size_t str_nsave_sz = (n); \
95 \
96 str_nsave_ptr = xmalloc(str_nsave_sz + 1); \
97 memcpy(str_nsave_ptr, (s), str_nsave_sz); \
98 str_nsave_ptr[str_nsave_sz] = '\0'; \
99 (str_nsave_ptr); \
100 })
101
102 #define str_add(d, s) ({ \
103 const char *str_add_s = (s); \
104 \
105 (str_nadd((d), str_add_s, strlen(str_add_s))); \
106 })
107
108 #define str_nadd(d, s, n) ({ \
109 char *str_nadd_ptr = (d), *str_nadd_newptr; \
110 size_t str_nadd_sz, str_nadd_addsz = (n); \
111 \
112 str_nadd_sz = str_nadd_ptr ? \
113 strlen(str_nadd_ptr) : 0; \
114 str_nadd_newptr = str_nadd_ptr ? \
115 xrealloc(str_nadd_ptr, \
116 str_nadd_sz + str_nadd_addsz + 1) : \
117 xmalloc(str_nadd_addsz + 1); \
118 str_nadd_ptr = str_nadd_newptr + str_nadd_sz; \
119 memcpy(str_nadd_ptr, (s), str_nadd_addsz); \
120 str_nadd_ptr[str_nadd_addsz] = '\0'; \
121 (str_nadd_newptr); \
122 })
123
124 #endif

root@freewrt.org:443
ViewVC Help
Powered by ViewVC 1.1.20