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