From 06659844b61b4bb041920ba50243686bbb74d571 Mon Sep 17 00:00:00 2001 From: Deomid Ryabkov <rojer@cesanta.com> Date: Mon, 28 Mar 2016 21:58:12 +0300 Subject: [PATCH] Making Mongoose compile with TI compiler on CC3200 Part 1 PUBLISHED_FROM=a949d11b5cc578adf050f1b1d00375a2f91dfc0b --- mongoose.h | 55 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/mongoose.h b/mongoose.h index ec5c9adcd..a9347661e 100644 --- a/mongoose.h +++ b/mongoose.h @@ -385,7 +385,9 @@ unsigned long os_random(void); #include <assert.h> #include <ctype.h> #include <errno.h> +#ifndef __TI_COMPILER_VERSION__ #include <fcntl.h> +#endif #include <inttypes.h> #include <stdint.h> #include <time.h> @@ -503,7 +505,6 @@ unsigned long os_random(void); #define fd_set SlFdSet_t #define socket sl_Socket -#define close sl_Close #define accept sl_Accept #define bind sl_Bind #define listen sl_Listen @@ -534,7 +535,7 @@ typedef struct stat cs_stat_t; #define INT64_X_FMT PRIx64 #define __cdecl -#define closesocket(x) close(x) +#define closesocket(x) sl_Close(x) /* Some functions we implement for Mongoose. */ @@ -544,20 +545,52 @@ int inet_pton(int af, const char *src, void *dst); void cc3200_set_non_blocking_mode(int fd); -struct hostent { - char *h_name; /* official name of host */ - char **h_aliases; /* alias list */ - int h_addrtype; /* host address type */ - int h_length; /* length of address */ - char **h_addr_list; /* list of addresses */ -}; -struct hostent *gethostbyname(const char *name); - struct timeval; int gettimeofday(struct timeval *t, void *tz); long int random(void); + +/* TI's libc does not have stat & friends, add them. */ +#ifdef __TI_COMPILER_VERSION__ + +#include <file.h> + +typedef unsigned int mode_t; +typedef size_t _off_t; +typedef long ssize_t; + +struct stat { + int st_ino; + mode_t st_mode; + int st_nlink; + time_t st_mtime; + off_t st_size; +}; + +int _stat(const char *pathname, struct stat *st); +#define stat(a, b) _stat(a, b) + +#define __S_IFMT 0170000 + +#define __S_IFDIR 0040000 +#define __S_IFCHR 0020000 +#define __S_IFREG 0100000 + +#define __S_ISTYPE(mode, mask) (((mode) & __S_IFMT) == (mask)) + +#define S_IFDIR __S_IFDIR +#define S_IFCHR __S_IFCHR +#define S_IFREG __S_IFREG +#define S_ISDIR(mode) __S_ISTYPE((mode), __S_IFDIR) +#define S_ISREG(mode) __S_ISTYPE((mode), __S_IFREG) + +/* As of 5.2.7, TI compiler does not support va_copy() yet. */ +#define va_copy(apc, ap) ((apc) = (ap)) + +#endif /* __TI_COMPILER_VERSION__ */ + + #ifdef CC3200_FS_SPIFFS #include <common/spiffs/spiffs.h> -- GitLab