Path: utzoo!utgpu!watmath!clyde!att!rutgers!apple!bionet!agate!saturn!ssyx!koreth
From: koreth@ssyx.ucsc.edu (Steven Grimm)
Newsgroups: comp.binaries.atari.st
Subject: v03i038: fsck -- Filesystem consistency check/repair
Keywords: uuencode
Message-ID: <5674@saturn.ucsc.edu>
Date: 8 Dec 88 20:39:55 GMT
Sender: usenet@saturn.ucsc.edu
Lines: 322
Approved: koreth@ssyx.ucsc.edu

Submitted-by: uunet!unido!fbihh!lohse (Joerg Lohse)
Posting-number: Volume 3, Issue 38
Archive-name: fsck

FSCK - file system consistency check and interactive repair
===========================================================

FSCK is an interactive TOS program and it operated in the following way:

Device (A:, B:, C:, ...) ? 
  Specify drive. The drive is accessed  by BIOS calls.
  Therefore a harddisk driver must be installed if
  harddisk partitions are to be checked.

Repair file system (y/n) ?
  Specify wether to check only or to check and repair.
  "Repairing" means deleting corrupted files and
  directories in order to ensure the consistency of the remaining
  file system. Only if "repair" of the file system is
  requested the next question is asked

Interactive or automatic repair (i/a) ?
  Automatic repair means that every inconsistent file is
  immetiately removed. Interactive repair allows the operator
  to decide wether to delete a file or not. Of course, if a
  inconsitent file is not deleted the file system stays inconsistent.


FSCK was designed in 1986 to check for and ensure correctness of harddisk
partitions. Since then it has been in German PD software libraries and no
bugs have ever been reported. However, the user only is responsible for 
its use.


Normally the harddisk partitions are checked occationally, and
bad files and directories reported by FSCK are written to floppy disk
before the errors are corrected during a second FSCK run.

FSCK was inspired by Unix's 'fsck' and VMS's ANALYZE/DISK_STRUCTURE.

FSCK checks for the following conditions:

 - Overlapping files/directories.
 - Files/directories containing unallocated clusters.
 - Allocated but unused clusters.
 - Files/directories containing more or less clusters than expected
   after examining its directory entry's file length.

FSCK accesses the disk only via BIOS-calls, therefore it is not affected
by the "40-folder-bug". FSCK is written in Personal Pascal.


                                                        Joerg Lohse

---------------------------- code -- (cut here) ----------------------------
begin 644 fsck.tos
M8!H  "R*    -@  Q+(                  "!O  0B:  8T^@ '"/)   L
MP"/)   LQ"/(   LR"Q/W?S__]@ O_  *
M0IF_R6+Z0GD  "S,G@'0  
M+-)(;O_X3KD  "+P3KD  ",P6(\P+O_X0  +U1(>@!)#9*RP0E?#,\,  .[J3EXL7TYU26YT97)A
M8W1I=F4@;W(@875T;VUA=&EC(')E<&%I2]N*2 _( !$979I8V4@*$$Z+"!".BP@0SHL("XN+BD@/R  
M("T@9FEL92!S>7-T96T@8V]N0  +-)(;O_T3KD  "+P
M3KD  ",P6(\P+O_T@$SQ0  [NY@   H2'D  "]42&X ##\\__].N0  
M(&Y.N0  'Y!8CS Y  #NZ#U __8P+O_V3EXL7R!?WOP 4D[04F5P86ER("A9
M+TXI(#\@ $Y6   _+@ (/RX "C\N  PO+@ ./RX $C\\  1.34Y>(%_>_  ,
M3M O#BQ(3E;_]D'Z # M2/_\3KD  "J&0F<@;@ ,+P@_/  !/RX $#\Y  #N
M\DZZ_ZIR +!!5L(]0O_V,"[_]DY>+%\@7UR/3M!.5@  /RX "#\N  H_+@ ,
M+RX #C\N !(_/  $3DU.7B!?WOP #$[0+PXL2$Y6__9!^@ R+4C__$ZY   J
MAC\\  $@;@ ,+P@_/  !/RX $#\Y  #N\DZZ_ZAR +!!5L(]0O_V,"[_]DY>
M+%\@7UR/3M!.5@  /RX "#\\  =.34Y>(%]4CT[0+PXL2$Y6__)!^@ \+4C_
M_$ZY   JAC\Y  #N\DZZ_\PM0/_R<@"P@5?"/4+_]K"!9P  %"! 0_D  #'6
M,M@BV"+8(M@BV# N__9.7BQ?3G4O#BQ(3E;_\D'Z ,@M2/_\3KD  "J&<  S
MP   [O!R #U!__9T 3U"__0V.0  ,=X]0__R,"[_]+!N__)N  "4/R[_]# N
M__130'()XV!!^0  ,>A(<   3KK^AN) 9   :C N__0R.0  ,>#005- /P P
M+O_T4T!T">5@0?D  #'H2'   $ZZ_ECB0&0  #Q(>0  +U1.N0  'Y!.N0  
M'Y!8CTAY   O5$AZ # _/  43KD  "!N3KD  !^06(]P 3U __9@   *4F[_
M]&  _V0P+O_V3EXL7TYU0V%N)W0@/4'_^# N__JP
M;O_X;@  3#\N__HP+O_Z4T!R">-@0?D  #'H2'   $ZZ_@CB0&0  "1(>0  
M+U1.N0  'Y!(>@"4/SP $DZY   @;DZY   ?D%B/4F[_^F"J<  ]0/_Z,CD 
M #'>4T$]0?_X,"[_^K!N__AN  !0,#D  #'@,B[_^M!!/P!P">%A0?D  #'H
M2' 0 $ZZ_9SB0&0  "1(>0  +U1.N0  'Y!(>@ H/SP $DZY   @;DZY   ?
MD%B/4F[_^F"F<  SP   [O!.7BQ?3G5#86XG="!W)#9   *$AY   O5$ZY   ?D$AZ 2X_/  W3KD  "!N3KD  !^06(]@  $*
M-CD  #'FXD-D  !^XT$]0?_T=@GF:7H)ZV$Z+O_T/#P!_\I&TD5Z $'Y   Q
MZ!HP$  R+O_T4D'F:7 )X6$P+O_T4D# 1M) <  0,!  X4#:0#U%__0@/   
M__A(Q;J 7,$D/   __](Q;J"7\3"1.)!9   #'+_/4'_]F    8]1?_V8   
M@B8!XDO20SU!__1V">9I>@GK83HN__0\/ '_RD;217H 0?D  #'H&C 0 #(N
M__120>9I< GA83 N__120,!&TD!P ! P$ #A0-I /47_]# N  SB0&0   CH
M33U%__0P/ __RD ]1?_T,CP/^+I!;0  #'3_/4+_]F    8]1?_V,"[_]DY>
M+%\@7U2/3M!);G1E2R0ES#> &R1%_%AD7B0V0  "A(>0  +U1.N0  'Y!(
M>@%./SP -TZY   @;DZY   ?D%B/8  !+C8Y   QYN)#9   5.-!/4'_^'8)
MYFEZ">MA.B[_^#P\ ?_*1M)%.BX ## \ /_*0$'Y   QZ!&%$  R+O_X4D'F
M:7H)ZV$Z+O_X4D7*1M)%.BX #.!-$840 &   - F >)+TD,]0?_X=@GF:7H)
MZV$Z+O_X/#P!_\I&TD5Z $'Y   QZ!HP$  R+O_X4D'F:7 )X6$P+O_X4D# 
M1M) <  0,!  X4#:0#U%__HP+@ .XD!D   :< _*0#U%__HR+@ ,Z4':03U%
M__I@   B< S@;7(/RD%T#.5E/47_^C0N  PX/ __Q$3:0CU%__HP+O_XYFAR
M">-@,B[_^,)&T$$R/ #_RD$1A0  ,"[_^%) YFAT">5@-"[_^%)"Q$;00C0N
M__K@2L1!$8(  $Y>+%\@7UB/3M!);G1E.CD  #':2,6XA5[&QD;B0V0  "!!^@(<0^[_
MGA+\ "=V)A+84%/P *'PG%-E1SO_\? $]1O_P-BX 8GP!0?D  *_H$88P "0N %XV
M.0  ,=I(PY2#+4( 7C@N &(]1/_R/4  8DC!M(%?Q3PN__"*1N)%9 #^ZDC!
MM(%?Q7;_L$-6Q,I$1D;*1N)%9   GDZY   H $AZ 40_/  %3KD  "@22&X 
M##\\__].N0  *!)(>@$"/SP )DZY   H$B!?GOP 4B)/,MAP$R+840  +U1.N0  'Y!(>@"8/SP !4ZY   @;DAN  P_//__3KD 
M "!N3KD  !^06(]![O^>GOP 4B)/,MAP$R+84
M0_D  *_H,#P/OR+84+%\@7][\ %A.
MT"!H87,@;6]R92!C;'5S=&5R6-L:6,@;W(@;W9EC N_>RP;KYZ
M;@ %PC Y   QV#(N_8150<'!,CD  #'BT$$T+OWLT$(_ $AN_?9.NO2:XD!D
M   \2'D  "]43KD  !^02'H&>C\\ !5.N0  (&Y(;@ ,/SS__TZY   @;DZY
M   ?D%B/< $]0/W:8  %5'  /4#][@QN  _][FX !40P+OWNZT ]0/WP<@!!
M[OWV$C   '0 LD)6PW( $C   #@\ .6R1%;%QD7B0V0 !0P]0OWT<@$]0?WR
M#&X "/WR;@  1C N_? R+OWRT$%30'0 0>[]]A0P  !P(+1 9P  (C0N_?12
M0CU"_?0V+OWPUD%30W@ &# P $/N_=X3A"  4F[]\F"R,"[]\%! <@!![OWV
M$C   ' @LD!G  !J,B[]]%)!/4']]'0N0^[]WA."$ !V 3U#_?(,;@ #_?)N
M  !&,"[]\#(N_?+005Y = !![OWV%#   ' @M$!G   B-"[]]%)"/4+]]#8N
M_?#605Y#>  8,#  0^[]WA.$( !2;OWR8+(P+OWT'4#]WC(N_? &00 += !!
M[OWV%# 0 #U"_=PR+OWP!D$ &G8 %C 0 #(N_? &00 ;>  8,!  X4361#U#
M_88R/ $ 2,$M0;Y\."[]\ 9$ !QZ !HP0  X+OWP!D0 '7P '#!  "\!+P9.
MN0  *O0L'TC%VH8X+OWP!D0 'GP '#!  '@0Z:;:AC@N_? &1  ??  <,$  
M>!CIIMJ&+46^@'@0Q$1\ +1&9P "P$AN_=YP_R\ /SP +G3^+P).N0  '4@V
M'^)#9   XC8N_88R+@!@MD%G  #03KD  "@ 2'H$.C\\ !A.N0  *!)(;@ ,
M/SS__TZY   H$B!?GOP 4B)/,MAP$R+84LD5G
M  #03KD  "@ 2'H##C\\ !A.N0  *!)(;@ ,/SS__TZY   H$B!?GOP 4B)/
M,MAP$R+84/SS__TZY   H$B!?GOP 4B)/,MAP$R+84+0030N_>S0
M0C\ 2&[]]DZZ[[;B0&0  #)(>0  +U1.N0  'Y!(>@#X/SP %DZY   @;DAN
M  P_//__3KD  "!N3KD  !^06(]2;OWN8 #ZME)N_>Q@ /HV/R[]A$ZZ\AP]
M0/V$[]B)[\ %(B3S+8Z^A$/Y  "OZ# \#[\BV%'(__QP 3U __9P 3/ 
M  #N[# N__9.7BQ?(%_>_ !63M!&;VQD97(@ $)A9"!B86-K+6QI;FL@:6X@
M9F]L9&5R("XN0V%N)W0@=W)I=&4@=&\@9F]L9&5R($)A9"!S96QF+6QI;FL@
M:6X@9F]L9&5R($)A9"!S96-T;W(@:6X@9F]L9&5R( !&;VQD97(@:7,@8WEC
M;&EC(&]R(&]V97)L87!S(&%N;W1H97(@9FEL92!O R.0  ,=[0030N_?+00C\ 2&[]_$ZZ[4CB0&0  #!(>0  +U1.N0  'Y!(
M>@../SP &4ZY   @;DZY   ?D%B/< $SP   [NQ@  ,^<  ]0/WT#&X #_WT
M;@ #+C N_?3K0#U _?9R $'N_?P2,   = "R0E;#<@ 2,   .#P Y;)$5L7&
M1>)#9  "]CU"_?IR 3U!_?@,;@ (_?AN  !&,"[]]C(N_?C005- = !![OW\
M%#   ' @M$!G   B-"[]^E)"/4+]^C8N_?;605-#>  8,#  0^[]Y!.$( !2
M;OWX8+(P+OWV4$!R $'N_?P2,   <""R0&<  &HR+OWZ4D$]0?WZ="Y#[OWD
M$X(0 '8!/4/]^ QN  /]^&X  $8P+OWV,B[]^-!!7D!T $'N_?P4,   <""T
M0&<  "(T+OWZ4D(]0OWZ-B[]]M9!7D-X !@P, !#[OWD$X0@ %)N_?A@LC N
M_?H=0/WD,B[]]@9!  MT $'N_?P4,!  /4+]XC(N_?8&00 :=@ 6,!  ,B[]
M]@9! !MX !@P$ #A1-9$/4/]X#(\ 0!(P2U!_=@X+OWV!D0 ''H &C!  #@N
M_?8&1  =?  <,$  +P$O!DZY   J]"P?2,7:AC@N_?8&1  >?  <,$  >!#I
MIMJ&."[]]@9$ !]\ !PP0 !X&.FFVH8M1?W<> C$1'P M$9F  %N,"[]XG00
MP$*P1F<  *X_+OW@0F=.N0  * !(;@ ,/SS__TZY   H$DAN_>0_//__3KD 
M "@2/SP 7#\\__Y.N0  *!(@7Y[\ %(B3S+8) 9   GC\N_> O+OW<3KD  "@ 2&X ##\\__].
MN0  *!)(;OWD/SS__TZY   H$B!?GOP 4B)/,MAP$R+84T$$T+OWRT$(_ $AN_?Q.
MNNIXXD!D   D2'D  "]43KD  !^02'H ,#\\ !U.N0  (&Y.N0  'Y!8CU)N
M_?1@ /S,4F[]\F  _&!.7BQ?(%_>_ !23M!#86XG="!W0!#86XG="!R96%D(&UA:6XM9&ER96-T;W)Y "\.+$A.5O_V
M0?H P"U(__Q.N0  *H9P #U __IR CU!__@T.0  ,>130CU"__8P+O_XL&[_
M]FX  %I!^0  K^@2,   XD%E  !$/R[_^$ZZ[%YR +!!9P  -#\N__A.NN_(
MXD!D   2/R[_^#\\__!.NNWH8   %C\N__A"9TZZ[=HP+O_Z4D ]0/_Z4F[_
M^&"<,"[_^G( L$%G   N0?H ,$_O_ZXB3Q+\ "MP*A+840  +U1.N0  'Y!(>@"F/SP #TZY   @;DZY   ?D%B/
M8   )$AY   O5$ZY   ?D$AZ &X_/  23KD  "!N3KD  !^06(](>0  +U1.
MN0  'Y!8CTAY   O5$AZ "P_/  83KD  "!N6(](>0  +-).N0  (S!8CTAY
M   O5$ZY   >[D)G3D%081XP*0 *:Q8,0  &91 _ #\\ #XS?/__
M  I.05B/3G4O""(I '@@:0!TDHAG)$CG0, O""\!/RD "C\\ $!.0=[\  Q,
MWP,"2H!O!M' DH!FW"!?3G4@7S0?8 0@7W0 -A\,0@ !;PIR(&$  >I30F#P
M,@-A  '@3M!(^3]_   AGB!?<@UA  '.<@IA  '(+PA,^3]_   AGDYU(%]R
M#&$  ;1.T"!?-!]@!"!?=  B'W@ , %(P+"!9TI*@6H$1(%X 78 0_D  "'>
M>@!P"K* 8P92!=" 8/9\ +* 9022@ O&XHA7S?_T  $ ,!,!4@,B!F;68#8@
M7S0?8 0@7W0 ,A]X $I!:@1$07@!=@!#^0  (=YP # !@/P "C( 2$     P
M$P!2 TI!9NA*!&<&$SP +5(#MD)L#I1#4T)R(&$  1)1RO_X4T,2&6$  091
MR__X3M @7S0?=@!@!B!?-!\V'R)?2D)J!'0 %!E*0VL89Q:T0V4$- -@#I9"
M4T-R(&$  -!1R__X4T)K"A(980  PE'*__A.T"!?=@!@!"!?-A\P'^) 9 I#
M^0  (0%T!& (0_D  "#\= 5*0V<8:Q:T0V4$- -@#I9"4T-R(&$  ()1R__X
M4T(2&6%V4:I D$ #P ! # , 0 Y8P)> 6$*2@-G!%E#8.).T$CY PP  "&.(F\ 
M!!-! ( O"4ZY   AWDSY PP  "&.3G4                             
M                                                            
M                 "A?(E\O#$'I ( 2*0 !# $  F<(# $ "68  )8D*0 &
M2JD =&8F2.<@P"\(+P(_*0 */SP 0$Y!WOP #$S? P1*@&]VT<"4@&;63G4D
M:0!X)FD ?+?*9@1A&&#P<  4V%* M(!G!+?*9O0C2@!XD,!@SDCGX( B*0!X
M(&D ="-( 'B2B& P"\)3KD  "3X3-\# 0QI  0 "F0$
M$"D  THI  5F!$H 9]8,:0 $  ID$$(Y  #P%DHI  5F!$)I  ).T'H!8 )Z
M "!?)%\B5W  = !V $CGM. O"4AY  #P%&$ _T(R.0  \!18CTS?!RT, 0 M
M9@A* V9>0  \!1A /YR,CD  / 46(],WP\%#&D !  *9 Q**0 #4/D  / 69@I2
M0K!"9<06P6# L$)E!!2"8 (4@$[0"@!"860@9&EG:70@:6X@;G5M8F5R(&5N
M8V]U;G1E@$7< (,,P @$ !D$' %8 Q304CG0!!(>@$0< (O #\\  $_/ ! 3D'>_  ,
M3-\( F"8#   #68&4T%@  ">#   "F804T%(YT 02'H VG !8   D@P  !IF
M#$CG0!!(>@"\< Q@?@P  !AF-%-!8"A(YT 02'H H' ###, (!  9 )P!B\ 
M/SP  3\\ $!.0=[\  Q,WP@"4@!P< (O #\\  $_/ ! 3D'>_  ,3-\( PQ! ?]F /[R2.= $$AZ
M $9P B\ /SP  3\\ $!.0=[\  Q,WP@"( %.=4AZ %(P/  !8 A(>@ D,#P 
M B!,3OD  "P4"" ("" (&W @17AI=" ;<0T*&T->05)E0  
M*A!.^0  +"HO%T(Y  #P0B]\  #P0@ $3G5(^0<'  #P&B!?,!\,0/_^9A(P
M'R)\  #P&!/   #P&' !8 HB7TI :@1P ! 91?D  /!"<@ 2&C0!U$ ,0@#_
M8J 50O__U,%30&L&%-E1R/_\+PA,^0<'  #P&DYU2/D?'P  \!H@7S0?4T)K
M /]T.!\R'R1?<@ 2&K1!8@#_9# ?#$#__F82,!\B?   \!@3P   \!AP 6 *
M(E]*0&H$<  0&38 UD&V1&( _S850___1_(P 4GR$ %30&L.U,(7)+7,9?H4
MV5'(__PO"$SY'Q\  / :3G5(^0,"C_\@QH3E;_\&<4("C_\@QHW_S_[F<(#&A(#O_N9AY8@&<:
M<@ B3T2 Y(AD C+!4X!K"B+!4X!J^F "(%\B>0  +,#2_ $ L\]E#$AY   J
MX$[Y   L*D[0(]\  /%*(\@  /%&#"X ___\9@HM?   *M  #F (+7P  "K0
M  @@;O_\3M"]^0  \49FV"!Y  #Q2D[04W1A8VL@;W9E@ @'V=":@1$@%)%(A=G.&H$1(%2120 -@'&PDA"2D)G'C@!
M2$%*068LQ,1(0DI"9B36@FD@XD5D D2#+H-@"B0!2$(X &#B0I@ @'V8&
M,+R P$[0:@1$@%)%(A=G8&H$1(%21;* 9 A*!F=2* %@1&8(> %*!F<\8$1X
M %-$L(1B$+*$8@R"P$H&9P)(03@!8")T +* 8P92 M" 8/9X +* 9022@ 7$
MXHA7RO_T2@9G B@!XDUD D2$+H1@ D*7+PA,^0%_  #Q3DYU(%_?_    "A.
MT"!?,!\O"$AO  0@?   *_HSP   ++Y*>0  ++QF"%B/3M!8CR\/(\@  /%N
M(GP  "R*82 B7V$<(GP  "R1811*>0  +,QG""!Y  #Q;CG 0F=.02\)/SP 
M"4Y!7(].=3 Y   LOD)Y   LODYU(%\SWP  ++Q">0  ++Y.T$)Y   LODYU
M#0HJ*BH@ " J*BH-"@!#;W!Y!@X.!@&85!P.#DX.'@8.#@8*&!P.#DX.'@8.#@8*
M$@X.#C(.'@8.#@8F#@XR#AX&#@X&/ 8.#@8J&.@,& 8>!@X&"@&06 X.#C(&
M'@8.!BH.#C(&'@8.!FP2&(H\!APJ!@X&%@8.!@P&$ X@$ P&#@8,!@X&" 8(
M#@@&" :.' H<"AX*' H<"AP(("(0!B0B"!*L&#)*G JB$ @!% @,7A06("@J
M"I(4( H8 0%V"&)D% @&" 8,$@84* HJ!D *0@H:!D *( 8H&( .!@@&#@H.
4"!Y6% R&' 8&$ 8," @8!@H&"  4
 
end