diff options
| author | Kirill Volinsky <mataes2007@gmail.com> | 2013-02-25 10:15:31 +0000 | 
|---|---|---|
| committer | Kirill Volinsky <mataes2007@gmail.com> | 2013-02-25 10:15:31 +0000 | 
| commit | dcce39da3e6f7485dca39950dfc835563de3c3ea (patch) | |
| tree | 0f0269e524cc83e41e4614e3c84abe3580ad2c9c /plugins/FTPFileYM/curl-7.29.0/docs/examples/debug.c | |
| parent | d395ad5aceb634b5ccfcb8d31b4b1574e557469e (diff) | |
1 step: libcurl static link
git-svn-id: http://svn.miranda-ng.org/main/trunk@3763 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/FTPFileYM/curl-7.29.0/docs/examples/debug.c')
| -rw-r--r-- | plugins/FTPFileYM/curl-7.29.0/docs/examples/debug.c | 147 | 
1 files changed, 147 insertions, 0 deletions
diff --git a/plugins/FTPFileYM/curl-7.29.0/docs/examples/debug.c b/plugins/FTPFileYM/curl-7.29.0/docs/examples/debug.c new file mode 100644 index 0000000000..36dd80d702 --- /dev/null +++ b/plugins/FTPFileYM/curl-7.29.0/docs/examples/debug.c @@ -0,0 +1,147 @@ +/*************************************************************************** + *                                  _   _ ____  _ + *  Project                     ___| | | |  _ \| | + *                             / __| | | | |_) | | + *                            | (__| |_| |  _ <| |___ + *                             \___|\___/|_| \_\_____| + * + * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, 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. + * + ***************************************************************************/ +#include <stdio.h> +#include <curl/curl.h> + +struct data { +  char trace_ascii; /* 1 or 0 */ +}; + +static +void dump(const char *text, +          FILE *stream, unsigned char *ptr, size_t size, +          char nohex) +{ +  size_t i; +  size_t c; + +  unsigned int width=0x10; + +  if(nohex) +    /* without the hex output, we can fit more on screen */ +    width = 0x40; + +  fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\n", +          text, (long)size, (long)size); + +  for(i=0; i<size; i+= width) { + +    fprintf(stream, "%4.4lx: ", (long)i); + +    if(!nohex) { +      /* hex not disabled, show it */ +      for(c = 0; c < width; c++) +        if(i+c < size) +          fprintf(stream, "%02x ", ptr[i+c]); +        else +          fputs("   ", stream); +    } + +    for(c = 0; (c < width) && (i+c < size); c++) { +      /* check for 0D0A; if found, skip past and start a new line of output */ +      if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) { +        i+=(c+2-width); +        break; +      } +      fprintf(stream, "%c", +              (ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.'); +      /* check again for 0D0A, to avoid an extra \n if it's at width */ +      if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) { +        i+=(c+3-width); +        break; +      } +    } +    fputc('\n', stream); /* newline */ +  } +  fflush(stream); +} + +static +int my_trace(CURL *handle, curl_infotype type, +             char *data, size_t size, +             void *userp) +{ +  struct data *config = (struct data *)userp; +  const char *text; +  (void)handle; /* prevent compiler warning */ + +  switch (type) { +  case CURLINFO_TEXT: +    fprintf(stderr, "== Info: %s", data); +  default: /* in case a new one is introduced to shock us */ +    return 0; + +  case CURLINFO_HEADER_OUT: +    text = "=> Send header"; +    break; +  case CURLINFO_DATA_OUT: +    text = "=> Send data"; +    break; +  case CURLINFO_SSL_DATA_OUT: +    text = "=> Send SSL data"; +    break; +  case CURLINFO_HEADER_IN: +    text = "<= Recv header"; +    break; +  case CURLINFO_DATA_IN: +    text = "<= Recv data"; +    break; +  case CURLINFO_SSL_DATA_IN: +    text = "<= Recv SSL data"; +    break; +  } + +  dump(text, stderr, (unsigned char *)data, size, config->trace_ascii); +  return 0; +} + +int main(void) +{ +  CURL *curl; +  CURLcode res; +  struct data config; + +  config.trace_ascii = 1; /* enable ascii tracing */ + +  curl = curl_easy_init(); +  if(curl) { +    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace); +    curl_easy_setopt(curl, CURLOPT_DEBUGDATA, &config); + +    /* the DEBUGFUNCTION has no effect until we enable VERBOSE */ +    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); + +    /* example.com is redirected, so we tell libcurl to follow redirection */ +    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + +    curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/"); +    res = curl_easy_perform(curl); +    /* Check for errors */ +    if(res != CURLE_OK) +      fprintf(stderr, "curl_easy_perform() failed: %s\n", +              curl_easy_strerror(res)); + +    /* always cleanup */ +    curl_easy_cleanup(curl); +  } +  return 0; +}  | 
