X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilchttp%2Fsilchttpphp.c;h=d1cb24e09d968ef098c3c388d6b2dd651eeb8aa6;hp=f68cc8c3ee9fe4b0bcbf05dad93282ef62062477;hb=08e0dddd6750b245da53e2bc3528d0b5a6d57e8b;hpb=83388bbe25d3d560fcc2e71db4904a09e69a36df diff --git a/lib/silchttp/silchttpphp.c b/lib/silchttp/silchttpphp.c index f68cc8c3..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,27 +81,41 @@ 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; } if (len) { - ret = silc_buffer_alloc(0); if (!ret) { - pclose(fd); - return NULL; + ret = silc_buffer_alloc(0); + if (!ret) { +#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; }