16d49e1aeSJan Lentfer /* 26d49e1aeSJan Lentfer * wpa_supplicant/hostapd / Empty OS specific functions 36d49e1aeSJan Lentfer * Copyright (c) 2005-2006, Jouni Malinen <j@w1.fi> 46d49e1aeSJan Lentfer * 53ff40c12SJohn Marino * This software may be distributed under the terms of the BSD license. 63ff40c12SJohn Marino * See README for more details. 76d49e1aeSJan Lentfer * 86d49e1aeSJan Lentfer * This file can be used as a starting point when adding a new OS target. The 96d49e1aeSJan Lentfer * functions here do not really work as-is since they are just empty or only 106d49e1aeSJan Lentfer * return an error value. os_internal.c can be used as another starting point 116d49e1aeSJan Lentfer * or reference since it has example implementation of many of these functions. 126d49e1aeSJan Lentfer */ 136d49e1aeSJan Lentfer 146d49e1aeSJan Lentfer #include "includes.h" 156d49e1aeSJan Lentfer 166d49e1aeSJan Lentfer #include "os.h" 176d49e1aeSJan Lentfer 186d49e1aeSJan Lentfer void os_sleep(os_time_t sec, os_time_t usec) 196d49e1aeSJan Lentfer { 206d49e1aeSJan Lentfer } 216d49e1aeSJan Lentfer 226d49e1aeSJan Lentfer 236d49e1aeSJan Lentfer int os_get_time(struct os_time *t) 246d49e1aeSJan Lentfer { 256d49e1aeSJan Lentfer return -1; 266d49e1aeSJan Lentfer } 276d49e1aeSJan Lentfer 286d49e1aeSJan Lentfer 293ff40c12SJohn Marino int os_get_reltime(struct os_reltime *t) 303ff40c12SJohn Marino { 313ff40c12SJohn Marino return -1; 323ff40c12SJohn Marino } 333ff40c12SJohn Marino 343ff40c12SJohn Marino 356d49e1aeSJan Lentfer int os_mktime(int year, int month, int day, int hour, int min, int sec, 366d49e1aeSJan Lentfer os_time_t *t) 376d49e1aeSJan Lentfer { 386d49e1aeSJan Lentfer return -1; 396d49e1aeSJan Lentfer } 406d49e1aeSJan Lentfer 413ff40c12SJohn Marino int os_gmtime(os_time_t t, struct os_tm *tm) 423ff40c12SJohn Marino { 433ff40c12SJohn Marino return -1; 443ff40c12SJohn Marino } 453ff40c12SJohn Marino 466d49e1aeSJan Lentfer 476d49e1aeSJan Lentfer int os_daemonize(const char *pid_file) 486d49e1aeSJan Lentfer { 496d49e1aeSJan Lentfer return -1; 506d49e1aeSJan Lentfer } 516d49e1aeSJan Lentfer 526d49e1aeSJan Lentfer 536d49e1aeSJan Lentfer void os_daemonize_terminate(const char *pid_file) 546d49e1aeSJan Lentfer { 556d49e1aeSJan Lentfer } 566d49e1aeSJan Lentfer 576d49e1aeSJan Lentfer 586d49e1aeSJan Lentfer int os_get_random(unsigned char *buf, size_t len) 596d49e1aeSJan Lentfer { 606d49e1aeSJan Lentfer return -1; 616d49e1aeSJan Lentfer } 626d49e1aeSJan Lentfer 636d49e1aeSJan Lentfer 646d49e1aeSJan Lentfer unsigned long os_random(void) 656d49e1aeSJan Lentfer { 666d49e1aeSJan Lentfer return 0; 676d49e1aeSJan Lentfer } 686d49e1aeSJan Lentfer 696d49e1aeSJan Lentfer 706d49e1aeSJan Lentfer char * os_rel2abs_path(const char *rel_path) 716d49e1aeSJan Lentfer { 726d49e1aeSJan Lentfer return NULL; /* strdup(rel_path) can be used here */ 736d49e1aeSJan Lentfer } 746d49e1aeSJan Lentfer 756d49e1aeSJan Lentfer 766d49e1aeSJan Lentfer int os_program_init(void) 776d49e1aeSJan Lentfer { 786d49e1aeSJan Lentfer return 0; 796d49e1aeSJan Lentfer } 806d49e1aeSJan Lentfer 816d49e1aeSJan Lentfer 826d49e1aeSJan Lentfer void os_program_deinit(void) 836d49e1aeSJan Lentfer { 846d49e1aeSJan Lentfer } 856d49e1aeSJan Lentfer 866d49e1aeSJan Lentfer 876d49e1aeSJan Lentfer int os_setenv(const char *name, const char *value, int overwrite) 886d49e1aeSJan Lentfer { 896d49e1aeSJan Lentfer return -1; 906d49e1aeSJan Lentfer } 916d49e1aeSJan Lentfer 926d49e1aeSJan Lentfer 936d49e1aeSJan Lentfer int os_unsetenv(const char *name) 946d49e1aeSJan Lentfer { 956d49e1aeSJan Lentfer return -1; 966d49e1aeSJan Lentfer } 976d49e1aeSJan Lentfer 986d49e1aeSJan Lentfer 996d49e1aeSJan Lentfer char * os_readfile(const char *name, size_t *len) 1006d49e1aeSJan Lentfer { 1016d49e1aeSJan Lentfer return NULL; 1026d49e1aeSJan Lentfer } 1036d49e1aeSJan Lentfer 1046d49e1aeSJan Lentfer 105*a1157835SDaniel Fojt int os_fdatasync(FILE *stream) 106*a1157835SDaniel Fojt { 107*a1157835SDaniel Fojt return 0; 108*a1157835SDaniel Fojt } 109*a1157835SDaniel Fojt 110*a1157835SDaniel Fojt 1116d49e1aeSJan Lentfer void * os_zalloc(size_t size) 1126d49e1aeSJan Lentfer { 1136d49e1aeSJan Lentfer return NULL; 1146d49e1aeSJan Lentfer } 1156d49e1aeSJan Lentfer 1166d49e1aeSJan Lentfer 117*a1157835SDaniel Fojt void * os_memdup(const void *src, size_t n) 118*a1157835SDaniel Fojt { 119*a1157835SDaniel Fojt return NULL; 120*a1157835SDaniel Fojt } 121*a1157835SDaniel Fojt 122*a1157835SDaniel Fojt 1236d49e1aeSJan Lentfer #ifdef OS_NO_C_LIB_DEFINES 1246d49e1aeSJan Lentfer void * os_malloc(size_t size) 1256d49e1aeSJan Lentfer { 1266d49e1aeSJan Lentfer return NULL; 1276d49e1aeSJan Lentfer } 1286d49e1aeSJan Lentfer 1296d49e1aeSJan Lentfer 1306d49e1aeSJan Lentfer void * os_realloc(void *ptr, size_t size) 1316d49e1aeSJan Lentfer { 1326d49e1aeSJan Lentfer return NULL; 1336d49e1aeSJan Lentfer } 1346d49e1aeSJan Lentfer 1356d49e1aeSJan Lentfer 1366d49e1aeSJan Lentfer void os_free(void *ptr) 1376d49e1aeSJan Lentfer { 1386d49e1aeSJan Lentfer } 1396d49e1aeSJan Lentfer 1406d49e1aeSJan Lentfer 1416d49e1aeSJan Lentfer void * os_memcpy(void *dest, const void *src, size_t n) 1426d49e1aeSJan Lentfer { 1436d49e1aeSJan Lentfer return dest; 1446d49e1aeSJan Lentfer } 1456d49e1aeSJan Lentfer 1466d49e1aeSJan Lentfer 1476d49e1aeSJan Lentfer void * os_memmove(void *dest, const void *src, size_t n) 1486d49e1aeSJan Lentfer { 1496d49e1aeSJan Lentfer return dest; 1506d49e1aeSJan Lentfer } 1516d49e1aeSJan Lentfer 1526d49e1aeSJan Lentfer 1536d49e1aeSJan Lentfer void * os_memset(void *s, int c, size_t n) 1546d49e1aeSJan Lentfer { 1556d49e1aeSJan Lentfer return s; 1566d49e1aeSJan Lentfer } 1576d49e1aeSJan Lentfer 1586d49e1aeSJan Lentfer 1596d49e1aeSJan Lentfer int os_memcmp(const void *s1, const void *s2, size_t n) 1606d49e1aeSJan Lentfer { 1616d49e1aeSJan Lentfer return 0; 1626d49e1aeSJan Lentfer } 1636d49e1aeSJan Lentfer 1646d49e1aeSJan Lentfer 1656d49e1aeSJan Lentfer char * os_strdup(const char *s) 1666d49e1aeSJan Lentfer { 1676d49e1aeSJan Lentfer return NULL; 1686d49e1aeSJan Lentfer } 1696d49e1aeSJan Lentfer 1706d49e1aeSJan Lentfer 1716d49e1aeSJan Lentfer size_t os_strlen(const char *s) 1726d49e1aeSJan Lentfer { 1736d49e1aeSJan Lentfer return 0; 1746d49e1aeSJan Lentfer } 1756d49e1aeSJan Lentfer 1766d49e1aeSJan Lentfer 1776d49e1aeSJan Lentfer int os_strcasecmp(const char *s1, const char *s2) 1786d49e1aeSJan Lentfer { 1796d49e1aeSJan Lentfer /* 1806d49e1aeSJan Lentfer * Ignoring case is not required for main functionality, so just use 1816d49e1aeSJan Lentfer * the case sensitive version of the function. 1826d49e1aeSJan Lentfer */ 1836d49e1aeSJan Lentfer return os_strcmp(s1, s2); 1846d49e1aeSJan Lentfer } 1856d49e1aeSJan Lentfer 1866d49e1aeSJan Lentfer 1876d49e1aeSJan Lentfer int os_strncasecmp(const char *s1, const char *s2, size_t n) 1886d49e1aeSJan Lentfer { 1896d49e1aeSJan Lentfer /* 1906d49e1aeSJan Lentfer * Ignoring case is not required for main functionality, so just use 1916d49e1aeSJan Lentfer * the case sensitive version of the function. 1926d49e1aeSJan Lentfer */ 1936d49e1aeSJan Lentfer return os_strncmp(s1, s2, n); 1946d49e1aeSJan Lentfer } 1956d49e1aeSJan Lentfer 1966d49e1aeSJan Lentfer 1976d49e1aeSJan Lentfer char * os_strchr(const char *s, int c) 1986d49e1aeSJan Lentfer { 1996d49e1aeSJan Lentfer return NULL; 2006d49e1aeSJan Lentfer } 2016d49e1aeSJan Lentfer 2026d49e1aeSJan Lentfer 2036d49e1aeSJan Lentfer char * os_strrchr(const char *s, int c) 2046d49e1aeSJan Lentfer { 2056d49e1aeSJan Lentfer return NULL; 2066d49e1aeSJan Lentfer } 2076d49e1aeSJan Lentfer 2086d49e1aeSJan Lentfer 2096d49e1aeSJan Lentfer int os_strcmp(const char *s1, const char *s2) 2106d49e1aeSJan Lentfer { 2116d49e1aeSJan Lentfer return 0; 2126d49e1aeSJan Lentfer } 2136d49e1aeSJan Lentfer 2146d49e1aeSJan Lentfer 2156d49e1aeSJan Lentfer int os_strncmp(const char *s1, const char *s2, size_t n) 2166d49e1aeSJan Lentfer { 2176d49e1aeSJan Lentfer return 0; 2186d49e1aeSJan Lentfer } 2196d49e1aeSJan Lentfer 2206d49e1aeSJan Lentfer 2216d49e1aeSJan Lentfer size_t os_strlcpy(char *dest, const char *src, size_t size) 2226d49e1aeSJan Lentfer { 2236d49e1aeSJan Lentfer return 0; 2246d49e1aeSJan Lentfer } 2256d49e1aeSJan Lentfer 2266d49e1aeSJan Lentfer 227*a1157835SDaniel Fojt int os_memcmp_const(const void *a, const void *b, size_t len) 228*a1157835SDaniel Fojt { 229*a1157835SDaniel Fojt return 0; 230*a1157835SDaniel Fojt } 231*a1157835SDaniel Fojt 2326d49e1aeSJan Lentfer char * os_strstr(const char *haystack, const char *needle) 2336d49e1aeSJan Lentfer { 2346d49e1aeSJan Lentfer return NULL; 2356d49e1aeSJan Lentfer } 2366d49e1aeSJan Lentfer 2376d49e1aeSJan Lentfer 2386d49e1aeSJan Lentfer int os_snprintf(char *str, size_t size, const char *format, ...) 2396d49e1aeSJan Lentfer { 2406d49e1aeSJan Lentfer return 0; 2416d49e1aeSJan Lentfer } 2426d49e1aeSJan Lentfer #endif /* OS_NO_C_LIB_DEFINES */ 243*a1157835SDaniel Fojt 244*a1157835SDaniel Fojt 245*a1157835SDaniel Fojt int os_exec(const char *program, const char *arg, int wait_completion) 246*a1157835SDaniel Fojt { 247*a1157835SDaniel Fojt return -1; 248*a1157835SDaniel Fojt } 249