tool_msgs.c
Go to the documentation of this file.
1 /***************************************************************************
2  * _ _ ____ _
3  * Project ___| | | | _ \| |
4  * / __| | | | |_) | |
5  * | (__| |_| | _ <| |___
6  * \___|\___/|_| \_\_____|
7  *
8  * Copyright (C) 1998 - 2015, 2017, 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 
36 static void voutf(struct GlobalConfig *config,
37  const char *prefix,
38  const char *fmt,
39  va_list ap)
40 {
41  size_t width = (79 - strlen(prefix));
42  if(!config->mute) {
43  size_t len;
44  char *ptr;
45  char print_buffer[256];
46 
47  len = vsnprintf(print_buffer, sizeof(print_buffer), fmt, ap);
48 
49  ptr = print_buffer;
50  while(len > 0) {
51  fputs(prefix, config->errors);
52 
53  if(len > width) {
54  size_t cut = width-1;
55 
56  while(!ISSPACE(ptr[cut]) && cut) {
57  cut--;
58  }
59  if(0 == cut)
60  /* not a single cutting position was found, just cut it at the
61  max text width then! */
62  cut = width-1;
63 
64  (void)fwrite(ptr, cut + 1, 1, config->errors);
65  fputs("\n", config->errors);
66  ptr += cut + 1; /* skip the space too */
67  len -= cut;
68  }
69  else {
70  fputs(ptr, config->errors);
71  len = 0;
72  }
73  }
74  }
75 }
76 
77 /*
78  * Emit 'note' formatted message on configured 'errors' stream, if verbose was
79  * selected.
80  */
81 void notef(struct GlobalConfig *config, const char *fmt, ...)
82 {
83  va_list ap;
84  va_start(ap, fmt);
85  if(config->tracetype)
86  voutf(config, NOTE_PREFIX, fmt, ap);
87  va_end(ap);
88 }
89 
90 /*
91  * Emit warning formatted message on configured 'errors' stream unless
92  * mute (--silent) was selected.
93  */
94 
95 void warnf(struct GlobalConfig *config, const char *fmt, ...)
96 {
97  va_list ap;
98  va_start(ap, fmt);
99  voutf(config, WARN_PREFIX, fmt, ap);
100  va_end(ap);
101 }
102 /*
103  * Emit help formatted message on given stream.
104  */
105 
106 void helpf(FILE *errors, const char *fmt, ...)
107 {
108  va_list ap;
109  if(fmt) {
110  va_start(ap, fmt);
111  fputs("curl: ", errors); /* prefix it */
112  vfprintf(errors, fmt, ap);
113  va_end(ap);
114  }
115  fprintf(errors, "curl: try 'curl --help' "
116 #ifdef USE_MANUAL
117  "or 'curl --manual' "
118 #endif
119  "for more information\n");
120 }
121 
Definition: ws_ssl.c:25
#define USE_MANUAL
Definition: config-mac.h:34
static void voutf(struct GlobalConfig *config, const char *prefix, const char *fmt, va_list ap)
Definition: tool_msgs.c:36
UNITTEST_START char * ptr
Definition: unit1330.c:38
#define vsnprintf
Definition: curl_printf.h:45
void helpf(FILE *errors, const char *fmt,...)
Definition: tool_msgs.c:106
size_t len
Definition: curl_sasl.c:55
#define vfprintf
Definition: curl_printf.h:44
int width
Definition: unit1398.c:34
#define ISSPACE(x)
#define WARN_PREFIX
Definition: tool_msgs.c:33
#define fprintf
Definition: curl_printf.h:41
void notef(struct GlobalConfig *config, const char *fmt,...)
Definition: tool_msgs.c:81
void warnf(struct GlobalConfig *config, const char *fmt,...)
Definition: tool_msgs.c:95
#define NOTE_PREFIX
Definition: tool_msgs.c:34
size_t fwrite(const void *, size_t, size_t, FILE *)


rc_tagdetect_client
Author(s): Monika Florek-Jasinska , Raphael Schaller
autogenerated on Sat Feb 13 2021 03:42:16