root/lang/ruby/libarchive/libarchive/trunk/ext/archive_read_support_format.c @ 27844

Revision 27844, 1.0 kB (checked in by winebarrel, 6 years ago)

Ruby bindings for Libarchive.

  • Property svn:eol-style set to native
Line 
1#include <errno.h>
2#include <archive.h>
3
4static struct {
5  int code;
6  int (*setter)(struct archive *);
7} codes[] = {
8  { ARCHIVE_FORMAT_CPIO,       archive_read_support_format_cpio    },
9  { ARCHIVE_FORMAT_TAR,        archive_read_support_format_tar     },
10  { ARCHIVE_FORMAT_TAR_GNUTAR, archive_read_support_format_gnutar  },
11  { ARCHIVE_FORMAT_ISO9660,    archive_read_support_format_iso9660 },
12  { ARCHIVE_FORMAT_ZIP,        archive_read_support_format_zip     },
13  { ARCHIVE_FORMAT_EMPTY,      archive_read_support_format_empty   },
14  { ARCHIVE_FORMAT_AR,         archive_read_support_format_ar      },
15  { ARCHIVE_FORMAT_MTREE,      archive_read_support_format_mtree   },
16  { -1,                        NULL                                },
17};
18
19int archive_read_support_format(struct archive *a, int code) {
20  int i;
21
22  for (i = 0; codes[i].code >= 0; i++) {
23    if (codes[i].code == code) {
24      return codes[i].setter(a);
25    }
26  }
27
28  archive_set_error(a, EINVAL, "No such format");
29  return ARCHIVE_FATAL;
30}
Note: See TracBrowser for help on using the browser.