home *** CD-ROM | disk | FTP | other *** search
/ Caldera Network Desktop 1.0 / caldera-network-desktop-1.0.bin / images / ramdisk2-beta.img / usr / lib / perl / swap < prev    next >
Text File  |  1995-12-04  |  3KB  |  168 lines

  1. ### -*-perl-*-
  2.  
  3. # This is a 2 stage swap module
  4. # select_swap, init_swap
  5.  
  6. @swappars = ();
  7.  
  8. sub select_swap {
  9.     local ( $found, %swapinfolist, $msg, $ent, $par, $blk );
  10.     local ( $p, $r, $lastbsddev );
  11.     local ($device, $start, $stop, $blocks, @a, $line)
  12.  
  13.     &rhs_infobox ("Swap Space",
  14. <<EOM
  15. >
  16. Looking for swap partitions...
  17. >
  18. EOM
  19.           , 50);
  20.  
  21.     %swapinfolist = &get_partitions("swap");
  22.  
  23.     if (! keys(%swapinfolist)) {
  24.     &rhs_msgbox("Notice",
  25. <<EOM
  26. >
  27. No swap partitions were found.
  28. >
  29. If this is an error, 
  30. back up and reconstruct your partitions. Swap 
  31. partitions must be designated as type 82.
  32. >
  33. EOM
  34.             , 60);
  35.     return 0;
  36.     }
  37.  
  38.     foreach $device (keys(%swapinfolist)) {
  39.     @a = split(" ", $swapinfolist{$device});
  40.     $start = $a[0];
  41.     $stop = $a[1];
  42.     $blocks = $a[2];
  43.     $line = sprintf("%-9s %9s %9s %9s", $device, $start, $stop, $blocks);
  44.     
  45.     if (&rhs_yesno("Add Swap",
  46. <<EOM
  47. >
  48. This appears to be a swap partition:
  49. >
  50. >   Device     Start       End    Blocks
  51. >$line
  52. >
  53. Do you want to use this as a swap partition?
  54. >
  55. EOM
  56.              , 52)) {
  57.         $swappars[@swappars] = $device;
  58.         $swapparsblk{$device} = $blocks;
  59.     }
  60.     }
  61.  
  62.     return 1;
  63. }
  64.  
  65. sub init_swap {
  66.     local ($ent, $ret);
  67.  
  68.     open(FD, ">/tmp/swap");
  69.     
  70.     foreach $ent (@swappars) {
  71.     print FD "$ent\n";
  72.     &rhs_infobox ("Format Swap",
  73. <<EOM
  74. >
  75. Formatting and initializing $ent as swapspace.
  76. >
  77. This may take a minute.
  78. >
  79. EOM
  80.           , 70);
  81.     $ret = &invoke("mkswap -c $ent $swapparsblk{$ent}");
  82.     $ret += &invoke("swapon $ent > /dev/null") unless ($ret);
  83.     if ($ret) {
  84.         &rhs_msgbox ("Format Swap",
  85. <<EOM
  86. >
  87. An error occurred while setting up $ent as swapspace.
  88. >
  89. EOM
  90.           , 50);
  91.     }
  92.     }
  93.  
  94.     close FD;
  95.  
  96.     return 1;
  97. }
  98.  
  99. sub swap_off {
  100.     local ( $ent, @result );
  101.  
  102.     @result = ();
  103.  
  104.     if (@swappars == 0) {
  105.     &rhs_msgbox("Error",
  106. <<EOM
  107. >
  108. No swap partitions are active.
  109. >
  110. EOM
  111.             , 60);
  112.     return 1;
  113.     }
  114.  
  115.     foreach $ent (@swappars) {
  116.     if (&rhs_yesno("Swap Off",
  117. <<EOM
  118. >
  119. Turn off swapping on device $ent ?
  120. >
  121. EOM
  122.                , 60)) {
  123.         &invoke("swapoff $ent");
  124.     } else {
  125.         push(@result, $ent);
  126.     }
  127.     }
  128.  
  129.     @swappars = @result;
  130.     return 1;
  131. }
  132.  
  133. sub finish_swap {
  134.  
  135.     local ( $ent );
  136.  
  137.     open(FD, ">>$fsmount/etc/fstab");
  138.  
  139.     print FD
  140. <<EOM
  141.  
  142. #
  143. # Swap partitions
  144. #
  145.  
  146. EOM
  147.     ;
  148.  
  149.     foreach $ent (sort @swappars) {
  150.     printf(FD "%-30s %-15s %-6s %s\n", $ent, "none", "swap", "sw");
  151.     }
  152.  
  153.     close FD;
  154. }
  155.  
  156. sub swap_reset {
  157.  
  158.     local ( $ent );
  159.  
  160.     foreach $ent (@swappars) {
  161.     &invoke("swapoff $ent");
  162.     }
  163.     @swappars = ();
  164. }
  165.  
  166. #####################
  167. 1;
  168.