]> Nishi Git Mirror - libw3.git/commitdiff
W3_Set_Read_Size
authornishi <nishi@d27a3e52-49c5-7645-884c-6793ebffc270>
Mon, 22 Jan 2024 03:03:27 +0000 (03:03 +0000)
committernishi <nishi@d27a3e52-49c5-7645-884c-6793ebffc270>
Mon, 22 Jan 2024 03:03:27 +0000 (03:03 +0000)
git-svn-id: file:///raid/svn-main/nishi-libw3/trunk@49 d27a3e52-49c5-7645-884c-6793ebffc270

Example/fetch.c
Library/Core.c
Library/File.c
Library/HTTP.c
Library/W3Core.h
W3Version.h.p

index 4e5c4ea3da99e95c846fe9b6f1ca67c35e1aed3a..4728b182f720f6e6deab2f7ed0e67a56ea6eab05 100644 (file)
@@ -38,6 +38,7 @@ int main(int argc, char** argv){
        W3_Library_Init();
        struct W3* w3 = W3_Create("http", argv[1], 80);
        if(w3 != NULL){
+               W3_Set_Read_Size(w3, 1024);
                W3_Set_Method(w3, argv[3] == NULL ? "GET" : argv[3]);
                W3_Set_Path(w3, argv[2]);
                W3_On(w3, "status", (void*)status);
index 83ff326e5e791547c1fe60639deb7fd65c2d3906..8c61d0ad356b36c4e46a06096dfa8f70b0e7e171 100644 (file)
@@ -58,6 +58,7 @@ struct W3* W3_Create(const char* protocol, const char* hostname, int port){
        w3->headers = NULL;
        w3->size = 0;
        w3->data = NULL;
+       w3->readsize = 512;
        w3->protocol = __W3_Strdup(protocol);
        if(strcmp(protocol, "file") != 0){
                w3->hostname = __W3_Strdup(hostname);
@@ -77,6 +78,10 @@ struct W3* W3_Create(const char* protocol, const char* hostname, int port){
        return w3;
 }
 
+void W3_Set_Read_Size(struct W3* w3, size_t size){
+       w3->readsize = size;
+}
+
 void W3_Set_Method(struct W3* w3, const char* method){
        if(w3->method != NULL) free(w3->method);
        w3->method = __W3_Strdup(method);
index 996e5d79ffff109cac7d8c769219f64d7dcc9d5f..29a6b33a5a6c43a2829d76753ce2ee49964eba47 100644 (file)
@@ -23,9 +23,9 @@ void __W3_File_Request(struct W3* w3){
                        void(*func)(struct W3*, int) = (void(*)(struct W3*, int))funcptr;
                        func(w3, LIBW3_FILE_FOUND);
                }
-               char* buf = malloc(512);
+               char* buf = malloc(w3->readsize);
                while(true){
-                       int len = fread(buf, 1, 512, f);
+                       int len = fread(buf, 1, w3->readsize, f);
                        void* funcptr = __W3_Get_Event(w3, "data");
                        if(funcptr != NULL){
                                void(*func)(struct W3*, char*, size_t) = (void(*)(struct W3*, char*, size_t))funcptr;
index bfa87aaa79293ad494ca63e97b17c5a8e82e1056..1795aff80c80090306db894868b55e13ce50bd44 100644 (file)
@@ -58,14 +58,14 @@ void __W3_HTTP_Request(struct W3* w3){
        if(w3->data != NULL){
                __W3_Auto_Write(w3, w3->data, w3->size);
        }
-       char* buf = malloc(512);
+       char* buf = malloc(w3->readsize);
        char* statusbuf = malloc(1);
        statusbuf[0] = 0;
        char* headerbuf = malloc(1);
        headerbuf[0] = 0;
        int phase = 0;
        while(true){
-               int l = __W3_Auto_Read(w3, buf, 512);
+               int l = __W3_Auto_Read(w3, buf, w3->readsize);
                if(l <= 0) break;
                int i;
                for(i = 0; i < l; i++){
index b4220399242df9d8cc0b91ee0f6ce1dade51c2a5..305fb6c1b2871cd495027b1de6b5962a7d566719 100644 (file)
@@ -12,19 +12,20 @@ extern "C" {
 #include "W3Version.h"
 
 struct W3 {
-       int sock;       /* Socket */
-       char* protocol; /* As you can read from its name */
-       char* method;   /* Used in HTTP */
-       char* path;     /* As you can read from its name */
-       char* hostname; /* As you can read from its name */
-       char** headers; /* As you can read from its name */
-       void** events;  /* As you can read from its name */ 
-       int status;     /* As you can read from its name */ 
-       char* data;     /* As you can read from its name */
-       size_t size;    /* Size of the data */
+       int sock;               /* Socket */
+       char* protocol;         /* As you can read from its name */
+       char* method;           /* Used in HTTP */
+       char* path;             /* As you can read from its name */
+       char* hostname;         /* As you can read from its name */
+       char** headers;         /* As you can read from its name */
+       void** events;          /* As you can read from its name */ 
+       int status;             /* As you can read from its name */ 
+       char* data;             /* As you can read from its name */
+       size_t size;            /* Size of the data */
+       size_t readsize;        /* Read buffer size, default is 512 */
 #ifdef SSL_SUPPORT
-       void* ssl;      /* Actually SSL*, NULL if no SSL */
-       void* ssl_ctx;  /* Actually SSL_CTX* */
+       void* ssl;              /* Actually SSL*, NULL if no SSL */
+       void* ssl_ctx;          /* Actually SSL_CTX* */
 #endif
 };
 
@@ -38,6 +39,7 @@ void W3_Set_Header(struct W3* w3, const char* key, const char* value);                /* Set t
 void W3_Free(struct W3* w3);                                                   /* Free the struct */
 void W3_On(struct W3* w3, const char* eventname, void* func);                  /* Set Handlers */
 void W3_Set_Data(struct W3* w3, char* data, size_t size);                      /* Send the data - LibW3 won't free the data */
+void W3_Set_Read_Size(struct W3* w3, size_t size);                             /* Change the read buffer size */
 
 #ifdef __cplusplus
 }
index f3388c8674efb8dfed6cd295bb7eac3729cef84e..70a6689e358ef98d1cd6f3bcaa03de01e1b6eef2 100644 (file)
@@ -6,7 +6,7 @@
 extern "C" {
 #endif
 
-#define LIBW3_VERSION "1.2" \
+#define LIBW3_VERSION "1.2A" \
 SUFFIX
 
 #ifdef __cplusplus