--- uae-0.8.15/src/zfile.c.orig Mon Feb 28 16:29:55 2000 +++ uae-0.8.15/src/zfile.c Thu Mar 1 03:52:42 2001 @@ -126,7 +126,26 @@ if (!dst) return 1; #if defined AMIGA || defined __unix - sprintf (cmd, "unzip -p %s '*.adf' >%s", src, dst); + sprintf (cmd, "((unzip -pL %s '*.adf' )|| + (unzip -lL %s '*.adz' >/dev/null && + unzip -pL %s '*.adz'|gunzip) || + (unzip -lL %s '*.dms' >/dev/null && + unzip -pL %s '*.dms'|xdms u stdin +stdout) + ) >%s", src, src, src, src, src, dst); + return !system (cmd); +#endif +} + +/* + * dms usage + */ +static int undms (const char *src, const char *dst) +{ + char cmd[1024]; + if (!dst) + return 1; +#if defined AMIGA || defined __unix + sprintf (cmd, "xdms u %s +%s", src, dst); return !system (cmd); #endif } @@ -150,6 +169,8 @@ return bunzip ("bzip", name, dest); if (strcasecmp (ext, "bz2") == 0) return bunzip ("bzip2", name, dest); + if (strcasecmp (ext, "dms") == 0) + return undms (name, dest); #ifndef __DOS__ if (strcasecmp (ext, "lha") == 0 @@ -187,6 +208,9 @@ || access (strcat (strcpy (nam, name),".ZIP"),0) >= 0) return unzip (nam, dest); #endif + if (access (strcat (strcpy (nam, name),".dms"),0) >= 0 + || access (strcat (strcpy (nam, name),".DMS"),0) >= 0) + return undms (nam, dest); #if defined(AMIGA) /* sam: must be before real access to work */