libarchive-ruby-fs 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/rblibarchive/archive_read_support_compression.c +31 -31
- data/ext/rblibarchive/archive_read_support_compression.h +6 -6
- data/ext/rblibarchive/archive_read_support_format.c +32 -32
- data/ext/rblibarchive/archive_read_support_format.h +6 -6
- data/ext/rblibarchive/archive_write_open_rb_str.c +25 -25
- data/ext/rblibarchive/archive_write_open_rb_str.h +6 -6
- data/ext/rblibarchive/archive_write_set_compression.c +32 -32
- data/ext/rblibarchive/archive_write_set_compression.h +6 -6
- data/ext/rblibarchive/extconf.rb +20 -20
- data/ext/rblibarchive/libarchive.c +92 -92
- data/ext/rblibarchive/libarchive_archive.c +84 -84
- data/ext/rblibarchive/libarchive_entry.c +1015 -1015
- data/ext/rblibarchive/libarchive_internal.h +135 -134
- data/ext/rblibarchive/libarchive_reader.c +328 -328
- data/ext/rblibarchive/libarchive_writer.c +267 -246
- data/lib/libarchive-ruby-fs/version.rb +1 -1
- metadata +6 -7
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 788f782744aff4f52934514361f24584aff674aa
         | 
| 4 | 
            +
              data.tar.gz: a3b758b0f302be84f7bdaf61123a40449c8f5d90
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 36354307c51c708533a20f91f8272350ed1237ef8d3cd2c1a98684c7485d9580e5bfeb6c34060ce07fd026a219b61c355c732c75812b6e438e725fd6328b2dbf
         | 
| 7 | 
            +
              data.tar.gz: 6a848bb4f3bafd344206aab3cbfd6b6676ebd66444c87a4f34d8728fac0305b979745cfb603be5cc76cfb18c0c33985220ac5ad2a30169740fbf2b36202d8f68
         | 
| @@ -1,31 +1,31 @@ | |
| 1 | 
            -
            #include <errno.h>
         | 
| 2 | 
            -
            #include <archive.h>
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            static struct {
         | 
| 5 | 
            -
              int code;
         | 
| 6 | 
            -
              int (*setter)(struct archive *);
         | 
| 7 | 
            -
            } codes[] = {
         | 
| 8 | 
            -
              { ARCHIVE_COMPRESSION_NONE,     archive_read_support_compression_none     },
         | 
| 9 | 
            -
              { ARCHIVE_COMPRESSION_GZIP,     archive_read_support_compression_gzip     },
         | 
| 10 | 
            -
              { ARCHIVE_COMPRESSION_BZIP2,    archive_read_support_compression_bzip2    },
         | 
| 11 | 
            -
              { ARCHIVE_COMPRESSION_COMPRESS, archive_read_support_compression_compress },
         | 
| 12 | 
            -
              // XXX:
         | 
| 13 | 
            -
              /*
         | 
| 14 | 
            -
              { ARCHIVE_COMPRESSION_PROGRAM,  archive_read_support_compression_program  },
         | 
| 15 | 
            -
              { ARCHIVE_COMPRESSION_LZMA,     archive_read_support_compression_lzma     },
         | 
| 16 | 
            -
              */
         | 
| 17 | 
            -
              { -1,                           NULL                                      },
         | 
| 18 | 
            -
            };
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            int archive_read_support_compression(struct archive *a, int code) {
         | 
| 21 | 
            -
              int i;
         | 
| 22 | 
            -
             | 
| 23 | 
            -
              for (i = 0; codes[i].code >= 0; i++) {
         | 
| 24 | 
            -
                if (codes[i].code == code) {
         | 
| 25 | 
            -
                  return codes[i].setter(a);
         | 
| 26 | 
            -
                }
         | 
| 27 | 
            -
              }
         | 
| 28 | 
            -
             | 
| 29 | 
            -
              archive_set_error(a, EINVAL, "No such compression");
         | 
| 30 | 
            -
              return ARCHIVE_FATAL;
         | 
| 31 | 
            -
            }
         | 
| 1 | 
            +
            #include <errno.h>
         | 
| 2 | 
            +
            #include <archive.h>
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            static struct {
         | 
| 5 | 
            +
              int code;
         | 
| 6 | 
            +
              int (*setter)(struct archive *);
         | 
| 7 | 
            +
            } codes[] = {
         | 
| 8 | 
            +
              { ARCHIVE_COMPRESSION_NONE,     archive_read_support_compression_none     },
         | 
| 9 | 
            +
              { ARCHIVE_COMPRESSION_GZIP,     archive_read_support_compression_gzip     },
         | 
| 10 | 
            +
              { ARCHIVE_COMPRESSION_BZIP2,    archive_read_support_compression_bzip2    },
         | 
| 11 | 
            +
              { ARCHIVE_COMPRESSION_COMPRESS, archive_read_support_compression_compress },
         | 
| 12 | 
            +
              // XXX:
         | 
| 13 | 
            +
              /*
         | 
| 14 | 
            +
              { ARCHIVE_COMPRESSION_PROGRAM,  archive_read_support_compression_program  },
         | 
| 15 | 
            +
              { ARCHIVE_COMPRESSION_LZMA,     archive_read_support_compression_lzma     },
         | 
| 16 | 
            +
              */
         | 
| 17 | 
            +
              { -1,                           NULL                                      },
         | 
| 18 | 
            +
            };
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            int archive_read_support_compression(struct archive *a, int code) {
         | 
| 21 | 
            +
              int i;
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              for (i = 0; codes[i].code >= 0; i++) {
         | 
| 24 | 
            +
                if (codes[i].code == code) {
         | 
| 25 | 
            +
                  return codes[i].setter(a);
         | 
| 26 | 
            +
                }
         | 
| 27 | 
            +
              }
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              archive_set_error(a, EINVAL, "No such compression");
         | 
| 30 | 
            +
              return ARCHIVE_FATAL;
         | 
| 31 | 
            +
            }
         | 
| @@ -1,6 +1,6 @@ | |
| 1 | 
            -
            #ifndef _ARCHIVE_READ_SUPPORT_COMPRESSION_H_
         | 
| 2 | 
            -
            #define _ARCHIVE_READ_SUPPORT_COMPRESSION_H_
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            int archive_read_support_compression(struct archive *a, int code);
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            #endif
         | 
| 1 | 
            +
            #ifndef _ARCHIVE_READ_SUPPORT_COMPRESSION_H_
         | 
| 2 | 
            +
            #define _ARCHIVE_READ_SUPPORT_COMPRESSION_H_
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            int archive_read_support_compression(struct archive *a, int code);
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            #endif
         | 
| @@ -1,32 +1,32 @@ | |
| 1 | 
            -
            #include <errno.h>
         | 
| 2 | 
            -
            #include <archive.h>
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            static 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 | 
            -
            #ifdef ARCHIVE_FORMAT_MTREE
         | 
| 16 | 
            -
              { ARCHIVE_FORMAT_MTREE,      archive_read_support_format_mtree   },
         | 
| 17 | 
            -
            #endif
         | 
| 18 | 
            -
              { -1,                        NULL                                },
         | 
| 19 | 
            -
            };
         | 
| 20 | 
            -
             | 
| 21 | 
            -
            int archive_read_support_format(struct archive *a, int code) {
         | 
| 22 | 
            -
              int i;
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              for (i = 0; codes[i].code >= 0; i++) {
         | 
| 25 | 
            -
                if (codes[i].code == code) {
         | 
| 26 | 
            -
                  return codes[i].setter(a);
         | 
| 27 | 
            -
                }
         | 
| 28 | 
            -
              }
         | 
| 29 | 
            -
             | 
| 30 | 
            -
              archive_set_error(a, EINVAL, "No such format");
         | 
| 31 | 
            -
              return ARCHIVE_FATAL;
         | 
| 32 | 
            -
            }
         | 
| 1 | 
            +
            #include <errno.h>
         | 
| 2 | 
            +
            #include <archive.h>
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            static 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 | 
            +
            #ifdef ARCHIVE_FORMAT_MTREE
         | 
| 16 | 
            +
              { ARCHIVE_FORMAT_MTREE,      archive_read_support_format_mtree   },
         | 
| 17 | 
            +
            #endif
         | 
| 18 | 
            +
              { -1,                        NULL                                },
         | 
| 19 | 
            +
            };
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            int archive_read_support_format(struct archive *a, int code) {
         | 
| 22 | 
            +
              int i;
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              for (i = 0; codes[i].code >= 0; i++) {
         | 
| 25 | 
            +
                if (codes[i].code == code) {
         | 
| 26 | 
            +
                  return codes[i].setter(a);
         | 
| 27 | 
            +
                }
         | 
| 28 | 
            +
              }
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              archive_set_error(a, EINVAL, "No such format");
         | 
| 31 | 
            +
              return ARCHIVE_FATAL;
         | 
| 32 | 
            +
            }
         | 
| @@ -1,6 +1,6 @@ | |
| 1 | 
            -
            #ifndef _ARCHIVE_READ_SUPPORT_FORMAT_H_
         | 
| 2 | 
            -
            #define _ARCHIVE_READ_SUPPORT_FORMAT_H_
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            int archive_read_support_format(struct archive *a, int code);
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            #endif
         | 
| 1 | 
            +
            #ifndef _ARCHIVE_READ_SUPPORT_FORMAT_H_
         | 
| 2 | 
            +
            #define _ARCHIVE_READ_SUPPORT_FORMAT_H_
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            int archive_read_support_format(struct archive *a, int code);
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            #endif
         | 
| @@ -1,25 +1,25 @@ | |
| 1 | 
            -
            #include <archive.h>
         | 
| 2 | 
            -
            #include <ruby.h>
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            static int rb_str_write_open(struct archive *a, void *client_data) {
         | 
| 5 | 
            -
              if (archive_write_get_bytes_in_last_block(a) == -1) {
         | 
| 6 | 
            -
                archive_write_set_bytes_in_last_block(a, 1);
         | 
| 7 | 
            -
              }
         | 
| 8 | 
            -
             | 
| 9 | 
            -
              return ARCHIVE_OK;
         | 
| 10 | 
            -
            }
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            static int rb_str_write_close(struct archive *a, void *client_data) {
         | 
| 13 | 
            -
              return ARCHIVE_OK;
         | 
| 14 | 
            -
            }
         | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
            static ssize_t rb_str_write(struct archive *a, void *client_data, const void *buff, size_t length) {
         | 
| 18 | 
            -
              VALUE str = (VALUE) client_data;
         | 
| 19 | 
            -
              rb_str_cat(str, buff, length);
         | 
| 20 | 
            -
              return length;
         | 
| 21 | 
            -
            }
         | 
| 22 | 
            -
             | 
| 23 | 
            -
            int archive_write_open_rb_str(struct archive *a, VALUE str) {
         | 
| 24 | 
            -
              return archive_write_open(a, (void *) str, rb_str_write_open, rb_str_write, rb_str_write_close);
         | 
| 25 | 
            -
            }
         | 
| 1 | 
            +
            #include <archive.h>
         | 
| 2 | 
            +
            #include <ruby.h>
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            static int rb_str_write_open(struct archive *a, void *client_data) {
         | 
| 5 | 
            +
              if (archive_write_get_bytes_in_last_block(a) == -1) {
         | 
| 6 | 
            +
                archive_write_set_bytes_in_last_block(a, 1);
         | 
| 7 | 
            +
              }
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              return ARCHIVE_OK;
         | 
| 10 | 
            +
            }
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            static int rb_str_write_close(struct archive *a, void *client_data) {
         | 
| 13 | 
            +
              return ARCHIVE_OK;
         | 
| 14 | 
            +
            }
         | 
| 15 | 
            +
             | 
| 16 | 
            +
             | 
| 17 | 
            +
            static ssize_t rb_str_write(struct archive *a, void *client_data, const void *buff, size_t length) {
         | 
| 18 | 
            +
              VALUE str = (VALUE) client_data;
         | 
| 19 | 
            +
              rb_str_cat(str, buff, length);
         | 
| 20 | 
            +
              return length;
         | 
| 21 | 
            +
            }
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            int archive_write_open_rb_str(struct archive *a, VALUE str) {
         | 
| 24 | 
            +
              return archive_write_open(a, (void *) str, rb_str_write_open, rb_str_write, rb_str_write_close);
         | 
| 25 | 
            +
            }
         | 
| @@ -1,6 +1,6 @@ | |
| 1 | 
            -
            #ifndef _ARCHIVE_WRITE_OPEN_RB_STR_H_
         | 
| 2 | 
            -
            #define _ARCHIVE_WRITE_OPEN_RB_STR_H_
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            int archive_write_open_rb_str(struct archive *a, VALUE str);
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            #endif
         | 
| 1 | 
            +
            #ifndef _ARCHIVE_WRITE_OPEN_RB_STR_H_
         | 
| 2 | 
            +
            #define _ARCHIVE_WRITE_OPEN_RB_STR_H_
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            int archive_write_open_rb_str(struct archive *a, VALUE str);
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            #endif
         | 
| @@ -1,32 +1,32 @@ | |
| 1 | 
            -
            #include <errno.h>
         | 
| 2 | 
            -
            #include <archive.h>
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            static struct {
         | 
| 5 | 
            -
              int code;
         | 
| 6 | 
            -
              int (*setter)(struct archive *);
         | 
| 7 | 
            -
            } codes[] = {
         | 
| 8 | 
            -
              { ARCHIVE_COMPRESSION_NONE,     archive_write_set_compression_none     },
         | 
| 9 | 
            -
              { ARCHIVE_COMPRESSION_GZIP,     archive_write_set_compression_gzip     },
         | 
| 10 | 
            -
              { ARCHIVE_COMPRESSION_BZIP2,    archive_write_set_compression_bzip2    },
         | 
| 11 | 
            -
            #if ARCHIVE_VERSION_NUMBER >= 2005000
         | 
| 12 | 
            -
              { ARCHIVE_COMPRESSION_COMPRESS, archive_write_set_compression_compress },
         | 
| 13 | 
            -
            #endif
         | 
| 14 | 
            -
              // XXX:
         | 
| 15 | 
            -
              /*
         | 
| 16 | 
            -
              { ARCHIVE_COMPRESSION_PROGRAM,  archive_read_support_compression_program  },
         | 
| 17 | 
            -
              */
         | 
| 18 | 
            -
              { -1,                           NULL                                      },
         | 
| 19 | 
            -
            };
         | 
| 20 | 
            -
             | 
| 21 | 
            -
            int archive_write_set_compression(struct archive *a, int code) {
         | 
| 22 | 
            -
              int i;
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              for (i = 0; codes[i].code >= 0; i++) {
         | 
| 25 | 
            -
                if (codes[i].code == code) {
         | 
| 26 | 
            -
                  return codes[i].setter(a);
         | 
| 27 | 
            -
                }
         | 
| 28 | 
            -
              }
         | 
| 29 | 
            -
             | 
| 30 | 
            -
              archive_set_error(a, EINVAL, "No such compression");
         | 
| 31 | 
            -
              return ARCHIVE_FATAL;
         | 
| 32 | 
            -
            }
         | 
| 1 | 
            +
            #include <errno.h>
         | 
| 2 | 
            +
            #include <archive.h>
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            static struct {
         | 
| 5 | 
            +
              int code;
         | 
| 6 | 
            +
              int (*setter)(struct archive *);
         | 
| 7 | 
            +
            } codes[] = {
         | 
| 8 | 
            +
              { ARCHIVE_COMPRESSION_NONE,     archive_write_set_compression_none     },
         | 
| 9 | 
            +
              { ARCHIVE_COMPRESSION_GZIP,     archive_write_set_compression_gzip     },
         | 
| 10 | 
            +
              { ARCHIVE_COMPRESSION_BZIP2,    archive_write_set_compression_bzip2    },
         | 
| 11 | 
            +
            #if ARCHIVE_VERSION_NUMBER >= 2005000
         | 
| 12 | 
            +
              { ARCHIVE_COMPRESSION_COMPRESS, archive_write_set_compression_compress },
         | 
| 13 | 
            +
            #endif
         | 
| 14 | 
            +
              // XXX:
         | 
| 15 | 
            +
              /*
         | 
| 16 | 
            +
              { ARCHIVE_COMPRESSION_PROGRAM,  archive_read_support_compression_program  },
         | 
| 17 | 
            +
              */
         | 
| 18 | 
            +
              { -1,                           NULL                                      },
         | 
| 19 | 
            +
            };
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            int archive_write_set_compression(struct archive *a, int code) {
         | 
| 22 | 
            +
              int i;
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              for (i = 0; codes[i].code >= 0; i++) {
         | 
| 25 | 
            +
                if (codes[i].code == code) {
         | 
| 26 | 
            +
                  return codes[i].setter(a);
         | 
| 27 | 
            +
                }
         | 
| 28 | 
            +
              }
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              archive_set_error(a, EINVAL, "No such compression");
         | 
| 31 | 
            +
              return ARCHIVE_FATAL;
         | 
| 32 | 
            +
            }
         | 
| @@ -1,6 +1,6 @@ | |
| 1 | 
            -
            #ifndef _ARCHIVE_WRITE_SET_COMPRESSION_H_
         | 
| 2 | 
            -
            #define _ARCHIVE_WRITE_SET_COMPRESSION_H_
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            int archive_write_set_compression(struct archive *a, int code);
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            #endif
         | 
| 1 | 
            +
            #ifndef _ARCHIVE_WRITE_SET_COMPRESSION_H_
         | 
| 2 | 
            +
            #define _ARCHIVE_WRITE_SET_COMPRESSION_H_
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            int archive_write_set_compression(struct archive *a, int code);
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            #endif
         | 
    
        data/ext/rblibarchive/extconf.rb
    CHANGED
    
    | @@ -1,20 +1,20 @@ | |
| 1 | 
            -
            require 'mkmf'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            unless (libarchive_cfg = pkg_config('libarchive'))
         | 
| 4 | 
            -
              abort 'Failed to locate pkg-config file for libarchive.'
         | 
| 5 | 
            -
            end
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            unless have_library('archive')
         | 
| 8 | 
            -
              abort 'Failed to test-link against libarchive.'
         | 
| 9 | 
            -
            end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            non_std_location = libarchive_cfg.detect { |flag| flag =~ /^-L/ }
         | 
| 12 | 
            -
            if non_std_location
         | 
| 13 | 
            -
              non_std_location.gsub!('-L', '')
         | 
| 14 | 
            -
              $LDFLAGS << " -Wl,-rpath,#{non_std_location}"
         | 
| 15 | 
            -
              message "embedding path to library into rblibarchive.so: #{non_std_location}\n"
         | 
| 16 | 
            -
            end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            with_cppflags("#{(libarchive_cfg.detect { |flag| flag =~ /^-I/ })}") do
         | 
| 19 | 
            -
              create_makefile('rblibarchive')
         | 
| 20 | 
            -
            end
         | 
| 1 | 
            +
            require 'mkmf'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            unless (libarchive_cfg = pkg_config('libarchive'))
         | 
| 4 | 
            +
              abort 'Failed to locate pkg-config file for libarchive.'
         | 
| 5 | 
            +
            end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            unless have_library('archive')
         | 
| 8 | 
            +
              abort 'Failed to test-link against libarchive.'
         | 
| 9 | 
            +
            end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            non_std_location = libarchive_cfg.detect { |flag| flag =~ /^-L/ }
         | 
| 12 | 
            +
            if non_std_location
         | 
| 13 | 
            +
              non_std_location.gsub!('-L', '')
         | 
| 14 | 
            +
              $LDFLAGS << " -Wl,-rpath,#{non_std_location}"
         | 
| 15 | 
            +
              message "embedding path to library into rblibarchive.so: #{non_std_location}\n"
         | 
| 16 | 
            +
            end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            with_cppflags("#{(libarchive_cfg.detect { |flag| flag =~ /^-I/ })}") do
         | 
| 19 | 
            +
              create_makefile('rblibarchive')
         | 
| 20 | 
            +
            end
         | 
| @@ -1,92 +1,92 @@ | |
| 1 | 
            -
            #include "libarchive_internal.h"
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            VALUE rb_mArchive;
         | 
| 4 | 
            -
            VALUE rb_eArchiveError;
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            /* */
         | 
| 7 | 
            -
            VALUE rb_libarchive_s_version_number(VALUE self) {
         | 
| 8 | 
            -
            #if ARCHIVE_VERSION >= 2005000
         | 
| 9 | 
            -
              return INT2NUM(archive_version_number());
         | 
| 10 | 
            -
            #else
         | 
| 11 | 
            -
              return INT2NUM(archive_version_stamp());
         | 
| 12 | 
            -
            #endif
         | 
| 13 | 
            -
            }
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            /* */
         | 
| 16 | 
            -
            VALUE rb_libarchive_s_version_string(VALUE self) {
         | 
| 17 | 
            -
            #if ARCHIVE_VERSION_NUMBER >= 2005000
         | 
| 18 | 
            -
              return rb_str_new2(archive_version_string());
         | 
| 19 | 
            -
            #else
         | 
| 20 | 
            -
              return rb_str_new2(archive_version());
         | 
| 21 | 
            -
            #endif
         | 
| 22 | 
            -
            }
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            void DLLEXPORT Init_rblibarchive() {
         | 
| 25 | 
            -
              rb_mArchive = rb_define_module("LibArchiveRubyFs");
         | 
| 26 | 
            -
             | 
| 27 | 
            -
              rb_define_const(rb_mArchive, "COMPRESSION_NONE",     INT2NUM(ARCHIVE_COMPRESSION_NONE));
         | 
| 28 | 
            -
            #ifdef HAVE_ZLIB_H
         | 
| 29 | 
            -
              rb_define_const(rb_mArchive, "COMPRESSION_GZIP",     INT2NUM(ARCHIVE_COMPRESSION_GZIP));
         | 
| 30 | 
            -
            #endif
         | 
| 31 | 
            -
            #ifdef HAVE_BZLIB_H
         | 
| 32 | 
            -
              rb_define_const(rb_mArchive, "COMPRESSION_BZIP2",    INT2NUM(ARCHIVE_COMPRESSION_BZIP2));
         | 
| 33 | 
            -
            #endif
         | 
| 34 | 
            -
              rb_define_const(rb_mArchive, "COMPRESSION_COMPRESS", INT2NUM(ARCHIVE_COMPRESSION_COMPRESS));
         | 
| 35 | 
            -
              // XXX:
         | 
| 36 | 
            -
              /*
         | 
| 37 | 
            -
              rb_define_const(rb_mArchive, "COMPRESSION_PROGRAM",  INT2NUM(ARCHIVE_COMPRESSION_PROGRAM));
         | 
| 38 | 
            -
              rb_define_const(rb_mArchive, "COMPRESSION_LZMA",     INT2NUM(ARCHIVE_COMPRESSION_LZMA));
         | 
| 39 | 
            -
              */
         | 
| 40 | 
            -
             | 
| 41 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_BASE_MASK",           INT2NUM(ARCHIVE_FORMAT_BASE_MASK));
         | 
| 42 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_CPIO",                INT2NUM(ARCHIVE_FORMAT_CPIO));
         | 
| 43 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_CPIO_POSIX",          INT2NUM(ARCHIVE_FORMAT_CPIO_POSIX));
         | 
| 44 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_CPIO_BIN_LE",         INT2NUM(ARCHIVE_FORMAT_CPIO_BIN_LE));
         | 
| 45 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_CPIO_BIN_BE",         INT2NUM(ARCHIVE_FORMAT_CPIO_BIN_BE));
         | 
| 46 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_CPIO_SVR4_NOCRC",     INT2NUM(ARCHIVE_FORMAT_CPIO_SVR4_NOCRC));
         | 
| 47 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_CPIO_SVR4_CRC",       INT2NUM(ARCHIVE_FORMAT_CPIO_SVR4_CRC));
         | 
| 48 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_SHAR",                INT2NUM(ARCHIVE_FORMAT_SHAR));
         | 
| 49 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_SHAR_BASE",           INT2NUM(ARCHIVE_FORMAT_SHAR_BASE));
         | 
| 50 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_SHAR_DUMP",           INT2NUM(ARCHIVE_FORMAT_SHAR_DUMP));
         | 
| 51 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_TAR",                 INT2NUM(ARCHIVE_FORMAT_TAR));
         | 
| 52 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_TAR_USTAR",           INT2NUM(ARCHIVE_FORMAT_TAR_USTAR));
         | 
| 53 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_TAR_PAX_INTERCHANGE", INT2NUM(ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE));
         | 
| 54 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_TAR_PAX_RESTRICTED",  INT2NUM(ARCHIVE_FORMAT_TAR_PAX_RESTRICTED));
         | 
| 55 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_TAR_GNUTAR",          INT2NUM(ARCHIVE_FORMAT_TAR_GNUTAR));
         | 
| 56 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_ISO9660",             INT2NUM(ARCHIVE_FORMAT_ISO9660));
         | 
| 57 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_ISO9660_ROCKRIDGE",   INT2NUM(ARCHIVE_FORMAT_ISO9660_ROCKRIDGE));
         | 
| 58 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_ZIP",                 INT2NUM(ARCHIVE_FORMAT_ZIP));
         | 
| 59 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_EMPTY",               INT2NUM(ARCHIVE_FORMAT_EMPTY));
         | 
| 60 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_AR",                  INT2NUM(ARCHIVE_FORMAT_AR));
         | 
| 61 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_AR_GNU",              INT2NUM(ARCHIVE_FORMAT_AR_GNU));
         | 
| 62 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_AR_BSD",              INT2NUM(ARCHIVE_FORMAT_AR_BSD));
         | 
| 63 | 
            -
            #ifdef ARCHIVE_FORMAT_MTREE
         | 
| 64 | 
            -
              rb_define_const(rb_mArchive, "FORMAT_MTREE",               INT2NUM(ARCHIVE_FORMAT_MTREE));
         | 
| 65 | 
            -
            #endif
         | 
| 66 | 
            -
             | 
| 67 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_OWNER",              INT2NUM(ARCHIVE_EXTRACT_OWNER));
         | 
| 68 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_PERM",               INT2NUM(ARCHIVE_EXTRACT_PERM));
         | 
| 69 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_TIME",               INT2NUM(ARCHIVE_EXTRACT_TIME));
         | 
| 70 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_NO_OVERWRITE",       INT2NUM(ARCHIVE_EXTRACT_NO_OVERWRITE));
         | 
| 71 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_UNLINK",             INT2NUM(ARCHIVE_EXTRACT_UNLINK));
         | 
| 72 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_ACL",                INT2NUM(ARCHIVE_EXTRACT_ACL));
         | 
| 73 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_FFLAGS",             INT2NUM(ARCHIVE_EXTRACT_FFLAGS));
         | 
| 74 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_XATTR",              INT2NUM(ARCHIVE_EXTRACT_XATTR));
         | 
| 75 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_SECURE_SYMLINKS",    INT2NUM(ARCHIVE_EXTRACT_SECURE_SYMLINKS));
         | 
| 76 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_SECURE_NODOTDOT",    INT2NUM(ARCHIVE_EXTRACT_SECURE_NODOTDOT));
         | 
| 77 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_NO_AUTODIR",         INT2NUM(ARCHIVE_EXTRACT_NO_AUTODIR));
         | 
| 78 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_NO_OVERWRITE_NEWER", INT2NUM(ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER));
         | 
| 79 | 
            -
            #ifdef ARCHIVE_EXTRACT_SPARSE
         | 
| 80 | 
            -
              rb_define_const(rb_mArchive, "EXTRACT_SPARSE",             INT2NUM(ARCHIVE_EXTRACT_SPARSE));
         | 
| 81 | 
            -
            #endif
         | 
| 82 | 
            -
             | 
| 83 | 
            -
              rb_define_module_function(rb_mArchive, "version_number", rb_libarchive_s_version_number, 0);
         | 
| 84 | 
            -
              rb_define_module_function(rb_mArchive, "version_string", rb_libarchive_s_version_string, 0);
         | 
| 85 | 
            -
             | 
| 86 | 
            -
              rb_eArchiveError = rb_define_class_under(rb_mArchive, "Error", rb_eStandardError);
         | 
| 87 | 
            -
             | 
| 88 | 
            -
              Init_libarchive_reader();
         | 
| 89 | 
            -
              Init_libarchive_writer();
         | 
| 90 | 
            -
              Init_libarchive_archive();
         | 
| 91 | 
            -
              Init_libarchive_entry();
         | 
| 92 | 
            -
            }
         | 
| 1 | 
            +
            #include "libarchive_internal.h"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            VALUE rb_mArchive;
         | 
| 4 | 
            +
            VALUE rb_eArchiveError;
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            /* */
         | 
| 7 | 
            +
            VALUE rb_libarchive_s_version_number(VALUE self) {
         | 
| 8 | 
            +
            #if ARCHIVE_VERSION >= 2005000
         | 
| 9 | 
            +
              return INT2NUM(archive_version_number());
         | 
| 10 | 
            +
            #else
         | 
| 11 | 
            +
              return INT2NUM(archive_version_stamp());
         | 
| 12 | 
            +
            #endif
         | 
| 13 | 
            +
            }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            /* */
         | 
| 16 | 
            +
            VALUE rb_libarchive_s_version_string(VALUE self) {
         | 
| 17 | 
            +
            #if ARCHIVE_VERSION_NUMBER >= 2005000
         | 
| 18 | 
            +
              return rb_str_new2(archive_version_string());
         | 
| 19 | 
            +
            #else
         | 
| 20 | 
            +
              return rb_str_new2(archive_version());
         | 
| 21 | 
            +
            #endif
         | 
| 22 | 
            +
            }
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            void DLLEXPORT Init_rblibarchive() {
         | 
| 25 | 
            +
              rb_mArchive = rb_define_module("LibArchiveRubyFs");
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              rb_define_const(rb_mArchive, "COMPRESSION_NONE",     INT2NUM(ARCHIVE_COMPRESSION_NONE));
         | 
| 28 | 
            +
            #ifdef HAVE_ZLIB_H
         | 
| 29 | 
            +
              rb_define_const(rb_mArchive, "COMPRESSION_GZIP",     INT2NUM(ARCHIVE_COMPRESSION_GZIP));
         | 
| 30 | 
            +
            #endif
         | 
| 31 | 
            +
            #ifdef HAVE_BZLIB_H
         | 
| 32 | 
            +
              rb_define_const(rb_mArchive, "COMPRESSION_BZIP2",    INT2NUM(ARCHIVE_COMPRESSION_BZIP2));
         | 
| 33 | 
            +
            #endif
         | 
| 34 | 
            +
              rb_define_const(rb_mArchive, "COMPRESSION_COMPRESS", INT2NUM(ARCHIVE_COMPRESSION_COMPRESS));
         | 
| 35 | 
            +
              // XXX:
         | 
| 36 | 
            +
              /*
         | 
| 37 | 
            +
              rb_define_const(rb_mArchive, "COMPRESSION_PROGRAM",  INT2NUM(ARCHIVE_COMPRESSION_PROGRAM));
         | 
| 38 | 
            +
              rb_define_const(rb_mArchive, "COMPRESSION_LZMA",     INT2NUM(ARCHIVE_COMPRESSION_LZMA));
         | 
| 39 | 
            +
              */
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_BASE_MASK",           INT2NUM(ARCHIVE_FORMAT_BASE_MASK));
         | 
| 42 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_CPIO",                INT2NUM(ARCHIVE_FORMAT_CPIO));
         | 
| 43 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_CPIO_POSIX",          INT2NUM(ARCHIVE_FORMAT_CPIO_POSIX));
         | 
| 44 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_CPIO_BIN_LE",         INT2NUM(ARCHIVE_FORMAT_CPIO_BIN_LE));
         | 
| 45 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_CPIO_BIN_BE",         INT2NUM(ARCHIVE_FORMAT_CPIO_BIN_BE));
         | 
| 46 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_CPIO_SVR4_NOCRC",     INT2NUM(ARCHIVE_FORMAT_CPIO_SVR4_NOCRC));
         | 
| 47 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_CPIO_SVR4_CRC",       INT2NUM(ARCHIVE_FORMAT_CPIO_SVR4_CRC));
         | 
| 48 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_SHAR",                INT2NUM(ARCHIVE_FORMAT_SHAR));
         | 
| 49 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_SHAR_BASE",           INT2NUM(ARCHIVE_FORMAT_SHAR_BASE));
         | 
| 50 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_SHAR_DUMP",           INT2NUM(ARCHIVE_FORMAT_SHAR_DUMP));
         | 
| 51 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_TAR",                 INT2NUM(ARCHIVE_FORMAT_TAR));
         | 
| 52 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_TAR_USTAR",           INT2NUM(ARCHIVE_FORMAT_TAR_USTAR));
         | 
| 53 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_TAR_PAX_INTERCHANGE", INT2NUM(ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE));
         | 
| 54 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_TAR_PAX_RESTRICTED",  INT2NUM(ARCHIVE_FORMAT_TAR_PAX_RESTRICTED));
         | 
| 55 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_TAR_GNUTAR",          INT2NUM(ARCHIVE_FORMAT_TAR_GNUTAR));
         | 
| 56 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_ISO9660",             INT2NUM(ARCHIVE_FORMAT_ISO9660));
         | 
| 57 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_ISO9660_ROCKRIDGE",   INT2NUM(ARCHIVE_FORMAT_ISO9660_ROCKRIDGE));
         | 
| 58 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_ZIP",                 INT2NUM(ARCHIVE_FORMAT_ZIP));
         | 
| 59 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_EMPTY",               INT2NUM(ARCHIVE_FORMAT_EMPTY));
         | 
| 60 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_AR",                  INT2NUM(ARCHIVE_FORMAT_AR));
         | 
| 61 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_AR_GNU",              INT2NUM(ARCHIVE_FORMAT_AR_GNU));
         | 
| 62 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_AR_BSD",              INT2NUM(ARCHIVE_FORMAT_AR_BSD));
         | 
| 63 | 
            +
            #ifdef ARCHIVE_FORMAT_MTREE
         | 
| 64 | 
            +
              rb_define_const(rb_mArchive, "FORMAT_MTREE",               INT2NUM(ARCHIVE_FORMAT_MTREE));
         | 
| 65 | 
            +
            #endif
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_OWNER",              INT2NUM(ARCHIVE_EXTRACT_OWNER));
         | 
| 68 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_PERM",               INT2NUM(ARCHIVE_EXTRACT_PERM));
         | 
| 69 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_TIME",               INT2NUM(ARCHIVE_EXTRACT_TIME));
         | 
| 70 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_NO_OVERWRITE",       INT2NUM(ARCHIVE_EXTRACT_NO_OVERWRITE));
         | 
| 71 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_UNLINK",             INT2NUM(ARCHIVE_EXTRACT_UNLINK));
         | 
| 72 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_ACL",                INT2NUM(ARCHIVE_EXTRACT_ACL));
         | 
| 73 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_FFLAGS",             INT2NUM(ARCHIVE_EXTRACT_FFLAGS));
         | 
| 74 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_XATTR",              INT2NUM(ARCHIVE_EXTRACT_XATTR));
         | 
| 75 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_SECURE_SYMLINKS",    INT2NUM(ARCHIVE_EXTRACT_SECURE_SYMLINKS));
         | 
| 76 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_SECURE_NODOTDOT",    INT2NUM(ARCHIVE_EXTRACT_SECURE_NODOTDOT));
         | 
| 77 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_NO_AUTODIR",         INT2NUM(ARCHIVE_EXTRACT_NO_AUTODIR));
         | 
| 78 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_NO_OVERWRITE_NEWER", INT2NUM(ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER));
         | 
| 79 | 
            +
            #ifdef ARCHIVE_EXTRACT_SPARSE
         | 
| 80 | 
            +
              rb_define_const(rb_mArchive, "EXTRACT_SPARSE",             INT2NUM(ARCHIVE_EXTRACT_SPARSE));
         | 
| 81 | 
            +
            #endif
         | 
| 82 | 
            +
             | 
| 83 | 
            +
              rb_define_module_function(rb_mArchive, "version_number", rb_libarchive_s_version_number, 0);
         | 
| 84 | 
            +
              rb_define_module_function(rb_mArchive, "version_string", rb_libarchive_s_version_string, 0);
         | 
| 85 | 
            +
             | 
| 86 | 
            +
              rb_eArchiveError = rb_define_class_under(rb_mArchive, "Error", rb_eStandardError);
         | 
| 87 | 
            +
             | 
| 88 | 
            +
              Init_libarchive_reader();
         | 
| 89 | 
            +
              Init_libarchive_writer();
         | 
| 90 | 
            +
              Init_libarchive_archive();
         | 
| 91 | 
            +
              Init_libarchive_entry();
         | 
| 92 | 
            +
            }
         |