diff options
Diffstat (limited to 'gl')
53 files changed, 1606 insertions, 445 deletions
diff --git a/gl/lib/Makefile.am b/gl/lib/Makefile.am index 45e3c3de..8e04cbbb 100644 --- a/gl/lib/Makefile.am +++ b/gl/lib/Makefile.am @@ -103,7 +103,7 @@ # xstrndup \ # xvasprintf -AUTOMAKE_OPTIONS = 1.11 gnits subdir-objects +AUTOMAKE_OPTIONS = 1.14 gnits subdir-objects SUBDIRS = noinst_HEADERS = @@ -139,6 +139,7 @@ libgnu_la_LDFLAGS += $(LIB_GETRANDOM) libgnu_la_LDFLAGS += $(LIB_HARD_LOCALE) libgnu_la_LDFLAGS += $(LIB_MBRTOWC) libgnu_la_LDFLAGS += $(LIB_NANOSLEEP) +libgnu_la_LDFLAGS += $(LIB_PTHREAD_SIGMASK) libgnu_la_LDFLAGS += $(LIB_SELECT) libgnu_la_LDFLAGS += $(LIB_SETLOCALE_NULL) libgnu_la_LDFLAGS += $(LTLIBINTL) @@ -1542,6 +1543,22 @@ libgnu_la_SOURCES += progname.h progname.c ## end gnulib module progname +## begin gnulib module pselect + +if GL_COND_OBJ_PSELECT +libgnu_la_SOURCES += pselect.c +endif + +## end gnulib module pselect + +## begin gnulib module pthread_sigmask + +if GL_COND_OBJ_PTHREAD_SIGMASK +libgnu_la_SOURCES += pthread_sigmask.c +endif + +## end gnulib module pthread_sigmask + ## begin gnulib module raise if GL_COND_OBJ_RAISE diff --git a/gl/lib/Makefile.in b/gl/lib/Makefile.in index b1a06b46..69b555e4 100644 --- a/gl/lib/Makefile.in +++ b/gl/lib/Makefile.in @@ -248,44 +248,46 @@ host_triplet = @host@ @GL_COND_OBJ_OPENAT_TRUE@am__append_53 = openat.c @GL_COND_OBJ_OPENDIR_TRUE@am__append_54 = opendir.c @GL_COND_OBJ_PIPE_TRUE@am__append_55 = pipe.c -@GL_COND_OBJ_RAISE_TRUE@am__append_56 = raise.c -@GL_COND_OBJ_RAWMEMCHR_TRUE@am__append_57 = rawmemchr.c -@GL_COND_OBJ_READDIR_TRUE@am__append_58 = readdir.c -@GL_COND_OBJ_READLINK_TRUE@am__append_59 = readlink.c -@GL_COND_OBJ_REALLOCARRAY_TRUE@am__append_60 = reallocarray.c -@GL_COND_OBJ_REGEX_TRUE@am__append_61 = regex.c -@GL_COND_OBJ_RENAME_TRUE@am__append_62 = rename.c -@GL_COND_OBJ_RENAMEAT_TRUE@am__append_63 = renameat.c -@GL_COND_OBJ_REWINDDIR_TRUE@am__append_64 = rewinddir.c -@GL_COND_OBJ_RMDIR_TRUE@am__append_65 = rmdir.c -@GL_COND_OBJ_SELECT_TRUE@am__append_66 = select.c -@GL_COND_OBJ_SETENV_TRUE@am__append_67 = setenv.c -@GL_COND_OBJ_SETLOCALE_LOCK_TRUE@am__append_68 = setlocale-lock.c -@GL_COND_OBJ_SIGACTION_TRUE@am__append_69 = sigaction.c -@GL_COND_OBJ_SIGPROCMASK_TRUE@am__append_70 = sigprocmask.c -@GL_COND_OBJ_SLEEP_TRUE@am__append_71 = sleep.c -@GL_COND_OBJ_STAT_TRUE@am__append_72 = stat.c -@GL_COND_OBJ_STDIO_READ_TRUE@am__append_73 = stdio-read.c -@GL_COND_OBJ_STDIO_WRITE_TRUE@am__append_74 = stdio-write.c -@GL_COND_OBJ_STRCASECMP_TRUE@am__append_75 = strcasecmp.c -@GL_COND_OBJ_STRNCASECMP_TRUE@am__append_76 = strncasecmp.c -@GL_COND_OBJ_STRCHRNUL_TRUE@am__append_77 = strchrnul.c -@GL_COND_OBJ_STRDUP_TRUE@am__append_78 = strdup.c -@GL_COND_OBJ_STRERROR_TRUE@am__append_79 = strerror.c -@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__append_80 = strerror-override.c -@GL_COND_OBJ_STRNDUP_TRUE@am__append_81 = strndup.c -@GL_COND_OBJ_STRNLEN_TRUE@am__append_82 = strnlen.c -@GL_COND_OBJ_STRSEP_TRUE@am__append_83 = strsep.c -@GL_COND_OBJ_UNLINK_TRUE@am__append_84 = unlink.c -@GL_COND_OBJ_UNLINKAT_TRUE@am__append_85 = unlinkat.c -@GL_COND_OBJ_UTIME_TRUE@am__append_86 = utime.c -@GL_COND_OBJ_WCRTOMB_TRUE@am__append_87 = wcrtomb.c -@GL_COND_OBJ_WINDOWS_MUTEX_TRUE@am__append_88 = windows-mutex.c -@GL_COND_OBJ_WINDOWS_ONCE_TRUE@am__append_89 = windows-once.c -@GL_COND_OBJ_WINDOWS_RECMUTEX_TRUE@am__append_90 = windows-recmutex.c -@GL_COND_OBJ_WINDOWS_RWLOCK_TRUE@am__append_91 = windows-rwlock.c -@GL_COND_OBJ_WMEMCHR_TRUE@am__append_92 = wmemchr.c -@GL_COND_OBJ_WMEMPCPY_TRUE@am__append_93 = wmempcpy.c +@GL_COND_OBJ_PSELECT_TRUE@am__append_56 = pselect.c +@GL_COND_OBJ_PTHREAD_SIGMASK_TRUE@am__append_57 = pthread_sigmask.c +@GL_COND_OBJ_RAISE_TRUE@am__append_58 = raise.c +@GL_COND_OBJ_RAWMEMCHR_TRUE@am__append_59 = rawmemchr.c +@GL_COND_OBJ_READDIR_TRUE@am__append_60 = readdir.c +@GL_COND_OBJ_READLINK_TRUE@am__append_61 = readlink.c +@GL_COND_OBJ_REALLOCARRAY_TRUE@am__append_62 = reallocarray.c +@GL_COND_OBJ_REGEX_TRUE@am__append_63 = regex.c +@GL_COND_OBJ_RENAME_TRUE@am__append_64 = rename.c +@GL_COND_OBJ_RENAMEAT_TRUE@am__append_65 = renameat.c +@GL_COND_OBJ_REWINDDIR_TRUE@am__append_66 = rewinddir.c +@GL_COND_OBJ_RMDIR_TRUE@am__append_67 = rmdir.c +@GL_COND_OBJ_SELECT_TRUE@am__append_68 = select.c +@GL_COND_OBJ_SETENV_TRUE@am__append_69 = setenv.c +@GL_COND_OBJ_SETLOCALE_LOCK_TRUE@am__append_70 = setlocale-lock.c +@GL_COND_OBJ_SIGACTION_TRUE@am__append_71 = sigaction.c +@GL_COND_OBJ_SIGPROCMASK_TRUE@am__append_72 = sigprocmask.c +@GL_COND_OBJ_SLEEP_TRUE@am__append_73 = sleep.c +@GL_COND_OBJ_STAT_TRUE@am__append_74 = stat.c +@GL_COND_OBJ_STDIO_READ_TRUE@am__append_75 = stdio-read.c +@GL_COND_OBJ_STDIO_WRITE_TRUE@am__append_76 = stdio-write.c +@GL_COND_OBJ_STRCASECMP_TRUE@am__append_77 = strcasecmp.c +@GL_COND_OBJ_STRNCASECMP_TRUE@am__append_78 = strncasecmp.c +@GL_COND_OBJ_STRCHRNUL_TRUE@am__append_79 = strchrnul.c +@GL_COND_OBJ_STRDUP_TRUE@am__append_80 = strdup.c +@GL_COND_OBJ_STRERROR_TRUE@am__append_81 = strerror.c +@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__append_82 = strerror-override.c +@GL_COND_OBJ_STRNDUP_TRUE@am__append_83 = strndup.c +@GL_COND_OBJ_STRNLEN_TRUE@am__append_84 = strnlen.c +@GL_COND_OBJ_STRSEP_TRUE@am__append_85 = strsep.c +@GL_COND_OBJ_UNLINK_TRUE@am__append_86 = unlink.c +@GL_COND_OBJ_UNLINKAT_TRUE@am__append_87 = unlinkat.c +@GL_COND_OBJ_UTIME_TRUE@am__append_88 = utime.c +@GL_COND_OBJ_WCRTOMB_TRUE@am__append_89 = wcrtomb.c +@GL_COND_OBJ_WINDOWS_MUTEX_TRUE@am__append_90 = windows-mutex.c +@GL_COND_OBJ_WINDOWS_ONCE_TRUE@am__append_91 = windows-once.c +@GL_COND_OBJ_WINDOWS_RECMUTEX_TRUE@am__append_92 = windows-recmutex.c +@GL_COND_OBJ_WINDOWS_RWLOCK_TRUE@am__append_93 = windows-rwlock.c +@GL_COND_OBJ_WMEMCHR_TRUE@am__append_94 = wmemchr.c +@GL_COND_OBJ_WMEMPCPY_TRUE@am__append_95 = wmempcpy.c subdir = gl/lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/man-arg-automatic-create.m4 \ @@ -300,6 +302,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/man-arg-automatic-create.m4 \ $(top_srcdir)/m4/man-arg-override-dir.m4 \ $(top_srcdir)/m4/man-arg-sections.m4 \ $(top_srcdir)/m4/man-arg-setuid.m4 \ + $(top_srcdir)/m4/man-arg-snapdir.m4 \ $(top_srcdir)/m4/man-arg-systemdsystemunitdir.m4 \ $(top_srcdir)/m4/man-arg-systemdtmpfilesdir.m4 \ $(top_srcdir)/m4/man-arg-undoc.m4 $(top_srcdir)/m4/man-bdb.m4 \ @@ -404,8 +407,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/man-arg-automatic-create.m4 \ $(top_srcdir)/gl/m4/openat.m4 $(top_srcdir)/gl/m4/opendir.m4 \ $(top_srcdir)/gl/m4/pathmax.m4 $(top_srcdir)/gl/m4/pipe.m4 \ $(top_srcdir)/gl/m4/po.m4 $(top_srcdir)/gl/m4/printf.m4 \ - $(top_srcdir)/gl/m4/progtest.m4 \ + $(top_srcdir)/gl/m4/progtest.m4 $(top_srcdir)/gl/m4/pselect.m4 \ $(top_srcdir)/gl/m4/pthread_rwlock_rdlock.m4 \ + $(top_srcdir)/gl/m4/pthread_sigmask.m4 \ $(top_srcdir)/gl/m4/raise.m4 $(top_srcdir)/gl/m4/rawmemchr.m4 \ $(top_srcdir)/gl/m4/readdir.m4 $(top_srcdir)/gl/m4/readlink.m4 \ $(top_srcdir)/gl/m4/realloc.m4 \ @@ -508,12 +512,13 @@ am__libgnu_la_SOURCES_DIST = argp.h argp-ba.c argp-eexst.c \ mempcpy.c memrchr.c minmax.h mkdir.c mkdtemp.c mkstemp.c \ msvc-inval.c msvc-nothrow.c nanosleep.c nl_langinfo.c \ nl_langinfo-lock.c nonblocking.c open.c openat.c openat-die.c \ - opendir.c pipe.c progname.h progname.c raise.c rawmemchr.c \ - gl_rbtree_list.h gl_rbtree_list.c gl_anyrbtree_list1.h \ - gl_anyrbtree_list2.h gl_anytree_list1.h gl_anytree_list2.h \ - readdir.c readlink.c reallocarray.c regex.c rename.c \ - renameat.c renameatu.c rewinddir.c rmdir.c save-cwd.c \ - malloc/scratch_buffer_dupfree.c malloc/scratch_buffer_grow.c \ + opendir.c pipe.c progname.h progname.c pselect.c \ + pthread_sigmask.c raise.c rawmemchr.c gl_rbtree_list.h \ + gl_rbtree_list.c gl_anyrbtree_list1.h gl_anyrbtree_list2.h \ + gl_anytree_list1.h gl_anytree_list2.h readdir.c readlink.c \ + reallocarray.c regex.c rename.c renameat.c renameatu.c \ + rewinddir.c rmdir.c save-cwd.c malloc/scratch_buffer_dupfree.c \ + malloc/scratch_buffer_grow.c \ malloc/scratch_buffer_grow_preserve.c \ malloc/scratch_buffer_set_array_size.c select.c gl_set.h \ gl_set.c setenv.c setlocale_null.c setlocale-lock.c \ @@ -595,52 +600,54 @@ am__dirstamp = $(am__leading_dot)dirstamp @GL_COND_OBJ_OPENAT_TRUE@am__objects_53 = libgnu_la-openat.lo @GL_COND_OBJ_OPENDIR_TRUE@am__objects_54 = libgnu_la-opendir.lo @GL_COND_OBJ_PIPE_TRUE@am__objects_55 = libgnu_la-pipe.lo -@GL_COND_OBJ_RAISE_TRUE@am__objects_56 = libgnu_la-raise.lo -@GL_COND_OBJ_RAWMEMCHR_TRUE@am__objects_57 = libgnu_la-rawmemchr.lo -@GL_COND_OBJ_READDIR_TRUE@am__objects_58 = libgnu_la-readdir.lo -@GL_COND_OBJ_READLINK_TRUE@am__objects_59 = libgnu_la-readlink.lo -@GL_COND_OBJ_REALLOCARRAY_TRUE@am__objects_60 = \ +@GL_COND_OBJ_PSELECT_TRUE@am__objects_56 = libgnu_la-pselect.lo +@GL_COND_OBJ_PTHREAD_SIGMASK_TRUE@am__objects_57 = libgnu_la-pthread_sigmask.lo +@GL_COND_OBJ_RAISE_TRUE@am__objects_58 = libgnu_la-raise.lo +@GL_COND_OBJ_RAWMEMCHR_TRUE@am__objects_59 = libgnu_la-rawmemchr.lo +@GL_COND_OBJ_READDIR_TRUE@am__objects_60 = libgnu_la-readdir.lo +@GL_COND_OBJ_READLINK_TRUE@am__objects_61 = libgnu_la-readlink.lo +@GL_COND_OBJ_REALLOCARRAY_TRUE@am__objects_62 = \ @GL_COND_OBJ_REALLOCARRAY_TRUE@ libgnu_la-reallocarray.lo -@GL_COND_OBJ_REGEX_TRUE@am__objects_61 = libgnu_la-regex.lo -@GL_COND_OBJ_RENAME_TRUE@am__objects_62 = libgnu_la-rename.lo -@GL_COND_OBJ_RENAMEAT_TRUE@am__objects_63 = libgnu_la-renameat.lo -@GL_COND_OBJ_REWINDDIR_TRUE@am__objects_64 = libgnu_la-rewinddir.lo -@GL_COND_OBJ_RMDIR_TRUE@am__objects_65 = libgnu_la-rmdir.lo -@GL_COND_OBJ_SELECT_TRUE@am__objects_66 = libgnu_la-select.lo -@GL_COND_OBJ_SETENV_TRUE@am__objects_67 = libgnu_la-setenv.lo -@GL_COND_OBJ_SETLOCALE_LOCK_TRUE@am__objects_68 = \ +@GL_COND_OBJ_REGEX_TRUE@am__objects_63 = libgnu_la-regex.lo +@GL_COND_OBJ_RENAME_TRUE@am__objects_64 = libgnu_la-rename.lo +@GL_COND_OBJ_RENAMEAT_TRUE@am__objects_65 = libgnu_la-renameat.lo +@GL_COND_OBJ_REWINDDIR_TRUE@am__objects_66 = libgnu_la-rewinddir.lo +@GL_COND_OBJ_RMDIR_TRUE@am__objects_67 = libgnu_la-rmdir.lo +@GL_COND_OBJ_SELECT_TRUE@am__objects_68 = libgnu_la-select.lo +@GL_COND_OBJ_SETENV_TRUE@am__objects_69 = libgnu_la-setenv.lo +@GL_COND_OBJ_SETLOCALE_LOCK_TRUE@am__objects_70 = \ @GL_COND_OBJ_SETLOCALE_LOCK_TRUE@ libgnu_la-setlocale-lock.lo -@GL_COND_OBJ_SIGACTION_TRUE@am__objects_69 = libgnu_la-sigaction.lo -@GL_COND_OBJ_SIGPROCMASK_TRUE@am__objects_70 = \ +@GL_COND_OBJ_SIGACTION_TRUE@am__objects_71 = libgnu_la-sigaction.lo +@GL_COND_OBJ_SIGPROCMASK_TRUE@am__objects_72 = \ @GL_COND_OBJ_SIGPROCMASK_TRUE@ libgnu_la-sigprocmask.lo -@GL_COND_OBJ_SLEEP_TRUE@am__objects_71 = libgnu_la-sleep.lo -@GL_COND_OBJ_STAT_TRUE@am__objects_72 = libgnu_la-stat.lo -@GL_COND_OBJ_STDIO_READ_TRUE@am__objects_73 = libgnu_la-stdio-read.lo -@GL_COND_OBJ_STDIO_WRITE_TRUE@am__objects_74 = \ +@GL_COND_OBJ_SLEEP_TRUE@am__objects_73 = libgnu_la-sleep.lo +@GL_COND_OBJ_STAT_TRUE@am__objects_74 = libgnu_la-stat.lo +@GL_COND_OBJ_STDIO_READ_TRUE@am__objects_75 = libgnu_la-stdio-read.lo +@GL_COND_OBJ_STDIO_WRITE_TRUE@am__objects_76 = \ @GL_COND_OBJ_STDIO_WRITE_TRUE@ libgnu_la-stdio-write.lo -@GL_COND_OBJ_STRCASECMP_TRUE@am__objects_75 = libgnu_la-strcasecmp.lo -@GL_COND_OBJ_STRNCASECMP_TRUE@am__objects_76 = \ +@GL_COND_OBJ_STRCASECMP_TRUE@am__objects_77 = libgnu_la-strcasecmp.lo +@GL_COND_OBJ_STRNCASECMP_TRUE@am__objects_78 = \ @GL_COND_OBJ_STRNCASECMP_TRUE@ libgnu_la-strncasecmp.lo -@GL_COND_OBJ_STRCHRNUL_TRUE@am__objects_77 = libgnu_la-strchrnul.lo -@GL_COND_OBJ_STRDUP_TRUE@am__objects_78 = libgnu_la-strdup.lo -@GL_COND_OBJ_STRERROR_TRUE@am__objects_79 = libgnu_la-strerror.lo -@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__objects_80 = libgnu_la-strerror-override.lo -@GL_COND_OBJ_STRNDUP_TRUE@am__objects_81 = libgnu_la-strndup.lo -@GL_COND_OBJ_STRNLEN_TRUE@am__objects_82 = libgnu_la-strnlen.lo -@GL_COND_OBJ_STRSEP_TRUE@am__objects_83 = libgnu_la-strsep.lo -@GL_COND_OBJ_UNLINK_TRUE@am__objects_84 = libgnu_la-unlink.lo -@GL_COND_OBJ_UNLINKAT_TRUE@am__objects_85 = libgnu_la-unlinkat.lo -@GL_COND_OBJ_UTIME_TRUE@am__objects_86 = libgnu_la-utime.lo -@GL_COND_OBJ_WCRTOMB_TRUE@am__objects_87 = libgnu_la-wcrtomb.lo -@GL_COND_OBJ_WINDOWS_MUTEX_TRUE@am__objects_88 = \ +@GL_COND_OBJ_STRCHRNUL_TRUE@am__objects_79 = libgnu_la-strchrnul.lo +@GL_COND_OBJ_STRDUP_TRUE@am__objects_80 = libgnu_la-strdup.lo +@GL_COND_OBJ_STRERROR_TRUE@am__objects_81 = libgnu_la-strerror.lo +@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__objects_82 = libgnu_la-strerror-override.lo +@GL_COND_OBJ_STRNDUP_TRUE@am__objects_83 = libgnu_la-strndup.lo +@GL_COND_OBJ_STRNLEN_TRUE@am__objects_84 = libgnu_la-strnlen.lo +@GL_COND_OBJ_STRSEP_TRUE@am__objects_85 = libgnu_la-strsep.lo +@GL_COND_OBJ_UNLINK_TRUE@am__objects_86 = libgnu_la-unlink.lo +@GL_COND_OBJ_UNLINKAT_TRUE@am__objects_87 = libgnu_la-unlinkat.lo +@GL_COND_OBJ_UTIME_TRUE@am__objects_88 = libgnu_la-utime.lo +@GL_COND_OBJ_WCRTOMB_TRUE@am__objects_89 = libgnu_la-wcrtomb.lo +@GL_COND_OBJ_WINDOWS_MUTEX_TRUE@am__objects_90 = \ @GL_COND_OBJ_WINDOWS_MUTEX_TRUE@ libgnu_la-windows-mutex.lo -@GL_COND_OBJ_WINDOWS_ONCE_TRUE@am__objects_89 = \ +@GL_COND_OBJ_WINDOWS_ONCE_TRUE@am__objects_91 = \ @GL_COND_OBJ_WINDOWS_ONCE_TRUE@ libgnu_la-windows-once.lo -@GL_COND_OBJ_WINDOWS_RECMUTEX_TRUE@am__objects_90 = libgnu_la-windows-recmutex.lo -@GL_COND_OBJ_WINDOWS_RWLOCK_TRUE@am__objects_91 = \ +@GL_COND_OBJ_WINDOWS_RECMUTEX_TRUE@am__objects_92 = libgnu_la-windows-recmutex.lo +@GL_COND_OBJ_WINDOWS_RWLOCK_TRUE@am__objects_93 = \ @GL_COND_OBJ_WINDOWS_RWLOCK_TRUE@ libgnu_la-windows-rwlock.lo -@GL_COND_OBJ_WMEMCHR_TRUE@am__objects_92 = libgnu_la-wmemchr.lo -@GL_COND_OBJ_WMEMPCPY_TRUE@am__objects_93 = libgnu_la-wmempcpy.lo +@GL_COND_OBJ_WMEMCHR_TRUE@am__objects_94 = libgnu_la-wmemchr.lo +@GL_COND_OBJ_WMEMPCPY_TRUE@am__objects_95 = libgnu_la-wmempcpy.lo am_libgnu_la_OBJECTS = libgnu_la-argp-ba.lo libgnu_la-argp-eexst.lo \ libgnu_la-argp-fmtstream.lo libgnu_la-argp-fs-xinl.lo \ libgnu_la-argp-help.lo libgnu_la-argp-parse.lo \ @@ -686,33 +693,34 @@ am_libgnu_la_OBJECTS = libgnu_la-argp-ba.lo libgnu_la-argp-eexst.lo \ $(am__objects_50) $(am__objects_51) libgnu_la-nonblocking.lo \ $(am__objects_52) $(am__objects_53) libgnu_la-openat-die.lo \ $(am__objects_54) $(am__objects_55) libgnu_la-progname.lo \ - $(am__objects_56) $(am__objects_57) \ - libgnu_la-gl_rbtree_list.lo $(am__objects_58) \ - $(am__objects_59) $(am__objects_60) $(am__objects_61) \ - $(am__objects_62) $(am__objects_63) libgnu_la-renameatu.lo \ - $(am__objects_64) $(am__objects_65) libgnu_la-save-cwd.lo \ + $(am__objects_56) $(am__objects_57) $(am__objects_58) \ + $(am__objects_59) libgnu_la-gl_rbtree_list.lo \ + $(am__objects_60) $(am__objects_61) $(am__objects_62) \ + $(am__objects_63) $(am__objects_64) $(am__objects_65) \ + libgnu_la-renameatu.lo $(am__objects_66) $(am__objects_67) \ + libgnu_la-save-cwd.lo \ malloc/libgnu_la-scratch_buffer_dupfree.lo \ malloc/libgnu_la-scratch_buffer_grow.lo \ malloc/libgnu_la-scratch_buffer_grow_preserve.lo \ malloc/libgnu_la-scratch_buffer_set_array_size.lo \ - $(am__objects_66) libgnu_la-gl_set.lo $(am__objects_67) \ - libgnu_la-setlocale_null.lo $(am__objects_68) \ - $(am__objects_69) libgnu_la-sig-handler.lo $(am__objects_70) \ - $(am__objects_71) libgnu_la-sockets.lo $(am__objects_72) \ - libgnu_la-stat-time.lo libgnu_la-statat.lo $(am__objects_73) \ - $(am__objects_74) libgnu_la-stdopen.lo $(am__objects_75) \ - $(am__objects_76) $(am__objects_77) $(am__objects_78) \ - $(am__objects_79) $(am__objects_80) $(am__objects_81) \ - $(am__objects_82) libgnu_la-strnlen1.lo $(am__objects_83) \ + $(am__objects_68) libgnu_la-gl_set.lo $(am__objects_69) \ + libgnu_la-setlocale_null.lo $(am__objects_70) \ + $(am__objects_71) libgnu_la-sig-handler.lo $(am__objects_72) \ + $(am__objects_73) libgnu_la-sockets.lo $(am__objects_74) \ + libgnu_la-stat-time.lo libgnu_la-statat.lo $(am__objects_75) \ + $(am__objects_76) libgnu_la-stdopen.lo $(am__objects_77) \ + $(am__objects_78) $(am__objects_79) $(am__objects_80) \ + $(am__objects_81) $(am__objects_82) $(am__objects_83) \ + $(am__objects_84) libgnu_la-strnlen1.lo $(am__objects_85) \ libgnu_la-sys_socket.lo libgnu_la-tempname.lo \ glthread/libgnu_la-threadlib.lo libgnu_la-timespec.lo \ libgnu_la-unistd.lo libgnu_la-dup-safer.lo \ libgnu_la-fd-safer.lo libgnu_la-pipe-safer.lo \ - $(am__objects_84) $(am__objects_85) $(am__objects_86) \ - libgnu_la-utimens.lo libgnu_la-verror.lo $(am__objects_87) \ - libgnu_la-wctype-h.lo $(am__objects_88) $(am__objects_89) \ - $(am__objects_90) $(am__objects_91) $(am__objects_92) \ - $(am__objects_93) libgnu_la-xmalloc.lo libgnu_la-xalloc-die.lo \ + $(am__objects_86) $(am__objects_87) $(am__objects_88) \ + libgnu_la-utimens.lo libgnu_la-verror.lo $(am__objects_89) \ + libgnu_la-wctype-h.lo $(am__objects_90) $(am__objects_91) \ + $(am__objects_92) $(am__objects_93) $(am__objects_94) \ + $(am__objects_95) libgnu_la-xmalloc.lo libgnu_la-xalloc-die.lo \ libgnu_la-xgetcwd.lo libgnu_la-gl_xlist.lo \ libgnu_la-gl_xmap.lo libgnu_la-gl_xset.lo libgnu_la-xsize.lo \ libgnu_la-xstdopen.lo libgnu_la-xstrndup.lo \ @@ -864,6 +872,8 @@ am__depfiles_remade = ./$(DEPDIR)/alloca.Plo \ ./$(DEPDIR)/libgnu_la-printf-args.Plo \ ./$(DEPDIR)/libgnu_la-printf-parse.Plo \ ./$(DEPDIR)/libgnu_la-progname.Plo \ + ./$(DEPDIR)/libgnu_la-pselect.Plo \ + ./$(DEPDIR)/libgnu_la-pthread_sigmask.Plo \ ./$(DEPDIR)/libgnu_la-raise.Plo \ ./$(DEPDIR)/libgnu_la-rawmemchr.Plo \ ./$(DEPDIR)/libgnu_la-readdir.Plo \ @@ -1798,6 +1808,7 @@ LIB_HARD_LOCALE = @LIB_HARD_LOCALE@ LIB_MBRTOWC = @LIB_MBRTOWC@ LIB_NANOSLEEP = @LIB_NANOSLEEP@ LIB_NL_LANGINFO = @LIB_NL_LANGINFO@ +LIB_PTHREAD_SIGMASK = @LIB_PTHREAD_SIGMASK@ LIB_SCHED_YIELD = @LIB_SCHED_YIELD@ LIB_SELECT = @LIB_SELECT@ LIB_SETLOCALE_NULL = @LIB_SETLOCALE_NULL@ @@ -2261,6 +2272,7 @@ runstatedir = @runstatedir@ sbindir = @sbindir@ sections = @sections@ sharedstatedir = @sharedstatedir@ +snapdir = @snapdir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdsystemunitdir = @systemdsystemunitdir@ @@ -2276,7 +2288,7 @@ troff_as_troff_input = @troff_as_troff_input@ vgrind = @vgrind@ xz = @xz@ zstd = @zstd@ -AUTOMAKE_OPTIONS = 1.11 gnits subdir-objects +AUTOMAKE_OPTIONS = 1.14 gnits subdir-objects SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = @@ -2401,29 +2413,30 @@ libgnu_la_SOURCES = argp.h argp-ba.c argp-eexst.c argp-fmtstream.c \ $(am__append_50) $(am__append_51) nonblocking.c \ $(am__append_52) $(am__append_53) openat-die.c \ $(am__append_54) $(am__append_55) progname.h progname.c \ - $(am__append_56) $(am__append_57) gl_rbtree_list.h \ - gl_rbtree_list.c gl_anyrbtree_list1.h gl_anyrbtree_list2.h \ - gl_anytree_list1.h gl_anytree_list2.h $(am__append_58) \ - $(am__append_59) $(am__append_60) $(am__append_61) \ - $(am__append_62) $(am__append_63) renameatu.c $(am__append_64) \ - $(am__append_65) save-cwd.c malloc/scratch_buffer_dupfree.c \ + $(am__append_56) $(am__append_57) $(am__append_58) \ + $(am__append_59) gl_rbtree_list.h gl_rbtree_list.c \ + gl_anyrbtree_list1.h gl_anyrbtree_list2.h gl_anytree_list1.h \ + gl_anytree_list2.h $(am__append_60) $(am__append_61) \ + $(am__append_62) $(am__append_63) $(am__append_64) \ + $(am__append_65) renameatu.c $(am__append_66) $(am__append_67) \ + save-cwd.c malloc/scratch_buffer_dupfree.c \ malloc/scratch_buffer_grow.c \ malloc/scratch_buffer_grow_preserve.c \ - malloc/scratch_buffer_set_array_size.c $(am__append_66) \ - gl_set.h gl_set.c $(am__append_67) setlocale_null.c \ - $(am__append_68) $(am__append_69) sig-handler.c \ - $(am__append_70) size_max.h $(am__append_71) sockets.h \ - sockets.c $(am__append_72) stat-time.c statat.c \ - $(am__append_73) $(am__append_74) stdopen.c $(am__append_75) \ - $(am__append_76) $(am__append_77) $(am__append_78) \ - $(am__append_79) $(am__append_80) $(am__append_81) \ - $(am__append_82) strnlen1.h strnlen1.c $(am__append_83) \ + malloc/scratch_buffer_set_array_size.c $(am__append_68) \ + gl_set.h gl_set.c $(am__append_69) setlocale_null.c \ + $(am__append_70) $(am__append_71) sig-handler.c \ + $(am__append_72) size_max.h $(am__append_73) sockets.h \ + sockets.c $(am__append_74) stat-time.c statat.c \ + $(am__append_75) $(am__append_76) stdopen.c $(am__append_77) \ + $(am__append_78) $(am__append_79) $(am__append_80) \ + $(am__append_81) $(am__append_82) $(am__append_83) \ + $(am__append_84) strnlen1.h strnlen1.c $(am__append_85) \ sys_socket.c tempname.c glthread/threadlib.c timespec.c \ - unistd.c dup-safer.c fd-safer.c pipe-safer.c $(am__append_84) \ - $(am__append_85) $(am__append_86) utimens.c verror.h verror.c \ - $(am__append_87) wctype-h.c $(am__append_88) $(am__append_89) \ - $(am__append_90) $(am__append_91) $(am__append_92) \ - $(am__append_93) xmalloc.c xalloc-die.c xgetcwd.c gl_xlist.h \ + unistd.c dup-safer.c fd-safer.c pipe-safer.c $(am__append_86) \ + $(am__append_87) $(am__append_88) utimens.c verror.h verror.c \ + $(am__append_89) wctype-h.c $(am__append_90) $(am__append_91) \ + $(am__append_92) $(am__append_93) $(am__append_94) \ + $(am__append_95) xmalloc.c xalloc-die.c xgetcwd.c gl_xlist.h \ gl_xlist.c gl_xmap.h gl_xmap.c gl_xset.h gl_xset.c xsize.h \ xsize.c xstdopen.c xstrndup.h xstrndup.c xvasprintf.h \ xvasprintf.c xasprintf.c @@ -2441,8 +2454,8 @@ EXTRA_libgnu_la_SOURCES = alloca.c calloc.c calloc.c stripslash.c \ libgnu_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(LIBSOCKET) \ $(LIBTHREAD) $(LIB_CLOCK_GETTIME) $(LIB_GETLOGIN) \ $(LIB_GETRANDOM) $(LIB_HARD_LOCALE) $(LIB_MBRTOWC) \ - $(LIB_NANOSLEEP) $(LIB_SELECT) $(LIB_SETLOCALE_NULL) \ - $(LTLIBINTL) + $(LIB_NANOSLEEP) $(LIB_PTHREAD_SIGMASK) $(LIB_SELECT) \ + $(LIB_SETLOCALE_NULL) $(LTLIBINTL) # Use this preprocessor expression to decide whether #include_next works. # Do not rely on a 'configure'-time test for this, since the expression @@ -2707,6 +2720,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-printf-args.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-printf-parse.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-progname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-pselect.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-pthread_sigmask.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-raise.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-rawmemchr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-readdir.Plo@am__quote@ # am--include-marker @@ -3585,6 +3600,20 @@ libgnu_la-progname.lo: progname.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-progname.lo `test -f 'progname.c' || echo '$(srcdir)/'`progname.c +libgnu_la-pselect.lo: pselect.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-pselect.lo -MD -MP -MF $(DEPDIR)/libgnu_la-pselect.Tpo -c -o libgnu_la-pselect.lo `test -f 'pselect.c' || echo '$(srcdir)/'`pselect.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-pselect.Tpo $(DEPDIR)/libgnu_la-pselect.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pselect.c' object='libgnu_la-pselect.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-pselect.lo `test -f 'pselect.c' || echo '$(srcdir)/'`pselect.c + +libgnu_la-pthread_sigmask.lo: pthread_sigmask.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-pthread_sigmask.lo -MD -MP -MF $(DEPDIR)/libgnu_la-pthread_sigmask.Tpo -c -o libgnu_la-pthread_sigmask.lo `test -f 'pthread_sigmask.c' || echo '$(srcdir)/'`pthread_sigmask.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-pthread_sigmask.Tpo $(DEPDIR)/libgnu_la-pthread_sigmask.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pthread_sigmask.c' object='libgnu_la-pthread_sigmask.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-pthread_sigmask.lo `test -f 'pthread_sigmask.c' || echo '$(srcdir)/'`pthread_sigmask.c + libgnu_la-raise.lo: raise.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-raise.lo -MD -MP -MF $(DEPDIR)/libgnu_la-raise.Tpo -c -o libgnu_la-raise.lo `test -f 'raise.c' || echo '$(srcdir)/'`raise.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-raise.Tpo $(DEPDIR)/libgnu_la-raise.Plo @@ -4628,6 +4657,8 @@ distclean: distclean-recursive -rm -f ./$(DEPDIR)/libgnu_la-printf-args.Plo -rm -f ./$(DEPDIR)/libgnu_la-printf-parse.Plo -rm -f ./$(DEPDIR)/libgnu_la-progname.Plo + -rm -f ./$(DEPDIR)/libgnu_la-pselect.Plo + -rm -f ./$(DEPDIR)/libgnu_la-pthread_sigmask.Plo -rm -f ./$(DEPDIR)/libgnu_la-raise.Plo -rm -f ./$(DEPDIR)/libgnu_la-rawmemchr.Plo -rm -f ./$(DEPDIR)/libgnu_la-readdir.Plo @@ -4883,6 +4914,8 @@ maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/libgnu_la-printf-args.Plo -rm -f ./$(DEPDIR)/libgnu_la-printf-parse.Plo -rm -f ./$(DEPDIR)/libgnu_la-progname.Plo + -rm -f ./$(DEPDIR)/libgnu_la-pselect.Plo + -rm -f ./$(DEPDIR)/libgnu_la-pthread_sigmask.Plo -rm -f ./$(DEPDIR)/libgnu_la-raise.Plo -rm -f ./$(DEPDIR)/libgnu_la-rawmemchr.Plo -rm -f ./$(DEPDIR)/libgnu_la-readdir.Plo diff --git a/gl/lib/cdefs.h b/gl/lib/cdefs.h index 44d3826b..cb251450 100644 --- a/gl/lib/cdefs.h +++ b/gl/lib/cdefs.h @@ -41,7 +41,9 @@ Similarly for __has_builtin, etc. */ #if (defined __has_attribute \ && (!defined __clang_minor__ \ - || 3 < __clang_major__ + (5 <= __clang_minor__))) + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) # define __glibc_has_attribute(attr) __has_attribute (attr) #else # define __glibc_has_attribute(attr) 0 diff --git a/gl/lib/nanosleep.c b/gl/lib/nanosleep.c index 5294c646..446794ed 100644 --- a/gl/lib/nanosleep.c +++ b/gl/lib/nanosleep.c @@ -23,7 +23,6 @@ #include <time.h> #include "intprops.h" -#include "sig-handler.h" #include "verify.h" #include <stdbool.h> @@ -32,7 +31,6 @@ #include <sys/select.h> #include <signal.h> -#include <sys/time.h> #include <errno.h> #include <unistd.h> @@ -181,45 +179,9 @@ nanosleep (const struct timespec *requested_delay, } #else -/* Unix platforms lacking nanosleep. */ - -/* Some systems (MSDOS) don't have SIGCONT. - Using SIGTERM here turns the signal-handling code below - into a no-op on such systems. */ -# ifndef SIGCONT -# define SIGCONT SIGTERM -# endif - -static sig_atomic_t volatile suspended; - -/* Handle SIGCONT. */ - -static _GL_ASYNC_SAFE void -sighandler (int sig) -{ - suspended = 1; -} - -/* Suspend execution for at least *TS_DELAY seconds. */ - -static int -my_usleep (const struct timespec *ts_delay) -{ - struct timeval tv_delay; - tv_delay.tv_sec = ts_delay->tv_sec; - tv_delay.tv_usec = (ts_delay->tv_nsec + 999) / 1000; - if (tv_delay.tv_usec == 1000000) - { - if (tv_delay.tv_sec == TYPE_MAXIMUM (time_t)) - tv_delay.tv_usec = 1000000 - 1; /* close enough */ - else - { - tv_delay.tv_sec++; - tv_delay.tv_usec = 0; - } - } - return select (0, NULL, NULL, NULL, &tv_delay); -} +/* Other platforms lacking nanosleep. + It's not clear whether these are still practical porting targets. + For now, just fall back on pselect. */ /* Suspend execution for at least *REQUESTED_DELAY seconds. The *REMAINING_DELAY part isn't implemented yet. */ @@ -228,49 +190,6 @@ int nanosleep (const struct timespec *requested_delay, struct timespec *remaining_delay) { - static bool initialized; - - if (requested_delay->tv_nsec < 0 || BILLION <= requested_delay->tv_nsec) - { - errno = EINVAL; - return -1; - } - - /* set up sig handler */ - if (! initialized) - { - struct sigaction oldact; - - sigaction (SIGCONT, NULL, &oldact); - if (get_handler (&oldact) != SIG_IGN) - { - struct sigaction newact; - - newact.sa_handler = sighandler; - sigemptyset (&newact.sa_mask); - newact.sa_flags = 0; - sigaction (SIGCONT, &newact, NULL); - } - initialized = true; - } - - suspended = 0; - - if (my_usleep (requested_delay) == -1) - { - if (suspended) - { - /* Calculate time remaining. */ - /* FIXME: the code in sleep doesn't use this, so there's no - rush to implement it. */ - - errno = EINTR; - } - return -1; - } - - /* FIXME: Restore sig handler? */ - - return 0; + return pselect (0, NULL, NULL, NULL, requested_delay, NULL); } #endif diff --git a/gl/lib/pselect.c b/gl/lib/pselect.c new file mode 100644 index 00000000..a1eca0c6 --- /dev/null +++ b/gl/lib/pselect.c @@ -0,0 +1,110 @@ +/* pselect - synchronous I/O multiplexing + + Copyright 2011-2022 Free Software Foundation, Inc. + + This file is part of gnulib. + + This file 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. + + This file 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 this program. If not, see <https://www.gnu.org/licenses/>. */ + +/* written by Paul Eggert */ + +#include <config.h> + +#include <sys/select.h> + +#include <errno.h> +#include <signal.h> + +/* Examine the size-NFDS file descriptor sets in RFDS, WFDS, and XFDS + to see whether some of their descriptors are ready for reading, + ready for writing, or have exceptions pending. Wait for at most + TIMEOUT seconds, and use signal mask SIGMASK while waiting. A null + pointer parameter stands for no descriptors, an infinite timeout, + or an unaffected signal mask. */ + +#if !HAVE_PSELECT + +int +pselect (int nfds, fd_set *restrict rfds, + fd_set *restrict wfds, fd_set *restrict xfds, + struct timespec const *restrict timeout, + sigset_t const *restrict sigmask) +{ + int select_result; + sigset_t origmask; + struct timeval tv, *tvp; + + if (timeout) + { + if (! (0 <= timeout->tv_nsec && timeout->tv_nsec < 1000000000)) + { + errno = EINVAL; + return -1; + } + + tv.tv_sec = timeout->tv_sec; + tv.tv_usec = (timeout->tv_nsec + 999) / 1000; + tvp = &tv; + } + else + tvp = NULL; + + /* Signal mask munging should be atomic, but this is the best we can + do in this emulation. */ + if (sigmask) + pthread_sigmask (SIG_SETMASK, sigmask, &origmask); + + select_result = select (nfds, rfds, wfds, xfds, tvp); + + if (sigmask) + { + int select_errno = errno; + pthread_sigmask (SIG_SETMASK, &origmask, NULL); + errno = select_errno; + } + + return select_result; +} + +#else /* HAVE_PSELECT */ +# include <unistd.h> +# undef pselect + +int +rpl_pselect (int nfds, fd_set *restrict rfds, + fd_set *restrict wfds, fd_set *restrict xfds, + struct timespec const *restrict timeout, + sigset_t const *restrict sigmask) +{ + int i; + + /* FreeBSD 8.2 has a bug: it does not always detect invalid fds. */ + if (nfds < 0 || nfds > FD_SETSIZE) + { + errno = EINVAL; + return -1; + } + for (i = 0; i < nfds; i++) + { + if (((rfds && FD_ISSET (i, rfds)) + || (wfds && FD_ISSET (i, wfds)) + || (xfds && FD_ISSET (i, xfds))) + && dup2 (i, i) != i) + return -1; + } + + return pselect (nfds, rfds, wfds, xfds, timeout, sigmask); +} + +#endif diff --git a/gl/lib/pthread_sigmask.c b/gl/lib/pthread_sigmask.c new file mode 100644 index 00000000..cd4eb807 --- /dev/null +++ b/gl/lib/pthread_sigmask.c @@ -0,0 +1,92 @@ +/* POSIX compatible signal blocking for threads. + Copyright (C) 2011-2022 Free Software Foundation, Inc. + + This file 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. + + This file 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 this program. If not, see <https://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <signal.h> + +#include <errno.h> +#include <stddef.h> + +#if PTHREAD_SIGMASK_INEFFECTIVE +# include <string.h> +#endif + +#if PTHREAD_SIGMASK_UNBLOCK_BUG +# include <unistd.h> +#endif + +int +pthread_sigmask (int how, const sigset_t *new_mask, sigset_t *old_mask) +#undef pthread_sigmask +{ +#if HAVE_PTHREAD_SIGMASK + int ret; + +# if PTHREAD_SIGMASK_INEFFECTIVE + sigset_t omask, omask_copy; + sigset_t *old_mask_ptr = &omask; + sigemptyset (&omask); + /* Add a signal unlikely to be blocked, so that OMASK_COPY + is unlikely to match the actual mask. */ + sigaddset (&omask, SIGILL); + memcpy (&omask_copy, &omask, sizeof omask); +# else + sigset_t *old_mask_ptr = old_mask; +# endif + + ret = pthread_sigmask (how, new_mask, old_mask_ptr); + +# if PTHREAD_SIGMASK_INEFFECTIVE + if (ret == 0) + { + /* Detect whether pthread_sigmask is currently ineffective. + Don't cache the information: libpthread.so could be dynamically + loaded after the program started and after pthread_sigmask was + called for the first time. */ + if (memcmp (&omask_copy, &omask, sizeof omask) == 0 + && pthread_sigmask (1729, &omask_copy, NULL) == 0) + { + /* pthread_sigmask is currently ineffective. The program is not + linked to -lpthread. So use sigprocmask instead. */ + return (sigprocmask (how, new_mask, old_mask) < 0 ? errno : 0); + } + + if (old_mask) + memcpy (old_mask, &omask, sizeof omask); + } +# endif +# if PTHREAD_SIGMASK_FAILS_WITH_ERRNO + if (ret == -1) + return errno; +# endif +# if PTHREAD_SIGMASK_UNBLOCK_BUG + if (ret == 0 + && new_mask != NULL + && (how == SIG_UNBLOCK || how == SIG_SETMASK)) + { + /* Give the OS the opportunity to raise signals that were pending before + the pthread_sigmask call and have now been unblocked. */ + usleep (1); + } +# endif + return ret; +#else + int ret = sigprocmask (how, new_mask, old_mask); + return (ret < 0 ? errno : 0); +#endif +} diff --git a/gl/lib/string.in.h b/gl/lib/string.in.h index 03e6a17a..c9432948 100644 --- a/gl/lib/string.in.h +++ b/gl/lib/string.in.h @@ -563,22 +563,35 @@ _GL_WARN_ON_USE (strncat, "strncat is unportable - " # undef strndup # define strndup rpl_strndup # endif -_GL_FUNCDECL_RPL (strndup, char *, (char const *__s, size_t __n) - _GL_ARG_NONNULL ((1))); +_GL_FUNCDECL_RPL (strndup, char *, + (char const *__s, size_t __n) + _GL_ARG_NONNULL ((1)) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); _GL_CXXALIAS_RPL (strndup, char *, (char const *__s, size_t __n)); # else -# if ! @HAVE_DECL_STRNDUP@ -_GL_FUNCDECL_SYS (strndup, char *, (char const *__s, size_t __n) - _GL_ARG_NONNULL ((1))); +# if !@HAVE_DECL_STRNDUP@ || __GNUC__ >= 11 +_GL_FUNCDECL_SYS (strndup, char *, + (char const *__s, size_t __n) + _GL_ARG_NONNULL ((1)) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif _GL_CXXALIAS_SYS (strndup, char *, (char const *__s, size_t __n)); # endif _GL_CXXALIASWARN (strndup); -#elif defined GNULIB_POSIXCHECK -# undef strndup -# if HAVE_RAW_DECL_STRNDUP +#else +# if __GNUC__ >= 11 +/* For -Wmismatched-dealloc: Associate strndup with free or rpl_free. */ +_GL_FUNCDECL_SYS (strndup, char *, + (char const *__s, size_t __n) + _GL_ARG_NONNULL ((1)) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); +# endif +# if defined GNULIB_POSIXCHECK +# undef strndup +# if HAVE_RAW_DECL_STRNDUP _GL_WARN_ON_USE (strndup, "strndup is unportable - " "use gnulib module strndup for portability"); +# endif # endif #endif diff --git a/gl/m4/gnulib-common.m4 b/gl/m4/gnulib-common.m4 index dbc40796..c5ced04f 100644 --- a/gl/m4/gnulib-common.m4 +++ b/gl/m4/gnulib-common.m4 @@ -69,7 +69,9 @@ AC_DEFUN([gl_COMMON_BODY], [ [/* Attributes. */ #if (defined __has_attribute \ && (!defined __clang_minor__ \ - || 3 < __clang_major__ + (5 <= __clang_minor__))) + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) # define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) #else # define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr diff --git a/gl/m4/gnulib-comp.m4 b/gl/m4/gnulib-comp.m4 index fb723bf0..431d879e 100644 --- a/gl/m4/gnulib-comp.m4 +++ b/gl/m4/gnulib-comp.m4 @@ -42,7 +42,6 @@ AC_DEFUN([gl_EARLY], AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_PROG_AR_RANLIB]) - AC_REQUIRE([AM_PROG_CC_C_O]) # Code from module absolute-header: # Code from module alloca: # Code from module alloca-opt: @@ -186,6 +185,8 @@ AC_DEFUN([gl_EARLY], # Code from module pathmax: # Code from module pipe-posix: # Code from module progname: + # Code from module pselect: + # Code from module pthread_sigmask: # Code from module raise: # Code from module rawmemchr: # Code from module rbtree-list: @@ -730,9 +731,6 @@ AC_SUBST([LTALLOCA]) gl_FUNC_NANOSLEEP gl_CONDITIONAL([GL_COND_OBJ_NANOSLEEP], [test $HAVE_NANOSLEEP = 0 || test $REPLACE_NANOSLEEP = 1]) - AM_COND_IF([GL_COND_OBJ_NANOSLEEP], [ - gl_PREREQ_NANOSLEEP - ]) gl_TIME_MODULE_INDICATOR([nanosleep]) gl_FUNC_NL_LANGINFO gl_CONDITIONAL([GL_COND_OBJ_NL_LANGINFO], @@ -778,6 +776,17 @@ AC_SUBST([LTALLOCA]) gl_UNISTD_MODULE_INDICATOR([pipe]) AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>]) AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>]) + gl_FUNC_PSELECT + gl_CONDITIONAL([GL_COND_OBJ_PSELECT], + [test $HAVE_PSELECT = 0 || test $REPLACE_PSELECT = 1]) + gl_SYS_SELECT_MODULE_INDICATOR([pselect]) + gl_FUNC_PTHREAD_SIGMASK + gl_CONDITIONAL([GL_COND_OBJ_PTHREAD_SIGMASK], + [test $HAVE_PTHREAD_SIGMASK = 0 || test $REPLACE_PTHREAD_SIGMASK = 1]) + AM_COND_IF([GL_COND_OBJ_PTHREAD_SIGMASK], [ + gl_PREREQ_PTHREAD_SIGMASK + ]) + gl_SIGNAL_MODULE_INDICATOR([pthread_sigmask]) gl_FUNC_RAISE gl_CONDITIONAL([GL_COND_OBJ_RAISE], [test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1]) @@ -1535,6 +1544,8 @@ AC_DEFUN([gl_FILE_LIST], [ lib/printf-parse.h lib/progname.c lib/progname.h + lib/pselect.c + lib/pthread_sigmask.c lib/raise.c lib/rawmemchr.c lib/rawmemchr.valgrind @@ -1797,7 +1808,9 @@ AC_DEFUN([gl_FILE_LIST], [ m4/pid_t.m4 m4/pipe.m4 m4/printf.m4 + m4/pselect.m4 m4/pthread_rwlock_rdlock.m4 + m4/pthread_sigmask.m4 m4/raise.m4 m4/rawmemchr.m4 m4/readdir.m4 diff --git a/gl/m4/nanosleep.m4 b/gl/m4/nanosleep.m4 index 6a51f28e..1964b1ea 100644 --- a/gl/m4/nanosleep.m4 +++ b/gl/m4/nanosleep.m4 @@ -1,4 +1,4 @@ -# serial 40 +# serial 41 dnl From Jim Meyering. dnl Check for the nanosleep function. @@ -19,9 +19,6 @@ AC_DEFUN([gl_FUNC_NANOSLEEP], dnl Persuade glibc and Solaris <time.h> to declare nanosleep. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) - AC_CHECK_HEADERS_ONCE([sys/time.h]) - AC_REQUIRE([gl_FUNC_SELECT]) - AC_CHECK_DECLS_ONCE([alarm]) nanosleep_save_libs=$LIBS @@ -53,9 +50,6 @@ AC_DEFUN([gl_FUNC_NANOSLEEP], #include <errno.h> #include <limits.h> #include <signal.h> - #if HAVE_SYS_TIME_H - #include <sys/time.h> - #endif #include <time.h> #include <unistd.h> #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) @@ -135,15 +129,6 @@ AC_DEFUN([gl_FUNC_NANOSLEEP], AC_DEFINE([HAVE_BUG_BIG_NANOSLEEP], [1], [Define to 1 if nanosleep mishandles large arguments.]) ;; - *) - # The replacement uses select(). Add $LIBSOCKET to $LIB_NANOSLEEP. - for ac_lib in $LIBSOCKET; do - case " $LIB_NANOSLEEP " in - *" $ac_lib "*) ;; - *) LIB_NANOSLEEP="$LIB_NANOSLEEP $ac_lib";; - esac - done - ;; esac ;; esac @@ -152,10 +137,3 @@ AC_DEFUN([gl_FUNC_NANOSLEEP], fi LIBS=$nanosleep_save_libs ]) - -# Prerequisites of lib/nanosleep.c. -AC_DEFUN([gl_PREREQ_NANOSLEEP], -[ - AC_CHECK_HEADERS_ONCE([sys/select.h]) - gl_PREREQ_SIG_HANDLER_H -]) diff --git a/gl/m4/pselect.m4 b/gl/m4/pselect.m4 new file mode 100644 index 00000000..86114416 --- /dev/null +++ b/gl/m4/pselect.m4 @@ -0,0 +1,73 @@ +# pselect.m4 serial 10 +dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_PSELECT], +[ + AC_REQUIRE([gl_SYS_SELECT_H]) + AC_REQUIRE([AC_C_RESTRICT]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CHECK_FUNCS_ONCE([pselect]) + + if test $ac_cv_func_pselect = yes; then + AC_CACHE_CHECK([whether signature of pselect conforms to POSIX], + [gl_cv_sig_pselect], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <sys/select.h> + ]], + [[int (*p) (int, fd_set *, fd_set *, fd_set *restrict, + struct timespec const *restrict, + sigset_t const *restrict) = pselect; + return !p;]])], + [gl_cv_sig_pselect=yes], + [gl_cv_sig_pselect=no])]) + + dnl On FreeBSD 8.2, pselect() doesn't always reject bad fds. + AC_CACHE_CHECK([whether pselect detects invalid fds], + [gl_cv_func_pselect_detects_ebadf], + [ + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include <sys/types.h> +#include <sys/time.h> +#if HAVE_SYS_SELECT_H +# include <sys/select.h> +#endif +#include <unistd.h> +#include <errno.h> +]GL_MDA_DEFINES], +[[ + fd_set set; + dup2(0, 16); + FD_ZERO(&set); + FD_SET(16, &set); + close(16); + struct timespec timeout; + timeout.tv_sec = 0; + timeout.tv_nsec = 5000; + return pselect (17, &set, NULL, NULL, &timeout, NULL) != -1 || errno != EBADF; +]])], [gl_cv_func_pselect_detects_ebadf=yes], + [gl_cv_func_pselect_detects_ebadf=no], + [ + case "$host_os" in + # Guess yes on Linux systems. + linux-* | linux) gl_cv_func_pselect_detects_ebadf="guessing yes" ;; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_pselect_detects_ebadf="guessing yes" ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_pselect_detects_ebadf="$gl_cross_guess_normal" ;; + esac + ]) + ]) + case $gl_cv_func_pselect_detects_ebadf in + *yes) ;; + *) REPLACE_PSELECT=1 ;; + esac + fi + + if test $ac_cv_func_pselect = no || test $gl_cv_sig_pselect = no; then + REPLACE_PSELECT=1 + fi +]) diff --git a/gl/m4/pthread_sigmask.m4 b/gl/m4/pthread_sigmask.m4 new file mode 100644 index 00000000..0aa8c53f --- /dev/null +++ b/gl/m4/pthread_sigmask.m4 @@ -0,0 +1,274 @@ +# pthread_sigmask.m4 serial 21 +dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK], +[ + AC_REQUIRE([gl_SIGNAL_H_DEFAULTS]) + + AC_CHECK_FUNCS_ONCE([pthread_sigmask]) + + dnl On MinGW pthread_sigmask is just a macro which always returns 0. + dnl It does not exist as a real function, which is required by POSIX. + AC_CACHE_CHECK([whether pthread_sigmask is a macro], + [gl_cv_func_pthread_sigmask_macro], + [AC_EGREP_CPP([headers_define_pthread_sigmask], [ +#include <pthread.h> +#include <signal.h> +#ifdef pthread_sigmask + headers_define_pthread_sigmask +#endif], + [gl_cv_func_pthread_sigmask_macro=yes], + [gl_cv_func_pthread_sigmask_macro=no]) + ]) + + LIB_PTHREAD_SIGMASK= + + if test $gl_cv_func_pthread_sigmask_macro = yes; then + dnl pthread_sigmask is a dummy macro. + HAVE_PTHREAD_SIGMASK=0 + dnl Make sure to '#undef pthread_sigmask' before defining it. + REPLACE_PTHREAD_SIGMASK=1 + else + dnl Test whether the gnulib module 'threadlib' is in use. + dnl Some packages like Emacs use --avoid=threadlib. + dnl Write the symbol in such a way that it does not cause 'aclocal' to pick + dnl the threadlib.m4 file that is installed in $PREFIX/share/aclocal/. + m4_ifdef([gl_][THREADLIB], [ + AC_REQUIRE([gl_][THREADLIB]) + + if test "$gl_threads_api" = posix; then + if test $ac_cv_func_pthread_sigmask = yes; then + dnl pthread_sigmask is available without -lpthread. + : + else + if test -n "$LIBMULTITHREAD"; then + AC_CACHE_CHECK([for pthread_sigmask in $LIBMULTITHREAD], + [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD], + [gl_save_LIBS="$LIBS" + LIBS="$LIBS $LIBMULTITHREAD" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <pthread.h> + #include <signal.h> + ]], + [[return pthread_sigmask (0, (sigset_t *) 0, (sigset_t *) 0);]]) + ], + [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes], + [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no]) + LIBS="$gl_save_LIBS" + ]) + if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then + dnl pthread_sigmask is available with -pthread or -lpthread. + LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD" + else + dnl pthread_sigmask is not available at all. + HAVE_PTHREAD_SIGMASK=0 + fi + else + dnl pthread_sigmask is not available at all. + HAVE_PTHREAD_SIGMASK=0 + fi + fi + else + dnl pthread_sigmask may exist but does not interoperate with the chosen + dnl multithreading facility. + if test $ac_cv_func_pthread_sigmask = yes; then + REPLACE_PTHREAD_SIGMASK=1 + else + HAVE_PTHREAD_SIGMASK=0 + fi + fi + ], [ + dnl The module 'threadlib' is not in use, due to --avoid=threadlib being + dnl specified. + dnl The package either has prepared CPPFLAGS and LIBS for use of + dnl POSIX:2008 threads, or wants to build single-threaded programs. + if test $ac_cv_func_pthread_sigmask = yes; then + dnl pthread_sigmask exists and does not require extra libraries. + dnl Assume that it is declared. + : + else + dnl pthread_sigmask either does not exist or needs extra libraries. + HAVE_PTHREAD_SIGMASK=0 + dnl Define the symbol rpl_pthread_sigmask, not pthread_sigmask, + dnl so as to not accidentally override the system's pthread_sigmask + dnl symbol from libpthread. This is necessary on IRIX 6.5. + REPLACE_PTHREAD_SIGMASK=1 + fi + ]) + fi + + AC_SUBST([LIB_PTHREAD_SIGMASK]) + dnl We don't need a variable LTLIB_PTHREAD_SIGMASK, because when + dnl "$gl_threads_api" = posix, $LTLIBMULTITHREAD and $LIBMULTITHREAD are the + dnl same. + + dnl Now test for some bugs in the system function. + if test $HAVE_PTHREAD_SIGMASK = 1; then + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + dnl On FreeBSD 13.0, MidnightBSD 1.1, HP-UX 11.31, Solaris 9, in programs + dnl that are not linked with -lpthread, the pthread_sigmask() function + dnl always returns 0 and has no effect. + if test -z "$LIB_PTHREAD_SIGMASK"; then + case " $LIBS " in + *' -pthread '*) ;; + *' -lpthread '*) ;; + *) + AC_CACHE_CHECK([whether pthread_sigmask works without -lpthread], + [gl_cv_func_pthread_sigmask_in_libc_works], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ + #include <pthread.h> + #include <signal.h> + #include <stddef.h> + int main () + { + sigset_t set; + sigemptyset (&set); + return pthread_sigmask (1729, &set, NULL) != 0; + }]])], + [gl_cv_func_pthread_sigmask_in_libc_works=no], + [gl_cv_func_pthread_sigmask_in_libc_works=yes], + [ + changequote(,)dnl + case "$host_os" in + freebsd* | midnightbsd* | hpux* | solaris | solaris2.[2-9]*) + gl_cv_func_pthread_sigmask_in_libc_works="guessing no";; + *) + gl_cv_func_pthread_sigmask_in_libc_works="guessing yes";; + esac + changequote([,])dnl + ]) + ]) + case "$gl_cv_func_pthread_sigmask_in_libc_works" in + *no) + REPLACE_PTHREAD_SIGMASK=1 + AC_DEFINE([PTHREAD_SIGMASK_INEFFECTIVE], [1], + [Define to 1 if pthread_sigmask may return 0 and have no effect.]) + ;; + esac;; + esac + fi + + dnl On Cygwin 1.7.5, the pthread_sigmask() has a wrong return value + dnl convention: Upon failure, it returns -1 and sets errno. + AC_CACHE_CHECK([whether pthread_sigmask returns error numbers], + [gl_cv_func_pthread_sigmask_return_works], + [ + gl_save_LIBS="$LIBS" + LIBS="$LIBS $LIB_PTHREAD_SIGMASK" + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <pthread.h> +#include <signal.h> +#include <stddef.h> +int main () +{ + sigset_t set; + sigemptyset (&set); + if (pthread_sigmask (1729, &set, NULL) == -1) + return 1; + return 0; +}]])], + [gl_cv_func_pthread_sigmask_return_works=yes], + [gl_cv_func_pthread_sigmask_return_works=no], + [case "$host_os" in + cygwin*) + gl_cv_func_pthread_sigmask_return_works="guessing no";; + *) + gl_cv_func_pthread_sigmask_return_works="guessing yes";; + esac + ]) + LIBS="$gl_save_LIBS" + ]) + case "$gl_cv_func_pthread_sigmask_return_works" in + *no) + REPLACE_PTHREAD_SIGMASK=1 + AC_DEFINE([PTHREAD_SIGMASK_FAILS_WITH_ERRNO], [1], + [Define to 1 if pthread_sigmask(), when it fails, returns -1 and sets errno.]) + ;; + esac + + dnl On IRIX 6.5, in a single-threaded program, pending signals are not + dnl immediately delivered when they are unblocked through pthread_sigmask, + dnl only a little while later. + AC_CACHE_CHECK([whether pthread_sigmask unblocks signals correctly], + [gl_cv_func_pthread_sigmask_unblock_works], + [ + case "$host_os" in + irix*) + gl_cv_func_pthread_sigmask_unblock_works="guessing no";; + *) + gl_cv_func_pthread_sigmask_unblock_works="guessing yes";; + esac + m4_ifdef([gl_][THREADLIB], + [dnl Link against $LIBMULTITHREAD, not only $LIB_PTHREAD_SIGMASK. + dnl Otherwise we get a false positive on those platforms where + dnl $gl_cv_func_pthread_sigmask_in_libc_works is "no". + gl_save_LIBS=$LIBS + LIBS="$LIBS $LIBMULTITHREAD"]) + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <pthread.h> +#include <signal.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +]GL_MDA_DEFINES[ +static volatile int sigint_occurred; +static void +sigint_handler (int sig) +{ + sigint_occurred++; +} +int main () +{ + sigset_t set; + int pid = getpid (); + char command[80]; + signal (SIGINT, sigint_handler); + sigemptyset (&set); + sigaddset (&set, SIGINT); + if (!(pthread_sigmask (SIG_BLOCK, &set, NULL) == 0)) + return 1; + sprintf (command, "sh -c 'sleep 1; kill -%d %d' &", SIGINT, pid); + if (!(system (command) == 0)) + return 2; + sleep (2); + if (!(sigint_occurred == 0)) + return 3; + if (!(pthread_sigmask (SIG_UNBLOCK, &set, NULL) == 0)) + return 4; + if (!(sigint_occurred == 1)) /* This fails on IRIX. */ + return 5; + return 0; +}]])], + [:], + [gl_cv_func_pthread_sigmask_unblock_works=no], + [:]) + m4_ifdef([gl_][THREADLIB], [LIBS=$gl_save_LIBS]) + ]) + case "$gl_cv_func_pthread_sigmask_unblock_works" in + *no) + REPLACE_PTHREAD_SIGMASK=1 + AC_DEFINE([PTHREAD_SIGMASK_UNBLOCK_BUG], [1], + [Define to 1 if pthread_sigmask() unblocks signals incorrectly.]) + ;; + esac + fi +]) + +# Prerequisite of lib/pthread_sigmask.c. +AC_DEFUN([gl_PREREQ_PTHREAD_SIGMASK], +[ + if test $HAVE_PTHREAD_SIGMASK = 1; then + AC_DEFINE([HAVE_PTHREAD_SIGMASK], [1], + [Define to 1 if the pthread_sigmask function can be used (despite bugs).]) + fi +]) diff --git a/gl/po/POTFILES.in b/gl/po/POTFILES.in index e7453095..4e22461c 100644 --- a/gl/po/POTFILES.in +++ b/gl/po/POTFILES.in @@ -260,6 +260,8 @@ gl/lib/printf-parse.c gl/lib/printf-parse.h gl/lib/progname.c gl/lib/progname.h +gl/lib/pselect.c +gl/lib/pthread_sigmask.c gl/lib/raise.c gl/lib/rawmemchr.c gl/lib/rawmemchr.valgrind diff --git a/gl/po/af.po b/gl/po/af.po index 7d57fc1f..3f97c982 100644 --- a/gl/po/af.po +++ b/gl/po/af.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: coreutils 5.2.1\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2004-03-17 11:58+0200\n" "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n" "Language-Team: Afrikaans <i18n@af.org.za>\n" diff --git a/gl/po/be.po b/gl/po/be.po index e36d937b..49593534 100644 --- a/gl/po/be.po +++ b/gl/po/be.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: coreutils 5.0.91\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2003-10-30 01:10+0200\n" "Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n" "Language-Team: Belarusian <i18n@mova.org>\n" @@ -16,8 +16,8 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: KBabel 1.0.2\n" #: gl/lib/argp-help.c:162 diff --git a/gl/po/bg.po b/gl/po/bg.po index e64e8c09..5cbdb596 100644 --- a/gl/po/bg.po +++ b/gl/po/bg.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2020-03-10 09:45+0100\n" "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n" "Language-Team: Bulgarian <dict@ludost.net>\n" diff --git a/gl/po/ca.po b/gl/po/ca.po index ee5994cb..923a3c3a 100644 --- a/gl/po/ca.po +++ b/gl/po/ca.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: mailutils 0.6.90\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2005-05-21 04:10+0200\n" "Last-Translator: Jordi Mallach <jordi@gnu.org>\n" "Language-Team: Catalan <ca@dodds.net>\n" diff --git a/gl/po/cs.po b/gl/po/cs.po index 97461f42..2f4f4585 100644 --- a/gl/po/cs.po +++ b/gl/po/cs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2011-12-04 08:50+0100\n" "Last-Translator: Marek Černocký <marek@manet.cz>\n" "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n" diff --git a/gl/po/da.po b/gl/po/da.po index cd0b70d5..6951ebfc 100644 --- a/gl/po/da.po +++ b/gl/po/da.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 2.0.0.3462.e9796\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2011-01-20 22:11+0100\n" "Last-Translator: Keld Simonsen <keld@keldix.com>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" diff --git a/gl/po/de.po b/gl/po/de.po index f267d88e..0312609f 100644 --- a/gl/po/de.po +++ b/gl/po/de.po @@ -35,7 +35,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU gnulib-4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-05-22 20:00+0200\n" "Last-Translator: Roland Illig <roland.illig@gmx.de>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" diff --git a/gl/po/el.po b/gl/po/el.po index 91185146..44c348f8 100644 --- a/gl/po/el.po +++ b/gl/po/el.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2012-03-11 11:25+0100\n" "Last-Translator: Simos Xenitellis <simos.lists@googlemail.com>\n" "Language-Team: Greek <team@lists.gnome.gr>\n" diff --git a/gl/po/eo.po b/gl/po/eo.po index 74a5c167..7ba7d00f 100644 --- a/gl/po/eo.po +++ b/gl/po/eo.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-05-19 18:26-0300\n" "Last-Translator: Felipe Castro <fefcas@gmail.com>\n" "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" diff --git a/gl/po/es.po b/gl/po/es.po index 0f90a138..4e3f244e 100644 --- a/gl/po/es.po +++ b/gl/po/es.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2011-08-24 11:23-0500\n" "Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n" "Language-Team: Spanish <es@li.org>\n" diff --git a/gl/po/et.po b/gl/po/et.po index 1854fbdc..a95384f8 100644 --- a/gl/po/et.po +++ b/gl/po/et.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 2.0.0.3462.e9796\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2011-05-19 15:10+0300\n" "Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n" "Language-Team: Estonian <linux-ee@lists.eenet.ee>\n" diff --git a/gl/po/eu.po b/gl/po/eu.po index 49191936..a86eccf9 100644 --- a/gl/po/eu.po +++ b/gl/po/eu.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: coreutils-5.2.1\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2005-01-04 20:27+0100\n" "Last-Translator: Mikel Olasagasti <hey_neken@mundurat.net>\n" "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n" diff --git a/gl/po/fi.po b/gl/po/fi.po index dd5289de..f7accabe 100644 --- a/gl/po/fi.po +++ b/gl/po/fi.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-12-26 12:28+0200\n" "Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n" "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n" diff --git a/gl/po/fr.po b/gl/po/fr.po index ba3e1312..9144eac8 100644 --- a/gl/po/fr.po +++ b/gl/po/fr.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib-4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-05-21 20:15+0200\n" "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n" "Language-Team: French <traduc@traduc.org>\n" diff --git a/gl/po/ga.po b/gl/po/ga.po index 5937cf22..e9de21a6 100644 --- a/gl/po/ga.po +++ b/gl/po/ga.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 1.1\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2007-07-20 12:24-0600\n" "Last-Translator: Kevin Scannell <kscanne@gmail.com>\n" "Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n" diff --git a/gl/po/gl.po b/gl/po/gl.po index 5107ba47..2ea167fa 100644 --- a/gl/po/gl.po +++ b/gl/po/gl.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2012-11-11 13:26+0200\n" "Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n" "Language-Team: Galician <proxecto@trasno.net>\n" diff --git a/gl/po/hu.po b/gl/po/hu.po index 8f9f4cdd..21ef6fc0 100644 --- a/gl/po/hu.po +++ b/gl/po/hu.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2014-06-25 19:51+0200\n" "Last-Translator: Balázs Úr <urbalazs@gmail.com>\n" "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n" diff --git a/gl/po/it.po b/gl/po/it.po index 324b5764..e0fb00f6 100644 --- a/gl/po/it.po +++ b/gl/po/it.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib-4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-05-21 14:07+0200\n" "Last-Translator: Milo Casagrande <milo@milo.name>\n" "Language-Team: Italian <tp@lists.linux.it>\n" diff --git a/gl/po/ja.po b/gl/po/ja.po index a8a65276..5410dd65 100644 --- a/gl/po/ja.po +++ b/gl/po/ja.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2011-09-02 18:39+0900\n" "Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n" "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n" diff --git a/gl/po/ko.po b/gl/po/ko.po index ade0f656..2b1fda6c 100644 --- a/gl/po/ko.po +++ b/gl/po/ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU textutils 2.0.22\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2002-07-22 20:02+0900\n" "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n" "Language-Team: Korean <translation-team-ko@lists.sourceforge.net>\n" diff --git a/gl/po/man-db-gnulib.pot b/gl/po/man-db-gnulib.pot index 803b7e4f..c739083b 100644 --- a/gl/po/man-db-gnulib.pot +++ b/gl/po/man-db-gnulib.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: man-db 2.10.1\n" +"Project-Id-Version: man-db 2.10.2\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/gl/po/ms.po b/gl/po/ms.po index c232e7b8..30c0188b 100644 --- a/gl/po/ms.po +++ b/gl/po/ms.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: coreutils 5.0.90\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2003-08-10 16:00+0800\n" "Last-Translator: Hasbullah Bin Pit <sebol@ikhlas.com>\n" "Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n" diff --git a/gl/po/nb.po b/gl/po/nb.po index 221ff0ac..19df6a02 100644 --- a/gl/po/nb.po +++ b/gl/po/nb.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU textutils 2.0.20\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2002-01-27 21:35+0100\n" "Last-Translator: Eivind Tagseth <eivindt@multinet.no>\n" "Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\n" diff --git a/gl/po/nl.po b/gl/po/nl.po index 57146a94..f253b1fa 100644 --- a/gl/po/nl.po +++ b/gl/po/nl.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib-4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-05-29 13:31+0200\n" "Last-Translator: Benno Schulenberg <vertaling@coevern.nl>\n" "Language-Team: Dutch <vertaling@vrijschrift.org>\n" diff --git a/gl/po/pl.po b/gl/po/pl.po index 19c76d35..344b61ab 100644 --- a/gl/po/pl.po +++ b/gl/po/pl.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-05-19 20:02+0200\n" "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" diff --git a/gl/po/pt.po b/gl/po/pt.po index f9a1160e..b8eebd7b 100644 --- a/gl/po/pt.po +++ b/gl/po/pt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-05-26 10:40+0100\n" "Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>\n" "Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n" diff --git a/gl/po/pt_BR.po b/gl/po/pt_BR.po index b5e1f2d5..18b9b8c8 100644 --- a/gl/po/pt_BR.po +++ b/gl/po/pt_BR.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-08-28 15:29-0300\n" "Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n" "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge." diff --git a/gl/po/ro.gmo b/gl/po/ro.gmo Binary files differindex efb10ab0..adb7fb55 100644 --- a/gl/po/ro.gmo +++ b/gl/po/ro.gmo diff --git a/gl/po/ro.po b/gl/po/ro.po index a725f7d5..c7f9c1cb 100644 --- a/gl/po/ro.po +++ b/gl/po/ro.po @@ -13,28 +13,29 @@ # NU și a mesajelor traduse (acestea au rămas neschimbate). # Eliminare a mesajelor ce-au dispărut în ultima versiune. # Actualizări realizate de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 15.01.2022. +# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022. # msgid "" msgstr "" "Project-Id-Version: gnulib-4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" -"PO-Revision-Date: 2022-01-24 23:13+0100\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" +"PO-Revision-Date: 2022-02-19 23:11+0100\n" "Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n" "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2);\n" -"X-Generator: Poedit 2.3.1\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.0.1\n" #: gl/lib/argp-help.c:162 #, c-format msgid "ARGP_HELP_FMT: %s value is less than or equal to %s" -msgstr "" +msgstr "ARGP_HELP_FMT: valoarea %s este mai mică sau egală cu %s" #: gl/lib/argp-help.c:238 #, c-format @@ -57,12 +58,12 @@ msgid "" "optional for any corresponding short options." msgstr "" "Argumentele obligatorii sau opționale pentru opțiunile lungi sunt de " -"asemenea obligatorii sau opționale pentru toate opțiunile scurte " +"asemenea, obligatorii sau opționale pentru oricare dintre opțiunile scurte " "corespunzătoare." #: gl/lib/argp-help.c:1740 msgid "Usage:" -msgstr "Folosire:" +msgstr "Utilizare:" #: gl/lib/argp-help.c:1744 msgid " or: " @@ -73,53 +74,46 @@ msgid " [OPTION...]" msgstr " [OPȚIUNE...]" #: gl/lib/argp-help.c:1783 -#, fuzzy, c-format +#, c-format msgid "Try '%s --help' or '%s --usage' for more information.\n" -msgstr "Încercați `%s --help' sau `%s --usage' pentru mai multe informații.\n" +msgstr "Încercați «%s --help» sau «%s --usage» pentru mai multe informații.\n" #: gl/lib/argp-help.c:1811 #, c-format msgid "Report bugs to %s.\n" -msgstr "Raportați bug-urile la %s.\n" +msgstr "Raportați erorile la %s.\n" #: gl/lib/argp-help.c:2011 gl/lib/error.c:195 -#, fuzzy msgid "Unknown system error" -msgstr "tip de mesaj necunoscut" +msgstr "Eroare de sistem necunoscută" #: gl/lib/argp-parse.c:91 -#, fuzzy msgid "give this help list" -msgstr "Afișează această listă de ajutor" +msgstr "afișează această listă de ajutor" #: gl/lib/argp-parse.c:92 -#, fuzzy msgid "give a short usage message" -msgstr "Afișează un mesaj de folosire scurt" +msgstr "afișează un mesaj scurt de utlizare" #: gl/lib/argp-parse.c:93 msgid "NAME" msgstr "NUME" #: gl/lib/argp-parse.c:94 -#, fuzzy msgid "set the program name" -msgstr "Setează numele programului" +msgstr "stabilește numele programului" #: gl/lib/argp-parse.c:95 -#, fuzzy msgid "SECS" msgstr "SECUNDE" #: gl/lib/argp-parse.c:96 -#, fuzzy msgid "hang for SECS seconds (default 3600)" -msgstr "Întrerupe(hang) pentru SECS secunde (implicit 3600)" +msgstr "întrerupe(hang) pentru acest număr de secunde (implicit 3600)" #: gl/lib/argp-parse.c:154 -#, fuzzy msgid "print program version" -msgstr "Afișează versiunea programului" +msgstr "imprimă versiunea programului" #: gl/lib/argp-parse.c:171 msgid "(PROGRAM ERROR) No version known!?" @@ -135,49 +129,49 @@ msgid "(PROGRAM ERROR) Option should have been recognized!?" msgstr "(EROARE DE PROGRAM) Opțiunea ar fi trebuit recunoscută!?" #: gl/lib/getopt.c:278 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s%s' is ambiguous\n" -msgstr "%s: opțiunea `%s' este ambiguă\n" +msgstr "%s: opțiunea „%s%s” este ambiguă\n" #: gl/lib/getopt.c:284 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s%s' is ambiguous; possibilities:" -msgstr "%s: opțiunea `%s' este ambiguă\n" +msgstr "%s: opțiunea „%s%s” este ambiguă; posibilități:" #: gl/lib/getopt.c:319 -#, fuzzy, c-format +#, c-format msgid "%s: unrecognized option '%s%s'\n" -msgstr "%s: opțiune necunoscută `%c%s'\n" +msgstr "%s: opțiune nerecunoscută „%s%s”\n" #: gl/lib/getopt.c:345 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s%s' doesn't allow an argument\n" -msgstr "%s: opțiunea `%c%s' nu permite argumente\n" +msgstr "%s: opțiunea „%s%s” nu permite un argument\n" #: gl/lib/getopt.c:360 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s%s' requires an argument\n" -msgstr "%s: opțiunea `%s' necesită un argument\n" +msgstr "%s: opțiunea „%s%s” necesită un argument\n" #: gl/lib/getopt.c:621 -#, fuzzy, c-format +#, c-format msgid "%s: invalid option -- '%c'\n" -msgstr "%s: opțiune invalidă -- %c\n" +msgstr "%s: opțiune nevalidă -- „%c”\n" #: gl/lib/getopt.c:636 gl/lib/getopt.c:682 -#, fuzzy, c-format +#, c-format msgid "%s: option requires an argument -- '%c'\n" -msgstr "%s: opțiunea necesită un argument -- %c\n" +msgstr "%s: opțiunea necesită un argument -- „%c”\n" #: gl/lib/openat-die.c:38 #, c-format msgid "unable to record current working directory" -msgstr "" +msgstr "nu s-a putut înregistra directorul de lucru curent" #: gl/lib/openat-die.c:57 #, c-format msgid "failed to return to initial working directory" -msgstr "" +msgstr "întoarcerea la directorul de lucru inițial a eșuat" #: gl/lib/regcomp.c:122 msgid "Success" @@ -185,246 +179,885 @@ msgstr "Succes" #: gl/lib/regcomp.c:125 msgid "No match" -msgstr "" +msgstr "Nicio potrivire" #: gl/lib/regcomp.c:128 -#, fuzzy msgid "Invalid regular expression" -msgstr "Nu există fișier anterior" +msgstr "Expresie regulată nevalidă" #: gl/lib/regcomp.c:131 msgid "Invalid collation character" -msgstr "" +msgstr "Caracter de colaționare nevalid" #: gl/lib/regcomp.c:134 msgid "Invalid character class name" -msgstr "" +msgstr "Nume de clasă de caracter nevalid" #: gl/lib/regcomp.c:137 msgid "Trailing backslash" -msgstr "" +msgstr "Bară oblică inversă la sfârșit" #: gl/lib/regcomp.c:140 -#, fuzzy msgid "Invalid back reference" -msgstr "Număr invalid" +msgstr "Referință anterioară nevalidă" #: gl/lib/regcomp.c:143 msgid "Unmatched [, [^, [:, [., or [=" -msgstr "" +msgstr "[, [^, [:, [., sau [= fără pereche" #: gl/lib/regcomp.c:146 msgid "Unmatched ( or \\(" -msgstr "" +msgstr "( sau \\( fără pereche" #: gl/lib/regcomp.c:149 msgid "Unmatched \\{" -msgstr "" +msgstr "\\{ fără pereche" #: gl/lib/regcomp.c:152 msgid "Invalid content of \\{\\}" -msgstr "" +msgstr "Conținut nevalid al \\{\\}" #: gl/lib/regcomp.c:155 -#, fuzzy msgid "Invalid range end" -msgstr "Tip de dată invalid" +msgstr "Sfârșit de interval nevalid" #: gl/lib/regcomp.c:158 msgid "Memory exhausted" -msgstr "Memorie plină" +msgstr "Memorie epuizată" #: gl/lib/regcomp.c:161 -#, fuzzy msgid "Invalid preceding regular expression" -msgstr "Nu există fișier anterior" +msgstr "Expresie regulată precedentă nevalidă" #: gl/lib/regcomp.c:164 -#, fuzzy msgid "Premature end of regular expression" -msgstr "Nu există fișier anterior" +msgstr "Terminare prematură a expresiei regulate" #: gl/lib/regcomp.c:167 -#, fuzzy msgid "Regular expression too big" -msgstr "Nu există fișier anterior" +msgstr "Expresie regulată prea lungă" #: gl/lib/regcomp.c:170 msgid "Unmatched ) or \\)" -msgstr "" +msgstr ") sau \\) fără pereche" #: gl/lib/regcomp.c:650 -#, fuzzy msgid "No previous regular expression" -msgstr "Nu există fișier anterior" +msgstr "Nu există o expresie regulată precedentă" #: gl/lib/verror.c:76 #, c-format msgid "unable to display error message" -msgstr "" +msgstr "imposibil de afișat mesajul de eroare" #: gl/lib/xalloc-die.c:34 -#, fuzzy msgid "memory exhausted" -msgstr "Memorie plină" +msgstr "memorie epuizată" #: gl/lib/xstdopen.c:34 #, c-format msgid "standard file descriptors" -msgstr "" +msgstr "descriptoare de fișier standard" -#, fuzzy, c-format +#, c-format #~ msgid "invalid argument %s for %s" -#~ msgstr "nume etichetă(tag) invalid `%s' pentru `%s'" +#~ msgstr "argument nevalid %s pentru %s" -#, fuzzy, c-format +#, c-format #~ msgid "ambiguous argument %s for %s" -#~ msgstr "lipsește argumentul pentru %s" +#~ msgstr "argument ambiguu %s pentru %s" -#, fuzzy #~ msgid "Valid arguments are:" -#~ msgstr "argumentele if valide sunt: s | r | t" +#~ msgstr "Argumentele valide sunt:" + +#, c-format +#~ msgid "%u bitset_allocs, %u freed (%.2f%%).\n" +#~ msgstr "%u bitset_allocs, %u eliberat (%.2f%%).\n" + +#, c-format +#~ msgid "%u bitset_sets, %u cached (%.2f%%)\n" +#~ msgstr "%u bitset_sets, %u în memoria tampon (%.2f%%)\n" + +#, c-format +#~ msgid "%u bitset_resets, %u cached (%.2f%%)\n" +#~ msgstr "%u bitset_resets, %u în memoria tampon (%.2f%%)\n" + +#, c-format +#~ msgid "%u bitset_tests, %u cached (%.2f%%)\n" +#~ msgstr "%u bitset_tests, %u în memoria tampon (%.2f%%)\n" + +#, c-format +#~ msgid "%u bitset_lists\n" +#~ msgstr "%u bitset_lists\n" + +# R-GC, scrie: +# ținînd cont de referința acestui mesaj, și a +# următoarelor două +# mesaje(lib/bitset/stats.c), +# am considerat că traducerea mot-a-mot a +# mesajelor(tentantă), nu este cea corectă, +# am început să investighez printre +# traducerile celorlalte echipe, și cred că am +# aflat „dezlegarea misterului”, în traducerea +# făcută de Benno Schulenberg din echipa +# olandeză: +# „histogram van aantal gezette bits” +#~ msgid "count log histogram\n" +#~ msgstr "histograma numărului seturilor de biți»bitset«\n" + +#~ msgid "size log histogram\n" +#~ msgstr "histograma dimensiunilor seturilor de biți»bitset«\n" + +#~ msgid "density histogram\n" +#~ msgstr "histograma densității seturilor de biți»bitset«\n" + +#, c-format +#~ msgid "" +#~ "Bitset statistics:\n" +#~ "\n" +#~ msgstr "" +#~ "Statistici set de biți»bitset«:\n" +#~ "\n" + +#, c-format +#~ msgid "Accumulated runs = %u\n" +#~ msgstr "Cantitatea de execuții = %u\n" -#, fuzzy #~ msgid "cannot read stats file" -#~ msgstr "nu se poate crea mailerul \"%s\"" +#~ msgstr "nu se poate citi fișierul cu statistici" + +#, c-format +#~ msgid "bad stats file size\n" +#~ msgstr "dimensiunea fișierului cu statistici, este necorespunzătoare\n" -#, fuzzy #~ msgid "cannot write stats file" -#~ msgstr "nu se poate crea mailerul \"%s\"" +#~ msgstr "nu se poate scrie fișierul cu statistici" -#, fuzzy #~ msgid "cannot open stats file for writing" -#~ msgstr "nu se poate deschide fișierul de ieșire(output) \"%s\": %s" +#~ msgstr "nu se poate deschide fișierul cu statistici pentru scriere" -#, fuzzy #~ msgid "program error" -#~ msgstr "eroare de interval(range)" +#~ msgstr "eroare de program" -#, fuzzy #~ msgid "stack overflow" -#~ msgstr "subrulare(underflow) a stivei(stack)" - -#, fuzzy, c-format +#~ msgstr "debordare de stivă" + +#~ msgid "cannot find a temporary directory, try setting $TMPDIR" +#~ msgstr "" +#~ "nu se poate găsi un director temporar, încercați să stabiliți variabila " +#~ "$TMPDIR" + +# R-GC, scrie: +# după ce-a revizat fișierul, DȘ îmi spune: +# «→ aici parcă lipsește un „se”, și ar deveni „nu se poate crea...”» +# îmi pare rău, mi se făcuse foame de cuvinte.. +# :) +# - corectare aplicată! +#, c-format #~ msgid "cannot create a temporary directory using template \"%s\"" -#~ msgstr "nu se poate crea iterator: %s" +#~ msgstr "nu se poate crea un director temporar utilizând șablonul „%s”" -#, fuzzy, c-format +#, c-format #~ msgid "cannot remove temporary file %s" -#~ msgstr "nu se poate crea iterator: %s" +#~ msgstr "nu se poate elimina fișierul temporar %s" -#, fuzzy, c-format +#, c-format #~ msgid "cannot remove temporary directory %s" -#~ msgstr "nu se poate crea iterator: %s" +#~ msgstr "nu se poate elimina directorul temporar %s" + +#~ msgid "error closing file" +#~ msgstr "eroare la închiderea fișierului" -#, fuzzy #~ msgid "write error" -#~ msgstr "eroare regex" +#~ msgstr "eroare de scriere" -#, fuzzy, c-format +#, c-format #~ msgid "preserving permissions for %s" -#~ msgstr "Permisiuni greșite la %s. Setați 0600." +#~ msgstr "se păstrează permisiunile pentru %s" -#, fuzzy, c-format +#, c-format +#~ msgid "error while opening %s for reading" +#~ msgstr "eroare la deschiderea lui %s pentru citire" + +#, c-format #~ msgid "cannot open backup file %s for writing" -#~ msgstr "nu se poate deschide fișierul de ieșire(output) \"%s\": %s" +#~ msgstr "nu se poate deschide fișierul de copie de rezervă %s pentru scriere" -#, fuzzy, c-format +#, c-format #~ msgid "error reading %s" -#~ msgstr "eroare la cititrea din fișierul de intrare(input): %s" +#~ msgstr "eroare la citirea din %s" -#, fuzzy, c-format +#, c-format #~ msgid "error writing %s" -#~ msgstr "eroare în scrierea în mailbox: %s" +#~ msgstr "eroare la scrierea în %s" -#, fuzzy, c-format +#, c-format #~ msgid "error after reading %s" -#~ msgstr "eroare la cititrea din fișierul de intrare(input): %s" +#~ msgstr "eroare după citirea %s" -#, fuzzy #~ msgid "fdopen() failed" -#~ msgstr "fork eșuat" +#~ msgstr "fdopen() a eșuat" + +#~ msgid "C# compiler not found, try installing mono" +#~ msgstr "Nu a fost găsit compilatorul C#, încercați să instalați mono" + +#~ msgid "C# virtual machine not found, try installing mono" +#~ msgstr "Nu a fost găsită mașina virtuală C#, încercați să instalați mono" + +#~ msgid "unbalanced [" +#~ msgstr "„[” fără pereche" + +#~ msgid "invalid character class" +#~ msgstr "clasă de caractere nevalidă" + +#~ msgid "character class syntax is [[:space:]], not [:space:]" +#~ msgstr "sintaxa de clasă de caractere este [[:spațiu:]], nu [:spațiu]" + +#~ msgid "unfinished \\ escape" +#~ msgstr "eludare » \\ « neterminată" + +#~ msgid "invalid content of \\{\\}" +#~ msgstr "conținut nevalid al \\{\\}" -#, fuzzy #~ msgid "regular expression too big" -#~ msgstr "Nu există fișier anterior" +#~ msgstr "expresia regulată este prea lungă" + +#~ msgid "unbalanced (" +#~ msgstr "„(” fără pereche" + +#~ msgid "no syntax specified" +#~ msgstr "nu s-a specificat nicio sintaxă" + +#~ msgid "unbalanced )" +#~ msgstr "„)” fără pereche" + +#, c-format +#~ msgid "%s subprocess failed" +#~ msgstr "subprocesul %s a eșuat" + +#~ msgid "regular empty file" +#~ msgstr "fișier gol obișnuit" + +#~ msgid "regular file" +#~ msgstr "fișier obișnuit" + +#~ msgid "directory" +#~ msgstr "director" + +#~ msgid "symbolic link" +#~ msgstr "legătură simbolică" -#, fuzzy #~ msgid "message queue" -#~ msgstr "%d mesaj" +#~ msgstr "coada de mesaje" + +#~ msgid "semaphore" +#~ msgstr "semafor" + +#~ msgid "shared memory object" +#~ msgstr "obiect de memorie partajată" + +# R-GC, scrie: +# investigînd prin: +# - http://www.opengroup.org/onlinepubs/000095399/functions/mmap.html +# și +# - http://www.opengroup.org/austin/papers/posix_faq.html +# am ajuns la această traducere; cu o +# posibilă variantă: +# „obiect de memorie standardizat” +# ********* +# Ideile sunt binevenite...! +#~ msgid "typed memory object" +#~ msgstr "obiect de memorie tipizat" + +#~ msgid "block special file" +#~ msgstr "fișier special de blocuri" + +#~ msgid "character special file" +#~ msgstr "fișier special de caractere" + +#~ msgid "contiguous data" +#~ msgstr "date contigue" + +#~ msgid "fifo" +#~ msgstr "primul intrat, primul ieșit(fifo)" + +# R-GC, scrie: +# informații culese de la: +# https://en.wikipedia.org/wiki/Unix_file_types#Door (adresă obținută din +# comentariul făcut de Rafael Fontenelle, din +# echipa braziliană, în fișierul «gnulib-*.pt_BR.po») +# și de la: +# https://en.wikipedia.org/wiki/Doors_(computing) (adresă obținută prin +# amabilitatea lui Jim Meyering, unul din +# „băieții” din spatele proiectului «diffutils») +#~ msgid "door" +#~ msgstr "poartă(de comunicare)" + +#~ msgid "multiplexed block special file" +#~ msgstr "fișier special de blocuri, multiplexat" + +#~ msgid "multiplexed character special file" +#~ msgstr "fișier special de caractere, multiplexat" + +#~ msgid "multiplexed file" +#~ msgstr "fișier multiplexat" + +#~ msgid "named file" +#~ msgstr "fișier numit" + +#~ msgid "network special file" +#~ msgstr "fișier special de rețea" + +#~ msgid "migrated file with data" +#~ msgstr "fișier migrat cu date" + +#~ msgid "migrated file without data" +#~ msgstr "fișier migrat fără date" + +#~ msgid "port" +#~ msgstr "port" + +#~ msgid "socket" +#~ msgstr "soclu" + +# R-GC, scrie: +# am găsit aici: +# https://en.wikipedia.org/wiki/Union_mount +# date despre «whiteout», folosit de UnionFS +#~ msgid "whiteout" +#~ msgstr "whiteout" + +#~ msgid "weird file" +#~ msgstr "fișier ciudat" + +#~ msgid "Address family for hostname not supported" +#~ msgstr "Familia de adrese pentru numele de gazdă nu este suportată" + +#~ msgid "Temporary failure in name resolution" +#~ msgstr "Eșec temporar în rezolvarea numelui" + +#~ msgid "Bad value for ai_flags" +#~ msgstr "Valoare greșită pentru ai_flags" + +#~ msgid "Non-recoverable failure in name resolution" +#~ msgstr "Eșec nerecuperabil în rezolvarea numelui" + +#~ msgid "ai_family not supported" +#~ msgstr "ai_family nu este suportat" -#, fuzzy #~ msgid "Memory allocation failure" -#~ msgstr "Operațiune eșuată" +#~ msgstr "Eșec la alocarea memoriei" + +#~ msgid "No address associated with hostname" +#~ msgstr "Nicio adresă asociată cu numele gazdei" + +#~ msgid "Name or service not known" +#~ msgstr "Nume sau serviciu necunoscut" + +#~ msgid "Servname not supported for ai_socktype" +#~ msgstr "Nume de server nesuportat pentru ai_socktype" + +#~ msgid "ai_socktype not supported" +#~ msgstr "ai_socktype nu este suportat" -#, fuzzy #~ msgid "System error" -#~ msgstr "eroare regex" +#~ msgstr "Eroare de sistem" + +#~ msgid "Argument buffer too small" +#~ msgstr "Memoria tampon pentru argumente este prea mică" + +#~ msgid "Processing request in progress" +#~ msgstr "Procesarea cererii este în curs" + +#~ msgid "Request canceled" +#~ msgstr "Cerere anulată" + +#~ msgid "Request not canceled" +#~ msgstr "Cerere neanulată" + +#~ msgid "All requests done" +#~ msgstr "Toate cererile au fost procesate" + +# R-GC, scrie: +# o altă variantă, ar fi: +# „Întrerupt printr-un semnal” +# bănuiesc că se referă la un proces sau +# un program. +# Idei ? +#~ msgid "Interrupted by a signal" +#~ msgstr "Întrerupt de un semnal" + +# R-GC, scrie: +# după ce-a revizat fișierul, DȘ îmi spune: +# «→ ar fi de evitat folosirea lui „e” în loc de „este”» +# corecție aplicată!; încă o dată, foamea :) , +# de data asta, de litere +#~ msgid "Parameter string not correctly encoded" +#~ msgstr "Șirul parametrului este codificat greșit" -#, fuzzy #~ msgid "Unknown error" -#~ msgstr "Escape necunoscut %s" +#~ msgstr "Eroare necunoscută" + +#~ msgid "invalid source_version argument to compile_java_class" +#~ msgstr "argumentul source_version nu este valid pentru compile_java_class" + +#~ msgid "invalid target_version argument to compile_java_class" +#~ msgstr "argumentul target_version nu este valid pentru compile_java_class" -#, fuzzy, c-format +#, c-format +#~ msgid "failed to create \"%s\"" +#~ msgstr "nu s-a putut crea \"%s\"" + +#, c-format #~ msgid "error while writing \"%s\" file" -#~ msgstr "eroare în scrierea în mailbox: %s" +#~ msgstr "eroare în timpul scrierii fișierului „%s”" -#, fuzzy, c-format +#~ msgid "Java compiler not found, try installing gcj or set $JAVAC" +#~ msgstr "" +#~ "Nu a fost găsit compilatorul Java, încercați să instalați gcj sau " +#~ "stabiliți variabila $JAVAC" + +#~ msgid "Java virtual machine not found, try installing gij or set $JAVA" +#~ msgstr "" +#~ "Nu a fost găsită mașina virtuală Java, încercați să instalați gij sau " +#~ "stabiliți variabila $JAVA" + +#, c-format +#~ msgid "%s subprocess I/O error" +#~ msgstr "eroare de In/Ieș a subprocesului %s" + +#, c-format #~ msgid "cannot stat %s" -#~ msgstr "nu se poate crea mailerul \"%s\"" +#~ msgstr "nu se poate obține starea lui „%s”" -#, fuzzy, c-format +#, c-format #~ msgid "cannot change permissions of %s" -#~ msgstr "Permisiuni greșite la %s. Setați 0600." +#~ msgstr "nu se pot schimba permisiunile pentru %s" -#, fuzzy, c-format +#, c-format #~ msgid "cannot create directory %s" -#~ msgstr "nu se poate crea iterator: %s" +#~ msgstr "nu se poate crea directorul %s" -#, fuzzy, c-format +#~ msgid "Failed to open /dev/zero for read" +#~ msgstr "Nu s-a putut deschide „/dev/zero” pentru citire" + +#~ msgid "creation of reading thread failed" +#~ msgstr "crearea firului de citire a eșuat" + +#, c-format +#~ msgid "cannot set up nonblocking I/O to %s subprocess" +#~ msgstr "nu se poate configura In/Ieș neblocante la subprocesul %s" + +#, c-format +#~ msgid "communication with %s subprocess failed" +#~ msgstr "comunicarea cu subprocesul %s a eșuat" + +#, c-format +#~ msgid "write to %s subprocess failed" +#~ msgstr "scrierea în subprocesul %s a eșuat" + +#, c-format +#~ msgid "read from %s subprocess failed" +#~ msgstr "citirea din subprocesul %s a eșuat" + +#, c-format +#~ msgid "subprocess %s terminated with exit code %d" +#~ msgstr "subprocesul %s a terminat cu codul de ieșire %d" + +#~ msgid "creation of threads failed" +#~ msgstr "crearea firelor a eșuat" + +#, c-format +#~ msgid "%s subprocess terminated with exit code %d" +#~ msgstr "subprocesul %s a terminat cu codul de ieșire %d" + +#~ msgid "`" +#~ msgstr "„" + +#~ msgid "'" +#~ msgstr "”" + +#~ msgid "^[yY]" +#~ msgstr "^[dDyY]" + +#~ msgid "^[nN]" +#~ msgstr "^[nN]" + +#, c-format #~ msgid "setting permissions for %s" -#~ msgstr "Permisiuni greșite la %s. Setați 0600." +#~ msgstr "se stabilesc permisiunile pentru %s" + +# R-GC, scrie: +# - http://en.wikipedia.org/wiki/SIGHUP +# aici, la sfîrșitul articolului, explicația/moti- +# vația pentru traducerea aleasă. +#~ msgid "Hangup" +#~ msgstr "Terminare anormală(Hangup)" + +#~ msgid "Interrupt" +#~ msgstr "Întrerupe" + +#~ msgid "Quit" +#~ msgstr "Termină" + +#~ msgid "Illegal instruction" +#~ msgstr "Instrucțiune ilegală" + +#~ msgid "Trace/breakpoint trap" +#~ msgstr "Capturare punct de întrerupere/traseul(execuției)" + +#~ msgid "Aborted" +#~ msgstr "Renuțare" + +#~ msgid "Floating point exception" +#~ msgstr "Excepție de virgulă mobilă" + +#~ msgid "Killed" +#~ msgstr "Omorît" -#, fuzzy #~ msgid "Bus error" -#~ msgstr "eroare regex" +#~ msgstr "Eroare de magistrală de date(bus)" + +#~ msgid "Segmentation fault" +#~ msgstr "Eroare de segmentare" + +# R-GC, scrie: +# mi s-a părut cea mai bună descriere a +# termenilor din mesaj. +# - Idei? +#~ msgid "Broken pipe" +#~ msgstr "Linie de conectare întreruptă" + +#~ msgid "Alarm clock" +#~ msgstr "Ceas cu alarmă" + +#~ msgid "Terminated" +#~ msgstr "Terminat" + +#~ msgid "Urgent I/O condition" +#~ msgstr "Condiție In/Ieș urgentă" + +#~ msgid "Stopped (signal)" +#~ msgstr "Oprit (semnal)" + +#~ msgid "Stopped" +#~ msgstr "Oprit" + +#~ msgid "Continued" +#~ msgstr "Continuare" + +#~ msgid "Child exited" +#~ msgstr "Procesul copil a terminat" + +#~ msgid "Stopped (tty input)" +#~ msgstr "Oprit (intrare tty)" + +#~ msgid "Stopped (tty output)" +#~ msgstr "Oprit (ieșire tty)" + +#~ msgid "I/O possible" +#~ msgstr "In/Ieș posibilă" + +#~ msgid "CPU time limit exceeded" +#~ msgstr "S-a depășit limita de timp CPU" + +#~ msgid "File size limit exceeded" +#~ msgstr "S-a depășit limita de dimensiune a fișierului" + +#~ msgid "Virtual timer expired" +#~ msgstr "Cronometrul virtual a expirat" + +#~ msgid "Profiling timer expired" +#~ msgstr "Cronometrul de creare a profilului a expirat" + +#~ msgid "Window changed" +#~ msgstr "Fereastra s-a schimbat" + +#~ msgid "User defined signal 1" +#~ msgstr "Semnalul »1« definit de utilizator" + +#~ msgid "User defined signal 2" +#~ msgstr "Semnalul »2« definit de utilizator" + +# R-GC, scrie: +# Traducere „copiată” de la italieni, cu +# explicația aferentă: +# http://en.wikipedia.org/wiki/SIGEMT +#~ msgid "EMT trap" +#~ msgstr "Detectare EMT" + +#~ msgid "Bad system call" +#~ msgstr "Apel de sistem greșit" + +#~ msgid "Stack fault" +#~ msgstr "Eroare de stivă" + +#~ msgid "Information request" +#~ msgstr "Cerere de informații" + +#~ msgid "Power failure" +#~ msgstr "Pană de curent" + +#~ msgid "Resource lost" +#~ msgstr "Resursă pierdută" + +#~ msgid "error writing to a closed pipe or socket" +#~ msgstr "" +#~ "eroare de scriere într-o linie de conectare închisă sau într-un soclu " +#~ "închis" -#, fuzzy #~ msgid "cannot create pipe" -#~ msgstr "nu se poate crea mailerul \"%s\"" +#~ msgstr "nu se poate crea linia de conectare" + +#, c-format +#~ msgid "Real-time signal %d" +#~ msgstr "Semnal în timp real %d" + +#, c-format +#~ msgid "Unknown signal %d" +#~ msgstr "Semnal necunoscut %d" + +#~ msgid "Execution times (seconds)" +#~ msgstr "Timpi de execuție (secunde)" + +#~ msgid "CPU user" +#~ msgstr "CPU utilizator" + +#~ msgid "CPU system" +#~ msgstr "CPU sistem" + +# R-GC, scrie: +# traducere inspirată în munca echipelor +# italiene și olandeze; traducerea mot-a-mot: +# „ceas de perete”, nu mă convingea, Acum, +# realizez că intenția autorului era de: +# ceas etalon(aproximativ ca GMT). +#~ msgid "wall clock" +#~ msgstr "timpul real" + +#~ msgid "iconv function not usable" +#~ msgstr "funcție «iconv» inutilizabilă" + +#~ msgid "iconv function not available" +#~ msgstr "funcție «iconv» indisponibilă" + +#~ msgid "character out of range" +#~ msgstr "caracter în afara intervalului" + +# R-GC, scrie: +# varianta inițială, a traducerii acestui mesaj, +# era: +# „"U+%04X nu poate fi convertit în setul de caractere local” +#, c-format +#~ msgid "cannot convert U+%04X to local character set" +#~ msgstr "nu se poate converti U+%04X în setul de caractere local" + +#, c-format +#~ msgid "cannot convert U+%04X to local character set: %s" +#~ msgstr "nu se poate converti U+%04X în setul de caractere local: %s" -#, fuzzy #~ msgid "invalid user" -#~ msgstr "Număr invalid" +#~ msgstr "utilizator nevalid" -#, fuzzy #~ msgid "invalid group" -#~ msgstr "Deschide grup" +#~ msgstr "grup nevalid" -#, fuzzy #~ msgid "invalid spec" -#~ msgstr "Număr invalid" +#~ msgstr "specificație nevalidă" + +#, c-format +#~ msgid "Packaged by %s (%s)\n" +#~ msgstr "Împachetat de %s (%s)\n" + +#, c-format +#~ msgid "Packaged by %s\n" +#~ msgstr "Împachetat de %s\n" + +#~ msgid "(C)" +#~ msgstr "©" + +#, c-format +#~ msgid "" +#~ "License GPLv3+: GNU GPL version 3 or later <%s>.\n" +#~ "This is free software: you are free to change and redistribute it.\n" +#~ "There is NO WARRANTY, to the extent permitted by law.\n" +#~ msgstr "" +#~ "Licența GPLv3+: GNU GPL versiunea 3 sau mai mare <%s>.\n" +#~ "Acesta este software liber: sunteți liber să îl modificați și să îl " +#~ "redistribuiți.\n" +#~ "NU există NICIO GARANȚIE, în măsura permisă de lege.\n" + +#, c-format +#~ msgid "Written by %s.\n" +#~ msgstr "Scris de %s.\n" + +#, c-format +#~ msgid "Written by %s and %s.\n" +#~ msgstr "Scris de %s și %s.\n" + +#, c-format +#~ msgid "Written by %s, %s, and %s.\n" +#~ msgstr "Scris de %s, %s și %s.\n" + +#, c-format +#~ msgid "" +#~ "Written by %s, %s, %s,\n" +#~ "and %s.\n" +#~ msgstr "" +#~ "Scris de %s, %s, %s\n" +#~ "și %s.\n" + +#, c-format +#~ msgid "" +#~ "Written by %s, %s, %s,\n" +#~ "%s, and %s.\n" +#~ msgstr "" +#~ "Scris de %s, %s, %s,\n" +#~ "%s, și %s.\n" + +#, c-format +#~ msgid "" +#~ "Written by %s, %s, %s,\n" +#~ "%s, %s, and %s.\n" +#~ msgstr "" +#~ "Scris de %s, %s, %s,\n" +#~ "%s, %s, și %s.\n" -#, fuzzy, c-format +#, c-format +#~ msgid "" +#~ "Written by %s, %s, %s,\n" +#~ "%s, %s, %s, and %s.\n" +#~ msgstr "" +#~ "Scris de %s, %s, %s,\n" +#~ "%s, %s, %s, și %s.\n" + +#, c-format +#~ msgid "" +#~ "Written by %s, %s, %s,\n" +#~ "%s, %s, %s, %s,\n" +#~ "and %s.\n" +#~ msgstr "" +#~ "Scris de %s, %s, %s,\n" +#~ "%s, %s, %s, %s,\n" +#~ "și %s.\n" + +#, c-format +#~ msgid "" +#~ "Written by %s, %s, %s,\n" +#~ "%s, %s, %s, %s,\n" +#~ "%s, and %s.\n" +#~ msgstr "" +#~ "Scris de %s, %s, %s,\n" +#~ "%s, %s, %s, %s,\n" +#~ "%s, și %s.\n" + +#, c-format +#~ msgid "" +#~ "Written by %s, %s, %s,\n" +#~ "%s, %s, %s, %s,\n" +#~ "%s, %s, and others.\n" +#~ msgstr "" +#~ "Scris de %s, %s, %s,\n" +#~ "%s, %s, %s, %s,\n" +#~ "%s, %s, și alții.\n" + +#, c-format #~ msgid "Report bugs to: %s\n" -#~ msgstr "Raportați bug-urile la %s.\n" +#~ msgstr "Raportați erorile la %s.\n" -#, fuzzy, c-format +#, c-format #~ msgid "Report %s bugs to: %s\n" -#~ msgstr "Raportați bug-urile la %s.\n" +#~ msgstr "Raportați erorile %s la: %s\n" + +#, c-format +#~ msgid "%s home page: <%s>\n" +#~ msgstr "%s pagina principală: <%s>\n" + +#, c-format +#~ msgid "General help using GNU software: <%s>\n" +#~ msgstr "Ajutor general utilizând software GNU: <%s>\n" + +#~ msgid "_open_osfhandle failed" +#~ msgstr "_open_osfhandle a eșuat" + +#, c-format +#~ msgid "cannot restore fd %d: dup2 failed" +#~ msgstr "nu se poate restaura fd %d: dup2 a eșuat" + +#, c-format +#~ msgid "%s subprocess" +#~ msgstr "subprocesul %s" + +#, c-format +#~ msgid "%s subprocess got fatal signal %d" +#~ msgstr "subprocesul %s a primit semnalul fatal %d" + +# R_GC, scrie: +# altă posibilă traducere a mesajului, ar fi: +# „nu s-a putut stabili modul de text/binar al descriptorului de fișier” +# Opinii/Idei ? +# =========================== +# La sugestia făcută de DȘ, după revizarea +# fișierului, a rămas mesaj valabil, traducerea +# inițială a mesajului: +# „nu s-a putut stabili descriptorul de fișier în modul text/binar” +#~ msgid "failed to set file descriptor text/binary mode" +#~ msgstr "nu s-a putut stabili descriptorul de fișier în modul text/binar" + +#~ msgid "stdin" +#~ msgstr "stdin»intrarea standard«" + +#~ msgid "stdout" +#~ msgstr "stdout»ieșirea standard«" + +#~ msgid "stderr" +#~ msgstr "stderr»ieșirea standard de erori«" -#, fuzzy #~ msgid "unknown stream" -#~ msgstr "tip de mesaj necunoscut" +#~ msgstr "flux necunoscut" + +#, c-format +#~ msgid "failed to reopen %s with mode %s" +#~ msgstr "nu s-a putut redeschide %s în modul %s" -#, fuzzy #~ msgid "string comparison failed" -#~ msgstr "Autentificare eșuată" +#~ msgstr "compararea șirurilor a eșuat" + +#~ msgid "Set LC_ALL='C' to work around the problem." +#~ msgstr "Stabiliți LC_ALL='C' pentru a rezolva problema." -#, fuzzy, c-format +#, c-format +#~ msgid "The strings compared were %s and %s." +#~ msgstr "Șirurile comparate au fost %s și %s." + +#~ msgid "cannot perform formatted output" +#~ msgstr "nu se poate afișa ieșirea formatată" + +# R-GC, scrie: +# traducerea acestui mesaj, și a celor două +# mesaje următoare, a fost inspirată de +# traducerile făcute de echipa italiană și cea +# spaniolă. +# Colegul de TP al echipei italiene, motivează +# astfel traducerea făcută: +# ========================= +# „(ndt)»italian« +# quello che viene sostituito pare sia: +# * il primo, hypens (con valore '--') +# * il secondo, option +# * il terzo, arg +# quindi qualche cosa del genere: +# invalid --option argument 'arg' +# # +# (altre idee sono benvenute!)” +#, c-format #~ msgid "invalid %s%s argument '%s'" -#~ msgstr "nume etichetă(tag) invalid `%s' pentru `%s'" +#~ msgstr "argumentul „%3$s” al %1$s%2$s nu este valid" -#, fuzzy, c-format +#, c-format #~ msgid "invalid suffix in %s%s argument '%s'" -#~ msgstr "nume etichetă(tag) invalid `%s' pentru `%s'" +#~ msgstr "sufixul din argumentul „%3$s” al %1$s%2$s nu este valid" + +#, c-format +#~ msgid "%s%s argument '%s' too large" +#~ msgstr "argumentul „%3$s” al %1$s%2$s este prea lung" diff --git a/gl/po/ru.po b/gl/po/ru.po index 85742aa9..b125b96c 100644 --- a/gl/po/ru.po +++ b/gl/po/ru.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-05-21 18:46+0300\n" "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n" "Language-Team: Russian <gnu@d07.ru>\n" @@ -17,8 +17,8 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 2.0\n" #: gl/lib/argp-help.c:162 diff --git a/gl/po/rw.po b/gl/po/rw.po index ee93abdd..4f67b440 100644 --- a/gl/po/rw.po +++ b/gl/po/rw.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: mailutils 0.6\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2005-04-04 10:55-0700\n" "Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n" "Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n" diff --git a/gl/po/sk.po b/gl/po/sk.po index 99e641ca..00267205 100644 --- a/gl/po/sk.po +++ b/gl/po/sk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: textutils 2.0.14\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2001-06-08 22:10 +02:00\n" "Last-Translator: Stanislav Meduna <stano@trillian.eunet.sk>\n" "Language-Team: Slovak <sk-i18n@rak.isternet.sk>\n" diff --git a/gl/po/sl.po b/gl/po/sl.po index 952df097..f51116fb 100644 --- a/gl/po/sl.po +++ b/gl/po/sl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2012-05-20 13:08+0200\n" "Last-Translator: Primož Peterlin <primozz.peterlin@gmail.com>\n" "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n" @@ -17,8 +17,8 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" -"%100==4 ? 3 : 0);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || " +"n%100==4 ? 3 : 0);\n" #: gl/lib/argp-help.c:162 #, c-format diff --git a/gl/po/sr.po b/gl/po/sr.po index 40593d24..84ed5e69 100644 --- a/gl/po/sr.po +++ b/gl/po/sr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib-4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2020-04-20 09:38+0200\n" "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n" "Language-Team: Serbian <(nothing)>\n" @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Virtaal 0.7.1\n" "X-Bugs: Report translation errors to the Language-Team address.\n" diff --git a/gl/po/sv.po b/gl/po/sv.po index cceb5a7a..4fba6689 100644 --- a/gl/po/sv.po +++ b/gl/po/sv.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2020-05-28 21:40+0200\n" "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n" "Language-Team: Swedish <tp-sv-list@lists.sourceforge.net>\n" diff --git a/gl/po/tr.po b/gl/po/tr.po index 225e2089..dc745541 100644 --- a/gl/po/tr.po +++ b/gl/po/tr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: coreutils 5.3.0\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2005-03-14 04:17+0200\n" "Last-Translator: Deniz Akkus Kanca <deniz@arayan.com>\n" "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n" diff --git a/gl/po/uk.po b/gl/po/uk.po index 9e5af2fa..f6200e9c 100644 --- a/gl/po/uk.po +++ b/gl/po/uk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-05-19 14:26+0300\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n" @@ -17,8 +17,8 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 19.03.70\n" #: gl/lib/argp-help.c:162 @@ -793,8 +793,8 @@ msgstr "стандартні дескриптори файлів" #~ "This is free software: you are free to change and redistribute it.\n" #~ "There is NO WARRANTY, to the extent permitted by law.\n" #~ msgstr "" -#~ "Умови ліцензування викладено у GPLv3+: GNU GPL версії 3 або новішій, <" -#~ "%s>\n" +#~ "Умови ліцензування викладено у GPLv3+: GNU GPL версії 3 або новішій, " +#~ "<%s>\n" #~ "Це вільне програмне забезпечення: ви можете вільно змінювати і поширювати " #~ "його.\n" #~ "Вам не надається ЖОДНИХ ГАРАНТІЙ, окрім гарантій передбачених " diff --git a/gl/po/vi.po b/gl/po/vi.po index 1804389a..5c825559 100644 --- a/gl/po/vi.po +++ b/gl/po/vi.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib-3.0.0.6062.a6b16\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2014-01-13 08:31+0700\n" "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" diff --git a/gl/po/zh_CN.po b/gl/po/zh_CN.po index d213851d..0be59fbd 100644 --- a/gl/po/zh_CN.po +++ b/gl/po/zh_CN.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 2.0.0.3462.e9796\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2010-02-26 09:54+0800\n" "Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" diff --git a/gl/po/zh_TW.po b/gl/po/zh_TW.po index 39059cc2..d7003626 100644 --- a/gl/po/zh_TW.po +++ b/gl/po/zh_TW.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: gnulib 4.0.0.2567\n" "Report-Msgid-Bugs-To: bug-gnulib@gnu.org\n" -"POT-Creation-Date: 2022-02-10 11:38+0000\n" +"POT-Creation-Date: 2022-03-17 18:46+0000\n" "PO-Revision-Date: 2019-12-15 13:01+0800\n" "Last-Translator: pan93412 <pan93412@gmail.com>\n" "Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n" |