/* By Sean Middleditch <elanthis@awemud.net> released into public domain, July 8th, 2003 */ #if !defined(C_SERIALIZE) #define C_SERIALIZE 1 #define CSER_MAX_DATA 4096 /* write values to a file */ int cser_write_str(FILE* file, const char* name, const char* value); int cser_write_num(FILE* file, const char* name, long num); /* read from file */ #define CSER_READ_BEGIN(file) \ do { \ char _cser_buffer[CSER_MAX_DATA]; \ char* _cser_name = NULL; \ char* _cstr_string = NULL; \ long _cstr_number = 0; \ while ((cser_read((file), _cser_buffer, sizeof(_cser_buffer), \ &_cser_name, &_cstr_string, &_cstr_number)) == 0) { #define CSER_READ_STR(name,var) \ if (!strcasecmp((name), _cser_name)) { \ if ((var) != NULL) free(var); \ var = NULL; \ if (_cstr_string != NULL) \ var = strdup(_cstr_string); \ } else #define CSER_READ_NUM(name,var) \ if (!strcasecmp((name), _cser_name)) { \ (var) = _cstr_number; \ } else #define CSER_READ_END \ { /* Unknown value */ } \ } \ } while(0); /* read one value from file */ int cser_read(FILE* file, char* buffer, size_t blen, char** name, char** str_value, long* num_value); #endif