20 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8) 21 # define RPM_GNUC_EXTENSION __extension__ 23 # define RPM_GNUC_EXTENSION 28 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) 29 #define RPM_GNUC_PURE \ 30 __attribute__((__pure__)) 31 #define RPM_GNUC_MALLOC \ 32 __attribute__((__malloc__)) 35 #define RPM_GNUC_MALLOC 38 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) 39 #define RPM_GNUC_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) 40 #define RPM_GNUC_ALLOC_SIZE2(x,y) __attribute__((__alloc_size__(x,y))) 42 #define RPM_GNUC_ALLOC_SIZE(x) 43 #define RPM_GNUC_ALLOC_SIZE2(x,y) 47 #define RPM_GNUC_NULL_TERMINATED __attribute__((__sentinel__)) 49 #define RPM_GNUC_NULL_TERMINATED 52 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) 53 #define RPM_GNUC_PRINTF( format_idx, arg_idx ) \ 54 __attribute__((__format__ (__printf__, format_idx, arg_idx))) 55 #define RPM_GNUC_SCANF( format_idx, arg_idx ) \ 56 __attribute__((__format__ (__scanf__, format_idx, arg_idx))) 57 #define RPM_GNUC_FORMAT( arg_idx ) \ 58 __attribute__((__format_arg__ (arg_idx))) 59 #define RPM_GNUC_NORETURN \ 60 __attribute__((__noreturn__)) 61 #define RPM_GNUC_CONST \ 62 __attribute__((__const__)) 63 #define RPM_GNUC_UNUSED \ 64 __attribute__((__unused__)) 65 #define RPM_GNUC_NO_INSTRUMENT \ 66 __attribute__((__no_instrument_function__)) 68 #define RPM_GNUC_PRINTF( format_idx, arg_idx ) 69 #define RPM_GNUC_SCANF( format_idx, arg_idx ) 70 #define RPM_GNUC_FORMAT( arg_idx ) 71 #define RPM_GNUC_NORETURN 72 #define RPM_GNUC_CONST 73 #define RPM_GNUC_UNUSED 74 #define RPM_GNUC_NO_INSTRUMENT 77 #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) 78 #define RPM_GNUC_DEPRECATED \ 79 __attribute__((__deprecated__)) 81 #define RPM_GNUC_DEPRECATED 84 #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) 85 #define RPM_GNUC_MAY_ALIAS __attribute__((may_alias)) 86 #define RPM_GNUC_NONNULL( ... ) \ 87 __attribute__((__nonnull__ (__VA_ARGS__))) 89 #define RPM_GNUC_MAY_ALIAS 90 #define RPM_GNUC_NONNULL( ... ) 93 #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) 94 #define RPM_GNUC_WARN_UNUSED_RESULT \ 95 __attribute__((warn_unused_result)) 97 #define RPM_GNUC_WARN_UNUSED_RESULT 100 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) 101 # define RPM_GNUC_INTERNAL __attribute__((visibility("hidden"))) 103 # define RPM_GNUC_INTERNAL 109 # define RPM_BEGIN_DECLS extern "C" { 110 # define RPM_END_DECLS } 112 # define RPM_BEGIN_DECLS 113 # define RPM_END_DECLS 125 void *
rcalloc(
size_t nmemb,
size_t size);
128 void *
rrealloc(
void *ptr,
size_t size);
130 char *
rstrdup(
const char *str);
133 void *
rfree(
void *ptr);
146 typedef void * (*rpmMemFailFunc) (
size_t size,
void *data);
void * rmalloc(size_t size)
void *(* rpmMemFailFunc)(size_t size, void *data)
Memory allocation failure callback prototype.
#define RPM_GNUC_ALLOC_SIZE(x)
#define RPM_GNUC_ALLOC_SIZE2(x, y)
void * rrealloc(void *ptr, size_t size)
char * rstrdup(const char *str)
rpmMemFailFunc rpmSetMemFail(rpmMemFailFunc func, void *data)
Set memory allocation failure callback.
void * rcalloc(size_t nmemb, size_t size)