From: Andrea Zagli Date: Sat, 20 Jun 2015 11:53:01 +0000 (+0200) Subject: Use of GIO for ZakCgi::get_stdin. X-Git-Tag: v0.0.1~32 X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=8ce1d7c117fcd46c964a6ed91af896a346469d83;p=libzakcgi Use of GIO for ZakCgi::get_stdin. --- diff --git a/configure.ac b/configure.ac index 3a2b52f..df737bf 100644 --- a/configure.ac +++ b/configure.ac @@ -31,7 +31,8 @@ AC_PROG_RANLIB # Checks for libraries. PKG_CHECK_MODULES(ZAKCGI, [glib-2.0 >= 2.36 - gobject-2.0 >= 2.36]) + gobject-2.0 >= 2.36 + gio-unix-2.0 >= 2.36]) AC_SUBST(ZAKCGI_CFLAGS) AC_SUBST(ZAKCGI_LIBS) diff --git a/src/main.c b/src/main.c index 7732373..491ac4e 100644 --- a/src/main.c +++ b/src/main.c @@ -22,6 +22,8 @@ #include +#include + #include "main.h" static void zak_cgi_main_class_init (ZakCgiMainClass *class); @@ -212,16 +214,31 @@ gchar { gchar *ret; + const gchar *env; guint l; + GError *error; + GInputStream *istream; + ret = NULL; - l = strtol (g_getenv ("CONTENT_LENGTH"), NULL, 10); - if (l > 0) + env = g_getenv ("CONTENT_LENGTH"); + if (env != NULL) { - ret = g_malloc (l + 1); - fread (ret, l, 1, stdin); - ret[l] = '\0'; + l = strtol (env, NULL, 10); + if (l > 0) + { + error = NULL; + + ret = g_malloc0 (l + 1); + istream = g_unix_input_stream_new (0, TRUE); + + g_input_stream_read (istream, + ret, + l, + NULL, + &error); + } } return ret;