Browse Source

Fixed a few of the SunOS build errors in libarchive.

Zach Mullen 16 years ago
parent
commit
5a6cb44e96

+ 10 - 2
Utilities/cmlibarchive/libarchive/archive_read_disk_set_standard_lookup.c

@@ -186,7 +186,7 @@ static const char *
 lookup_uname_helper(struct name_cache *cache, id_t id)
 {
     struct passwd   pwent, *result;
-    int r;
+    int r = 0;
 
     if (cache->buff_size == 0) {
         cache->buff_size = 256;
@@ -195,8 +195,12 @@ lookup_uname_helper(struct name_cache *cache, id_t id)
     if (cache->buff == NULL)
         return (NULL);
     for (;;) {
+#if defined(__sun)
+        result = getpwuid_r((uid_t)id, &pwent, cache->buff, cache->buff_size);
+#else
         r = getpwuid_r((uid_t)id, &pwent,
                    cache->buff, cache->buff_size, &result);
+#endif
         if (r == 0)
             break;
         if (r != ERANGE)
@@ -234,7 +238,7 @@ static const char *
 lookup_gname_helper(struct name_cache *cache, id_t id)
 {
     struct group    grent, *result;
-    int r;
+    int r = 0;
 
     if (cache->buff_size == 0) {
         cache->buff_size = 256;
@@ -243,8 +247,12 @@ lookup_gname_helper(struct name_cache *cache, id_t id)
     if (cache->buff == NULL)
         return (NULL);
     for (;;) {
+#if defined(__sun)
+        result = getgrgid_r((gid_t)id, &grent, cache->buff, cache->buff_size);
+#else
         r = getgrgid_r((gid_t)id, &grent,
                    cache->buff, cache->buff_size, &result);
+#endif
         if (r == 0)
             break;
         if (r != ERANGE)

+ 10 - 2
Utilities/cmlibarchive/libarchive/archive_write_disk_set_standard_lookup.c

@@ -122,10 +122,14 @@ lookup_gid(void *private_data, const char *gname, gid_t gid)
         size_t bufsize = 128;
         char *buffer = _buffer;
         struct group    grent, *result;
-        int r;
+        int r = 0;
 
         for (;;) {
+#if defined(__sun)
+            result = getgrnam_r(gname, &grent, buffer, bufsize);
+#else
             r = getgrnam_r(gname, &grent, buffer, bufsize, &result);
+#endif
             if (r == 0)
                 break;
             if (r != ERANGE)
@@ -181,10 +185,14 @@ lookup_uid(void *private_data, const char *uname, uid_t uid)
         size_t bufsize = 128;
         char *buffer = _buffer;
         struct passwd   pwent, *result;
-        int r;
+        int r = 0;
 
         for (;;) {
+#if defined(__sun)
+            result = getpwnam_r(uname, &pwent, buffer, bufsize);
+#else
             r = getpwnam_r(uname, &pwent, buffer, bufsize, &result);
+#endif
             if (r == 0)
                 break;
             if (r != ERANGE)