5 This API is the equivalent of a system call API and thereby
6 insulates its user from a GPL implementation.
11 /* -------------------------------------------------------------------------- */
13 PUBLIC CONSOLE k_console;
14 PUBLIC char* k_version;
16 PUBLIC void (*k_terminate)(void);
18 /* -------------------------------------------------------------------------- */
20 #define NAME_OF_MODULE_LOADED_FN "_module_loaded"
22 typedef int (*k_module_loaded_fn)(void);
24 /* -------------------------------------------------------------------------- */
26 #define NAME_OF_MODULE_TICK_FN "_module_tick"
28 typedef void (*k_module_tick_fn)(void);
30 /* -------------------------------------------------------------------------- */
32 #define NAME_OF_MODULE_EVENT_FN "_module_event"
34 typedef int (*k_module_event_fn)(void* data);
36 PUBLIC int k_event_post(char* module, void* data);
38 /* -------------------------------------------------------------------------- */
40 typedef void (*k_gl_reshape_event)(int width, int height);
41 typedef void (*k_gl_draw_event)(void);
42 typedef void (*k_gl_key_event)(unsigned char k, int down);
43 PUBLIC void k_gl_register_reshape(k_gl_reshape_event);
44 PUBLIC void k_gl_register_draw( k_gl_draw_event);
45 PUBLIC void k_gl_register_key( k_gl_key_event);
46 PUBLIC void gluxSwapBuffers(void);
48 /* -------------------------------------------------------------------------- */
50 #define CRLF "\015\012"
55 typedef struct k_channel k_channel;
56 typedef struct k_channel_priv k_channel_priv;
58 typedef int (*k_channel_event)(k_channel* chan,
62 struct k_channel{ struct k_channel* next;
68 k_channel_event rdcallback;
69 k_channel_event wrcallback;
72 struct in_addr clientip;
77 PUBLIC char* k_channel_name(char* type, char* ip, int port, char* other);
78 PUBLIC k_channel* k_channel_connect_name(char* chanm,
79 k_channel_event rdcallback,
80 k_channel_event wrcallback);
81 PUBLIC k_channel* k_channel_get_name(char* chanm);
82 PUBLIC void k_channel_show_all(void);
84 PUBLIC k_channel* k_channel_listen(char* name,
87 k_channel_event rdcallback,
88 k_channel_event wrcallback,
91 PUBLIC k_channel* k_channel_connect(char* name,
94 k_channel_event rdcallback,
95 k_channel_event wrcallback,
98 #define FREE_ON_SENT 1
99 PUBLIC k_channel* k_channel_send(k_channel* chan,
104 #define BUFFER_ALREADY_SET -1
105 #define BUFFER_FILLED 1
107 PUBLIC char* k_channel_chop_div( k_channel* chan, char* divider);
108 PUBLIC char* k_channel_chop_len( k_channel* chan, size_t size);
109 PUBLIC int k_channel_setbuf( k_channel* chan, char* rdbuffer, size_t size);
110 PUBLIC char* k_channel_getbuf( k_channel* chan);
112 PUBLIC void k_channel_close(k_channel* chan);
114 /* -------------------------------------------------------------------------- */
116 #define STAT_F 0100000
117 #define STAT_D 0040000
118 #define STAT_L 0120000
119 #define MAX_FILESIZE (1024*1024*1024)
121 #define USE_MALL MAX_FILESIZE
123 typedef struct k_stat{
130 typedef void (*k_file_event)(char* basedir,
137 PUBLIC void k_file_stat( char* basedir, char* filename,
138 k_file_event callback, void* context);
139 PUBLIC void k_file_read( char* basedir, char* filename, size_t msz, size_t size,
140 k_file_event callback, void* context);
141 PUBLIC void k_file_write(char* basedir, char* filename, char* data, size_t size,
142 k_file_event callback, void* context);
143 PUBLIC void k_dir_list( char* basedir, char* dirname,
144 char* pattern[], char* format[],
145 k_file_event callback, void* context);
146 PUBLIC int k_file_sync(char* data, size_t size);
148 /* -------------------------------------------------------------------------- */
150 typedef struct k_hashtable{ struct k_hashtable* next; } k_hashtable;
152 typedef void (*k_hashtable_apply_fn)(void* arg, char* key, void* val);
154 PUBLIC k_hashtable* k_hashtable_new(char* name, int ignorecase);
155 PUBLIC k_hashtable* k_hashtable_dup( k_hashtable* tab);
156 PUBLIC k_hashtable* k_hashtable_deep(k_hashtable* tab);
157 PUBLIC k_hashtable* k_hashtable_dip( k_hashtable* tab, char* includes[]);
158 PUBLIC void k_hashtable_merge( k_hashtable* tab, k_hashtable* tam);
159 PUBLIC void k_hashtable_set( k_hashtable* tab, char* key, void* val);
160 PUBLIC void k_hashtable_put( k_hashtable* tab, char* key, void* val);
161 PUBLIC void k_hashtable_put_dup(k_hashtable* tab, char* key, char* val);
162 PUBLIC void k_hashtable_put_int(k_hashtable* tab, char* key, int val);
163 PUBLIC void k_hashtable_sub( k_hashtable* tab, char* key, k_hashtable* sub);
164 PUBLIC void* k_hashtable_get( k_hashtable* tab, char* key);
165 PUBLIC char* k_hashtable_get_dup(k_hashtable* tab, char* key);
166 PUBLIC int k_hashtable_get_int(k_hashtable* tab, char* key);
167 PUBLIC int k_hashtable_is( k_hashtable* tab, char* key, char* val);
168 PUBLIC int k_hashtable_isi( k_hashtable* tab, char* key, char* val);
169 PUBLIC int k_hashtable_isn( k_hashtable* tab, char* key, char* val,size_t);
170 PUBLIC void k_hashtable_remove( k_hashtable* tab, char* key);
171 PUBLIC void* k_hashtable_extract(k_hashtable* tab, char* key);
172 PUBLIC void k_hashtable_apply( k_hashtable* tab, k_hashtable_apply_fn, void*);
173 PUBLIC void k_hashtable_show( k_hashtable* tab);
174 PUBLIC void k_hashtable_show_chars(k_hashtable* tab);
175 PUBLIC int k_hashtable_snprintf( k_hashtable* tab, char* buf, size_t size);
176 PUBLIC int k_hashtable_snprintf_i(k_hashtable* tab, char* buf, size_t size,
178 PUBLIC int k_hashtable_snprintf_x(k_hashtable* tab, char* buf, size_t size,
180 PUBLIC void k_hashtable_delete(k_hashtable* tab);
182 /* -------------------------------------------------------------------------- */
184 PUBLIC int k_string_matches_pattern(char* string, char* pattern);
185 PUBLIC int k_string_ends_with( char* string, char* postfix);
186 PUBLIC void k_string_url_decode( char* string);
188 /* -------------------------------------------------------------------------- */
190 PUBLIC char* k_time_to_rfc(time_t t);
191 PUBLIC char* k_time_to_rfc_relative(int plus);
192 PUBLIC time_t k_time_from_rfc(char* s);
193 PUBLIC void k_time_get_now(char* buf, size_t size, char* format);
195 /* -------------------------------------------------------------------------- */
197 PUBLIC void k_random_bytes(char* buf, size_t size);
199 /* -------------------------------------------------------------------------- */
201 PUBLIC void* k_malloc(size_t size);
202 PUBLIC void* k_realloc(void* o, size_t size);
203 PUBLIC char* k_strdup(char* s);
204 PUBLIC void* k_memdup(void* s, size_t size);
205 PUBLIC void k_free(void* o);
207 /* -------------------------------------------------------------------------- */
209 PUBLIC void k_log_out(char* format, ...);
210 PUBLIC void k_log_err(char* format, ...);
211 PUBLIC void k_fatal( char* format, ...);
213 /* -------------------------------------------------------------------------- */