00001
00002
00003
00004
00005
00006
00007
00008 #include "config.h"
00009
00010 #ifndef lint
00011 static const char revid[] = "$Id: os__open_8c-source.html,v 1.1 2008/06/08 10:21:26 sebdiaz Exp $";
00012 #endif
00013
00014 #ifndef NO_SYSTEM_INCLUDES
00015 #include <sys/types.h>
00016
00017 #include <fcntl.h>
00018 #include <string.h>
00019 #endif
00020
00021 #include "db_int.h"
00022
00023
00024
00025
00026
00027
00028
00029 int
00030 CDB___os_open(dbenv, name, flags, mode, fhp)
00031 DB_ENV *dbenv;
00032 const char *name;
00033 u_int32_t flags;
00034 int mode;
00035 DB_FH *fhp;
00036 {
00037 int oflags, ret;
00038
00039 oflags = 0;
00040
00041
00042
00043
00044
00045
00046 if (LF_ISSET(DB_OSO_CREATE))
00047 oflags |= O_CREAT;
00048
00049 if (LF_ISSET(DB_OSO_EXCL))
00050 oflags |= O_EXCL;
00051
00052 #if defined(O_DSYNC) && defined(XXX_NEVER_SET)
00053
00054
00055
00056
00057
00058
00059
00060
00061 if (LF_ISSET(DB_OSO_LOG))
00062 oflags |= O_DSYNC;
00063 #endif
00064
00065 if (LF_ISSET(DB_OSO_RDONLY))
00066 oflags |= O_RDONLY;
00067 else
00068 oflags |= O_RDWR;
00069
00070 if (LF_ISSET(DB_OSO_TRUNC))
00071 oflags |= O_TRUNC;
00072
00073
00074 if ((ret = CDB___os_openhandle(dbenv, name, oflags, mode, fhp)) != 0)
00075 return (ret);
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087 if (LF_ISSET(DB_OSO_TEMP))
00088 (void)CDB___os_unlink(dbenv, name);
00089
00090 return (0);
00091 }