Kannel: Open Source WAP and SMS gateway  svn-r5335
protected.h
Go to the documentation of this file.
1 /* ====================================================================
2  * The Kannel Software License, Version 1.0
3  *
4  * Copyright (c) 2001-2018 Kannel Group
5  * Copyright (c) 1998-2001 WapIT Ltd.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Kannel Group (http://www.kannel.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Kannel" and "Kannel Group" must not be used to
28  * endorse or promote products derived from this software without
29  * prior written permission. For written permission, please
30  * contact org@kannel.org.
31  *
32  * 5. Products derived from this software may not be called "Kannel",
33  * nor may "Kannel" appear in their name, without prior written
34  * permission of the Kannel Group.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS
40  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
41  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
42  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
43  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
44  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
45  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
46  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many
50  * individuals on behalf of the Kannel Group. For more information on
51  * the Kannel Group, please see <http://www.kannel.org/>.
52  *
53  * Portions of this software are based upon software originally written at
54  * WapIT Ltd., Helsinki, Finland for the Kannel project.
55  */
56 
57 /*
58  * protected.h - thread-safe versions of standard library functions
59  *
60  * The standard (or commonly available) C library functions are not always
61  * thread-safe, or re-entrant. This module provides wrappers. The wrappers
62  * are not always the most efficient, but the interface is meant to
63  * allow a more efficient version be implemented later.
64  *
65  * Lars Wirzenius
66  */
67 
68 #ifndef PROTECTED_H
69 #define PROTECTED_H
70 
71 #include <netdb.h>
72 #include <time.h>
73 
74 void gwlib_protected_init(void);
75 void gwlib_protected_shutdown(void);
76 struct tm gw_localtime(time_t t);
77 struct tm gw_gmtime(time_t t);
78 time_t gw_mktime(struct tm *tm);
79 int gw_rand(void);
80 int gw_gethostbyname(struct hostent *ret, const char *name, char **buff);
81 size_t gw_strftime(char *s, size_t max, const char *format, const struct tm *tm);
82 
83 /*
84  * Make it harder to use these by mistake.
85  */
86 
87 #undef localtime
88 #define localtime(t) do_not_use_localtime_directly
89 
90 #undef gmtime
91 #define gmtime(t) do_not_use_gmtime_directly
92 
93 #undef mktime
94 #define mktime(t) do_not_use_mktime_directly
95 
96 #undef strftime
97 #define strftime(a, b, c, d) do_not_use_strftime_directly
98 
99 #undef rand
100 #define rand() do_not_use_rand_directly
101 
102 #undef gethostbyname
103 #define gethostbyname(a, b, c) do_not_use_gethostbyname_directly
104 
105 #undef inet_ntoa
106 #define inet_ntoa(in) use_gw_netaddr_to_octstr_instead_of_inet_ntoa
107 
108 
109 #endif
int gw_gethostbyname(struct hostent *ret, const char *name, char **buff)
Definition: protected.c:248
void gwlib_protected_shutdown(void)
Definition: protected.c:112
time_t gw_mktime(struct tm *tm)
Definition: protected.c:153
size_t gw_strftime(char *s, size_t max, const char *format, const struct tm *tm)
Definition: protected.c:164
void gwlib_protected_init(void)
Definition: protected.c:103
char * name
Definition: smsc_cimd2.c:212
int gw_rand(void)
Definition: protected.c:174
struct tm gw_localtime(time_t t)
Definition: protected.c:121
struct tm gw_gmtime(time_t t)
Definition: protected.c:137
See file LICENSE for details about the license agreement for using, modifying, copying or deriving work from this software.