pennmush/game/data/
pennmush/game/log/
pennmush/game/save/
pennmush/game/txt/evt/
pennmush/game/txt/nws/
pennmush/os2/
pennmush/po/
pennmush/win32/msvc.net/
pennmush/win32/msvc6/
/**
 * \file dbio.h
 *
 * \brief header files for functions for reading/writing database files
 */

#ifndef __DBIO_H
#define __DBIO_H

#include <setjmp.h>
#include <stdio.h>

extern jmp_buf db_err;

/** Run a function, and jump if error */
#define OUTPUT(fun) do { if ((fun) < 0) longjmp(db_err, 1); } while (0)


/* Output */
extern void putref(FILE * f, long int ref);
extern void putstring(FILE * f, const char *s);
extern void db_write_labeled_string(FILE * f, char const *label,
				    char const *value);
extern void db_write_labeled_number(FILE * f, char const *label, int value);
extern void db_write_labeled_dbref(FILE * f, char const *label, dbref value);

extern dbref db_write(FILE * f, int flag);
extern int db_paranoid_write(FILE * f, int flag);

/* Input functions */
extern const char *getstring_noalloc(FILE * f);
extern long getref(FILE * f);
extern void db_read_this_labeled_string(FILE * f, const char *label,
					char **val);
extern void db_read_labeled_string(FILE * f, char **label, char **val);
extern void db_read_this_labeled_number(FILE * f, const char *label, int *val);
extern void db_read_labeled_number(FILE * f, char **label, int *val);
extern void db_read_this_labeled_dbref(FILE * f, const char *label, dbref *val);
extern void db_read_labeled_dbref(FILE * f, char **label, dbref *val);


extern dbref db_read(FILE * f);


#endif