jmunkki@santra.UUCP (Juri Munkki) (04/22/88)
/* Fixer.c April 22, 1988 Written by Juri Munkki This source code is in the public domain. The author makes no guarantees. Instructions Fixer is a very small application that I wrote to faciliate writing INIT and other code resources in Lightspeed C. What Does It Do? Lightspeed C always makes code resources purgeable and places them in the application heap. The code files are created by '????' and their type is '????'. To make an init resource work, I had to launch ResEdit, get info for the file and edit the file type to 'INIT', open the file and set the "System Heap" flag of the init resource. The last step is not always necessary, but if you're going to patch the system, it's the simplest way to do it. I wouldn't recommending placing system patches into the application heap. Fixer looks at a data structure in its resource fork. The file to modify should be in the same folder as the fixer application, or the name should be a path to the file. It then looks at the type and creator fields in the structure and changes the file type and creator accordingly. The FIXE 1000 resource also contains list of resources to be changed. Fixer looks for any resources mentioned in the list (the resource type and number are significant) and changes the resource attributes and name. How To Use? First copy the TMPL resource from the Fixer application to your copy of ResEdit. Then open the Fixer application with ResEdit and edit the FIXE 1000 resource. Close and save changes. Compile your INIT into the same folder as the Fixer application and transfer to Fixer. You should soon find yourself in the Finder. Your resource file should now be correctly set up and you can just place the init file into your system folder and boot. Disclaimer This piece of code was a quick hack written in order to get some work done with minimum bother. I wrote the program while chatting with several people on the Macintosh Relay Chat in BITNET. The chat is every Tuesday at 22 GMT. It worked on the first time I tried it, but I can't make any guarantees on it working with your mac. I take no responsibility on any damage caused directly or indirectly by either the Fixer application or the Sample Init. If you can't understand the source for this program, you probably shouldn't be using it. (I admit that it isn't "GoodCode", but it is so short that you should be able to understand it, if you're going to write INIT resources or stuff like that.) Please: If you like the program, let me know. Juri Munkki Helsinki University of Technology Computing Centre jmunkki@santra.hut.fi jmunkki@fingate.bitnet Otakaari 1, Room Y250A SF02150 Espoo, Finland */ #include <MacTypes.h> #include <ResourceMgr.h> #include <FileMgr.h> #include <ToolboxUtil.h> void main() { Handle FixHandle; FInfo Fi; int resFileID; register int i; register Ptr w; register Handle it; register int num; register long type; int resattr; FixHandle=GetResource('FIXE',1000); HLock(FixHandle); w=(Ptr)StripAddress(*FixHandle); GetFInfo(w+8,0,&Fi); BlockMove(w,&Fi,8); SetFInfo(w+8,0,&Fi); w+=8; resFileID=OpenResFile(w); w+=*w+1; w+=((long) w) & 1; SetResLoad(0); i=*(int *)w; w+=2; while(i--) { /* Action Advance pointer */ type=*(long *)w; w+=4; num=*(int *)w; w+=2; resattr=*(unsigned char *)w; w+=1; it=GetResource(type,num); SetResAttrs(it,resattr); SetResInfo(it,num,w); w+=*w+1; w+= ((long) w)&1; ChangedResource(it); } SetResLoad(-1); CloseResFile(resFileID); } /* The resources for the Fixer application follow: (This file must be converted with BinHex 4.0) :#NCTH'9b,R*cFQ-!FR0bBe*6483!N!J#4YFQ!*!%!3#3!`(l!*!$q`#3!dX(8%j 84`!*!*!%4&C63bX!N!-"5801)`!&!!&YX!!##NCTH'9b,R*cFQ0b!J#3!h*cFQ0 58d9%!3!!0J&!!*!%FR0bBe*6483"!!!f!8!!!#`3!*!1RT'3!&)!N!B#4J*`$i! #)!#!!J$!J!)"J)!#!3#!!JlJJ!)Im)!#(m#!!Kr!J!)Im)!#(r#!!JrJJ!)'`)! #!!#!!J!!J(rrrrb!!!!#J!!$qS!!!rU!!!!#J!!!!S!!!!+IrrrbP9998TUUUV+ 99995QUUUXRrrrr`$rrJ!!rrm!!2rrJ!$rrm!!rm!N!2*"&4jF'986N&0"d0bC@& dEh*86N&0#djKE@8J+&"KG'JT49088J9$Eh9ZG%p$6P3&+T!&6&083`48HA"P9%j "63C1G@eLCA*%9e*%#&*PFf9bGQ9N3N**9!G6HA0)C@&`3N**9!P3GA*RC@&LE'9 #3NP8"Na[BfYPC%*#593(8(*[G'9MG%*#593(8(*PE'pKC%*#593,9A"NBA4PC#! S-#P#3NP8#N&dG()JFR0bGQ4#3NP8"%jKE@928e45"5f3"8a69%8!N!-U58j*9%j 26N8,8f&YF'aP)%PZDA3!!8P1593!Bd!,8f&YF'aP)%PZDA3!N!-"!*!$!IX!N!2 l!*!$5`!&eNJ%DJ#3!a`!4J!"9%e36!#3!a*'59K&!*!$(J2S!*!+!qMrr`#3!md !"NN%"%C*@%9j%3: End of File! */