home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / include / partitioning / partition_defines.ycp < prev    next >
Text File  |  2006-11-29  |  8KB  |  275 lines

  1. /**
  2.  * File:
  3.  *   partition_defines.ycp
  4.  *
  5.  * Module:
  6.  *   partitioning
  7.  *
  8.  * Summary:
  9.  *   main lib for partitioning defines
  10.  *
  11.  * Authors:
  12.  *   mike <mike@suse.de>
  13.  *
  14.  *
  15.  * $Id: partition_defines.ycp 33024 2006-09-21 11:13:35Z fehr $
  16.  *
  17.  */
  18.  
  19. {
  20.   import "Arch";
  21.   import "Installation";
  22.   import "Wizard";
  23.   import "Storage";
  24.   import "Mode";
  25.   import "Stage";
  26.   import "Partitions";
  27.   import "FileSystems";
  28.   import "Report";
  29.  
  30.   import "Popup";
  31. //  include "partitioning/custom_part_testdata.ycp";
  32.  
  33.   textdomain "storage";
  34.  
  35.     //////////////////////////////////////////////////////////////////////
  36.     // fills up a string to a minimum length
  37.  
  38.     define string ToLen( integer wide, string str )
  39.     ``{
  40.     while ( size(str) < wide ) str = " " + str;
  41.     return( str );
  42.     };
  43.  
  44.     //////////////////////////////////////////////////////////////////////
  45.     // converts int to string
  46.     // fills up the  string to a minimum length
  47.  
  48.     define string ToStringLen( integer wide, integer number )
  49.     ``{
  50.     return( ToLen( wide, sformat("%1", number )));
  51.     };
  52.  
  53. //////////////////////////////////////////////////////////////////////
  54. // size str to byte
  55. // in: <number>[kKmM][bB]
  56. //
  57. // return "0" if input is invalid
  58. //
  59. // 8 is 8k
  60. // 16K == 16k == 16KB == 16kb
  61. define integer kmgt_str_to_byte( string input )
  62.     ``{
  63.     return( Storage::KmgtStrToByte( input ));
  64.     };
  65.  
  66.  
  67.     /*---------------------------------------------------------------------
  68.      * returns for a string a string with a minimum of 9 characters:
  69.      * "1"      -> "       1"
  70.      * "22"     -> "      22"
  71.      * "145"    -> "     145"
  72.      * "2134"   -> "    2134"
  73.      *----------------------------------------------------------------------
  74.      */
  75.     define string sto8string( string str )
  76.     ``{
  77.     integer nb = size( str );
  78.     if ( nb > 8  )   return( sformat( "%1", str ));
  79.     if ( nb > 7  )   return( sformat( " %1", str ));
  80.     if ( nb > 6  )   return( sformat( "  %1", str ));
  81.     if ( nb > 5  )   return( sformat( "   %1", str ));
  82.     if ( nb > 4  )   return( sformat( "    %1", str ));
  83.     if ( nb > 3  )   return( sformat( "     %1", str ));
  84.     if ( nb > 2  )   return( sformat( "      %1", str ));
  85.     if ( nb > 1  )   return( sformat( "       %1", str ));
  86.     return( sformat( "         %1", str ));
  87.     };
  88.  
  89. /*---------------------------------------------------------------------
  90.  * Convert <number-of-bytes> to XXX.X MB or XXX.X GB or XXX.X TB
  91.  *
  92.  * see also ByteToHumanStringWithZero !
  93.  * Return value: string  "unknown" if input == 0
  94.  *----------------------------------------------------------------------
  95.  */
  96. define string ByteToHumanString ( integer number )
  97.     ``{
  98.     // column description, if disk space is not known
  99.     if( number == 0 ) return( _("unknown") );
  100.  
  101.     if( number < 1073741824 )
  102.     {
  103.     // < 1 GB
  104.     integer MB    = number / 1048576;
  105.     integer hunKB = (number - (MB * 1048576)) / 104858;
  106.     return( sto8string(sformat( "%1.%2 MB", MB,hunKB )));
  107.     }
  108.     else if ( number < 1099511627776 )
  109.     {
  110.     // < 1 TB
  111.     integer GB    = number / 1073741824;
  112.     integer hunMB = (number - (GB * 1073741824)) / 107374183;
  113.     return( sto8string(sformat( "%1.%2 GB", GB,hunMB )));
  114.     }
  115.     else
  116.         {
  117.         // >= 1 TB
  118.         integer TB    = number / 1099511627776;
  119.         integer hunGB = (number - (TB * 1099511627776)) / 109951162778;
  120.     return( sto8string(sformat( "%1.%2 TB", TB,hunGB )));
  121.         }
  122.     };
  123.  
  124.  
  125.  
  126.  
  127.     /*---------------------------------------------------------------------
  128.      * get a list of not used mountpoints
  129.      *------------------------------------
  130.      * in:  targetMap
  131.      * out: list of mountpoints for a combobox  ["/usr","/opt", ...]
  132.      *---------------------------------------------------------------------
  133.      */
  134.  
  135.      define list<string> notUsedMountpoints( map<string,map> targetMap , list<string> all_mountpoints )
  136.      ``{
  137.      if( all_mountpoints == [] || all_mountpoints == nil  )
  138.      {
  139.          all_mountpoints =  (list<string>)FileSystems::suggest_m_points;
  140.      }
  141.  
  142.  
  143.     list mountpoints = 
  144.         maplist( any dev, map devmap, targetMap,
  145.              ``{
  146.              return( maplist( map part, devmap["partitions"]:[], 
  147.                       ``( part["mount"]:"") ));
  148.              });
  149.  
  150.     mountpoints = (list) flatten((list<list>)mountpoints);
  151.     mountpoints = union(mountpoints, []); // remove double entrys "" and swap
  152.  
  153.     list<string> not_used_mountpoints = filter( string mnt, all_mountpoints,
  154.                         ``( !contains( mountpoints, mnt) ));
  155.  
  156.      return( not_used_mountpoints );
  157.      };
  158.  
  159.  
  160. /*---------------------------------------------------------------------
  161.  * Convert <number-of-bytes> to XXX.X MB or XXX.X GB or XXX.X TB
  162.  *
  163.  * see also ByteToHumanString !
  164.  * Return value: string  "0" if input == 0
  165.  *----------------------------------------------------------------------
  166.  */
  167. define string ByteToHumanStringWithZero ( integer number )
  168.     ``{
  169.     // string or locale
  170.     string  ret = ByteToHumanString( number );
  171.  
  172.     // label text
  173.     if( ret == _("unknown") )
  174.     {
  175.     // label text, short for Megabyte (MB)
  176.     return( "0 " + _("MB") );
  177.     }
  178.     else
  179.     {
  180.     return( ret );
  181.     }
  182.     };
  183.  
  184.  
  185.   /*---------------------------------------------------------------------
  186.    * changeExtendedIdTo15
  187.    *---------------------------------------------------------------------
  188.    * change the fsid of every extended partiton in  the map targets
  189.    * in user_settings from 5 to 15
  190.    *---------------------------------------------------------------------
  191.    */
  192.  
  193.     ////////////////////////////////////////////////////////////////////////
  194.     // input:
  195.     // win_size_f: new size of wimdows partion in bytes as float
  196.     // cyl_size  : cylinder size
  197.     //
  198.     // output: lentgh of win-region in cylinder
  199.  
  200.     define integer PartedSizeToCly( float win_size_f, integer cyl_size )
  201.     ``{
  202.     float   new_length_f = (win_size_f) / tofloat( cyl_size );
  203.     integer new_length_i = tointeger( new_length_f );
  204.  
  205.     y2debug("new_length_f: <%1> - new_length_i: <%2>", new_length_f, new_length_i );
  206.  
  207.     if ( tofloat( new_length_f ) != tofloat( new_length_i ) )
  208.     {
  209.         new_length_i = new_length_i + 1;    // add 1 cylinder if there is a residual
  210.     }
  211.  
  212.     return( new_length_i );
  213.     };
  214.  
  215.  
  216.     /**
  217.      * Make a proposal for a Mountpoint
  218.      * @parm targetMap all targets
  219.      * @return string next mountpoint
  220.      **/
  221. define string GetMountPointProposal( map<string,map> targetMap, 
  222.                                      list not_supported_mount_points )
  223.     ``{
  224.     list<string> base = FileSystems::suggest_m_points;
  225.     base = filter( string mount_point, base, 
  226.            ``( !contains( not_supported_mount_points, mount_point )));
  227.     list free_list = filter( string point, base,
  228.     ``{
  229.     boolean found = false;
  230.  
  231.     foreach(string dev, map disk, targetMap, 
  232.         ``{
  233.         map parti = (map) find(map part, disk["partitions"]:[], 
  234.                           ``( part["mount"]:"" == point ));
  235.         if (parti != nil)
  236.         {
  237.         found = true;
  238.         }
  239.         });
  240.  
  241.     return( !found );
  242.     });
  243.  
  244.     return( Mode::normal()?"":(free_list[0]:"") );
  245.     };
  246.  
  247. define string evms_texts_evms_nonevms()
  248.     ``{
  249.     string t = 
  250. _("It is normally not a good idea to use EVMS and non-EVMS
  251. entities on the same disk. 
  252. While it is possible in principle and may make sense
  253. for experienced users, it also can easily create 
  254. unexpected problems.
  255.  
  256. Really do this?
  257. ");
  258.     return( t );
  259.     }
  260.  
  261. define string evms_texts_evms_lvm()
  262.     {
  263.     string t = 
  264. _("It is normally not a good idea to use EVMS and LVM
  265. on the same system.
  266. While it is possible in principle and may make sense
  267. for experienced users, it also can easily create 
  268. unexpected problems.
  269.  
  270. Really do this?
  271. ");
  272.     return( t );
  273.     }
  274. }
  275.