summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--file.c81
-rw-r--r--io.c52
3 files changed, 84 insertions, 56 deletions
diff --git a/ChangeLog b/ChangeLog
index 45f66f4521..10ed3a43cc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Tue Nov 20 13:58:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * 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]
+
Tue Nov 20 12:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
* ruby.c (usage_msg): Fix typo [ruby-core:49205] [Bug #7327]
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
*
diff --git a/io.c b/io.c
index 5cd50d8f23..bacc6fc641 100644
--- a/io.c
+++ b/io.c
@@ -11631,58 +11631,6 @@ Init_IO(void)
rb_define_method(rb_cFile, "initialize", rb_file_initialize, -1);
- /* open for reading only */
- rb_file_const("RDONLY", INT2FIX(O_RDONLY));
- /* open for writing only */
- rb_file_const("WRONLY", INT2FIX(O_WRONLY));
- /* open for reading and writing */
- rb_file_const("RDWR", INT2FIX(O_RDWR));
- /* append on each write */
- rb_file_const("APPEND", INT2FIX(O_APPEND));
- /* create file if it does not exist */
- rb_file_const("CREAT", INT2FIX(O_CREAT));
- /* error if CREAT and the file exists */
- rb_file_const("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_file_const("NONBLOCK", INT2FIX(O_NONBLOCK));
-#endif
- /* truncate size to 0 */
- rb_file_const("TRUNC", INT2FIX(O_TRUNC));
-#ifdef O_NOCTTY
- /* not to make opened IO the controlling terminal device */
- rb_file_const("NOCTTY", INT2FIX(O_NOCTTY));
-#endif
-#ifndef O_BINARY
-# define O_BINARY 0
-#endif
- /* disable line code conversion */
- rb_file_const("BINARY", INT2FIX(O_BINARY));
-#ifdef O_SYNC
- rb_file_const("SYNC", INT2FIX(O_SYNC));
-#endif
-#ifdef O_DSYNC
- rb_file_const("DSYNC", INT2FIX(O_DSYNC));
-#endif
-#ifdef O_RSYNC
- rb_file_const("RSYNC", INT2FIX(O_RSYNC));
-#endif
-#ifdef O_NOFOLLOW
- /* do not follow symlinks */
- rb_file_const("NOFOLLOW", INT2FIX(O_NOFOLLOW)); /* FreeBSD, Linux */
-#endif
-#ifdef O_NOATIME
- /* do not change atime */
- rb_file_const("NOATIME", INT2FIX(O_NOATIME)); /* Linux */
-#endif
-#ifdef O_DIRECT
- /* Try to minimize cache effects of the I/O to and from this file. */
- rb_file_const("DIRECT", INT2FIX(O_DIRECT));
-#endif
-
sym_mode = ID2SYM(rb_intern("mode"));
sym_perm = ID2SYM(rb_intern("perm"));
sym_extenc = ID2SYM(rb_intern("external_encoding"));