view th_args.h @ 722:4ca6a3b30fe8

Bump copyright years.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 02 Jan 2021 11:35:54 +0200
parents c1eed41a0215
children 29e44a58bc73
line wrap: on
line source

/*
 * Simple commandline argument processing functions
 * Programmed and designed by Matti 'ccr' Hamalainen
 * (C) Copyright 2002-2021 Tecnic Software productions (TNSP)
 *
 * Please read file 'COPYING' for information on license and distribution.
 */
/// @file
/// @brief Simple commandline argument processing functions
#ifndef TH_ARGS_H
#define TH_ARGS_H

#include "th_util.h"

#ifdef __cplusplus
extern "C" {
#endif

/** @def Option argument flags
 */
#define OPT_NONE             (0)    ///< Simple option with no arguments
#define OPT_ARGREQ           (1)    ///< Option requires an argument
#define OPT_ARGMASK          (1)    ///< Mask for option argument flags

/** @def Option processing flags
 */
#define OPTH_BAILOUT         0x0001 ///< Bail out on errors
#define OPTH_ONLY_OPTS       0x0010 ///< Handle only options
#define OPTH_ONLY_OTHER      0x0020 ///< Handle only "non-options"
#define OPTH_ONLY_MASK       0x00f0 ///< Mask


/** Option argument structure
 */
typedef struct
{
    int id;           ///< Option ID (should be unique for each option)
    char o_short;     ///< Short option name (one character, can be 0 for none)
    char *o_long;     ///< Long option name (can be NULL for none)
#ifdef TH_USE_OPT_ARG
    char *o_arg;      ///< Option argument name (can be NULL for none/default)
#endif
    char *desc;       ///< Option description
    int flags;        ///< Flags (see OPT_*)
} th_optarg;


BOOL     th_args_process(int argc, char *argv[],
         const th_optarg *opts, const int nopts,
         BOOL (*handle_option)(int id, char *, char *),
         BOOL (*handle_other)(char *), const int flags);

void     th_args_help(FILE *fh, const th_optarg *opts,
         const int nopts, const int flags, const int width);

void     th_print_wrap(FILE *fh, const int spad,
         const int rpad, const int width, const char *str);

#ifdef __cplusplus
}
#endif
#endif // TH_ARGS_H