X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=common-src%2Famanda.h;h=ec0653316e75bd3f0c0489bc906c3fcab8c2202b;hb=d97071000e65ce0c52c9043046acdc1c125397b0;hp=d03d8bc8605373b586ef0ad85c0a5c643562e803;hpb=e442edb4d5816c4ad107ad9e71164f845eba70ad;p=debian%2Famanda diff --git a/common-src/amanda.h b/common-src/amanda.h index d03d8bc..ec06533 100644 --- a/common-src/amanda.h +++ b/common-src/amanda.h @@ -31,16 +31,16 @@ #ifndef AMANDA_H #define AMANDA_H -#include -#include - -#include "amflock.h" - #ifdef HAVE_CONFIG_H /* use a relative path here to avoid conflicting with Perl's config.h. */ #include "../config/config.h" #endif +#include +#include + +#include "amflock.h" + /* * Force large file source even if configure guesses wrong. */ @@ -71,9 +71,6 @@ * Also, some systems put key files in different places, so by including * everything here the rest of the system is isolated from such things. */ -#ifdef HAVE_ALLOCA_H -# include -#endif /* from the autoconf documentation */ #ifdef HAVE_DIRENT_H @@ -298,10 +295,6 @@ struct iovec { #include #include -#if !defined(CONFIGURE_TEST) -# include "amanda-int.h" -#endif - #ifdef HAVE_ARPA_INET_H #include #endif @@ -314,121 +307,6 @@ struct iovec { #define INET_ADDRSTRLEN 16 #endif -/* Calculate the length of the data in a struct sockaddr_storage. - * THIS IS A HACK. - * - * To be truly portable, the length of an address should be passed - * in a companion variable. When such lengths are available - * everywhere they are needed, this macro should be removed. - */ -#ifdef WORKING_IPV6 -# define SS_LEN(ss) (((struct sockaddr *)(ss))->sa_family==AF_INET6?sizeof(struct sockaddr_in6):sizeof(struct sockaddr_in)) -#else -# define SS_LEN(ss) (sizeof(struct sockaddr_in)) -#endif - - -/* AF_NATIVE is the "best" address family we support, backward compatible - * through to AF_INET. - */ -#ifdef WORKING_IPV6 -#define AF_NATIVE AF_INET6 -#else -#define AF_NATIVE AF_INET -#endif - -/* SS_INIT(ss, family) initializes ss to all zeroes (as directed by RFC), - * and sets its ss_family as specified - */ -#define SS_INIT(ss, family) do { \ - memset((ss), 0, sizeof(*(ss))); \ - (ss)->ss_family = (family); \ -} while (0); - -/* SS_SET_INADDR_ANY(ss) sets ss to the family-appropriate equivalent of - * INADDR_ANY, a wildcard address and port. - */ -#ifdef WORKING_IPV6 -#define SS_SET_INADDR_ANY(ss) do { \ - switch ((ss)->ss_family) { \ - case AF_INET6: \ - ((struct sockaddr_in6 *)(ss))->sin6_flowinfo = 0; \ - ((struct sockaddr_in6 *)(ss))->sin6_addr = in6addr_any; \ - break; \ - case AF_INET: \ - ((struct sockaddr_in *)(ss))->sin_addr.s_addr = INADDR_ANY; \ - break; \ - } \ -} while (0); -#else -#define SS_SET_INADDR_ANY(ss) do { \ - ((struct sockaddr_in *)(ss))->sin_addr.s_addr = INADDR_ANY; \ -} while (0); -#endif - -/* Set/get the port in a sockaddr_storage that already has an family */ -#ifdef WORKING_IPV6 -#define SS_SET_PORT(ss, port) \ -switch ((ss)->ss_family) { \ - case AF_INET: \ - ((struct sockaddr_in *)(ss))->sin_port = (in_port_t)htons((port)); \ - break; \ - case AF_INET6: \ - ((struct sockaddr_in6 *)(ss))->sin6_port = (in_port_t)htons((port)); \ - break; \ - default: assert(0); \ -} -#else -#define SS_SET_PORT(ss, port) \ - ((struct sockaddr_in *)(ss))->sin_port = (in_port_t)htons((port)); -#endif - -#ifdef WORKING_IPV6 -#define SS_GET_PORT(ss) (ntohs( \ - (ss)->ss_family == AF_INET6? \ - ((struct sockaddr_in6 *)(ss))->sin6_port \ - :((struct sockaddr_in *)(ss))->sin_port)) -#else -#define SS_GET_PORT(ss) (ntohs( \ - ((struct sockaddr_in *)(ss))->sin_port)) -#endif - -/* - * The dbmalloc package comes from: - * - * http://www.clark.net/pub/dickey/dbmalloc/dbmalloc.tar.gz - * - * or - * - * ftp://gatekeeper.dec.com/pub/usenet/comp.sources.misc/volume32/dbmalloc/ - * - * The following functions are sprinkled through the code, but are - * disabled unless USE_DBMALLOC is defined: - * - * malloc_enter(char *) -- stack trace for malloc reports - * malloc_leave(char *) -- stack trace for malloc reports - * malloc_mark(void *) -- mark an area as never to be free-d - * malloc_chain_check(void) -- check the malloc area now - * malloc_dump(int fd) -- report the malloc contents to a file descriptor - * malloc_list(int fd, ulong a, ulong b) -- report memory activated since - * history stamp a that is still active as of stamp b (leak check) - * malloc_inuse(ulong *h) -- create history stamp h and return the amount - * of memory currently in use. - */ - -#ifdef USE_DBMALLOC -#include "dbmalloc.h" -#else -#define malloc_enter(func) ((void)0) -#define malloc_leave(func) ((void)0) -#define malloc_mark(ptr) ((void)0) -#define malloc_chain_check() ((void)0) -#define malloc_dump(fd) ((void)0) -#define malloc_list(a,b,c) ((void)0) -#define malloc_inuse(hist) (*(hist) = 0, 0) -#define dbmalloc_caller_loc(x,y) (x) -#endif - #if !defined(HAVE_SIGACTION) && defined(HAVE_SIGVEC) /* quick'n'dirty hack for NextStep31 */ # define sa_flags sv_flags @@ -494,76 +372,6 @@ extern int errno; #define stringize(x) #x #define stringconcat(x, y) x ## y -/* - * So that we can use GNUC attributes (such as to get -Wall warnings - * for printf-like functions). Only do this in gcc 2.7 or later ... - * it may work on earlier stuff, but why chance it. - */ -#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || defined(S_SPLINT_S) || defined(LINT) || defined(__lint) -#undef __attribute__ -#define __attribute__(__x) -#endif - -/* - * assertions, but call error() instead of abort - */ -#ifndef ASSERTIONS - -#define assert(exp) ((void)0) - -#else /* ASSERTIONS */ - -#define assert(exp) do { \ - if (!(exp)) { \ - onerror(abort); \ - error("assert: %s false, file %s, line %d", \ - stringize(exp), __FILE__, __LINE__); \ - /*NOTREACHED*/ \ - } \ -} while (0) - -#endif /* ASSERTIONS */ - -/* - * print debug output, else compile to nothing. - */ - -#ifdef DEBUG_CODE /* { */ -# define dbopen(a) debug_open(a) -# define dbreopen(a,b) debug_reopen(a,b) -# define dbrename(a,b) debug_rename(a,b) -# define dbclose() debug_close() -# define dbprintf(p) (debug_printf p) -# define dbfd() debug_fd() -# define dbfp() debug_fp() -# define dbfn() debug_fn() - -extern void debug_open(char *subdir); -extern void debug_reopen(char *file, char *notation); -extern void debug_rename(char *config, char *subdir); -extern void debug_close(void); -extern void debug_printf(const char *format, ...) - __attribute__ ((format (printf, 1, 2))); -extern int debug_fd(void); -extern FILE * debug_fp(void); -extern char * debug_fn(void); -extern void set_debug_prefix_pid(pid_t); -extern char *debug_prefix(char *); -extern char *debug_prefix_time(char *); -#else /* }{ */ -# define dbopen(a) -# define dbreopen(a,b) -# define dbrename(a,b) -# define dbclose() -# define dbprintf(p) -# define dbfd() (-1) -# define dbfp() NULL -# define dbfn() NULL -# define set_debug_prefix_pid(x) -# define debug_prefix(x) get_pname() -# define debug_prefix_time(x) get_pname() -#endif /* } */ - /* amanda #days calculation, with roundoff */ #define SECS_PER_DAY (24*60*60) @@ -593,11 +401,6 @@ extern char *debug_prefix_time(char *); #define DISK_BLOCK_KB 32 #define DISK_BLOCK_BYTES (DISK_BLOCK_KB * 1024) -/* Maximum size of a tape block */ -/* MAX_TAPE_BLOCK_KB is defined in config.h */ -/* by configure --with-maxtapeblocksize */ -#define MAX_TAPE_BLOCK_BYTES (MAX_TAPE_BLOCK_KB*1024) - /* Maximum length of tape label, plus one for null-terminator. */ #define MAX_TAPE_LABEL_LEN (10240) #define MAX_TAPE_LABEL_BUF (MAX_TAPE_LABEL_LEN+1) @@ -683,6 +486,7 @@ char * validate_regexp(const char *regex); char * validate_glob(const char *glob); char * clean_regex(const char *regex); int match(const char *regex, const char *str); +int match_no_newline(const char *regex, const char *str); int match_glob(const char *glob, const char *str); char * glob_to_regex(const char *glob); int match_tar(const char *glob, const char *str); @@ -814,15 +618,15 @@ time_t unctime(char *timestr); #define NUM_STR_SIZE 128 /* a generic number buffer size */ #define skip_whitespace(ptr,c) do { \ - while((c) != '\n' && isspace((int)c)) (c) = *(ptr)++; \ + while((c) != '\n' && g_ascii_isspace((int)c)) (c) = *(ptr)++; \ } while(0) #define skip_non_whitespace(ptr,c) do { \ - while((c) != '\0' && !isspace((int)c)) (c) = *(ptr)++; \ + while((c) != '\0' && !g_ascii_isspace((int)c)) (c) = *(ptr)++; \ } while(0) #define skip_non_whitespace_cs(ptr,c) do { \ - while((c) != '\0' && (c) != '#' && !isspace((int)c)) (c) = *(ptr)++;\ + while((c) != '\0' && (c) != '#' && !g_ascii_isspace((int)c)) (c) = *(ptr)++;\ } while(0) #define skip_non_integer(ptr,c) do { \ @@ -836,11 +640,12 @@ time_t unctime(char *timestr); #define skip_quoted_string(ptr, c) do { \ int iq = 0; \ - while (((c) != '\0') && !((iq == 0) && isspace((int)c))) { \ + while (((c) != '\0') && !((iq == 0) && g_ascii_isspace((int)c))) { \ if ((c) == '"') { \ iq = !iq; \ - } else if (((c) == '\\') && (*(ptr) == '"')) { \ - (ptr)++; \ + } else if ((c) == '\\') { \ + if (*ptr) /* not last character */ \ + (ptr)++; \ } \ (c) = *(ptr)++; \ } \ @@ -866,7 +671,7 @@ time_t unctime(char *timestr); #define copy_string(ptr,c,f,l,fp) do { \ (fp) = (f); \ - while((c) != '\0' && !isspace((int)c)) { \ + while((c) != '\0' && !g_ascii_isspace((int)c)) { \ if((fp) >= (f) + (l) - 1) { \ *(fp) = '\0'; \ (fp) = NULL; \ @@ -882,7 +687,7 @@ time_t unctime(char *timestr); #define copy_string_cs(ptr,c,f,l,fp) do { \ (fp) = (f); \ - while((c) != '\0' && (c) != '#' && !isspace((int)c)) { \ + while((c) != '\0' && (c) != '#' && !g_ascii_isspace((int)c)) { \ if((fp) >= (f) + (l) - 1) { \ *(fp) = '\0'; \ (fp) = NULL; \ @@ -1265,6 +1070,9 @@ extern int vprintf(const char *format, va_list ap); /* gnulib-only includes (hence "" instead of <>) */ #include "getaddrinfo.h" #include "inet_ntop.h" +#include "safe-read.h" +#include "full-read.h" +#include "full-write.h" #if !defined(S_ISCHR) && defined(_S_IFCHR) && defined(_S_IFMT) #define S_ISCHR(mode) (((mode) & _S_IFMT) == _S_IFCHR) @@ -1370,68 +1178,6 @@ extern ssize_t writev(int fd, const struct iovec *iov, int iovcnt); # endif #endif -#if SIZEOF_OFF_T == 8 -# ifdef OFF_MAX -# define AM64_MAX (off_t)(OFF_MAX) -# else -# define AM64_MAX (off_t)(9223372036854775807LL) -# endif -# ifdef OFF_MIN -# define AM64_MIN (off_t)(OFF_MIN) -# else -# define AM64_MIN (off_t)(-9223372036854775807LL -1LL) -# endif -#else -#if SIZEOF_LONG == 8 -# ifdef LONG_MAX -# define AM64_MAX (off_t)(LONG_MAX) -# else -# define AM64_MAX (off_t)9223372036854775807L -# endif -# ifdef LONG_MIN -# define AM64_MIN (off_t)(LONG_MIN) -# else -# define AM64_MIN (off_t)(-9223372036854775807L -1L) -# endif -#else -#if SIZEOF_LONG_LONG == 8 -# ifdef LONG_LONG_MAX -# define AM64_MAX (off_t)(LONG_LONG_MAX) -# else -# define AM64_MAX (off_t)9223372036854775807LL -# endif -# ifdef LONG_LONG_MIN -# define AM64_MIN (off_t)(LONG_LONG_MIN) -# else -# define AM64_MIN (off_t)(-9223372036854775807LL -1LL) -# endif -#else -#if SIZEOF_INTMAX_T == 8 -# ifdef INTMAX_MAX -# define AM64_MAX (off_t)(INTMAX_MAX) -# else -# define AM64_MAX (off_t)9223372036854775807LL -# endif -# ifdef INTMAX_MIN -# define AM64_MIN (off_t)(INTMAX_MIN) -# else -# define AM64_MIN (off_t)(-9223372036854775807LL -1LL) -# endif -#else /* no 64 bits type found, use long. */ -# ifdef LONG_MAX -# define AM64_MAX (off_t)(LONG_MAX) -# else -# define AM64_MAX (off_t)2147483647 -# endif -# ifdef LONG_MIN -# define AM64_MIN (off_t)(LONG_MIN) -# else -# define AM64_MIN (off_t)(-2147483647 -1) -# endif -#endif -#endif -#endif -#endif #define BIND_CYCLE_RETRIES 120 /* Total of 30 minutes */