view scid/scid.h @ 55:38901547a76c

misc: improve error message
author David Demelier <markand@malikania.fr>
date Wed, 17 Aug 2022 11:13:36 +0200
parents 85c59fbf1407
children 3804a2ab60ec
line wrap: on
line source

/*
 * scid.h -- main scid file and configuration
 *
 * Copyright (c) 2021-2022 David Demelier <markand@malikania.fr>
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef SCID_H
#define SCID_H

/**
 * \file scid.h
 * \brief Main scid file and configuration.
 *
 * This module logs message with tag `scid`.
 */

#include <limits.h>

#define SCID_API_KEY_MAX (40 + 1)

/**
 * \struct scid
 * \brief Main scid structure for configuration.
 */
extern struct scid {
	char themedir[PATH_MAX];        /*!< Path to the theme. */
	char dbpath[PATH_MAX];          /*!< Path to the database file. */
	char apikey[SCID_API_KEY_MAX];  /*!< Maximum API key with NUL terminator. */
} scid /*! Global variable. */;

/**
 * \enum scid_init
 * \brief Bitmask of scid components to initialize
 */
enum scid_init {
	/**
	 * Init logs.
	 */
	SCID_INIT_LOG           = (1 << 0),

	/**
	 * Open database read/write.
	 */
	SCID_INIT_DATABASE      = (1 << 1),

	/**
	 * Open the theme.
	 */
	SCID_INIT_THEME         = (1 << 2)
};

/**
 * Initialize scid components.
 *
 * This function can be called multiple times as long as the component differ
 * between each call.
 *
 * It's recommended to init logs first to get proper logging if the underlying
 * component fails.
 *
 * \param components the components (as a bitmask)
 */
void
scid_init(enum scid_init);

/**
 * Cleanup scid.
 */
void
scid_finish(void);

#endif /* !SCID_H */