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 / bootloader / grub / misc.ycp < prev   
Text File  |  2006-11-29  |  3KB  |  120 lines

  1. /**
  2.  * File:
  3.  *      include/bootloader/grub/misc.ycp
  4.  *
  5.  * Module:
  6.  *      Bootloader installation and configuration
  7.  *
  8.  * Summary:
  9.  *      Miscelaneous functions for configuring and installing GRUB bootloader
  10.  *
  11.  * Authors:
  12.  *      Jiri Srain <jsrain@suse.cz>
  13.  *
  14.  * $Id: misc.ycp 33212 2006-10-02 09:54:01Z jplack $
  15.  *
  16.  */
  17.  
  18. {
  19.     textdomain "bootloader";
  20.     import "Storage";
  21.     import "StorageDevices";
  22.     import "Mode";
  23.     import "BootCommon";
  24.  
  25.     /**
  26.      * Propose whether allow or not embedding of 1.5 stage
  27.      * @return boolean true to allow
  28.      */
  29.     define boolean allowEmbed15 () {
  30.       // allow only for /boot or /root device selected
  31.       if (! (BootCommon::loader_device == BootCommon::BootPartitionDevice
  32.          || BootCommon::loader_device == BootCommon::RootPartitionDevice
  33.          || BootCommon::loader_device == BootCommon::mbrDisk
  34.          ))
  35.     {
  36.       return false;
  37.     }
  38.       // check filesystem on /boot for Reiserfs and JFS
  39.       map mp = Storage::GetMountPoints ();
  40.       list bp_info
  41.       = mp["/boot"]:mp["/"]:[];
  42.       list<map> partitions
  43.     = Storage::GetTargetMap ()[bp_info[2]:"", "partitions"]:[];
  44.       boolean ret = false;
  45.       foreach (map p, partitions, {
  46.     if (p["device"]:"" == BootCommon::BootPartitionDevice)
  47.       {
  48.         symbol fs = (symbol)p["used_fs"]:nil;
  49.         if (fs == `reiser || fs == `jfs)
  50.           ret = true;
  51.       }
  52.       });
  53.       return ret;
  54.     }
  55.     
  56.     /**
  57.      * Encrypt the password before storing it in variables
  58.      * @param passwd string unencrypted password
  59.      * @return string password in the form to write to GRUB's menu.lst
  60.      */
  61.     global define string updatePasswdBeforeSave (string passwd) ``{
  62.         passwd = sformat ("--md5 %1", cryptmd5 (passwd));
  63.     return passwd;
  64.     }
  65.  
  66.     /**
  67.      * translate filename path (eg. (hd0,0)/kernel) to list of device
  68.      *  and relative path
  69.      * @param devpth string fileststem path (eg. (hd0,0)/vmlinuz)
  70.      * @return a list containing device and relative path,
  71.      *  eg. ["(hd0,0)", "/vmlinuz"]
  72.      */
  73.     // FIXME: this should never happen but handled through perl-Bootloader completely
  74.     global define list<string> splitDevPath (string devpth) ``{
  75.         y2milestone("FIXME: called splitDevPath(%1) which points to a bug in perl-Bootloader",
  76.             devpth);
  77.         integer brake = nil;
  78.     if (devpth != nil && issubstring (devpth, ")"))
  79.         brake = findfirstof (devpth, ")") + 1;
  80.     list<string> ret = [];
  81.     if (brake != nil)
  82.     {
  83.         ret[0] = substring (devpth, 0, brake);
  84.         ret[1] = substring (devpth, brake);
  85.     }
  86.     else
  87.     {
  88.         ret[0] = nil;
  89.         ret[1] = devpth;
  90.     }
  91.         return ret;
  92.     }
  93.  
  94.     /**
  95.       * translate list of device and relative path
  96.       *  to filename path (eg. (hd0,0)/kernel)
  97.       * @param devpth list of two strings, first for device name, second for
  98.       *  relative path (eg. ["(hd0,0)", "/vmlinuz"])
  99.       * @return string fileststem path (eg. (hd0,0)/vmlinuz)
  100.       */
  101.     global define string mergeDevPath (list devpth) ``{
  102.         if (substring (devpth[1]:"", 0, 1) != "/")
  103.             devpth[1] = "/" + devpth[1]:"";
  104.     if (devpth[0]:"" == nil || devpth[1]:"" == nil)
  105.         return nil;
  106.     string ret = devpth[0]:"" + devpth[1]:"";
  107.         return ret;
  108.     }
  109. }
  110.  
  111. /*
  112.  * Local variables:
  113.  *     mode: ycp
  114.  *     mode: font-lock
  115.  *     mode: auto-fill
  116.  *     indent-level: 4
  117.  *     fill-column: 78
  118.  * End:
  119.  */
  120.