limb 0.2.0

2024-01-09

autoopt_quiet(3)
limb manual
autoopt_quiet(3)

NAME

autoopt_quiet, autoopt_verbose, autoopt_log, autoopt_debug - automatic handling of some options

SYNOPSIS

#include <limb/autoopt.h>
AUTOOPT_QUIET(shortopt, longopt, flags, id)
AUTOOPT_VERBOSE(shortopt, longopt, flags, id)
AUTOOPT_LOG(shortopt, longopt, flags, id)
AUTOOPT_DEBUG(shortopt, longopt, flags, id)

int autoopt_quiet(const struct option *option, const char *arg)
int autoopt_verbose(const struct option *option, const char *arg)
int autoopt_log(const struct option *option, const char *arg)
int autoopt_debug(const struct option *option, const char *arg)

DESCRIPTION

All of those functions share the same signature, even though they may not be used. They are intended to be used during parsing of command-line options via parseopt(3) (or loadopt(3)).

As such, the option argument is expected to point to the option that is being parsed/processed. It is used in case of an error (e.g. invalid argument) in order to mention the option's name in the emitted warning.

All the functions also expected to have been defined through their corresponding macros, notably if they take a required argument, their argument arg is expected to point to a NUL-terminated string without checking (unlike with an optional argument).

The AUTOOPT_QUIET(), AUTOOPT_VERBOSE(), AUTOOPT_LOG() and AUTOOPT_DEBUG() macros can be used when defining an array of struct option to be passed to parseopt(3) or loadopt(3).

The autoopt_quiet() function will bump the output level (of obuffer_1, for stdout) down by one level. If already at OLVL_SILENT then nothing is done.

The autoopt_verbose() function will raise the output level (of obuffer_1, for stdout) up by one level. If already at OLVL_MAXIMUM then nothing is done.

Information

The obuffer_1 output buffer is used by many of the output.h(0) macros.

The autoopt_log() function parses arg as the destination to set up a log buffer, which will get all messages sent to either obuffer_1 or obuffer_2. Said parsing is done through autoopt_parse_buffer_dest(3).

The autoopt_debug() function raises the output level (of obuffer_1) to OLVL_DEBUG if no argument was specified. Else, it parses arg as the destination to set up a debug buffer, which will get all messages sent to either obuffer_1or obuffer_2. Said parsing is done through autoopt_parse_buffer_dest(3).

Information

Duplicating the output is done by creating 2 output buffers backed by the same buffer/file descriptor. One is attached to obuffer_1 whilst the other is attached to obuffer_2.

RETURN VALUE

The autoopt_quiet() and autoopt_verbose() functions always returns 1.

The autoopt_log() and autoopt_debug() functions return 1 on success. Otherwise they return 0 and set errno to indicate the error. A warning may be emitted in case of parsing error, see autoopt_parse_buffer_dest(3) for more.

ERRORS

The autoopt_log() and autoopt_debug() functions may fail if :

EADDRINUSE

A buffer was already set up using the same function.

The autoopt_log() and autoopt_debug() functions may also fail for the errors described for autoopt_parse_buffer_dest(3).

limb 0.1.0
2023-07-24
autoopt_quiet(3)