public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Carlos O'Donell <carlos@redhat.com>
To: Adhemerval Zanella <adhemerval.zanella@linaro.org>,
	libc-alpha@sourceware.org, Florian Weimer <fweimer@redhat.com>
Subject: Re: [PATCH v5 2/5] libio: Do not autogenerate stdio_lim.h
Date: Mon, 27 Mar 2023 08:44:33 -0400	[thread overview]
Message-ID: <ff50af1e-084f-935a-8655-0cb7baab895d@redhat.com> (raw)
In-Reply-To: <20230306191642.347001-3-adhemerval.zanella@linaro.org>

On 3/6/23 14:16, Adhemerval Zanella wrote:
> From: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
> 
> Instead define the required fields in system dependend files.  Thee only

s/Thee/The/g

> 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.

Agreed.

> 
> It avoid a circular dependendy when including stdio.h in

s/avoid/avoids/g

> gen-as-const-headers files.

All the better!

> 
> Checked on x86_64-linux-gnu and i686-linux-gnu

LGTM. All 6 values defined.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>

> ---
>  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(-)
>  rename stdio-common/stdio_lim.h.in => sysdeps/mach/hurd/bits/stdio_lim.h (72%)
>  delete mode 100644 sysdeps/posix/Makefile
>  create mode 100644 sysdeps/unix/sysv/linux/bits/stdio_lim.h
> 
> 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

OK. Define 1/6, 2/6.

>  
>  /* 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

OK. Define 3/6.

> +# if !defined __USE_XOPEN2K || defined __USE_GNU
> +#  define L_cuserid 9

OK. Define 4/6.

> +# endif
> +#endif
> +
> +#undef  FOPEN_MAX
> +#define FOPEN_MAX 16

OK. Define 5/6.

> +
>  
>  #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

OK. Define 6/6.

> +
> +#endif /* bits/stdio_lim.h */

-- 
Cheers,
Carlos.


  parent reply	other threads:[~2023-03-27 12:44 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-06 19:16 [PATCH v5 0/5] Remove --with-default-link option Adhemerval Zanella
2023-03-06 19:16 ` [PATCH v5 1/5] Move libc_freeres_ptrs and libc_subfreeres to hidden/weak functions Adhemerval Zanella
2023-03-06 19:16 ` [PATCH v5 2/5] libio: Do not autogenerate stdio_lim.h Adhemerval Zanella
2023-03-06 20:17   ` Noah Goldstein
2023-03-27 12:44   ` Carlos O'Donell [this message]
2023-03-06 19:16 ` [PATCH v5 3/5] libio: Remove the usage of __libc_IO_vtables Adhemerval Zanella
2023-03-27 14:11   ` Carlos O'Donell
2023-03-06 19:16 ` [PATCH v5 4/5] Remove --with-default-link configure option Adhemerval Zanella
2023-03-06 19:16 ` [PATCH v5 5/5] Remove set-hooks.h from generic includes Adhemerval Zanella

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ff50af1e-084f-935a-8655-0cb7baab895d@redhat.com \
    --to=carlos@redhat.com \
    --cc=adhemerval.zanella@linaro.org \
    --cc=fweimer@redhat.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).