public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc] libio: Do not autogenerate stdio_lim.h
@ 2023-03-27 19:56 Adhemerval Zanella
  0 siblings, 0 replies; only message in thread
From: Adhemerval Zanella @ 2023-03-27 19:56 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f65ca70deaf38db4ca12458e74cefd8ad9063956

commit f65ca70deaf38db4ca12458e74cefd8ad9063956
Author: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
Date:   Mon Mar 6 15:53:55 2023 -0300

    libio: Do not autogenerate stdio_lim.h
    
    Instead define the required fields in system dependend files.  The only
    system dependent definition is FILENAME_MAX, which should match POSIX
    PATH_MAX, and it is obtained from either kernel UAPI or mach headers.
    Currently set pre-defined value from current kernels.
    
    It avoids a circular dependendy when including stdio.h in
    gen-as-const-headers files.
    
    Checked on x86_64-linux-gnu and i686-linux-gnu
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>

Diff:
---
 Makerules                                          | 40 ----------------------
 Rules                                              |  3 --
 libio/stdio.h                                      | 19 ++++++----
 .../mach/hurd/bits/stdio_lim.h                     | 17 ++-------
 sysdeps/posix/Makefile                             |  5 ---
 sysdeps/unix/sysv/linux/bits/stdio_lim.h           | 28 +++++++++++++++
 6 files changed, 43 insertions(+), 69 deletions(-)

diff --git a/Makerules b/Makerules
index f6071eab50..57b3f093c4 100644
--- a/Makerules
+++ b/Makerules
@@ -1351,46 +1351,6 @@ endif
 
 endif
 \f
-# These will have been set by sysdeps/posix/Makefile.
-L_tmpnam  ?= 1
-TMP_MAX   ?= 0
-L_ctermid ?= 1
-L_cuserid ?= 1
-
-stdio_lim = $(common-objpfx)bits/stdio_lim.h
-
-$(stdio_lim:lim.h=%.h) $(stdio_lim:lim.h=%.d): $(stdio_lim:lim.h=%.st); @:
-$(stdio_lim:h=st): $(..)stdio-common/stdio_lim.h.in $(..)Rules \
-		   $(common-objpfx)config.make
-	$(make-target-directory)
-	{ echo '#include "$(..)posix/bits/posix1_lim.h"';		\
-	} |								\
-	$(CC) -E -dM -MD -MP -MF $(@:st=dT) -MT '$(@:st=h) $(@:st=d)' 	\
-	      $(CPPUNDEFS) $(+includes) -xc - -o $(@:st=hT)
-	sed $(sed-remove-objpfx) $(sed-remove-dotdot)			\
-	    $(@:st=dT) > $(@:st=dt)
-	mv -f $(@:st=dt) $(@:st=d)
-	fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; 	\
-	filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`;	\
-	fopen_max=$${fopen_max:-16};					\
-	filename_max=$${filename_max:-1024};				\
-	sed -e "s/@FOPEN_MAX@/$$fopen_max/"				\
-	    -e "s/@FILENAME_MAX@/$$filename_max/"			\
-	    -e "s/@L_tmpnam@/$(L_tmpnam)/"				\
-	    -e "s/@TMP_MAX@/$(TMP_MAX)/"				\
-	    -e "s/@L_ctermid@/$(L_ctermid)/"				\
-	    -e "s/@L_cuserid@/$(L_cuserid)/"				\
-	    $< > $(@:st=h.new)
-	$(move-if-change) $(@:st=h.new) $(@:st=h)
-# Remove these last so that they can be examined if something went wrong.
-	rm -f $(@:st=hT) $(@:st=dT) $(@:st=dt)
-	touch $@
-# Get dependencies.
-ifndef no_deps
--include $(stdio_lim:h=d)
-endif
-common-generated += bits/stdio_lim.h bits/stdio_lim.d bits/stdio_lim.st
-\f
 FORCE:
 
 .PHONY: echo-headers
diff --git a/Rules b/Rules
index fdff415fdc..5e945d7347 100644
--- a/Rules
+++ b/Rules
@@ -60,9 +60,6 @@ ifneq	"$(findstring env,$(origin common-generated))" ""
 common-generated :=
 endif
 
-# See below.  This must be set before Makerules processes it.
-before-compile += $(common-objpfx)bits/stdio_lim.h
-
 include $(..)Makerules
 
 .PHONY: subdir_lib
diff --git a/libio/stdio.h b/libio/stdio.h
index 857f02888d..686c40f28d 100644
--- a/libio/stdio.h
+++ b/libio/stdio.h
@@ -120,18 +120,23 @@ typedef __fpos64_t fpos64_t;
 # define P_tmpdir	"/tmp"
 #endif
 
+#define L_tmpnam 20
+#define TMP_MAX 238328
 
 /* Get the values:
-   L_tmpnam	How long an array of chars must be to be passed to `tmpnam'.
-   TMP_MAX	The minimum number of unique filenames generated by tmpnam
-		(and tempnam when it uses tmpnam's name space),
-		or tempnam (the two are separate).
-   L_ctermid	How long an array to pass to `ctermid'.
-   L_cuserid	How long an array to pass to `cuserid'.
-   FOPEN_MAX	Minimum number of files that can be open at once.
    FILENAME_MAX	Maximum length of a filename.  */
 #include <bits/stdio_lim.h>
 
+#ifdef __USE_POSIX
+# define L_ctermid 9
+# if !defined __USE_XOPEN2K || defined __USE_GNU
+#  define L_cuserid 9
+# endif
+#endif
+
+#undef  FOPEN_MAX
+#define FOPEN_MAX 16
+
 
 #if __GLIBC_USE (ISOC2X)
 /* Maximum length of printf output for a NaN.  */
diff --git a/stdio-common/stdio_lim.h.in b/sysdeps/mach/hurd/bits/stdio_lim.h
similarity index 72%
rename from stdio-common/stdio_lim.h.in
rename to sysdeps/mach/hurd/bits/stdio_lim.h
index bc7aacc35e..f3ef0be96e 100644
--- a/stdio-common/stdio_lim.h.in
+++ b/sysdeps/mach/hurd/bits/stdio_lim.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1994-2023 Free Software Foundation, Inc.
+/* System specific stdio.h definitions.  Hurd version.
+   Copyright (C) 2023 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -22,18 +23,6 @@
 # error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
 #endif
 
-#define L_tmpnam @L_tmpnam@
-#define TMP_MAX @TMP_MAX@
-#define FILENAME_MAX @FILENAME_MAX@
-
-#ifdef __USE_POSIX
-# define L_ctermid @L_ctermid@
-# if !defined __USE_XOPEN2K || defined __USE_GNU
-#  define L_cuserid @L_cuserid@
-# endif
-#endif
-
-#undef  FOPEN_MAX
-#define FOPEN_MAX @FOPEN_MAX@
+#define FILENAME_MAX 1024
 
 #endif /* bits/stdio_lim.h */
diff --git a/sysdeps/posix/Makefile b/sysdeps/posix/Makefile
deleted file mode 100644
index b58aa6aadb..0000000000
--- a/sysdeps/posix/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# These affect the generated bits/stdio_lim.h file.
-L_tmpnam  = 20
-TMP_MAX   = 238328
-L_ctermid = 9
-L_cuserid = 9
diff --git a/sysdeps/unix/sysv/linux/bits/stdio_lim.h b/sysdeps/unix/sysv/linux/bits/stdio_lim.h
new file mode 100644
index 0000000000..4c3f36d7ce
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/bits/stdio_lim.h
@@ -0,0 +1,28 @@
+/* System specific stdio.h definitions.  Linux version.
+   Copyright (C) 2023 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_STDIO_LIM_H
+#define _BITS_STDIO_LIM_H 1
+
+#ifndef _STDIO_H
+# error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
+#endif
+
+#define FILENAME_MAX 4096
+
+#endif /* bits/stdio_lim.h */

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-03-27 19:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-27 19:56 [glibc] libio: Do not autogenerate stdio_lim.h Adhemerval Zanella

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).