spkgdeveloper's documentation

Tgz Archive Extraction API


Detailed Description

Untgz is the robust implementation of tgz archive browser/extractor.

It can open multiple files at once.

Typical usage

Following code shows typical Tgz Archive Extraction API usage.

#include <stdlib.h>
#include <stdio.h>
#include "untgz.h"

void status(struct untgz_state* tgz, gsize total, gsize current)
{
  printf("%d\n", 100*current/total);
  fflush(stdout);
}

int main(int ac, char* av[])
{
  gint i;
  struct error* err = e_new();

  // For each file do:
  for (i=1;i<ac;i++)
  {
    // Open tgz file.
    struct untgz_state* tgz = untgz_open(av[i], status, err);
    if (tgz == 0)
    {
      e_print(err);
      e_clean(err);
      continue;
    }
    // While we can successfully get next file's header from the archive...
    while (untgz_get_header(tgz) == 0)
    {
      // ...we will be extracting that file to a disk using its original name...
      if (untgz_write_file(tgz, 0))
      {
        // ...until something goes wrong.
        break;
      }
    }
    // And if something went wrong...
    if (!e_ok(err))
    {
      // ...we will alert user.
      e_print(err);
      e_clean(err);
    }
    
    // Close file.
    untgz_close(tgz);
  }

  e_free(err);
  return 0;
}


Data Structures

struct  untgz_state
 Untgz state structure. More...

Defines

#define UNTGZ_CORRUPT   E(0)
 archive is corrupt
#define UNTGZ_BLOCKED   E(1)
 untgz is blocked because of corrupt archive
#define UNTGZ_BADIO   E(2)
 can't open/write/create/update/whatever file
#define UNTGZ_BADMETA   E(3)
 can't set metainformation for extracted file (file was extracted successfully!)

Typedefs

typedef void(*) untgz_status_cb (struct untgz_state *s, gsize total, gsize current)
 Untgz status callback.

Enumerations

enum  untgz_filetype {
  UNTGZ_NONE = 0, UNTGZ_DIR, UNTGZ_REG, UNTGZ_LNK,
  UNTGZ_SYM, UNTGZ_BLK, UNTGZ_CHR, UNTGZ_FIFO
}
 File type. More...

Functions

untgz_stateuntgz_open (const gchar *tgzfile, untgz_status_cb scb, struct error *e)
 Open tgz archive.
void untgz_close (struct untgz_state *s)
 Close archive and free untgz_state object.
gint untgz_get_header (struct untgz_state *s)
 Read next file header from the archive.
gint untgz_write_data (struct untgz_state *s, gchar **buf, gsize *len)
 Write data for the current file to the buffer.
gint untgz_write_file (struct untgz_state *s, gchar *altname)
 Write current file to the disk.

Documentation for spkg, Sun Jul 23 13:12:53 2006.