]> git.eshelyaron.com Git - emacs.git/commitdiff
Simplify binary I/O configuration
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 20 Feb 2015 03:20:35 +0000 (19:20 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 20 Feb 2015 03:21:32 +0000 (19:21 -0800)
* lib-src/etags.c: Include <sysstdio.h> rather than <stdio.h>.
(process_file_name, analyze_regex): Use FOPEN_BINARY rather than
hard-coded "b".
* src/lread.c (Fload): Prefer FOPEN_TEXT and FOPEN_BINARY to
#ifdef DOS_NT.
* src/sysstdio.h: Add copyright notice.  Include <fcntl.h>.
(FOPEN_BINARY, FOPEN_TEXT): New macros.
* src/xfaces.c (Fx_load_color_file): Use FOPEN_TEXT, since POSIX
doesn't guarantee that "t" will work.

lib-src/ChangeLog
lib-src/etags.c
src/ChangeLog
src/lread.c
src/sysstdio.h
src/xfaces.c

index 05511164706f40a2636b4cc7ef79f2ca04e30076..4ac9638102fcc163d010508c8383bd2015b2e753 100644 (file)
@@ -1,3 +1,10 @@
+2015-02-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Simplify binary I/O configuration
+       * etags.c: Include <sysstdio.h> rather than <stdio.h>.
+       (process_file_name, analyze_regex): Use FOPEN_BINARY rather than
+       hard-coded "b".
+
 2015-02-19  Eli Zaretskii  <eliz@gnu.org>
 
        * etags.c (process_file_name) [!DOS_NT]: Use "r", not "rb" in the
index cdac9289230380c54ca4b17cbb67b7e6b9b74291..7f1875547cff73988a88add9df43736055b49176 100644 (file)
@@ -122,7 +122,7 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
 #include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
-#include <stdio.h>
+#include <sysstdio.h>
 #include <ctype.h>
 #include <errno.h>
 #include <sys/types.h>
@@ -1532,18 +1532,11 @@ process_file_name (char *file, language *lang)
   if (real_name == compressed_name)
     {
       char *cmd = concat (compr->command, " ", real_name);
-
-      /* Unix implementations of 'popen' generally don't support "rb", whereas
-        DOS_NT needs it.  */
-#ifdef DOS_NT
-      inf = popen (cmd, "rb");
-#else
-      inf = popen (cmd, "r");
-#endif
+      inf = popen (cmd, "r" FOPEN_BINARY);
       free (cmd);
     }
   else
-    inf = fopen (real_name, "rb");
+    inf = fopen (real_name, "r" FOPEN_BINARY);
   if (inf == NULL)
     {
       perror (real_name);
@@ -5607,7 +5600,7 @@ analyze_regex (char *regex_arg)
        char *regexfile = regex_arg + 1;
 
        /* regexfile is a file containing regexps, one per line. */
-       regexfp = fopen (regexfile, "rb");
+       regexfp = fopen (regexfile, "r" FOPEN_BINARY);
        if (regexfp == NULL)
          pfatal (regexfile);
        linebuffer_init (&regexbuf);
index 38af1d83a6d617b5c4f5da1fb5396ec4e6ec44bb..1126dde74502059aa9b8b5e7a519e82e3f2722e9 100644 (file)
@@ -1,3 +1,12 @@
+2015-02-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Simplify binary I/O configuration
+       * lread.c (Fload): Prefer FOPEN_TEXT and FOPEN_BINARY to #ifdef DOS_NT.
+       * sysstdio.h: Add copyright notice.  Include <fcntl.h>.
+       (FOPEN_BINARY, FOPEN_TEXT): New macros.
+       * xfaces.c (Fx_load_color_file): Use FOPEN_TEXT, since POSIX
+       doesn't guarantee that "t" will work.
+
 2015-02-19  Eli Zaretskii  <eliz@gnu.org>
 
        * keyboard.c (read_char): Make sure this_single_command_key_start
index b42849fc4143d32a7634fd3717049caa7deca21a..ae175296ddbdbd61018428c0b4e81901c8556c3f 100644 (file)
@@ -1033,13 +1033,9 @@ Return t if the file exists and loads successfully.  */)
   bool compiled = 0;
   Lisp_Object handler;
   bool safe_p = 1;
-  const char *fmode = "r";
+  const char *fmode = "r" FOPEN_TEXT;
   int version;
 
-#ifdef DOS_NT
-  fmode = "rt";
-#endif /* DOS_NT */
-
   CHECK_STRING (file);
 
   /* If file name is magic, call the handler.  */
@@ -1223,10 +1219,7 @@ Return t if the file exists and loads successfully.  */)
          compiled = 1;
 
          efound = ENCODE_FILE (found);
-
-#ifdef DOS_NT
-         fmode = "rb";
-#endif /* DOS_NT */
+         fmode = "r" FOPEN_BINARY;
 
           /* openp already checked for newness, no point doing it again.
              FIXME would be nice to get a message when openp
index e9dfb6960590e85ecbc6626aef69c4a8346c1991..c97c4f883fc9ac079c2ab82cdfd979d03efbdeaa 100644 (file)
@@ -1,2 +1,31 @@
+/* Standard I/O for Emacs.
+
+Copyright 2013-2015 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include <fcntl.h>
 #include <stdio.h>
+
 extern FILE *emacs_fopen (char const *, char const *);
+
+#if O_BINARY
+# define FOPEN_BINARY "b"
+# define FOPEN_TEXT "t"
+#else
+# define FOPEN_BINARY ""
+# define FOPEN_TEXT ""
+#endif
index d0fe8726cbb3eaa5335c1857dbb532a6e0bb0730..fcfdbc0ee4ff8ee6dbc1fc8f53ef8782d17f1cb6 100644 (file)
@@ -6187,7 +6187,7 @@ where R,G,B are numbers between 0 and 255 and name is an arbitrary string.  */)
   abspath = Fexpand_file_name (filename, Qnil);
 
   block_input ();
-  fp = emacs_fopen (SSDATA (abspath), "rt");
+  fp = emacs_fopen (SSDATA (abspath), "r" FOPEN_TEXT);
   if (fp)
     {
       char buf[512];