X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilchttp%2Fsilchttpphp.c;h=d1cb24e09d968ef098c3c388d6b2dd651eeb8aa6;hp=02f95e2c89350b30e0faa51416e9872faa109bf9;hb=08e0dddd6750b245da53e2bc3528d0b5a6d57e8b;hpb=7df5e78201d7eb15ff5ecdc378af70d7d1ea1453 diff --git a/lib/silchttp/silchttpphp.c b/lib/silchttp/silchttpphp.c index 02f95e2c..d1cb24e0 100644 --- a/lib/silchttp/silchttpphp.c +++ b/lib/silchttp/silchttpphp.c @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 2006 Pekka Riikonen + Copyright (C) 2006 - 2007 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ SilcBuffer silc_http_php(char *php_data) return NULL; #else memset(tmp, 0, sizeof(tmp)); - snprintf(tmp, sizeof(tmp) - 1, "/tmp/silchttpphpXXXXXX"); + silc_snprintf(tmp, sizeof(tmp) - 1, "/tmp/silchttpphpXXXXXX"); if (mkstemp(tmp) == -1) return NULL; name = tmp; @@ -61,12 +61,12 @@ SilcBuffer silc_http_php_file(const char *filename) SilcBuffer ret = NULL; unsigned char tmp[8192]; FILE *fd; - int len, off = 0; + int len; SILC_LOG_DEBUG(("Executing PHP")); memset(tmp, 0, sizeof(tmp)); - snprintf(tmp, sizeof(tmp) - 1, "php -f %s", filename); + silc_snprintf(tmp, sizeof(tmp) - 1, "php -f %s", filename); #ifdef SILC_WIN32 fd = _popen(tmp, "r"); @@ -81,7 +81,11 @@ SilcBuffer silc_http_php_file(const char *filename) len = fread(tmp, 1, sizeof(tmp), fd); if (len < 0) { silc_buffer_free(ret); - pclose(fd); +#ifdef SILC_WIN32 + _pclose(fd); +#else + pclose(fd); +#endif /* SILC_WIN32 */ return NULL; } @@ -89,21 +93,29 @@ SilcBuffer silc_http_php_file(const char *filename) if (!ret) { ret = silc_buffer_alloc(0); if (!ret) { - pclose(fd); +#ifdef SILC_WIN32 + _pclose(fd); +#else + pclose(fd); +#endif /* SILC_WIN32 */ return NULL; } } silc_buffer_format(ret, - SILC_STR_OFFSET(off), - SILC_STR_UI_XNSTRING(tmp, len), + SILC_STR_ADVANCE, + SILC_STR_DATA(tmp, len), SILC_STR_END); - off += len; } } while (len); - if (ret) - silc_buffer_strformat(ret, "\0", SILC_STRFMT_END); + if (ret) { + silc_buffer_format(ret, + SILC_STR_ADVANCE, + SILC_STR_DATA('\0', 1), + SILC_STR_END); + silc_buffer_push(ret, silc_buffer_truelen(ret)); + } return ret; }