Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watnot!watmath!clyde!rutgers!seismo!ll-xn!ames!amdahl!oliveb!felix!macintosh From: macintosh@felix.UUCP Newsgroups: mod.mac.binaries Subject: DeskCheck (part 1 of 2) Message-ID: <2410@felix.UUCP> Date: Thu, 12-Mar-87 11:22:36 EST Article-I.D.: felix.2410 Posted: Thu Mar 12 11:22:36 1987 Date-Received: Fri, 13-Mar-87 23:59:41 EST Sender: macintosh@felix.UUCP Reply-To: ephraim@wang.UUCP (Ephraim Vishniac) Organization: Wang Labs, Lowell MA Lines: 194 Approved: bytebug@felix.UUCP (Roger L. Long) [DeskCheck - part 1 of 2] Attached is DeskCheck, a tiny application which checks to see that everybody's bundle (BNDL) is correctly constructed. Errors in bundle construction can propagate to the desktop file, causing no end of trouble for the Finder, including system hangs and bombs, and an unusually bloated Desktop. Finder 5.3 is relatively good about protecting itself, but earlier Finders were sitting ducks. Note that DeskCheck only looks for problems. Beyond telling you, it doesn't *do* anything about them. That's a job for ResEdit. As a Mac application, DeskCheck is a sorry example. It's utterly modal and provides only minimal user control over the files to be checked. Its purpose, however, was to quickly find problems in a large collection of PD and shareware stuff. Since the source code is included, someone with lots of spare time can improve the user interface. DeskCheck has been tested on the Mac Plus, Mac 512 (not 512E), and Mac XL. Target volumes have been floppies, ramdisks, an internal winchester, and a variety of external SCSI disks. Examining 2000+ files (about 60megs) on a 140meg SCSI drive takes about five minutes. The only "bomb" problem not fixed is that some defective resource files cause crashes in _OpenResFile. Short of doing my own sanity check of the resource fork before calling _OpenResFile, I don't see any way of fixing that one. [The only such file I found was the StdEnv file from ExperLogo. Other bogus resource files simply return errors from _OpenResFile.] In the category of minor annoyances, DeskCheck will make two pointless complaints about the Desktop file: that the bundle bit is off even though the file has bundles; and that the bundles don't assign it an icon. Both messages are perfectly normal. Anything else DeskCheck tells you about your Desktop file is *not* normal. As I tested DeskCheck, I was surprised to find minor errors in such Apple programs as Font/DA Mover and MacWrite (some ICN# resources were the wrong size). I was alarmed to find a major error in Disk First Aid (an ICN# resource is missing). I was overwhelmed by the number and variety of errors I saw in commercial, PD, and shareware items. One such error may clear up a historical mystery. Back in Finder 4.1 days, Rascal Billiards had a reputation for killing Hyperdrives. Now I see that it has a defective bundle, which could have caused a bloated DeskTop file, which might have sent the Hyperdrive's tenuous space/memory management out to lunch. Just a guess. [Moderator's Note: Below you will find the DeskCheck application itself. Part two of this posting will contain a PackIt file containing: DeskCheck.asm the main program FCensus.asm code from MacTutor for canvassing HFS volumes DeskCheck.rsrc resources used in linking DeskCheck DeskCheck.link MDS version 2 linker directives for DeskCheck A third posting to mod.mac.sources will contain ascii sources for DeskCheck.asm and FCensus.asm.] --- (This file must be converted with BinHex 4.0) :#84PFfY$D'9MD`""8&"-2j!%!*!)'T2%B`#3"!%!N!-B*3!!&b8!!!*Z!*!J#84 PFfY$D'9MD`)!N!0"8&"-2j!%!3#3")!@5`#3"%&38%`rN!3"!*!%J"C,!!kF3J! !r1!!N!81LFkF1ZmX!*!''T-!N)8B!*!$+!!!!53!N!-)!*!$)!!!2c`!!DR`!!! *I!#3!`&)EIrmU'kSrL!m!!$rrk!bU4+T-+R-3UHTHkK31hJ+@[lF3QF[2%*14%b TR$YIrZ4#VIlQ3UhqkN+YrZj#VIlb3QFr2!#!3UHTK6!I$%!!!@B!!"C1ZJ!83QF r2!#"3UHTK6!I$%!!!DRd6PEq`%(Zrm"#U!!-3qlq`#&*!"*#D!!F3Hlr`%+ZrX" 5D!!FS!F-32rGC`!!0LYS!",qjLmYrZB[,IlU,bhqlLmYr[+TLd*R2c`!MN+RUB8 `(`a!!!&Q`%(Zrm"1ZJ!8B,C#VIlQ6Pj1G80)480,38a-6PErmMmS!"B[+!!53UF r2!#@3UF[22q3"+Pm+eIqi+Kc,bhqi+Q",bhqi$mm!!4)E[rq5'lrqNKZrr+TM5* I,blrqLm*UBm[2!#3!`*)HJ!B6VS(`LmYrZ#TJdjH6R9$5%9$5dp148j@reK#EJ! 3,bhqi$mm!!*)E[pN5'lrB%KZreLTM5mZrf!LEJ!-,bN!%UQ2)Qi!$%UT!%"R!!( k3HlrKN+S!!a#U!!5-@N!&J!@)@i!#!!`5RJ$pQX!!!LL&8lk!!5J&6!S!""R!!! i5-""l[pQ+dMqjMmm!!#TlLmYrZB[,IlU,bhqlLmYr[+TLd*R2c`!JN+RUB8`(`a !!!&1qJ'8)Qi!$%*R,bN!%K(m!!!+AUQA%Icrr`TH-"pU!!"#-$J+B%M!3HlrCLY )rZBr2!!!UHi[,IlQ,bhqkLmYrZi[,IlbUBXalIlF#PT#Ccmm!)0#TkQ&-"m-3!! "6[S"0V"i#PKR!!%ZX'hqh'F!!5Bl32lH3QF[2%*14%bTR$BIYQhqj'F!!2`LEJ! -+fN!)2lf+fN!*2lk3LhqrN)Yr[m`+3!S#!!!$@B!!%B`!j!!EIlN5-""l[pQ+dM qjMmm!!#TlLmYrZB[,IlU,bhqlLmYr[+TLc(YrY`+@N*R2c`!K%+RUB8`(`a!!!% alIlH#PS`!dkk!,a+,IlqCJ!!3%(ZrfFV52lQ%2`!"##Yr[B[,IlQ,bhqkLmYrZi [,IlbUBXalIlF#PT#Ccmm!**#TkQ&-"m-3!!"-HhqhJTD5LhqrfB!!%""l[pR+dM qjK$m!!3JVIlk,bhqjLmYrZS[,IlZ,bhqmUQ,-Hhqh!TD3QFr2!#63UHTK6!I$%! !!6(YrYi+@MmYrYkTQM!i#PU`EIlFC`!!!M(YrY`+@N+YrZC1AL"I6qm!#%l33dK &3dY26N919[rk28$rrN+R,ca#6N4-2blrrUQG,9rrqN*R,blrqUQN-"q`EIlHCJ! !&L"ZrrUJ5L"ZrrUJ+5"ZrrT1ZJ!88flrrQE#6Pj1G94&8e4#98j%6PEqUNMR2$K #V[kZ3UlqULe)rr`S8#m)5'lreNKZrp*)E[l5UDK"l[rF+dMqjM!ZrpC)`$mm!!# TlLmYrZB[,IlU,bhqlLmYr[+TLd+R,blrr+QP+"mY42rB884V!!%f)"3b,!!%6VS "5MBX!!B-3`!"C`!!4$!$8N""l[kb+dMqkNM!2c`!!+RZ,bhqjLmYrZS[,IlZ,bh qmUQ,-Hhqh!TD3QFr2!#&3UHTK6!I$%!!!6(YrYi+@NRX!!KG4'X!!03-P%P$6L0 Q!!!+,8cqVNlk!&B-P%C548CQ!!!+,8cqUNlk!%4"l[kb-,`!"#&8!!*"k!!"+dM qkLmYrZB[,IlU,bhqlLmYr[+TLc(YrY`+@N*R2c`!Kd+RUB8`(`a!!!%alIlH#PS d,!!%4q`!"PP%D`!!B#!8-LX!!Nkk!5T(k`!%8FVrkLK,8F[rF%T%C`!!(M(YrY` +@N*R2c`!L8+RUB8`(`a!!!%alIlH#PSJE[kZ)QlqUNkk!QT#VIlQ3UhqkNcI($a 1ANje9%969%p148)alIlF#PT#Ccmm!)K#TkQ&-"m-3!!"-HhqhJTDB,j19[rB,8$ rr$e"rrL`VIlk9m#",Ilr3UF[,[rm2blrq+QJ)"pR!!!D5RJ+B'B!!"*#Cbm!UD3 `(l"YrYjR!!"N(A`!"2rl3HlrqbY)rZS[,IlQ,bhqkLmYrZi[,IlbUBX`,[ri5-" "l[rB+dMqlMmm!!#TlLmYrZB[,IlU,bhqlLmYr[+TLc(YrY`+@N*R2c`!KN+RUB8 `(`a!!!%alIlH#PT#VIlU3UhqlNjH6R9849088dP(6Nj@rl")jc`i,8$rq$e"rr3 GI!!%rrG"l[rh+dMqkM!Zrr4"l[r8+dMqlNM!2c`!!+RZ,bhqjLmYrZS[,IlZ,bh qmUQ,3UF[,[ri2blrp+QJ,9rrr%UZrraR!!!F5RJ+B'B!!"4#CbmZrrbTT$!IX'h qhQF!!#)alIlF#PT#Ccmm!)e#TkQ&-"m-3!!"-HhqhJTD6[S!c%+R,blrr+QP,9r rd#!Zrp""l[q`+dMqmMmm!!#TlLmYrZB[,IlU,bhqlLmYr[+TLb!ZrrJ-J%P$6L0 Q!!!`)#lrd!b!!!!"!'F!!)!alIlF#PT#Ccmm!)T#TkQ&-"m-3!!"-HhqhJTD6[S !B!b!4P*&4QB!!&BJ,[r3$)!!N!-'C!!!)M(YrY`+@N*R2c`!Ld+RUB8`(`a!!!% alIlH#PT1qJ!S$)!!!!%(C3!!(M(YrY`+@N*R2c`!M%+RUB8`(`a!!!%alIlH#PT #VIlU3UhqlN+Yr[*-ha`m6Pj1G94&8e426N956PEr[%MR1$JJ#'B!!#)alIlF#PT #Ccmm!)p#TkQ&-"m-3!!"-HhqhJTD6[S!m#!*CJ!!)M(YrY`+@N*R2c`!N!"#TkQ &-"m-3!!"-HhqhJTD6[S!bLK)1#N!"%IT!!C#Tbmm4P*&4MmV!!+TS#!IC`!!T%T i#Q"Q!!#F,8$r[%*R,`#TT$!IX'hqhQB!!)JJE[qm)&!J%,#Yr[CA`)%Yr[i`+!! %0L`!"%AX!!D`8QF!!'4&kJ!%8F[rp%M!3Hlr`#Y)rZir2!!!UHi`+`!#5-""l[r J+dMqkMmm!!#TlLmYrZB[,IlU,bhqlLmYr[+TLc(YrY`+@N*R2c`!N8+RUB8`(`a !!!%alIlH#PT#VIlU3UhqlNIV!!44c2p%60mF(%jH6R9849086%p$38j@rS4#Td* ZrS4"l[q'3UJ!$%+S!")aEJ!3!"BKEJ!-!$"$l[k')8N!%P*ZrS3aE[k%!"a+H!2 fD`C`#D*JB!+J$'F1$%$re@BU,9m!$'DfB#))+!!%!"jR"LmS!$"JUN*R5'lrKLm Z!!`JEJ!)6T!!5KpRPNjH)&p2l`!+6Y"'3f9ZFh9c!*!$!5!")!"D!%8!L!&L%3' J!)+K!*B!"J8!N!-#!+%!QJ!)!!J!N!1)J!#J!*J"!!S!N!3#d!*!!`!$$3!*+dY T194SDA-JF(*[Ch*KE5"TFb"TEL"dD'8JF(9LE'PM)'4[E@&TELiJ)&0PEQ3JC'P cDf9dG'8JB@jN)+!!QD%!QJ!)rr`!N!1)J!#J!*JU$$YcC@aQ,@&NC(*PFh0PC#` JFh4KEA"PC#"PERCPE'p`C5"QEh)JBfpYF'aPG'8JFfpeFQ0P)'0[C'8Z$D!!QD% !QJ!)rr!!N!1)J!#J!*JU$$G&,NdZ9QPcD'jTB@-J,b"3,NmZ)%*[H#!a-c8h)#m J4@&cG#""FQaTEQGdEfiX)%e")$!b-6FdS!#CS!#AS!#$r`!!!RX#H`!b!%-!V!& +%3'J!)+K!*B!"J8!N!-#!+%!QJ!)!#i!N!0pJ!#J!*J"!!S!N!3#d!*!!`!$$3! *+dP"084PFfY$D'9MDb"PH'&YD@jPFb"dD'8JCQPXCA-JEfiJB@aX)'e[G@jdC@3 JGQpXG@ePFb`JS!#CS3#D!!J!)J#3!hf!!+!!Q#S-1'a[EfYTEQFJCQpb)'4PCQ9 MG'PfC5"LG@jNE'9c,L!J3Q&N)'*eEQ4XCA-JBfpZG'&YD@jKG'8JS!#CS3#D!!J !&J#3!hf!!+!!Q#S-0AP[GA)J4'9cDh4[F#"QD@aP,#"MBA9cD@jR)("bEf*XC@e c)'C[FL"dD'8J4QPZC'9b,L!JS!#CS3#D!!J!#J#3!hf!!+!!Q#S-0NCTEQ4PFL! e,M-JDA-JCQ&TFQaj)'G[Ef3JBA3JFQ9cDA0dD@jR)(0eBfJJF(*[BQaPEA-X)+! !QD%!QJ!)rri!N!0pJ!#J!*JU$$GLGA3JC@&bE'PPFL"'D@jNCA*c,#"PFh"PBfP KE'aj)%CTEQ4PFL!d,M%X)'&bC5"PBA0TE(NJS!#CS3#D!!MrmJ#3!hf!!+!!Q#S -#Q0[EQCeFf9N,JfJ!*QK!*S!#2rQ!*!$IB!!S!#B+J`"$D!!QD%!QJ!)rpS!N!0 pJ!#J!*JU$$0%CA0V3fKPBfXJE@&VCA-JEQmJBA4dC@e`G#"dEb"bCA"KDA)JB@j j)("bEf*XC@ec,JfJ!*QK!*S!#2r1!*!$IB!!S!#B+J`e5A3JFfPYF'aj)'&NGQP cCA-JH@pe)'pQ)'&ZH5"cG(*KEQGP)(4SD@jRFb"TG#"QD@jNFbkJ!*QJ!*HJ!)2 r!*!$&J!J!&!!@J'`!!%"!!%!N!D@!AJ!N!1'!!8!N!AE!"3!l`"B"!*25`#3"GX !j!$[!5J%"&&eDA3!N!8,!%J!)J$YL"9AC@aMEfeP)(4[)%4PFfY$D'9MDb&[!*! &f`"N!1m!h)J35Q&ZG@&bH5!b15`J-6Ni0`#3"5B!$`#J!4E!!J#!!*!&R`!0!-d "+X!#!)%!N!0!!!%!N!@3!!"B!+3!P!3#6dX!N!8`!#N!F3$9L#"6CA4@Ef`J4Q& TE'9N)3d04A*bEh)JBfpNC5!p)&i`,J#3!c!!!3#3"C!!!&-!T!#I"!K#H@8YBRP P)3#3"6J!@!"3!*H)#8&XE#"NEfjP,J#3"%B!!3#3"C!!!&J!T!#8"!*25`#3"6J !+3"c!-L)*8p`C@j5CA0'D@aP)'CKD@aPC#%0$89bFQpb)'0[C'8J25"H-#j[!*! $6!!$!*!&'3!$!#d!)BJ'4QPXC6SJ!*!&'3!M!#d"@iJ")'J!N!8%!!-!'!!kL!G @EfaeE@8k,J#3"33!13!B!9Q)!5!!N!5!!!%!N!@C!&S!V3#@"!*25`#3"5d!"J# $!1U)Ae4SDA-JCQPXC5"SBA-JEfjP)'pb)'e[FQ8J3Nj%6(-X)'*eG#"dD'8JBR9 ZC'aP)'*TG#"TFb"ZEh3JFf9d,Jd06R9YBQ9b)'pQ)%*14%`JFQ9cEh9bBf9c)$d JAM!ZF`#3!eJ!!3#3"C-!@`#R!*F%!Np,!*!&-!!0!(3!jiJi3Nj%6#"H-#"SBA- JAM%JFQ9cEh9bBf8JG(P`CA-JD@jcG'9KC#"[CL"dD'8JCAK`C@0dC@3J-Li!N!0 F!!%!N!@5!&X!TJ#A"!*25`#3"5N!)!"p!0Z)2&4SC5"cD@GZBA4eFQ8JFQ9cEh9 bBf8JE'PcG'9N)'PZ)%*14%`JAM!X)&ia)&ib,#"TFb"YDA0cD@jR,J#3!fi!!3# 3"CF!A3#V!*N%!Np,!*!&*J!1!(!!jSK03Nj%6#"H-#"bC@CPFR-JG'mJFQ9cEh9 bBf8JG(P`C5!RAM%R,L!J9'KP)(9cG@&X)(4jF'9c)'&bC5!R4P*&4LFJB@jN)#G *3diM*blK!*!$0J!"!*!&PJ"F!+S!Q!3#6dX!N!9%!"3!G3$AL"9#6N4-)&i`)'P c)(4[Eb"cD'pbG#&d!*!$3!!"!*!&N`"E!+F!P`3#6dX!N!9"!"d!D`$8L#"#6N4 -)&i`)'Pc)'a[EQGPFL"dD'&Z)'9iF'9MG'9N,J#3!di!!3#3"C!!!&X!T!#A"!* 25`#3"8!!&!"K!1L),8P$6L-JAM)JDA-JAM-JBRPdCA-JD@jcG'9KC#"[CL"dD'8 JGA0eB@`J-M8f,L!!N!0U!!%!N!@1!&X!SJ#A"!*25`#3"5X!&`"f!0f)5NC548B JAM)JDA-JEfjXH5"H-b"LHA4PFb`JGfKTBfJJDA-JE'9cFb"dD'&Z)(4SC5"YD@j TEA9Y)%C548BJFfPkC5"[CL"cDAJZ!*!$CJ!"!*!&N`"E!+F!P`3#6dX!N!8Y!!` !G`$NL%9'8N9')&ib)'Pc)&ic)'*jG'9c)'a[EQFX)(GSD@0S)'9iBf9PC(-JG'K P)'eKH'PYG@dJ4P*&4L"cDATP)'pQ)$)f-Li8!*!$9!!"!*!&QJ"F!+i!Q!3#6dX !N!8l!!d!IJ$NL$0#6N4-)&i`)(*PCQ9bFb"dEb"bCA0[GA*MC5"H-5"H-L`JGfK TBfJJDA-JE@PcFfPZCbi!N!4@!!)!N!@@!"N!UJ"9"!C%Eb"TG#%!N!@@!*J!UJ$ 8"!C%EfiRG#%!N!8U!"3!B`$6L"j$D'9MDb"MEfjdC@jdFb"[CL"fEfaeE@8J)Pi `)Mm!N!0D!!%!N!@H!&X!XJ#A"!*25`#3"63!%3"a!1H)1N*14%`JAM!JC'pPFb" ZEh3JBfpZG'&TEL"dD'8JGA0eB@`JE'PcG#"[CL"*3diM)(*PFfpeFQ0PFbi!N!0 D!!%!N!@D!&X!VJ#A"!*25`#3"6i!$!"k!1@)1N*14%`JAM!JC'pPFb"ZEh3JBfp ZG'&TEL"dD'8JGA0eB@`JE'PcG#"[CL"'8N9')(*PFfpeFQ0PFbi!N!23!!%!N!@ Q!&X!ZJ#A"!*25`#3"4F!"3#D!1b)X%*14%`JAM!JFQ9QCA*c)(4[)%C548BJAM% X)(GSEh0P)'PMEfiJE'pMB@`J583JDA-JAM)Z$3e8D'Pc)'a[Bf&X)%P%)'Pc)(9 ZFQ9cEfafC@3Z)#"8D'&d)'Pc,#"TG#"TFb"ZEh3JG'KP)'a[Bf&X)%P%)'pQ)'& ZH5"YC@eLCA)JEfBJG'KP)%P$6L-JFQ9cEh9bBf8JE'PcG#"TEL"dD'8JFf&YC5" LG@jNE'8Z!*!$U!!"!*!&R3"E!,%!P`3#6dX!N!8X!!d!M!$RL)G8D'Pc)'CTE'8 RFb"LG@jNE'8JC'pPFfiRG#"KFh0TCfiJB@iJD@0[EL"dEb"dD'Pc)'CTE'8Z$3e 8D'9bC5Gc)'j[)%C548BJGfPdD#"K)'CTE'8JG(P`C5"dD'&d)'eKG'0SCA-JG'K TFb"QD@aP*h-JG(P`C5`JGfKTBfJJDA-J*ei`*bjm!*!$T!!"!*!&SJ"G!,B!Q33 #6dX!N!8V!!X!MJ$SL)48D'Pc)'CTE'8RFb"LG@jNE'8JC'pPFfiRG#"KF("PBA) JG'mJBQ8JCQpb)(4SDA-JCQPXC5i0$94SC5"2GfjPFNjKE@8JD@iJG'KP)'*eEQ4 XC5"NEf9cELGd)'eKG'0S)(4SC5"QD@aP*h-JBh*PBA4[FL`JGfKTBfJJDA-J*ei `*bi!N!--!$)!C!%X!C`!J%4%!*!$$!"Z!)B"0J&f!)*%4!#3!``!8!#+!4J"HJ# "4%3!N!--!)!!LJ&)!AS!Jd4%!*!$$!#!!)B"5!&f!)4%4!#3!``!J!#1!8J"IJ# &4%3!N!--!)!!LJ&)!AS!KN4%!*!$$!#!!)J"5!&i!)G%4!#3!``!J!#%!8J"G!# )4%3!N!--!)!!IJ&)!@i!L84%!*!$$!#!!)B"5!&f!)T%4!#3!``!J!#%!8J"G!# ,4%3!N!--!)!!KJ&)!AB!M%4%!*!$$!#!!)3"5!&d!)e%4!#3!``!@!#+!5!"HJ# 14%3!N!--!)!!L!&)!AJ!Md4%!*!$$!#!!))"5!&b!*!!4%3!N!--!)!!K!&)!A3 !N84%!*!$$!"m!)`"4!&m!**%4!#3!``!HJ#)!8)"H!#64%3!!!%!N!-B*3!!&b8 !!!*Z!!$-*!(B!*!$(!*Z!!4$6d4&!!%!+P"*3e3!!3"#4%a24`#3!eT%594-!"3 !CN&-8P3!%`&L!!$rrb!!N!3"XT`!!Irr*!!!(!!!bfJ!JIrr)!!*R!#3"B$rrb! !#X!!N!@@rrm!!!dr!*!&J2rr!!!0@3#3"B,rr`!!$H-!N!@"rrm!!!iR!*!&Jrr r!!!1@`#3"CErr`!!$U8!N!@%rrm!!!le!*!&KIrr!!!2H3#3"BErr`!!$p8!N!@ (rrm!!"!e!*!&L2rr!!!3T`#3"BRrr`!!%1%!N!@+rrm!!"%P!*!&Lrrr!!!4G`# 3"Bcrr`!!%H8!N!@0rrm!!"*2!*!&M[rr!!!5T`#3"Brrr`!!%`%!N!@3!2rr!!! 6A`#3"C(rr`!!%ld!N!@5rrm!!"54!*!&Nrrr!!!923#3"B$rr`!!&H8!N!@#rrm !!"Ae!*!&JIrr!!!@"3#3"B2rr`!!&K8!N!@%rrm!!"BP!*!&KIrr!!!@03#3"BE rr`!!&N8!N!@(rrm!!"C9!*!&L2rr!!!@C3#3"BRrr`!!&R8!N!@+rrm!!"D&!*! &Lrrr!!!@P3#3"Bcrr`!!&U8!N!@0rrm!!"De!*!&M[rr!!!@a3#3"Brrr`!!&Y8 !N!@3!2rr!!!@j3#3"C(rr`!!&[8!N!@5rrm!!"F&!*!&Nrrr!!!A&3#3"'hm!: ---