Update to 1.4

- Update WWW

Changes:	https://github.com/twogood/unshield/releases
This commit is contained in:
Sunpoet Po-Chuan Hsieh
2017-01-01 21:39:52 +00:00
parent 70f5d1ba0f
commit deebb60660
5 changed files with 14 additions and 226 deletions
+9 -6
View File
@@ -2,10 +2,8 @@
# $FreeBSD$
PORTNAME= unshield
PORTVERSION= 0.6
PORTREVISION= 7
PORTVERSION= 1.4
CATEGORIES= archivers
MASTER_SITES= SF/synce/Unshield/${PORTVERSION}
MAINTAINER= sunpoet@FreeBSD.org
COMMENT= Extract data from InstallShield CAB files
@@ -13,9 +11,14 @@ COMMENT= Extract data from InstallShield CAB files
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
GNU_CONFIGURE= yes
INSTALL_TARGET= install-strip
CFLAGS+= -fPIC
USE_LDCONFIG= yes
USES= libtool pathfix
USES= cmake pathfix
GH_ACCOUNT= twogood
USE_GITHUB= yes
post-patch:
@${REINPLACE_CMD} -e '/CMAKE_INSTALL_DATAROOTDIR/ s|DATAROOTDIR|PREFIX|' ${WRKSRC}/CMakeLists.txt
.include <bsd.port.mk>
+3 -2
View File
@@ -1,2 +1,3 @@
SHA256 (unshield-0.6.tar.gz) = 2b10e59530c8dff94c1c416ea69f3a09fdef48428b509cd5422e7db9f947041f
SIZE (unshield-0.6.tar.gz) = 320192
TIMESTAMP = 1483256014
SHA256 (twogood-unshield-1.4_GH0.tar.gz) = 8ae91961212193a7d3d7973c1c9464f3cd1967c179d6099feb1bb193912f8231
SIZE (twogood-unshield-1.4_GH0.tar.gz) = 37199
@@ -1,212 +0,0 @@
--- lib/component.c.orig 2005-06-28 18:49:36 UTC
+++ lib/component.c
@@ -40,11 +40,13 @@ UnshieldComponent* unshield_component_ne
case 7:
case 8:
case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ default:
p += 0x6b;
break;
-
- default:
- abort();
}
self->file_group_count = READ_UINT16(p); p += 2;
--- lib/file.c.orig 2007-01-06 14:34:57 UTC
+++ lib/file.c
@@ -77,6 +77,11 @@ static FileDescriptor* unshield_read_fil
case 7:
case 8:
case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ default:
saved_p = p = header->data +
header->common.cab_descriptor_offset +
header->cab.file_table_offset +
@@ -117,10 +122,6 @@ static FileDescriptor* unshield_read_fil
assert((p - saved_p) == 0x57);
break;
-
- default:
- unshield_error("Unknown major version: %i", header->major_version);
- abort();
}
if (!(fd->flags & FILE_COMPRESSED) &&
@@ -363,6 +364,11 @@ static bool unshield_reader_open_volume(
case 7:
case 8:
case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ default:
{
uint8_t six_header[VOLUME_HEADER_SIZE_V6];
uint8_t* p = six_header;
@@ -389,10 +395,6 @@ static bool unshield_reader_open_volume(
reader->volume_header.last_file_size_compressed_high = READ_UINT32(p); p += 4;
}
break;
-
- default:
- abort();
- goto exit;
}
#if VERBOSE >= 2
--- lib/libunshield.c.orig 2004-08-24 06:10:27 UTC
+++ lib/libunshield.c
@@ -205,7 +205,7 @@ static bool unshield_header_get_file_gro
/**
Read all header files
*/
-static bool unshield_read_headers(Unshield* unshield)/*{{{*/
+static bool unshield_read_headers(Unshield* unshield, int version)/*{{{*/
{
int i;
bool iterate = true;
@@ -268,8 +268,21 @@ static bool unshield_read_headers(Unshie
unshield_error("Failed to read common header from header file %i", i);
goto error;
}
-
- header->major_version = (header->common.version >> 12) & 0xf;
+
+ if (version != -1)
+ {
+ header->major_version = version;
+ }
+ else if (header->common.version >> 24 == 1)
+ {
+ header->major_version = (header->common.version >> 12) & 0xf;
+ }
+ else if (header->common.version >> 24 == 2)
+ {
+ header->major_version = (header->common.version & 0xffff);
+ if (header->major_version != 0)
+ header->major_version = header->major_version / 100;
+ }
#if 0
if (header->major_version < 5)
@@ -326,6 +339,11 @@ error:
Unshield* unshield_open(const char* filename)/*{{{*/
{
+ unshield_open_force_version(filename, -1);
+}/*}}}*/
+
+Unshield* unshield_open_force_version(const char* filename, int version)/*{{{*/
+{
Unshield* unshield = NEW1(Unshield);
if (!unshield)
{
@@ -339,7 +357,7 @@ Unshield* unshield_open(const char* file
goto error;
}
- if (!unshield_read_headers(unshield))
+ if (!unshield_read_headers(unshield, version))
{
unshield_error("Failed to read header files");
goto error;
--- lib/libunshield.h.orig 2007-01-06 14:34:57 UTC
+++ lib/libunshield.h
@@ -33,6 +33,7 @@ void unshield_set_log_level(int level);
*/
Unshield* unshield_open(const char* filename);
+Unshield* unshield_open_force_version(const char* filename, int version);
void unshield_close(Unshield* unshield);
/*
--- man/unshield.1.orig 2008-02-15 16:36:33 UTC
+++ man/unshield.1
@@ -2,7 +2,7 @@
.SH NAME
unshield \- extract CAB files from an InstallShield installer archive
.SH SYNOPSIS
-unshield [\-c COMPONENT] [\-d DIRECTORY] [\-D LEVEL] [\-g GROUP] [\-h] [\-j] [\-L] [\-n] [\-o] [\-O] [\-r] [\-v] [\-V] c|g|l|t|x CABFILE
+unshield [\-c COMPONENT] [\-d DIRECTORY] [\-D LEVEL] [\-g GROUP] [\-h] [\-i VERSION] [\-j] [\-L] [\-n] [\-o] [\-O] [\-r] [\-v] [\-V] c|g|l|t|x CABFILE
.SH DESCRIPTION
Unshield extracts CAB files from InstallShield installers, used to
install software on Microsoft Windows based machines.
@@ -27,6 +27,11 @@ Only list/extract this file group
\fB\-h\fR
Show help message
.TP
+\fB\-i\fR VERSION
+Force InstallShield version number (don't autodetect)\n
+.br
+Use this option if you have a very old archive (generated with InstallShield <= 4) and / or the automatic detection fails
+.TP
\fB\-j\fR
Junk paths (do not make directories)
.TP
--- src/unshield.c.orig 2009-06-18 05:11:31 UTC
+++ src/unshield.c
@@ -58,6 +58,7 @@ static OVERWRITE overwrite =
static int log_level = UNSHIELD_LOG_LEVEL_LOWEST;
static int exit_status = 0;
static FORMAT format = FORMAT_NEW;
+static int is_version = -1;
static bool make_sure_directory_exists(const char* directory)/*{{{*/
{
@@ -108,7 +109,7 @@ static void show_usage(const char* name)
fprintf(stderr,
"Syntax:\n"
"\n"
- "\t%s [-c COMPONENT] [-d DIRECTORY] [-D LEVEL] [-g GROUP] [-GhlOrV] c|g|l|t|x CABFILE\n"
+ "\t%s [-c COMPONENT] [-d DIRECTORY] [-D LEVEL] [-g GROUP] [-i VERSION] [-GhlOrV] c|g|l|t|x CABFILE\n"
"\n"
"Options:\n"
"\t-c COMPONENT Only list/extract this component\n"
@@ -120,6 +121,7 @@ static void show_usage(const char* name)
"\t 3 - Errors, warnings and debug messages\n"
"\t-g GROUP Only list/extract this file group\n"
"\t-h Show this help message\n"
+ "\t-i VERSION Force InstallShield version number (don't autodetect)\n"
"\t-j Junk paths (do not make directories)\n"
"\t-L Make file and directory names lowercase\n"
"\t-O Use old compression\n"
@@ -152,7 +154,7 @@ static bool handle_parameters(
{
int c;
- while ((c = getopt(argc, argv, "c:d:D:g:hjLnoOrV")) != -1)
+ while ((c = getopt(argc, argv, "c:d:D:g:hi:jLnoOrV")) != -1)
{
switch (c)
{
@@ -172,6 +174,10 @@ static bool handle_parameters(
file_group_name = optarg;
break;
+ case 'i':
+ is_version = atoi(optarg);
+ break;
+
case 'j':
junk_paths = true;
break;
@@ -532,7 +538,7 @@ int main(int argc, char** argv)
cabfile = argv[last_optind];
- unshield = unshield_open(cabfile);
+ unshield = unshield_open_force_version(cabfile, is_version);
if (!unshield)
{
fprintf(stderr, "Failed to open %s as an InstallShield Cabinet File\n", cabfile);
+1 -3
View File
@@ -11,6 +11,4 @@ to Microsoft Windows.
- Be able to list contents of InstallShield Cabinet Files
- Be able to extract files from InstallShield Cabinet Files
SVN: https://synce.svn.sourceforge.net/svnroot/synce/trunk/unshield/
WWW: http://www.synce.org/oldwiki/index.php/Unshield
http://www.synce.org/moin/ComponentOverview
WWW: https://github.com/twogood/unshield
+1 -3
View File
@@ -1,8 +1,6 @@
bin/unshield
include/libunshield.h
lib/libunshield.a
lib/libunshield.so
lib/libunshield.so.0
lib/libunshield.so.0.0.0
lib/libunshield.so.1.4
libdata/pkgconfig/libunshield.pc
man/man1/unshield.1.gz