From: erickson Date: Sun, 19 Jun 2005 17:58:41 +0000 (+0000) Subject: it's functions have been farmed out to utils.c, logging.c, osrf_config.c X-Git-Tag: osrf_rel_2_0_1~1510 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=596689ab99a890e9f67a9462030da8daed4dce4c;p=OpenSRF.git it's functions have been farmed out to utils.c, logging.c, osrf_config.c git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@362 9efc2488-bf62-4759-914b-345cdb29e865 --- diff --git a/src/libtransport/generic_utils.c b/src/libtransport/generic_utils.c deleted file mode 100644 index daccd9c..0000000 --- a/src/libtransport/generic_utils.c +++ /dev/null @@ -1,438 +0,0 @@ -#include "generic_utils.h" -#include -#include "pthread.h" -#include - -/* -void get_timestamp( char buf_36chars[]) { - - struct timeb tb; - ftime(&tb); - char* localtime = strdup( ctime( &(tb.time) ) ); - char mil[4]; - memset(mil,0,4); - sprintf(mil," (%d)",tb.millitm); - strcpy( buf_36chars, localtime ); - buf_36chars[ strlen(localtime)-1] = '\0'; // remove newline - strcat(buf_36chars,mil); - free(localtime); -} - -static FILE* log_file = NULL; -static int log_level = -1; -static int logging = 0; -pthread_mutex_t mutex; - -void log_free() { if( log_file != NULL ) fclose(log_file ); } - -void fatal_handler( char* msg, ... ) { - - char buf[36]; - memset( buf, 0, 36 ); - get_timestamp( buf ); - pid_t pid = getpid(); - va_list args; - - if( logging ) { - - if( log_level < LOG_ERROR ) - return; - - pthread_mutex_lock( &(mutex) ); - fprintf( log_file, "[%s %d] [%s] ", buf, pid, "ERR " ); - - va_start(args, msg); - vfprintf(log_file, msg, args); - va_end(args); - - fprintf(log_file, "\n"); - fflush( log_file ); - pthread_mutex_unlock( &(mutex) ); - - } - - fprintf( stderr, "[%s %d] [%s] ", buf, pid, "ERR " ); - va_start(args, msg); - vfprintf(stderr, msg, args); - va_end(args); - fprintf( stderr, "\n" ); - - exit(99); -} - -void warning_handler( char* msg, ... ) { - - char buf[36]; - memset( buf, 0, 36 ); - get_timestamp( buf ); - pid_t pid = getpid(); - va_list args; - - if(logging) { - - if( log_level < LOG_WARNING ) - return; - - pthread_mutex_lock( &(mutex) ); - fprintf( log_file, "[%s %d] [%s] ", buf, pid, "WARN" ); - - va_start(args, msg); - vfprintf(log_file, msg, args); - va_end(args); - - fprintf(log_file, "\n"); - fflush( log_file ); - pthread_mutex_unlock( &(mutex) ); - - } else { - - fprintf( stderr, "[%s %d] [%s] ", buf, pid, "WARN" ); - va_start(args, msg); - vfprintf(stderr, msg, args); - va_end(args); - fprintf( stderr, "\n" ); - } - -} - -void info_handler( char* msg, ... ) { - - char buf[36]; - memset( buf, 0, 36 ); - get_timestamp( buf ); - pid_t pid = getpid(); - va_list args; - - if(logging) { - - if( log_level < LOG_INFO ) - return; - pthread_mutex_lock( &(mutex) ); - fprintf( log_file, "[%s %d] [%s] ", buf, pid, "INFO" ); - - va_start(args, msg); - vfprintf(log_file, msg, args); - va_end(args); - - fprintf(log_file, "\n"); - fflush( log_file ); - pthread_mutex_unlock( &(mutex) ); - - } else { - - fprintf( stderr, "[%s %d] [%s] ", buf, pid, "INFO" ); - va_start(args, msg); - vfprintf(stderr, msg, args); - va_end(args); - fprintf( stderr, "\n" ); - fflush(stderr); - - } -} - - -void debug_handler( char* msg, ... ) { - - char buf[36]; - memset( buf, 0, 36 ); - get_timestamp( buf ); - pid_t pid = getpid(); - va_list args; - - if(logging) { - - if( log_level < LOG_DEBUG ) - return; - - pthread_mutex_lock( &(mutex) ); - fprintf( log_file, "[%s %d] [%s] ", buf, pid, "DEBG" ); - - va_start(args, msg); - vfprintf(log_file, msg, args); - va_end(args); - - fprintf(log_file, "\n"); - fflush( log_file ); - pthread_mutex_unlock( &(mutex) ); - - } else { - - fprintf( stderr, "[%s %d] [%s] ", buf, pid, "DEBG" ); - va_start(args, msg); - vfprintf(stderr, msg, args); - va_end(args); - fprintf( stderr, "\n" ); - } - -} - - -int log_init( int llevel, char* lfile ) { - - - if( llevel < 1 ) { - logging = 0; - return 0; - } - - log_level = llevel; - log_file = fopen( lfile, "a" ); - if( log_file == NULL ) { - fprintf( stderr, "Unable to open log file %s for appending\n", lfile ); - return 0; - } - logging = 1; - return 1; - -} - -*/ - - -/* -growing_buffer* buffer_init(int num_initial_bytes) { - - if( num_initial_bytes > BUFFER_MAX_SIZE ) { - return NULL; - } - - - size_t len = sizeof(growing_buffer); - - growing_buffer* gb = (growing_buffer*) safe_malloc(len); - - gb->n_used = 0; - gb->size = num_initial_bytes; - gb->buf = (char *) safe_malloc(gb->size + 1); - - return gb; -} - -int buffer_add(growing_buffer* gb, char* data) { - - - if( ! gb || ! data ) { return 0; } - int data_len = strlen( data ); - - if( data_len == 0 ) { return 0; } - int total_len = data_len + gb->n_used; - - while( total_len >= gb->size ) { - gb->size *= 2; - } - - if( gb->size > BUFFER_MAX_SIZE ) { - warning_handler( "Buffer reached MAX_SIZE of %d", BUFFER_MAX_SIZE ); - buffer_free( gb ); - return 0; - } - - char* new_data = (char*) safe_malloc( gb->size ); - - strcpy( new_data, gb->buf ); - free( gb->buf ); - gb->buf = new_data; - - strcat( gb->buf, data ); - gb->n_used = total_len; - return total_len; -} - - -int buffer_reset( growing_buffer *gb){ - if( gb == NULL ) { return 0; } - if( gb->buf == NULL ) { return 0; } - memset( gb->buf, 0, gb->size ); - gb->n_used = 0; - return 1; -} - -int buffer_free( growing_buffer* gb ) { - if( gb == NULL ) - return 0; - free( gb->buf ); - free( gb ); - return 1; -} - -char* buffer_data( growing_buffer *gb) { - return strdup( gb->buf ); -} -*/ - - - - - -// --------------------------------------------------------------------------------- -// Config module -// --------------------------------------------------------------------------------- - - -// --------------------------------------------------------------------------------- -// Allocate and build the conf_reader. This only has to happen once in a given -// system. Repeated calls are ignored. -// --------------------------------------------------------------------------------- -/* -void config_reader_init( char* config_file ) { - if( conf_reader == NULL ) { - - if( config_file == NULL || strlen(config_file) == 0 ) { - fatal_handler( "config_reader_init(): No config file specified" ); - return; - } - - size_t len = sizeof( config_reader ); - conf_reader = (config_reader*) safe_malloc( len ); - - conf_reader->config_doc = xmlParseFile( config_file ); - conf_reader->xpathCx = xmlXPathNewContext( conf_reader->config_doc ); - if( conf_reader->xpathCx == NULL ) { - fatal_handler( "config_reader_init(): Unable to create xpath context"); - return; - } - } -} -*/ - -void config_reader_init( char* name, char* config_file ) { - - if( name == NULL || config_file == NULL || strlen(config_file) == 0 ) { - fatal_handler( "config_reader_init(): No config file specified" ); - return; - } - - config_reader* reader = - (config_reader*) safe_malloc(sizeof(config_reader)); - - reader->config_doc = xmlParseFile( config_file ); - reader->xpathCx = xmlXPathNewContext( reader->config_doc ); - reader->name = strdup(name); - reader->next = NULL; - - if( reader->xpathCx == NULL ) { - fprintf( stderr, "config_reader_init(): Unable to create xpath context\n"); - return; - } - - if( conf_reader == NULL ) { - conf_reader = reader; - } else { - config_reader* tmp = conf_reader; - conf_reader = reader; - reader->next = tmp; - } -} - - -char* config_value( const char* config_name, const char* xp_query, ... ) { - - if( conf_reader == NULL || xp_query == NULL ) { - fatal_handler( "config_value(): NULL conf_reader or NULL param(s)" ); - return NULL; - } - - config_reader* reader = conf_reader; - while( reader != NULL ) { - if( !strcmp(reader->name, config_name)) - break; - reader = reader->next; - } - - if( reader == NULL ) { - fprintf(stderr, "No Config file with name %s\n", config_name ); - return NULL; - } - - int slen = strlen(xp_query) + 512;/* this is unsafe ... */ - char xpath_query[ slen ]; - memset( xpath_query, 0, slen ); - va_list va_args; - va_start(va_args, xp_query); - vsprintf(xpath_query, xp_query, va_args); - va_end(va_args); - - - char* val; - int len = strlen(xpath_query) + 100; - char alert_buffer[len]; - memset( alert_buffer, 0, len ); - - // build the xpath object - xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression( BAD_CAST xpath_query, reader->xpathCx ); - - if( xpathObj == NULL ) { - sprintf( alert_buffer, "Could not build xpath object: %s", xpath_query ); - fatal_handler( alert_buffer ); - return NULL; - } - - - if( xpathObj->type == XPATH_NODESET ) { - - // ---------------------------------------------------------------------------- - // Grab nodeset from xpath query, then first node, then first text node and - // finaly the text node's value - // ---------------------------------------------------------------------------- - xmlNodeSet* node_list = xpathObj->nodesetval; - if( node_list == NULL ) { - sprintf( alert_buffer, "Could not build xpath object: %s", xpath_query ); - warning_handler(alert_buffer); - return NULL; - } - - if( node_list->nodeNr == 0 ) { - sprintf( alert_buffer, "Config XPATH query returned 0 results: %s", xpath_query ); - warning_handler(alert_buffer); - return NULL; - } - - - xmlNodePtr element_node = *(node_list)->nodeTab; - if( element_node == NULL ) { - sprintf( alert_buffer, "Config XPATH query returned 0 results: %s", xpath_query ); - warning_handler(alert_buffer); - return NULL; - } - - xmlNodePtr text_node = element_node->children; - if( text_node == NULL ) { - sprintf( alert_buffer, "Config variable has no value: %s", xpath_query ); - warning_handler(alert_buffer); - return NULL; - } - - val = text_node->content; - if( val == NULL ) { - sprintf( alert_buffer, "Config variable has no value: %s", xpath_query ); - warning_handler(alert_buffer); - return NULL; - } - - - } else { - sprintf( alert_buffer, "Xpath evaluation failed: %s", xpath_query ); - warning_handler(alert_buffer); - return NULL; - } - - char* value = strdup(val); - if( value == NULL ) { warning_handler( "config_value(): Empty config value or Out of Memory!" ); } - - // Free XPATH structures - if( xpathObj != NULL ) xmlXPathFreeObject( xpathObj ); - - return value; -} - - -void config_reader_free() { - while( conf_reader != NULL ) { - xmlXPathFreeContext( conf_reader->xpathCx ); - xmlFreeDoc( conf_reader->config_doc ); - free(conf_reader->name ); - config_reader* tmp = conf_reader->next; - free( conf_reader ); - conf_reader = tmp; - } -} diff --git a/src/libtransport/generic_utils.h b/src/libtransport/generic_utils.h deleted file mode 100644 index c690746..0000000 --- a/src/libtransport/generic_utils.h +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include -#include - -#include "logging.h" -#include "utils.h" - -/* libxml stuff for the config reader */ -#include -#include -#include -#include -#include - -#include "utils.h" - -#ifndef GENERIC_UTILS_H -#define GENERIC_UTILS_H - -#define equals(a,b) !strcmp(a,b) - -// --------------------------------------------------------------------------------- -// Config file module -// --------------------------------------------------------------------------------- -struct config_reader_struct { - xmlDocPtr config_doc; - xmlXPathContextPtr xpathCx; - char* name; - struct config_reader_struct* next; -}; -typedef struct config_reader_struct config_reader; -config_reader* conf_reader; - -//void config_reader_init( char* config_file ); -void config_reader_init( char* name, char* config_file ); - -void config_reader_free(); - -// allocastes a char*. FREE me. -char* config_value( const char* config_name, const char* xp_query, ... ); - -#endif