Browse Source

This improves some unmounting problems.

master
freesource 23 years ago
parent
commit
44b5893be8
  1. 97
      BootRoot/Yard.pm

97
BootRoot/Yard.pm

@ -1688,15 +1688,20 @@ sub which_tests {
$login_binary = "$mount_point" . find_file_in_path("login");
# This goes first so we define %Termcap for use in children
## This now checks for ncurse setups, too.
return "ERROR" if errm(mount_device($device,$mount_point)) == 2;
check_termcap();
return "ERROR" if errum(sys("umount $mount_point")) == 2;
##### Here are the tests.
my $t_fstab = $chosen_tests->{30}{test_fstab};
my $t_inittab = $chosen_tests->{31}{test_inittab};
my $t_scripts = $chosen_tests->{32}{test_scripts};
return "ERROR" if errm(mount_device($device,$mount_point)) == 2;
sys("yard_chrooted_tests $mount_point $t_fstab $t_inittab $t_scripts",
"TESTING");
return "ERROR" if errum(sys("umount $mount_point")) == 2;
return "ERROR" if errm(mount_device($device,$mount_point)) == 2;
@ -2101,31 +2106,77 @@ sub check_init_files {
sub check_termcap {
my $error;
open(TERMCAP, "<$mount_point/etc/termcap") or
( $error = error("No file $mount_point/etc/termcap"))
;
return if $error && $error eq "ERROR";
while (<TERMCAP>) {
chomp;
next unless $_;
next if /^\#/; # Skip comments
next if /^\s+/; # Skip non-head lines
##### Get complete logical line
my($def) = $_;
while (/\\$/) { # Trailing backslash => continued
chomp($def); # Discard backslash
chomp($_ = <TERMCAP>); # Get a line, w/o newline char
$def .= $_;
}
##### Extract terminal names from line
my($names) = $def =~ /^([^:]+):/;
my(@terms) = split(/\|/, $names);
@Termcap{@terms} = (1) x ($#terms + 1);
# Let's first discover whether termcap or terminfo exists
# we can decide how to interpret the termcap info.
# terminfo first
# We assume a terminfo file is not being used .. hum
if (-d "$mount_point/etc/terminfo") {
# There should at least be a linux entry, and infocmp needs to exist.x
my $infocmp = "infocmp -A $mount_point/etc/terminfo -C linux|";
open(TERMCAP, "$infocmp") or
( $error = error("No file $mount_point/etc/terminfo/l/linux"));
return if $error && $error eq "ERROR";
while (<TERMCAP>) {
chomp;
next unless $_;
next if /^\#/; # Skip comments
next if /^\s+/; # Skip non-head lines
##### Get complete logical line
my($def) = $_;
while (/\\$/) { # Trailing backslash => continued
chomp($def); # Discard backslash
chomp($_ = <TERMCAP>); # Get a line, w/o newline char
$def .= $_;
}
##### Extract terminal names from line
my($names) = $def =~ /^([^:]+):/;
my(@terms) = split(/\|/, $names);
@Termcap{@terms} = (1) x ($#terms + 1);
}
}
close(TERMCAP);
}
# termcap next
elsif (-e "$mount_point/etc/termcap") {
open(TERMCAP, "<$mount_point/etc/termcap") or
( $error = error("No file $mount_point/etc/termcap"));
return if $error && $error eq "ERROR";
while (<TERMCAP>) {
chomp;
next unless $_;
next if /^\#/; # Skip comments
next if /^\s+/; # Skip non-head lines
##### Get complete logical line
my($def) = $_;
while (/\\$/) { # Trailing backslash => continued
chomp($def); # Discard backslash
chomp($_ = <TERMCAP>); # Get a line, w/o newline char
$def .= $_;
}
##### Extract terminal names from line
my($names) = $def =~ /^([^:]+):/;
my(@terms) = split(/\|/, $names);
@Termcap{@terms} = (1) x ($#terms + 1);
}
close(TERMCAP);
}
else {
$error = error("No termcap file or terminfo directory.");
return if $error && $error eq "ERROR";
}
} # end sub check_termcap
##### END OF CHECK_ROOT_FS

Loading…
Cancel
Save