From 792a447cea6845146f8cd0df4a66c62acc12e360 Mon Sep 17 00:00:00 2001 From: Oliver Lehmann Date: Mon, 22 Jan 1990 13:59:08 +0000 Subject: [PATCH] ING_DB --- WEGA/contrib/ingres/dbs/src/pqr/rg_file.c | 115 ++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 WEGA/contrib/ingres/dbs/src/pqr/rg_file.c diff --git a/WEGA/contrib/ingres/dbs/src/pqr/rg_file.c b/WEGA/contrib/ingres/dbs/src/pqr/rg_file.c new file mode 100644 index 0000000..266b27c --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/pqr/rg_file.c @@ -0,0 +1,115 @@ +/* +** --- RG_FILE.C ------- FILE HANDLING -------------------------------------- +** +** rg_open | rg_close | rg_exit +** +** Version: @(#)rg_file.c 4.0 02/05/89 +** +*/ + +# include +# include "rg_file.h" +# ifdef MSDOS +# include +# endif + +# ifdef MSDOS +# define READ O_BINARY +# else +# define READ 0 +# endif +# define APPEND 1 + +FILETYPE Rg_file[] = +{ +/* --------------------------------------------------- +** file open fd name type +** --------------------------------------------------- */ + F_TUPLE, FALSE, -1, "tuple", READ, + F_R_CODE, FALSE, -1, "r_code", READ, + F_DESC, FALSE, -1, "desc", READ, + F_REPORT, TRUE, 1, "report", APPEND, +/* --------------------------------------------------- */ + 0 +}; + + +rg_open() +{ + register FILETYPE *r; + register char *f; + register int i; + extern int errno; + + errno = 0; + for (r = Rg_file; r->rf_file; r++) + { + if (!r->rf_open) + { + f = r->rf_name; + if (r->rf_type == APPEND) + i = creat(f, FILEMODE); + else + i = (*f == '-')? 0: open(f, READ); + if (i < 0) + { + rg_error("`%s' OPEN ERROR", f); + rg_exit(EXIT_OPEN); + } + r->rf_fd = i; + r->rf_open = TRUE; +# ifdef RG_TRACE + if (TR_FILE) + printf("OPEN\tfile `%s' on fd %d\n", f, i); +# endif + } + } +} + + +rg_all_close() +{ + register FILETYPE *r; + + for (r = Rg_file; r->rf_file; r++) + rg_close(r); +} + + +rg_close(r) +register FILETYPE *r; +{ + extern int errno; + + if (r->rf_open) + { + errno = 0; + if (r->rf_fd && close(r->rf_fd) < 0) + rg_error("`%s' CLOSE ERROR", r->rf_name); + r->rf_open = FALSE; +# ifdef RG_TRACE + if (TR_FILE) + printf("CLOSE\tfile `%s' on fd %d\n", + r->rf_name, r->rf_fd); +# endif + } +} + + +rg_exit(val) +register int val; +{ + extern int errno; + + + if (!val) + rg_flush(); + fflush(stdout); + rg_all_close(); + errno = 0; + if (val) + rg_error("DYING %d", val); + fflush(stdout); + sync(); + exit(val); +}