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 }