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 / modules / SuSERelease.ycp < prev    next >
Text File  |  2006-11-29  |  3KB  |  115 lines

  1. /**
  2.  * Module:    SuSERelease.ycp
  3.  *
  4.  * Authors:    Jiri Srain <jsrain@suse.de>
  5.  *
  6.  * Purpose:    Responsible for getting information from the /etc/SuSE-release
  7.  *              (and similar for other system) file
  8.  *
  9.  * $Id: SuSERelease.ycp 34025 2006-11-03 14:41:22Z locilka $
  10.  */
  11. {
  12.  
  13. module "SuSERelease";
  14.  
  15. textdomain "base";
  16.  
  17. import "Stage";
  18.  
  19.  
  20. /**
  21.  * Make a nice name for a system out of the long name
  22.  * @param longname string the long product name
  23.  * @return string nice product name (to be displayed)
  24.  */
  25. string MakeNiceName (string longname) {
  26.     integer p1 = find (longname, "(");
  27.     if (p1 == -1) return longname;
  28.     while (p1 > 1 && substring (longname, p1 - 1, 1) == " ")
  29.     p1 = p1 - 1;
  30.     return substring (longname, 0, p1);
  31. }
  32.  
  33. /**
  34.  * Find and get the contents of the release file
  35.  * @param directory containing the installed system (/ in installed system)
  36.  * @return string contents of the release file
  37.  */
  38. string ReleaseFileContents (string directory) {
  39.     string ret = "?";
  40.     foreach (string filename, [
  41.     "/etc/SuSE-release", "/etc/UnitedLinux-release", "/etc/redhat-release"],
  42.     {
  43.     string contents = (string)
  44.         SCR::Read (.target.string, [directory + filename, "?"]);
  45.     if (contents != "?")
  46.     {
  47.         y2milestone ("File with release information: %1", filename);
  48.         ret = contents;
  49.         break;
  50.     }
  51.     });
  52.     return ret;
  53. }
  54.  
  55. /**
  56.  * Get information about the release for displaying in the selection list
  57.  *  of found systems
  58.  * @param directory containing the installed system (/ in installed system)
  59.  * @return string the release information
  60.  */
  61. global string ReleaseInformation (string directory) {
  62.     string contents = ReleaseFileContents (directory);
  63.     if (contents != nil && contents != "?")
  64.     {
  65.     list lines = splitstring (contents, "\n");
  66.     return MakeNiceName (lines[0]:"?");
  67.     }
  68.     else
  69.     {
  70.     return "?";
  71.     }
  72. }
  73.  
  74. /**
  75.  * Get information about the release for using in the help text
  76.  * Is limited for the currently running product
  77.  * @param directory containing the installed system (/ in installed system)
  78.  * @return string the release information
  79.  */
  80. global string ReleaseName () {
  81. {
  82.     if (Stage::initial ())
  83.     {
  84.     return (string)SCR::Read (.content.PRODUCT);
  85.     }
  86.     string contents = ReleaseFileContents ("/");
  87.     if (contents != "?")
  88.     {
  89.     list<string> lines = splitstring (contents, "\n");
  90.     lines = filter (string l, lines, {return l != "";});
  91.     list<string> components = splitstring (lines[0]:"", " ");
  92.     boolean after_version = false;
  93.     components = maplist (string c, components, {
  94.         if (regexpmatch (c, "^[0-9\\.]+$"))
  95.         after_version = true;
  96.         if (after_version)
  97.         c = nil;
  98.         return c;
  99.     });
  100.     components = filter (string c, components, {
  101.         return c != nil;
  102.     });
  103.     return mergestring (components, " ");
  104.     }
  105.     else
  106.     {
  107.     return "SUSE LINUX";
  108.     }
  109. }
  110.  
  111. }
  112.  
  113.  
  114. } // EOF
  115.