diff options
author | Daniel Stenberg <daniel@haxx.se> | 2012-12-11 23:31:45 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2012-12-11 23:31:45 +0100 |
commit | 50d7397ea54df79e403649d1e37d002eb52d268f (patch) | |
tree | 6b6eed95d3d4b69cd26e0b2377fa934d5ea99c09 /src/tool_msgs.c | |
parent | a3d6368c690b943e92082951e8c5fc3ef2d76c12 (diff) | |
parent | 4deb52831a071bc83cefb4871764281a5c32f902 (diff) | |
download | curl-multi-always.tar.gz |
Merge branch 'multi2' into multi-alwaysmulti-always
Diffstat (limited to 'src/tool_msgs.c')
-rw-r--r-- | src/tool_msgs.c | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/tool_msgs.c b/src/tool_msgs.c new file mode 100644 index 000000000..80fdf4e27 --- /dev/null +++ b/src/tool_msgs.c @@ -0,0 +1,100 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) 1998 - 2012, 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 "tool_setup.h" + +#define ENABLE_CURLX_PRINTF +/* use our own printf() functions */ +#include "curlx.h" + +#include "tool_cfgable.h" +#include "tool_msgs.h" + +#include "memdebug.h" /* keep this as LAST include */ + +#define WARN_PREFIX "Warning: " +#define WARN_TEXTWIDTH (79 - (int)strlen(WARN_PREFIX)) + +/* + * Emit warning formatted message on configured 'errors' stream unless + * mute (--silent) was selected. + */ + +void warnf(struct Configurable *config, const char *fmt, ...) +{ + if(!config->mute) { + va_list ap; + int len; + char *ptr; + char print_buffer[256]; + + va_start(ap, fmt); + len = vsnprintf(print_buffer, sizeof(print_buffer), fmt, ap); + va_end(ap); + + ptr = print_buffer; + while(len > 0) { + fputs(WARN_PREFIX, config->errors); + + if(len > (int)WARN_TEXTWIDTH) { + int cut = WARN_TEXTWIDTH-1; + + while(!ISSPACE(ptr[cut]) && cut) { + cut--; + } + if(0 == cut) + /* not a single cutting position was found, just cut it at the + max text width then! */ + cut = WARN_TEXTWIDTH-1; + + (void)fwrite(ptr, cut + 1, 1, config->errors); + fputs("\n", config->errors); + ptr += cut+1; /* skip the space too */ + len -= cut; + } + else { + fputs(ptr, config->errors); + len = 0; + } + } + } +} + +/* + * Emit help formatted message on given stream. + */ + +void helpf(FILE *errors, const char *fmt, ...) +{ + va_list ap; + if(fmt) { + va_start(ap, fmt); + fputs("curl: ", errors); /* prefix it */ + vfprintf(errors, fmt, ap); + va_end(ap); + } + fprintf(errors, "curl: try 'curl --help' " +#ifdef USE_MANUAL + "or 'curl --manual' " +#endif + "for more information\n"); +} + |