mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-21 19:20:08 +02:00
dmg2img: create recipe with patch for gcc2.
This commit is contained in:
56
sys-fs/dmg2img/dmg2img-1.6.5.recipe
Normal file
56
sys-fs/dmg2img/dmg2img-1.6.5.recipe
Normal file
@@ -0,0 +1,56 @@
|
||||
SUMMARY="Converts Apple DMG files to standard HFS+ images"
|
||||
DESCRIPTION="dmg2img is an command-line tool for converting .dmg files, \
|
||||
popular on Mac OS X systems, to HFS+ disk images.
|
||||
A companion command-line tool, vfdecrypt, allows to decrypt encrypted Mac OS X \
|
||||
disk image files (also known as filevault disk)."
|
||||
HOMEPAGE="http://vu1tur.eu.org/tools/"
|
||||
COPYRIGHT="2007-2008 Jean-Pierre Demailly (dmg2img)
|
||||
2009-2013 vu1tur (dmg2img)
|
||||
2006 Ralf-Philipp Weinmann, Jacob Appelbaum, Christian Fromme \
|
||||
(vfdecrypt)"
|
||||
LICENSE="GNU GPL v2"
|
||||
REVISION="1"
|
||||
SOURCE_URI="http://vu1tur.eu.org/tools/dmg2img-$portVersion.tar.gz"
|
||||
CHECKSUM_SHA256="400a16cbe5cb2bf8a9eec4a43ef3546e0329f248bbd2a79f6d9a1ebc0b503308"
|
||||
PATCHES="dmg2img-$portVersion.patch"
|
||||
|
||||
ARCHITECTURES="x86_gcc2 x86 x86_64"
|
||||
|
||||
PROVIDES="
|
||||
dmg2img = $portVersion
|
||||
cmd:dmg2img = $portVersion
|
||||
cmd:vfdecrypt = $portVersion
|
||||
"
|
||||
REQUIRES="
|
||||
haiku
|
||||
lib:libz
|
||||
lib:libbz2
|
||||
lib:libcrypto
|
||||
"
|
||||
|
||||
BUILD_REQUIRES="
|
||||
haiku_devel
|
||||
devel:libz
|
||||
devel:libbz2
|
||||
devel:libcrypto
|
||||
"
|
||||
BUILD_PREREQUIRES="
|
||||
cmd:gcc
|
||||
cmd:ld
|
||||
cmd:make
|
||||
"
|
||||
|
||||
BUILD()
|
||||
{
|
||||
make $jobArgs
|
||||
}
|
||||
|
||||
INSTALL()
|
||||
{
|
||||
mkdir -p $binDir
|
||||
cp dmg2img vfdecrypt $binDir
|
||||
mkdir -p $manDir/man1
|
||||
cp vfdecrypt.1 $manDir/man1
|
||||
mkdir -p $docDir
|
||||
cp README $docDir
|
||||
}
|
||||
157
sys-fs/dmg2img/patches/dmg2img-1.6.5.patch
Normal file
157
sys-fs/dmg2img/patches/dmg2img-1.6.5.patch
Normal file
@@ -0,0 +1,157 @@
|
||||
diff -upr dmg2img-1.6.5/adc.c dmg2img-1.6.5-haiku/adc.c
|
||||
--- dmg2img-1.6.5/adc.c 2010-03-24 17:52:45.000000000 +0000
|
||||
+++ dmg2img-1.6.5-haiku/adc.c
|
||||
@@ -6,8 +6,6 @@
|
||||
|
||||
int adc_decompress(int in_size, unsigned char *input, int avail_size, unsigned char *output, int *bytes_written)
|
||||
{
|
||||
- if (in_size == 0)
|
||||
- return 0;
|
||||
bool output_full = false;
|
||||
unsigned char *inp = input;
|
||||
unsigned char *outp = output;
|
||||
@@ -16,6 +14,9 @@ int adc_decompress(int in_size, unsigned
|
||||
int offset;
|
||||
int i;
|
||||
|
||||
+ if (in_size == 0)
|
||||
+ return 0;
|
||||
+
|
||||
while (inp - input < in_size) {
|
||||
chunk_type = adc_chunk_type(*inp);
|
||||
switch (chunk_type) {
|
||||
diff -upr dmg2img-1.6.5/dmg2img.c dmg2img-1.6.5-haiku/dmg2img.c
|
||||
--- dmg2img-1.6.5/dmg2img.c 2013-07-23 11:04:39.000000000 +0000
|
||||
+++ dmg2img-1.6.5-haiku/dmg2img.c
|
||||
@@ -112,6 +112,8 @@ int main(int argc, char *argv[])
|
||||
char reserved[5] = " ";
|
||||
char sztype[64] = "";
|
||||
unsigned int block_type, dw_reserved;
|
||||
+ char szSignature[5];
|
||||
+ int rSignature;
|
||||
|
||||
for (i = 1; i < argc; i++) {
|
||||
if (!strcmp(argv[i], "-s"))
|
||||
@@ -181,9 +183,8 @@ int main(int argc, char *argv[])
|
||||
fseeko(FIN, 0, SEEK_SET);
|
||||
read_kolyblk(FIN, &kolyblk);
|
||||
}
|
||||
- char szSignature[5];
|
||||
szSignature[4] = '\0';
|
||||
- int rSignature = convert_int(kolyblk.Signature);
|
||||
+ rSignature = convert_int(kolyblk.Signature);
|
||||
memcpy(szSignature, &rSignature, 4);
|
||||
|
||||
if (debug) {
|
||||
@@ -221,6 +222,7 @@ int main(int argc, char *argv[])
|
||||
printf("Debug info will be written to dmg2img.log\n\n");
|
||||
|
||||
if (kolyblk.XMLOffset != 0 && kolyblk.XMLLength != 0) {
|
||||
+ char *_blkx_begin;
|
||||
//We have a plist to parse
|
||||
if (verbose > 1)
|
||||
printf("reading property list, %llu bytes from address %llu ...\n", (unsigned long long)kolyblk.XMLLength, (unsigned long long)kolyblk.XMLOffset);
|
||||
@@ -237,7 +239,7 @@ int main(int argc, char *argv[])
|
||||
if (debug && verbose >= 3) {
|
||||
fprintf(FDBG, "%s\n", plist);
|
||||
}
|
||||
- char *_blkx_begin = strstr(plist, blkx_begin);
|
||||
+ _blkx_begin = strstr(plist, blkx_begin);
|
||||
blkx_size = strstr(_blkx_begin, list_end) - _blkx_begin;
|
||||
blkx = (char *)malloc(blkx_size + 1);
|
||||
memcpy(blkx, _blkx_begin, blkx_size);
|
||||
@@ -253,6 +255,7 @@ int main(int argc, char *argv[])
|
||||
scb = strlen(chunk_begin);
|
||||
while (1) {
|
||||
unsigned int tmplen;
|
||||
+ char *base64data;
|
||||
data_begin = strstr(data_begin, chunk_begin);
|
||||
if (!data_begin)
|
||||
break;
|
||||
@@ -267,7 +270,7 @@ int main(int argc, char *argv[])
|
||||
if (!parts)
|
||||
mem_overflow();
|
||||
|
||||
- char *base64data = (char *)malloc(data_size + 1);
|
||||
+ base64data = (char *)malloc(data_size + 1);
|
||||
if (!base64data)
|
||||
mem_overflow();
|
||||
base64data[data_size] = '\0';
|
||||
@@ -300,6 +303,8 @@ int main(int argc, char *argv[])
|
||||
printf("partition %d: %s\n", i, partname);
|
||||
}
|
||||
} else if (kolyblk.RsrcForkOffset != 0 && kolyblk.RsrcForkLength != 0) {
|
||||
+ struct _mishblk mishblk;
|
||||
+ int next_mishblk;
|
||||
//We have a binary resource fork to parse
|
||||
plist = (char *)malloc(kolyblk.RsrcForkLength);
|
||||
if (!plist)
|
||||
@@ -307,8 +312,7 @@ int main(int argc, char *argv[])
|
||||
fseeko(FIN, kolyblk.RsrcForkOffset, SEEK_SET);
|
||||
fread(plist, kolyblk.RsrcForkLength, 1, FIN);
|
||||
partnum = 0;
|
||||
- struct _mishblk mishblk;
|
||||
- int next_mishblk = 0;
|
||||
+ next_mishblk = 0;
|
||||
mish_begin = plist + 0x104;
|
||||
while (1) {
|
||||
mish_begin += next_mishblk;
|
||||
@@ -372,6 +376,7 @@ int main(int argc, char *argv[])
|
||||
in_offs = add_offs = in_offs_add = kolyblk.DataForkOffset;
|
||||
|
||||
for (i = extractpart==-1?0:extractpart; i < (extractpart==-1?partnum:extractpart+1) && in_offs < kolyblk.DataForkLength - kolyblk.DataForkOffset; i++) {
|
||||
+ unsigned long bi;
|
||||
if (verbose)
|
||||
printf("opening partition %d ... ", i);
|
||||
if (verbose >= 3)
|
||||
@@ -385,7 +390,7 @@ int main(int argc, char *argv[])
|
||||
if (debug) {
|
||||
fprintf(FDBG, "\n run..... ..type.... ..reserved ..sectorStart..... ..sectorCount..... ..compOffset...... ..compLength......\n");
|
||||
}
|
||||
- unsigned long bi = 0;
|
||||
+ bi = 0;
|
||||
while (block_type != BT_TERM && offset < parts[i].BlocksRunCount * 0x28) {
|
||||
block_type = convert_char4((unsigned char *)parts[i].Data + offset);
|
||||
dw_reserved = convert_char4((unsigned char *)parts[i].Data + offset + 4);
|
||||
@@ -547,14 +552,14 @@ int main(int argc, char *argv[])
|
||||
fseeko(FIN, in_offs + add_offs, SEEK_SET);
|
||||
to_read = in_size;
|
||||
while (to_read > 0) {
|
||||
+ int bytes_written, read_from_input;
|
||||
chunk = to_read > CHUNKSIZE ? CHUNKSIZE : to_read;
|
||||
to_write = fread(tmp, 1, chunk, FIN);
|
||||
if (ferror(FIN) || to_write < chunk) {
|
||||
printf("ERROR: reading file %s\n", input_file);
|
||||
return 0;
|
||||
}
|
||||
- int bytes_written;
|
||||
- int read_from_input = adc_decompress(to_write, tmp, DECODEDSIZE, dtmp, &bytes_written);
|
||||
+ read_from_input = adc_decompress(to_write, tmp, DECODEDSIZE, dtmp, &bytes_written);
|
||||
fwrite(dtmp, 1, bytes_written, FOUT);
|
||||
to_read -= read_from_input;
|
||||
}
|
||||
diff -upr dmg2img-1.6.5/mntcmd.h dmg2img-1.6.5-haiku/mntcmd.h
|
||||
--- dmg2img-1.6.5/mntcmd.h 2010-03-24 17:52:45.000000000 +0000
|
||||
+++ dmg2img-1.6.5-haiku/mntcmd.h
|
||||
@@ -19,16 +19,17 @@ void read_gpt_entry(FILE * F, struct _gp
|
||||
|
||||
int print_mountcmd(char *filename)
|
||||
{
|
||||
- if (!filename)
|
||||
- return (-1);
|
||||
-
|
||||
unsigned int i, pn = 0;
|
||||
char tmp[128];
|
||||
struct _gpt_header gpt_header;
|
||||
struct _gpt_entry gpt_entry;
|
||||
struct _gpt_entry *gpt_ent_array;
|
||||
+ FILE *F;
|
||||
+
|
||||
+ if (!filename)
|
||||
+ return (-1);
|
||||
|
||||
- FILE *F = fopen(filename, "rb");
|
||||
+ F = fopen(filename, "rb");
|
||||
fseeko(F, 0x200, SEEK_SET);
|
||||
read_gpt_header(F, &gpt_header);
|
||||
|
||||
Reference in New Issue
Block a user