Browse Source

Cleaned-up, works nicely .. non-root fs creation.

master
freesource 23 years ago
parent
commit
6ce5f51284
  1. 43
      BootRoot/Yard.pm

43
BootRoot/Yard.pm

@ -160,12 +160,28 @@ sub read_contents_file {
} }
$contents_file_tmp = $contents_file; $contents_file_tmp = $contents_file;
unlink("$mnt/device_table.txt") if -e "$mnt/device_table.txt";
# Need to know whether genext2fs is being used # Need to know whether genext2fs is being used
my $fs_type = (split(/\s/,$main::makefs))[0]; my $fs_type = (split(/\s/,$main::makefs))[0];
# Open DEVICE_TABLE
if ( $fs_type eq "genext2fs" ) {
unlink("$mnt/device_table.txt") if -e "$mnt/device_table.txt";
system "rm -rf $mnt/loopback";
#<path> <type> <mode> <uid> <gid> <major> <minor> <start><inc><count>
# /dev is always needs to be made automatically
open(DEVICE_TABLE, ">$mnt/device_table.txt") or
($error = error("$mnt/device_table.txt: $!"));
return "ERROR"if $error && $error eq "ERROR";
print DEVICE_TABLE
"# <path>\t<type>\t<mode>\t<uid>\t<gid>\t<major>\t<minor>" .
"\t<start>\t<inc>\t<count>\n";
print DEVICE_TABLE "/dev\t\td\t0755\t-\t-\t-\t-\t-\t-\t-\n";
}
info(0, "\n\nPASS 1: Reading $contents_file"); info(0, "\n\nPASS 1: Reading $contents_file");
info(0, "\n"); info(0, "\n");
@ -201,6 +217,8 @@ sub read_contents_file {
,x ) { ,x ) {
if ( $line !~ m,<=|->, ) { # avoid repeats
my ($expr, $tmp_line); my ($expr, $tmp_line);
for $expr (split(' ', $line)) { for $expr (split(' ', $line)) {
if ( $expr && $expr =~ m,^/dev$|^/dev/, ) { if ( $expr && $expr =~ m,^/dev$|^/dev/, ) {
@ -210,7 +228,8 @@ sub read_contents_file {
if ($#globbed == -1) { if ($#globbed == -1) {
cf_warn($contents_file, $expr, cf_warn($contents_file, $expr,
"Warning: No files matched $expr"); "Warning: No files matched $expr");
} elsif (!($#globbed == 0 and $globbed[0] eq $expr)) { } elsif (!($#globbed == 0 and
$globbed[0] eq $expr)) {
info(1, "Expanding $expr to @globbed\n"); info(1, "Expanding $expr to @globbed\n");
} }
@ -237,6 +256,7 @@ sub read_contents_file {
else { else {
next LINE; next LINE;
} }
}
} }
@ -372,6 +392,11 @@ sub read_contents_file {
} # End of FILE loop } # End of FILE loop
} # End of LINE loop } # End of LINE loop
if ( $fs_type eq "genext2fs" ) {
close(DEVICE_TABLE);
}
info(0, "\nDone with $contents_file\n\n"); info(0, "\nDone with $contents_file\n\n");
close(CONTENTS) or ($error = error("close on $contents_file: $!")); close(CONTENTS) or ($error = error("close on $contents_file: $!"));
return "ERROR"if $error && $error eq "ERROR"; return "ERROR"if $error && $error eq "ERROR";
@ -1687,10 +1712,6 @@ sub device_table {
my $mnt = shift @devices; my $mnt = shift @devices;
my $error; my $error;
# /dev is always needs to be made automatically
open(DEVICE_TABLE, ">>$mnt/device_table.txt") or
($error = error("$mnt/device_table.txt: $!"));
return "ERROR"if $error && $error eq "ERROR";
#<path> <type> <mode> <uid> <gid> <major> <minor> <start><inc><count> #<path> <type> <mode> <uid> <gid> <major> <minor> <start><inc><count>
# start and inc are the tricky parts with the glob so they are being # start and inc are the tricky parts with the glob so they are being
@ -1698,6 +1719,9 @@ sub device_table {
foreach my $device (@devices) { foreach my $device (@devices) {
my ( $mode, $uid, $gid ) = (stat($device))[2,4,5]; my ( $mode, $uid, $gid ) = (stat($device))[2,4,5];
if ( $mode ) {
$mode = sprintf( "%04o", $mode ); $mode = sprintf( "%04o", $mode );
$mode =~ /^(\d*)(\d{4})$/; $mode =~ /^(\d*)(\d{4})$/;
my $type = $1; my $type = $1;
@ -1730,12 +1754,13 @@ sub device_table {
if ( $type eq "c" || $type eq "b" || $type eq "p" ) { if ( $type eq "c" || $type eq "b" || $type eq "p" ) {
print DEVICE_TABLE print DEVICE_TABLE
"$device\t$type\t$mode\t$uid\t$gid\t$major\t$minor\t-\t-\t-\n"; "$device\t$type\t$mode\t$uid\t$gid\t$major\t$minor" .
"\t-\t-\t-\n";
} }
} }
}
close(DEVICE_TABLE);
} # end sub device_table } # end sub device_table

Loading…
Cancel
Save