Added alloc/stream options to fetcher test utility
authorMartin Willi <martin@revosec.ch>
Fri, 1 Apr 2011 09:40:18 +0000 (11:40 +0200)
committerMartin Willi <martin@revosec.ch>
Mon, 4 Apr 2011 06:48:27 +0000 (08:48 +0200)
scripts/fetch.c

index 57abce4..ad50d0c 100644 (file)
 #include <library.h>
 #include <debug.h>
 
+static int count = 0;
+
+static bool cb(void *userdata, chunk_t chunk)
+{
+       if (write(1, chunk.ptr, chunk.len) == chunk.len)
+       {
+               count++;
+               return TRUE;
+       }
+       return FALSE;
+}
+
 int main(int argc, char *argv[])
 {
        chunk_t res;
@@ -27,15 +39,29 @@ int main(int argc, char *argv[])
        atexit(library_deinit);
        lib->plugins->load(lib->plugins, NULL, PLUGINS);
 
-       if (argc != 2)
+       if (argc != 3 || (!streq(argv[1], "a") && !streq(argv[1], "s")))
+       {
+               fprintf(stderr, "usage: %s a|s <url>\n", argv[0]);
+               return 1;
+       }
+       if (streq(argv[1], "a"))
        {
-               fprintf(stderr, "usage: %s <url>\n", argv[0]);
+               if (lib->fetcher->fetch(lib->fetcher, argv[2], &res,
+                                                               FETCH_END) == SUCCESS)
+               {
+                       ignore_result(write(1, res.ptr, res.len));
+                       free(res.ptr);
+                       return 0;
+               }
        }
-       if (lib->fetcher->fetch(lib->fetcher, argv[1], &res, FETCH_END) == SUCCESS)
+       else
        {
-               ignore_result(write(1, res.ptr, res.len));
-               free(res.ptr);
-               return 0;
+               if (lib->fetcher->fetch(lib->fetcher, argv[2], NULL,
+                                                               FETCH_CALLBACK, cb, FETCH_END) == SUCCESS)
+               {
+                       fprintf(stderr, "received %d chunks\n", count);
+                       return 0;
+               }
        }
        return 1;
 }