This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


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

A getxxx_r version patch


Since we changed the return value of getxxx_r, I added a new version
for each function and kept the old one.

-- 
H.J. Lu (hjl@gnu.org)
--
Fri Jul  9 14:36:25 1999  H.J. Lu  <hjl@gnu.org>

	* Versions.def (GLIBC_2.1.2): Added.

	* nss/getXXent_r.c: Make the new ABI GLIBC_2.1.2 and keep the
	old one as GLIBC_2.0.
	* nss/getXXbyYY_r.c: Likewise.

	* grp/Versions (getgrent_r, getgrgid_r, getgrnam_r): Added to
	GLIBC_2.1.2.
	* inet/Versions (getaliasbyname_r, getaliasent_r,
	gethostbyaddr_r, gethostbyname2_r, gethostbyname_r,
	gethostent_r, getnetbyaddr_r, getnetbyname_r, getnetent_r,
	getnetgrent_r, getprotobyname_r, getprotobynumber_r,
	getprotoent_r, getrpcbyname_r, getrpcbynumber_r, getrpcent_r,
	getservbyname_r): Likewise.
	* pwd/Versions (getpwent_r, getpwuid_r): Likewise.
	* shadow/Versions (getspent_r, getspnam_r): Likewise.

Index: Versions.def
===================================================================
RCS file: /work/cvs/gnu/glibc-2.1/Versions.def,v
retrieving revision 1.1.1.5
diff -u -p -r1.1.1.5 Versions.def
--- Versions.def	1999/05/10 15:33:17	1.1.1.5
+++ Versions.def	1999/07/09 20:35:29
@@ -5,6 +5,7 @@ libc {
   GLIBC_2.0
   GLIBC_2.1 GLIBC_2.0
   GLIBC_2.1.1 GLIBC_2.1
+  GLIBC_2.1.2 GLIBC_2.1.1
 }
 libcrypt {
   GLIBC_2.0
Index: nss/getXXent_r.c
===================================================================
RCS file: /work/cvs/gnu/glibc-2.1/nss/getXXent_r.c,v
retrieving revision 1.1.1.10
diff -u -p -r1.1.1.10 getXXent_r.c
--- nss/getXXent_r.c	1999/06/27 01:14:34	1.1.1.10
+++ nss/getXXent_r.c	1999/07/09 21:08:58
@@ -290,5 +290,33 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYP
   *result = status == NSS_STATUS_SUCCESS ? resbuf : NULL;
   return status == NSS_STATUS_SUCCESS ? 0 : errno;
 }
+#if defined SHARED && DO_VERSIONING
+#define OLD(name) OLD1 (name)
+#define OLD1(name) __old_##name
+
+int
+OLD (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen,
+			 LOOKUP_TYPE **result H_ERRNO_PARM)
+{
+  int ret = INTERNAL (REENTRANT_GETNAME) (resbuf, buffer, buflen,
+					  result H_ERRNO_VAR);
+
+  if (ret != 0)
+    ret = -1;
+
+  return ret;
+}
+
+#define do_symbol_version(real, name, version) \
+  symbol_version(real, name, version)
+do_symbol_version(OLD (REENTRANT_GETNAME), REENTRANT_GETNAME,
+		  GLIBC_2.0);
+
+#define do_default_symbol_version(real, name, version) \
+  default_symbol_version(real, name, version)
+do_default_symbol_version(INTERNAL (REENTRANT_GETNAME),
+			  REENTRANT_GETNAME, GLIBC_2.1.2);
+#else
 #define do_weak_alias(n1, n2) weak_alias (n1, n2)
 do_weak_alias (INTERNAL (REENTRANT_GETNAME), REENTRANT_GETNAME)
+#endif
Index: nss/getXXbyYY_r.c
===================================================================
RCS file: /work/cvs/gnu/glibc-2.1/nss/getXXbyYY_r.c,v
retrieving revision 1.1.1.15
diff -u -p -r1.1.1.15 getXXbyYY_r.c
--- nss/getXXbyYY_r.c	1999/06/27 01:14:33	1.1.1.15
+++ nss/getXXbyYY_r.c	1999/07/09 21:09:05
@@ -208,5 +208,32 @@ done:
   return status == NSS_STATUS_SUCCESS ? 0 : errno;
 }
 
+#if defined SHARED && DO_VERSIONING
+#define OLD(name) OLD1 (name)
+#define OLD1(name) __old_##name
+
+int
+OLD (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
+		      size_t buflen, LOOKUP_TYPE **result H_ERRNO_PARM)
+{
+  int ret = INTERNAL (REENTRANT_NAME) (ADD_VARIABLES, resbuf, buffer,
+  				       buflen, result H_ERRNO_VAR);
+
+  if (ret != 0)
+    ret = -1;
+
+  return ret;
+}
+
+#define do_symbol_version(real, name, version) \
+  symbol_version(real, name, version)
+do_symbol_version(OLD (REENTRANT_NAME), REENTRANT_NAME, GLIBC_2.0);
+
+#define do_default_symbol_version(real, name, version) \
+  default_symbol_version(real, name, version)
+do_default_symbol_version(INTERNAL (REENTRANT_NAME), REENTRANT_NAME,
+			  GLIBC_2.1.2);
+#else
 #define do_weak_alias(n1, n2) weak_alias (n1, (n2))
 do_weak_alias (INTERNAL (REENTRANT_NAME), REENTRANT_NAME)
+#endif
Index: grp/Versions
===================================================================
RCS file: /work/cvs/gnu/glibc-2.1/grp/Versions,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 Versions
--- grp/Versions	1998/08/11 22:26:48	1.1.1.2
+++ grp/Versions	1999/07/09 20:30:13
@@ -20,4 +20,8 @@ libc {
     # p*
     putgrent;
   }
+  GLIBC_2.1.2 {
+    # g*
+    getgrent_r; getgrgid_r; getgrnam_r;
+  }
 }
Index: inet/Versions
===================================================================
RCS file: /work/cvs/gnu/glibc-2.1/inet/Versions,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 Versions
--- inet/Versions	1998/12/05 16:05:36	1.1.1.2
+++ inet/Versions	1999/07/09 20:31:55
@@ -54,4 +54,12 @@ libc {
     # i*
     if_freenameindex; if_indextoname; if_nameindex; if_nametoindex;
   }
+  GLIBC_2.1.2 {
+    # g*
+    getaliasbyname_r; getaliasent_r; gethostbyaddr_r; gethostbyname2_r;
+    gethostbyname_r; gethostent_r; getnetbyaddr_r; getnetbyname_r;
+    getnetent_r; getnetgrent_r; getprotobyname_r; getprotobynumber_r;
+    getprotoent_r; getrpcbyname_r; getrpcbynumber_r; getrpcent_r;
+    getservbyname_r;
+  }
 }
Index: pwd/Versions
===================================================================
RCS file: /work/cvs/gnu/glibc-2.1/pwd/Versions,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 Versions
--- pwd/Versions	1998/07/15 00:20:03	1.1.1.1
+++ pwd/Versions	1999/07/09 20:25:45
@@ -12,4 +12,8 @@ libc {
     # p*
     putpwent; setpwent;
   }
+  GLIBC_2.1.2 {
+    # g*
+    getpwent_r; getpwuid_r;
+  }
 }
Index: shadow/Versions
===================================================================
RCS file: /work/cvs/gnu/glibc-2.1/shadow/Versions,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 Versions
--- shadow/Versions	1998/07/15 00:20:09	1.1.1.1
+++ shadow/Versions	1999/07/09 20:29:55
@@ -24,4 +24,8 @@ libc {
     # u*
     ulckpwdf;
   }
+  GLIBC_2.1.2 {
+    # g*
+    getspent_r; getspnam_r;
+  }
 }



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