00001 #ifndef UTIL_H 00002 #define UTIL_H 00003 00004 /*****************************************************************************/ 00005 /******************************** Documentation ******************************/ 00006 /*****************************************************************************/ 00007 00008 /** 00009 * \file 00010 * Public interface for general utility routines. 00011 */ 00012 00013 /*****************************************************************************/ 00014 /******************************* Include Files *******************************/ 00015 /*****************************************************************************/ 00016 00017 #include <stdbool.h> 00018 #include <libintl.h> 00019 #include <time.h> 00020 00021 #include "dhash.h" 00022 00023 /*****************************************************************************/ 00024 /*********************************** Defines *********************************/ 00025 /*****************************************************************************/ 00026 00027 #ifndef _ 00028 /** 00029 * GNU gettext string localization, retreive locale's string translation 00030 */ 00031 #define _(string) gettext(string) 00032 #endif 00033 00034 #ifndef SUCCESS 00035 /** 00036 * Error code for success, indicates no error occurred. 00037 */ 00038 #define SUCCESS 0 00039 #endif 00040 00041 #ifndef MAX 00042 /** 00043 * Return the maximimum of two arguments 00044 */ 00045 #define MAX ((a) >= (b) ? (a) : (b)) 00046 #endif 00047 00048 #ifndef MIN 00049 /** 00050 * Return the minimum of two arguments 00051 */ 00052 #define MIN ((a) <= (b) ? (a) : (b)) 00053 #endif 00054 00055 /** 00056 * Base error code (minimum value) for util errors 00057 */ 00058 #define UTIL_ERROR_BASE -4500 00059 /** 00060 * Maximum error code for util errors 00061 */ 00062 #define UTIL_ERROR_LIMIT (UTIL_ERROR_BASE + 50) 00063 /** 00064 * Return true if error code is within the range for util errors. 00065 * 00066 * \param[in] error The error code to test if it's a util error code. 00067 * \return True if error code is a util error. 00068 */ 00069 #define IS_UTIL_ERROR(error) (((error) >= UTIL_ERROR_BASE) && ((error) < UTIL_ERROR_LIMIT)) 00070 00071 #define UTIL_ERROR_NOT_FOUND (UTIL_ERROR_BASE + 1) /**< item not found */ 00072 00073 /*****************************************************************************/ 00074 /******************************* Type Definitions ****************************/ 00075 /*****************************************************************************/ 00076 00077 /*****************************************************************************/ 00078 /************************* External Global Variables ***********************/ 00079 /*****************************************************************************/ 00080 00081 /** 00082 * Global debug flag. 00083 * 00084 * When in debug mode it's value will be non-zero. Larger values increase 00085 * detailed verbosity. This variable is also useful to prevent executing any 00086 * debug code which might be computationally expensive but whose result will be 00087 * discarded because the logging level does not include debug output. 00088 */ 00089 int debug; /* Global debug flag */ 00090 00091 /*****************************************************************************/ 00092 /**************************** Exported Functions ***************************/ 00093 /*****************************************************************************/ 00094 00095 int key_string_cmp(const void *_a, const void *_b); 00096 int entry_string_cmp(const void *_a, const void *_b); 00097 char *keys_string(hash_table_t *table, const char *prefix, const char *suffix); 00098 char *watch_path_table_string(hash_table_t *table); 00099 int strip_whitespace(char *str); 00100 const char *lwatch_error_string(int error); 00101 const char *error_string(int error); 00102 const char *time_string(time_t t, bool local, const char *fmt); 00103 const char *file_mode_string(mode_t mode); 00104 int get_uid_name(uid_t uid, char **name); 00105 int get_gid_name(gid_t gid, char **name); 00106 00107 #endif