home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Caldera Network Desktop 1.0
/
caldera-network-desktop-1.0.bin
/
images
/
ramdisk2.img
/
usr
/
lib
/
perl
/
swap
< prev
next >
Wrap
Text File
|
1995-10-06
|
3KB
|
192 lines
### -*-perl-*-
# This is a new 2 stage swap module
# select_swap, init_swap
@swappars = ();
sub select_swap {
local ( $found, @swapinfolist, $msg, $ent, $par, $blk );
local ( $p, $r );
&rhs_infobox ("Swap Space",
<<EOM
>
Looking for swap partitions...
>
EOM
, 50);
@swapinfolist = ();
$found = 0;
open(SAVEERR, ">&STDERR");
open(STDERR, ">/dev/null");
open(PROC, "fdisk -l |") || die "Can't call fdisk!";
while (<PROC>) {
if (/^(.{10}).{5}(.{31}).*Linux swap$/) {
$p = $1; $r = $2;
$p =~ s/\s$//;
if (! &member($p, @swappars)) {
$swapinfolist[@swapinfolist] = "$p $r";
}
$found = 1;
}
}
close PROC;
open(STDERR, ">&SAVEERR");
if (! $found) {
&rhs_msgbox("Notice",
<<EOM
>
No swap partitions were found.
>
If this is an error,
back up and reconstruct your partitions. Swap
partitions must be designated as type 82.
>
EOM
, 60);
return 0;
}
if (@swapinfolist == 0) {
&rhs_msgbox("Notice",
<<EOM
>
All swap partitions are active.
>
EOM
, 45);
return 1;
}
foreach $ent (@swapinfolist) {
$ent =~ /^(.{10}).{22}(.{8})/;
$par = $1;
$blk = $2;
$par =~ s/\s$//;
if (&rhs_yesno("Add Swap",
<<EOM
>
This appears to be a swap partition:
>
> Device Begin Start End Blocks
>$ent
>
Do you want to use this as a swap partition?
>
EOM
, 52)) {
$swappars[@swappars] = $par;
$swapparsblk{$par} = $blk;
}
}
return 1;
}
sub init_swap {
local ($ent, $ret);
open(FD, ">/tmp/swap");
foreach $ent (@swappars) {
print FD "$ent\n";
&rhs_infobox ("Format Swap",
<<EOM
>
Formatting and initializing $ent as swapspace.
>
This may take a minute.
>
EOM
, 70);
$ret = &invoke("mkswap -c $ent $swapparsblk{$ent}");
$ret += &invoke("swapon $ent > /dev/null") unless ($ret);
if ($ret) {
&rhs_msgbox ("Format Swap",
<<EOM
>
An error occurred while setting up $ent as swapspace.
>
EOM
, 50);
}
}
close FD;
return 1;
}
sub swap_off {
local ( $ent, @result );
@result = ();
if (@swappars == 0) {
&rhs_msgbox("Error",
<<EOM
>
No swap partitions are active.
>
EOM
, 60);
return 1;
}
foreach $ent (@swappars) {
if (&rhs_yesno("Swap Off",
<<EOM
>
Turn off swapping on device $ent ?
>
EOM
, 60)) {
&invoke("swapoff $ent");
} else {
push(@result, $ent);
}
}
@swappars = @result;
return 1;
}
sub finish_swap {
local ( $ent );
open(FD, ">>$fsmount/etc/fstab");
print FD
<<EOM
#
# Swap partitions
#
EOM
;
foreach $ent (sort @swappars) {
printf(FD "%-30s %-15s %-6s %s\n", $ent, "none", "swap", "sw");
}
close FD;
}
sub swap_reset {
local ( $ent );
foreach $ent (@swappars) {
&invoke("swapoff $ent");
}
@swappars = ();
}
#####################
1;