00001
00012 #ifdef __MAIN__
00013 # define GLOBAL
00014 # define INIT(X) =X
00015 #else
00016 # define GLOBAL extern
00017 # define INIT(X)
00018 #endif
00019
00020 #define ERRNO errno
00021 #define SOCKET_ERROR -1
00022
00023 #define Sleep(X) sleep(X/1000)
00024
00025 #define closesocket close
00026
00027 #define O_BINARY 0
00028
00029 #define STRNCPY( DST, SRC, LEN ) \
00030 strncpy( DST, SRC, LEN-1 ); \
00031 DST[LEN-1] = 0;
00032
00033 typedef struct migl_handle {
00034 char *tag;
00035 int partial;
00036 mihl_pf_handle_get_t *pf_get;
00037 mihl_pf_handle_post_t *pf_post;
00038 char *filename;
00039 char *content_type;
00040 int close_connection;
00041 void *param;
00042 } mihl_handle_t;
00043
00044 struct mihl_ctx {
00045 char bind_addr[32];
00046 int port;
00047 int maxnb_cnx;
00048 mihl_log_level_t log_level;
00049 SOCKET sockfd;
00050 int read_buffer_maxlen;
00051 char *read_buffer;
00052 int nb_connexions;
00053 mihl_cnx_t *connexions;
00054 int nb_handles;
00055 mihl_handle_t *handles;
00056 };
00057
00058 struct mihl_cnx {
00059 mihl_ctx_t *ctx;
00060 int active;
00061 SOCKET sockfd;
00062 mihl_cnxinfo_t info;
00063 int keep_alive;
00064 int is_keep_alive;
00065 char *authorization;
00066 char *html_buffer;
00067 int html_buffer_len;
00068 int html_buffer_sz;
00069 };
00070
00071 #define MIN(A,B) (((A)<(B))?(A):(B))
00072
00073 #define FREE( pvar ) \
00074 if ( pvar ) { \
00075 free( pvar ); \
00076 pvar = NULL; \
00077 }