summaryrefslogtreecommitdiffstats
path: root/debian/htdig/htdig-3.2.0b6/db/os_oflags.c
diff options
context:
space:
mode:
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/db/os_oflags.c')
-rw-r--r--debian/htdig/htdig-3.2.0b6/db/os_oflags.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/db/os_oflags.c b/debian/htdig/htdig-3.2.0b6/db/os_oflags.c
new file mode 100644
index 00000000..472b8d00
--- /dev/null
+++ b/debian/htdig/htdig-3.2.0b6/db/os_oflags.c
@@ -0,0 +1,77 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997, 1998, 1999
+ * Sleepycat Software. All rights reserved.
+ */
+
+#include "db_config.h"
+
+#ifndef lint
+static const char sccsid[] = "@(#)os_oflags.c 11.1 (Sleepycat) 7/25/99";
+#endif /* not lint */
+
+#ifndef NO_SYSTEM_INCLUDES
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <fcntl.h>
+#endif
+
+#include "db_int.h"
+
+/*
+ * CDB___db_oflags --
+ * Convert open(2) flags to DB flags.
+ *
+ * PUBLIC: u_int32_t CDB___db_oflags __P((int));
+ */
+u_int32_t
+CDB___db_oflags(oflags)
+ int oflags;
+{
+ u_int32_t dbflags;
+
+ /*
+ * XXX
+ * Convert POSIX 1003.1 open(2) flags to DB flags. Not an exact
+ * science as most POSIX implementations don't have a flag value
+ * for O_RDONLY, it's simply the lack of a write flag.
+ */
+ dbflags = 0;
+ if (oflags & O_CREAT)
+ dbflags |= DB_CREATE;
+ if (!(oflags & (O_RDWR | O_WRONLY)) || oflags & O_RDONLY)
+ dbflags |= DB_RDONLY;
+ if (oflags & O_TRUNC)
+ dbflags |= DB_TRUNCATE;
+ return (dbflags);
+}
+
+/*
+ * CDB___db_omode --
+ * Convert a permission string to the correct open(2) flags.
+ *
+ * PUBLIC: int CDB___db_omode __P((const char *));
+ */
+int
+CDB___db_omode(perm)
+ const char *perm;
+{
+ int mode;
+
+ mode = 0;
+ if (perm[0] == 'r')
+ mode |= S_IRUSR;
+ if (perm[1] == 'w')
+ mode |= S_IWUSR;
+ if (perm[2] == 'r')
+ mode |= S_IRGRP;
+ if (perm[3] == 'w')
+ mode |= S_IWGRP;
+ if (perm[4] == 'r')
+ mode |= S_IROTH;
+ if (perm[5] == 'w')
+ mode |= S_IWOTH;
+ return (mode);
+}