diff options
author | Roland McGrath <roland@gnu.org> | 2004-10-20 10:04:57 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2004-10-20 10:04:57 +0000 |
commit | 4b359a27dd5c9d76e507db782a8e907e20c1df95 (patch) | |
tree | 4f3828f0c7b8c93b35716f90f88b0b326180f323 | |
parent | 13772215fc3cfd7b15674698e276cd18d44f1c1f (diff) | |
download | glibc-4b359a27dd5c9d76e507db782a8e907e20c1df95.tar.gz glibc-4b359a27dd5c9d76e507db782a8e907e20c1df95.tar.xz glibc-4b359a27dd5c9d76e507db782a8e907e20c1df95.zip |
2004-10-20 Roland McGrath <roland@redhat.com>
* sysdeps/gnu/errlist-compat.awk: Don't bail if Versions gives a count higher than ERR_MAX reports. Instead, emit a #define ERR_MAX. * sysdeps/gnu/Makefile ($(objpfx)errlist-compat.h): New target. (generated): Add errlist-compat.h. * sysdeps/gnu/errlist.awk: Make output #include <errlist-compat.h> to define ERR_MAX and use that for table size.
-rw-r--r-- | sysdeps/gnu/Makefile | 8 | ||||
-rw-r--r-- | sysdeps/gnu/errlist-compat.awk | 10 | ||||
-rw-r--r-- | sysdeps/gnu/errlist.awk | 13 |
3 files changed, 25 insertions, 6 deletions
diff --git a/sysdeps/gnu/Makefile b/sysdeps/gnu/Makefile index dee0c67bcf..0fc33213ae 100644 --- a/sysdeps/gnu/Makefile +++ b/sysdeps/gnu/Makefile @@ -49,10 +49,14 @@ endif # Make it unwritable so noone will edit it by mistake. -chmod a-w $@T mv -f $@T $@ -generated += errlist-compat.c +$(objpfx)errlist-compat.h: $(objpfx)errlist-compat.c + sed -n '1p;/ERR_MAX/p' $< > $@T + -chmod a-w $@T + mv -f $@T $@ +generated += errlist-compat.c errlist-compat.h # This will force the generation above to happy if need be. -$(foreach o,.d $(object-suffixes),$(objpfx)errlist$o):$(objpfx)errlist-compat.c +$(foreach o,.d $(object-suffixes),$(objpfx)errlist$o):$(objpfx)errlist-compat.h endif ifeq ($(subdir),login) diff --git a/sysdeps/gnu/errlist-compat.awk b/sysdeps/gnu/errlist-compat.awk index b243a96bc4..db827f3f70 100644 --- a/sysdeps/gnu/errlist-compat.awk +++ b/sysdeps/gnu/errlist-compat.awk @@ -1,5 +1,5 @@ # awk script to generate errlist-compat.c -# Copyright (C) 2002 Free Software Foundation, Inc. +# Copyright (C) 2002, 2004 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 @@ -59,7 +59,7 @@ END { count = maxerr + 1; - if (highest != count) { + if (highest < count) { printf "*** errlist.c count %d vs Versions sys_errlist@%s count %d\n", \ count, highest_version, highest > "/dev/stderr"; exit 1; @@ -79,6 +79,12 @@ END { print "/* This file was generated by errlist-compat.awk; DO NOT EDIT! */\n"; print "#include <shlib-compat.h>\n"; + if (highest > count) { + printf "*** errlist.c count %d inflated to %s count %d (old errno.h?)\n", \ + count, highest_version, highest > "/dev/stderr"; + printf "#define ERR_MAX %d\n\n", highest; + } + for (old in compat) { new = compat[old]; n = vcount[old]; diff --git a/sysdeps/gnu/errlist.awk b/sysdeps/gnu/errlist.awk index 952cb8073c..3f074ed482 100644 --- a/sysdeps/gnu/errlist.awk +++ b/sysdeps/gnu/errlist.awk @@ -1,4 +1,4 @@ -# Copyright (C) 1991-1999, 2002 Free Software Foundation, Inc. +# Copyright (C) 1991-1999,2002,2004 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 @@ -47,7 +47,16 @@ BEGIN { print "#endif"; print ""; - print "const char *const _sys_errlist_internal[] ="; + print "#if !defined EMIT_ERR_MAX && !defined ERRLIST_NO_COMPAT"; + print "# include <errlist-compat.h>"; + print "#endif"; + print "#ifdef ERR_MAX"; + print "# define ERRLIST_SIZE ERR_MAX + 1"; + print "#else" + print "# define ERRLIST_SIZE"; + print "#endif"; + + print "const char *const _sys_errlist_internal[ERRLIST_SIZE] ="; print " {"; print " [0] = N_(\"Success\")," } |