summaryrefslogtreecommitdiff
path: root/file.c
diff options
context:
space:
mode:
authorkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-20 05:00:45 +0000
committerkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-20 05:00:45 +0000
commitc8a3b2ba8bb18752c4d0aee6483f516e827f4bc9 (patch)
treee4cba5f6085292e09eb2e73cd1db69f3912ffaa8 /file.c
parent7e96fb252a79fbdd9c34924edddbf781937d50b8 (diff)
* io.c (Init_IO): removed all rb_file_const() into file.c.
* file.c (Init_File): replace with rb_file_const() with rb_define_const() because RDoc don't care rb_file_const. [Bug #5530] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37746 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'file.c')
-rw-r--r--file.c81
1 files changed, 77 insertions, 4 deletions
diff --git a/file.c b/file.c
index 1b62ca36e1..eb70914b1a 100644
--- a/file.c
+++ b/file.c
@@ -5513,12 +5513,85 @@ Init_File(void)
rb_define_method(rb_cFile, "flock", rb_file_flock, 1);
+ /*
+ * Document-module: File::Constants
+ *
+ * File::Constants provides file-related constants. All possible
+ * file constants are listed in the documentation but they may not all
+ * be present on your platform.
+ *
+ * If the underlying platform doesn't define a constant the corresponding
+ * Ruby constant is not defined.
+ *
+ * Your platform documentations (e.g. man open(2)) may describe more
+ * detailed information.
+ */
rb_mFConst = rb_define_module_under(rb_cFile, "Constants");
rb_include_module(rb_cIO, rb_mFConst);
- rb_file_const("LOCK_SH", INT2FIX(LOCK_SH));
- rb_file_const("LOCK_EX", INT2FIX(LOCK_EX));
- rb_file_const("LOCK_UN", INT2FIX(LOCK_UN));
- rb_file_const("LOCK_NB", INT2FIX(LOCK_NB));
+
+ /* open for reading only */
+ rb_define_const(rb_mFConst, "RDONLY", INT2FIX(O_RDONLY));
+ /* open for writing only */
+ rb_define_const(rb_mFConst, "WRONLY", INT2FIX(O_WRONLY));
+ /* open for reading and writing */
+ rb_define_const(rb_mFConst, "RDWR", INT2FIX(O_RDWR));
+ /* append on each write */
+ rb_define_const(rb_mFConst, "APPEND", INT2FIX(O_APPEND));
+ /* create file if it does not exist */
+ rb_define_const(rb_mFConst, "CREAT", INT2FIX(O_CREAT));
+ /* error if CREAT and the file exists */
+ rb_define_const(rb_mFConst, "EXCL", INT2FIX(O_EXCL));
+#if defined(O_NDELAY) || defined(O_NONBLOCK)
+# ifndef O_NONBLOCK
+# define O_NONBLOCK O_NDELAY
+# endif
+ /* do not block on open or for data to become available */
+ rb_define_const(rb_mFConst, "NONBLOCK", INT2FIX(O_NONBLOCK));
+#endif
+ /* truncate size to 0 */
+ rb_define_const(rb_mFConst, "TRUNC", INT2FIX(O_TRUNC));
+#ifdef O_NOCTTY
+ /* not to make opened IO the controlling terminal device */
+ rb_define_const(rb_mFConst, "NOCTTY", INT2FIX(O_NOCTTY));
+#endif
+#ifndef O_BINARY
+# define O_BINARY 0
+#endif
+ /* disable line code conversion */
+ rb_define_const(rb_mFConst, "BINARY", INT2FIX(O_BINARY));
+#ifdef O_SYNC
+ /* any write operation perform synchronously */
+ rb_define_const(rb_mFConst, "SYNC", INT2FIX(O_SYNC));
+#endif
+#ifdef O_DSYNC
+ /* any write operation perform synchronously except some meta data */
+ rb_define_const(rb_mFConst, "DSYNC", INT2FIX(O_DSYNC));
+#endif
+#ifdef O_RSYNC
+ /* any read operation perform synchronously. used with SYNC or DSYNC. */
+ rb_define_const(rb_mFConst, "RSYNC", INT2FIX(O_RSYNC));
+#endif
+#ifdef O_NOFOLLOW
+ /* do not follow symlinks */
+ rb_define_const(rb_mFConst, "NOFOLLOW", INT2FIX(O_NOFOLLOW)); /* FreeBSD, Linux */
+#endif
+#ifdef O_NOATIME
+ /* do not change atime */
+ rb_define_const(rb_mFConst, "NOATIME", INT2FIX(O_NOATIME)); /* Linux */
+#endif
+#ifdef O_DIRECT
+ /* Try to minimize cache effects of the I/O to and from this file. */
+ rb_define_const(rb_mFConst, "DIRECT", INT2FIX(O_DIRECT));
+#endif
+
+ /* shared lock. see File#flock */
+ rb_define_const(rb_mFConst, "LOCK_SH", INT2FIX(LOCK_SH));
+ /* exclusive lock. see File#flock */
+ rb_define_const(rb_mFConst, "LOCK_EX", INT2FIX(LOCK_EX));
+ /* unlock. see File#flock */
+ rb_define_const(rb_mFConst, "LOCK_UN", INT2FIX(LOCK_UN));
+ /* non-blocking lock. used with LOCK_SH or LOCK_EX. see File#flock */
+ rb_define_const(rb_mFConst, "LOCK_NB", INT2FIX(LOCK_NB));
/* Document-const: NULL
*