From 12684647dc4e4ab93c28eaff6d3326567ee59539 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 16 Mar 2005 11:42:54 +0000 Subject: [PATCH] MacOS Classic fixes and MPW support (thanks, Chris!). --- CHANGELOG | 3 +- CREDITS | 4 ++ physfsMPW.make | 145 ++++++++++++++++++++++++++++++++++++++++++ physfs_byteorder.c | 4 ++ platform/macclassic.c | 27 ++------ zlib121/zconf.h | 7 +- 6 files changed, 167 insertions(+), 23 deletions(-) create mode 100644 physfsMPW.make diff --git a/CHANGELOG b/CHANGELOG index 08e5a9fe..90b72f92 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,7 +2,8 @@ * CHANGELOG. */ -03162005 - Added missing translation (thanks, Danny!) +03162005 - Added missing translation (thanks, Danny!). MPW support and several + MacOS Classic fixes (thanks, Chris!). 03132005 - More mount work, added PHYSFS_getMountPoint() and more cleanups. Replaced all the C runtime allocations with PhysFS allocation hooks. Added pocketpc.c to EXTRA_DIST. Added allocation hooks to some diff --git a/CREDITS b/CREDITS index 644e4839..fc770aaf 100644 --- a/CREDITS +++ b/CREDITS @@ -77,6 +77,10 @@ Initial PHYSFS_mount() work: Translation work: Danny Angelo Carminati Grein +MacOS Classic fixes, +MPW support: + Chris Taylor + Other stuff: Your name here! Patches go to icculus@clutteredmind.org ... diff --git a/physfsMPW.make b/physfsMPW.make new file mode 100644 index 00000000..062fa3ee --- /dev/null +++ b/physfsMPW.make @@ -0,0 +1,145 @@ +# File: PhysicsFS.make +# Target: PhysicsFS +# Created: Saturday, November 20, 2004 09:37:58 PM + + +MAKEFILE = PhysicsFS.make +¥MondoBuild¥ = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified + +ObjDir = :obj: +Includes = -i : ¶ + -i ":zlib121:" + +Sym-PPC = -sym on + +PPCCOptions = {Includes} {Sym-PPC} -prefix ":Mac Classic Support:codewarrior_predefs.h" -enum int -alloca + + +### Source Files ### + +SrcFiles = ¶ + :archivers:dir.c ¶ + :archivers:grp.c ¶ + :archivers:hog.c ¶ + :archivers:mix.c ¶ + :archivers:mvl.c ¶ + :archivers:qpak.c ¶ + :archivers:wad.c ¶ + :archivers:zip.c ¶ + physfs.c ¶ + physfs_byteorder.c ¶ + :platform:macclassic.c ¶ + :zlib121:adler32.c ¶ + :zlib121:compress.c ¶ + :zlib121:crc32.c ¶ + :zlib121:deflate.c ¶ + :zlib121:gzio.c ¶ + :zlib121:infback.c ¶ + :zlib121:inffast.c ¶ + :zlib121:inflate.c ¶ + :zlib121:inftrees.c ¶ + :zlib121:trees.c ¶ + :zlib121:uncompr.c ¶ + :zlib121:zutil.c + + +### Object Files ### + +ObjFiles-PPC = ¶ + "{ObjDir}dir.c.x" ¶ + "{ObjDir}grp.c.x" ¶ + "{ObjDir}hog.c.x" ¶ + "{ObjDir}mix.c.x" ¶ + "{ObjDir}mvl.c.x" ¶ + "{ObjDir}qpak.c.x" ¶ + "{ObjDir}wad.c.x" ¶ + "{ObjDir}zip.c.x" ¶ + "{ObjDir}physfs.c.x" ¶ + "{ObjDir}physfs_byteorder.c.x" ¶ + "{ObjDir}macclassic.c.x" ¶ + "{ObjDir}adler32.c.x" ¶ + "{ObjDir}compress.c.x" ¶ + "{ObjDir}crc32.c.x" ¶ + "{ObjDir}deflate.c.x" ¶ + "{ObjDir}gzio.c.x" ¶ + "{ObjDir}infback.c.x" ¶ + "{ObjDir}inffast.c.x" ¶ + "{ObjDir}inflate.c.x" ¶ + "{ObjDir}inftrees.c.x" ¶ + "{ObjDir}trees.c.x" ¶ + "{ObjDir}uncompr.c.x" ¶ + "{ObjDir}zutil.c.x" + + +### Libraries ### + +LibFiles-PPC = ¶ + "{SharedLibraries}InterfaceLib" ¶ + "{SharedLibraries}StdCLib" ¶ + "{SharedLibraries}MathLib" ¶ + "{PPCLibraries}StdCRuntime.o" ¶ + "{PPCLibraries}PPCCRuntime.o" ¶ + "{PPCLibraries}PPCToolLibs.o" + + +### Default Rules ### + +.c.x Ä .c {¥MondoBuild¥} + {PPCC} {depDir}{default}.c -o {targDir}{default}.c.x {PPCCOptions} + + +### Build Rules ### + +PhysicsFS ÄÄ {ObjFiles-PPC} {LibFiles-PPC} {¥MondoBuild¥} + PPCLink ¶ + -o {Targ} ¶ + {ObjFiles-PPC} ¶ + {LibFiles-PPC} ¶ + {Sym-PPC} ¶ + -@export ":Mac Classic Support:physfs.exp" ¶ + -t 'shlb' ¶ + -c '????' ¶ + -xm s + + + +### Required Dependencies ### + +"{ObjDir}dir.c.x" Ä :archivers:dir.c +"{ObjDir}grp.c.x" Ä :archivers:grp.c +"{ObjDir}hog.c.x" Ä :archivers:hog.c +"{ObjDir}mix.c.x" Ä :archivers:mix.c +"{ObjDir}mvl.c.x" Ä :archivers:mvl.c +"{ObjDir}qpak.c.x" Ä :archivers:qpak.c +"{ObjDir}wad.c.x" Ä :archivers:wad.c +"{ObjDir}zip.c.x" Ä :archivers:zip.c +"{ObjDir}physfs.c.x" Ä physfs.c +"{ObjDir}physfs_byteorder.c.x" Ä physfs_byteorder.c +"{ObjDir}macclassic.c.x" Ä :platform:macclassic.c +"{ObjDir}adler32.c.x" Ä :zlib121:adler32.c +"{ObjDir}compress.c.x" Ä :zlib121:compress.c +"{ObjDir}crc32.c.x" Ä :zlib121:crc32.c +"{ObjDir}deflate.c.x" Ä :zlib121:deflate.c +"{ObjDir}gzio.c.x" Ä :zlib121:gzio.c +"{ObjDir}infback.c.x" Ä :zlib121:infback.c +"{ObjDir}inffast.c.x" Ä :zlib121:inffast.c +"{ObjDir}inflate.c.x" Ä :zlib121:inflate.c +"{ObjDir}inftrees.c.x" Ä :zlib121:inftrees.c +"{ObjDir}trees.c.x" Ä :zlib121:trees.c +"{ObjDir}uncompr.c.x" Ä :zlib121:uncompr.c +"{ObjDir}zutil.c.x" Ä :zlib121:zutil.c + + +### Optional Dependencies ### +### Build this target to generate "include file" dependencies. ### + +Dependencies Ä $OutOfDate + MakeDepend ¶ + -append {MAKEFILE} ¶ + -ignore "{CIncludes}" ¶ + -objdir "{ObjDir}" ¶ + -objext .x ¶ + {Includes} ¶ + {SrcFiles} + + diff --git a/physfs_byteorder.c b/physfs_byteorder.c index 68920baf..1071c2e2 100644 --- a/physfs_byteorder.c +++ b/physfs_byteorder.c @@ -30,6 +30,10 @@ #endif #endif /* linux */ +#if (defined macintosh) && !(defined __MWERKS__) +#define __inline__ +#endif + #if (defined _MSC_VER) #define __inline__ __inline #endif diff --git a/platform/macclassic.c b/platform/macclassic.c index ac5d9cc3..f1841a94 100644 --- a/platform/macclassic.c +++ b/platform/macclassic.c @@ -14,7 +14,6 @@ #include #include #include -#include /* * Most of the API calls in here are, according to ADC, available since @@ -138,7 +137,7 @@ static OSErr oserr(OSErr retval) const char *errstr = get_macos_error_string(retval); if (strcmp(errstr, ERR_MACOS_GENERIC) == 0) { - snprintf(buf, sizeof (buf), ERR_MACOS_GENERIC, (int) retval); + sprintf(buf, ERR_MACOS_GENERIC, (int) retval); errstr = buf; } /* if */ @@ -767,16 +766,10 @@ PHYSFS_sint64 __PHYSFS_platformRead(void *opaque, void *buffer, PHYSFS_uint32 size, PHYSFS_uint32 count) { SInt16 ref = *((SInt16 *) opaque); - SInt32 br; - PHYSFS_uint32 i; + SInt32 br = size*count; - for (i = 0; i < count; i++) - { - br = size; - BAIL_IF_MACRO(oserr(FSRead(ref, &br, buffer)) != noErr, NULL, i); - BAIL_IF_MACRO(br != size, NULL, i); /* !!! FIXME: seek back if only read part of an object! */ - buffer = ((PHYSFS_uint8 *) buffer) + size; - } /* for */ + BAIL_IF_MACRO(oserr(FSRead(ref, &br, buffer)) != noErr, NULL, br/size); + BAIL_IF_MACRO(br != size*count, NULL, br/size); /* !!! FIXME: seek back if only read part of an object! */ return(count); } /* __PHYSFS_platformRead */ @@ -786,16 +779,10 @@ PHYSFS_sint64 __PHYSFS_platformWrite(void *opaque, const void *buffer, PHYSFS_uint32 size, PHYSFS_uint32 count) { SInt16 ref = *((SInt16 *) opaque); - SInt32 bw; - PHYSFS_uint32 i; + SInt32 bw = size*count; - for (i = 0; i < count; i++) - { - bw = size; - BAIL_IF_MACRO(oserr(FSWrite(ref, &bw, buffer)) != noErr, NULL, i); - BAIL_IF_MACRO(bw != size, NULL, i); /* !!! FIXME: seek back if only wrote part of an object! */ - buffer = ((PHYSFS_uint8 *) buffer) + size; - } /* for */ + BAIL_IF_MACRO(oserr(FSWrite(ref, &bw, buffer)) != noErr, NULL, bw/size); + BAIL_IF_MACRO(bw != size*count, NULL, bw/size); /* !!! FIXME: seek back if only wrote part of an object! */ return(count); } /* __PHYSFS_platformWrite */ diff --git a/zlib121/zconf.h b/zlib121/zconf.h index 6846b798..c9f27ae1 100644 --- a/zlib121/zconf.h +++ b/zlib121/zconf.h @@ -3,7 +3,7 @@ * For conditions of distribution and use, see copyright notice in zlib.h */ -/* @(#) $Id: zconf.h,v 1.2 2003/12/22 18:19:09 bhook Exp $ */ +/* @(#) $Id$ */ #ifndef ZCONF_H #define ZCONF_H @@ -127,6 +127,9 @@ #if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) # define STDC #endif +#if !defined(STDC) && defined(macintosh) +# define STDC +#endif #if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ # define STDC @@ -139,7 +142,7 @@ #endif /* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)||defined(__MRC__) # define NO_DUMMY_DECL #endif