/* os_utils.h */

/* error macros */

#define return_os_error(func) if ((_last_os_error = (func)) != 0) return _last_os_error
#define ignore_os_error(func) _temp_os_error = _last_os_error; (func); _last_os_error = _temp_os_error
#define if_os_error(func) if ((_last_os_error = (func)) != 0)
#define return_last_os_error if (_last_os_error != 0) return _last_os_error

/* errors */

extern _kernel_oserror
error_bufferfull,
error_noteandd,
error_notbothpasswords,
error_badargs,
error_filenotfound,
error_badheader,
error_unknownheader,
error_rename,
error_cantdeletesource,
error_unknownswi,
error_nomemory,
*_last_os_error,
*_temp_os_error;

/* structures */

enum os_fopenmode { os_fopen_in=0x4F, os_fopen_out=0x8F, os_fopen_up=0xCF };

/* Auto */

extern _kernel_oserror *read_line(char *prompt, char *string, int size)
;
extern _kernel_oserror *readargs(char *command_string, char *arg_string, int *buffer, int buffersize)
;
extern _kernel_oserror *readfileinfo(char *file, int *load, int *exec, int *size, int *type)
;
extern _kernel_oserror *setfiletype(char *file, int type)
;
extern _kernel_oserror *setfileloadexec(char *file, int load, int exec)
;
extern _kernel_oserror *os_rename(char *from, char *to)
;
extern _kernel_oserror *os_remove(char *file)
;
extern _kernel_oserror *os_fopen(char *file, enum os_fopenmode mode, int *handle)
;
extern _kernel_oserror *os_fread(void *buffer, int buffersize, int handle, int *bytesread)
;
extern _kernel_oserror *os_fwrite(void *buffer, int buffersize, int handle)
;
extern _kernel_oserror *os_feof(int handle, int *result)
;
extern _kernel_oserror *os_setextent(int handle, int extent)
;
extern _kernel_oserror *os_fclose(int handle)
;
