diff --git a/tools/mkfs7 b/tools/mkfs7 index 978c070..b99b200 100755 --- a/tools/mkfs7 +++ b/tools/mkfs7 @@ -47,6 +47,8 @@ use constant I_OWNERWRITE => 0000004; use constant I_WORLDREAD => 0000010; use constant I_WORLDWRITE => 0000004; +use constant I_LINK => 0000001; # Never used in an i-node: just internal use + # Directory field offsets use constant D_INUM => 0; use constant D_NAME => 1; @@ -388,6 +390,7 @@ sub parse_perms { $filetype = I_DIRECTORY if ( $permstring =~ m{^d} ); $filetype = I_SPECIAL if ( $permstring =~ m{^i} ); + $filetype = I_LINK if ( $permstring =~ m{^l} ); $perms |= I_OWNERREAD if ( $permstring =~ m{^.r} ); $perms |= I_OWNERWRITE if ( $permstring =~ m{^..w} ); @@ -439,6 +442,12 @@ sub parse_proto_file { add_special( $name, $perms, $uid, $inum ); next; } + if ( $type eq I_LINK ) { + my ( $name, $permstr, $inum ) = @words; + dprint("Adding link in curdir to $name inum $inum\n"); + add_direntry( $name, $inum ); + next; + } } close($IN); } diff --git a/tools/proto b/tools/proto index 4bf138b..db920b9 100644 --- a/tools/proto +++ b/tools/proto @@ -4,22 +4,25 @@ # filename f[r-][w-][r-][r-] uid local_file_to_insert # dirname d[r-][w-][r-][r-] uid [inumber] # device i[r-][w-][r-][r-] uid inumber +# link l---- inumber # # The top directory's name is ignored # Numeric values are in decimal # Contents of each directory ends with a $ on a line by itself # Format was inspired by 6th Edition mkfs # -dd drw-- -1 2 - system drw-- -1 3 - init frwr- -1 ../bin/init +dd drw-- -1 2 + system drw-- -1 3 + init frwr- -1 ../bin/init + ttyin irwr- -1 6 + keyboard irwr- -1 7 + pptin irwr- -1 8 + ttyout irwr- -1 10 + display irwr- -1 11 + pptout irwr- -1 12 + sh frwr- -1 ../bin/sh $ - ttyin irwr- -1 6 - keyboard irwr- -1 7 - pptin irwr- -1 8 - ttyout irwr- -1 10 - display irwr- -1 11 - pptout irwr- -1 12 + as frwr- -1 ../bin/as cat frwr- -1 ../bin/cat chmod frwr- -1 ../bin/chmod @@ -31,9 +34,10 @@ dd drw-- -1 2 ln frwr- -1 ../bin/ln ls frwr- -1 ../bin/ls mv frwr- -1 ../bin/mv - sh frwr- -1 ../bin/sh stat frwr- -1 ../bin/stat ken drwr- 10 + system l---- 3 $ dmr drwr- 12 + system l---- 3 $