diff options
Diffstat (limited to 'sysdeps/posix/mk-stdiolim.c')
-rw-r--r-- | sysdeps/posix/mk-stdiolim.c | 57 |
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); } |