/* 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