aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-04-24 08:00:37 +0000
committerJakub Jelinek <jakub@redhat.com>2009-04-24 08:00:37 +0000
commit7dec33c08e4755e72d1280e48e61f0141dfc1da5 (patch)
tree22aa7aa8ebc1f795e180c8c0d99cdda7d2a3ffef
parentUpdated to fedora-glibc-20090416T1610 (diff)
downloadglibc-cvs/fedora-glibc-2_9_90-20.tar.gz
glibc-cvs/fedora-glibc-2_9_90-20.tar.bz2
glibc-cvs/fedora-glibc-2_9_90-20.zip
Updated to fedora-glibc-20090424T0747cvs/fedora-glibc-2_9_90-20
-rw-r--r--ChangeLog146
-rw-r--r--Makeconfig2
-rw-r--r--Makefile2
-rw-r--r--NEWS5
-rw-r--r--elf/dl-open.c12
-rw-r--r--elf/rtld.c16
-rw-r--r--fedora/branch.mk4
-rw-r--r--fedora/glibc.spec.in7
-rw-r--r--gshadow/Makefile38
-rw-r--r--gshadow/Versions21
-rw-r--r--gshadow/fgetsgent.c88
-rw-r--r--gshadow/fgetsgent_r.c76
-rw-r--r--gshadow/getsgent.c30
-rw-r--r--gshadow/getsgent_r.c30
-rw-r--r--gshadow/getsgnam.c30
-rw-r--r--gshadow/getsgnam_r.c30
-rw-r--r--gshadow/gshadow.h131
-rw-r--r--gshadow/putsgent.c71
-rw-r--r--gshadow/sgetsgent.c78
-rw-r--r--gshadow/sgetsgent_r.c75
-rw-r--r--gshadow/tst-gshadow.c141
-rw-r--r--include/gshadow.h15
-rw-r--r--locale/programs/locarchive.c40
-rw-r--r--localedata/ChangeLog18
-rw-r--r--localedata/SUPPORTED1
-rw-r--r--localedata/locales/en_PH6
-rw-r--r--localedata/locales/es_CL6
-rw-r--r--localedata/locales/es_CO6
-rw-r--r--localedata/locales/es_MX6
-rw-r--r--localedata/locales/es_US3
-rw-r--r--localedata/locales/es_VE6
-rw-r--r--localedata/locales/fil_PH3
-rw-r--r--localedata/locales/ik_CA4
-rw-r--r--localedata/locales/iu_CA4
-rw-r--r--localedata/locales/tl_PH4
-rw-r--r--malloc/arena.c5
-rw-r--r--malloc/hooks.c13
-rw-r--r--malloc/malloc.c96
-rw-r--r--misc/preadv.c2
-rw-r--r--misc/preadv64.c2
-rw-r--r--misc/pwritev.c2
-rw-r--r--misc/pwritev64.c2
-rw-r--r--misc/sys/uio.h8
-rw-r--r--nptl/ChangeLog7
-rw-r--r--nptl/pthread_attr_setschedparam.c8
-rw-r--r--nss/Makefile4
-rw-r--r--nss/Versions7
-rw-r--r--nss/nss_files/files-parse.c88
-rw-r--r--nss/nss_files/files-sgrp.c38
-rw-r--r--nss/nsswitch.conf1
-rw-r--r--nss/sgrp-lookup.c24
-rw-r--r--po/ca.po1457
-rw-r--r--resolv/res_send.c16
-rw-r--r--shadow/Makefile4
-rw-r--r--shadow/sgetspent_r.c10
-rw-r--r--shadow/tst-shadow.c84
-rw-r--r--stdio-common/printf.h2
-rw-r--r--stdio-common/reg-modifier.c4
-rw-r--r--stdlib/random_r.c4
-rw-r--r--stdlib/strfmon_l.c25
-rw-r--r--sysdeps/generic/paths.h1
-rw-r--r--sysdeps/posix/preadv.c4
-rw-r--r--sysdeps/posix/pwritev.c34
-rw-r--r--sysdeps/posix/readv.c2
-rw-r--r--sysdeps/sh/sh4/setjmp.S4
-rw-r--r--sysdeps/unix/make-syscalls.sh1
-rw-r--r--sysdeps/unix/sysv/linux/kernel-features.h4
-rw-r--r--sysdeps/unix/sysv/linux/paths.h1
-rw-r--r--sysdeps/unix/sysv/linux/preadv.c10
-rw-r--r--sysdeps/unix/sysv/linux/pwritev.c10
-rw-r--r--sysdeps/unix/sysv/linux/sys/mount.h6
-rw-r--r--sysdeps/unix/sysv/linux/sys/timex.h14
72 files changed, 2332 insertions, 827 deletions
diff --git a/ChangeLog b/ChangeLog
index bbe8284c45..ed8a7becf3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,149 @@
+2009-04-23 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9920]
+ * stdlib/random_r.c (__srandom_r): Change type of word to int32_t
+ to get consistency between 32 and 64 bit architectures.
+
+ [BZ #10052]
+ * sysdeps/unix/make-syscalls.sh: Add rule to create target
+ directory for dummy syscall rules.
+ Patch by Chris Steinbroner <hesh@pobox.com>.
+
+2009-04-23 Aurelien Jarno <aurelien@aurel32.net>
+
+ [BZ #10092]
+ * sysdeps/unix/sysv/linux/sys/mount.h: Define MNT_DETACH and
+ MNT_EXPIRE.
+
+2009-04-23 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/preadv.c: The kernel API changed. Adjust.
+ * sysdeps/unix/sysv/linux/pwritev.c: Likewise.
+
+2009-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/posix/pwritev.c (PWRITEV): Fix up comment. Copy
+ data from vector to temporary buffer and call PWRITEV after it
+ instead of vice versa.
+ * sysdeps/posix/preadv.c: Fix up comment.
+ * misc/preadv.c: Likewise.
+ * misc/preadv64.c: Likewise.
+ * misc/pwritev.c: Likewise.
+ * misc/pwritev64.c: Likewise.
+ * misc/sys/uio.h (preadv, pwritev, preadv64, pwritev64): Likewise.
+
+2009-04-23 Ulrich Drepper <drepper@redhat.com>
+
+ * shadow/sgetspent_r.c (__sgetspent_r): Recognize too small buffers.
+
+ * shadow/Makefile (tests): Add tst-shadow.
+ * shadow/tst-shadow.c: New file.
+
+ [BZ #9955]
+ * gshadow/Makefile: New file.
+ * gshadow/Versions: New file.
+ * gshadow/fgetsgent.c: New file.
+ * gshadow/fgetsgent_r.c: New file.
+ * gshadow/getsgent.c: New file.
+ * gshadow/getsgent_r.c: New file.
+ * gshadow/getsgnam.c: New file.
+ * gshadow/getsgnam_r.c: New file.
+ * gshadow/gshadow.h: New file.
+ * gshadow/putsgent.c: New file.
+ * gshadow/sgetsgent.c: New file.
+ * gshadow/sgetsgent_r.c: New file.
+ * gshadow/tst-gshadow.c: New file.
+ * include/gshadow.h: New file.
+ * Makeconfig (all-subdirs): Add gshadow.
+ * Makefile (installed-headers): Add gshadow/gshadow.h.
+ * nss/Makefile (databases): Add sgrp.
+ * nss/Versions: Add gshadow functions as private exports.
+ * nss/nsswitch.conf: Add gshadow entry.
+ * nss/sgrp-lookup.c: New file.
+ * nss/nss_files/files-parse.c: Add STRING_LIST macro. Rewrite
+ parse_list to handle STRING_LIST and TRAILING_LIST_PARSER.
+ * nss/nss_files/files-sgrp.c: New file.
+ * sysdeps/generic/paths.h: Add _PATH_GSHADOW.
+ * sysdeps/unix/sysv/linux/paths.h: Likewise.
+
+2009-04-22 Ulrich Drepper <drepper@redhat.com>
+
+ * stdio-common/printf.h: Add missing const to register_printf_modifier.
+ * stdio-common/reg-modifier.c: Likewise.
+
+2009-04-22 Andrew Stubbs <ams@codesourcery.com>
+
+ * sysdeps/sh/sh4/setjmp.S (__sigsetjmp): Adjust JB_SIZE when there
+ is no FPU.
+
+2009-04-20 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10086]
+ * sysdeps/unix/sysv/linux/sys/timex.h: Add definitions from kernel
+ headers up to 2.6.30.
+
+ * po/ca.po: Update from translation team.
+
+2009-04-19 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10069]
+ * elf/dl-open.c (dl_open_worker): We cannot guarantee that we can load
+ an object that uses static TLS if the TLS modid is higher than the
+ reserve we always allocate. At least for multi-threaded code.
+
+2009-04-18 Ulrich Drepper <drepper@redhat.com>
+
+ * stdlib/strfmon_l.c (__vstrfmon_l): Don't wrap when computing width.
+ Numerically stable check for valid width.
+
+ * locale/programs/locarchive.c (open_archive): Map the entire file
+ and not just the administrative data.
+ (add_locale): When we find a hash sum match compare the content
+ to be sure.
+
+ * malloc/malloc.c (malloc_info): Output address space information.
+
+2009-04-17 Ulrich Drepper <drepper@redhat.com>
+
+ * malloc/malloc.c (malloc_info): Also output system memory information.
+
+ * sysdeps/unix/sysv/linux/kernel-features.h: All supported
+ architectures have preadv/pwritev in 2.6.30.
+
+ * sysdeps/posix/preadv.c: Reading of zero bytes is no error.
+ * sysdeps/posix/readv.c: Likewise.
+ Reported by Markus Armbruster <armbru@redhat.com>.
+
+ * malloc/hooks.c (top_check): Force hook value into register.
+
+2009-04-16 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * elf/rtld.c (dl_main): Really call _dl_sysdep_start_cleanup after all
+ calls to _dl_relocate_object.
+
+2009-04-16 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9957]
+ * malloc/malloc.c (force_reg): Define.
+ (sYSMALLOc): Load hook variable into variable
+ before test and force into register.
+ (sYSTRIm): Likewise.
+ (public_mALLOc): Force hook value into register.
+ (public_fREe): Likewise.
+ (public_rEALLOc): Likewise.
+ (public_mEMALIGn): Likewise.
+ (public_vALLOc): Likewise.
+ (public_pVALLOc): Likewise.
+ (public_cALLOc): Likewise.
+ (__posix_memalign): Likewise.
+ * malloc/arena.c (ptmalloc_init): Load hook variable into variable
+ before test and force into register.
+ * malloc/hooks.c (top_check): Likewise.
+ (public_sET_STATe): Pretty printing.
+
+ * resolv/res_send.c (send_dg): Don't just ignore the result we got
+ in case we only receive one reply in single-request mode.
+
2009-04-16 Jakub Jelinek <jakub@redhat.com>
* elf/dl-open.c (_dl_open): Bump GL(dl_nns) to 1 if no libraries
diff --git a/Makeconfig b/Makeconfig
index c904a83957..64886aee26 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -918,7 +918,7 @@ endif
all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
stdlib stdio-common libio malloc string wcsmbs time dirent \
grp pwd posix io termios resource misc socket sysvipc gmon \
- gnulib iconv iconvdata wctype manual shadow po argp \
+ gnulib iconv iconvdata wctype manual shadow gshadow po argp \
crypt nss localedata timezone rt conform debug \
$(add-on-subdirs) $(dlfcn) $(binfmt-subdir)
diff --git a/Makefile b/Makefile
index a5df22be67..cab5ff3a17 100644
--- a/Makefile
+++ b/Makefile
@@ -271,7 +271,7 @@ installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
crypt/crypt.h ctype/ctype.h debug/execinfo.h \
dirent/dirent.h dlfcn/dlfcn.h elf/elf.h elf/link.h \
gmon/sys/gmon.h gmon/sys/gmon_out.h gmon/sys/profil.h \
- grp/grp.h iconv/iconv.h iconv/gconv.h \
+ grp/grp.h gshadow/gshadow.h iconv/iconv.h iconv/gconv.h \
$(wildcard inet/netinet/*.h) \
$(wildcard inet/arpa/*.h inet/protocols/*.h) \
inet/aliases.h inet/ifaddrs.h inet/netinet/ip6.h \
diff --git a/NEWS b/NEWS
index d7e52f8982..411c2c3bc8 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes. 2009-4-13
+GNU C Library NEWS -- history of user-visible changes. 2009-4-23
Copyright (C) 1992-2008, 2009 Free Software Foundation, Inc.
See the end for copying conditions.
@@ -44,6 +44,9 @@ Version 2.10
and extend existing format specifiers.
Implemented by Ulrich Drepper.
+* Handling for group shadow files has been added.
+ Implemented by Ulrich Drepper.
+
Version 2.9
diff --git a/elf/dl-open.c b/elf/dl-open.c
index 458cf0cd13..c3f0e42d5e 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -490,6 +490,18 @@ dl_open_worker (void *a)
if (imap->l_need_tls_init)
{
+ /* For static TLS we have to allocate the memory here
+ and now. This includes allocating memory in the DTV.
+ But we cannot change any DTV other than our own. So,
+ if we cannot guarantee that there is room in the DTV
+ we don't even try it and fail the load.
+
+ XXX We could track the minimum DTV slots allocated in
+ all threads. */
+ if (! RTLD_SINGLE_THREAD_P && imap->l_tls_modid > DTV_SURPLUS)
+ _dl_signal_error (0, "dlopen", NULL, N_("\
+cannot load any more object with static TLS"));
+
imap->l_need_tls_init = 0;
#ifdef SHARED
/* Update the slot information data for at least the
diff --git a/elf/rtld.c b/elf/rtld.c
index 69c27cc4ac..f97de9ac08 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -2181,8 +2181,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
if (l->l_tls_blocksize != 0 && tls_init_tp_called)
_dl_add_to_slotinfo (l);
}
-
- _dl_sysdep_start_cleanup ();
}
else
{
@@ -2237,13 +2235,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
HP_TIMING_DIFF (relocate_time, start, stop);
- /* Do any necessary cleanups for the startup OS interface code.
- We do these now so that no calls are made after rtld re-relocation
- which might be resolved to different functions than we expect.
- We cannot do this before relocating the other objects because
- _dl_relocate_object might need to call `mprotect' for DT_TEXTREL. */
- _dl_sysdep_start_cleanup ();
-
/* Now enable profiling if needed. Like the previous call,
this has to go here because the calls it makes should use the
rtld versions of the functions (particularly calloc()), but it
@@ -2299,6 +2290,13 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
HP_TIMING_ACCUM_NT (relocate_time, add);
}
+ /* Do any necessary cleanups for the startup OS interface code.
+ We do these now so that no calls are made after rtld re-relocation
+ which might be resolved to different functions than we expect.
+ We cannot do this before relocating the other objects because
+ _dl_relocate_object might need to call `mprotect' for DT_TEXTREL. */
+ _dl_sysdep_start_cleanup ();
+
#ifdef SHARED
/* Auditing checkpoint: we have added all objects. */
if (__builtin_expect (GLRO(dl_naudit) > 0, 0))
diff --git a/fedora/branch.mk b/fedora/branch.mk
index 253166a762..f025d9286f 100644
--- a/fedora/branch.mk
+++ b/fedora/branch.mk
@@ -3,5 +3,5 @@ glibc-branch := fedora
glibc-base := HEAD
DIST_BRANCH := devel
COLLECTION := dist-f8
-fedora-sync-date := 2009-04-16 16:10 UTC
-fedora-sync-tag := fedora-glibc-20090416T1610
+fedora-sync-date := 2009-04-24 07:47 UTC
+fedora-sync-tag := fedora-glibc-20090424T0747
diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in
index 85bcd04cc6..493e4c6057 100644
--- a/fedora/glibc.spec.in
+++ b/fedora/glibc.spec.in
@@ -19,7 +19,7 @@
Summary: The GNU libc libraries
Name: glibc
Version: @glibcversion@
-Release: 19
+Release: 20
# GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries.
# Things that are linked directly into dynamically linked programs
# and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional
@@ -1009,6 +1009,11 @@ rm -f *.filelist*
%endif
%changelog
+* Fri Apr 24 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-20
+- update from trunk
+ - fix p{read,write}v{,64} (#497429, #497434)
+ - fix strfmon (#496386)
+
* Thu Apr 16 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-19
- update from trunk
- fix dlopen from statically linked binaries (#495830)
diff --git a/gshadow/Makefile b/gshadow/Makefile
new file mode 100644
index 0000000000..0c3d42b317
--- /dev/null
+++ b/gshadow/Makefile
@@ -0,0 +1,38 @@
+# Copyright (C) 2009 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, write to the Free
+# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+# 02111-1307 USA.
+
+#
+# Makefile for gshadow.
+#
+subdir := gshadow
+
+headers = gshadow.h
+routines = getsgent getsgnam sgetsgent fgetsgent putsgent \
+ getsgent_r getsgnam_r sgetsgent_r fgetsgent_r
+
+tests = tst-gshadow
+
+CFLAGS-getsgent_r.c = -fexceptions
+CFLAGS-getsgent.c = -fexceptions
+CFLAGS-fgetsgent.c = -fexceptions
+CFLAGS-fgetsgent_r.c = -fexceptions -D_IO_MTSAFE_IO
+CFLAGS-putsgent.c = -fexceptions -D_IO_MTSAFE_IO
+CFLAGS-getsgnam.c = -fexceptions
+CFLAGS-getsgnam_r.c = -fexceptions
+
+include ../Rules
diff --git a/gshadow/Versions b/gshadow/Versions
new file mode 100644
index 0000000000..00a410b74f
--- /dev/null
+++ b/gshadow/Versions
@@ -0,0 +1,21 @@
+libc {
+ GLIBC_2.10 {
+ # e*
+ endsgent;
+
+ # f*
+ fgetsgent; fgetsgent_r;
+
+ # g*
+ getsgent; getsgent_r; getsgnam; getsgnam_r; getsgent_r; getsgnam_r;
+
+ # p*
+ putsgent;
+
+ # s*
+ setsgent;
+
+ # s*
+ sgetsgent; sgetsgent_r;
+ }
+}
diff --git a/gshadow/fgetsgent.c b/gshadow/fgetsgent.c
new file mode 100644
index 0000000000..098edfe52e
--- /dev/null
+++ b/gshadow/fgetsgent.c
@@ -0,0 +1,88 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <bits/libc-lock.h>
+#include <gshadow.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+/* A reasonable size for a buffer to start with. */
+#define BUFLEN_SPWD 1024
+
+/* We need to protect the dynamic buffer handling. */
+__libc_lock_define_initialized (static, lock);
+
+libc_freeres_ptr (static char *buffer);
+
+/* Read one shadow entry from the given stream. */
+struct sgrp *
+fgetsgent (FILE *stream)
+{
+ static size_t buffer_size;
+ static struct sgrp resbuf;
+ fpos_t pos;
+ struct sgrp *result;
+ int save;
+
+ if (fgetpos (stream, &pos) != 0)
+ return NULL;
+
+ /* Get lock. */
+ __libc_lock_lock (lock);
+
+ /* Allocate buffer if not yet available. */
+ if (buffer == NULL)
+ {
+ buffer_size = BUFLEN_SPWD;
+ buffer = malloc (buffer_size);
+ }
+
+ while (buffer != NULL
+ && (__fgetsgent_r (stream, &resbuf, buffer, buffer_size, &result)
+ == ERANGE))
+ {
+ char *new_buf;
+ buffer_size += BUFLEN_SPWD;
+ new_buf = realloc (buffer, buffer_size);
+ if (new_buf == NULL)
+ {
+ /* We are out of memory. Free the current buffer so that the
+ process gets a chance for a normal termination. */
+ save = errno;
+ free (buffer);
+ __set_errno (save);
+ }
+ buffer = new_buf;
+
+ /* Reset the stream. */
+ if (fsetpos (stream, &pos) != 0)
+ buffer = NULL;
+ }
+
+ if (buffer == NULL)
+ result = NULL;
+
+ /* Release lock. Preserve error value. */
+ save = errno;
+ __libc_lock_unlock (lock);
+ __set_errno (save);
+
+ return result;
+}
diff --git a/gshadow/fgetsgent_r.c b/gshadow/fgetsgent_r.c
new file mode 100644
index 0000000000..25c05bf7ea
--- /dev/null
+++ b/gshadow/fgetsgent_r.c
@@ -0,0 +1,76 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <ctype.h>
+#include <errno.h>
+#include <gshadow.h>
+#include <stdio.h>
+
+/* Define a line parsing function using the common code
+ used in the nss_files module. */
+
+#define STRUCTURE sgrp
+#define ENTNAME sgent
+#define EXTERN_PARSER 1
+struct sgent_data {};
+
+#include <nss/nss_files/files-parse.c>
+
+
+/* Read one shadow entry from the given stream. */
+int
+__fgetsgent_r (FILE *stream, struct sgrp *resbuf, char *buffer, size_t buflen,
+ struct sgrp **result)
+{
+ char *p;
+
+ _IO_flockfile (stream);
+ do
+ {
+ buffer[buflen - 1] = '\xff';
+ p = fgets_unlocked (buffer, buflen, stream);
+ if (p == NULL && feof_unlocked (stream))
+ {
+ _IO_funlockfile (stream);
+ *result = NULL;
+ __set_errno (ENOENT);
+ return errno;
+ }
+ if (p == NULL || buffer[buflen - 1] != '\xff')
+ {
+ _IO_funlockfile (stream);
+ *result = NULL;
+ __set_errno (ERANGE);
+ return errno;
+ }
+
+ /* Skip leading blanks. */
+ while (isspace (*p))
+ ++p;
+ } while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
+ /* Parse the line. If it is invalid, loop to
+ get the next line of the file to parse. */
+ ! parse_line (buffer, (void *) resbuf, (void *) buffer, buflen,
+ &errno));
+
+ _IO_funlockfile (stream);
+
+ *result = resbuf;
+ return 0;
+}
+weak_alias (__fgetsgent_r, fgetsgent_r)
diff --git a/gshadow/getsgent.c b/gshadow/getsgent.c
new file mode 100644
index 0000000000..544227c537
--- /dev/null
+++ b/gshadow/getsgent.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <gshadow.h>
+
+
+#define LOOKUP_TYPE struct sgrp
+#define SETFUNC_NAME setsgent
+#define GETFUNC_NAME getsgent
+#define ENDFUNC_NAME endsgent
+#define DATABASE_NAME gshadow
+#define BUFLEN 1024
+
+#include "../nss/getXXent.c"
diff --git a/gshadow/getsgent_r.c b/gshadow/getsgent_r.c
new file mode 100644
index 0000000000..336110ec89
--- /dev/null
+++ b/gshadow/getsgent_r.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <gshadow.h>
+
+
+#define LOOKUP_TYPE struct sgrp
+#define SETFUNC_NAME setsgent
+#define GETFUNC_NAME getsgent
+#define ENDFUNC_NAME endsgent
+#define DATABASE_NAME gshadow
+#define BUFLEN 1024
+
+#include "../nss/getXXent_r.c"
diff --git a/gshadow/getsgnam.c b/gshadow/getsgnam.c
new file mode 100644
index 0000000000..7cd5b44210
--- /dev/null
+++ b/gshadow/getsgnam.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <gshadow.h>
+
+
+#define LOOKUP_TYPE struct sgrp
+#define FUNCTION_NAME getsgnam
+#define DATABASE_NAME gshadow
+#define ADD_PARAMS const char *name
+#define ADD_VARIABLES name
+#define BUFLEN 1024
+
+#include "../nss/getXXbyYY.c"
diff --git a/gshadow/getsgnam_r.c b/gshadow/getsgnam_r.c
new file mode 100644
index 0000000000..c89fb06bfa
--- /dev/null
+++ b/gshadow/getsgnam_r.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <gshadow.h>
+
+
+#define LOOKUP_TYPE struct sgrp
+#define FUNCTION_NAME getsgnam
+#define DATABASE_NAME gshadow
+#define ADD_PARAMS const char *name
+#define ADD_VARIABLES name
+#define BUFLEN 1024
+
+#include "../nss/getXXbyYY_r.c"
diff --git a/gshadow/gshadow.h b/gshadow/gshadow.h
new file mode 100644
index 0000000000..d0b28aeaa3
--- /dev/null
+++ b/gshadow/gshadow.h
@@ -0,0 +1,131 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* Declaration of types and functions for shadow group suite. */
+
+#ifndef _GSHADOW_H
+#define _GSHADOW_H 1
+
+#include <features.h>
+
+#include <paths.h>
+
+#define __need_FILE
+#include <stdio.h>
+#define __need_size_t
+#include <stddef.h>
+
+/* Path to the user database files. */
+#define GSHADOW _PATH_GSHADOW
+
+
+__BEGIN_DECLS
+
+/* Structure of the group file. */
+struct sgrp
+ {
+ char *sg_namp; /* Group name. */
+ char *sg_passwd; /* Encrypted password. */
+ char **sg_adm; /* Group administrator list. */
+ char **sg_mem; /* Group member list. */
+ };
+
+
+/* Open database for reading.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern void setsgent (void);
+
+/* Close database.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern void endsgent (void);
+
+/* Get next entry from database, perhaps after opening the file.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern struct sgrp *getsgent (void);
+
+/* Get shadow entry matching NAME.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern struct sgrp *getsgnam (__const char *__name);
+
+/* Read shadow entry from STRING.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern struct sgrp *sgetsgent (__const char *__string);
+
+/* Read next shadow entry from STREAM.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern struct sgrp *fgetsgent (FILE *__stream);
+
+/* Write line containing shadow password entry to stream.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern int putsgent (__const struct sgrp *__g, FILE *__stream);
+
+
+#ifdef __USE_MISC
+/* Reentrant versions of some of the functions above.
+
+ These functions are not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation they are cancellation points and
+ therefore not marked with __THROW. */
+extern int getsgent_r (struct sgrp *__result_buf, char *__buffer,
+ size_t __buflen, struct sgrp **__result);
+
+extern int getsgnam_r (__const char *__name, struct sgrp *__result_buf,
+ char *__buffer, size_t __buflen,
+ struct sgrp **__result);
+
+extern int sgetsgent_r (__const char *__string, struct sgrp *__result_buf,
+ char *__buffer, size_t __buflen,
+ struct sgrp **__result);
+
+extern int fgetsgent_r (FILE *__stream, struct sgrp *__result_buf,
+ char *__buffer, size_t __buflen,
+ struct sgrp **__result);
+#endif /* misc */
+
+__END_DECLS
+
+#endif /* gshadow.h */
diff --git a/gshadow/putsgent.c b/gshadow/putsgent.c
new file mode 100644
index 0000000000..938a71334c
--- /dev/null
+++ b/gshadow/putsgent.c
@@ -0,0 +1,71 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <gshadow.h>
+
+#define _S(x) x ? x : ""
+
+
+/* Write an entry to the given stream.
+ This must know the format of the group file. */
+int
+putsgent (const struct sgrp *g, FILE *stream)
+{
+ int errors = 0;
+
+ _IO_flockfile (stream);
+
+ if (fprintf (stream, "%s:%s:", g->sg_namp, _S (g->sg_passwd)) < 0)
+ ++errors;
+
+ bool first = true;
+ char **sp = g->sg_adm;
+ if (sp != NULL)
+ while (*sp != NULL)
+ {
+ if (fprintf (stream, "%s%s", first ? "" : ",", *sp++) < 0)
+ {
+ ++errors;
+ break;
+ }
+ first = false;
+ }
+ if (putc_unlocked (':', stream) == EOF)
+ ++errors;
+
+ first = true;
+ sp = g->sg_mem;
+ if (sp != NULL)
+ while (*sp != NULL)
+ {
+ if (fprintf (stream, "%s%s", first ? "" : ",", *sp++) < 0)
+ {
+ ++errors;
+ break;
+ }
+ first = false;
+ }
+ if (putc_unlocked ('\n', stream) == EOF)
+ ++errors;
+
+ _IO_funlockfile (stream);
+
+ return errors ? -1 : 0;
+}
diff --git a/gshadow/sgetsgent.c b/gshadow/sgetsgent.c
new file mode 100644
index 0000000000..94e131566b
--- /dev/null
+++ b/gshadow/sgetsgent.c
@@ -0,0 +1,78 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <bits/libc-lock.h>
+#include <gshadow.h>
+#include <stdlib.h>
+
+
+/* A reasonable size for a buffer to start with. */
+#define BUFLEN_SPWD 1024
+
+/* We need to protect the dynamic buffer handling. */
+__libc_lock_define_initialized (static, lock);
+
+/* Read one shadow entry from the given stream. */
+struct sgrp *
+sgetsgent (const char *string)
+{
+ static char *buffer;
+ static size_t buffer_size;
+ static struct sgrp resbuf;
+ struct sgrp *result;
+ int save;
+
+ /* Get lock. */
+ __libc_lock_lock (lock);
+
+ /* Allocate buffer if not yet available. */
+ if (buffer == NULL)
+ {
+ buffer_size = BUFLEN_SPWD;
+ buffer = malloc (buffer_size);
+ }
+
+ while (buffer != NULL
+ && __sgetsgent_r (string, &resbuf, buffer, buffer_size, &result) != 0
+ && errno == ERANGE)
+ {
+ char *new_buf;
+ buffer_size += BUFLEN_SPWD;
+ new_buf = realloc (buffer, buffer_size);
+ if (new_buf == NULL)
+ {
+ /* We are out of memory. Free the current buffer so that the
+ process gets a chance for a normal termination. */
+ save = errno;
+ free (buffer);
+ __set_errno (save);
+ }
+ buffer = new_buf;
+ }
+
+ if (buffer == NULL)
+ result = NULL;
+
+ /* Release lock. Preserve error value. */
+ save = errno;
+ __libc_lock_unlock (lock);
+ __set_errno (save);
+
+ return result;
+}
diff --git a/gshadow/sgetsgent_r.c b/gshadow/sgetsgent_r.c
new file mode 100644
index 0000000000..2292719af9
--- /dev/null
+++ b/gshadow/sgetsgent_r.c
@@ -0,0 +1,75 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <ctype.h>
+#include <errno.h>
+#include <gshadow.h>
+#include <stdio.h>
+#include <string.h>
+
+/* Define a line parsing function using the common code
+ used in the nss_files module. */
+
+#define STRUCTURE sgrp
+#define ENTNAME sgent
+struct sgent_data {};
+
+
+#define TRAILING_LIST_MEMBER sg_mem
+#define TRAILING_LIST_SEPARATOR_P(c) ((c) == ',')
+#include <nss/nss_files/files-parse.c>
+LINE_PARSER
+(,
+ STRING_FIELD (result->sg_namp, ISCOLON, 0);
+ if (line[0] == '\0'
+ && (result->sg_namp[0] == '+' || result->sg_namp[0] == '-'))
+ {
+ result->sg_passwd = NULL;
+ result->sg_adm = NULL;
+ result->sg_mem = NULL;
+ }
+ else
+ {
+ STRING_FIELD (result->sg_passwd, ISCOLON, 0);
+ STRING_LIST (result->sg_adm, ':');
+ }
+ )
+
+
+/* Read one shadow entry from the given stream. */
+int
+__sgetsgent_r (const char *string, struct sgrp *resbuf, char *buffer,
+ size_t buflen, struct sgrp **result)
+{
+ char *sp;
+ if (string < buffer || string >= buffer + buflen)
+ {
+ buffer[buflen - 1] = '\0';
+ sp = strncpy (buffer, string, buflen);
+ if (buffer[buflen - 1] != '\0')
+ return ERANGE;
+ }
+ else
+ sp = (char *) string;
+
+ int parse_result = parse_line (sp, resbuf, (void *) buffer, buflen, &errno);
+ *result = parse_result > 0 ? resbuf : NULL;
+
+ return *result == NULL ? errno : 0;
+}
+weak_alias (__sgetsgent_r, sgetsgent_r)
diff --git a/gshadow/tst-gshadow.c b/gshadow/tst-gshadow.c
new file mode 100644
index 0000000000..8b469b723d
--- /dev/null
+++ b/gshadow/tst-gshadow.c
@@ -0,0 +1,141 @@
+#include <gshadow.h>
+#include <stdio.h>
+#include <string.h>
+
+
+static const struct sgrp data[] =
+ {
+ { (char *) "one", (char *) "pwdone",
+ (char *[]) { (char *) "admoneone", (char *) "admonetwo",
+ (char *) "admonethree", NULL },
+ (char *[]) { (char *) "memoneone", (char *) "memonetwo",
+ (char *) "memonethree", NULL } },
+ { (char *) "two", (char *) "pwdtwo",
+ (char *[]) { (char *) "admtwoone", (char *) "admtwotwo", NULL },
+ (char *[]) { (char *) "memtwoone", (char *) "memtwotwo",
+ (char *) "memtwothree", NULL } },
+ { (char *) "three", (char *) "pwdthree",
+ (char *[]) { (char *) "admthreeone", (char *) "admthreetwo", NULL },
+ (char *[]) { (char *) "memthreeone", (char *) "memthreetwo", NULL } },
+ { (char *) "four", (char *) "pwdfour",
+ (char *[]) { (char *) "admfourone", (char *) "admfourtwo", NULL },
+ (char *[]) { NULL } },
+ { (char *) "five", (char *) "pwdfive",
+ (char *[]) { NULL },
+ (char *[]) { (char *) "memfiveone", (char *) "memfivetwo", NULL } },
+ };
+#define ndata (sizeof (data) / sizeof (data[0]))
+
+
+static int
+do_test (void)
+{
+ FILE *fp = tmpfile ();
+ if (fp == NULL)
+ {
+ puts ("cannot open temporary file");
+ return 1;
+ }
+
+ for (size_t i = 0; i < ndata; ++i)
+ if (putsgent (&data[i], fp) != 0)
+ {
+ printf ("putsgent call %zu failed\n", i + 1);
+ return 1;
+ }
+
+ rewind (fp);
+
+ int result = 0;
+ int seen = -1;
+ struct sgrp *g;
+ while ((g = fgetsgent (fp)) != NULL)
+ {
+ ++seen;
+ if (strcmp (g->sg_namp, data[seen].sg_namp) != 0)
+ {
+ printf ("sg_namp of entry %d does not match: %s vs %s\n",
+ seen + 1, g->sg_namp, data[seen].sg_namp);
+ result = 1;
+ }
+ if (strcmp (g->sg_passwd, data[seen].sg_passwd) != 0)
+ {
+ printf ("sg_passwd of entry %d does not match: %s vs %s\n",
+ seen + 1, g->sg_passwd, data[seen].sg_passwd);
+ result = 1;
+ }
+ if (g->sg_adm == NULL)
+ {
+ printf ("sg_adm of entry %d is NULL\n", seen + 1);
+ result = 1;
+ }
+ else
+ {
+ int i = 1;
+ char **sp1 = g->sg_adm;
+ char **sp2 = data[seen].sg_adm;
+ while (*sp1 != NULL && *sp2 != NULL)
+ {
+ if (strcmp (*sp1, *sp2) != 0)
+ {
+ printf ("sg_adm[%d] of entry %d does not match: %s vs %s\n",
+ i, seen + 1, *sp1, *sp2);
+ result = 1;
+ }
+ ++sp1;
+ ++sp2;
+ ++i;
+ }
+ if (*sp1 == NULL && *sp2 != NULL)
+ {
+ printf ("sg_adm of entry %d has too few entries\n", seen + 1);
+ result = 1;
+ }
+ else if (*sp1 != NULL && *sp2 == NULL)
+ {
+ printf ("sg_adm of entry %d has too many entries\n", seen + 1);
+ result = 1;
+ }
+ }
+ if (g->sg_mem == NULL)
+ {
+ printf ("sg_mem of entry %d is NULL\n", seen + 1);
+ result = 1;
+ }
+ else
+ {
+ int i = 1;
+ char **sp1 = g->sg_mem;
+ char **sp2 = data[seen].sg_mem;
+ while (*sp1 != NULL && *sp2 != NULL)
+ {
+ if (strcmp (*sp1, *sp2) != 0)
+ {
+ printf ("sg_mem[%d] of entry %d does not match: %s vs %s\n",
+ i, seen + 1, *sp1, *sp2);
+ result = 1;
+ }
+ ++sp1;
+ ++sp2;
+ ++i;
+ }
+ if (*sp1 == NULL && *sp2 != NULL)
+ {
+ printf ("sg_mem of entry %d has too few entries\n", seen + 1);
+ result = 1;
+ }
+ else if (*sp1 != NULL && *sp2 == NULL)
+ {
+ printf ("sg_mem of entry %d has too many entries\n", seen + 1);
+ result = 1;
+ }
+ }
+ }
+
+ fclose (fp);
+
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/include/gshadow.h b/include/gshadow.h
new file mode 100644
index 0000000000..8a981f688a
--- /dev/null
+++ b/include/gshadow.h
@@ -0,0 +1,15 @@
+#ifndef _GSHADOW_H
+#include <gshadow/gshadow.h>
+
+extern int __fgetsgent_r (FILE *stream, struct sgrp *resbuf, char *buffer,
+ size_t buflen, struct sgrp **result);
+extern int __sgetsgent_r (const char *string, struct sgrp *resbuf,
+ char *buffer, size_t buflen, struct sgrp **result);
+
+struct parser_data;
+extern int _nss_files_parse_sgent (char *line, struct sgrp *result,
+ struct parser_data *data,
+ size_t datalen, int *errnop);
+libc_hidden_proto (_nss_files_parse_sgent)
+
+#endif
diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
index 9e316d3a0d..e6f7f7fa48 100644
--- a/locale/programs/locarchive.c
+++ b/locale/programs/locarchive.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -380,7 +380,7 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
= ((char *) ah->addr
+ oldnamehashtab[oldlocrecarray[cnt - 1].cnt].name_offset);
- add_alias (&new_ah,
+ add_alias (&new_ah,
((char *) ah->addr
+ oldnamehashtab[oldlocrecarray[cnt].cnt].name_offset),
0, oldname, &last_locrec_offset);
@@ -517,9 +517,9 @@ open_archive (struct locarhandle *ah, bool readonly)
ah->len = (head.sumhash_offset
+ head.sumhash_size * sizeof (struct sumhashent));
- /* Now we know how large the administrative information part is.
- Map all of it. */
- ah->addr = mmap64 (NULL, ah->len, PROT_READ | (readonly ? 0 : PROT_WRITE),
+ /* Map the entire file. We might need to compare the category data
+ in the file with the newly added data. */
+ ah->addr = mmap64 (NULL, st.st_size, PROT_READ | (readonly ? 0 : PROT_WRITE),
MAP_SHARED, fd, 0);
if (ah->addr == MAP_FAILED)
{
@@ -760,10 +760,32 @@ add_locale (struct locarhandle *ah,
{
if (memcmp (data[cnt].sum, sumhashtab[idx].sum, 16) == 0)
{
- /* Found it. */
- file_offsets[cnt] = sumhashtab[idx].file_offset;
- --num_new_offsets;
- break;
+ /* Check the content, there could be a collision of
+ the hash sum.
+
+ Unfortunately the sumhashent record does not include
+ the size of the stored data. So we have to search for
+ it. */
+ locrecent = (struct locrecent *) ((char *) ah->addr
+ + head->locrectab_offset);
+ size_t iloc;
+ for (iloc = 0; iloc < head->locrectab_used; ++iloc)
+ if (locrecent[iloc].refs != 0
+ && (locrecent[iloc].record[cnt].offset
+ == sumhashtab[idx].file_offset))
+ break;
+
+ if (iloc != head->locrectab_used
+ && data[cnt].size == locrecent[iloc].record[cnt].len
+ && memcmp (data[cnt].addr,
+ (char *) ah->addr + sumhashtab[idx].file_offset,
+ data[cnt].size) == 0)
+ {
+ /* Found it. */
+ file_offsets[cnt] = sumhashtab[idx].file_offset;
+ --num_new_offsets;
+ break;
+ }
}
idx += incr;
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index 8958c21bbc..c13533b4ff 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,21 @@
+2009-04-22 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9963]
+ * locales/en_PH: Fix LC_PAPER.
+ * locales/es_CL: Likewise.
+ * locales/es_CO: Likewise.
+ * locales/es_MX: Likewise.
+ * locales/es_US: Likewise.
+ * locales/es_VE: Likewise.
+ * locales/fil_PH: Likewise.
+ * locales/ik_CA: Likewise.
+ * locales/iu_CA: Likewise.
+ * locales/tl_PH: Likewise.
+
+2009-04-18 Ulrich Drepper <drepper@redhat.com>
+
+ * SUPPORTED: Add ks_IN.
+
2009-04-07 Ulrich Drepper <drepper@redhat.com>
* locales/ks_IN@devanagari: Replace duplicated information with copy.
diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED
index 9a9cbd1275..d05c623d82 100644
--- a/localedata/SUPPORTED
+++ b/localedata/SUPPORTED
@@ -261,6 +261,7 @@ km_KH/UTF-8 \
kn_IN/UTF-8 \
ko_KR.EUC-KR/EUC-KR \
ko_KR.UTF-8/UTF-8 \
+ks_IN/UTF-8 \
ks_IN@devanagari/UTF-8 \
ku_TR.UTF-8/UTF-8 \
ku_TR/ISO-8859-9 \
diff --git a/localedata/locales/en_PH b/localedata/locales/en_PH
index 13da351db0..895e7c890a 100644
--- a/localedata/locales/en_PH
+++ b/localedata/locales/en_PH
@@ -166,11 +166,7 @@ END LC_MESSAGES
LC_PAPER
-% This is the ISO_IEC TR14652 Locale definition for the LC_PAPER category
-% generated by IBM Basic CountryPack Transformer.
-height 297
-width 210
-
+copy "tl_PH"
END LC_PAPER
diff --git a/localedata/locales/es_CL b/localedata/locales/es_CL
index 2f44845862..ff44fa8c5f 100644
--- a/localedata/locales/es_CL
+++ b/localedata/locales/es_CL
@@ -125,10 +125,8 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
diff --git a/localedata/locales/es_CO b/localedata/locales/es_CO
index 630ee75d4b..bb983d7e7f 100644
--- a/localedata/locales/es_CO
+++ b/localedata/locales/es_CO
@@ -125,10 +125,8 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
diff --git a/localedata/locales/es_MX b/localedata/locales/es_MX
index 0149865018..91dac23d8a 100644
--- a/localedata/locales/es_MX
+++ b/localedata/locales/es_MX
@@ -125,10 +125,8 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
diff --git a/localedata/locales/es_US b/localedata/locales/es_US
index 031483965c..71e8ac803c 100644
--- a/localedata/locales/es_US
+++ b/localedata/locales/es_US
@@ -177,8 +177,7 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
END LC_TIME
LC_PAPER
-height 279
-width 216
+copy "en_US"
END LC_PAPER
LC_TELEPHONE
diff --git a/localedata/locales/es_VE b/localedata/locales/es_VE
index c9e916a286..ca6637a6df 100644
--- a/localedata/locales/es_VE
+++ b/localedata/locales/es_VE
@@ -126,10 +126,8 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
diff --git a/localedata/locales/fil_PH b/localedata/locales/fil_PH
index 799a43c3de..ad3ea8eab2 100644
--- a/localedata/locales/fil_PH
+++ b/localedata/locales/fil_PH
@@ -150,8 +150,7 @@ noexpr "<U005B><U0068><U0048><U006E><U004E><U005D><U002E><U002A>"
END LC_MESSAGES
LC_PAPER
-height 297
-width 210
+copy "tl_PH"
END LC_PAPER
LC_MEASUREMENT
diff --git a/localedata/locales/ik_CA b/localedata/locales/ik_CA
index fdcb8afe16..1b967423ed 100644
--- a/localedata/locales/ik_CA
+++ b/localedata/locales/ik_CA
@@ -207,10 +207,8 @@ yesexpr "<U005B><U0079><U0059><U0069><U0049><U0061><U0041><U005D><U002E><U00
noexpr "<U005B><U006E><U004E><U0071><U0051><U005D><U002E><U002A>"
END LC_MESSAGES
-% Default paper: A4
LC_PAPER
-height 297
-width 210
+copy "en_CA"
END LC_PAPER
% Metric System (ISO 1000)
diff --git a/localedata/locales/iu_CA b/localedata/locales/iu_CA
index da08366ddb..cb91f3ddfd 100644
--- a/localedata/locales/iu_CA
+++ b/localedata/locales/iu_CA
@@ -119,10 +119,8 @@ yesexpr "<U005B><U0079><U0059><U0073><U0053><U005D><U002E><U002A>"
noexpr "<U005B><U006E><U004E><U005D><U002E><U002A>"
END LC_MESSAGES
-% Default paper: A4
LC_PAPER
-height 297
-width 210
+copy "en_CA"
END LC_PAPER
% FIXME
diff --git a/localedata/locales/tl_PH b/localedata/locales/tl_PH
index 250f276298..40c6a715ad 100644
--- a/localedata/locales/tl_PH
+++ b/localedata/locales/tl_PH
@@ -144,8 +144,8 @@ copy "en_US"
END LC_MESSAGES
LC_PAPER
-height 297
-width 210
+height 279
+width 216
END LC_PAPER
LC_MEASUREMENT
diff --git a/malloc/arena.c b/malloc/arena.c
index f280d38811..4d0deefe19 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -624,8 +624,9 @@ ptmalloc_init (void)
if (check_action != 0)
__malloc_check_init();
}
- if(__malloc_initialize_hook != NULL)
- (*__malloc_initialize_hook)();
+ void (*hook) (void) = force_reg (__malloc_initialize_hook);
+ if (hook != NULL)
+ (*hook)();
__malloc_initialized = 1;
}
diff --git a/malloc/hooks.c b/malloc/hooks.c
index 72c29293d9..622a815f32 100644
--- a/malloc/hooks.c
+++ b/malloc/hooks.c
@@ -235,8 +235,9 @@ top_check()
return -1;
}
/* Call the `morecore' hook if necessary. */
- if (__after_morecore_hook)
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (hook)
+ (*hook) ();
main_arena.system_mem = (new_brk - mp_.sbrk_base) + sbrk_size;
top(&main_arena) = (mchunkptr)(brk + front_misalign);
@@ -669,10 +670,10 @@ public_sET_STATe(Void_t* msptr)
!disallow_malloc_check)
__malloc_check_init ();
else if (!ms->using_malloc_checking && using_malloc_checking) {
- __malloc_hook = 0;
- __free_hook = 0;
- __realloc_hook = 0;
- __memalign_hook = 0;
+ __malloc_hook = NULL;
+ __free_hook = NULL;
+ __realloc_hook = NULL;
+ __memalign_hook = NULL;
using_malloc_checking = 0;
}
}
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 17e4e03bac..0b9facefd4 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -23,6 +23,10 @@
This is a version (aka ptmalloc2) of malloc/free/realloc written by
Doug Lea and adapted to multiple threads/arenas by Wolfram Gloger.
+ There have been substantial changesmade after the integration into
+ glibc in all parts of the code. Do not look for much commonality
+ with the ptmalloc2 version.
+
* Version ptmalloc2-20011215
based on:
VERSION 2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee)
@@ -564,6 +568,13 @@ Void_t* memcpy();
#endif
#endif
+
+/* Force a value to be in a register and stop the compiler referring
+ to the source (mostly memory location) again. */
+#define force_reg(val) \
+ ({ __typeof (val) _v; asm ("" : "=r" (_v) : "0" (val)); _v; })
+
+
/*
MALLOC_FAILURE_ACTION is the action to take before "return 0" when
malloc fails to be able to return memory, either because memory is
@@ -3165,8 +3176,9 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
if (brk != (char*)(MORECORE_FAILURE)) {
/* Call the `morecore' hook if necessary. */
- if (__builtin_expect (__after_morecore_hook != NULL, 0))
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (__builtin_expect (hook != NULL, 0))
+ (*hook) ();
} else {
/*
If have mmap, try using it as a backup when MORECORE fails or
@@ -3302,10 +3314,12 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
if (snd_brk == (char*)(MORECORE_FAILURE)) {
correction = 0;
snd_brk = (char*)(MORECORE(0));
- } else
+ } else {
/* Call the `morecore' hook if necessary. */
- if (__builtin_expect (__after_morecore_hook != NULL, 0))
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (__builtin_expect (hook != NULL, 0))
+ (*hook) ();
+ }
}
/* handle non-contiguous cases */
@@ -3453,8 +3467,9 @@ static int sYSTRIm(pad, av) size_t pad; mstate av;
MORECORE(-extra);
/* Call the `morecore' hook if necessary. */
- if (__builtin_expect (__after_morecore_hook != NULL, 0))
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (__builtin_expect (hook != NULL, 0))
+ (*hook) ();
new_brk = (char*)(MORECORE(0));
if (new_brk != (char*)MORECORE_FAILURE) {
@@ -3579,7 +3594,8 @@ public_mALLOc(size_t bytes)
mstate ar_ptr;
Void_t *victim;
- __malloc_ptr_t (*hook) (size_t, __const __malloc_ptr_t) = __malloc_hook;
+ __malloc_ptr_t (*hook) (size_t, __const __malloc_ptr_t)
+ = force_reg (__malloc_hook);
if (__builtin_expect (hook != NULL, 0))
return (*hook)(bytes, RETURN_ADDRESS (0));
@@ -3655,7 +3671,8 @@ public_fREe(Void_t* mem)
mstate ar_ptr;
mchunkptr p; /* chunk corresponding to mem */
- void (*hook) (__malloc_ptr_t, __const __malloc_ptr_t) = __free_hook;
+ void (*hook) (__malloc_ptr_t, __const __malloc_ptr_t)
+ = force_reg (__free_hook);
if (__builtin_expect (hook != NULL, 0)) {
(*hook)(mem, RETURN_ADDRESS (0));
return;
@@ -3713,7 +3730,7 @@ public_rEALLOc(Void_t* oldmem, size_t bytes)
Void_t* newp; /* chunk to return */
__malloc_ptr_t (*hook) (__malloc_ptr_t, size_t, __const __malloc_ptr_t) =
- __realloc_hook;
+ force_reg (__realloc_hook);
if (__builtin_expect (hook != NULL, 0))
return (*hook)(oldmem, bytes, RETURN_ADDRESS (0));
@@ -3825,7 +3842,7 @@ public_mEMALIGn(size_t alignment, size_t bytes)
__malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
__const __malloc_ptr_t)) =
- __memalign_hook;
+ force_reg (__memalign_hook);
if (__builtin_expect (hook != NULL, 0))
return (*hook)(alignment, bytes, RETURN_ADDRESS (0));
@@ -3882,7 +3899,7 @@ public_vALLOc(size_t bytes)
__malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
__const __malloc_ptr_t)) =
- __memalign_hook;
+ force_reg (__memalign_hook);
if (__builtin_expect (hook != NULL, 0))
return (*hook)(pagesz, bytes, RETURN_ADDRESS (0));
@@ -3929,7 +3946,7 @@ public_pVALLOc(size_t bytes)
__malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
__const __malloc_ptr_t)) =
- __memalign_hook;
+ force_reg (__memalign_hook);
if (__builtin_expect (hook != NULL, 0))
return (*hook)(pagesz, rounded_bytes, RETURN_ADDRESS (0));
@@ -3970,8 +3987,6 @@ public_cALLOc(size_t n, size_t elem_size)
unsigned long clearsize;
unsigned long nclears;
INTERNAL_SIZE_T* d;
- __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, __const __malloc_ptr_t)) =
- __malloc_hook;
/* size_t is unsigned so the behavior on overflow is defined. */
bytes = n * elem_size;
@@ -3984,6 +3999,8 @@ public_cALLOc(size_t n, size_t elem_size)
}
}
+ __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, __const __malloc_ptr_t)) =
+ force_reg (__malloc_hook);
if (__builtin_expect (hook != NULL, 0)) {
sz = bytes;
mem = (*hook)(sz, RETURN_ADDRESS (0));
@@ -6192,9 +6209,6 @@ int
__posix_memalign (void **memptr, size_t alignment, size_t size)
{
void *mem;
- __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
- __const __malloc_ptr_t)) =
- __memalign_hook;
/* Test whether the SIZE argument is valid. It must be a power of
two multiple of sizeof (void *). */
@@ -6205,6 +6219,9 @@ __posix_memalign (void **memptr, size_t alignment, size_t size)
/* Call the hook here, so that caller is posix_memalign's caller
and not posix_memalign itself. */
+ __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
+ __const __malloc_ptr_t)) =
+ force_reg (__memalign_hook);
if (__builtin_expect (hook != NULL, 0))
mem = (*hook)(alignment, size, RETURN_ADDRESS (0));
else
@@ -6232,6 +6249,10 @@ malloc_info (int options, FILE *fp)
size_t total_nfastblocks = 0;
size_t total_avail = 0;
size_t total_fastavail = 0;
+ size_t total_system = 0;
+ size_t total_max_system = 0;
+ size_t total_aspace = 0;
+ size_t total_aspace_mprotect = 0;
void mi_arena (mstate ar_ptr)
{
@@ -6337,11 +6358,38 @@ malloc_info (int options, FILE *fp)
sizes[NFASTBINS].from, sizes[NFASTBINS].to,
sizes[NFASTBINS].total, sizes[NFASTBINS].count);
+ total_system += ar_ptr->system_mem;
+ total_max_system += ar_ptr->max_system_mem;
+
fprintf (fp,
"</sizes>\n<total type=\"fast\" count=\"%zu\" size=\"%zu\"/>\n"
"<total type=\"rest\" count=\"%zu\" size=\"%zu\"/>\n"
- "</heap>\n",
- nfastblocks, fastavail, nblocks, avail);
+ "<system type=\"current\" size=\"%zu\"/>\n"
+ "<system type=\"max\" size=\"%zu\"/>\n",
+ nfastblocks, fastavail, nblocks, avail,
+ ar_ptr->system_mem, ar_ptr->max_system_mem);
+
+ if (ar_ptr != &main_arena)
+ {
+ heap_info *heap = heap_for_ptr(top(ar_ptr));
+ fprintf (fp,
+ "<aspace type=\"total\" size=\"%zu\"/>\n"
+ "<aspace type=\"mprotect\" size=\"%zu\"/>\n",
+ heap->size, heap->mprotect_size);
+ total_aspace += heap->size;
+ total_aspace_mprotect += heap->mprotect_size;
+ }
+ else
+ {
+ fprintf (fp,
+ "<aspace type=\"total\" size=\"%zu\"/>\n"
+ "<aspace type=\"mprotect\" size=\"%zu\"/>\n",
+ ar_ptr->system_mem, ar_ptr->system_mem);
+ total_aspace += ar_ptr->system_mem;
+ total_aspace_mprotect += ar_ptr->system_mem;
+ }
+
+ fputs ("</heap>\n", fp);
}
fputs ("<malloc version=\"1\">\n", fp);
@@ -6358,8 +6406,14 @@ malloc_info (int options, FILE *fp)
fprintf (fp,
"<total type=\"fast\" count=\"%zu\" size=\"%zu\"/>\n"
"<total type=\"rest\" count=\"%zu\" size=\"%zu\"/>\n"
+ "<system type=\"current\" size=\"%zu\n/>\n"
+ "<system type=\"max\" size=\"%zu\n/>\n"
+ "<aspace type=\"total\" size=\"%zu\"/>\n"
+ "<aspace type=\"mprotect\" size=\"%zu\"/>\n"
"</malloc>\n",
- total_nfastblocks, total_fastavail, total_nblocks, total_avail);
+ total_nfastblocks, total_fastavail, total_nblocks, total_avail,
+ total_system, total_max_system,
+ total_aspace, total_aspace_mprotect);
return 0;
}
diff --git a/misc/preadv.c b/misc/preadv.c
index 3e2cc689e6..facd8ca017 100644
--- a/misc/preadv.c
+++ b/misc/preadv.c
@@ -24,7 +24,7 @@
without change the file pointer, and put the result in the buffers
described by VECTOR, which is a vector of COUNT 'struct iovec's.
The buffers are filled in the order specified. Operates just like
- 'read' (see <unistd.h>) except that data are put in VECTOR instead
+ 'pread' (see <unistd.h>) except that data are put in VECTOR instead
of a contiguous buffer. */
ssize_t
preadv (fd, vector, count, offset)
diff --git a/misc/preadv64.c b/misc/preadv64.c
index ea675bb359..4b4e5717f8 100644
--- a/misc/preadv64.c
+++ b/misc/preadv64.c
@@ -24,7 +24,7 @@
without change the file pointer, and put the result in the buffers
described by VECTOR, which is a vector of COUNT 'struct iovec's.
The buffers are filled in the order specified. Operates just like
- 'read' (see <unistd.h>) except that data are put in VECTOR instead
+ 'pread' (see <unistd.h>) except that data are put in VECTOR instead
of a contiguous buffer. */
ssize_t
preadv64 (fd, vector, count, offset)
diff --git a/misc/pwritev.c b/misc/pwritev.c
index d45ed23351..2ee47708e1 100644
--- a/misc/pwritev.c
+++ b/misc/pwritev.c
@@ -23,7 +23,7 @@
/* Write data pointed by the buffers described by VECTOR, which is a
vector of COUNT 'struct iovec's, to file descriptor FD at the given
position OFFSET without change the file pointer. The data is
- written in the order specified. Operates just like 'write' (see
+ written in the order specified. Operates just like 'pwrite' (see
<unistd.h>) except that the data are taken from VECTOR instead of a
contiguous buffer. */
ssize_t
diff --git a/misc/pwritev64.c b/misc/pwritev64.c
index fe95857554..6cff749083 100644
--- a/misc/pwritev64.c
+++ b/misc/pwritev64.c
@@ -23,7 +23,7 @@
/* Write data pointed by the buffers described by VECTOR, which is a
vector of COUNT 'struct iovec's, to file descriptor FD at the given
position OFFSET without change the file pointer. The data is
- written in the order specified. Operates just like 'write' (see
+ written in the order specified. Operates just like 'pwrite' (see
<unistd.h>) except that the data are taken from VECTOR instead of a
contiguous buffer. */
ssize_t
diff --git a/misc/sys/uio.h b/misc/sys/uio.h
index a3c782917a..05d956bfd3 100644
--- a/misc/sys/uio.h
+++ b/misc/sys/uio.h
@@ -58,7 +58,7 @@ extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count)
without change the file pointer, and put the result in the buffers
described by IOVEC, which is a vector of COUNT 'struct iovec's.
The buffers are filled in the order specified. Operates just like
- 'read' (see <unistd.h>) except that data are put in IOVEC instead
+ 'pread' (see <unistd.h>) except that data are put in IOVEC instead
of a contiguous buffer.
This function is a cancellation point and therefore not marked with
@@ -69,7 +69,7 @@ extern ssize_t preadv (int __fd, __const struct iovec *__iovec, int __count,
/* Write data pointed by the buffers described by IOVEC, which is a
vector of COUNT 'struct iovec's, to file descriptor FD at the given
position OFFSET without change the file pointer. The data is
- written in the order specified. Operates just like 'write' (see
+ written in the order specified. Operates just like 'pwrite' (see
<unistd.h>) except that the data are taken from IOVEC instead of a
contiguous buffer.
@@ -96,7 +96,7 @@ extern ssize_t __REDIRECT (pwritev, (int __fd, __const struct iovec *__iovec,
without change the file pointer, and put the result in the buffers
described by IOVEC, which is a vector of COUNT 'struct iovec's.
The buffers are filled in the order specified. Operates just like
- 'read' (see <unistd.h>) except that data are put in IOVEC instead
+ 'pread' (see <unistd.h>) except that data are put in IOVEC instead
of a contiguous buffer.
This function is a cancellation point and therefore not marked with
@@ -107,7 +107,7 @@ extern ssize_t preadv64 (int __fd, __const struct iovec *__iovec, int __count,
/* Write data pointed by the buffers described by IOVEC, which is a
vector of COUNT 'struct iovec's, to file descriptor FD at the given
position OFFSET without change the file pointer. The data is
- written in the order specified. Operates just like 'write' (see
+ written in the order specified. Operates just like 'pwrite' (see
<unistd.h>) except that the data are taken from IOVEC instead of a
contiguous buffer.
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 60adce37d9..6015f40737 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,10 @@
+2009-04-22 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10090]
+ * pthread_attr_setschedparam.c (__pthread_attr_setschedparam):
+ Check policy and priority for validity.
+ Patch mostly by Zhang Xiliang <zhangxiliang@cn.fujitsu.com>.
+
2009-03-15 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
diff --git a/nptl/pthread_attr_setschedparam.c b/nptl/pthread_attr_setschedparam.c
index 976ad13873..b4d4bbe055 100644
--- a/nptl/pthread_attr_setschedparam.c
+++ b/nptl/pthread_attr_setschedparam.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2004, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -31,6 +31,12 @@ __pthread_attr_setschedparam (attr, param)
assert (sizeof (*attr) >= sizeof (struct pthread_attr));
struct pthread_attr *iattr = (struct pthread_attr *) attr;
+ int min = sched_get_priority_min (iattr->schedpolicy);
+ int max = sched_get_priority_max (iattr->schedpolicy);
+ if (min == -1 || max == -1
+ || param->sched_priority > max || param->sched_priority < min)
+ return EINVAL;
+
/* Copy the new values. */
memcpy (&iattr->schedparam, param, sizeof (struct sched_param));
diff --git a/nss/Makefile b/nss/Makefile
index f2ecadb2a7..670e6b2f16 100644
--- a/nss/Makefile
+++ b/nss/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1996-1998,2000,2001,2002,2007 Free Software Foundation, Inc.
+# Copyright (C) 1996-1998,2000-2002,2007,2009 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
@@ -34,7 +34,7 @@ routines = nsswitch getnssent getnssent_r digits_dots \
# Caution: if you add a database here, you must add its real name
# in databases.def, too.
databases = proto service hosts network grp pwd rpc ethers \
- spwd netgrp key alias
+ spwd netgrp key alias sgrp
others := getent
install-bin := getent
diff --git a/nss/Versions b/nss/Versions
index f7f0e56979..7a9d67b429 100644
--- a/nss/Versions
+++ b/nss/Versions
@@ -9,7 +9,7 @@ libc {
}
GLIBC_PRIVATE {
_nss_files_parse_grent; _nss_files_parse_pwent; _nss_files_parse_spent;
- __nss_disable_nscd; __nss_lookup_function;
+ __nss_disable_nscd; __nss_lookup_function; _nss_files_parse_sgent;
__nss_passwd_lookup2; __nss_group_lookup2; __nss_hosts_lookup2;
__nss_services_lookup2; __nss_next2;
@@ -87,6 +87,11 @@ libnss_files {
_nss_files_getspent_r;
_nss_files_getspnam_r;
+ _nss_files_setsgent;
+ _nss_files_endsgent;
+ _nss_files_getsgent_r;
+ _nss_files_getsgnam_r;
+
_nss_netgroup_parseline;
_nss_files_getpublickey;
_nss_files_getsecretkey;
diff --git a/nss/nss_files/files-parse.c b/nss/nss_files/files-parse.c
index 66615da26c..3603762f8e 100644
--- a/nss/nss_files/files-parse.c
+++ b/nss/nss_files/files-parse.c
@@ -103,6 +103,7 @@ parse_line (char *line, struct STRUCTURE *result, \
EXTRA_ARGS_DECL) \
{ \
ENTDATA_DECL (data) \
+ BUFFER_PREPARE \
char *p = strpbrk (line, EOLSET "\n"); \
if (p != NULL) \
*p = '\0'; \
@@ -127,6 +128,21 @@ nss_files_parse_hidden_def (parse_line)
} \
}
+# define STRING_LIST(variable, terminator_c) \
+ { \
+ char **list = parse_list (&line, buf_start, buf_end, terminator_c, \
+ errnop); \
+ if (list) \
+ variable = list; \
+ else \
+ return -1; /* -1 indicates we ran out of space. */ \
+ \
+ /* Determine the new end of the buffer. */ \
+ while (*list != NULL) \
+ ++list; \
+ buf_start = (char *) (list + 1); \
+ }
+
/* Helper function. */
static inline uint32_t
__attribute__ ((always_inline))
@@ -178,12 +194,39 @@ strtou32 (const char *nptr, char **endptr, int base)
# ifndef TRAILING_LIST_MEMBER
+# define BUFFER_PREPARE /* Nothing to do. */
# define TRAILING_LIST_PARSER /* Nothing to do. */
# else
-# define TRAILING_LIST_PARSER \
+# define BUFFER_PREPARE \
+ char *buf_start = NULL; \
+ char *buf_end = (char *) data + datalen; \
+ if (line >= data->linebuffer && line < buf_end) \
+ /* Find the end of the line buffer, we will use the space in \
+ DATA after it for storing the vector of pointers. */ \
+ buf_start = strchr (line, '\0') + 1; \
+ else \
+ /* LINE does not point within DATA->linebuffer, so that space is \
+ not being used for scratch space right now. We can use all of \
+ it for the pointer vector storage. */ \
+ buf_start = data->linebuffer; \
+
+# define TRAILING_LIST_PARSER \
{ \
- char **list = parse_list (line, data, datalen, errnop); \
+ if (buf_start == NULL) \
+ { \
+ if (line >= data->linebuffer && line < buf_end) \
+ /* Find the end of the line buffer, we will use the space in \
+ DATA after it for storing the vector of pointers. */ \
+ buf_start = strchr (line, '\0') + 1; \
+ else \
+ /* LINE does not point within DATA->linebuffer, so that space is \
+ not being used for scratch space right now. We can use all of \
+ it for the pointer vector storage. */ \
+ buf_start = data->linebuffer; \
+ } \
+ \
+ char **list = parse_list (&line, buf_start, buf_end, '\0', errnop); \
if (list) \
result->TRAILING_LIST_MEMBER = list; \
else \
@@ -192,19 +235,12 @@ strtou32 (const char *nptr, char **endptr, int base)
static inline char **
__attribute ((always_inline))
-parse_list (char *line, struct parser_data *data, size_t datalen, int *errnop)
+parse_list (char **linep, char *eol, char *buf_end, int terminator_c,
+ int *errnop)
{
- char *eol, **list, **p;
-
- if (line >= data->linebuffer && line < (char *) data + datalen)
- /* Find the end of the line buffer, we will use the space in DATA after
- it for storing the vector of pointers. */
- eol = strchr (line, '\0') + 1;
- else
- /* LINE does not point within DATA->linebuffer, so that space is
- not being used for scratch space right now. We can use all of
- it for the pointer vector storage. */
- eol = data->linebuffer;
+ char *line = *linep;
+ char **list, **p;
+
/* Adjust the pointer so it is aligned for storing pointers. */
eol += __alignof__ (char *) - 1;
eol -= (eol - (char *) 0) % __alignof__ (char *);
@@ -214,25 +250,30 @@ parse_list (char *line, struct parser_data *data, size_t datalen, int *errnop)
p = list;
while (1)
{
- char *elt;
-
- if ((size_t) ((char *) &p[1] - (char *) data) > datalen)
+ if ((char *) (p + 2) > buf_end)
{
/* We cannot fit another pointer in the buffer. */
*errnop = ERANGE;
return NULL;
}
+
if (*line == '\0')
break;
+ if (*line == terminator_c)
+ {
+ ++line;
+ break;
+ }
/* Skip leading white space. This might not be portable but useful. */
while (isspace (*line))
++line;
- elt = line;
+ char *elt = line;
while (1)
{
- if (*line == '\0' || TRAILING_LIST_SEPARATOR_P (*line))
+ if (*line == '\0' || *line == terminator_c
+ || TRAILING_LIST_SEPARATOR_P (*line))
{
/* End of the next entry. */
if (line > elt)
@@ -241,13 +282,20 @@ parse_list (char *line, struct parser_data *data, size_t datalen, int *errnop)
/* Terminate string if necessary. */
if (*line != '\0')
- *line++ = '\0';
+ {
+ char endc = *line;
+ *line++ = '\0';
+ if (endc == terminator_c)
+ goto out;
+ }
break;
}
++line;
}
}
+ out:
*p = NULL;
+ *linep = line;
return list;
}
diff --git a/nss/nss_files/files-sgrp.c b/nss/nss_files/files-sgrp.c
new file mode 100644
index 0000000000..4e12cd83d4
--- /dev/null
+++ b/nss/nss_files/files-sgrp.c
@@ -0,0 +1,38 @@
+/* User file parser in nss_files module.
+ Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <gshadow.h>
+
+#define STRUCTURE sgrp
+#define ENTNAME sgent
+#define DATABASE "gshadow"
+struct sgent_data {};
+
+/* Our parser function is already defined in sgetspent_r.c, so use that
+ to parse lines from the database file. */
+#define EXTERN_PARSER
+#include "files-parse.c"
+#include GENERIC
+
+DB_LOOKUP (sgnam, 1 + strlen (name), (".%s", name),
+ {
+ if (name[0] != '+' && name[0] != '-'
+ && ! strcmp (name, result->sg_namp))
+ break;
+ }, const char *name)
diff --git a/nss/nsswitch.conf b/nss/nsswitch.conf
index 63a78758d6..4d2a76376d 100644
--- a/nss/nsswitch.conf
+++ b/nss/nsswitch.conf
@@ -6,6 +6,7 @@
passwd: db files
group: db files
shadow: db files
+gshadow: files
hosts: files dns
networks: files dns
diff --git a/nss/sgrp-lookup.c b/nss/sgrp-lookup.c
new file mode 100644
index 0000000000..be3933f26b
--- /dev/null
+++ b/nss/sgrp-lookup.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#define DATABASE_NAME gshadow
+#define ALTERNATE_NAME group
+#define DEFAULT_CONFIG "files"
+
+#include "XXX-lookup.c"
diff --git a/po/ca.po b/po/ca.po
index 98b9bd65ac..0872dcbb59 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -1,6 +1,7 @@
# Catalan messages for GNU libc.
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
-# Ivan Vilata i Balaguer <ivan@selidor.net>, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007.
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package.
+# Ivan Vilata i Balaguer <ivan@selidor.net>, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2009.
#
# Sóc Ivan, aquestes són les convencions que adopte per a la 2.4:
#
@@ -46,9 +47,9 @@
# bonic, excepte quan quede realment horrend o porte a confusió).
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.7\n"
-"POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2007-12-02 18:45+0100\n"
+"Project-Id-Version: libc 2.9.90\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-04-20 15:27+0200\n"
"Last-Translator: Ivan Vilata i Balaguer <ivan@selidor.net>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
"MIME-Version: 1.0\n"
@@ -142,7 +143,7 @@ msgstr "%s%s%s:%u: %s%sError inesperat: %s.\n"
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
msgstr "%s%s%s:%u: %s%sL’asserció «%s» ha fallat.\n"
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
msgstr "NOM"
@@ -178,9 +179,15 @@ msgstr ""
"-o FITXER_EIXIDA [FITXER_ENTRADA]…\n"
"[FITXER_EIXIDA [FITXER_ENTRADA]…]"
-#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:411
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
@@ -188,12 +195,13 @@ msgstr ""
"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -205,10 +213,12 @@ msgstr ""
"de còpia. No hi ha CAP garantia; ni tan sols de COMERCIABILITAT o\n"
"ADEQUACIÓ PER A UN PROPÒSIT PARTICULAR.\n"
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
-#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
msgstr "Escrit per %s.\n"
@@ -217,7 +227,7 @@ msgstr "Escrit per %s.\n"
msgid "*standard input*"
msgstr "*entrada estàndard*"
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
@@ -318,17 +328,17 @@ msgstr "Bolca la informació generada en perfilar el comptador de programa."
msgid "[FILE]"
msgstr "[FITXER]"
-#: debug/pcprofiledump.c:104
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
msgstr "no s’ha pogut obrir el fitxer d’entrada"
-#: debug/pcprofiledump.c:111
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
msgstr "no s’ha pogut llegir la capçalera"
-#: debug/pcprofiledump.c:175
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
msgstr "la mida del punter no és vàlida"
@@ -358,8 +368,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
"Traça l’execució d’un programa mostrant la funció que s’està executant\n"
"actualment.\n"
@@ -374,23 +382,21 @@ msgstr ""
"Els arguments obligatoris per a les opcions llargues també ho són per a les\n"
"opcions curtes corresponents.\n"
"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
msgstr "xtrace: l’opció «$1» no és reconeguda\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
msgstr "no s’ha indicat un nom de programa\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
msgstr "no s’ha trobat l’executable «$program»\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
msgstr "«$program» no és executable\\n"
@@ -411,7 +417,7 @@ msgstr "l’espai de noms no és vàlid"
msgid "invalid mode"
msgstr "el mode no és vàlid"
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
msgstr "el paràmetre de mode no és vàlid"
@@ -434,7 +440,7 @@ msgstr "SO desconegut"
msgid ", OS ABI: %s %d.%d.%d"
msgstr ", ABI del SO: %s %d.%d.%d"
-#: elf/cache.c:134 elf/ldconfig.c:1270
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
msgstr "no s’ha pogut obrir el fitxer «%s» de memòria cau\n"
@@ -479,7 +485,7 @@ msgstr "no s’ha pogut reanomenar «%s» a «%s»"
msgid "cannot create scope list"
msgstr "no s’ha pogut crear la llista d’àmbits"
-#: elf/dl-close.c:724
+#: elf/dl-close.c:725
msgid "shared object not open"
msgstr "l’objecte compartit no és obert"
@@ -560,11 +566,11 @@ msgstr "ha fallat stat() sobre l’objecte compartit"
msgid "cannot open zero fill device"
msgstr "no s’ha pogut obrir el dispositiu de zeros"
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
msgstr "no s’ha pogut crear el descriptor d’objecte compartit"
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
msgstr "no s’han pogut llegir les dades del fitxer"
@@ -628,68 +634,64 @@ msgstr "no s’ha pogut habilitar la pila executable a requeriment de l’object
msgid "cannot close file descriptor"
msgstr "no s’ha pogut tancar un descriptor de fitxer"
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr "no s’ha pogut crear la llista de cerca"
-
-#: elf/dl-load.c:1656
+#: elf/dl-load.c:1647
msgid "file too short"
msgstr "el fitxer és massa curt"
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
msgstr "la capçalera ELF no és vàlida"
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
msgstr "la codificació de les dades del fitxer ELF no és big‐endian"
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
msgstr "la codificació de les dades del fitxer ELF no és little‐endian"
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
msgstr "la identificació de la versió del fitxer ELF no concorda amb l’actual"
# ivb (2001/11(06)
# ivb ABI = Application Binary Interface (interfície binària d'aplicació)
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
msgstr "l’ABI de sistema operatiu del fitxer ELF no és vàlida"
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
msgstr "la versió de l’ABI del fitxer ELF no és vàlida"
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
msgstr "error intern"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
msgstr "la versió del fitxer ELF no concorda amb l’actual"
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr "només es poden carregar els tipus ET_DYN i ET_EXEC"
# ivb (2001/11/01)
# ivb La traducció completa de «phentsize» vindria a ser: mida d'entrada
# ivb de taula de la capçalera de programa.
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
msgstr "el valor de «phentsize» del fitxer ELF no és l’esperat"
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
msgstr "la classe ELF no és vàlida: ELFCLASS64"
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
msgstr "la classe ELF no és vàlida: ELFCLASS32"
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
msgstr "no s’ha pogut obrir el fitxer objecte compartit"
@@ -723,11 +725,11 @@ msgstr "no resten espais de noms disponibles per a dlmopen()"
msgid "invalid target namespace in dlmopen()"
msgstr "l’espai de noms destí de dlmopen() no és vàlid"
-#: elf/dl-reloc.c:54
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
msgstr "no s’ha pogut reservar memòria al bloc TLS estàtic"
-#: elf/dl-reloc.c:196
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
msgstr "no s’ha pogut fer escrivible el segment per a reubicar‐lo"
@@ -756,11 +758,11 @@ msgstr "no s’ha pogut protegir la memòria després de reubicar"
msgid "RTLD_NEXT used in code not dynamically loaded"
msgstr "s’ha emprat RTLD_NEXT en un codi no carregat dinàmicament"
-#: elf/dl-sysdep.c:469 elf/dl-sysdep.c:481
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
msgstr "no s’ha pogut crear la llista de capacitats"
-#: elf/dl-tls.c:825
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
msgstr "no s’han pogut crear les estructures de dades TLS"
@@ -769,225 +771,225 @@ msgid "cannot allocate version reference table"
msgstr "no s’ha pogut reservar la taula de referències de versions"
# Més ajudes. ivb
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:141
msgid "Print cache"
msgstr "Mostra la memòria cau."
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
msgstr "Genera missatges detallats."
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:143
msgid "Don't build cache"
msgstr "No construeix la memòria cau."
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:144
msgid "Don't generate links"
msgstr "No genera enllaços."
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
msgstr "Canvia a i empra ARREL com a directori arrel."
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "ROOT"
msgstr "ARREL"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "CACHE"
msgstr "CACHE"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
msgstr "Empra CACHE com a fitxer de memòria cau."
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "CONF"
msgstr "CONF"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
msgstr "Empra CONF com a fitxer de configuració."
-#: elf/ldconfig.c:145
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
msgstr "Només processa els directoris especificats a la línia d’ordres. No construeix la memòria cau."
-#: elf/ldconfig.c:146
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
msgstr "Per a enllaçar les biblioteques manualment."
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "FORMAT"
msgstr "FORMAT"
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
msgstr "FORMAT a emprar: «new» (nou), «old» (antic) o «compat» (compatible, per defecte)."
-#: elf/ldconfig.c:148
+#: elf/ldconfig.c:151
msgid "Ignore auxiliary cache file"
msgstr "No té en compte el fitxer de memòria cau auxilar."
-#: elf/ldconfig.c:156
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
msgstr "Configura els vincles en temps d’execució de l’enllaçador dinàmic."
-#: elf/ldconfig.c:319
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
msgstr "s’ha indicat el camí «%s» més d’una volta"
-#: elf/ldconfig.c:359
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
msgstr "«%s» no és un tipus conegut de biblioteca"
-#: elf/ldconfig.c:384
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
msgstr "ha fallat stat() sobre «%s»"
-#: elf/ldconfig.c:458
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
msgstr "ha fallat stat() sobre «%s»\n"
-#: elf/ldconfig.c:468
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
msgstr "«%s» no és un enllaç simbòlic\n"
-#: elf/ldconfig.c:487
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
msgstr "no s’ha pogut desenllaçar «%s»"
-#: elf/ldconfig.c:493
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
msgstr "no s’ha pogut crear un enllaç des de «%s» cap a «%s»"
# ivb (2001/10/28)
# ivb Es refereix a un enllaç -> masculí.
-#: elf/ldconfig.c:499
+#: elf/ldconfig.c:519
msgid " (changed)\n"
msgstr " (canviat)\n"
# ivb (2001/10/28)
# ivb Es refereix a fer o no l'enllaç, no importa el gènere.
-#: elf/ldconfig.c:501
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
msgstr " (SALTAT)\n"
-#: elf/ldconfig.c:556
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
msgstr "no s’ha pogut trobar «%s»"
-#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
msgstr "ha fallat lstat() sobre «%s»"
-#: elf/ldconfig.c:579
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr "es descarta el fitxer «%s» que no és un fitxer ordinari"
-#: elf/ldconfig.c:588
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr "no s’ha creat l’enllaç perquè no s’ha trobat el nom d’objecte compartit de «%s»"
-#: elf/ldconfig.c:671
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
msgstr "no s’ha pogut obrir el directori «%s»"
-#: elf/ldconfig.c:759
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
msgstr "ha fallat stat() sobre «%s»"
-#: elf/ldconfig.c:814 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
msgstr "no s’ha trobat el fitxer d’entrada «%s»\n"
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
msgstr "la biblioteca «%s» per a libc5 es troba en un directori incorrecte"
-#: elf/ldconfig.c:891
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
msgstr "la biblioteca «%s» per a libc6 es troba en un directori incorrecte"
-#: elf/ldconfig.c:894
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
msgstr "la biblioteca «%s» per a libc4 es troba en un directori incorrecte"
-#: elf/ldconfig.c:922
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
msgstr "les biblioteques «%s» i «%s» del directori «%s» tenen el mateix nom d’objecte compartit però diferent tipus."
-#: elf/ldconfig.c:1031
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
msgstr "no s’ha pogut obrir el fitxer «%s» de configuració"
-#: elf/ldconfig.c:1095
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr "%s:%u: la sintaxi de la línia «hwcap» no és vàlida"
-#: elf/ldconfig.c:1101
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr "%s:%u: la «hwcap» amb índex %lu està sobre el màxim %u"
# La substitució final és per un nom. ivb
-#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr "%s:%u: la «hwcap» amb índex %lu ja ha estat definida com a «%s»"
-#: elf/ldconfig.c:1119
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr "%s:%u: la «hwcap» %lu amb nom «%s» està duplicada"
-#: elf/ldconfig.c:1141
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr "cal indicar el camí absolut del fitxer de configuració en emprar «-r»"
-#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
msgstr "la memòria s’ha exhaurit"
-#: elf/ldconfig.c:1178
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
msgstr "%s:%u: no s’ha pogut llegir el directori «%s»"
-#: elf/ldconfig.c:1223
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
msgstr "s’ha indicat el camí relatiu «%s» per a construir la memòria cau"
-#: elf/ldconfig.c:1249
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
msgstr "no s’ha pogut canviar al directori arrel"
-#: elf/ldconfig.c:1291
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
msgstr "no s’ha pogut obrir el directori «%s» de fitxers de memòria cau\n"
@@ -1005,8 +1007,6 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Forma d’ús: ldd [OPCIÓ]… FITXER…\n"
"\n"
@@ -1017,54 +1017,52 @@ msgstr ""
" --help Mostra aquesta ajuda i ix.\n"
" --version Mostra informació sobre la versió i ix.\n"
"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
msgstr "ldd: l’opció «$1» és ambígua"
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
msgstr "l’opció no és reconeguda"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
msgstr "Proveu «ldd --help» per a obtenir més informació."
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
msgstr "manquen arguments fitxer"
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
msgstr "El fitxer o directori no existeix"
# ivb (2001/10/31)
# ivb Cal tenir en compte que «ordinary» a l'anglés és cosa pler diferent ;)
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
msgstr "no és un fitxer ordinari"
# Darrere va el nom de fitxer, no puc canviar les cometes. :( ivb
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
msgstr "avís: no teniu permís d’execució per a"
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
msgstr "\tno és un executable dinàmic"
# Davant va el nom de fitxer, no puc canviar les cometes. :( ivb
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
msgstr "ha finalitzat amb un codi d’eixida desconegut"
# Darrere va el nom de fitxer, no puc canviar les cometes. :( ivb
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
msgstr "error: no teniu permís de lectura per a"
@@ -1123,6 +1121,45 @@ msgstr "ha fallat mmap() sobre el fitxer «%s»\n"
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
msgstr "«%s» no és un fitxer ELF: els octets màgics del començament no són correctes\n"
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"Forma d’ús: sln ORIGEN DESTÍ|FITXER\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: error en obrir el fitxer: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "manca un destí a la línia %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: el destí no ha de ser un directori\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: no s’ha pogut esborrar el destí antic\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: el destí no és vàlid: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "l’enllaç des de «%s» cap a «%s» no és vàlid: %s\n"
+
# Més ajudes. ivb
#: elf/sprof.c:77
msgid "Output selection:"
@@ -1140,133 +1177,131 @@ msgstr "Genera un perfil pla amb recomptes i unitats de temps."
msgid "generate call graph"
msgstr "Genera un gràfic de crides."
-# FIXME: Don't use \v.
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Llig i mostra les dades de perfilat d’un objecte compartit.\n"
-"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Read and display shared object profiling data."
+msgstr "Llig i mostra les dades de perfilat d’un objecte compartit."
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
msgstr "OBJECTE_COMPARTIT [DADES_PERFILAT]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
msgstr "no s’ha pogut carregar l’objecte compartit «%s»"
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
msgstr "no s’han pogut crear els descriptors interns"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr "no s’ha pogut reobrir l’objecte compartit «%s»"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
msgstr "la lectura de les capçaleres de secció ha fallat"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
msgstr "la lectura de la taula de cadenes de capçalera de secció ha fallat"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr "*** No s’ha pogut llegir el nom del fitxer d’informació de depuració: %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
msgstr "no s’ha pogut determinar un nom de fitxer"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
msgstr "la lectura de la capçalera ELF ha fallat"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr "*** El fitxer «%s» no conté símbols: no és possible l’anàlisi detallada\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
msgstr "no s’han pogut carregar les dades simbòliques"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
msgstr "no s’han pogut carregar les dades de perfilat"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
msgstr "en cridar stat() sobre el fitxer de dades de perfilat"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr "el fitxer «%s» de dades de perfilat no correspon a l’objecte compartit «%s»"
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
msgstr "ha fallat mmap() sobre el fitxer de dades de perfilat"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
msgstr "error en tancar el fitxer de dades de perfilat"
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
msgstr "no s’ha pogut crear un descriptor intern"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr "«%s» no és un fitxer vàlid de perfilat de «%s»"
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
msgstr "no s’han pogut reservar les dades de símbols"
-#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "no s’ha pogut obrir el fitxer d’eixida"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
msgstr "error en tancar l’entrada «%s»"
-#: iconv/iconv_charmap.c:450
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
msgstr "hi ha una seqüència d’entrada no vàlida a la posició %Zd"
-#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
msgstr "hi ha un caràcter o seqüència de desplaçament incompleta al final de la memòria intermèdia"
-#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
-#: iconv/iconv_prog.c:605
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
msgstr "error en llegir l’entrada"
-#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
msgstr "no s’ha pogut reservar memòria intermèdia per a l’entrada"
@@ -1320,62 +1355,57 @@ msgstr "Converteix els fitxers especificats d’una codificació a una altra."
msgid "[FILE...]"
msgstr "[FITXER…]"
-#: iconv/iconv_prog.c:200
-#, c-format
-msgid "cannot open output file"
-msgstr "no s’ha pogut obrir el fitxer d’eixida"
-
-#: iconv/iconv_prog.c:242
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
msgstr "les conversions de «%s» i a «%s» no estan implementades"
-#: iconv/iconv_prog.c:247
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
msgstr "la conversió de «%s» no està implementada"
-#: iconv/iconv_prog.c:254
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
msgstr "la conversió a «%s» no està implementada"
-#: iconv/iconv_prog.c:258
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
msgstr "la conversió de «%s» a «%s» no està implementada"
-#: iconv/iconv_prog.c:268
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
msgstr "no s’ha pogut començar a processar la conversió"
-#: iconv/iconv_prog.c:362
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
msgstr "error en tancar el fitxer d’eixida"
-#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
msgstr "la conversió s’ha detingut a causa d’un problema en escriure l’eixida"
-#: iconv/iconv_prog.c:522
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
msgstr "hi ha una seqüència d’entrada no vàlida a la posició %ld"
-#: iconv/iconv_prog.c:530
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
msgstr "error intern (el descriptor no és vàlid)"
-#: iconv/iconv_prog.c:533
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "error desconegut %d a iconv()"
-#: iconv/iconv_prog.c:779
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1617,7 +1647,7 @@ msgstr "sobren octets a la codificació del caràcter"
msgid "no symbolic name given for end of range"
msgstr "no s’ha indicat un nom simbòlic per a la fi del rang"
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
@@ -1645,8 +1675,8 @@ msgstr "el valor de %s ha de ser un enter"
msgid "%s: error in state machine"
msgstr "%s: error a la màquina d’estats"
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4115
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
@@ -1668,7 +1698,7 @@ msgstr "el caràcter «%s» no és conegut"
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
msgstr "el nombre d’octets de les seqüències d’inici i final del rang no són iguals: %d i %d"
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3047
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr "els noms del rang de caràcters no són vàlids"
@@ -1693,7 +1723,7 @@ msgstr "el límit superior del rang és menor que l’inferior"
msgid "resulting bytes for range not representable."
msgstr "els octets resultants del rang no són representables"
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1703,10 +1733,10 @@ msgstr "els octets resultants del rang no són representables"
msgid "No definition for %s category found"
msgstr "no s’ha trobat cap definició de la categoria «%s»"
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1719,14 +1749,14 @@ msgstr "no s’ha trobat cap definició de la categoria «%s»"
msgid "%s: field `%s' not defined"
msgstr "%s: no s’ha definit el camp «%s»"
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
msgstr "%s: el camp «%s» no ha d’estar buit"
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
msgstr "%s: la seqüència d’escapada «%%%c» del camp «%s» no és vàlida"
@@ -1735,34 +1765,34 @@ msgstr "%s: la seqüència d’escapada «%%%c» del camp «%s» no és vàlida"
# ivb Pel que sembla hi ha un codi terminològic de llengua i un
# ivb codi bibliogràfic de llengua.
# ivb http://anubis.dkuug.dk/i18n/iso-639-2-dis.txt
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr "%s: no s’ha definit el codi terminològic de llengua «%s»"
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
msgstr "%s: no s’ha de definir el camp «%s»"
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr "%s: no s’ha definit l’abreviatura de llengua «%s»"
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
msgstr "%s: el valor de «%s» no concorda amb el valor de «%s»"
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr "%s: el codi numèric de país «%d» no és vàlid"
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1774,7 +1804,7 @@ msgstr "%s: el codi numèric de país «%d» no és vàlid"
msgid "%s: field `%s' declared more than once"
msgstr "%s: el camp «%s» ha estat declarat més d’una volta"
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1784,7 +1814,7 @@ msgstr "%s: el camp «%s» ha estat declarat més d’una volta"
msgid "%s: unknown character in field `%s'"
msgstr "%s: el camp «%s» conté un caràcter desconegut"
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1794,10 +1824,10 @@ msgstr "%s: el camp «%s» conté un caràcter desconegut"
msgid "%s: incomplete `END' line"
msgstr "%s: la línia «END» és incompleta"
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4105
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
#: locale/programs/ld-identification.c:459
@@ -1940,7 +1970,7 @@ msgstr "no s’ha definit «UNDEFINED»"
msgid "too many errors; giving up"
msgstr "hi ha massa errors: s’abandona"
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4044
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
msgid "%s: nested conditionals not supported"
msgstr "%s: no es permeten els condicionals niats"
@@ -1960,27 +1990,27 @@ msgstr "%s: la definició de «%s» és duplicada"
msgid "%s: duplicate declaration of section `%s'"
msgstr "%s: la declaració de la secció «%s» és duplicada"
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr "%s: el nom del símbol d’ordenació conté un caràcter desconegut"
-#: locale/programs/ld-collate.c:3159
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr "%s: el nom de la definició equivalent conté un caràcter desconegut"
-#: locale/programs/ld-collate.c:3172
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr "%s: el valor de la definició equivalent conté un caràcter desconegut"
-#: locale/programs/ld-collate.c:3182
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr "%s: la definició equivalent conté el símbol desconegut «%s»"
-#: locale/programs/ld-collate.c:3191
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr "error en afegir un símbol d’ordenació equivalent"
@@ -2060,12 +2090,12 @@ msgstr "%s: no es permet una descripció buida de la categoria"
msgid "%s: missing `reorder-sections-end' keyword"
msgstr "%s: manca la paraula clau «reorder-sections-end»"
-#: locale/programs/ld-collate.c:4077
+#: locale/programs/ld-collate.c:4079
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr "%s: s’ha trobat un «%s» sense el corresponent «ifdef» o «ifndef»"
-#: locale/programs/ld-collate.c:4095
+#: locale/programs/ld-collate.c:4097
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr "%s: s’ha trobat un «endif» sense el corresponent «ifdef» o «ifndef»"
@@ -2389,7 +2419,7 @@ msgstr "%s: brossa al final de la data de començament de la cadena %Zd del camp
msgid "%s: starting date is invalid in string %Zd in `era' field"
msgstr "%s: la data de començament de la cadena %Zd del camp «era» no és vàlida"
-#: locale/programs/ld-time.c:407
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
msgstr "%s: la data d’acabament de la cadena %Zd del camp «era» no és vàlida"
@@ -2399,11 +2429,6 @@ msgstr "%s: la data d’acabament de la cadena %Zd del camp «era» no és vàli
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
msgstr "%s: brossa al final de la data d’acabament de la cadena %Zd del camp «era»"
-#: locale/programs/ld-time.c:435
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: la data d’acabament de la cadena %Zd del camp «era» no és vàlida"
-
#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
@@ -2508,18 +2533,11 @@ msgstr "Mostra els noms de les paraules clau seleccionades."
msgid "Print more information"
msgstr "Mostra més informació."
-# FIXME: Don't use \v.
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Obté informació específica del locale.\n"
-"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get locale-specific information."
+msgstr "Obté informació específica del locale."
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -2527,27 +2545,27 @@ msgstr ""
"NOM\n"
"[-a | -m]"
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
msgstr "no s’ha pogut establir LC_CTYPE al locale per defecte"
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
msgstr "no s’ha pogut establir LC_MESSAGES al locale per defecte"
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
msgstr "no s’ha pogut establir LC_COLLATE al locale per defecte"
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
msgstr "no s’ha pogut establir LC_ALL al locale per defecte"
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
msgstr "en preparar l’eixida"
@@ -2844,7 +2862,7 @@ msgid "cannot create output file `%s' for category `%s'"
msgstr "no s’ha pogut crear el fitxer d’eixida «%s» de la categoria «%s»"
#: locale/programs/locfile.c:782
-msgid "expect string argument for `copy'"
+msgid "expecting string argument for `copy'"
msgstr "cal una cadena com a argument de «copy»"
#: locale/programs/locfile.c:786
@@ -2963,8 +2981,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Forma d’ús: memusage [OPCIÓ]… PROGRAMA [OPCIÓ_DE_PROGRAMA]…\n"
"Fa un perfilat de l’ús de memòria del PROGRAMA.\n"
@@ -2982,6 +2998,7 @@ msgstr ""
" -V, --version Mostra informació sobre la versió i ix.\n"
"\n"
"Les opcions següents només es tenen en compte en generar un gràfic d’eixida:\n"
+"\n"
" -t, --time-based Genera un gràfic lineal en el temps.\n"
" -T, --total Inclou un gràfic de l’ús total de memòria.\n"
" --title=CADENA Empra la CADENA com a títol del gràfic.\n"
@@ -2991,11 +3008,9 @@ msgstr ""
"Els arguments obligatoris per a les opcions llargues també ho són per a les\n"
"opcions curtes corresponents.\n"
"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
# Resumit com la resta. ivb
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
@@ -3003,52 +3018,52 @@ msgid ""
" PROGRAM [PROGRAMOPTION]..."
msgstr "Sintaxi: memusage [OPCIÓ]… PROGRAMA [OPCIÓ_DE_PROGRAMA]…"
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
msgstr "memusage: l’opció «${1##*=}» és ambígua"
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
msgstr "memusage: l’opció «$1» no és reconeguda"
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
msgstr "No s’ha indicat un nom de programa"
# Més ajudes. ivb
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:57
msgid "Name output file"
msgstr "Especifica el fitxer d’eixida."
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
msgstr "Cadena amb el títol a emprar al gràfic d’eixida."
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
msgstr "Genera una eixida lineal respecte el temps (per defecte és lineal respecte el nombre de crides a funció)."
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
msgstr "També mostra un gràfic del consum total de memòria."
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
msgstr "Fa el gràfic d’eixida de VALOR píxels d’amplada."
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
msgstr "Fa el gràfic d’eixida de VALOR píxels d’altura."
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
msgstr "Genera un gràfic amb les dades de perfilat de memòria."
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
msgstr "FITXER_DADES [FITXER_EIXIDA]"
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
msgstr "error desconegut del sistema"
@@ -3056,7 +3071,7 @@ msgstr "error desconegut del sistema"
msgid "unable to free arguments"
msgstr "no s’han pogut alliberar els arguments"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "Èxit"
@@ -3098,7 +3113,7 @@ msgid "First/next chain broken"
msgstr "S’ha trencat la cadena de primer/següent"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr "S’ha denegat el permís"
@@ -3618,219 +3633,241 @@ msgstr "netname2user: l’entrada LOCAL de «%s» al directori «%s» no és ún
msgid "netname2user: should not have uid 0"
msgstr "netname2user: no ha de tenir l’UID 0"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
msgstr "Els arguments de la petició són incorrectes"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
msgstr "El procediment RPC ha fallat en una operació NIS"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
msgstr "No s’ha pogut enllaçar amb el servidor d’aquest domini"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
msgstr "El mapa no és al domini del servidor"
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
msgstr "La clau no és al mapa"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
msgstr "Error intern de NIS"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
msgstr "No s’ha pogut assignar un recurs local"
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
msgstr "No hi ha més registres a la base de dades del mapa"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
msgstr "No s’ha pogut comunicar amb el mapador de ports"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
msgstr "No s’ha pogut comunicar amb «ypbind»"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
msgstr "No s’ha pogut comunicar amb «ypserv»"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
msgstr "No s’ha establert nom del domini local"
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
msgstr "La base de dades de mapes NIS és feta malbé"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
msgstr "Les versions de client i servidor NIS difereixen; no es pot donar servei"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
msgstr "La base de dades es troba ocupada"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
msgstr "Codi d’error desconegut de NIS"
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
msgstr "Error intern d’«ypbind»"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
msgstr "El domini no és vinculat"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
msgstr "No s’han pogut assignar recursos del sistema"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
msgstr "Error desconegut d’«ypbind»"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
msgstr "yp_update: no s’ha pogut convertir el nom d’estació a nom de xarxa\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
msgstr "yp_update: no s’ha pogut obtenir l’adreça del servidor\n"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/aicache.c:77 nscd/hstcache.c:468
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr "no s’ha trobat «%s» a la memòria cau de «hosts»"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/aicache.c:79 nscd/hstcache.c:470
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr "es torna a carregar «%s» a la memòria cau de «hosts»"
# La 2a. és de l’estil de «GETPWBYNAME», la 3a. com «passwd». ivb
# Al darrere pot anar « (first)» o no. ivb
-#: nscd/cache.c:146
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
msgstr "s’afegeix una nova entrada «%s» de tipus %s a la memòria cau de «%s»%s"
# FIXME: language-dependent construct ivb
# Supose que vol dir «abans». ivb
-#: nscd/cache.c:148
+#: nscd/cache.c:152
msgid " (first)"
msgstr " (primer)"
-#: nscd/cache.c:256 nscd/connections.c:810
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr "ha fallat stat() sobre el fitxer «%s»: %s"
-#: nscd/cache.c:285
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
msgstr "neteja de la memòria cau de «%s», hora %ld"
# La 2a. és de l’estil de «GETPWBYNAME». ivb
-#: nscd/cache.c:312
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr "es considera l’entrada %s «%s», expiració %<PRIu64>"
-#: nscd/connections.c:521 nscd/connections.c:533 nscd/connections.c:545
-#: nscd/connections.c:564
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr "el fitxer de base de dades persistent «%s» no és vàlid: %s"
-#: nscd/connections.c:535
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "la capçalera no es troba iniciada"
+
+#: nscd/connections.c:583
msgid "header size does not match"
msgstr "la mida de la capçalera no concorda"
-#: nscd/connections.c:547
+#: nscd/connections.c:593
msgid "file size does not match"
msgstr "la mida del fitxer no concorda"
-#: nscd/connections.c:566
+#: nscd/connections.c:610
msgid "verification failed"
msgstr "la verificació ha fallat"
-#: nscd/connections.c:580
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
msgstr "la mida de taula suggerida per a la base de dades «%s» és major que la de la base de dades persistent"
-#: nscd/connections.c:591 nscd/connections.c:673
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr "no s’ha pogut crear un descriptor de només lectura per a «%s»; no s’emprarà mmap()"
-#: nscd/connections.c:652
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "no s’ha pogut accedir a «%s»"
+
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
msgstr "la base de dades de «%s» està corrupta o sent emprada concurrentment; elimineu «%s» manualment si cal i reinicieu"
-#: nscd/connections.c:659
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr "no s’ha pogut crear «%s»; no s’emprarà una base de dades persistent"
-#: nscd/connections.c:662
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr "no s’ha pogut crear «%s»; no es podrà compartir"
-#: nscd/connections.c:733
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
msgstr "no s’ha pogut escriure al fitxer de base de dades «%s»: %s"
-#: nscd/connections.c:772
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr "no s’ha pogut indicar que el connector es tanque en fer exec(): %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:823
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
msgstr "no s’ha pogut obrir el connector: %s"
-#: nscd/connections.c:840
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr "no s’ha pogut canviar el connector al mode no blocador: %s"
-#: nscd/connections.c:848
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr "no s’ha pogut indicar que el connector es tanque en fer exec(): %s"
-#: nscd/connections.c:859
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr "no s’ha pogut habilitar el connector per a acceptar connexions: %s"
-#: nscd/connections.c:955
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
msgstr "es proporciona accés al descriptor de fitxer %d, per a «%s»"
-#: nscd/connections.c:967
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr "no s’ha pogut atendre la petició amb versió antiga %d; la versió actual és %d"
-#: nscd/connections.c:1009 nscd/connections.c:1062
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "no s’atén la petició de %ld per manca de permissos"
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "no s’atén la petició de «%s» (%ld) per manca de permissos"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "no s’atén la petició per manca de permissos"
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
msgstr "no s’ha pogut escriure el resultat: %s"
@@ -3840,228 +3877,245 @@ msgstr "no s’ha pogut escriure el resultat: %s"
# ivb dimoni «nscd» per consultar la memòria cau o invalidar-la. Per
# ivb això faig servir «programa de control» (com «ndc» amb «named» o
# ivb «chronyc» amb «chronyd»).
-#: nscd/connections.c:1145
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
msgstr "error en obtenir l’identificador del programa de control: %s"
-#: nscd/connections.c:1204
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "no s’ha pogut obrir «/proc/self/cmdline»: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1218
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "no s’ha pogut llegir «/proc/self/cmdline»: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1258
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr "no s’ha pogut tornar a l’UID vell: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1268
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr "no s’ha pogut tornar al GID vell: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1281
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
msgstr "no s’ha pogut tornar al directori vell de treball: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1310
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr "ha fallat la reexecució: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1319
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
msgstr "no s’ha pogut canviar el directori de treball a «/»: %s"
-#: nscd/connections.c:1437
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
msgstr "lectura incompleta en llegir la petició: %s"
-#: nscd/connections.c:1468
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
msgstr "la longitud de la clau de la petició és massa gran: %d"
-#: nscd/connections.c:1481
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
msgstr "lectura incompleta en llegir la clau de la petició: %s"
-#: nscd/connections.c:1490
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr "handle_request: s’ha rebut una petició (amb versió %d) del PID %ld"
-#: nscd/connections.c:1495
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr "handle_request: s’ha rebut una petició (amb versió %d)"
-#: nscd/connections.c:1856
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr "no s’han pogut iniciar %d fils d’execució; s’està finalitzant"
+msgid "disabled inotify after read error %d"
+msgstr "s’inhabilita «inotify» per l’error de lectura amb codi %d"
+
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "no s’ha pogut iniciar la variable condicional"
-#: nscd/connections.c:1904 nscd/connections.c:1905 nscd/connections.c:1922
-#: nscd/connections.c:1931 nscd/connections.c:1949 nscd/connections.c:1960
-#: nscd/connections.c:1971
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "no s’ha pogut iniciar el fil d’execució de neteja; s’està finalitzant"
+
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "no s’ha pogut iniciar cap fil d’execució treballador; s’està finalitzant"
+
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr "no s’ha pogut executar «nscd» com a l’usuari «%s»"
-#: nscd/connections.c:1923
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
msgstr "ha fallat getgrouplist() inicial"
-#: nscd/connections.c:1932
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
msgstr "ha fallat getgrouplist()"
-#: nscd/connections.c:1950
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
msgstr "ha fallat setgroups()"
-#: nscd/grpcache.c:402 nscd/hstcache.c:418 nscd/initgrcache.c:412
-#: nscd/pwdcache.c:397 nscd/servicescache.c:343
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
msgstr "escriptura incompleta a «%s»: %s"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr "no s’ha trobat «%s» a la memòria cau de «group»"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
msgstr "es torna a carregar «%s» a la memòria cau de «group»"
-#: nscd/grpcache.c:524
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr "«%s» no és un identificador numèric de grup vàlid"
-#: nscd/mem.c:383
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr "s’han alliberat %zu octets de la memòria cau de «%s»"
-#: nscd/mem.c:512
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
msgstr "no resta memòria per a la base de dades «%s»"
# Més ajudes. ivb
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
msgstr "Llegeix les dades de configuració de NOM."
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
msgstr "No fa fork() i mostra els missatges al terminal actual."
# ivb (2001/10/30)
# ivb Es refereix al _nombre_ de fils a llançar.
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
msgstr "NOMBRE"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
msgstr "Llança NOMBRE fils d’exeució."
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
msgstr "Finalitza el servidor."
-#: nscd/nscd.c:103
-msgid "Print current configuration statistic"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
msgstr "Mostra estadístiques de la configuració actual."
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
msgstr "TAULA"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
msgstr "Invalida la memòria cau especificada."
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
msgstr "TAULA,yes"
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
msgstr "Empra una memòria cau diferent per a cada usuari."
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
msgstr "Dimoni de memòria cau del servei de noms."
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr "el nombre d’arguments és incorrecte"
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
msgstr "error en llegir el fitxer de configuració; açò és fatal"
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
msgstr "ja es troba en marxa"
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
msgstr "ha fallat fork()"
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
msgstr "no s’ha pogut canviar el directori de treball a «/»"
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
msgstr "no s’ha pogut crear el fitxer de registre"
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
msgstr "només root pot emprar aquesta opció"
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "«%s» no és una base de dades coneguda"
+
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
msgstr "escriptura incompleta"
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
msgstr "no s’ha pogut llegir l’ACK d’invalidació"
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
msgstr "la invalidació ha fallat"
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
msgstr "ja no s’implementen els serveis segurs"
@@ -4076,37 +4130,37 @@ msgstr "la base de dades «%s» no s’accepta"
msgid "Parse error: %s"
msgstr "error d’anàlisi: %s"
-#: nscd/nscd_conf.c:193
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
msgstr "cal especificar un nom d’usuari per a l’opció «server-user»"
-#: nscd/nscd_conf.c:200
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
msgstr "cal especificar un nom d’usuari per a l’opció «stat-user»"
-#: nscd/nscd_conf.c:244
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
msgstr "el valor de «reload-count» no és vàlid: %u"
-#: nscd/nscd_conf.c:259
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
msgstr "cal especificar un valor per a l’opció «restart-interval»"
-#: nscd/nscd_conf.c:273
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
msgstr "l’opció no és coneguda: %s %s %s"
-#: nscd/nscd_conf.c:286
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
msgstr "no s’ha pogut obtenir el directori de treball actual: %s; s’inhabilita el mode paranoic"
-#: nscd/nscd_conf.c:306
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
msgstr "la mida màxima de fitxer per a la base de dades «%s» és massa menuda"
@@ -4239,18 +4293,18 @@ msgstr ""
"%15s comprovar «/etc/%s» per si hi ha hagut canvis?\n"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/pwdcache.c:440
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr "no s’ha trobat «%s» a la memòria cau de «passwd»"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
msgstr "es torna a carregar «%s» a la memòria cau de «passwd»"
-#: nscd/pwdcache.c:520
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr "«%s» no és un identificador numèric d’usuari vàlid"
@@ -4326,7 +4380,11 @@ msgstr "error en obtenir el context d’«nscd»"
msgid "Error getting sid from context"
msgstr "error en obtenir el SID del context"
-#: nscd/selinux.c:399
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "no s’ha compiŀlat la compatibilitat amb polítiques de bases de dades"
+
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4374,32 +4432,25 @@ msgstr "BASE_DE_DADES [CLAU…]"
msgid "Service configuration to be used"
msgstr "Configuració a emprar del servei."
-# FIXME: Don't use \v.
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Obté entrades de les bases de dades d’administració.\n"
-"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get entries from administrative database."
+msgstr "Obté entrades de les bases de dades d’administració."
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr "no es permet l’enumeració sobre «%s»\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
msgstr "el nom de la base de dades no és conegut"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
msgstr "Bases de dades acceptades:\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
msgstr "la base de dades no és coneguda: %s\n"
@@ -4474,153 +4525,167 @@ msgstr "Forma d’ús: %s [-v ESPECIFICACIÓ] NOM_DE_VARIABLE [CAMÍ]\n"
msgid " %s -a [pathname]\n"
msgstr " %s -a [CAMÍ]\n"
-#: posix/getconf.c:1067
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"Forma d’ús: getconf [-v ESPECIFICACIÓ] VARIABLE\n"
+" o bé: getconf [-v ESPECIFICACIÓ] VARIABLE_DE_CAMÍ CAMÍ\n"
+"\n"
+"Obté el valor de configuració per a la VARIABLE, o per a la VARIABLE_DE_CAMÍ\n"
+"donat un CAMÍ. Si s’indica una ESPECIFICACIÓ, mostra els valors per a l’entorn\n"
+"de compiŀlació indicat.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr "l’especificació «%s» no és coneguda"
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
msgstr "no s’ha pogut executar «%s»"
# ivb (2001/11/01)
# ivb Es refereix a variables de configuració -> femení.
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr "indefinida"
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr "la variable «%s» no és reconeguda"
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: l’opció «%s» és ambígua\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: l’opció «--%s» no admet arguments\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: l’opció «%c%s» no admet arguments\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: l’opció «%s» necessita un argument\n"
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: l’opció «--%s» no és reconeguda\n"
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: l’opció «%c%s» no és reconeguda\n"
-#: posix/getopt.c:804 posix/getopt.c:807
-#, c-format
-msgid "%s: illegal option -- '%c'\n"
-msgstr "%s: no es permet l’opció «%c»\n"
-
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: l’opció «%c» no és vàlida\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: l’opció «%c» necessita un argument\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: l’opció «-W %s» és ambígua\n"
-#: posix/getopt.c:977 posix/getopt.c:995
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: l’opció «-W %s» no admet arguments\n"
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
msgstr "No hi ha cap coincidència"
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
msgstr "L’expressió regular no és vàlida"
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
msgstr "El caràcter d’ordenació no és vàlid"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
msgstr "El nom de la classe de caràcters no és vàlid"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
msgstr "Hi ha una barra invertida sobrant al final"
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
msgstr "La referència cap enrere no és vàlida"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
msgstr "«[» o «[^» desaparellat"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
msgstr "«(» o «\\(» desaparellat"
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
msgstr "«\\{» desaparellat"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
msgstr "El contingut de «\\{\\}» no és vàlid"
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
msgstr "El final del rang no és vàlid"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
msgstr "La memòria s’ha exhaurit"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
msgstr "L’expressió regular precedent és incorrecta"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
msgstr "Fi prematura de l’expressió regular"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
msgstr "L’expressió regular és massa llarga"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr "«)» o «\\)» desaparellat"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr "No hi ha expressió regular prèvia"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
msgstr "el paràmetre és nul o no s’ha establert"
@@ -4707,9 +4772,13 @@ msgstr "Senyal de temps real %d"
msgid "Unknown signal %d"
msgstr "Senyal desconegut %d"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: no resta memòria\n"
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "no resta memòria\n"
# ivb (2001/11/01)
# ivb D'acord amb un comentari del propi fitxer.
@@ -4717,125 +4786,126 @@ msgstr "authunix_create: no resta memòria\n"
msgid "auth_unix.c: Fatal marshalling problem"
msgstr "auth_none.c: error fatal de preserialització"
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; versió menor = %lu, versió major = %lu"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; versió menor = %lu, versió major = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; causa = "
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; causa = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(error desconegut d’autenticació: %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; causa = (error desconegut d’autenticació: %d)\n"
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC: Èxit"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
msgstr "RPC: No s’han pogut codificar els arguments"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
msgstr "RPC: No s’ha pogut descodificar el resultat"
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
msgstr "RPC: No s’ha pogut fer l’enviament"
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
msgstr "RPC: No s’ha pogut rebre"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC: S’ha excedit el temps"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
msgstr "RPC: Les versions d’RPC són incompatibles"
-#: sunrpc/clnt_perr.c:199
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC: Error d’autenticació"
-#: sunrpc/clnt_perr.c:203
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
msgstr "RPC: El programa no es troba disponible"
-#: sunrpc/clnt_perr.c:207
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
msgstr "RPC: No hi ha coincidència programa/versió"
-#: sunrpc/clnt_perr.c:211
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
msgstr "RPC: El procediment no es troba disponible"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
msgstr "RPC: El servidor no ha pogut descodificar els arguments"
-#: sunrpc/clnt_perr.c:219
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
msgstr "RPC: Error al sistema remot"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
msgstr "RPC: L’estació no és coneguda"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RPC: El protocol no és conegut"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC: Fallada del mapador de ports"
-#: sunrpc/clnt_perr.c:235
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
msgstr "RPC: El programa no s’ha donat d’alta"
-#: sunrpc/clnt_perr.c:239
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
msgstr "RPC: Ha fallat (error no especificat)"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC: (codi d’error desconegut)"
-#: sunrpc/clnt_perr.c:342
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "L’autenticació és vàlida"
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
msgstr "La credencial donada pel client no és vàlida"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
msgstr "El servidor ha rebutjat la credencial"
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
msgstr "El verificador del client no és vàlid"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
msgstr "El servidor ha rebutjat el verificador"
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "La credencial del client és massa fluixa"
-#: sunrpc/clnt_perr.c:365
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
msgstr "El verificador del servidor no és vàlid"
-#: sunrpc/clnt_perr.c:369
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
msgstr "Ha fallat (no s’especifica l’error)"
@@ -4843,18 +4913,6 @@ msgstr "Ha fallat (no s’especifica l’error)"
msgid "clnt_raw.c: fatal header serialization error"
msgstr "clnt_raw.c: error fatal de serialització de capçaleres"
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create: no resta memòria\n"
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create: no resta memòria\n"
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create: no resta memòria\n"
-
#: sunrpc/pm_getmaps.c:83
msgid "pmap_getmaps.c: rpc problem"
msgstr "pmap_getmaps.c: problema d’RPC"
@@ -4887,118 +4945,262 @@ msgstr "problema amb el sondeig de la difusió"
msgid "Cannot receive reply to broadcast"
msgstr "no s’ha pogut rebre una resposta a la difusió"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s: l’eixida sobreescriuria «%s»\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s: no s’ha pogut obrir «%s»: %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s: en escriure a l’eixida «%s»: %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr "no s’ha pogut trobar el preprocessador de C: %s\n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr "no s’ha pogut trobar cap preprocessador de C (cpp)\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr "%s: el preprocessador de C ha fallat amb el senyal %d\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr "%s: el preprocessador de C ha fallat amb el codi d’eixida %d\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr "el tipus de xarxa no és permès: «%s»\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
msgstr "rpcgen: hi ha massa definicions\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rpcgen: error en codificar els arguments\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr "el fitxer «%s» ja existeix i podria ser sobreescrit\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr "no es pot especificar més d’un fitxer d’entrada\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr "aquesta implementació no accepta l’estil nou ni el codi compatible amb MT\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr "no es pot emprar l’opció IDXARXA («-n») amb l’opció d’inetd («-I»)\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr "no es pot emprar l’opció IDXARXA («-n») sense TIRPC\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr "no es poden emprar opcions de taula amb l’estil nou («-N»)\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr "cal FITXER_ENTRADA per als senyaladors de generació de plantilles\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "no es pot tenir més d’un senyalador de generació de fitxers\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr "Forma d’ús: %s FITXER_ENTRADA\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
-msgstr "\t%s [-abkCLNTM][-D NOM[=VALOR]] [-i MIDA] [-I [-K SEGONS]] [-Y CAMÍ] FITXER_ENTRADA\n"
+msgstr ""
+" %s [-abkCLNTM] [-DNOM[=VALOR]] [-i MIDA] [-I [-K SEGONS]]\n"
+" [-Y CAMÍ] FITXER_ENTRADA\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
-msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o FITXER_EIXIDA] [FITXER_ENTRADA]\n"
+msgstr ""
+" %s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o FITXER_EIXIDA]\n"
+" [FITXER_ENTRADA]\n"
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
-msgstr "\t%s [-s TIPUS_DE_XARXA]… [-o FITXER_EIXIDA] [FITXER_ENTRADA]\n"
+msgstr " %s [-s TIPUS_DE_XARXA]… [-o FITXER_EIXIDA] [FITXER_ENTRADA]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
-msgstr "\t%s [-n IDXARXA]… [-o FITXER_EIXIDA] [FITXER_ENTRADA]\n"
+msgstr " %s [-n IDXARXA]… [-o FITXER_EIXIDA] [FITXER_ENTRADA]\n"
+
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr ""
+"Opcions:\n"
+"\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr " -a Genera tots els fitxers, incloent els exemples.\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr ""
+" -b Mode de compatibilitat cap enrere (genera codi per a\n"
+" SunOS 4.1).\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr " -c Genera rutines XDR.\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr " -C Mode ANSI C.\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr " -DNOM[=VALOR] Defineix un símbol (equival a «#define»).\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr " -h Genera un fitxer de capçaleres.\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr " -i MIDA Indica la MIDA on començar a generar codi en línia.\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr ""
+" -I Genera codi de compatibilitat amb «inetd» per al\n"
+" servidor (per a SunOS 4.1).\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr ""
+" -K SEGONS Fa que el servidor isca després del nombre indicat de\n"
+" SEGONS d’inactivitat.\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr " -l Genera esquelets per a la part del client.\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr " -L Fa que els errors del servidor s’envien a «syslog».\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr " -m Genera esquelets per a la part del servidor.\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr " -M Genera codi compatible amb múltiples fils d’execució.\n"
+
+# Sembla que «netid» és una expressió de la jerga RPC. ivb
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr " -n NETID Genera codi compatible amb el NETID indicat.\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr " -N Permet arguments múltiples i pas d’arguments per valor.\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr " -o FITXER_EIXIDA Nom del fitxer d’eixida.\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr ""
+" -s TIPUS_DE_XARXA Genera codi de servidor compatible amb el TIPUS_DE_XARXA\n"
+" indicat.\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr ""
+" -Sc Genera codi d’exemple per a un client que empra\n"
+" procediments remots.\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr ""
+" -Ss Genera codi d’exemple per a un servidor que defineix\n"
+" procediments remots.\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr " -Sm Genera una plantilla de fitxer «Makefile».\n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr " -t Genera una taula de despatxat de crides RPC.\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr ""
+" -T Genera codi per a treballar amb taules de despatxat de\n"
+" crides RPC.\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr " -Y CAMÍ Directori on es troba el preprocessador de C (cpp).\n"
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
@@ -5020,81 +5222,81 @@ msgstr "la cadena de caràcters és buida"
msgid "preprocessor error"
msgstr "error del preprocessador"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
msgstr "el programa %lu no es troba disponible\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr "el programa %lu, versió %lu, no es troba disponible\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "el programa %lu, versió %lu, es troba llest i esperant\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr "rpcinfo: no s’ha pogut contactar amb el mapador de ports"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr "no hi ha cap programa remot donat d’alta\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " programa vers proto port\n"
# ivb (2001/10/28)
# ivb Es refereix al nom d'una estació -> masculí.
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr "(desconegut)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr "rpcinfo: la difusió ha fallat: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "ho sent, no sou root\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr "rpcinfo: no s’ha pogut donar de baixa el programa «%s», versió %s\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr "Forma d’ús: rpcinfo [-n NÚMPORT] -u ESTACIÓ NÚMPROGRAMA [NÚMVERSIÓ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr " rpcinfo [-n NÚMPORT] -t ESTACIÓ NÚMPROGRAMA [NÚMVERSIÓ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr " rpcinfo -p [ESTACIÓ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b NÚMPROGRAMA NÚMVERSIÓ\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d NÚMPROGRAMA NÚMVERSIÓ\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo: el servei «%s» no és conegut\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr "rpcinfo: l’estació «%s» no és coneguda\n"
@@ -5145,14 +5347,6 @@ msgstr "svc_tcp.c: problemes en crear un connector TCP"
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr "svc_tcp.c: ha fallat getsockname() o listen()"
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: no resta memòria\n"
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: no resta memòria\n"
-
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
msgstr "svcudp_create: problemes en crear un connector"
@@ -5161,39 +5355,35 @@ msgstr "svcudp_create: problemes en crear un connector"
msgid "svcudp_create - cannot getsockname"
msgstr "svcudp_create: ha fallat getsockname()"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudp_create: no resta memòria\n"
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create: «xp_pad» és massa menut per a IP_PKTINFO\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
msgstr "enablecache: la memòria cau ja està habilitada"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
msgstr "enablecache: no s’ha pogut reservar espai per a la memòria cau"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
msgstr "enablecache: no s’ha pogut reservar espai per a les dades de la memòria cau"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
msgstr "enablecache: no s’ha pogut reservar la cua FIFO de la memòria cau"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
msgstr "cache_set: no s’ha trobat la víctima"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
msgstr "cache_set: no s’ha pogut reservar la víctima"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
msgstr "cache_set: no s’ha pogut reservar un nou «rpc_buffer»"
@@ -5205,34 +5395,6 @@ msgstr "svc_unix.c: problemes en crear un connector AF_UNIX"
msgid "svc_unix.c - cannot getsockname or listen"
msgstr "svc_unix.c: ha fallat getsockname() o listen()"
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: no resta memòria\n"
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefd_xprt: no resta memòria\n"
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: no resta memòria\n"
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: no resta memòria\n"
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: no resta memòria\n"
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: no resta memòria\n"
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference: no resta memòria\n"
-
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
msgstr "Penjat"
@@ -6312,74 +6474,83 @@ msgstr "«%s» és per a la màquina desconeguda %d\n"
msgid "makecontext: does not know how to handle more than 8 arguments\n"
msgstr "makecontext: no es poden tractar més de 8 arguments\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"Forma d’ús: lddlibc4 FITXER\n"
+"\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
msgstr "no s’ha pogut obrir «%s»"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
msgstr "no s’ha pogut llegir la capçalera de «%s»"
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
msgstr "no comença per un caràcter alfabètic"
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
msgstr "té menys de 3 caràcters alfabètics"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
msgstr "té més de 6 caràcters alfabètics"
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
msgstr "difereix de l’estàndard POSIX"
# FIXME: language-dependent
# La cadena final és una de les anteriors. ivb
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr "%1$s: avís: l’abreviatura «%3$s» de la zona «%2$s» %4$s\n"
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
msgstr "%s: la forma d’ús és %s [--version] [-v] [-c [ANY_INF,]ANY_SUP] NOM_DE_ZONA…\n"
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr "%s: l’argument de l’opció «-c» no és vàlid: %s\n"
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
msgstr "error en escriure a l’eixida estàndard"
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
msgstr "%s: no es pot emprar «-v» ja que «time_t» en aquest sistema és un tipus flotant diferent de «float» i «double»\n"
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
msgstr "%s: la memòria s’ha exhaurit: %s\n"
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
msgstr "«%s», línia %d: %s"
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
msgstr " (regla de «%s», línia %d)"
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
msgstr "avís: "
@@ -6387,7 +6558,7 @@ msgstr "avís: "
# ivb Deixe algunes paraules per traduir perquè es refereixen a paraules
# ivb reservades dels fitxers amb què treballa zic.
# Sembla que la barra al final de la línia no pinta res. ivb
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
@@ -6397,341 +6568,341 @@ msgstr ""
"\t[-d DIRECTORI] [-L FITXER_SEGONS_INTERCALARS] [-y yearistype]\n"
"\t[FITXER…]\n"
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
msgstr "l’especificació de «zic_t» en temps de compiŀlació no és vàlida"
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
msgstr "%s: s’ha indicat l’opció «-d» més d’una volta\n"
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
msgstr "%s: s’ha indicat l’opció «-l» més d’una volta\n"
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
msgstr "%s: s’ha indicat l’opció «-p» més d’una volta\n"
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
msgstr "%s: s’ha indicat l’opció «-y» més d’una volta\n"
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
msgstr "%s: s’ha indicat l’opció «-L» més d’una volta\n"
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
msgstr "enllaç a un altre enllaç"
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
msgstr "no s’ha pogut crear un enllaç fort, se n’ha emprat un de simbòlic"
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr "%s: no s’ha pogut crear un enllaç des de «%s» cap a «%s»: %s\n"
-#: timezone/zic.c:762 timezone/zic.c:764
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
msgstr "el mateix nom de regla és repetit a diversos fitxers"
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
msgstr "la zona no té regles"
-#: timezone/zic.c:812
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
msgstr "«%s» en una zona sense regles"
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
msgstr "entrada estàndard"
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr "%s: no s’ha pogut obrir «%s»: %s\n"
-#: timezone/zic.c:849
+#: timezone/zic.c:832
msgid "line too long"
msgstr "la línia és massa llarga"
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
msgstr "la línia introduïda pertany a un tipus desconegut"
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr "%s: línia «Leap» en fitxer no de segons intercalars «%s»\n"
-#: timezone/zic.c:892 timezone/zic.c:1329 timezone/zic.c:1351
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr "%s: pànic: el valor esquerre %d no és vàlid\n"
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
msgstr "%s: error en llegir «%s»\n"
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr "%s: error en tancar «%s»: %s\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
msgstr "cal una línia de continuació, però se’n troba cap"
-#: timezone/zic.c:956 timezone/zic.c:2489 timezone/zic.c:2508
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
msgid "time overflow"
msgstr "desbordament de l’hora"
-#: timezone/zic.c:960
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr "les versions de «zic» anteriors a 1998 no admeten «24:00»"
-#: timezone/zic.c:963
+#: timezone/zic.c:946
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr "les versions de «zic» anteriors a 2007 no admeten valors majors que 24 hores"
-#: timezone/zic.c:976
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
msgstr "el nombre de camps de la línia «Rule» és incorrecte"
-#: timezone/zic.c:980
+#: timezone/zic.c:963
msgid "nameless rule"
msgstr "la regla no té nom"
-#: timezone/zic.c:985
+#: timezone/zic.c:968
msgid "invalid saved time"
msgstr "el temps estalviat no és vàlid"
-#: timezone/zic.c:1006
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
msgstr "el nombre de camps de la línia «Zone» no és correcte"
-#: timezone/zic.c:1012
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
msgstr "la línia «Zone %s» i l’opció «-l» són mútuament excloents"
-#: timezone/zic.c:1020
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
msgstr "la línia «Zone %s» i l’opció «-p» són mútuament excloents"
-#: timezone/zic.c:1032
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr "el nom de zona «%s» (fitxer «%s», línia %d) és duplicat"
-#: timezone/zic.c:1048
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
msgstr "el nombre de camps de la línia de continuació de «Zone» no és correcte"
-#: timezone/zic.c:1088
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
msgstr "el desplaçament d’UTC no és vàlid"
-#: timezone/zic.c:1091
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
msgstr "el format de l’abreviatura no és vàlid"
-#: timezone/zic.c:1120
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
msgstr "el temps final de la línia de continuació de «Zone» no ve darrere del temps final de la línia anterior"
-#: timezone/zic.c:1148
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
msgstr "el nombre de camps de la línia «Leap» no és correcte"
-#: timezone/zic.c:1157
+#: timezone/zic.c:1140
msgid "invalid leaping year"
msgstr "l’any bixest no és vàlid"
-#: timezone/zic.c:1177 timezone/zic.c:1283
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
msgstr "el nom del mes no és vàlid"
-#: timezone/zic.c:1190 timezone/zic.c:1396 timezone/zic.c:1410
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
msgstr "el dia del mes no és vàlid"
-#: timezone/zic.c:1195
+#: timezone/zic.c:1178
msgid "time before zero"
msgstr "l’hora és anterior a zero"
-#: timezone/zic.c:1199
+#: timezone/zic.c:1182
msgid "time too small"
msgstr "l’hora és massa menuda"
-#: timezone/zic.c:1203
+#: timezone/zic.c:1186
msgid "time too large"
msgstr "l’hora és massa gran"
-#: timezone/zic.c:1207 timezone/zic.c:1312
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
msgstr "l’hora del dia no és vàlida"
-#: timezone/zic.c:1226
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
msgstr "el camp de correcció de la línia de «Leap» no és vàlid"
-#: timezone/zic.c:1231
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
msgstr "el camp «Rolling/Stationary» de la línia «Leap» no és vàlid"
-#: timezone/zic.c:1247
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
msgstr "el nombre de camps de la línia «Link» no és correcte"
# El nom del camp no és una paraula clau del fitxer. ivb
-#: timezone/zic.c:1251
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
msgstr "el camp d’inici de la línia «Link» és buit"
# El nom del camp no és una paraula clau del fitxer. ivb
-#: timezone/zic.c:1255
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
msgstr "el camp d’acabament de la línia «Link» és buit"
-#: timezone/zic.c:1333
+#: timezone/zic.c:1316
msgid "invalid starting year"
msgstr "l’any de començament no és vàlid"
-#: timezone/zic.c:1355
+#: timezone/zic.c:1338
msgid "invalid ending year"
msgstr "l’any d’acabament no és vàlid"
-#: timezone/zic.c:1359
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
msgstr "l’any de començament és major que el d’acabament"
-#: timezone/zic.c:1366
+#: timezone/zic.c:1349
msgid "typed single year"
msgstr "s’ha especificat un sol any"
-#: timezone/zic.c:1401
+#: timezone/zic.c:1384
msgid "invalid weekday name"
msgstr "el nom del dia de la setmana no és vàlid"
-#: timezone/zic.c:1579
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
msgstr "%s: no s’ha pogut eliminar «%s»: %s\n"
-#: timezone/zic.c:1589
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr "%s: no s’ha pogut crear «%s»: %s\n"
-#: timezone/zic.c:1739
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
msgstr "%s: error en escriure «%s»\n"
-#: timezone/zic.c:2031
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
msgstr "no s’ha establert una variable d’entorn POSIX per a la zona"
-#: timezone/zic.c:2185
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
msgstr "no s’ha pogut determinar l’abreviatura de zona horària a emprar just després de la data límit (until)"
-#: timezone/zic.c:2231
+#: timezone/zic.c:2218
msgid "too many transitions?!"
msgstr "hi ha massa transicions?!"
-#: timezone/zic.c:2250
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
msgstr "error intern: s’ha cridat addtype() amb un valor erroni per a «isdst»"
-#: timezone/zic.c:2254
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
msgstr "error intern: s’ha cridat addtype() amb un valor erroni per a «ttisstd»"
-#: timezone/zic.c:2258
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
msgstr "error intern: s’ha cridat addtype() amb un valor erroni per a «ttisgmt»"
-#: timezone/zic.c:2277
+#: timezone/zic.c:2264
msgid "too many local time types"
msgstr "hi ha massa tipus d’hora local"
-#: timezone/zic.c:2281
+#: timezone/zic.c:2268
msgid "UTC offset out of range"
msgstr "el desplaçament respecte UTC és fora de rang"
-#: timezone/zic.c:2309
+#: timezone/zic.c:2296
msgid "too many leap seconds"
msgstr "hi ha massa segons intercalars"
-#: timezone/zic.c:2315
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
msgstr "el moment de segon intercalar és repetit"
-#: timezone/zic.c:2367
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
msgstr "l’execució de l’ordre ha donat un resultat estrany"
-#: timezone/zic.c:2368
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr "%s: l’ordre ha estat «%s», el resultat ha estat %d\n"
# ivb (2001/10/30)
# ivb Es refereix a les cometes dobles «"».
-#: timezone/zic.c:2466
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
msgstr "el nombre de cometes és senar"
-#: timezone/zic.c:2555
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
msgstr "s’ha emprat el dia 29 de febrer en un any no bixest"
-#: timezone/zic.c:2590
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
msgstr "la regla va més enllà de l’inici o fi del mes; no funcionarà en les versions de «zic» anteriors a 2004"
-#: timezone/zic.c:2622
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
msgstr "l’abreviatura de la zona horària no comença per un caràcter alfabètic"
-#: timezone/zic.c:2624
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr "l’abreviatura de la zona horària té més de 3 caràcters alfabètics"
-#: timezone/zic.c:2626
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
msgstr "l’abreviatura de la zona horària té massa caràcters alfabètics"
-#: timezone/zic.c:2636
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
msgstr "l’abreviatura de la zona horària difereix de l’estàndard POSIX"
-#: timezone/zic.c:2648
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
msgstr "hi ha massa abreviatures de zona horària (o són massa llargues)"
-#: timezone/zic.c:2689
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
msgstr "%s: no s’ha pogut crear el directori «%s»: %s\n"
# ivb (2001/10/28)
# ivb Resulta d'assignar un «int» a un «long».
-#: timezone/zic.c:2711
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr "%s: el signe de %d no s’ha estès correctament\n"
diff --git a/resolv/res_send.c b/resolv/res_send.c
index a339c2be51..25a854f72e 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -1048,9 +1048,7 @@ send_dg(res_state statp,
}
if (n == 0) {
Dprint(statp->options & RES_DEBUG, (stdout, ";; timeout\n"));
- if (!single_request
- && resplen > 1
- && (recvresp1 || (buf2 != NULL && recvresp2)))
+ if (resplen > 1 && (recvresp1 || (buf2 != NULL && recvresp2)))
{
/* There are quite a few broken name servers out
there which don't handle two outstanding
@@ -1059,9 +1057,15 @@ send_dg(res_state statp,
having received one answer switch to the mode
where we send the second request only once we
have received the first answer. */
- single_request = true;
- *gotsomewhere = save_gotsomewhere;
- goto retry;
+ if (!single_request)
+ {
+ single_request = true;
+ *gotsomewhere = save_gotsomewhere;
+ goto retry;
+ }
+
+ *resplen2 = 1;
+ return resplen;
}
*gotsomewhere = 1;
diff --git a/shadow/Makefile b/shadow/Makefile
index cc0efaff6c..4755fab04a 100644
--- a/shadow/Makefile
+++ b/shadow/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1996, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1996, 2003, 2004, 2009 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
@@ -26,6 +26,8 @@ routines = getspent getspnam sgetspent fgetspent putspent \
getspent_r getspnam_r sgetspent_r fgetspent_r \
lckpwdf
+tests = tst-shadow
+
CFLAGS-getspent_r.c = -fexceptions
CFLAGS-getspent.c = -fexceptions
CFLAGS-fgetspent.c = -fexceptions
diff --git a/shadow/sgetspent_r.c b/shadow/sgetspent_r.c
index 2ed350a1ad..5599ee4ec8 100644
--- a/shadow/sgetspent_r.c
+++ b/shadow/sgetspent_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2005, 2009 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
@@ -91,8 +91,12 @@ int
__sgetspent_r (const char *string, struct spwd *resbuf, char *buffer,
size_t buflen, struct spwd **result)
{
- int parse_result = parse_line (strncpy (buffer, string, buflen),
- resbuf, NULL, 0, &errno);
+ buffer[buflen - 1] = '\0';
+ char *sp = strncpy (buffer, string, buflen);
+ if (buffer[buflen - 1] != '\0')
+ return ERANGE;
+
+ int parse_result = parse_line (sp, resbuf, NULL, 0, &errno);
*result = parse_result > 0 ? resbuf : NULL;
return *result == NULL ? errno : 0;
diff --git a/shadow/tst-shadow.c b/shadow/tst-shadow.c
new file mode 100644
index 0000000000..48f7167baa
--- /dev/null
+++ b/shadow/tst-shadow.c
@@ -0,0 +1,84 @@
+#include <shadow.h>
+#include <stdio.h>
+#include <string.h>
+
+
+static const struct spwd data[] =
+ {
+ { (char *) "one", (char *) "pwdone", 1, 2, 3, 4, 5, 6, 7 },
+ { (char *) "two", (char *) "pwdtwo", 11, 12, 13, 14, 15, 16, 17 },
+ { (char *) "three", (char *) "pwdthree", -1, 22, 23, 24, 25, 26, 27 },
+ { (char *) "four", (char *) "pwdfour", 31, -1, 33, 34, 35, 36, 37 },
+ { (char *) "five", (char *) "pwdfive", 41, 42, -1, 44, 45, 46, 47 },
+ { (char *) "six", (char *) "pwdsix", 51, 52, 53, -1, 55, 56, 57 },
+ { (char *) "seven", (char *) "pwdseven", 61, 62, 63, 64, -1, 66, 67 },
+ { (char *) "eight", (char *) "pwdeigth", 71, 72, 73, 74, 75, -1, 77 },
+ { (char *) "nine", (char *) "pwdnine", 81, 82, 83, 84, 85, 86, ~0ul },
+ };
+#define ndata (sizeof (data) / sizeof (data[0]))
+
+
+static int
+do_test (void)
+{
+ FILE *fp = tmpfile ();
+ if (fp == NULL)
+ {
+ puts ("cannot open temporary file");
+ return 1;
+ }
+
+ for (size_t i = 0; i < ndata; ++i)
+ if (putspent (&data[i], fp) != 0)
+ {
+ printf ("putspent call %zu failed\n", i + 1);
+ return 1;
+ }
+
+ rewind (fp);
+
+ int result = 0;
+ int seen = -1;
+ struct spwd *p;
+ while ((p = fgetspent (fp)) != NULL)
+ {
+ ++seen;
+ if (strcmp (p->sp_namp, data[seen].sp_namp) != 0)
+ {
+ printf ("sp_namp of entry %d does not match: %s vs %s\n",
+ seen + 1, p->sp_namp, data[seen].sp_namp);
+ result = 1;
+ }
+ if (strcmp (p->sp_pwdp, data[seen].sp_pwdp) != 0)
+ {
+ printf ("sp_pwdp of entry %d does not match: %s vs %s\n",
+ seen + 1, p->sp_pwdp, data[seen].sp_pwdp);
+ result = 1;
+ }
+#define T(f) \
+ if (p->f != data[seen].f) \
+ { \
+ printf ("%s of entry %d wrong: %ld vs %ld\n", \
+ #f, seen + 1, p->f, data[seen].f); \
+ result = 1; \
+ }
+ T (sp_lstchg);
+ T (sp_min);
+ T (sp_max);
+ T (sp_warn);
+ T (sp_expire);
+ if (p->sp_flag != data[seen].sp_flag)
+ {
+ printf ("sp_flag of entry %d wrong: %lu vs %lu\n",
+ seen + 1, p->sp_flag, data[seen].sp_flag);
+ result = 1;
+ }
+ }
+
+ fclose (fp);
+
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/printf.h b/stdio-common/printf.h
index a11af02274..af8cf34fcc 100644
--- a/stdio-common/printf.h
+++ b/stdio-common/printf.h
@@ -113,7 +113,7 @@ extern int register_printf_function (int __spec, printf_function __func,
it returns a positive value representing the bit set in the USER
field in 'struct printf_info'. */
-extern int register_printf_modifier (wchar_t *__str) __wur __THROW;
+extern int register_printf_modifier (__const wchar_t *__str) __wur __THROW;
/* Register variable argument handler for user type. The return value
diff --git a/stdio-common/reg-modifier.c b/stdio-common/reg-modifier.c
index 69bb2ef3d5..ea3bdada13 100644
--- a/stdio-common/reg-modifier.c
+++ b/stdio-common/reg-modifier.c
@@ -39,7 +39,7 @@ static int next_bit;
int
-__register_printf_modifier (wchar_t *str)
+__register_printf_modifier (const wchar_t *str)
{
if (str[0] == L'\0')
{
@@ -48,7 +48,7 @@ __register_printf_modifier (wchar_t *str)
return -1;
}
- wchar_t *wc = str;
+ const wchar_t *wc = str;
while (*wc != L'\0')
if (*wc < 0 || *wc > (wchar_t) UCHAR_MAX)
goto einval;
diff --git a/stdlib/random_r.c b/stdlib/random_r.c
index 5e564a737d..a30055f598 100644
--- a/stdlib/random_r.c
+++ b/stdlib/random_r.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 1995, 2005 Free Software Foundation
+ Copyright (C) 1995, 2005, 2009 Free Software Foundation
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -166,7 +166,7 @@ __srandom_r (seed, buf)
int type;
int32_t *state;
long int i;
- long int word;
+ int32_t word;
int32_t *dst;
int kc;
diff --git a/stdlib/strfmon_l.c b/stdlib/strfmon_l.c
index c9f3a47b41..8e63d459e3 100644
--- a/stdlib/strfmon_l.c
+++ b/stdlib/strfmon_l.c
@@ -1,5 +1,5 @@
/* Formatting a monetary value according to the given locale.
- Copyright (C) 1996, 1997, 2002, 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1996,1997,2002,2004,2006,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -133,7 +133,7 @@ __vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
int done;
const char *currency_symbol;
size_t currency_symbol_len;
- int width;
+ long int width;
char *startp;
const void *ptr;
char space_char;
@@ -221,13 +221,21 @@ __vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
while (isdigit (*++fmt))
{
- width *= 10;
- width += to_digit (*fmt);
+ int val = to_digit (*fmt);
+
+ if (width > LONG_MAX / 10
+ || (width == LONG_MAX && val > LONG_MAX % 10))
+ {
+ __set_errno (E2BIG);
+ return -1;
+ }
+
+ width = width * 10 + val;
}
/* If we don't have enough room for the demanded width we
can stop now and return an error. */
- if (dest + width >= s + maxsize)
+ if (width >= maxsize - (dest - s))
{
__set_errno (E2BIG);
return -1;
@@ -560,7 +568,7 @@ __vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
out_char (space_char);
out_nstring (currency_symbol, currency_symbol_len);
}
-
+
if (sign_posn == 4)
{
if (sep_by_space == 2)
@@ -589,9 +597,8 @@ __vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
while (dest - startp < width);
else
{
- int dist = width - (dest - startp);
- char *cp;
- for (cp = dest - 1; cp >= startp; --cp)
+ long int dist = width - (dest - startp);
+ for (char *cp = dest - 1; cp >= startp; --cp)
cp[dist] = cp[0];
dest += dist;
diff --git a/sysdeps/generic/paths.h b/sysdeps/generic/paths.h
index 03bf0f355f..439992fe7b 100644
--- a/sysdeps/generic/paths.h
+++ b/sysdeps/generic/paths.h
@@ -44,6 +44,7 @@
#define _PATH_DEVDB "/var/run/dev.db"
#define _PATH_DEVNULL "/dev/null"
#define _PATH_DRUM "/dev/drum"
+#define _PATH_GSHADOW "/etc/gshadow"
#define _PATH_KMEM "/dev/kmem"
#define _PATH_MAILDIR "/var/mail"
#define _PATH_LASTLOG "/var/log/lastlog"
diff --git a/sysdeps/posix/preadv.c b/sysdeps/posix/preadv.c
index e697604c19..791077399e 100644
--- a/sysdeps/posix/preadv.c
+++ b/sysdeps/posix/preadv.c
@@ -48,7 +48,7 @@ ifree (char **ptrp)
without change the file pointer, and put the result in the buffers
described by VECTOR, which is a vector of COUNT 'struct iovec's.
The buffers are filled in the order specified. Operates just like
- 'read' (see <unistd.h>) except that data are put in VECTOR instead
+ 'pread' (see <unistd.h>) except that data are put in VECTOR instead
of a contiguous buffer. */
ssize_t
PREADV (int fd, const struct iovec *vector, int count, OFF_T offset)
@@ -83,7 +83,7 @@ PREADV (int fd, const struct iovec *vector, int count, OFF_T offset)
/* Read the data. */
ssize_t bytes_read = PREAD (fd, buffer, bytes, offset);
- if (bytes_read <= 0)
+ if (bytes_read < 0)
return -1;
/* Copy the data from BUFFER into the memory specified by VECTOR. */
diff --git a/sysdeps/posix/pwritev.c b/sysdeps/posix/pwritev.c
index 0b6627dc9d..f2f0574aac 100644
--- a/sysdeps/posix/pwritev.c
+++ b/sysdeps/posix/pwritev.c
@@ -44,12 +44,12 @@ ifree (char **ptrp)
}
-/* Read data from file descriptor FD at the given position OFFSET
- without change the file pointer, and put the result in the buffers
- described by VECTOR, which is a vector of COUNT 'struct iovec's.
- The buffers are filled in the order specified. Operates just like
- 'read' (see <unistd.h>) except that data are put in VECTOR instead
- of a contiguous buffer. */
+/* Write data pointed by the buffers described by IOVEC, which is a
+ vector of COUNT 'struct iovec's, to file descriptor FD at the given
+ position OFFSET without change the file pointer. The data is
+ written in the order specified. Operates just like 'write' (see
+ <unistd.h>) except that the data are taken from IOVEC instead of a
+ contiguous buffer. */
ssize_t
PWRITEV (int fd, const struct iovec *vector, int count, OFF_T offset)
{
@@ -81,26 +81,14 @@ PWRITEV (int fd, const struct iovec *vector, int count, OFF_T offset)
return -1;
}
- /* Read the data. */
- ssize_t bytes_read = PWRITE (fd, buffer, bytes, offset);
- if (bytes_read <= 0)
- return -1;
-
/* Copy the data from BUFFER into the memory specified by VECTOR. */
- bytes = bytes_read;
+ char *ptr = buffer;
for (int i = 0; i < count; ++i)
- {
- size_t copy = MIN (vector[i].iov_len, bytes);
-
- (void) memcpy ((void *) vector[i].iov_base, (void *) buffer, copy);
-
- buffer += copy;
- bytes -= copy;
- if (bytes == 0)
- break;
- }
+ ptr = __mempcpy ((void *) ptr, (void *) vector[i].iov_base,
+ vector[i].iov_len);
- return bytes_read;
+ /* Write the data. */
+ return PWRITE (fd, buffer, bytes, offset);
}
#if __WORDSIZE == 64 && defined pwritev64
# undef pwritev64
diff --git a/sysdeps/posix/readv.c b/sysdeps/posix/readv.c
index 50bcc91315..6f16b9d946 100644
--- a/sysdeps/posix/readv.c
+++ b/sysdeps/posix/readv.c
@@ -70,7 +70,7 @@ __libc_readv (int fd, const struct iovec *vector, int count)
/* Read the data. */
ssize_t bytes_read = __read (fd, buffer, bytes);
- if (bytes_read <= 0)
+ if (bytes_read < 0)
return -1;
/* Copy the data from BUFFER into the memory specified by VECTOR. */
diff --git a/sysdeps/sh/sh4/setjmp.S b/sysdeps/sh/sh4/setjmp.S
index 03f0b08dcd..9d8fab7a99 100644
--- a/sysdeps/sh/sh4/setjmp.S
+++ b/sysdeps/sh/sh4/setjmp.S
@@ -22,13 +22,15 @@
ENTRY (__sigsetjmp)
/* Save registers */
- add #JB_SIZE, r4
#ifdef __SH_FPU_ANY__
+ add #JB_SIZE, r4
fmov.s fr15, @-r4
fmov.s fr14, @-r4
fmov.s fr13, @-r4
fmov.s fr12, @-r4
sts.l fpscr, @-r4
+#else
+ add #(JB_SIZE - 4 * 5), r4
#endif /* __SH_FPU_ANY__ */
stc.l gbr, @-r4
#ifdef PTR_MANGLE
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index ca82e1f331..8abb0349bf 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -155,6 +155,7 @@ shared-only-routines += $file
case x"$callnum" in
x_)
echo "\
+ \$(make-target-directory)
(echo '/* Dummy module requested by syscalls.list */'; \\"
;;
x*)
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h
index 2fa8524db9..97725e7291 100644
--- a/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
@@ -531,9 +531,7 @@
#endif
/* Support for preadv and pwritev was added in 2.6.30. */
-#if __LINUX_KERNEL_VERSION >= 0x02061e \
- && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \
- || defined __ia64__ || defined __sparc__ && defined __sh__)
+#if __LINUX_KERNEL_VERSION >= 0x02061e
# define __ASSUME_PREADV 1
# define __ASSUME_PWRITEV 1
#endif
diff --git a/sysdeps/unix/sysv/linux/paths.h b/sysdeps/unix/sysv/linux/paths.h
index a87831e74a..1b01c0d179 100644
--- a/sysdeps/unix/sysv/linux/paths.h
+++ b/sysdeps/unix/sysv/linux/paths.h
@@ -44,6 +44,7 @@
#define _PATH_DEVDB "/var/run/dev.db"
#define _PATH_DEVNULL "/dev/null"
#define _PATH_DRUM "/dev/drum"
+#define _PATH_GSHADOW "/etc/gshadow"
#define _PATH_KLOG "/proc/kmsg"
#define _PATH_KMEM "/dev/kmem"
#define _PATH_LASTLOG "/var/log/lastlog"
diff --git a/sysdeps/unix/sysv/linux/preadv.c b/sysdeps/unix/sysv/linux/preadv.c
index 0d4a6c3803..72722ebc0d 100644
--- a/sysdeps/unix/sysv/linux/preadv.c
+++ b/sysdeps/unix/sysv/linux/preadv.c
@@ -37,6 +37,10 @@
# define OFF_T off_t
#endif
+#define LO_HI_LONG(val) \
+ (off_t) val, \
+ (off_t) ((((uint64_t) (val)) >> (sizeof (long) * 4)) >> (sizeof (long) * 4))
+
#ifndef __ASSUME_PREADV
static ssize_t PREADV_REPLACEMENT (int, __const struct iovec *,
int, OFF_T) internal_function;
@@ -55,15 +59,13 @@ PREADV (fd, vector, count, offset)
if (SINGLE_THREAD_P)
result = INLINE_SYSCALL (preadv, 5, fd, vector, count,
- (off_t) ((off64_t) offset >> 32),
- (off_t) (offset & 0xffffffff));
+ LO_HI_LONG (offset));
else
{
int oldtype = LIBC_CANCEL_ASYNC ();
result = INLINE_SYSCALL (preadv, 5, fd, vector, count,
- (off_t) ((off64_t) offset >> 32),
- (off_t) (offset & 0xffffffff));
+ LO_HI_LONG (offset));
LIBC_CANCEL_RESET (oldtype);
}
diff --git a/sysdeps/unix/sysv/linux/pwritev.c b/sysdeps/unix/sysv/linux/pwritev.c
index 5c30eae51f..2e9cbb2536 100644
--- a/sysdeps/unix/sysv/linux/pwritev.c
+++ b/sysdeps/unix/sysv/linux/pwritev.c
@@ -37,6 +37,10 @@
# define OFF_T off_t
#endif
+#define LO_HI_LONG(val) \
+ (off_t) val, \
+ (off_t) ((((uint64_t) (val)) >> (sizeof (long) * 4)) >> (sizeof (long) * 4))
+
#ifndef __ASSUME_PWRITEV
static ssize_t PWRITEV_REPLACEMENT (int, __const struct iovec *,
int, OFF_T) internal_function;
@@ -55,15 +59,13 @@ PWRITEV (fd, vector, count, offset)
if (SINGLE_THREAD_P)
result = INLINE_SYSCALL (pwritev, 5, fd, vector, count,
- (off_t) ((off64_t) offset >> 32),
- (off_t) (offset & 0xffffffff));
+ LO_HI_LONG (offset));
else
{
int oldtype = LIBC_CANCEL_ASYNC ();
result = INLINE_SYSCALL (pwritev, 5, fd, vector, count,
- (off_t) ((off64_t) offset >> 32),
- (off_t) (offset & 0xffffffff));
+ LO_HI_LONG (offset));
LIBC_CANCEL_RESET (oldtype);
}
diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h
index b30554987a..57d440f273 100644
--- a/sysdeps/unix/sysv/linux/sys/mount.h
+++ b/sysdeps/unix/sysv/linux/sys/mount.h
@@ -96,8 +96,12 @@ enum
/* Possible value for FLAGS parameter of `umount2'. */
enum
{
- MNT_FORCE = 1 /* Force unmounting. */
+ MNT_FORCE = 1, /* Force unmounting. */
#define MNT_FORCE MNT_FORCE
+ MNT_DETACH = 2, /* Just detach from the tree. */
+#define MNT_DETACH MNT_DETACH
+ MNT_EXPIRE = 4 /* Mark for expiry. */
+#define MNT_EXPIRE MNT_EXPIRE
};
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index f7bd6e7929..5f10c7fa4c 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1999, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1997, 1999, 2007, 2009 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,7 +22,7 @@
#include <features.h>
#include <sys/time.h>
-/* These definitions from linux/timex.h as of 2.2.0. */
+/* These definitions from linux/timex.h as of 2.6.30. */
struct ntptimeval
{
@@ -54,10 +54,12 @@ struct timex
long int errcnt; /* calibration errors (ro) */
long int stbcnt; /* stability limit exceeded (ro) */
+ int tai; /* TAI offset (ro) */
+
/* ??? */
int :32; int :32; int :32; int :32;
int :32; int :32; int :32; int :32;
- int :32; int :32; int :32; int :32;
+ int :32; int :32; int :32;
};
/* Mode codes (timex.mode) */
@@ -67,6 +69,9 @@ struct timex
#define ADJ_ESTERROR 0x0008 /* estimated time error */
#define ADJ_STATUS 0x0010 /* clock status */
#define ADJ_TIMECONST 0x0020 /* pll time constant */
+#define ADJ_TAI 0x0080 /* set TAI offset */
+#define ADJ_MICRO 0x1000 /* select microsecond resolution */
+#define ADJ_NANO 0x2000 /* select nanosecond resolution */
#define ADJ_TICK 0x4000 /* tick value */
#define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime */
#define ADJ_OFFSET_SS_READ 0xa001 /* read-only adjtime */
@@ -99,6 +104,9 @@ struct timex
#define STA_PPSERROR 0x0800 /* PPS signal calibration error (ro) */
#define STA_CLOCKERR 0x1000 /* clock hardware fault (ro) */
+#define STA_NANO 0x2000 /* resolution (0 = us, 1 = ns) (ro) */
+#define STA_MODE 0x4000 /* mode (0 = PLL, 1 = FLL) (ro) */
+#define STA_CLK 0x8000 /* clock source (0 = A, 1 = B) (ro) */
#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \
STA_PPSERROR | STA_CLOCKERR) /* read-only bits */