aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-03-03 21:11:12 +0000
committerUlrich Drepper <drepper@redhat.com>2003-03-03 21:11:12 +0000
commit7ce5c1640cbeb86d2094d992f30438ddda40ac14 (patch)
tree63f44821134b350f7eef50c06f75b4a4caf5b71b
parent625f22fc7f8e0d61e3e6cff2c65468b91dbad426 (diff)
downloadglibc-7ce5c1640cbeb86d2094d992f30438ddda40ac14.tar.xz
glibc-7ce5c1640cbeb86d2094d992f30438ddda40ac14.zip
Update.
2003-03-03 Martin Schwidefsky <schwidefsky@de.ibm.com> * atomic.h (atomic_exchange_and_add): Return newval, not oldval. * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait): Fix handling of cancellation and failing pthread_mutex_unlock call. * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Likewise. (__pthread_cond_wait): Likewise. * sysdeps/pthread/pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock): Fix clobber of result variable by lll_futex_timed_wait call. * sysdeps/pthread/pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock): Likewise. * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c (___lll_lock): Don't define lll_unlock_wake_cb and ___lll_timedwait_tid in libc.so. * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Remove XXX comments. * sysdeps/unix/sysv/linux/s390/sem_post.c (__new_sem_post): Fix check of lll_futex_wake return value.
-rw-r--r--nptl/ChangeLog22
-rw-r--r--nptl/atomic.h2
-rw-r--r--nptl/sysdeps/pthread/pthread_cond_timedwait.c23
-rw-r--r--nptl/sysdeps/pthread/pthread_cond_wait.c42
-rw-r--r--nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c8
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c25
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.c2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/sem_post.c2
-rw-r--r--po/gl.po521
-rw-r--r--po/sv.po6
10 files changed, 377 insertions, 276 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index d6ca84806c..740d6ff1f8 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,25 @@
+2003-03-03 Martin Schwidefsky <schwidefsky@de.ibm.com>
+
+ * atomic.h (atomic_exchange_and_add): Return newval, not oldval.
+
+ * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
+ Fix handling of cancellation and failing pthread_mutex_unlock call.
+ * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Likewise.
+ (__pthread_cond_wait): Likewise.
+
+ * sysdeps/pthread/pthread_rwlock_timedrdlock.c
+ (pthread_rwlock_timedrdlock): Fix clobber of result variable by
+ lll_futex_timed_wait call.
+ * sysdeps/pthread/pthread_rwlock_timedwrlock.c
+ (pthread_rwlock_timedwrlock): Likewise.
+
+ * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c (___lll_lock):
+ Don't define lll_unlock_wake_cb and ___lll_timedwait_tid in libc.so.
+ * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Remove XXX comments.
+
+ * sysdeps/unix/sysv/linux/s390/sem_post.c (__new_sem_post): Fix
+ check of lll_futex_wake return value.
+
2003-03-03 Roland McGrath <roland@redhat.com>
* forward.c: Fix typo in __pthread_attr_init_2_0 compat_symbol decl.
diff --git a/nptl/atomic.h b/nptl/atomic.h
index 4279235a71..813fb80a03 100644
--- a/nptl/atomic.h
+++ b/nptl/atomic.h
@@ -60,7 +60,7 @@
while (atomic_compare_and_exchange_acq (__memp, __oldval + __value, \
__oldval)); \
\
- __oldval; })
+ __oldval + __value; })
#endif
diff --git a/nptl/sysdeps/pthread/pthread_cond_timedwait.c b/nptl/sysdeps/pthread/pthread_cond_timedwait.c
index 797d244cf7..3b29cb4ea6 100644
--- a/nptl/sysdeps/pthread/pthread_cond_timedwait.c
+++ b/nptl/sysdeps/pthread/pthread_cond_timedwait.c
@@ -31,6 +31,12 @@
extern void __condvar_cleanup (void *arg)
__attribute__ ((visibility ("hidden")));
+struct _condvar_cleanup_buffer
+{
+ int oldtype;
+ pthread_cond_t *cond;
+ pthread_mutex_t *mutex;
+};
int
__pthread_cond_timedwait (cond, mutex, abstime)
@@ -39,6 +45,7 @@ __pthread_cond_timedwait (cond, mutex, abstime)
const struct timespec *abstime;
{
struct _pthread_cleanup_buffer buffer;
+ struct _condvar_cleanup_buffer cbuffer;
int result = 0;
/* Catch invalid parameters. */
@@ -54,9 +61,13 @@ __pthread_cond_timedwait (cond, mutex, abstime)
/* We have one new user of the condvar. */
++cond->__data.__total_seq;
+ /* Prepare structure passed to cancellation handler. */
+ cbuffer.cond = cond;
+ cbuffer.mutex = mutex;
+
/* Before we block we enable cancellation. Therefore we have to
install a cancellation handler. */
- __pthread_cleanup_push (&buffer, __condvar_cleanup, cond);
+ __pthread_cleanup_push (&buffer, __condvar_cleanup, &cbuffer);
/* The current values of the wakeup counter. The "woken" counter
must exceed this value. */
@@ -76,6 +87,8 @@ __pthread_cond_timedwait (cond, mutex, abstime)
while (1)
{
+ int err;
+
/* Get the current time. So far we support only one clock. */
struct timeval tv;
(void) gettimeofday (&tv, NULL);
@@ -104,14 +117,14 @@ __pthread_cond_timedwait (cond, mutex, abstime)
lll_mutex_unlock (cond->__data.__lock);
/* Enable asynchronous cancellation. Required by the standard. */
- int oldtype = __pthread_enable_asynccancel ();
+ cbuffer.oldtype = __pthread_enable_asynccancel ();
/* Wait until woken by signal or broadcast. Note that we
truncate the 'val' value to 32 bits. */
- result = lll_futex_timed_wait (futex, (unsigned int) val, &rt);
+ err = lll_futex_timed_wait (futex, (unsigned int) val, &rt);
/* Disable asynchronous cancellation. */
- __pthread_disable_asynccancel (oldtype);
+ __pthread_disable_asynccancel (cbuffer.oldtype);
/* We are going to look at shared data again, so get the lock. */
lll_mutex_lock(cond->__data.__lock);
@@ -123,7 +136,7 @@ __pthread_cond_timedwait (cond, mutex, abstime)
break;
/* Not woken yet. Maybe the time expired? */
- if (result == -ETIMEDOUT)
+ if (err == -ETIMEDOUT)
{
/* Yep. Adjust the counters. */
++cond->__data.__wakeup_seq;
diff --git a/nptl/sysdeps/pthread/pthread_cond_wait.c b/nptl/sysdeps/pthread/pthread_cond_wait.c
index d0b63bd8df..d96444f49b 100644
--- a/nptl/sysdeps/pthread/pthread_cond_wait.c
+++ b/nptl/sysdeps/pthread/pthread_cond_wait.c
@@ -27,22 +27,35 @@
#include <shlib-compat.h>
+struct _condvar_cleanup_buffer
+{
+ int oldtype;
+ pthread_cond_t *cond;
+ pthread_mutex_t *mutex;
+};
+
void
__attribute__ ((visibility ("hidden")))
__condvar_cleanup (void *arg)
{
- pthread_cond_t *cond = (pthread_cond_t *) arg;
+ struct _condvar_cleanup_buffer *cbuffer =
+ (struct _condvar_cleanup_buffer *) arg;
/* We are going to modify shared data. */
- lll_mutex_lock (cond->__data.__lock);
+ lll_mutex_lock (cbuffer->cond->__data.__lock);
/* This thread is not waiting anymore. Adjust the sequence counters
appropriately. */
- ++cond->__data.__wakeup_seq;
- ++cond->__data.__woken_seq;
+ ++cbuffer->cond->__data.__wakeup_seq;
+ ++cbuffer->cond->__data.__woken_seq;
/* We are done. */
- lll_mutex_unlock (cond->__data.__lock);
+ lll_mutex_unlock (cbuffer->cond->__data.__lock);
+
+ /* Get the mutex before returning unless asynchronous cancellation
+ is in effect. */
+ if (!(cbuffer->oldtype & CANCELTYPE_BITMASK))
+ __pthread_mutex_lock_internal (cbuffer->mutex);
}
@@ -52,19 +65,30 @@ __pthread_cond_wait (cond, mutex)
pthread_mutex_t *mutex;
{
struct _pthread_cleanup_buffer buffer;
+ struct _condvar_cleanup_buffer cbuffer;
+ int err;
/* Make sure we are along. */
lll_mutex_lock (cond->__data.__lock);
/* Now we can release the mutex. */
- __pthread_mutex_unlock_internal (mutex);
+ err = __pthread_mutex_unlock_internal (mutex);
+ if (err)
+ {
+ lll_mutex_unlock (cond->__data.__lock);
+ return err;
+ }
/* We have one new user of the condvar. */
++cond->__data.__total_seq;
+ /* Prepare structure passed to cancellation handler. */
+ cbuffer.cond = cond;
+ cbuffer.mutex = mutex;
+
/* Before we block we enable cancellation. Therefore we have to
install a cancellation handler. */
- __pthread_cleanup_push (&buffer, __condvar_cleanup, cond);
+ __pthread_cleanup_push (&buffer, __condvar_cleanup, &cbuffer);
/* The current values of the wakeup counter. The "woken" counter
must exceed this value. */
@@ -88,14 +112,14 @@ __pthread_cond_wait (cond, mutex)
lll_mutex_unlock (cond->__data.__lock);
/* Enable asynchronous cancellation. Required by the standard. */
- int oldtype = __pthread_enable_asynccancel ();
+ cbuffer.oldtype = __pthread_enable_asynccancel ();
/* Wait until woken by signal or broadcast. Note that we
truncate the 'val' value to 32 bits. */
lll_futex_wait (futex, (unsigned int) val);
/* Disable asynchronous cancellation. */
- __pthread_disable_asynccancel (oldtype);
+ __pthread_disable_asynccancel (cbuffer.oldtype);
/* We are going to look at shared data again, so get the lock. */
lll_mutex_lock(cond->__data.__lock);
diff --git a/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c b/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c
index fb6382544e..9c1815570f 100644
--- a/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c
+++ b/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c
@@ -37,6 +37,8 @@ pthread_rwlock_timedrdlock (rwlock, abstime)
while (1)
{
+ int err;
+
/* Get the rwlock if there is no writer... */
if (rwlock->__data.__writer == 0
/* ...and if either no writer is waiting or we prefer readers. */
@@ -111,14 +113,14 @@ pthread_rwlock_timedrdlock (rwlock, abstime)
lll_mutex_unlock (rwlock->__data.__lock);
/* Wait for the writer to finish. */
- result = lll_futex_timed_wait (&rwlock->__data.__readers_wakeup,
- waitval, &rt);
+ err = lll_futex_timed_wait (&rwlock->__data.__readers_wakeup,
+ waitval, &rt);
/* Get the lock. */
lll_mutex_lock (rwlock->__data.__lock);
/* Did the futex call time out? */
- if (result == -ETIMEDOUT)
+ if (err == -ETIMEDOUT)
{
/* Yep, report it. */
result = ETIMEDOUT;
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c b/nptl/sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c
index 40b5c3e441..7035479c1a 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c
+++ b/nptl/sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c
@@ -17,5 +17,26 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-/* No difference to lowlevellock.c */
-#include "lowlevellock.c"
+#include <errno.h>
+#include <sysdep.h>
+#include <lowlevellock.h>
+#include <sys/time.h>
+
+
+void
+___lll_lock (futex, newval)
+ int *futex;
+ int newval;
+{
+ do
+ {
+ int oldval;
+
+ lll_futex_wait (futex, newval);
+ lll_compare_and_swap (futex, oldval, newval, "lr %2,%1; ahi %2,-1");
+ }
+ while (newval != 0);
+
+ *futex = -1;
+}
+hidden_proto (___lll_lock)
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.c b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.c
index bc501c7ee4..f98e163ae1 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.c
+++ b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.c
@@ -42,7 +42,6 @@ ___lll_lock (futex, newval)
hidden_proto (___lll_lock)
-/* XXX Should not be in libc.so */
int
lll_unlock_wake_cb (futex)
int *futex;
@@ -58,7 +57,6 @@ lll_unlock_wake_cb (futex)
hidden_proto (lll_unlock_wake_cb)
-/* XXX Should not be in libc.so */
int
___lll_timedwait_tid (ptid, abstime)
int *ptid;
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c b/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c
index df64c03ba6..b573532a32 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c
+++ b/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c
@@ -34,7 +34,7 @@ __new_sem_post (sem_t *sem)
lll_compare_and_swap ((int *) sem, oldval, newval, "lr %2,%1; ahi %2,1");
err = lll_futex_wake(((int *) sem), newval);
- if (err != 0)
+ if (err < 0)
{
__set_errno(-err);
return -1;
diff --git a/po/gl.po b/po/gl.po
index 6eac219d60..e5eeeb735f 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -4,9 +4,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.3\n"
-"POT-Creation-Date: 2002-10-02 17:22-0700\n"
-"PO-Revision-Date: 2002-10-05 15:13+0200\n"
+"Project-Id-Version: libc 2.3.2\n"
+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
+"PO-Revision-Date: 2003-03-03 20:13+0100\n"
"Last-Translator: Jacobo Tarrio <jtarrio@trasno.net>\n"
"Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n"
"MIME-Version: 1.0\n"
@@ -259,8 +259,8 @@ msgstr "non se pode abri-lo ficheiro de saída"
#: iconv/iconv_prog.c:241
#, c-format
-msgid "conversions from `%s' and to `%s' are not supported"
-msgstr "as conversións de `%s' a `%s' non están soportadas"
+msgid "conversion from `%s' and to `%s' are not supported"
+msgstr "as conversións de `%s' e a `%s' non están soportadas"
#: iconv/iconv_prog.c:246
#, c-format
@@ -285,15 +285,15 @@ msgstr "non se puido comeza-lo procesamento de conversión"
msgid "error while closing output file"
msgstr "erro ao pecha-lo ficheiro de saída"
-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
#: locale/programs/localedef.c:372 catgets/gencat.c:233
#: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
msgstr "Informe dos erros usando o script `glibcbug' a <bugs@gnu.org>.\n"
-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
-#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
#: elf/sprof.c:349
#, c-format
msgid ""
@@ -305,9 +305,9 @@ msgstr ""
"Isto é software libre; vexa o código fonte polas condicións de copia. NON hai\n"
"garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN DETERMINADO.\n"
-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
-#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
#: elf/sprof.c:355
#, c-format
msgid "Written by %s.\n"
@@ -359,15 +359,15 @@ msgstr "[DIR...]"
msgid "Prefix used for all file accesses"
msgstr "Prefixo a empregar para tódolos accesos a ficheiro"
-#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
msgid "no output file produced because warning were issued"
msgstr "non se producíu un ficheiro de saída porque se deron avisos"
-#: iconv/iconvconfig.c:403
+#: iconv/iconvconfig.c:405
msgid "while inserting in search tree"
msgstr "ao inserir na árbore de busca"
-#: iconv/iconvconfig.c:1202
+#: iconv/iconvconfig.c:1204
msgid "cannot generate output file"
msgstr "non se pode xera-lo ficheiro de saída"
@@ -1277,7 +1277,7 @@ msgstr "lixo á fin da especificación do código de caracteres"
msgid "unterminated symbolic name"
msgstr "nome simbólico non rematado"
-#: locale/programs/linereader.c:537 catgets/gencat.c:1166
+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
msgid "invalid escape sequence"
msgstr "secuencia de escape non válida"
@@ -1307,39 +1307,39 @@ msgstr "o símbolo `%.*s' non está no mapa de repertorios"
msgid "trailing garbage at end of line"
msgstr "lixo na fin da liña"
-#: locale/programs/locale.c:73
+#: locale/programs/locale.c:75
msgid "System information:"
msgstr "Información do sistema:"
-#: locale/programs/locale.c:75
+#: locale/programs/locale.c:77
msgid "Write names of available locales"
msgstr "Escribi-los nomes dos `locales' dispoñibles"
-#: locale/programs/locale.c:77
+#: locale/programs/locale.c:79
msgid "Write names of available charmaps"
msgstr "Escribi-los nomes dos mapas de caracteres dispoñibles"
-#: locale/programs/locale.c:78
+#: locale/programs/locale.c:80
msgid "Modify output format:"
msgstr "Modifica-lo formato de saída:"
-#: locale/programs/locale.c:79
+#: locale/programs/locale.c:81
msgid "Write names of selected categories"
msgstr "Escribi-los nomes das categorías seleccionadas"
-#: locale/programs/locale.c:80
+#: locale/programs/locale.c:82
msgid "Write names of selected keywords"
msgstr "Escribi-los nomes das claves seleccionadas"
-#: locale/programs/locale.c:81
+#: locale/programs/locale.c:83
msgid "Print more information"
msgstr "Amosar máis información"
-#: locale/programs/locale.c:86
+#: locale/programs/locale.c:88
msgid "Get locale-specific information."
msgstr "Obter información específica do `locale'."
-#: locale/programs/locale.c:89
+#: locale/programs/locale.c:91
msgid ""
"NAME\n"
"[-a|-m]"
@@ -1347,7 +1347,7 @@ msgstr ""
"NOME\n"
"[-a|-m]"
-#: locale/programs/locale.c:488
+#: locale/programs/locale.c:512
msgid "while preparing output"
msgstr "ao prepara-la saída"
@@ -1478,16 +1478,16 @@ msgstr "non se pode engadi-lo locale xa lido `%s' outra vez"
msgid "cannot create temporary file"
msgstr "non se pode crea-lo ficheiro temporal"
-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
msgid "cannot initialize archive file"
msgstr "non se pode inicializa-lo ficheiro de arquivo"
-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
msgid "cannot resize archive file"
msgstr "non se pode cambia-lo tamaño do ficheiro de arquivo"
-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
-#: locale/programs/locarchive.c:508
+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
+#: locale/programs/locarchive.c:511
msgid "cannot map archive header"
msgstr "non se pode mapea-la cabeceira do arquivo"
@@ -1503,88 +1503,88 @@ msgstr "non se pode cambia-lo modo do novo arquivo de locales"
msgid "cannot map locale archive file"
msgstr "non se pode mapea-lo ficheiro de arquivo de locales"
-#: locale/programs/locarchive.c:326
+#: locale/programs/locarchive.c:329
msgid "cannot lock new archive"
msgstr "non se pode bloquea-lo novo arquivo"
-#: locale/programs/locarchive.c:377
+#: locale/programs/locarchive.c:380
msgid "cannot extend locale archive file"
msgstr "non se pode extende-lo ficheiro de arquivo de locales"
-#: locale/programs/locarchive.c:386
+#: locale/programs/locarchive.c:389
msgid "cannot change mode of resized locale archive"
msgstr "non se pode cambia-lo modo do arquivo de locales co novo tamaño"
-#: locale/programs/locarchive.c:394
+#: locale/programs/locarchive.c:397
msgid "cannot rename new archive"
msgstr "non se pode renomea-lo novo arquivo"
-#: locale/programs/locarchive.c:447
+#: locale/programs/locarchive.c:450
#, c-format
msgid "cannot open locale archive \"%s\""
msgstr "non se pode abri-lo arquivo de locales \"%s\""
-#: locale/programs/locarchive.c:452
+#: locale/programs/locarchive.c:455
#, c-format
msgid "cannot stat locale archive \"%s\""
msgstr "non se pode facer stat do arquivo de locales \"%s\""
-#: locale/programs/locarchive.c:471
+#: locale/programs/locarchive.c:474
#, c-format
msgid "cannot lock locale archive \"%s\""
msgstr "non se pode bloquea-lo arquivo de locales \"%s\""
-#: locale/programs/locarchive.c:494
+#: locale/programs/locarchive.c:497
msgid "cannot read archive header"
msgstr "non se pode le-la cabeceira do arquivo"
-#: locale/programs/locarchive.c:554
+#: locale/programs/locarchive.c:557
#, c-format
msgid "locale '%s' already exists"
msgstr "o locale '%s' xa existe"
-#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
-#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
#: locale/programs/locfile.c:343
msgid "cannot add to locale archive"
msgstr "non se pode engadir no arquivo de locales"
-#: locale/programs/locarchive.c:976
+#: locale/programs/locarchive.c:982
#, c-format
msgid "locale alias file `%s' not found"
msgstr "non se atopou o ficheiro de alias de locales `%s'"
-#: locale/programs/locarchive.c:1118
+#: locale/programs/locarchive.c:1126
#, c-format
msgid "Adding %s\n"
msgstr "Engadindo %s\n"
-#: locale/programs/locarchive.c:1124
+#: locale/programs/locarchive.c:1132
#, c-format
msgid "stat of \"%s\" failed: %s: ignored"
msgstr "a chamada a stat de \"%s\" fallou: %s: ignórase"
-#: locale/programs/locarchive.c:1130
+#: locale/programs/locarchive.c:1138
#, c-format
msgid "\"%s\" is no directory; ignored"
msgstr "\"%s\" non é un directorio; ignórase"
-#: locale/programs/locarchive.c:1137
+#: locale/programs/locarchive.c:1145
#, c-format
msgid "cannot open directory \"%s\": %s: ignored"
msgstr "non se pode abr-lo directorio \"%s\": %s: ignorado"
-#: locale/programs/locarchive.c:1209
+#: locale/programs/locarchive.c:1217
#, c-format
msgid "incomplete set of locale files in \"%s\""
msgstr "conxunto de ficheiros de locale incompleto en \"%s\""
-#: locale/programs/locarchive.c:1273
+#: locale/programs/locarchive.c:1281
#, c-format
msgid "cannot read all files in \"%s\": ignored"
msgstr "non se poden ler tódolos ficheiros de \"%s\": ignorado"