home *** CD-ROM | disk | FTP | other *** search
- ### -*-perl-*-
-
- # This is a 2 stage swap module
- # select_swap, init_swap
-
- @swappars = ();
-
- sub select_swap {
- local ( $found, %swapinfolist, $msg, $ent, $par, $blk );
- local ( $p, $r, $lastbsddev );
- local ($device, $start, $stop, $blocks, @a, $line)
-
- &rhs_infobox ("Swap Space",
- <<EOM
- >
- Looking for swap partitions...
- >
- EOM
- , 50);
-
- %swapinfolist = &get_partitions("swap");
-
- if (! keys(%swapinfolist)) {
- &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;
- }
-
- foreach $device (keys(%swapinfolist)) {
- @a = split(" ", $swapinfolist{$device});
- $start = $a[0];
- $stop = $a[1];
- $blocks = $a[2];
- $line = sprintf("%-9s %9s %9s %9s", $device, $start, $stop, $blocks);
-
- if (&rhs_yesno("Add Swap",
- <<EOM
- >
- This appears to be a swap partition:
- >
- > Device Start End Blocks
- >$line
- >
- Do you want to use this as a swap partition?
- >
- EOM
- , 52)) {
- $swappars[@swappars] = $device;
- $swapparsblk{$device} = $blocks;
- }
- }
-
- 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;
-