X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=common-src%2Famanda.h;h=0958790cdfbab2ebd1e94fc4b07be995ee312b04;hb=0ab9787cd7de76aad522ee8d55ed7e87e3047458;hp=9aa3d6a4fafb080c308680991033e40d1ff456ab;hpb=fb2bd066c2f8b34addafe48d62550e3033a59431;p=debian%2Famanda diff --git a/common-src/amanda.h b/common-src/amanda.h index 9aa3d6a..0958790 100644 --- a/common-src/amanda.h +++ b/common-src/amanda.h @@ -31,23 +31,19 @@ #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. */ -#ifndef _LARGE_FILE_SOURCE -#define _LARGE_FILES 1 -#endif - #ifndef _LARGEFILE64_SOURCE #define _LARGEFILE64_SOURCE 1 #endif @@ -60,8 +56,9 @@ # include #endif -/* gnulib creates this header locally if the system doesn't provide it */ -#include +/* gnulib creates this header locally if the system doesn't provide it, + * so it uses a local ("") include */ +#include "stdint.h" /* * I would prefer that each Amanda module include only those system headers @@ -71,9 +68,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 @@ -143,10 +137,6 @@ #endif #endif -#ifdef HAVE_NETDB_H -# include -#endif - #ifdef TIME_WITH_SYS_TIME # include # include @@ -298,10 +288,6 @@ struct iovec { #include #include -#ifdef HAVE_ARPA_INET_H -#include -#endif - #ifdef WORKING_IPV6 #define INET6 #endif @@ -404,11 +390,6 @@ extern int errno; #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) @@ -469,39 +450,12 @@ char *debug_vstrextend(const char *file, int line, char **oldstr, ...); #define agets(f) debug_agets(__FILE__,__LINE__,(f)) #define areads(f) debug_areads(__FILE__,__LINE__,(f)) -extern int debug_amtable_alloc(const char *file, - int line, - void **table, - size_t *current, - size_t elsize, - size_t count, - int bump, - void (*init_func)(void *)); - -#define amtable_alloc(t,c,s,n,b,f) debug_amtable_alloc(__FILE__, \ - __LINE__, \ - (t), \ - (c), \ - (s), \ - (n), \ - (b), \ - (f)) - -extern void amtable_free(void **, size_t *); - -char ** safe_env(void); -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_glob(const char *glob, const char *str); -char * glob_to_regex(const char *glob); -int match_tar(const char *glob, const char *str); -char * tar_to_regex(const char *glob); -int match_host(const char *glob, const char *host); -int match_disk(const char *glob, const char *disk); -int match_datestamp(const char *dateexp, const char *datestamp); -int match_level(const char *levelexp, const char *level); +/* return a "safe" version of the current environment; pass this to execle */ +#define safe_env() safe_env_full(NULL) + +/* like safe_env, but optionally add additional environment variables */ +char ** safe_env_full(char **add); + time_t unctime(char *timestr); /* @@ -625,15 +579,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 { \ @@ -647,11 +601,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)++; \ } \ @@ -677,7 +632,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; \ @@ -693,7 +648,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; \ @@ -1073,9 +1028,15 @@ extern int vfprintf(FILE *stream, const char *format, va_list ap); extern int vprintf(const char *format, va_list ap); #endif -/* gnulib-only includes (hence "" instead of <>) */ -#include "getaddrinfo.h" -#include "inet_ntop.h" +/* these system headers are added by gnulib if they + * do not exist */ +#include "netdb.h" +#include "arpa/inet.h" + +/* gnulib-only includes */ +#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) @@ -1181,68 +1142,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 */ @@ -1259,4 +1158,13 @@ typedef enum { KENCRYPT_YES /* krb5 encryption enabled on all stream */ } kencrypt_type; +#define DUMP_LEVELS 400 + +/* Constants to define the number of pre-opened pipes between amandad and + * its services */ + +/* If you change these (don't!), change them in perl/Amanda/Constants.pm, too */ +#define DATA_FD_COUNT 3 /* number of general-use pipes */ +#define DATA_FD_OFFSET 50 + #endif /* !AMANDA_H */