This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: upgrade problem


Ben Collins <bcollins@debian.org> writes:


[...]

> BTW, for the record, the patch I plan on using is attached. Note the other
> half of making it work is in the package install/upgrade scripts (which is
> of little concern to the list, so I wont bore anyone with it).
> 
> Ben

--- glibc22/nss/nsswitch.c~	Fri Mar 31 15:38:32 2000
+++ glibc22/nss/nsswitch.c	Thu Nov  9 17:28:45 2000
@@ -333,9 +333,20 @@
 	      ni->library->lib_handle = __libc_dlopen (shlib_name);
 	      if (ni->library->lib_handle == NULL)
 		{
-		  /* Failed to load the library.  */
-		  ni->library->lib_handle = (void *) -1l;
-		  __set_errno (saved_errno);
+		  /* Failed to load the library. Try a fallback.  */
+		  int n = __snprintf(shlib_name, shlen, "libnss_%s.so.%d.%d",
+				   ni->library->name, __GLIBC__, __GLIBC_MINOR__);

With the current naming scheme, it should be:

+		  int n = __snprintf(shlib_name, shlen, "libnss_%s-%d.%d.so",
+				   ni->library->name, __GLIBC__, __GLIBC_MINOR__);


+		  if (n >= shlen)
+		    ni->library->lib_handle = NULL;
+		  else
+		    ni->library->lib_handle = __libc_dlopen (shlib_name);
+
+		  if (ni->library->lib_handle == NULL)
+		    {
+		      /* Ok, really fail now.  */
+		      ni->library->lib_handle = (void *) -1l;
+		      __set_errno (saved_errno);
+		    }
 		}
 	    }

-- 
Fred - May the source be with you


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]