File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / src / tool_msgs.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 10:01:16 2020 UTC (4 years, 10 months ago) by misho
Branches: curl, MAIN
CVS tags: v7_70_0p4, HEAD
curl

    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>