]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
read: Simplify client_switch_proxy
authorTobias Stoeckmann <tobias@stoeckmann.org>
Fri, 15 May 2026 15:04:32 +0000 (17:04 +0200)
committerTobias Stoeckmann <tobias@stoeckmann.org>
Fri, 15 May 2026 16:17:16 +0000 (18:17 +0200)
Use a dedicated variable for archive instead of referencing
self->archive again and again. Also, inline client_open_proxy.

While at it, fix space intendation.

No functional change.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
libarchive/archive_read.c

index f681d3ad63913dd88a4e037143d415c816f4652b..dc42eb1756a26dde886aad4028267759a192ebd8 100644 (file)
@@ -252,42 +252,35 @@ client_close_proxy(struct archive_read_filter *self)
        return read_client_close_proxy(self->archive);
 }
 
-static int
-client_open_proxy(struct archive_read_filter *self)
-{
-  int r = ARCHIVE_OK;
-       if (self->archive->client.opener != NULL)
-               r = (self->archive->client.opener)(
-                   (struct archive *)self->archive, self->data);
-       return (r);
-}
-
 static int
 client_switch_proxy(struct archive_read_filter *self, unsigned int iindex)
 {
-  int r1 = ARCHIVE_OK, r2 = ARCHIVE_OK;
-       void *data2 = NULL;
+       struct archive_read *a = self->archive;
+       int r1 = ARCHIVE_OK, r2 = ARCHIVE_OK;
+       void *data2;
 
        /* Don't do anything if already in the specified data node */
-       if (self->archive->client.cursor == iindex)
+       if (a->client.cursor == iindex)
                return (ARCHIVE_OK);
 
-       self->archive->client.cursor = iindex;
-       data2 = self->archive->client.dataset[self->archive->client.cursor].data;
-       if (self->archive->client.switcher != NULL)
+       a->client.cursor = iindex;
+       data2 = a->client.dataset[a->client.cursor].data;
+       if (a->client.switcher != NULL)
        {
-               r1 = r2 = (self->archive->client.switcher)
-                       ((struct archive *)self->archive, self->data, data2);
+               r1 = r2 = (a->client.switcher)
+                       ((struct archive *)a, self->data, data2);
                self->data = data2;
        }
        else
        {
                /* Attempt to call close and open instead */
-               if (self->archive->client.closer != NULL)
-                       r1 = (self->archive->client.closer)
-                               ((struct archive *)self->archive, self->data);
+               if (a->client.closer != NULL)
+                       r1 = (a->client.closer)
+                               ((struct archive *)a, self->data);
                self->data = data2;
-               r2 = client_open_proxy(self);
+               if (a->client.opener != NULL)
+                       r2 = (a->client.opener)
+                               ((struct archive *)a, self->data);
        }
        return (r1 < r2) ? r1 : r2;
 }