Rev 4364 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4224 | sourcerer | 1 | #include |
2 | #define NULL 0 |
||
3 | #define __stdcall __attribute__((stdcall)) |
||
4 | |||
5 | extern int dll_load(); |
||
6 | extern int mem_Free(); |
||
7 | extern int mem_Alloc(); |
||
8 | extern int mem_ReAlloc(); |
||
9 | |||
10 | |||
11 | |||
12 | int kol_exit(){ |
||
13 | __menuet__sys_exit(); |
||
14 | } |
||
15 | |||
16 | |||
17 | |||
18 | struct http_msg { |
||
4821 | ashmew2 | 19 | // internal used by library, dont mess with these. |
4224 | sourcerer | 20 | unsigned int socket; |
21 | unsigned int flags; |
||
22 | unsigned int write_ptr; |
||
23 | unsigned int buffer_length; |
||
24 | unsigned int chunk_ptr; |
||
25 | unsigned int timestamp; |
||
4821 | ashmew2 | 26 | |
27 | // available for use. |
||
4224 | sourcerer | 28 | unsigned int status; |
29 | unsigned int header_length; |
||
4821 | ashmew2 | 30 | char *content_ptr; |
4224 | sourcerer | 31 | unsigned int content_length; |
32 | unsigned int content_received; |
||
4821 | ashmew2 | 33 | char header; //unknown size (actually, it's size is defined in header_length) |
4224 | sourcerer | 34 | }; |
35 | |||
36 | |||
37 | int (* __stdcall http_init)(); |
||
4821 | ashmew2 | 38 | // On the next line, we should tell the C compiler that this procedure actually returns a pointer. (to the http_msg struct) |
39 | unsigned int (* __stdcall http_get) (char * url, char * add_head); //yay, it's NOT uint, but hey, C is stubborn, and I'm dumb |
||
4224 | sourcerer | 40 | int (* __stdcall http_process) (unsigned int identifier); |
41 | void (* __stdcall http_free) (unsigned int identifier); |
||
42 | |||
43 | |||
44 | int HTTP_YAY(){ |
||
45 | asm volatile ("pusha\n\ |
||
46 | movl $mem_Alloc, %eax\n\ |
||
47 | movl $mem_Free, %ebx\n\ |
||
48 | movl $mem_ReAlloc, %ecx\n\ |
||
49 | movl $dll_load, %edx\n\ |
||
50 | movl http_init, %esi\n\ |
||
51 | call *%esi\n\ |
||
52 | popa"); |
||
53 | } |
||
54 | |||
55 | ///=========================== |
||
56 | |||
57 | void HTTP_INIT() |
||
58 | { |
||
59 | IMP_ENTRY *imp; |
||
60 | |||
61 | imp = __kolibri__cofflib_load("/sys/lib/http.obj"); |
||
62 | if (imp == NULL) |
||
63 | kol_exit(); |
||
64 | |||
65 | http_init = ( __stdcall int(*)()) |
||
66 | __kolibri__cofflib_getproc (imp, "lib_init"); |
||
67 | if (http_init == NULL) |
||
68 | kol_exit(); |
||
69 | |||
70 | http_get = ( __stdcall unsigned int (*)(char*)) |
||
71 | __kolibri__cofflib_getproc (imp, "get"); |
||
72 | if (http_get == NULL) |
||
73 | kol_exit(); |
||
74 | |||
75 | http_free = ( __stdcall void (*)(unsigned int)) |
||
76 | __kolibri__cofflib_getproc (imp, "free"); |
||
77 | if (http_free == NULL) |
||
78 | kol_exit(); |
||
79 | |||
80 | |||
81 | http_process = ( __stdcall int (*)(unsigned int)) |
||
82 | __kolibri__cofflib_getproc (imp, "process"); |
||
83 | if (http_process == NULL) |
||
84 | kol_exit(); |
||
85 | |||
86 | __menuet__debug_out("HTTP init...\n"); |
||
87 | HTTP_YAY(); |
||
88 | |||
89 | __menuet__debug_out("ok...\n"); |
||
90 | |||
91 | } |