From ba52e0a93bbdfa0430d12cda14d4ed71616b92a1 Mon Sep 17 00:00:00 2001 From: Guenter Knauf Date: Fri, 23 Sep 2011 01:22:18 +0200 Subject: Added a workaround for printing size_t. --- docs/examples/anyauthput.c | 3 ++- docs/examples/ftpupload.c | 3 ++- docs/examples/httpput.c | 3 ++- docs/examples/printf_macro.h | 45 ++++++++++++++++++++++++++++++++++++++++++++ docs/examples/sendrecv.c | 3 ++- 5 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 docs/examples/printf_macro.h (limited to 'docs') diff --git a/docs/examples/anyauthput.c b/docs/examples/anyauthput.c index 76fa15853..bab36c57b 100644 --- a/docs/examples/anyauthput.c +++ b/docs/examples/anyauthput.c @@ -41,6 +41,7 @@ #endif #include +#include "printf_macro.h" #if LIBCURL_VERSION_NUM < 0x070c03 #error "upgrade your libcurl to no less than 7.12.3" @@ -92,7 +93,7 @@ static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream) retcode = read(fd, ptr, size * nmemb); - fprintf(stderr, "*** We read %d bytes from file\n", retcode); + fprintf(stderr, "*** We read %" _FMT_SIZE_T " bytes from file\n", retcode); return retcode; } diff --git a/docs/examples/ftpupload.c b/docs/examples/ftpupload.c index 305734d5d..722acbc9e 100644 --- a/docs/examples/ftpupload.c +++ b/docs/examples/ftpupload.c @@ -32,6 +32,7 @@ #else #include #endif +#include "printf_macro.h" /* * This example shows an FTP upload, with a rename of the file just after @@ -56,7 +57,7 @@ static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream) by default internally */ size_t retcode = fread(ptr, size, nmemb, stream); - fprintf(stderr, "*** We read %d bytes from file\n", retcode); + fprintf(stderr, "*** We read %" _FMT_SIZE_T " bytes from file\n", retcode); return retcode; } diff --git a/docs/examples/httpput.c b/docs/examples/httpput.c index f78a74107..664c8e152 100644 --- a/docs/examples/httpput.c +++ b/docs/examples/httpput.c @@ -25,6 +25,7 @@ #include #include +#include "printf_macro.h" /* * This example shows a HTTP PUT operation. PUTs a file given as a command @@ -45,7 +46,7 @@ static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream) by default internally */ retcode = fread(ptr, size, nmemb, stream); - fprintf(stderr, "*** We read %d bytes from file\n", retcode); + fprintf(stderr, "*** We read %" _FMT_SIZE_T " bytes from file\n", retcode); return retcode; } diff --git a/docs/examples/printf_macro.h b/docs/examples/printf_macro.h new file mode 100644 index 000000000..9eed8f4c6 --- /dev/null +++ b/docs/examples/printf_macro.h @@ -0,0 +1,45 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) 1998 - 2011, Daniel Stenberg, , et al. + * + * This software is licensed as described in the file COPYING, which + * you should have received as part of this distribution. The terms + * are also available at http://curl.haxx.se/docs/copyright.html. + * + * You may opt to use, copy, modify, merge, publish, distribute and/or sell + * copies of the Software, and permit persons to whom the Software is + * furnished to do so, under the terms of the COPYING file. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ***************************************************************************/ +/* Simple hack trying to get a valid printf format string for size_t. + * If that fails for your platform you can define your own _FMT_SIZE_T, + * f.e.: -D_FMT_SIZE_T="zd" + */ +#ifndef _PRINTF_MACRO_H +#define _PRINTF_MACRO_H + +#ifndef _FMT_SIZE_T +#ifdef WIN32 +#define _FMT_SIZE_T "Id" +#else +/* +"zd" is a GNU extension to POSIX; so we dont use it for size_t but hack around +#define _FMT_SIZE_T "zd" +*/ +#ifdef __x86_64__ +#define _FMT_SIZE_T "lu" +#else +#define _FMT_SIZE_T "u" +#endif /* __x86_64__ */ +#endif /* WIN32 */ +#endif /* !_FMT_SIZE_T */ + +#endif /* !_PRINTF_MACRO_H */ diff --git a/docs/examples/sendrecv.c b/docs/examples/sendrecv.c index 0a49f2ff5..369601d16 100644 --- a/docs/examples/sendrecv.c +++ b/docs/examples/sendrecv.c @@ -24,6 +24,7 @@ #include #include #include +#include "printf_macro.h" /* Auxiliary function that waits on the socket. */ static int wait_on_socket(curl_socket_t sockfd, int for_recv, long timeout_ms) @@ -122,7 +123,7 @@ int main(void) if(CURLE_OK != res) break; - printf("Received %u bytes.\n", iolen); + printf("Received %" _FMT_SIZE_T " bytes.\n", iolen); } /* always cleanup */ -- cgit v1.2.3