/* { 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 ); }