/* open.c: to insulate <fcntl.h> from the rest of rc. */
/* prototype for open() follows. comment out if necessary */
/*extern int open(const char *, int,...);*/
Opens a file with the necessary flags. Assumes the following
declaration for redirtype:
rFrom, rCreate, rAppend, rHeredoc, rHerestring
static const int mode_masks
[] = {
/* rCreate */ O_TRUNC
| O_CREAT
| O_WRONLY
,
/* rAppend */ O_APPEND
| O_CREAT
| O_WRONLY
extern int rc_open(const char *name
, redirtype m
) {
if ((unsigned) m
>= arraysize(mode_masks
))
panic("bad mode passed to rc_open");
return open(name
, mode_masks
[m
], 0666);