GRASS 8 Programmer's Manual 8.6.0dev(2026)-8843f13794
Loading...
Searching...
No Matches
verbose.c
Go to the documentation of this file.
1/*!
2 * \file lib/gis/verbose.c
3 *
4 * \brief GIS Library - Subroutines to manage verbosity level
5 *
6 * Note that verbosity can be controlled by GRASS_VERBOSE environment
7 * variable.
8 *
9 * See relevant subroutines:
10 * - G_percent()
11 * - G_important_message()
12 * - G_message()
13 * - G_verbose_message()
14 * - G_warning()
15 * - G_fatal_error()
16 *
17 * SPDX-FileCopyrightText: 2001-2008, 2012-2013 GRASS Development Team
18 * SPDX-License-Identifier: GPL-2.0-or-later
19 *
20 * \author Jachym Cepicky - jachym.cepicky at gmail.com
21 */
22
23#include <stdlib.h>
24#include <grass/config.h>
25#include <grass/gis.h>
26
27/*! \brief Maximum verbosity level */
28#define MAXLEVEL 3
29/*! \brief Standard verbosity level */
30#define STDLEVEL 2
31/*! \brief Minimum verbosity level (quiet) */
32#define MINLEVEL 0
33
34static struct state {
35 int initialized;
36 int verbose; /* current verbosity level */
37} state;
38
39static struct state *st = &state;
40
41/*!
42 * \brief Get current verbosity level.
43 *
44 * Currently, there are 5 levels of verbosity (see return codes)
45 *
46 * \return -1 - nothing will be printed (also errors and warnings will be
47 * also discarded)
48 * \return 0 - nothing will be printed except of errors and warnings
49 * (G_fatal_error(), G_warning()). Triggered by <tt>--q</tt>
50 * or <tt>--quiet</tt> flag..
51 * \return 1 - only progress information (G_percent()) and important messages
52 * (G_important_message()) will be printed
53 * \return 2 - all messages (G_message() and G_important_message()) will be
54 * printed
55 * \return 3 - also verbose messages (G_verbose_message()) will be printed.
56 * Triggered by <tt>--v</tt> or <tt>--verbose</tt> flag.
57 */
58int G_verbose(void)
59{
60 const char *verstr; /* string for GRASS_VERBOSE content */
61
62 if (G_is_initialized(&(st->initialized)))
63 return st->verbose;
64
65 /* verbose not defined -> get it from env. */
66 verstr = getenv("GRASS_VERBOSE");
67 st->verbose = verstr ? atoi(verstr) : STDLEVEL;
68
69 G_initialize_done(&(st->initialized));
70
71 return st->verbose;
72}
73
74/*!
75 * \brief Get max verbosity level.
76 *
77 * \return max verbosity level
78 */
80{
81 return MAXLEVEL;
82}
83
84/*!
85 * \brief Get standard verbosity level.
86 *
87 * \return standard verbosity level
88 */
90{
91 return STDLEVEL;
92}
93
94/*!
95 * \brief Get min verbosity level.
96 *
97 * \return min verbosity level
98 */
100{
101 return MINLEVEL;
102}
103
104/*!
105 * \brief Set verbosity level.
106 *
107 * - -1 - nothing will be printed (also errors and warnings will be also
108 * discarded)
109 * - 0 - nothing will be printed except of errors and warnings
110 * (G_fatal_error(), G_warning()). Triggered by <tt>--q</tt> or
111 * <tt>--quiet</tt> flag.
112 * - 1 - only progress information (G_percent()) and important messages
113 * (G_important_message()) will be printed
114 * - 2 - all messages (G_message() and G_important_message()) will be printed
115 * - 3 - also verbose messages (G_verbose_message()) will be printed. Triggered
116 * by <tt>--v</tt> or <tt>--verbose</tt> flag.
117 *
118 * \param level new verbosity level (-1,0,1,2,3)
119 *
120 * \return 0 on invalid verbosity level (verbosity level untouched)
121 * \return 1 on success
122 */
123int G_set_verbose(int level)
124{
125 if (level == -1 || (level >= MINLEVEL && level <= MAXLEVEL)) {
126 st->verbose = level;
127 if (!G_is_initialized(&(st->initialized)))
128 G_initialize_done(&(st->initialized));
129
130 return 1;
131 }
132
133 return 0;
134}
int G_is_initialized(int *)
Definition counter.c:60
void G_initialize_done(int *)
Definition counter.c:77
struct state state
Definition parser.c:101
struct state * st
Definition parser.c:102
int G_verbose_max(void)
Get max verbosity level.
Definition verbose.c:79
#define STDLEVEL
Standard verbosity level.
Definition verbose.c:30
int G_set_verbose(int level)
Set verbosity level.
Definition verbose.c:123
#define MINLEVEL
Minimum verbosity level (quiet)
Definition verbose.c:32
#define MAXLEVEL
Maximum verbosity level.
Definition verbose.c:28
int G_verbose(void)
Get current verbosity level.
Definition verbose.c:58
int G_verbose_min(void)
Get min verbosity level.
Definition verbose.c:99
int G_verbose_std(void)
Get standard verbosity level.
Definition verbose.c:89