1 /*
2 * wpa_supplicant/hostapd / Empty OS specific functions
3 * Copyright (c) 2005-2006, Jouni Malinen <j@w1.fi>
4 *
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
7 *
8 * This file can be used as a starting point when adding a new OS target. The
9 * functions here do not really work as-is since they are just empty or only
10 * return an error value. os_internal.c can be used as another starting point
11 * or reference since it has example implementation of many of these functions.
12 */
13
14 #include "includes.h"
15
16 #include "os.h"
17
os_sleep(os_time_t sec,os_time_t usec)18 void os_sleep(os_time_t sec, os_time_t usec)
19 {
20 }
21
22
os_get_time(struct os_time * t)23 int os_get_time(struct os_time *t)
24 {
25 return -1;
26 }
27
28
os_get_reltime(struct os_reltime * t)29 int os_get_reltime(struct os_reltime *t)
30 {
31 return -1;
32 }
33
34
os_mktime(int year,int month,int day,int hour,int min,int sec,os_time_t * t)35 int os_mktime(int year, int month, int day, int hour, int min, int sec,
36 os_time_t *t)
37 {
38 return -1;
39 }
40
os_gmtime(os_time_t t,struct os_tm * tm)41 int os_gmtime(os_time_t t, struct os_tm *tm)
42 {
43 return -1;
44 }
45
46
os_daemonize(const char * pid_file)47 int os_daemonize(const char *pid_file)
48 {
49 return -1;
50 }
51
52
os_daemonize_terminate(const char * pid_file)53 void os_daemonize_terminate(const char *pid_file)
54 {
55 }
56
57
os_get_random(unsigned char * buf,size_t len)58 int os_get_random(unsigned char *buf, size_t len)
59 {
60 return -1;
61 }
62
63
os_random(void)64 unsigned long os_random(void)
65 {
66 return 0;
67 }
68
69
os_rel2abs_path(const char * rel_path)70 char * os_rel2abs_path(const char *rel_path)
71 {
72 return NULL; /* strdup(rel_path) can be used here */
73 }
74
75
os_program_init(void)76 int os_program_init(void)
77 {
78 return 0;
79 }
80
81
os_program_deinit(void)82 void os_program_deinit(void)
83 {
84 }
85
86
os_setenv(const char * name,const char * value,int overwrite)87 int os_setenv(const char *name, const char *value, int overwrite)
88 {
89 return -1;
90 }
91
92
os_unsetenv(const char * name)93 int os_unsetenv(const char *name)
94 {
95 return -1;
96 }
97
98
os_readfile(const char * name,size_t * len)99 char * os_readfile(const char *name, size_t *len)
100 {
101 return NULL;
102 }
103
104
os_fdatasync(FILE * stream)105 int os_fdatasync(FILE *stream)
106 {
107 return 0;
108 }
109
110
os_zalloc(size_t size)111 void * os_zalloc(size_t size)
112 {
113 return NULL;
114 }
115
116
os_memdup(const void * src,size_t n)117 void * os_memdup(const void *src, size_t n)
118 {
119 return NULL;
120 }
121
122
123 #ifdef OS_NO_C_LIB_DEFINES
os_malloc(size_t size)124 void * os_malloc(size_t size)
125 {
126 return NULL;
127 }
128
129
os_realloc(void * ptr,size_t size)130 void * os_realloc(void *ptr, size_t size)
131 {
132 return NULL;
133 }
134
135
os_free(void * ptr)136 void os_free(void *ptr)
137 {
138 }
139
140
os_memcpy(void * dest,const void * src,size_t n)141 void * os_memcpy(void *dest, const void *src, size_t n)
142 {
143 return dest;
144 }
145
146
os_memmove(void * dest,const void * src,size_t n)147 void * os_memmove(void *dest, const void *src, size_t n)
148 {
149 return dest;
150 }
151
152
os_memset(void * s,int c,size_t n)153 void * os_memset(void *s, int c, size_t n)
154 {
155 return s;
156 }
157
158
os_memcmp(const void * s1,const void * s2,size_t n)159 int os_memcmp(const void *s1, const void *s2, size_t n)
160 {
161 return 0;
162 }
163
164
os_strdup(const char * s)165 char * os_strdup(const char *s)
166 {
167 return NULL;
168 }
169
170
os_strlen(const char * s)171 size_t os_strlen(const char *s)
172 {
173 return 0;
174 }
175
176
os_strcasecmp(const char * s1,const char * s2)177 int os_strcasecmp(const char *s1, const char *s2)
178 {
179 /*
180 * Ignoring case is not required for main functionality, so just use
181 * the case sensitive version of the function.
182 */
183 return os_strcmp(s1, s2);
184 }
185
186
os_strncasecmp(const char * s1,const char * s2,size_t n)187 int os_strncasecmp(const char *s1, const char *s2, size_t n)
188 {
189 /*
190 * Ignoring case is not required for main functionality, so just use
191 * the case sensitive version of the function.
192 */
193 return os_strncmp(s1, s2, n);
194 }
195
196
os_strchr(const char * s,int c)197 char * os_strchr(const char *s, int c)
198 {
199 return NULL;
200 }
201
202
os_strrchr(const char * s,int c)203 char * os_strrchr(const char *s, int c)
204 {
205 return NULL;
206 }
207
208
os_strcmp(const char * s1,const char * s2)209 int os_strcmp(const char *s1, const char *s2)
210 {
211 return 0;
212 }
213
214
os_strncmp(const char * s1,const char * s2,size_t n)215 int os_strncmp(const char *s1, const char *s2, size_t n)
216 {
217 return 0;
218 }
219
220
os_strlcpy(char * dest,const char * src,size_t size)221 size_t os_strlcpy(char *dest, const char *src, size_t size)
222 {
223 return 0;
224 }
225
226
os_memcmp_const(const void * a,const void * b,size_t len)227 int os_memcmp_const(const void *a, const void *b, size_t len)
228 {
229 return 0;
230 }
231
os_strstr(const char * haystack,const char * needle)232 char * os_strstr(const char *haystack, const char *needle)
233 {
234 return NULL;
235 }
236
237
os_snprintf(char * str,size_t size,const char * format,...)238 int os_snprintf(char *str, size_t size, const char *format, ...)
239 {
240 return 0;
241 }
242 #endif /* OS_NO_C_LIB_DEFINES */
243
244
os_exec(const char * program,const char * arg,int wait_completion)245 int os_exec(const char *program, const char *arg, int wait_completion)
246 {
247 return -1;
248 }
249