From: Linus Benedict Torvalds (torvalds@cc.helsinki.fi)
Date: 11/10/91


Subject: Linux fsck.c V0.10
Date: Sun, 10 Nov 1991 12:07:44 +0200
From: Linus Benedict Torvalds <torvalds@cc.helsinki.fi>

Ok, This is version 0.10 of the fsck program for linux. Everyone is
encouraged to use the (old) minix fsck program available on nic if they
want to, but as it isn't clear what the status of it is, I would rather
have one especially made for linux. This is it.

It's a fast hack (2 days), but it seems to work relatively well. It
doesn't repair a destroyed file-system, but it should tell you about
problems. Repair is on the way...

The reason I'm posting this is that I would like to get all the bugs
ironed out before it starts writing to a disk. Now it just reads, so
this version will not f**k anything up, even if it has bugs (and
hopefully there aren't any). Although it isn't commented, it might give
you an idea of what the file-system looks like.

This is NOT a standalone version to be used at bootup. It is meant to be
compiled and used under linux, on filesystems that aren't mounted. You
can use it on root, assuming there is nothing writing to the disk (and
this includes fsck itself: don't use "fsck -l rootdev > tmp" or
similar). This isn't recommended though (you might have two boot-disks,
one which boots from floppy just to use fsck on the normal
boot-partition).

                Linus
--------- snip snip -----------------------------------------
begin 644 fsck.c.Z
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
MW&Y-[;O?-T00P-$GQ'"/&^/@4XP<5BQQ\+ B>W<H< M3NZ4;UP$^39TR0EN
M<&C3.B:V[O9OTH/57D.XQ"MV9HJ!#>XTR H%(8 Q"/C !P.QQ <]).P4> +N
M!,1)T6V*SXJ_Z-T-ECS5E\%SR?V< *>?T+F858'40]!#-@RI# U^76S*7@2Y
M)WT*12C"$JQ7!"JD+SD/%_+=.V6&ZFQ%YZAV.PKX#@*Z#YT,$G0"&,6^=[A#
M\/ )2+P(.A,&@0WJ\JS6YQH@_W--HT[H9ST+^;1"]+0N5'SF9"=.V,D"5+>X
MB@); XQC@V(V,QW5]@Q^<RN80O2V_>G!AS$/;L!U5*.]]JIW-3I;X(,T1'9G
M6XB^'+K N,+'.UWWM/:42W^AO3P!B67O/AY4(,8R*#ZR:$]^6S/3NY[7[);
M< /D%WSGIW]%%U*(]51NY!+-H4X$&'YL('SC5WYB5X!IIWZHQG;MUP(]5'].
M)FQE@'TPHWWGXW_?QR=;@ ,#&($"9X"VAX";Q20+* <-F (/*'XOX($KN 8M
M&(+[EWTP^&!D,8,U>(,1"&,EH(,4V&8(IP!"9X"887ISP&T-1W%>IQ%@]VK+
MQ0)?Q#W>0X+1=%9SAFI?=QG'EFNPUH7$TSW?@VS+-8;/]W;,AUF55W>+EWF=
M-X<0%!N )WB$9WC.@G@YHGAE@'<&X7@<(W"21WF6IW]X>$\/E5;\E%%YF$&8
M!7JB1WJF]Q[Z!XDLD5:0%X<H4%JG58<@, 6XXT"DN!/6)WIBD![4T5H,(1-R
M8DTQX8D!HWJA*'E:9UB6!P-35W6,V$.E(0,T$(BA-X@B\ 0B9A(QT"EI-0<O
M(%E%X2]PP("/IXA/%P*\-5[U0W71TU4@X /1(U[D-075M76MJ(RO.(3E<U98
MU2@YLA0&@XN@J(TY$0*_Y8W!" +[J%3CZ(_F6%XBA(RN"(ME!8_1&!%]0A:W
M2%&Y"#.[^%X894T]5!7^03"9-SW5(P0+U$!2D$+X"'7)59' )HBAEFX'LHF4
M-"L$\QH6]DX9E2XO-9'G U]*,E_4D9%CL)$?-9(AD%S^10<&J8Q5L))3T9)*
MH4\PR6HR:4V\HGM#&8K]E9/7M)/ZA ):!Y15*5]%F9)'67I)Z1M+^9(9X93]
ME"Z2!1?RM8M/UXU*I0+#>'EXJ(5PT#]=)9>>MT%?*61AR9*^T8FZ=U9NF1/_
M. 5ZJ8?98XJ.J'=N>)>'F9B6^'E]J9)B>7J=N):$.9(3])$.1(>-Z(-U29%/
MN6*=R4"?29GK")9(B9D^:##GXV@C&5NSQ6RW-5>69YN$A8PG1P??(P)7 #*Z
MH2E&,!QTL):6YP0ND4-[A1&259B],R_XEP"]^9LEX)#H- <YUS\>M3_G5YU"
M=IVI!S/:J6\LL)5G!YXB4)Q\Y5=A(%D]()XH<)TIL)VZB5LL0)NTY5;-AEO?
M>7&^*61:4%1K&)]DL)U\MT*]:';6IYY-$ 9XP#T&NIV\=(GK1VOCA'ODHWL%
M@2ET<$[G8W38^6+'EP 96DX;BDZ[ATZ9)(I1QQ+@*'7DZ#_(.&P%DDWVE0"4
M9$DKL +QIZ(]Y$WG P(K8'7QMXU"F9-; &-=,)V2]S]), 5$X%9@6 8F2$>@
MEXQ\1$F:T:-GUR?N\J2N,P524 1'4*57>CY9&DB#E!E>:GU@2B1/!Z53, 1(
MP#O]UWUSI*;(F "VA#)OFAQQ&BYS.J;PLP1HJJ=8VJ=I!:@^FH$18G=E8'V?
M$TF!*GDAT*-)*E]+.G[(N*GVT:E=T (M4'(V"IN*T81")R+[5$.51(4%9H4G
M.CX@:C'N-:1!JJ)%JCJLXSJPTZ*8JGO@& )T.J5XNGV*RJ>K*62NBBPJ*C1
M<C5[E!)<F@>LMQ?-5$5L=H*A]GNJI >EUG3;"*XP6G7D.HY9AUOJF'\76""R
MY*(]VI6A2JY-:GWR2@=;0*^D:JKMVA--F*VJM*W;%1.8YZW-0:ZR6EQ&I'Q\
M-U!MITII *S;*+ [<VQF5J/]^JXNF'WDR@($6'*\XFI>! (\E@9V(X>3F3T^
MX /)0[+ATJ/(2+%\$DXB6A'Z08,2]8!IT*3\FGX%$@/_JK#:&A_<VDH$6[-5
MA+#!9J(*FWP1N'PI6P0.&V$2FX\R&VH(B[$^"P(:ZX-%U[$?6W'<(;+ 6+(G
M.WE[600KV[(E"[/6=[7GA'E!F%A$F+,LN 4[VX-;"[31YH0-=Q(CPJU3:+#A
MDK ,E7LJ>JNINA<N:K+@:+)89T4<N:[HIW:1]W2@BJ\[&Y#)DP ! 0+H81X>
MTR YR21 TR$;HG]Y\ -Y87TV^J.X&CVZ&BY'FH_%2J5YZGU8"@(F8 *51Z=E
M>J:YNZ>* 7JO*[8L0;8NFP;3M[QNFQQ7FZC_!WYY6W)P>[3#"X "*'!PRQ5N
M@'G9"WXJZ'/2AFV]^07!L1:PZFU+&V&8Q+B&LG"NQ@.XY$IKP9L ^ILO4 *!
M00..%FNLI$MIT*,\BVKJ^0+7ZK?8QJIK\ 60$FJSBKA#6A![%!N$ZST'<1D)
M2TL+^[0-6W(1G*(3C*IE\*/.^@8EAV([U**QMQ4YYK6V5\$8K&@OP'<>RX(E
MMT-7&7Q$FA,S?!E)]D%IRQ-%^H$/ZQL]5! U6[?J9"Q+U +W![L6TT,>6JNA
M)F&U"W4_3)0@T'7!NA[@.$YCT :")@(NL&\RUZ?J*02P.*U]I!F:<@(N< +A
M,@=#$Q%\E7/G-ZC'FP!L)WE;?$W$: -.BJ1@7'5B3,9"Y@)G#, !I\;Y*V1L
M['"/0:U^%,>,3,?0VE IX1$'JF][+*F_X;/KU[CHI+66*XJO4L@Y<49O,"20
M7',B4 (V0!95=@.^L6_FPP+#BZ7I":#H^QIH@ +_*<O\&P/^VV[;N4,L<+O'
M6H+)6KP_( )9EF6AR'8,++@D.)*ZU[NG.*;&*KW$BSZLK&&6T4K H2$\ *\
M]$E%$$I(T*?C1!)R8<[MI$OUF\YH0'[,C,SGE\^OA :!BG9C@&!IH& ,O,UG
M!]!KL:\9V+=/>&"0<=#ME-"$*V%+&\)6?$2/47(73$V*UJ)[=)5":C%%:CY9
M3*S@3*5[E*;%6YG7LA('XB?GYA*A&+*!'$LN&\CKW-)ZRCT[#=) O *#C(S9
M_, H(,-"392J^K?9/)13V&U62+6,&[)IT -!8;;K[#_.NP+E')2=Y@:[=L4\
MX<TE709XVP4NH+M#ZLUQ)-98:GW4&<DB<-9)1A9T=#$<H3%:\<FZ?'Z2EUR>
M!FJNE@(J<-9IO=8Z5*E%T0,]E+EIW:<=81]N4<(-2M=V?9WL%C0% FJ\P=@&
M2GRE2P83:I[6EP:\'-9C7=C33,TB<"S[AM@[J]BN%TF]EQR07;T/'6YC>]7W
M.5=:[8_JVM7E/+!B3=AIP!..C6M\@I.<FK=R/=G?40>6G1SJ.:"HH]E)QMG9
MQC-LN22D?9W;>=HL8-RKG=RMG66P7=ZY-I21?:'EJU\CLKY66(9T4*7.;1]<
MR)V3JP)>^#TJD+EP:-]GV-Q#N=]:Y]]K^(4J<*]PF,W4B *\VCK2TX,%/=$(
MS6 2OCH4#CL"]]0Y.87DFVG-414QH7W-D1EG, ;$MU\%H>)V,-5/I^(,X<TJ
M ./XZV\BI\-)#.-9G$!T6!#^ T .5$*FR'>5V8XD7!%K&(KQ.Q5M(@<K3JJ<
M.YTP/M"2!^-; / Q.6F> (M< )]*GDP-W)]F@!"LFWG-W"2*M>AYR0S,W)7
MJ>5<_J6B_.04D5 ]2N?UFAPFBB%T,#51?@9VL.5=WJ1=[.9CH"(4<0)L< *:
MPD9 RVJTMP9GEQR+[BXG$ :0WBN4-$9C@-4\QD5R(.J4'H*6KNB,#@(G( >=
M'D:?3DN8]!O$4NJ3+@:5?NE^NNKET>FN/"2FCNNHKNN9WNAST.D+> ?!GNNJ
MKNEMT.EO/<[+/NQN;CIAQ 9TH"EICBG$?.EL]\?;6.8R9WW;'FH"]SI7N1]N
MD-1PGD3,3.H_\ 1?( 5$< 52H /R3N\TQ019P)E.<+)RMJRCUYKOH>ZLWFXG
M$(I0>)DBGL(,EF-O\*H?KN$C^>OHD^C63=?Y1LL&)DCPUB'E*0+6-\NU+!N5
M_,8Y$O(CS_$QI#76!',@GW,K7_)IQ34[$O/Z-O,F!4DJGQPB0*I WP(R[_,L
M_\ A?]MHY_&9\7(G7ZTL\*=.<L,P@S)(S]A0K )N7*W)Q ([JA17G_5^]&RE
'?*HH(&<(!_&9
 
end