Index: BOOK/final-system/common/grep.xml
===================================================================
--- BOOK/final-system/common/grep.xml	(revision 1ac2d0ccb803d1b226c6c9114b5de46889b3be1d)
+++ BOOK/final-system/common/grep.xml	(revision 4c51b38c96efa22c9cc76b11f7993144bff0a5d5)
@@ -25,8 +25,4 @@
   <sect2 role="installation">
     <title>Installation of Grep</title>
-
-    <para os="p1">This patch contains various bug fixes for Grep:</para>
-
-<screen os="p2"><userinput>patch -Np1 -i ../&grep-fixes-patch;</userinput></screen>
 
     <para os="a">Prepare Grep for compilation:</para>
Index: BOOK/final-system/common/shadow.xml
===================================================================
--- BOOK/final-system/common/shadow.xml	(revision 1ac2d0ccb803d1b226c6c9114b5de46889b3be1d)
+++ BOOK/final-system/common/shadow.xml	(revision 4c51b38c96efa22c9cc76b11f7993144bff0a5d5)
@@ -33,4 +33,8 @@
       command below.</para>
     </note>
+
+    <para os="f1">Fix an issue with the Russian man pages:</para>
+
+    <screen os="f2"><userinput>sed -i 's/man_MANS = $(man_nopam) /man_MANS = /' man/ru/Makefile.in</userinput></screen>
 
     <para os="b">Prepare Shadow for compilation:</para>
Index: BOOK/introduction/common/changelog.xml
===================================================================
--- BOOK/introduction/common/changelog.xml	(revision 1ac2d0ccb803d1b226c6c9114b5de46889b3be1d)
+++ BOOK/introduction/common/changelog.xml	(revision 4c51b38c96efa22c9cc76b11f7993144bff0a5d5)
@@ -36,4 +36,16 @@
     </listitem>
 -->
+
+    <listitem>
+      <para>May 26, 2011</para>
+      <itemizedlist>
+        <listitem>
+          <para>[Jonathan] - Upgraded Shadow to 4.1.4.3.</para>
+        </listitem>
+        <listitem>
+          <para>[Jonathan] - Removed old grep patch.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
 
     <listitem>
Index: BOOK/materials/common/patches.xml
===================================================================
--- BOOK/materials/common/patches.xml	(revision 1ac2d0ccb803d1b226c6c9114b5de46889b3be1d)
+++ BOOK/materials/common/patches.xml	(revision 4c51b38c96efa22c9cc76b11f7993144bff0a5d5)
@@ -74,13 +74,4 @@
 
     <varlistentry>
-      <term>Grep Fixes Patch - <token>&grep-fixes-patch-size;</token>:</term>
-      <listitem>
-        <para>Download: <ulink
-        url="&patches-root;&grep-fixes-patch;"/></para>
-        <para>MD5 sum: <literal>&grep-fixes-patch-md5;</literal></para>
-      </listitem>
-    </varlistentry>
-
-    <varlistentry>
       <term>IPUtils Fixes Patch - <token>&iputils-fixes-patch-size;</token>:</term>
       <listitem>
Index: BOOK/packages.ent
===================================================================
--- BOOK/packages.ent	(revision 1ac2d0ccb803d1b226c6c9114b5de46889b3be1d)
+++ BOOK/packages.ent	(revision 4c51b38c96efa22c9cc76b11f7993144bff0a5d5)
@@ -389,8 +389,8 @@
 <!ENTITY sed-home "&gnu-software;sed">
 
-<!ENTITY shadow-version "4.1.4.2">
-<!ENTITY shadow-size "1,748 KB">
+<!ENTITY shadow-version "4.1.4.3">
+<!ENTITY shadow-size "1,804 KB">
 <!ENTITY shadow-url "ftp://pkg-shadow.alioth.debian.org/pub/pkg-shadow/shadow-&shadow-version;.tar.bz2">
-<!ENTITY shadow-md5 "d593a9cab93c48ee0a6ba056db8c1997">
+<!ENTITY shadow-md5 "b8608d8294ac88974f27b20f991c0e79">
 <!ENTITY shadow-home "http://pkg-shadow.alioth.debian.org">
 
Index: BOOK/patches.ent
===================================================================
--- BOOK/patches.ent	(revision 1ac2d0ccb803d1b226c6c9114b5de46889b3be1d)
+++ BOOK/patches.ent	(revision 4c51b38c96efa22c9cc76b11f7993144bff0a5d5)
@@ -32,8 +32,4 @@
 <!ENTITY gcc-branch_update-patch-md5 "3ff1f39dc12932736694bf6fb6a1846a">
 <!ENTITY gcc-branch_update-patch-size "1.5 MB">
-
-<!ENTITY grep-fixes-patch "grep-&grep-version;-fixes-1.patch">
-<!ENTITY grep-fixes-patch-md5 "0cb36684847842adb17a1b3fb96f733d">
-<!ENTITY grep-fixes-patch-size "12 KB">
 
 <!ENTITY iputils-fixes-patch "iputils-&iputils-version;-fixes-1.patch">
Index: tches/grep-2.6.3-fixes-1.patch
===================================================================
--- patches/grep-2.6.3-fixes-1.patch	(revision 1ac2d0ccb803d1b226c6c9114b5de46889b3be1d)
+++ 	(revision )
@@ -1,325 +1,0 @@
-Submitted By: Joe Ciccone
-Date: 2010-08-03
-Initial Package Version: 2.6.3
-Upstream Status: Unknown
-Origin: http://ftp.de.debian.org/debian/pool/main/g/grep/grep_2.6.3-3.debian.tar.bz2
-Description: Various fixes from debian for Grep
-
-diff -Naur grep-2.6.3.orig/NEWS grep-2.6.3/NEWS
---- grep-2.6.3.orig/NEWS	2010-04-02 04:55:33.000000000 -0400
-+++ grep-2.6.3/NEWS	2010-08-03 22:11:08.142326516 -0400
-@@ -1,5 +1,8 @@
- GNU grep NEWS                                    -*- outline -*-
- 
-+  --mmap was meant to be ignored in 2.6.x, but it was instead
-+  removed by mistake.  [bug introduced in 2.6]
-+
- * Noteworthy changes in release 2.6.3 (2010-04-02) [stable]
- 
- ** Bug fixes
-diff -Naur grep-2.6.3.orig/configure grep-2.6.3/configure
---- grep-2.6.3.orig/configure	2010-04-02 04:56:49.000000000 -0400
-+++ grep-2.6.3/configure	2010-08-03 22:11:08.137850711 -0400
-@@ -24372,13 +24372,14 @@
- if test "$ac_res" != no; then :
-   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-   test "$ac_cv_search_pcre_compile" = "none required" ||
--	 LIB_PCRE=$ac_cv_search_pcre_compile
-+	 LIB="-ldl $LIBS"
- fi
- 
-       for ac_func in pcre_compile
- do :
-   ac_fn_c_check_func "$LINENO" "pcre_compile" "ac_cv_func_pcre_compile"
- if test "x$ac_cv_func_pcre_compile" = x""yes; then :
-+  CPPFLAGS="$CPPFLAGS -DHAVE_DYNAMIC_LIBPCRE"
-   cat >>confdefs.h <<_ACEOF
- #define HAVE_PCRE_COMPILE 1
- _ACEOF
-diff -Naur grep-2.6.3.orig/doc/grep.in.1 grep-2.6.3/doc/grep.in.1
---- grep-2.6.3.orig/doc/grep.in.1	2010-04-01 04:15:35.000000000 -0400
-+++ grep-2.6.3/doc/grep.in.1	2010-08-03 22:11:08.137850711 -0400
-@@ -25,7 +25,7 @@
- .hy 0
- .
- .SH NAME
--grep, egrep, fgrep \- print lines matching a pattern
-+grep, egrep, fgrep, rgrep \- print lines matching a pattern
- .
- .SH SYNOPSIS
- .B grep
-@@ -56,10 +56,11 @@
- .B grep
- prints the matching lines.
- .PP
--In addition, two variant programs
--.B egrep
--and
-+In addition, three variant programs
-+.B egrep,
- .B fgrep
-+and
-+.B rgrep
- are available.
- .B egrep
- is the same as
-@@ -67,6 +68,9 @@
- .B fgrep
- is the same as
- .BR "grep\ \-F" .
-+.B rgrep
-+is the same as
-+.BR "grep\ \-r" .
- Direct invocation as either
- .B egrep
- or
-@@ -825,7 +829,7 @@
- is not special if it would be the start of an invalid interval
- specification.
- For example, the command
--.B "grep\ \-E\ '{1'"
-+.B "grep\ \-E\ \(aq{1\(aq"
- searches for the two-character string
- .B {1
- instead of reporting a syntax error in the regular expression.
-@@ -865,7 +869,7 @@
- For example, if
- .B GREP_OPTIONS
- is
--.BR "'\-\^\-binary-files=without-match \-\^\-directories=skip'" ,
-+.BR "\(aq\-\^\-binary-files=without-match \-\^\-directories=skip\(aq" ,
- .B grep
- behaves as if the two options
- .B \-\^\-binary\-files=without-match
-@@ -1160,23 +1164,9 @@
- is not set.
- .
- .SH "EXIT STATUS"
--Normally, the exit status is 0 if selected lines are found and 1 otherwise.
--But the exit status is 2 if an error occurred, unless the
--.B \-q
--or
--.B \-\^\-quiet
--or
--.B \-\^\-silent
--option is used and a selected line is found.
--Note, however, that \s-1POSIX\s0 only mandates, for programs such as
--.BR grep ,
--.BR cmp ,
--and
--.BR diff ,
--that the exit status in case of error be greater than 1;
--it is therefore advisable, for the sake of portability,
--to use logic that tests for this general condition
--instead of strict equality with\ 2.
-+The exit status is 0 if selected lines are found, and 1 if not found.          
-+If an error occurred the exit status is 2.  (Note: POSIX error 
-+handling code should check for '2' or greater.)
- .
- .SH COPYRIGHT
- Copyright 1998-2000, 2002, 2005-2010 Free Software Foundation, Inc.
-diff -Naur grep-2.6.3.orig/po/ca.po grep-2.6.3/po/ca.po
---- grep-2.6.3.orig/po/ca.po	2010-04-02 04:57:08.000000000 -0400
-+++ grep-2.6.3/po/ca.po	2010-08-03 22:11:08.137850711 -0400
-@@ -278,7 +278,7 @@
- #: src/main.c:1165
- #, c-format
- msgid "Binary file %s matches\n"
--msgstr "Concidència en el fitxer binari %s\n"
-+msgstr "Coincidència en el fitxer binari %s\n"
- 
- #: src/main.c:1179
- msgid "(standard input)"
-diff -Naur grep-2.6.3.orig/src/kwset.c grep-2.6.3/src/kwset.c
---- grep-2.6.3.orig/src/kwset.c	2010-04-01 04:15:35.000000000 -0400
-+++ grep-2.6.3/src/kwset.c	2010-08-03 22:11:08.142326516 -0400
-@@ -40,7 +40,7 @@
- #ifdef GREP
- # include "xalloc.h"
- # undef malloc
--# define malloc(s) xmalloc(s)
-+# define malloc xmalloc
- #endif
- 
- #define NCHAR (UCHAR_MAX + 1)
-diff -Naur grep-2.6.3.orig/src/main.c grep-2.6.3/src/main.c
---- grep-2.6.3.orig/src/main.c	2010-04-01 12:52:10.000000000 -0400
-+++ grep-2.6.3/src/main.c	2010-08-03 22:11:08.142326516 -0400
-@@ -266,6 +266,12 @@
- static char const short_options[] =
- "0123456789A:B:C:D:EFGHIPTUVX:abcd:e:f:hiKLlm:noqRrsuvwxyZz";
- 
-+/* Default for `file_list' if no files are given on the command line. */
-+static char *stdin_argv[] =
-+{
-+  "-", NULL
-+};
-+
- /* Non-boolean long options that have no corresponding short equivalents.  */
- enum
- {
-@@ -511,7 +517,16 @@
- 	 for byte sentinels fore and aft.  */
-       newalloc = newsize + pagesize + 1;
- 
--      newbuf = bufalloc < newalloc ? xmalloc (bufalloc = newalloc) : buffer;
-+      newbuf = bufalloc < newalloc ? malloc (bufalloc = newalloc) : buffer;
-+      if (newbuf == NULL)
-+	{
-+	  int saved_errno = errno;
-+	  free (buffer);
-+	  bufalloc = ALIGN_TO (INITIAL_BUFSIZE, pagesize) + pagesize + 1;
-+	  buffer = xmalloc (bufalloc);
-+	  errno = saved_errno;
-+	  return 0;
-+	}
-       readbuf = ALIGN_TO (newbuf + 1 + save, pagesize);
-       bufbeg = readbuf - save;
-       memmove (bufbeg, buffer + saved_offset, save);
-@@ -1739,6 +1754,7 @@
-   int opt, cc, status;
-   int default_context;
-   FILE *fp;
-+  char **file_list;
- 
-   initialize_main (&argc, &argv);
-   set_program_name (argv[0]);
-@@ -2061,6 +2077,7 @@
- 	label = optarg;
- 	break;
- 
-+      case MMAP_OPTION:
-       case 0:
- 	/* long options */
- 	break;
-@@ -2154,29 +2171,29 @@
-   if (max_count == 0)
-     exit (EXIT_FAILURE);
- 
--  if (optind < argc)
-+  file_list = (optind == argc ? stdin_argv : &argv[optind]);
-+
-+  status = 1;
-+  while (1)
-     {
--	status = 1;
--	do
--	{
--	  char *file = argv[optind];
--	  if ((included_patterns || excluded_patterns)
--	      && !isdir (file))
--	    {
--	      if (included_patterns &&
--		  ! excluded_file_name (included_patterns, file))
--		continue;
--	      if (excluded_patterns &&
--		  excluded_file_name (excluded_patterns, file))
--		continue;
--	    }
--	  status &= grepfile (strcmp (file, "-") == 0 ? (char *) NULL : file,
--			      &stats_base);
--	}
--	while ( ++optind < argc);
-+	char *file = *file_list++;
-+
-+	if (file == NULL)
-+	  break;
-+
-+	if ((included_patterns || excluded_patterns)
-+	   && !isdir (file))
-+	  {
-+	    if (included_patterns &&
-+	        ! excluded_file_name (included_patterns, file))
-+	      continue;
-+	    if (excluded_patterns &&
-+	        excluded_file_name (excluded_patterns, file))
-+	      continue;
-+	  }
-+	status &= grepfile (strcmp (file, "-") == 0
-+			   ? (char *) NULL : file, &stats_base);
-     }
--  else
--    status = grepfile ((char *) NULL, &stats_base);
- 
-   /* We register via atexit() to test stdout.  */
-   exit (errseen ? EXIT_TROUBLE : status);
-diff -Naur grep-2.6.3.orig/src/pcresearch.c grep-2.6.3/src/pcresearch.c
---- grep-2.6.3.orig/src/pcresearch.c	2010-04-01 04:15:35.000000000 -0400
-+++ grep-2.6.3/src/pcresearch.c	2010-08-03 22:11:08.137850711 -0400
-@@ -22,8 +22,14 @@
- #include "search.h"
- #if HAVE_PCRE_H
- # include <pcre.h>
-+# ifdef HAVE_DYNAMIC_LIBPCRE
-+#  include <dlfcn.h>
-+# endif
- #elif HAVE_PCRE_PCRE_H
- # include <pcre/pcre.h>
-+# ifdef HAVE_DYNAMIC_LIBPCRE
-+#  include <dlfcn.h>
-+# endif
- #endif
- 
- #if HAVE_LIBPCRE
-@@ -34,6 +40,50 @@
- static pcre_extra *extra;
- #endif
- 
-+#ifdef HAVE_DYNAMIC_LIBPCRE
-+
-+# define pcre_compile dl_pcre_compile
-+# define pcre_study dl_pcre_study
-+# define pcre_exec dl_pcre_exec
-+# define pcre_maketables dl_pcre_maketables
-+
-+static pcre *(*pcre_compile)(const char *pattern, int options,
-+const char **errptr, int *erroffset,
-+                               const unsigned char *tableptr);
-+static pcre_extra *(*pcre_study)(const pcre *code, int options,
-+                                   const char **errptr);
-+static int (*pcre_exec)(const pcre *code, const pcre_extra *extra,
-+                          const char *subject, int length, int startoffset,
-+                          int options, int *ovector, int ovecsize);
-+static const unsigned char *(*pcre_maketables)(void);
-+
-+static int
-+map_pcre(void)
-+{
-+  void *library;
-+
-+  if (pcre_maketables)
-+    return 1;
-+
-+  if (!(library = dlopen("libpcre.so.3", RTLD_NOW)))
-+    return 0;
-+
-+  if (!(pcre_compile = dlsym(library, "pcre_compile")))
-+    return 0;
-+  if (!(pcre_study = dlsym(library, "pcre_study")))
-+    return 0;
-+  if (!(pcre_exec = dlsym(library, "pcre_exec")))
-+    return 0;
-+  if (!(pcre_maketables = dlsym(library, "pcre_maketables")))
-+    return 0;
-+
-+  return 1;
-+}
-+
-+#else
-+#define map_pcre() (1)
-+#endif /* HAVE_DYNAMIC_LIBPCRE */
-+
- void
- Pcompile (char const *pattern, size_t size)
- {
-@@ -51,6 +101,10 @@
-   char const *p;
-   char const *pnul;
- 
-+  if (!map_pcre ())
-+    error (EXIT_TROUBLE, 0, "%s",
-+	   _("The -P option is not supported: libpcre.so.3 is not available"));
-+
-   /* FIXME: Remove these restrictions.  */
-   if (memchr(pattern, '\n', size))
-     error (EXIT_TROUBLE, 0, _("the -P option only supports a single pattern"));
