From 4b8a0f3f3dcf60dac2ce308ea08d413a535af29f Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 21:12:14 +0200 Subject: Adding upstream version 5.4.4. Signed-off-by: Daniel Baumann --- globals.h | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 globals.h (limited to 'globals.h') diff --git a/globals.h b/globals.h new file mode 100644 index 0000000..4af3670 --- /dev/null +++ b/globals.h @@ -0,0 +1,111 @@ +#ifndef REPREPRO_GLOBALS_H +#define REPREPRO_GLOBALS_H + +#include + +#ifdef AVOID_CHECKPROBLEMS +# define bool _Bool +# define true (1==1) +# define false (0==42) +/* avoid problems with __builtin_expect being long instead of boolean */ +# define __builtin_expect(a, b) (a) +# define __builtin_constant_p(a) (__builtin_constant_p(a) != 0) +#else +# if HAVE_STDBOOL_H +# include +# else +# if ! HAVE__BOOL +typedef int _Bool; +# endif +# define true (1==1) +# define false (0==42) +# endif +#endif + +#define xisspace(c) (isspace(c)!=0) +#define xisblank(c) (isblank(c)!=0) +#define xisdigit(c) (isdigit(c)!=0) + +#define READONLY true +#define READWRITE false + +#define ISSET(a, b) ((a & b) != 0) +#define NOTSET(a, b) ((a & b) == 0) + +/* sometimes something is initializes though the value is never used to + * work around some gcc uninitialized-use false-positives */ +#define SETBUTNOTUSED(a) a + +#ifdef SPLINT +#define UNUSED(a) /*@unused@*/ a +#define NORETURN +#define likely(a) (a) +#define unlikely(a) (a) +#else +#define likely(a) (!(__builtin_expect(!(a), false))) +#define unlikely(a) __builtin_expect(a, false) +#define NORETURN __attribute((noreturn)) +#ifndef NOUNUSEDATTRIBUTE +#define UNUSED(a) a __attribute((unused)) +#else +#define UNUSED(a) a +#endif +#endif + +#define ARRAYCOUNT(a) (sizeof(a)/sizeof(a[0])) + +enum config_option_owner { CONFIG_OWNER_DEFAULT=0, + CONFIG_OWNER_FILE, + CONFIG_OWNER_ENVIRONMENT, + CONFIG_OWNER_CMDLINE}; +#ifndef _D_EXACT_NAMLEN +#define _D_EXACT_NAMLEN(r) (strlen((r)->d_name)) +#endif +/* for systems defining NULL to 0 instead of the nicer (void*)0 */ +#define ENDOFARGUMENTS ((char *)0) + +/* global information */ +extern int verbose; +extern struct global_config { + const char *basedir; + const char *dbdir; + const char *outdir; + const char *distdir; + const char *confdir; + const char *methoddir; + const char *logdir; + const char *listdir; + const char *morguedir; + /* flags: */ + bool keepdirectories; + bool keeptemporaries; + bool onlysmalldeletes; + /* verbosity of downloading statistics */ + int showdownloadpercent; +} global; + +enum compression { c_none, c_gzip, c_bzip2, c_lzma, c_xz, c_lunzip, c_zstd, c_COUNT }; + +#define setzero(type, pointer) ({type *__var = pointer; memset(__var, 0, sizeof(type));}) +#define NEW(type) ((type *)malloc(sizeof(type))) +#define nNEW(num, type) ((type *)malloc((num) * sizeof(type))) +#define zNEW(type) ((type *)calloc(1, sizeof(type))) +#define nzNEW(num, type) ((type *)calloc(num, sizeof(type))) +#define arrayinsert(type, array, position, length) ({type *__var = array; memmove(__var + (position) + 1, __var + (position), sizeof(type) * ((length) - (position)));}) + +// strcmp2 behaves like strcmp, but allows both strings to be NULL +inline int strcmp2(const char *s1, const char *s2) { + if (s1 == NULL || s2 == NULL) { + if (s1 == NULL && s2 == NULL) { + return 0; + } else if (s1 == NULL) { + return -1; + } else { + return 1; + } + } else { + return strcmp(s1, s2); + } +} + +#endif -- cgit v1.2.3