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 / OSRCommon.ycp < prev    next >
Text File  |  2006-11-29  |  10KB  |  422 lines

  1. /**
  2.  *  File:
  3.  *    OSRCommon.ycp
  4.  *
  5.  *  Module:
  6.  *    repair
  7.  *
  8.  *  Summary:
  9.  *    Common functions and variables, used by other OSR modules
  10.  *
  11.  *  Author:
  12.  *    Jiri Suchomel <jsuchome@suse.de>
  13.  *
  14.  * $Id: OSRCommon.ycp 23769 2005-06-21 12:18:10Z jsuchome $
  15.  */
  16. {
  17.  
  18. /**
  19.  * Variables and functions in these module were moved from other
  20.  * OSR* modules to break their cyclic dependencies.
  21.  *
  22.  * This module should not import any other OSR module
  23.  */
  24.  
  25. module "OSRCommon";
  26.  
  27. textdomain "repair";
  28.  
  29. /**
  30.  * Functions that could be used as a default in lookups for functin pointers
  31.  * @return false
  32.  */
  33. global define boolean False () ``{
  34.     return false;
  35. }
  36.  
  37. /**
  38.  * @return `error
  39.  */
  40. global define symbol SymbolError () ``{
  41.     y2error ("method not found");
  42.     return `error;
  43. }
  44.  
  45. /**
  46.  * @return ""
  47.  */
  48. global define string EmptyString () ``{
  49.     return "";
  50. }
  51.  
  52. /**
  53.  * @return $[]
  54.  */
  55. global define map EmptyMap () ``{
  56.     return $[];
  57. }
  58.  
  59. /**
  60.  * @return []
  61.  */
  62. global define list EmptyList () ``{
  63.     return [];
  64. }
  65.  
  66.  
  67. // ---------------------------------------------------------------------
  68. // from OSRDirect.ycp:
  69.  
  70. /**
  71.  * The name of the current direct repair method.
  72.  */
  73. global string current_direct_name    = "";
  74.  
  75.  
  76. // ---------------------------------------------------------------------
  77. // from OSRRepair.ycp:
  78.  
  79. /**
  80.  * The name of the repair and rescue tool.
  81.  */
  82. global string tool_name        = _("System Repair");
  83.  
  84.  
  85. // ---------------------------------------------------------------------
  86. // from OSR.ycp:
  87.  
  88. /**
  89.  * The name of the current module during detection.
  90.  * e.g.: osr_module_partition
  91.  */
  92. global string current_module_name    = "";
  93.  
  94.  
  95. /**
  96.  * ["init", "mbr_check", "swap_check", "fs_check", "fstab_check"]
  97.  */
  98. global list<string> detect_group_list    = [];
  99.  
  100. /**
  101.  * The current detection map during detection.
  102.  *
  103.  * $[
  104.  "group":"init",
  105.  "method": ``OSRInitFloppy(),
  106.  "progress":10,
  107.  "provides":["repair_target"],
  108.  "requires":[],
  109.  "summary":"Init target system"
  110.  ]
  111.  */
  112. global map current_detect_map            = $[];
  113.  
  114. /**
  115.  * $[    "fs_check" : $[
  116.  *        "help"    : "Mounting a filesystem is not possible",
  117.  *        "text"    : "Check filesystem"
  118.  *    ],
  119.  *    "fstab_check" : $[
  120.  *        "help"    : "Mounting a filesystem is not possible",
  121.  *        "text"    : "Check fstab entries"
  122.  *    ],
  123.  *    "init" : $[
  124.  *        "help"    : "",
  125.  *        "mode"    : "forall",
  126.  *        "text"    : "Init repair system"
  127.  *    ],
  128.  *    "mbr_check" : $[
  129.  *        "help"    : "If you have installed a other os after inst. Linux",
  130.  *        "text"    : "Check master boot record"
  131.  *    ],
  132.  *    ........
  133.  * ]
  134.  */
  135. global map global_entries        = $[];
  136.  
  137.   /**
  138.    * The global_provides map contains entries created during the system scan.
  139.    * The different detection methods access to the global_provides map to get
  140.    * informations from former detection methods.
  141.    * $["fs_module_loaded":true,
  142.        "has_floppy":true,
  143.        "just_mounted":[$["mountpoint":"/mnt", "partition":"/dev/hda3"]],
  144.        "linux_partition_list":["/dev/hda1", "/dev/hda3", "/dev/hda6"],
  145.        "mount_possible_list":["/dev/hda1", "/dev/hda3", "/dev/hda6"],
  146.        "mounted_partitions":[$["file":"/mnt", "freq":0, "mntops":"rw", "passno":0, "spec":"/dev/hda3", "vfstype":"reiserfs"],..,],
  147.        "repair_target":"",
  148.        "root_mounted":true,
  149.        "root_mountpoint":"/mnt",
  150.        "root_partition":"/dev/hda3",
  151.        "root_partition_type":"reiserfs",
  152.        "swap_partition_list":["/dev/hda2", "/dev/hda5"],
  153.        "swapable_partitions":["/dev/hda2", "/dev/hda5"],
  154.        "valid_fstab":true,
  155.        "valid_root_partitions":["/dev/hda3"],
  156.        "valid_swap_partitions":["/dev/hda2", "/dev/hda5"],
  157.        "valid_target":true, "valid_target_list":["/dev/hda"]]
  158.    */
  159.   map<string,any> global_provides            = $[];
  160.  
  161.  
  162.   /**
  163.    *  Stores the given list with the specified name into the global_provides map
  164.    *  in the osr_map.
  165.    *
  166.    *  API function,
  167.    *
  168.    *  @param string name The name of the provided value.
  169.    *  @param list value The provided value.
  170.    *  @return boolean True.
  171.    */
  172.   global define boolean ProvideList(string name, list value) ``{
  173.       global_provides = add (global_provides, name, value );
  174.       return true;
  175.   };
  176.  
  177.   /**
  178.    *  Stores the given map with the specified name into the global_provides map
  179.    *  in the osr_map.
  180.    *
  181.    *  API function,
  182.    *
  183.    *  @param string name The name of the provided value.
  184.    *  @param map value The provided value.
  185.    *  @return boolean True.
  186.    */
  187.   global define boolean ProvideMap(string name, map value) ``{
  188.       global_provides    = add(global_provides, name, value );
  189.       return true;
  190.   };
  191.  
  192.   /**
  193.    *  Stores the given string with the specified name into the global_provides map
  194.    *  in the osr_map.
  195.    *
  196.    *  API function,
  197.    *
  198.    *  @param string name The name of the provided value.
  199.    *  @param string value The provided value.
  200.    *  @return boolean True.
  201.    */
  202.   global define boolean ProvideString(string name, string value) ``{
  203.       global_provides    = add(global_provides, name,value ); // provides_map  );
  204.       return true;
  205.   };
  206.  
  207.   /**
  208.    *  Stores the given path with the specified name into the global_provides map
  209.    *  in the osr_map.
  210.    *
  211.    *  API function,
  212.    *
  213.    *  @param string name The name of the provided value.
  214.    *  @param path value The provided value.
  215.    *  @return boolean True.
  216.    */
  217.   global define boolean ProvidePath(string name, path value) ``{
  218.       global_provides    = add(global_provides, name, value ); //provides_map  );
  219.       return true;
  220.   };
  221.  
  222.   /**
  223.    *  Stores the given boolean value with the specified name into the global_provides map
  224.    *  in the osr_map.
  225.    *
  226.    *  API function,
  227.    *
  228.    *  @param string name The name of the provided value.
  229.    *  @param boolean value The provided value.
  230.    *  @return boolean True.
  231.    */
  232.   global define boolean ProvideBoolean(string name, boolean value) ``{
  233.       global_provides    = add(global_provides, name,value); // provides_map  );
  234.       return true;
  235.   };
  236.  
  237.   /**
  238.    *  Returns the required string from the global_provides map
  239.    *  in the osr_map.
  240.    *
  241.    *  API function,
  242.    *
  243.    *  @param string name The name of the required value.
  244.    *  @return string value The required string, "" as default.
  245.    */
  246.   global define string RequireString(string name) ``{
  247.  
  248.       if ( ! haskey( global_provides, name ) )
  249.       {
  250.       y2warning ("The required value \"%1\" is not yet set.", name);
  251.       }
  252.  
  253.       return global_provides[ name ]:"";
  254.   };
  255.  
  256.   /**
  257.    *  Returns the required list from the global_provides map
  258.    *  in the osr_map.
  259.    *
  260.    *  API function,
  261.    *
  262.    *  @param string name The name of the required value.
  263.    *  @return string The required list, [] as default.
  264.    */
  265.   global define list RequireList(string name) ``{
  266.  
  267.       if (! haskey (global_provides, name))
  268.       {
  269.       y2warning ("The required value \"%1\" is not yet set.", name);
  270.       }
  271.  
  272.       return global_provides[name]:[];
  273.   };
  274.  
  275.   /**
  276.    *  Returns the required map from the global_provides map
  277.    *  in the osr_map.
  278.    *
  279.    *  API function,
  280.    *
  281.    *  @param string name The name of the required value.
  282.    *  @return map The required map, $[] as default.
  283.    */
  284.   global define map RequireMap(string name) ``{
  285.  
  286.       if ( ! haskey ( global_provides, name ))
  287.       {
  288.       y2warning ("The required value \"%1\" is not yet set.", name);
  289.       }
  290.  
  291.       return global_provides[ name]:$[];
  292.   };
  293.  
  294.   /**
  295.    *  Returns the required path from the global_provides map
  296.    *  in the osr_map.
  297.    *
  298.    *  API function,
  299.    *
  300.    *  @param string name The name of the required value.
  301.    *  @return path value The required path, . as default.
  302.    */
  303.   global define path RequirePath(string name) ``{
  304.  
  305.       if ( ! haskey( global_provides , name ))
  306.       {
  307.       y2warning ("The required value \"%1\" is not yet set.", name);
  308.       }
  309.  
  310.       return global_provides[name]:.;
  311.   };
  312.  
  313.   /**
  314.    *  Returns the required boolean value from the global_provides map
  315.    *  in the osr_map.
  316.    *
  317.    *  API function,
  318.    *
  319.    *  @param string name The name of the required value.
  320.    *  @return boolean value The required boolean value, false as default.
  321.    */
  322.   global define boolean RequireBoolean(string name) ``{
  323.  
  324.       if (! haskey ( global_provides, name ))
  325.       {
  326.       y2warning ("The required value \"%1\" is not yet set.", name);
  327.       }
  328.  
  329.       return global_provides[ name]:false;
  330.   };
  331.  
  332.  
  333.  
  334.   /**
  335.    * Reset variables moved from OSR.ycp
  336.    */
  337.   global define void Reset () ``{
  338.  
  339.       global_provides    = $[];
  340.  
  341.       current_module_name    = "";
  342.       current_detect_map    = $[];
  343.  
  344.       global_entries        = $[];
  345.       detect_group_list    = [];
  346.   }
  347.  
  348.   /**
  349.    * Set the new value of global_provides map
  350.    */
  351.   global define void SetGlobalProvides (map new) ``{
  352.  
  353.       global_provides    = eval ((map<string,any>) new);
  354.   }
  355.  
  356.   /**
  357.    * Set the new value of global_provides map
  358.    */
  359.   global define map<string,any> GlobalProvides () ``{
  360.  
  361.       return global_provides;
  362.   }
  363.  
  364. /**
  365.  * Get group data.
  366.  */
  367. global define map GetGroupMap (string key) ``{
  368.  
  369.     return global_entries[key]:$[];
  370. }
  371.  
  372.   /**
  373.    *  Checks if the first specified list (of strings) is a subset of
  374.    *  the second one. The sequence of entries in the lists is nonrelevant.
  375.    *
  376.    *  For internal use only.
  377.    *  See the testsuite.
  378.    *
  379.    *  @example OSRIsSubSet([], ["a", "b"]) -> true;
  380.    *  @example OSRIsSubSet(["a"], ["a", "b"]) -> true;
  381.    *  @example OSRIsSubSet(["c"], ["a", "b"]) -> false;
  382.    *  @example OSRIsSubSet(["a", "b", "c"], ["a", "b"]) -> false;
  383.    *  @param list The first list.
  384.    *  @param list The second list.
  385.    *  @return True if all elements of l1 are contained in l2 or if l1 is empty.
  386.    */
  387.   global define boolean IsSubSet (list<string> l1, list<string> l2) {
  388.  
  389.       integer index = 0;
  390.  
  391.       // remove duplicate entries and sort the lists
  392.       l1 = toset(l1);
  393.       l2 = toset(l2);
  394.  
  395.       // check special cases
  396.       if ((size(l1) < 0) || (size(l2) < 0))   return false;
  397.  
  398.       else if (size(l1) > size(l2))  return false;
  399.  
  400.       else if ((size(l1) == 0)) return true;
  401.  
  402.       else if (size(l1) <= size(l2))
  403.       {
  404.       // this is the main subset-checker
  405.       while ((index >= 0) && (index < size(l1)))
  406.       {
  407.           if (!contains (l2, l1[index]:""))
  408.           {
  409.           return false;
  410.           }
  411.           index = index + 1;
  412.       }
  413.       return true;
  414.       }
  415.       else
  416.       {
  417.       return false;
  418.       }
  419.   };
  420.  
  421. }//EOF
  422.