dhcpd-pools.h: function attributes declarations
[debian/dhcpd-pools.git] / src / dhcpd-pools.h
index a887bde..e1bce4d 100644 (file)
@@ -1,20 +1,19 @@
-/*
-** Copyright (C) 2006- Sami Kerola <kerolasa@iki.fi>
-**  
-** This program is free software; you can redistribute it and/or modify
+/* http://dhcpd-pools.sourceforge.net/
+** Copyright 2006- Sami Kerola <kerolasa@iki.fi>
+**
+** 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
-** the Free Software Foundation; either version 2 of the License, or
+** the Free Software Foundation, either version 3 of the License, or
 ** (at your option) any later version.
-** 
+**
 ** This program is distributed in the hope that it will be useful,
 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ** GNU General Public License for more details.
-** 
+**
 ** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software 
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
+** along with this program.  If not, see <http://www.gnu.org/licenses/>.   
+*/ 
 
 #ifndef DHCPD_POOLS_H
 # define DHCPD_POOLS_H 1
@@ -60,16 +59,22 @@ struct range_t
   unsigned long int touched;
   unsigned long int backups;
 };
+struct macaddr_t
+{
+  char *ethernet;
+  char *ip;
+  struct macaddr_t *next;
+};
+
 /* Global variables */
-static int true = 1;
-static int false = 0;
+static int const true = 1;
+static int const false = 0;
 
-char *program_name;
 struct configuration_t config;
 
-static int output_limit_bit_1 = 1;
-static int output_limit_bit_2 = 2;
-static int output_limit_bit_3 = 4;
+static int const output_limit_bit_1 = 1;
+static int const output_limit_bit_2 = 2;
+static int const output_limit_bit_3 = 4;
 unsigned int fullhtml;
 
 struct shared_network_t *shared_networks;
@@ -88,23 +93,39 @@ unsigned long int num_touches;
 unsigned long int *backups;
 unsigned long int num_backups;
 
+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 (size_t size);
-void eprintf (char *, ...);
-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);
@@ -116,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);