Annotation of embedaddon/curl/src/tool_msgs.c, revision 1.1
1.1 ! misho 1: /***************************************************************************
! 2: * _ _ ____ _
! 3: * Project ___| | | | _ \| |
! 4: * / __| | | | |_) | |
! 5: * | (__| |_| | _ <| |___
! 6: * \___|\___/|_| \_\_____|
! 7: *
! 8: * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
! 9: *
! 10: * This software is licensed as described in the file COPYING, which
! 11: * you should have received as part of this distribution. The terms
! 12: * are also available at https://curl.haxx.se/docs/copyright.html.
! 13: *
! 14: * You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 15: * copies of the Software, and permit persons to whom the Software is
! 16: * furnished to do so, under the terms of the COPYING file.
! 17: *
! 18: * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 19: * KIND, either express or implied.
! 20: *
! 21: ***************************************************************************/
! 22: #include "tool_setup.h"
! 23:
! 24: #define ENABLE_CURLX_PRINTF
! 25: /* use our own printf() functions */
! 26: #include "curlx.h"
! 27:
! 28: #include "tool_cfgable.h"
! 29: #include "tool_msgs.h"
! 30:
! 31: #include "memdebug.h" /* keep this as LAST include */
! 32:
! 33: #define WARN_PREFIX "Warning: "
! 34: #define NOTE_PREFIX "Note: "
! 35: #define ERROR_PREFIX "curl: "
! 36:
! 37: static void voutf(struct GlobalConfig *config,
! 38: const char *prefix,
! 39: const char *fmt,
! 40: va_list ap)
! 41: {
! 42: size_t width = (79 - strlen(prefix));
! 43: if(!config->mute) {
! 44: size_t len;
! 45: char *ptr;
! 46: char *print_buffer;
! 47:
! 48: print_buffer = curlx_mvaprintf(fmt, ap);
! 49: if(!print_buffer)
! 50: return;
! 51: len = strlen(print_buffer);
! 52:
! 53: ptr = print_buffer;
! 54: while(len > 0) {
! 55: fputs(prefix, config->errors);
! 56:
! 57: if(len > width) {
! 58: size_t cut = width-1;
! 59:
! 60: while(!ISSPACE(ptr[cut]) && cut) {
! 61: cut--;
! 62: }
! 63: if(0 == cut)
! 64: /* not a single cutting position was found, just cut it at the
! 65: max text width then! */
! 66: cut = width-1;
! 67:
! 68: (void)fwrite(ptr, cut + 1, 1, config->errors);
! 69: fputs("\n", config->errors);
! 70: ptr += cut + 1; /* skip the space too */
! 71: len -= cut + 1;
! 72: }
! 73: else {
! 74: fputs(ptr, config->errors);
! 75: len = 0;
! 76: }
! 77: }
! 78: curl_free(print_buffer);
! 79: }
! 80: }
! 81:
! 82: /*
! 83: * Emit 'note' formatted message on configured 'errors' stream, if verbose was
! 84: * selected.
! 85: */
! 86: void notef(struct GlobalConfig *config, const char *fmt, ...)
! 87: {
! 88: va_list ap;
! 89: va_start(ap, fmt);
! 90: if(config->tracetype)
! 91: voutf(config, NOTE_PREFIX, fmt, ap);
! 92: va_end(ap);
! 93: }
! 94:
! 95: /*
! 96: * Emit warning formatted message on configured 'errors' stream unless
! 97: * mute (--silent) was selected.
! 98: */
! 99:
! 100: void warnf(struct GlobalConfig *config, const char *fmt, ...)
! 101: {
! 102: va_list ap;
! 103: va_start(ap, fmt);
! 104: voutf(config, WARN_PREFIX, fmt, ap);
! 105: va_end(ap);
! 106: }
! 107: /*
! 108: * Emit help formatted message on given stream. This is for errors with or
! 109: * related to command line arguments.
! 110: */
! 111: void helpf(FILE *errors, const char *fmt, ...)
! 112: {
! 113: if(fmt) {
! 114: va_list ap;
! 115: va_start(ap, fmt);
! 116: fputs("curl: ", errors); /* prefix it */
! 117: vfprintf(errors, fmt, ap);
! 118: va_end(ap);
! 119: }
! 120: fprintf(errors, "curl: try 'curl --help' "
! 121: #ifdef USE_MANUAL
! 122: "or 'curl --manual' "
! 123: #endif
! 124: "for more information\n");
! 125: }
! 126:
! 127: /*
! 128: * Emit error message on error stream if not muted. When errors are not tied
! 129: * to command line arguments, use helpf() for such errors.
! 130: */
! 131: void errorf(struct GlobalConfig *config, const char *fmt, ...)
! 132: {
! 133: if(!config->mute) {
! 134: va_list ap;
! 135: va_start(ap, fmt);
! 136: voutf(config, ERROR_PREFIX, fmt, ap);
! 137: va_end(ap);
! 138: }
! 139: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>