--- embedaddon/rsync/ifuncs.h 2012/02/17 15:09:30 1.1 +++ embedaddon/rsync/ifuncs.h 2021/03/17 00:32:36 1.1.1.4 @@ -1,6 +1,6 @@ /* Inline functions for rsync. * - * Copyright (C) 2007-2008 Wayne Davison + * Copyright (C) 2007-2020 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,8 +19,7 @@ static inline void alloc_xbuf(xbuf *xb, size_t sz) { - if (!(xb->buf = new_array(char, sz))) - out_of_memory("alloc_xbuf"); + xb->buf = new_array(char, sz); xb->size = sz; xb->len = xb->pos = 0; } @@ -29,12 +28,18 @@ static inline void realloc_xbuf(xbuf *xb, size_t sz) { char *bf = realloc_array(xb->buf, char, sz); - if (!bf) - out_of_memory("realloc_xbuf"); xb->buf = bf; xb->size = sz; } +static inline void +free_xbuf(xbuf *xb) +{ + if (xb->buf) + free(xb->buf); + memset(xb, 0, sizeof (xbuf)); +} + static inline int to_wire_mode(mode_t mode) { @@ -67,44 +72,75 @@ d_name(struct dirent *di) #endif } -static inline int -isDigit(const char *ptr) +static inline void +init_stat_x(stat_x *sx_p) { - return isdigit(*(unsigned char *)ptr); +#ifdef SUPPORT_ACLS + sx_p->acc_acl = sx_p->def_acl = NULL; +#endif +#ifdef SUPPORT_XATTRS + sx_p->xattr = NULL; +#endif } -static inline int -isPrint(const char *ptr) +static inline void +free_stat_x(stat_x *sx_p) { - return isprint(*(unsigned char *)ptr); +#ifdef SUPPORT_ACLS + { + extern int preserve_acls; + if (preserve_acls) + free_acl(sx_p); + } +#endif +#ifdef SUPPORT_XATTRS + { + extern int preserve_xattrs; + if (preserve_xattrs) + free_xattr(sx_p); + } +#endif } -static inline int -isSpace(const char *ptr) +static inline char *my_strdup(const char *str, const char *file, int line) { - return isspace(*(unsigned char *)ptr); + int len = strlen(str)+1; + char *buf = my_alloc(NULL, len, 1, file, line); + memcpy(buf, str, len); + return buf; } static inline int -isLower(const char *ptr) +strEQ(const char *s1, const char *s2) { - return islower(*(unsigned char *)ptr); + return strcmp(s1, s2) == 0; } static inline int -isUpper(const char *ptr) +strnEQ(const char *s1, const char *s2, size_t n) { - return isupper(*(unsigned char *)ptr); + return strncmp(s1, s2, n) == 0; } static inline int -toLower(const char *ptr) +ic_strEQ(const char *s1, const char *s2) { - return tolower(*(unsigned char *)ptr); + extern int ignore_case; + if (ignore_case) + return strcasecmp(s1, s2) == 0; + return strcmp(s1, s2) == 0; } static inline int -toUpper(const char *ptr) +ic_strnEQ(const char *s1, const char *s2, size_t n) { - return toupper(*(unsigned char *)ptr); + extern int ignore_case; + if (ignore_case) + return strncasecmp(s1, s2, n) == 0; + return strncmp(s1, s2, n) == 0; } + +#define strNE(s1,s2) (!strEQ(s1,s2)) +#define strnNE(s1,s2,n) (!strnEQ(s1,s2,n)) +#define ic_strNE(s1,s2) (!ic_strEQ(s1,s2)) +#define ic_strnNE(s1,s2) (!ic_strnEQ(s1,s2,n))