about summary refs log tree commit diff
path: root/sysdeps/posix/mk-stdiolim.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/posix/mk-stdiolim.c')
-rw-r--r--sysdeps/posix/mk-stdiolim.c57
1 files changed, 32 insertions, 25 deletions
diff --git a/sysdeps/posix/mk-stdiolim.c b/sysdeps/posix/mk-stdiolim.c
index c268b642de..8858ebeae5 100644
--- a/sysdeps/posix/mk-stdiolim.c
+++ b/sysdeps/posix/mk-stdiolim.c
@@ -42,27 +42,48 @@ main()
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n\
    Boston, MA 02111-1307, USA.  */\n\
 \n\
-#ifndef _STDIO_H\n\
+#if !defined _STDIO_H && !defined __need_FOPEN_MAX\n\
 # error \"Never include <bits/stdio_lim.h> directly; use <stdio.h> instead.\"\n\
 #endif\n\
 \n");
 
   /* These values correspond to the code in sysdeps/posix/tempname.c.
      Change the values here if you change that code.  */
-  printf ("#define L_tmpnam %u\n", sizeof ("/usr/tmp/") + 9);
-  printf ("#define TMP_MAX %u\n", 62 * 62 * 62);
+  puts ("#ifndef __need_FOPEN_MAX");
+  printf ("# define L_tmpnam %u\n", sizeof ("/usr/tmp/") + 9);
+  printf ("# define TMP_MAX %u\n", 62 * 62 * 62);
 
-  puts   ("#ifdef __USE_POSIX");
-  printf ("# define L_ctermid %u\n", sizeof ("/dev/tty"));
-  printf ("# define L_cuserid 9\n");
-  puts   ("#endif");
+  puts   ("# ifdef __USE_POSIX");
+  printf ("#  define L_ctermid %u\n", sizeof ("/dev/tty"));
+  printf ("#  define L_cuserid 9\n");
+  puts   ("# endif");
+
+  printf (" #define FILENAME_MAX %u\n",
+#ifdef	PATH_MAX
+	  PATH_MAX
+#else
+	 /* This is supposed to be the size needed to hold the longest file
+	    name string the implementation guarantees can be opened.
+	    PATH_MAX not being defined means the actual limit on the length
+	    of a file name is runtime-variant (or it is unlimited).  ISO
+	    says in such a case FILENAME_MAX should be a good size to
+	    allocate for a file name string.  POSIX.1 guarantees that a
+	    file name up to _POSIX_PATH_MAX chars long can be opened, so
+	    this value must be at least that.  */
+	  1024		/* _POSIX_PATH_MAX is 255.  */
+#endif
+	  );
+
+  puts ("#endif\n");
 
   /* POSIX does not require that OPEN_MAX and PATH_MAX be defined, so
      <bits/local_lim.h> will not define them if they are run-time
      variant (which is the case in the Hurd).  ISO still requires
      that FOPEN_MAX and FILENAME_MAX be defined, however.  */
 
-  printf ("#define FOPEN_MAX %u\n",
+  puts ("#if defined __need_FOPEN_MAX && !defined __defined_FOPEN_MAX");
+  puts ("# define __defined_FOPEN_MAX");
+  printf ("# define FOPEN_MAX %u\n",
 #ifdef	OPEN_MAX
 
 	  OPEN_MAX
@@ -76,22 +97,8 @@ main()
 #endif
 
 	  );
+  puts ("#endif");
+  puts ("#undef __need_FOPEN_MAX");
 
-  printf ("#define FILENAME_MAX %u\n",
-#ifdef	PATH_MAX
-	  PATH_MAX
-#else
-	 /* This is supposed to be the size needed to hold the longest file
-	    name string the implementation guarantees can be opened.
-	    PATH_MAX not being defined means the actual limit on the length
-	    of a file name is runtime-variant (or it is unlimited).  ISO
-	    says in such a case FILENAME_MAX should be a good size to
-	    allocate for a file name string.  POSIX.1 guarantees that a
-	    file name up to _POSIX_PATH_MAX chars long can be opened, so
-	    this value must be at least that.  */
-	  1024		/* _POSIX_PATH_MAX is 255.  */
-#endif
-	  );
-
-  exit(0);
+  exit (0);
 }