40 lines
796 B
C
40 lines
796 B
C
/* { dg-do compile } */
|
|
/* { dg-options "-c -O2 -Wextra" } */
|
|
#define O_RDONLY (1<<0)
|
|
#define O_WRONLY (1<<1)
|
|
#define O_RDWR (O_RDONLY|O_WRONLY)
|
|
#define O_CREAT (1<<3)
|
|
#define O_TRUNC (1<<6)
|
|
|
|
typedef enum {
|
|
OM_READ = 0,
|
|
OM_WRITE,
|
|
OM_READWRITE_NOCREATE,
|
|
OM_READWRITE_CREATE
|
|
} OpenMode;
|
|
|
|
extern int open(const char *name, int mode);
|
|
|
|
void open_file(const char *filename, const OpenMode rw)
|
|
{
|
|
int mode = 0;
|
|
|
|
switch( rw )
|
|
{
|
|
case OM_WRITE:
|
|
mode = O_WRONLY|O_CREAT|O_TRUNC;
|
|
break;
|
|
case OM_READ:
|
|
mode = O_RDONLY;
|
|
break;
|
|
case OM_READWRITE_NOCREATE:
|
|
mode = O_RDWR;
|
|
break;
|
|
case OM_READWRITE_CREATE:
|
|
mode = O_RDWR|O_CREAT|O_TRUNC;
|
|
break;
|
|
}
|
|
|
|
open( filename, mode );
|
|
}
|