From 93bcd305c40583bf7b7c611896f85b89899d47b5 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 19 Mar 2011 11:48:48 +0100 Subject: [PATCH] dhcpd-pools.h: function attributes declarations Advice compiler about functions to generate better optimization and argument checks. Signed-off-by: Sami Kerola --- src/dhcpd-pools.c | 1 - src/dhcpd-pools.h | 36 +++++++++++++++++++++++++----------- src/other.c | 1 + 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/dhcpd-pools.c b/src/dhcpd-pools.c index b250f19..02669d2 100644 --- a/src/dhcpd-pools.c +++ b/src/dhcpd-pools.c @@ -151,7 +151,6 @@ int main(int argc, char **argv) case 'v': /* Print version */ print_version(); - return (EXIT_SUCCESS); case 'h': /* Print help */ usage(EXIT_SUCCESS); diff --git a/src/dhcpd-pools.h b/src/dhcpd-pools.h index 5982ba3..e1bce4d 100644 --- a/src/dhcpd-pools.h +++ b/src/dhcpd-pools.h @@ -98,20 +98,34 @@ struct macaddr_t *macaddr; /* Function prototypes */ int prepare_memory (void); int parse_leases (void); -char * parse_config (int, char *, char *, char *, struct shared_network_t *); -int nth_field (int n, char *dest, const char *src); +char * parse_config (int, char *, char *, char *, struct shared_network_t *) + __attribute__((nonnull (2, 3, 4))); +int nth_field (int n, char *dest, const char *src) + __attribute__((nonnull (2, 3))) +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) + __attribute__((__hot__)) +#endif + ; int prepare_data (void); int do_counting (void); -void flip_ranges(struct range_t *ranges, struct range_t *tmp_ranges); +void flip_ranges(struct range_t *ranges, struct range_t *tmp_ranges) + __attribute__((nonnull (1, 2))); /* General support functions */ -void *safe_malloc (const size_t size); -char *safe_strdup(const char *str); -void print_version (void); -void usage (int status); +void *safe_malloc (const size_t size) +#if __GNUC__ >= 3 + __attribute__ ((__malloc__)) + #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) + __attribute__ ((__alloc_size__ ((1)))) + #endif +#endif + ; +char *safe_strdup(const char *str) __attribute__((nonnull (1))); +void print_version (void) __attribute__((noreturn)); +void usage (int status) __attribute__((noreturn)); /* qsort required functions... */ /* ...for ranges and... */ -int intcomp (const void *x, const void *y); -int rangecomp (const void *r1, const void *r2); +int intcomp (const void *x, const void *y) __attribute__((nonnull (1, 2))); +int rangecomp (const void *r1, const void *r2) __attribute__((nonnull (1, 2))); /* sort function pointer and functions */ int sort_name (void); unsigned long int (*returner) (struct range_t r); @@ -123,8 +137,8 @@ unsigned long int ret_touched(struct range_t r); unsigned long int ret_tc(struct range_t r); unsigned long int ret_tcperc(struct range_t r); void field_selector(char c); -int get_order(struct range_t *left, struct range_t *right); -void mergesort_ranges (struct range_t *orig, int size, struct range_t *temp); +int get_order(struct range_t *left, struct range_t *right) __attribute__((nonnull (1, 2))); +void mergesort_ranges (struct range_t *orig, int size, struct range_t *temp) __attribute__((nonnull (1, 3))); /* output function pointer and functions */ int (*output_analysis) (void); int output_txt (void); diff --git a/src/other.c b/src/other.c index b5b9290..42f86ca 100644 --- a/src/other.c +++ b/src/other.c @@ -109,6 +109,7 @@ void print_version(void) "This is free software: you are free to change and redistribute it.\n"); fprintf(stdout, "There is NO WARRANTY, to the extent permitted by law.\n"); + exit(EXIT_SUCCESS); } void usage(int status) -- 1.7.10.4