/** @file common.h * @date April 24, 2009 */ #ifndef COMMON_H_ #define COMMON_H_ #include <assert.h> #include <ctype.h> #include <errno.h> #include <limits.h> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <sys/types.h> #ifdef DEBUG /** Returns a failure after displayinga message. This is executed only in * the DEBUG configuration. * * @param module The module that detected the failure. * @param line The line number that detected the failure. * @param error The value of errno when things failed. * * @return EXIT_FAILURE. */ extern int return_failure( const char * module, size_t line, int error); /** Calls the return_failure function. */ #define RETURN_FAILURE() return return_failure(__FILE__, __LINE__, errno) #else /* DEBUG */ /** This function simply returns EXIT_FAILURE in the RELEASE configuration. */ #define RETURN_FAILURE() return EXIT_FAILURE #endif /* DEBUG */ /** Calls the RETURN_FAILURE macro when an expression is zero. */ #define RETURN_IF_FALSE(E) if (!(E)) RETURN_FAILURE() /** Calls the RETURN_FAILURE macro when an expreesion is not EXIT_SUCCESS. */ #define RETURN_IF_FAILURE(E) RETURN_IF_FALSE(EXIT_SUCCESS == (E)) /** A colleciton of information about a peer. */ typedef struct peer_t { /** The address of the peer. */ u_long address; /** The port number of the peer. */ u_short port; } peer_t; /** Starts the stopwatch. */ extern void stopwatch_start(void); /** Stops the stopwatch and prints statistics. * * @param filesize The size of the file in size. */ extern void stopwatch_stop(u_long filesize, size_t retries, u_long packets); #endif /* COMMON_H_ */