[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[commits] r13537 - in /fsf/trunk/libc: ChangeLog elf/elf.h nss/Makefile nss/Versions nss/nss_files/files-initgroups.c po/ru.po



Author: eglibc
Date: Wed Apr 20 00:03:07 2011
New Revision: 13537

Log:
Import glibc-mainline for 2011-04-20

Added:
    fsf/trunk/libc/nss/nss_files/files-initgroups.c
Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/elf/elf.h
    fsf/trunk/libc/nss/Makefile
    fsf/trunk/libc/nss/Versions
    fsf/trunk/libc/po/ru.po

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Wed Apr 20 00:03:07 2011
@@ -1,3 +1,18 @@
+2011-04-19  Ulrich Drepper  <drepper@xxxxxxxxx>
+
+	* nss/nss_files/files-initgroups.c: New file.
+	* nss/Makefile (libnss_files-routines): Add files-initgroups.
+	* nss/Versions (libnss_files) [GLIBC_PRIVATE]: Export
+	_nss_files_initgroups_dyn.
+
+2011-03-31  Richard Sandiford  <richard.sandiford@xxxxxxxxxx>
+
+	* elf/elf.h (R_ARM_IRELATIVE): Define.
+
+2011-04-19  Ulrich Drepper  <drepper@xxxxxxxxx>
+
+	* po/ru.po: Update from translation team.
+
 2011-04-17  Ulrich Drepper  <drepper@xxxxxxxxx>
 
 	* sunrpc/Makefile ($(rpc-compat-routines.os)): Add before-compile to

Modified: fsf/trunk/libc/elf/elf.h
==============================================================================
--- fsf/trunk/libc/elf/elf.h (original)
+++ fsf/trunk/libc/elf/elf.h Wed Apr 20 00:03:07 2011
@@ -1,5 +1,5 @@
 /* This file defines standard ELF types, structures, and macros.
-   Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009,2010
+   Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009,2010,2011
 	Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -2359,6 +2359,7 @@
 #define R_ARM_TLS_LE32		108	/* 32 bit offset relative to static
 					   TLS block */
 #define	R_ARM_THM_TLS_DESCSEQ	129
+#define R_ARM_IRELATIVE		160
 #define R_ARM_RXPC25		249
 #define R_ARM_RSBREL32		250
 #define R_ARM_THM_RPC22		251

Modified: fsf/trunk/libc/nss/Makefile
==============================================================================
--- fsf/trunk/libc/nss/Makefile (original)
+++ fsf/trunk/libc/nss/Makefile Wed Apr 20 00:03:07 2011
@@ -64,7 +64,7 @@
 
 
 libnss_files-routines	:= $(addprefix files-,$(databases)) \
-			   files-have_o_cloexec
+			   files-initgroups files-have_o_cloexec
 distribute		+= files-XXX.c files-parse.c
 
 

Modified: fsf/trunk/libc/nss/Versions
==============================================================================
--- fsf/trunk/libc/nss/Versions (original)
+++ fsf/trunk/libc/nss/Versions Wed Apr 20 00:03:07 2011
@@ -95,5 +95,7 @@
     _nss_netgroup_parseline;
     _nss_files_getpublickey;
     _nss_files_getsecretkey;
+
+    _nss_files_initgroups_dyn;
   }
 }

Added: fsf/trunk/libc/nss/nss_files/files-initgroups.c
==============================================================================
--- fsf/trunk/libc/nss/nss_files/files-initgroups.c (added)
+++ fsf/trunk/libc/nss/nss_files/files-initgroups.c Wed Apr 20 00:03:07 2011
@@ -1,0 +1,134 @@
+/* Initgroups handling in nss_files module.
+   Copyright (C) 2011 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <alloca.h>
+#include <errno.h>
+#include <grp.h>
+#include <nss.h>
+#include <stdio_ext.h>
+#include <string.h>
+#include <sys/param.h>
+
+enum nss_status
+_nss_files_initgroups_dyn (const char *user, gid_t group, long int *start,
+			   long int *size, gid_t **groupsp, long int limit,
+			   int *errnop)
+{
+  FILE *stream = fopen ("/etc/group", "re");
+  if (stream == NULL)
+    {
+      *errnop = errno;
+      return *errnop == ENOMEM ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
+    }
+
+  /* No other thread using this stream.  */
+  __fsetlocking (stream, FSETLOCKING_BYCALLER);
+
+  char *line = NULL;
+  size_t linelen = 0;
+  enum nss_status status = NSS_STATUS_SUCCESS;
+
+  size_t buflen = 1024;
+  void *buffer = alloca (buflen);
+  bool buffer_use_malloc = false;
+
+  gid_t *groups = *groupsp;
+
+  /* We have to iterate over the entire file.  */
+  while (!feof_unlocked (stream))
+    {
+      ssize_t n = getline (&line, &linelen, stream);
+      if (n < 0)
+	{
+	  if (! feof_unlocked (stream))
+	    status = ((*errnop = errno) == ENOMEM
+		      ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL);
+	  break;
+	}
+
+      struct group grp;
+      int res;
+      while ((res = _nss_files_parse_grent (line, &grp, buffer, buflen,
+					    errnop)) == -1)
+	{
+	  size_t newbuflen = 2 * buflen;
+	  if (buffer_use_malloc || ! __libc_use_alloca (buflen + newbuflen))
+	    {
+	      char *newbuf = realloc (buffer, buflen);
+	      if (newbuf == NULL)
+		{
+		  *errnop = ENOMEM;
+		  status = NSS_STATUS_TRYAGAIN;
+		  goto out;
+		}
+	      buffer = newbuf;
+	      buflen = newbuflen;
+	      buffer_use_malloc = true;
+	    }
+	  else
+	    buffer = extend_alloca (buffer, buflen, newbuflen);
+	}
+
+      if (res > 0 && grp.gr_gid != group)
+	for (char **m = grp.gr_mem; *m != NULL; ++m)
+	  if (strcmp (*m, user) == 0)
+	    {
+	      /* Matches user.  Insert this group.  */
+	      if (*start == *size)
+		{
+		  /* Need a bigger buffer.  */
+		  if (limit > 0 && *size == limit)
+		    /* We reached the maximum.  */
+		    goto out;
+
+		  long int newsize;
+		  if (limit <= 0)
+		    newsize = 2 * *size;
+		  else
+		    newsize = MIN (limit, 2 * *size);
+
+		  gid_t *newgroups = realloc (groups,
+					      newsize * sizeof (*groups));
+		  if (newgroups == NULL)
+		    {
+		      *errnop = ENOMEM;
+		      status = NSS_STATUS_TRYAGAIN;
+		      goto out;
+		    }
+		  *groupsp = groups = newgroups;
+		  *size = newsize;
+		}
+
+	      groups[*start] = grp.gr_gid;
+	      *start += 1;
+
+	      break;
+	    }
+    }
+
+ out:
+  /* Free memory.  */
+  if (buffer_use_malloc)
+    free (buffer);
+  free (line);
+
+  fclose (stream);
+
+  return status;
+}

Modified: fsf/trunk/libc/po/ru.po
==============================================================================
--- fsf/trunk/libc/po/ru.po (original)
+++ fsf/trunk/libc/po/ru.po Wed Apr 20 00:03:07 2011
@@ -7,19 +7,20 @@
 # Oleg Tihonov <ost@xxxxxxxxxx>, 2005, 2007.
 # Dimitriy Ryazantcev <DJm00n@xxxxxxx>, 2009.
 # Pavel Maryanov <acid_jack@xxxxxxx>, 2009.
-# Yuri Kozlov <yuray@xxxxxxxxxxxx>, 2009.
+# Yuri Kozlov <yuray@xxxxxxxxxxxx>, 2009, 2011.
 msgid ""
 msgstr ""
-"Project-Id-Version: libc 2.9.90\n"
+"Project-Id-Version: libc 2.11.1\n"
 "POT-Creation-Date: 2009-02-06 12:40-0800\n"
-"PO-Revision-Date: 2009-03-07 09:59+0300\n"
+"PO-Revision-Date: 2011-04-18 21:17+0400\n"
 "Last-Translator: Yuri Kozlov <yuray@xxxxxxxxxxxx>\n"
 "Language-Team: Russian <gnu@xxxxx>\n"
+"Language: ru\n"
 "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"
-"X-Generator: KBabel 1.11.4\n"
+"X-Generator: Lokalize 1.0\n"
 
 #: argp/argp-help.c:228
 #, c-format
@@ -267,7 +268,7 @@
 
 #: debug/pcprofiledump.c:53
 msgid "Don't buffer output"
-msgstr "Не буферировать вывод"
+msgstr "Не буферизировать вывод"
 
 #: debug/pcprofiledump.c:58
 msgid "Dump information generated by PC profiling."
@@ -409,17 +410,17 @@
 #: elf/cache.c:411 elf/cache.c:421 elf/cache.c:425 elf/cache.c:430
 #, c-format
 msgid "Writing of cache data failed"
-msgstr "Запись данных кэша неуспешна"
+msgstr "Запись данных кэша завершилась неудачно"
 
 #: elf/cache.c:435
 #, c-format
 msgid "Changing access rights of %s to %#o failed"
-msgstr "Изменение прав доступа для %s на %#o неуспешно"
+msgstr "Изменение прав доступа для %s на %#o завершилось неудачно"
 
 #: elf/cache.c:440
 #, c-format
 msgid "Renaming of %s to %s failed"
-msgstr "Переименование %s в %s неуспешно"
+msgstr "Переименование %s в %s завершилось неудачно"
 
 #: elf/dl-close.c:378 elf/dl-open.c:460
 msgid "cannot create scope list"
@@ -794,7 +795,7 @@
 
 #: elf/ldconfig.c:519
 msgid " (changed)\n"
-msgstr " (именено)\n"
+msgstr " (изменено)\n"
 
 #: elf/ldconfig.c:521
 msgid " (SKIPPED)\n"
@@ -1112,12 +1113,12 @@
 #: elf/sprof.c:555 elf/sprof.c:649
 #, c-format
 msgid "reading of section headers failed"
-msgstr "чтение заголовков секции неуспешно"
+msgstr "чтение заголовков секции завершилось неудачно"
 
 #: elf/sprof.c:563 elf/sprof.c:657
 #, c-format
 msgid "reading of section header string table failed"
-msgstr "чтение строки заголовка секции неуспешно"
+msgstr "чтение строки заголовка секции завершилось неудачно"
 
 #: elf/sprof.c:589
 #, c-format
@@ -1132,7 +1133,7 @@
 #: elf/sprof.c:642
 #, c-format
 msgid "reading of ELF header failed"
-msgstr "считывание заголовка ELF неуспешно"
+msgstr "считывание заголовка ELF завершилось неудачно"
 
 #: elf/sprof.c:678
 #, c-format
@@ -1237,7 +1238,7 @@
 
 #: iconv/iconv_prog.c:65 locale/programs/localedef.c:127
 msgid "Output control:"
-msgstr "Усправление выводом:"
+msgstr "Управление выводом:"
 
 #: iconv/iconv_prog.c:66
 msgid "omit invalid characters from output"
@@ -1412,7 +1413,7 @@
 
 #: inet/rcmd.c:481
 msgid "lstat failed"
-msgstr "lstat неуспешна"
+msgstr "lstat завершился неудачно"
 
 #: inet/rcmd.c:488
 msgid "cannot open"
@@ -1420,7 +1421,7 @@
 
 #: inet/rcmd.c:490
 msgid "fstat failed"
-msgstr "fstat неуспешна"
+msgstr "fstat завершился неудачно"
 
 #: inet/rcmd.c:492
 msgid "bad owner"
@@ -1444,7 +1445,7 @@
 
 #: inet/ruserpass.c:185
 msgid "Remove password or make file unreadable by others."
-msgstr "Удалите пароль или сделайте файл нечитаемым другими."
+msgstr "Удалите пароль или сделайте файл недоступным для чтения другими."
 
 #: inet/ruserpass.c:277
 #, c-format
@@ -1606,7 +1607,7 @@
 
 #: locale/programs/charmap.c:1005 locale/programs/repertoire.c:431
 msgid "hexadecimal range format should use only capital characters"
-msgstr "в шестнадцатиричном формате диапазона следует использовать только заглавные буквы"
+msgstr "в шестнадцатеричном формате диапазона следует использовать только заглавные буквы"
 
 #: locale/programs/charmap.c:1023 locale/programs/repertoire.c:449
 #, c-format
@@ -1897,7 +1898,7 @@
 #: locale/programs/ld-collate.c:3164
 #, c-format
 msgid "%s: unknown character in equivalent definition value"
-msgstr "%s: неизвестный знак в значении определеная эквивалентности"
+msgstr "%s: неизвестный знак в эквиваленте определяемого значения"
 
 #: locale/programs/ld-collate.c:3174
 #, c-format
@@ -2128,7 +2129,7 @@
 
 #: locale/programs/ld-ctype.c:2517
 msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
-msgstr "с UCS-значениями диапазона следует использовать шестнадцатиричный символьный эллипсис «..»"
+msgstr "с UCS-значениями диапазона следует использовать шестнадцатеричный символьный эллипсис «..»"
 
 #: locale/programs/ld-ctype.c:2531
 msgid "with character code range values one must use the absolute ellipsis `...'"
@@ -2175,7 +2176,7 @@
 #: locale/programs/ld-ctype.c:3297 locale/programs/ld-ctype.c:3364
 #, c-format
 msgid "%s: character `%s' in charmap not representable with one byte"
-msgstr "%s: знак «%s» в отображении знаков непредставим одним байтом"
+msgstr "%s: знак «%s» в отображении знаков не представим одним байтом"
 
 #: locale/programs/ld-ctype.c:3408 locale/programs/ld-ctype.c:3433
 #, c-format
@@ -2384,7 +2385,7 @@
 
 #: locale/programs/linereader.c:669
 msgid "non-symbolic character value should not be used"
-msgstr "не стоит использовать несимвольное знаковое значение"
+msgstr "не стоит использовать не символьное знаковое значение"
 
 #: locale/programs/linereader.c:816
 #, c-format
@@ -2688,7 +2689,7 @@
 #: locale/programs/locarchive.c:1148
 #, c-format
 msgid "stat of \"%s\" failed: %s: ignored"
-msgstr "операция stat для «%s» неуспешна: %s: игнорировано"
+msgstr "операция stat для «%s» завершилась неудачно: %s: игнорировано"
 
 #: locale/programs/locarchive.c:1154
 #, c-format
@@ -2788,7 +2789,7 @@
 "\n"
 "%s"
 msgstr ""
-"Владелец устанавлен в текущего пользователя, группа устанавлена в «%s», права доступа устанавлены в «%o».\n"
+"Владелец установлен в текущего пользователя, группа установлена в «%s», права доступа установлены в «%o».\n"
 "\n"
 "%s"
 
@@ -3092,7 +3093,7 @@
 
 #: nis/nis_error.h:36
 msgid "Modify operation failed"
-msgstr "Операция модификации неуспешна"
+msgstr "Операция по изменению завершилась неудачно"
 
 #: nis/nis_error.h:37
 msgid "Query illegal for named table"
@@ -3112,7 +3113,7 @@
 
 #: nis/nis_error.h:41
 msgid "NIS+ operation failed"
-msgstr "Операция NIS+ неуспешна"
+msgstr "Операция NIS+ завершилась неудачно"
 
 #: nis/nis_error.h:42
 msgid "NIS+ service is unavailable or not installed"
@@ -3124,11 +3125,11 @@
 
 #: nis/nis_error.h:44
 msgid "Unable to authenticate NIS+ server"
-msgstr "Не удалось аутенфицировать сервер NIS+"
+msgstr "Не удалось аутентифицировать сервер NIS+"
 
 #: nis/nis_error.h:45
 msgid "Unable to authenticate NIS+ client"
-msgstr "Не удалось аутенфицировать клиент NIS+"
+msgstr "Не удалось аутентифицировать клиент NIS+"
 
 #: nis/nis_error.h:46
 msgid "No file space on server"
@@ -3577,7 +3578,7 @@
 
 #: nis/ypclnt.c:974
 msgid "yp_update: cannot convert host to netname\n"
-msgstr "yp_update: невозможно преобразовать хост в netname\n"
+msgstr "yp_update: невозможно преобразовать узел в сетевое имя\n"
 
 #: nis/ypclnt.c:992
 msgid "yp_update: cannot get server address\n"
@@ -3586,12 +3587,12 @@
 #: nscd/aicache.c:82 nscd/hstcache.c:481
 #, c-format
 msgid "Haven't found \"%s\" in hosts cache!"
-msgstr "Не найдено «%s» в кэше хостов!"
+msgstr "Не найдено «%s» в кэше узлов!"
 
 #: nscd/aicache.c:84 nscd/hstcache.c:483
 #, c-format
 msgid "Reloading \"%s\" in hosts cache!"
-msgstr "Перезагрузка «%s» в кэше хостов!"
+msgstr "Перезагрузка «%s» в кэше узлов!"
 
 #: nscd/cache.c:150
 #, c-format
@@ -3610,7 +3611,7 @@
 #: nscd/cache.c:328
 #, c-format
 msgid "pruning %s cache; time %ld"
-msgstr "очитка %s кэша; время %ld"
+msgstr "очистка %s кэша; время %ld"
 
 #: nscd/cache.c:357
 #, c-format
@@ -4162,7 +4163,7 @@
 #: nscd/selinux.c:178 nscd/selinux.c:241
 #, c-format
 msgid "prctl(KEEPCAPS) failed"
-msgstr "prctl(KEEPCAPS) неуспешна"
+msgstr "prctl(KEEPCAPS) завершился неудачно"
 
 #: nscd/selinux.c:192
 msgid "Failed to initialize drop of capabilities"
@@ -4171,7 +4172,7 @@
 #: nscd/selinux.c:193
 #, c-format
 msgid "cap_init failed"
-msgstr "cap_init неуспешна"
+msgstr "cap_init завершился неудачно"
 
 #: nscd/selinux.c:214 nscd/selinux.c:231
 msgid "Failed to drop capabilities"
@@ -4180,7 +4181,7 @@
 #: nscd/selinux.c:215 nscd/selinux.c:232
 #, c-format
 msgid "cap_set_proc failed"
-msgstr "cap_set_proc неуспешна"
+msgstr "cap_set_proc завершился неудачно"
 
 #: nscd/selinux.c:240
 msgid "Failed to unset keep-capabilities"
@@ -4530,11 +4531,11 @@
 
 #: resolv/herror.c:69
 msgid "Unknown host"
-msgstr "Неизвестный хост"
+msgstr "Неизвестный узел"
 
 #: resolv/herror.c:70
 msgid "Host name lookup failure"
-msgstr "Сбой поиска имени хоста"
+msgstr "Сбой поиска имени узла"
 
 #: resolv/herror.c:71
 msgid "Unknown server error"
@@ -4685,7 +4686,7 @@
 
 #: sunrpc/clnt_perr.c:210
 msgid "RPC: Unknown host"
-msgstr "RPC: Неизвестный хост"
+msgstr "RPC: Неизвестный узел"
 
 #: sunrpc/clnt_perr.c:214
 msgid "RPC: Unknown protocol"
@@ -5077,15 +5078,15 @@
 
 #: sunrpc/rpcinfo.c:691
 msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
-msgstr "Usage: rpcinfo [ -n номер-порта ] -u хост номер-программы [ номер-версии ]\n"
+msgstr "Usage: rpcinfo [ -n номер-порта ] -u узел номер-программы [ номер-версии ]\n"
 
 #: sunrpc/rpcinfo.c:693
 msgid "       rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
-msgstr "       rpcinfo [ -n номер-порта ] -t хост номер-программы [ номер-версии ]\n"
+msgstr "       rpcinfo [ -n номер-порта ] -t узел номер-программы [ номер-версии ]\n"
 
 #: sunrpc/rpcinfo.c:695
 msgid "       rpcinfo -p [ host ]\n"
-msgstr "       rpcinfo -p [ хост ]\n"
+msgstr "       rpcinfo -p [ узел ]\n"
 
 #: sunrpc/rpcinfo.c:696
 msgid "       rpcinfo -b prognum versnum\n"
@@ -5103,7 +5104,7 @@
 #: sunrpc/rpcinfo.c:759
 #, c-format
 msgid "rpcinfo: %s is unknown host\n"
-msgstr "rpcinfo: хост %s неизвестен\n"
+msgstr "rpcinfo: узел %s неизвестен\n"
 
 #: sunrpc/svc_run.c:70
 msgid "svc_run: - out of memory"
@@ -5111,7 +5112,7 @@
 
 #: sunrpc/svc_run.c:90
 msgid "svc_run: - poll failed"
-msgstr "svc_run: -- опрос неуспешен"
+msgstr "svc_run: — опрос завершился неудачно"
 
 #: sunrpc/svc_simple.c:87
 #, c-format
@@ -5767,12 +5768,12 @@
 #. TRANS The remote host for a requested network connection is down.
 #: sysdeps/gnu/errlist.c:726
 msgid "Host is down"
-msgstr "Хост выключен"
+msgstr "Узел выключен"
 
 #. TRANS The remote host for a requested network connection is not reachable.
 #: sysdeps/gnu/errlist.c:735
 msgid "No route to host"
-msgstr "Нет пути до хоста"
+msgstr "Нет маршрута до узла"
 
 #. TRANS Directory not empty, where an empty directory was expected.  Typically,
 #. TRANS this error occurs when you are trying to delete a directory.
@@ -5804,7 +5805,7 @@
 #. TRANS the NFS file system on the local host.
 #: sysdeps/gnu/errlist.c:787
 msgid "Stale NFS file handle"
-msgstr "Устаревший хэндл файла NFS"
+msgstr "Устаревший дескриптор файла NFS"
 
 #. TRANS An attempt was made to NFS-mount a remote file system with a file name that
 #. TRANS already specifies an NFS-mounted file.
@@ -6174,7 +6175,7 @@
 
 #: sysdeps/posix/gai_strerror-strs.h:1
 msgid "Address family for hostname not supported"
-msgstr "Семейство адресов не поддерживается для данного имени хоста"
+msgstr "Семейство адресов не поддерживается для данного имени узла"
 
 #: sysdeps/posix/gai_strerror-strs.h:2
 msgid "Temporary failure in name resolution"
@@ -6198,7 +6199,7 @@
 
 #: sysdeps/posix/gai_strerror-strs.h:7
 msgid "No address associated with hostname"
-msgstr "С именем хоста не связано ни одного адреса"
+msgstr "С именем узла не связано ни одного адреса"
 
 #: sysdeps/posix/gai_strerror-strs.h:8
 msgid "Name or service not known"