Hello community,

here is the log from the commit of package yast2 for openSUSE:Factory checked 
in at 2017-04-25 08:56:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2 (Old)
 and      /work/SRC/openSUSE:Factory/.yast2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2"

Tue Apr 25 08:56:16 2017 rev:401 rq:489337 version:3.2.28

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2/yast2.changes      2017-04-12 
17:10:45.565609375 +0200
+++ /work/SRC/openSUSE:Factory/.yast2.new/yast2.changes 2017-04-25 
08:56:18.854988355 +0200
@@ -1,0 +2,6 @@
+Wed Apr 19 14:16:33 UTC 2017 - [email protected]
+
+- Fixed parsing whitespace lines in /etc/fstab (bsc#1030425)
+- 3.2.28
+
+-------------------------------------------------------------------

Old:
----
  yast2-3.2.27.tar.bz2

New:
----
  yast2-3.2.28.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2.spec ++++++
--- /var/tmp/diff_new_pack.QJXnWg/_old  2017-04-25 08:56:20.674731042 +0200
+++ /var/tmp/diff_new_pack.QJXnWg/_new  2017-04-25 08:56:20.674731042 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2
-Version:        3.2.27
+Version:        3.2.28
 Release:        0
 Summary:        YaST2 - Main Package
 License:        GPL-2.0

++++++ yast2-3.2.27.tar.bz2 -> yast2-3.2.28.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.2.27/library/general/src/scrconf/etc_fstab.scr 
new/yast2-3.2.28/library/general/src/scrconf/etc_fstab.scr
--- old/yast2-3.2.27/library/general/src/scrconf/etc_fstab.scr  2017-04-12 
10:35:57.058772663 +0200
+++ new/yast2-3.2.28/library/general/src/scrconf/etc_fstab.scr  2017-04-19 
16:32:39.495807122 +0200
@@ -42,10 +42,17 @@
  */
 .etc.fstab
 
+/*
+ * Note: the same agent definition is used in
+ * 
https://github.com/yast/yast-update/blob/e2052274034f5240e9f09bceae7c6d888b18468d/src/modules/RootPart.rb#L812
+ * apply any fixes also there.
+ */
+
 `ag_anyagent(
   `Description (
       (`File("/etc/fstab")),   // real file name
-      "#\n",                   // Comment
+      // tab and space is a workaround for white space only lines (bsc#1030425)
+      "#\n\t ",                        // Comment
       false,                   // read-only
       (`List (
        `Tuple (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.2.27/library/general/test/agents_test/fstab_agent_test.rb 
new/yast2-3.2.28/library/general/test/agents_test/fstab_agent_test.rb
--- old/yast2-3.2.27/library/general/test/agents_test/fstab_agent_test.rb       
2017-04-12 10:35:57.058772663 +0200
+++ new/yast2-3.2.28/library/general/test/agents_test/fstab_agent_test.rb       
2017-04-19 16:32:39.519807122 +0200
@@ -21,7 +21,14 @@
       root = File.join(File.dirname(__FILE__), "test_root2")
       change_scr_root(root)
       expect(content).to be_a(Array)
+    end
 
+    it "can read fstab containing just whitespace lines" do
+      reset_scr_root
+      root = File.join(File.dirname(__FILE__), "test_root3")
+      change_scr_root(root)
+      # all lines are returned
+      expect(content.size).to eq(6)
     end
 
     it "returns an array containing nfs entries" do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.2.27/library/general/test/agents_test/test_root3/etc/fstab 
new/yast2-3.2.28/library/general/test/agents_test/test_root3/etc/fstab
--- old/yast2-3.2.27/library/general/test/agents_test/test_root3/etc/fstab      
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.2.28/library/general/test/agents_test/test_root3/etc/fstab      
2017-04-19 16:32:39.587807122 +0200
@@ -0,0 +1,8 @@
+UUID=b66c1028-cd4a-4c08-b92d-fc4b9840845d      /       ext4    
noatime,data=writeback,acl,user_xattr 1 1 
+UUID=d2811ace-66e0-4ef2-9b68-9b2758359391      /home   ext4    
noatime,data=writeback,acl 1 2 
+         
+192.168.1.2:/home/kv   /home/kv2       nfs     defaults 0 0 
+192.168.1.2:/media/new2        /media/new2     nfs     defaults 0 0 
+192.168.1.2:/media/new /media/new      nfs     defaults 0 0 
+# my fine comment
+tmpfs                /tmp                 tmpfs      defaults,size=25%         
     0 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.2.27/library/network/src/lib/network/susefirewall2.rb 
new/yast2-3.2.28/library/network/src/lib/network/susefirewall2.rb
--- old/yast2-3.2.27/library/network/src/lib/network/susefirewall2.rb   
2017-04-12 10:35:57.066772663 +0200
+++ new/yast2-3.2.28/library/network/src/lib/network/susefirewall2.rb   
2017-04-19 16:32:39.843807122 +0200
@@ -259,12 +259,12 @@
     # This is just a helper function that could avoid from filling y2log up 
with
     # a lot of the very same messages - 'foreach()' is a very powerful builtin.
     #
-    # @param string error, warning or message
+    # @param [String] what_to_report error, warning or message
     # @return [Boolean] whether the message should be reported or not
     #
     # @example
-    #  string error = sformat("Port number %1 is invalid.", port_nr);
-    #  if (ReportOnlyOnce(error)) y2error(error);
+    #   string error = sformat("Port number %1 is invalid.", port_nr);
+    #   if (ReportOnlyOnce(error)) y2error(error);
     def ReportOnlyOnce(what_to_report)
       return false if Builtins.contains(@report_only_once, what_to_report)
 
@@ -289,7 +289,7 @@
 
     # Function return list of variables needed for SuSEFirewall's settings.
     #
-    # @return  [Array<String>] of names of variables
+    # @return [Array<String>] of names of variables
     def GetListOfSuSEFirewallVariables
       deep_copy(@SuSEFirewall_variables)
     end
@@ -311,7 +311,7 @@
     # Local function returns if other functions should produce verbose output.
     # like popups, reporting errors, etc.
     #
-    # @return  [Boolean] is_verbose
+    # @return [Boolean] is_verbose
     def IsVerbose
       # verbose level must be above zero to be verbose
       Ops.greater_than(@verbose_level, 0)
@@ -319,15 +319,15 @@
 
     # Local function for returning default values (if defined) for sysconfig 
variables.
     #
-    # @param   string sysconfig variable
-    # @return  [String] default value
+    # @param [String] variable sysconfig variable
+    # @return [String] default value
     def GetDefaultValue(variable)
       Ops.get(@DEFAULT_SETTINGS, variable, "")
     end
 
     # Local function for reading list of sysconfig variables into internal 
variables.
     #
-    # @param   list <string> of sysconfig variables
+    # @param [Array<String>] variables of sysconfig variables
     def ReadSysconfigSuSEFirewall(variables)
       variables = deep_copy(variables)
       Builtins.foreach(variables) do |variable|
@@ -362,7 +362,7 @@
 
     # Local function for reseting list of sysconfig variables in internal 
variables.
     #
-    # @param   list <string> of sysconfig variables
+    # @param [Array<String>] variables of sysconfig variables
     def ResetSysconfigSuSEFirewall(variables)
       variables = deep_copy(variables)
       Builtins.foreach(variables) do |variable|
@@ -377,8 +377,8 @@
     # List of variables is list of keys in SETTINGS map, to sync configuration
     # into the disk, use `nil` as the last list item.
     #
-    # @param   list <string> of sysconfig variables
-    # @return  [Boolean] if successful
+    # @param [Array<String>] variables of sysconfig variables
+    # @return [Boolean] if successful
     def WriteSysconfigSuSEFirewall(variables)
       variables = deep_copy(variables)
       write_status = true
@@ -413,7 +413,7 @@
     # For instance "ext" for "EXT" zone.
     #
     # @param [String] zone shortname
-    # @return  [String] zone configuration string
+    # @return [String] zone configuration string
     def GetZoneConfigurationString(zone)
       if IsKnownZone(zone)
         # zones in SuSEFirewall configuration are identified by lowercased 
zone shorters
@@ -425,8 +425,8 @@
     # Local function returns zone name (shortname) for configuration string.
     # For instance "EXT" for "ext" zone.
     #
-    # @param   string zone configuration string
-    # @return  [String] zone shortname
+    # @param [String] zone_string configuration string
+    # @return [String] zone shortname
     def GetConfigurationStringZone(zone_string)
       if IsKnownZone(Builtins.toupper(zone_string))
         # zones in SuSEFirewall configuration are identified by lowercased 
zone shorters
@@ -439,7 +439,7 @@
     #
     # @param [String] zone
     # @param [String] protocol
-    # @return  [Array<String>] of allowed services/ports
+    # @return [Array<String>] of allowed services/ports
     def GetAllowedServicesForZoneProto(zone, protocol)
       Builtins.splitstring(
         Ops.get_string(
@@ -453,7 +453,7 @@
 
     # Function sets list of services as allowed ports for zone and protocol
     #
-    # @param   list <string> of allowed ports/services
+    # @param [Array<String>] allowed_services of allowed ports/services
     # @param [String] zone
     # @param [String] protocol
     def SetAllowedServicesForZoneProto(allowed_services, zone, protocol)
@@ -471,14 +471,15 @@
 
     # Local function returns configuration string for broadcast packets.
     #
-    # @return  [String] with broadcast configuration
+    # @return [String] with broadcast configuration
     def GetBroadcastConfiguration(zone)
       Ops.get_string(@SETTINGS, Ops.add("FW_ALLOW_FW_BROADCAST_", zone), "no")
     end
 
     # Local function saves configuration string for broadcast packets.
     #
-    # @param   string with broadcast configuration
+    # @param [String] zone
+    # @param [String] broadcast_configuration with broadcast configuration
     def SetBroadcastConfiguration(zone, broadcast_configuration)
       SetModified()
 
@@ -498,7 +499,7 @@
     # it doesn't return ports that are listed in some service (defined by 
package)
     # which is enabled.
     #
-    # @return  [Hash{String => Array<String>}] strings are allowed ports or 
port ranges
+    # @return [Hash{String => Array<String>}] strings are allowed ports or 
port ranges
     #
     #
     # **Structure:**
@@ -545,7 +546,7 @@
 
     # Function creates allowed-broadcast-ports string from broadcast map and 
saves it.
     #
-    # @param   map <zone_string, list <string> > strings are allowed ports or 
port ranges
+    # @param [Hash<String,Array<String>>] broadcast strings are allowed ports 
or port ranges
     # @see GetBroadcastAllowedPorts() for an example of data
     def SetBroadcastAllowedPorts(broadcast)
       broadcast = deep_copy(broadcast)
@@ -564,11 +565,12 @@
 
     # Function returns if broadcast is allowed for needed ports in zone.
     #
-    # @param   list <string> ports
+    # @param [Array<String>] needed_ports
     # @param [String] zone
-    # @return  [Boolean] if is allowed
+    # @return [Boolean] if is allowed
     #
-    # @example IsBroadcastAllowed (["port-xyz", "53"], "EXT") -> true
+    # @example
+    #    IsBroadcastAllowed (["port-xyz", "53"], "EXT") -> true
     def IsBroadcastAllowed(needed_ports, zone)
       needed_ports = deep_copy(needed_ports)
       if Builtins.size(needed_ports) == 0
@@ -613,7 +615,7 @@
 
     # Local function removes list of ports from port allowing broadcast 
packets in zone.
     #
-    # @param   list <of ports> to be removed
+    # @param [Array<String>] needed_ports to be removed
     # @param [String] zone
     def RemoveAllowedBroadcast(needed_ports, zone)
       needed_ports = deep_copy(needed_ports)
@@ -640,7 +642,8 @@
 
     # Local function adds list of ports to ports accepting broadcast
     #
-    # @param   list <string> of ports
+    # @param [Array<String>] needed_ports of ports
+    # @param [String] zone
     def AddAllowedBroadcast(needed_ports, zone)
       needed_ports = deep_copy(needed_ports)
       # changing only if ports are not allowed
@@ -673,10 +676,10 @@
     # for defined protocol and zone. Functions doesn't take care of
     # port-aliases.
     #
-    # @param   string service/port
+    # @param [String] remove_service service/port
     # @param [String] protocol
     # @param [String] zone
-    # @return  [Boolean] success
+    # @return [Boolean] success
     def RemoveServiceFromProtocolZone(remove_service, protocol, zone)
       SetModified()
 
@@ -697,11 +700,11 @@
 
     # Removes service defined by package (FATE #300687) from enabled services.
     #
-    # @param string service_id
+    # @param [String] service
     # @param [String] zone
     #
     # @example
-    #  RemoveServiceDefinedByPackageFromZone ("service:irc-server", "EXT");
+    #    RemoveServiceDefinedByPackageFromZone ("service:irc-server", "EXT");
     def RemoveServiceDefinedByPackageFromZone(service, zone)
       return nil if !IsKnownZone(zone)
 
@@ -735,11 +738,11 @@
 
     # Adds service defined by package (FATE #300687) into list of enabled 
services.
     #
-    # @param string service_id
+    # @param [String] service
     # @param [String] zone
     #
     # @example
-    #  AddServiceDefinedByPackageIntoZone ("service:irc-server", "EXT");
+    #    AddServiceDefinedByPackageIntoZone ("service:irc-server", "EXT");
     def AddServiceDefinedByPackageIntoZone(service, zone)
       return nil if !IsKnownZone(zone)
 
@@ -880,7 +883,7 @@
 
     # Function sets if firewall should be protected from internal zone.
     #
-    # @param   boolean set to be protected from internal zone
+    # @param [Boolean] set_protect set to be protected from internal zone
     def SetProtectFromInternalZone(set_protect)
       SetModified()
 
@@ -895,14 +898,14 @@
 
     # Function returns if firewall is protected from internal zone.
     #
-    # @return  [Boolean] if protected from internal
+    # @return [Boolean] if protected from internal
     def GetProtectFromInternalZone
       Ops.get_string(@SETTINGS, "FW_PROTECT_FROM_INT", "no") == "yes"
     end
 
     # Function sets if firewall should support routing.
     #
-    # @param   boolean set to support route or not
+    # @param [Boolean] set_route set to support route or not
     def SetSupportRoute(set_route)
       SetModified()
 
@@ -919,7 +922,7 @@
 
     # Function returns if firewall supports routing.
     #
-    # @return  [Boolean] if route is supported
+    # @return [Boolean] if route is supported
     def GetSupportRoute
       Ops.get_string(@SETTINGS, "FW_ROUTE", "no") == "yes"
     end
@@ -956,7 +959,7 @@
     # Function returns the trust level of IPsec packets.
     # See SetTrustIPsecAs() for more information.
     #
-    # @return  [String] zone or "no"
+    # @return [String] zone or "no"
     def GetTrustIPsecAs
       # do not trust
       return "no" if Ops.get(@SETTINGS, "FW_IPSEC_TRUST") == "no"
@@ -985,14 +988,14 @@
 
     # Function for getting exported SuSEFirewall configuration
     #
-    # @return  [Hash{String => Object}] with configuration
+    # @return [Hash{String => Object}] with configuration
     def Export
       deep_copy(@SETTINGS)
     end
 
     # Function for setting SuSEFirewall configuration from input
     #
-    # @param   map <string, any> with configuration
+    # @param [Hash<String, Object>] import_settings with configuration
     def Import(import_settings)
       Read()
       @SETTINGS.merge!(import_settings || {})
@@ -1006,8 +1009,8 @@
     # Function returns if the interface is in zone.
     #
     # @param [String] interface
-    # @param   string firewall zone
-    # @return  [Boolean] is in zone
+    # @param [String] zone firewall zone
+    # @return [Boolean] is in zone
     #
     # @example IsInterfaceInZone ("eth-id-01:11:DA:9C:8A:2F", "INT") -> false
     def IsInterfaceInZone(interface, zone)
@@ -1023,7 +1026,7 @@
     # firewall zones, then the first appearance is returned.
     #
     # @param [String] interface
-    # @return  [String] zone
+    # @return [String] zone
     #
     # @example GetZoneOfInterface ("eth-id-01:11:DA:9C:8A:2F") -> "DMZ"
     def GetZoneOfInterface(interface)
@@ -1066,10 +1069,10 @@
     # Special string 'any' in 'EXT' zone is supported.
     #
     # @param [Array<String>] interfaces
-    # @return  [Array<String>] firewall zones
+    # @return [Array<String>] firewall zones
     #
     # @example
-    #  GetZonesOfInterfaces (["eth1","eth4"]) -> ["EXT"]
+    #    GetZonesOfInterfaces (["eth1","eth4"]) -> ["EXT"]
     def GetZonesOfInterfacesWithAnyFeatureSupported(interfaces)
       interfaces = deep_copy(interfaces)
       zones = []
@@ -1205,7 +1208,7 @@
     # Special strings like 'any' or 'auto' and unknown interfaces are removed 
from list.
     #
     # @param [String] zone
-    # @return  [Array<String>] of interfaces
+    # @return [Array<String>] of interfaces
     # @example GetInterfacesInZone ("DMZ") -> ["eth4", "eth5"]
     def GetInterfacesInZone(zone)
       interfaces_in_zone = Builtins.splitstring(
@@ -1225,7 +1228,7 @@
 
     # Function returns all interfaces already configured in firewall.
     #
-    # @return  [Array<String>] of configured interfaces
+    # @return [Array<String>] of configured interfaces
     def GetFirewallInterfaces
       firewall_configured_devices = []
 
@@ -1274,7 +1277,7 @@
     # any zone assignment.
     #
     # @param [String] zone
-    # @return  [Array<String>] of interfaces
+    # @return [Array<String>] of interfaces
     def GetInterfacesInZoneSupportingAnyFeature(zone)
       interfaces_in_zone = GetInterfacesInZone(zone)
 
@@ -1294,12 +1297,12 @@
     # Returns whether a service is mentioned in 
FW_CONFIGURATIONS_[EXT|INT|DMZ].
     # These services are defined by random packages.
     #
+    # @param [String] service e.g., "service:sshd"
+    # @param [String] zone e.g., "EXT"
     # @return [Boolean] if service is supported in zone
-    # @param [String] service, e.g., "service:sshd"
-    # @param [String] zone, e.g., "EXT"
     #
     # @example
-    #  IsServiceDefinedByPackageSupportedInZone ("service:sshd", "EXT") -> true
+    #    IsServiceDefinedByPackageSupportedInZone ("service:sshd", "EXT") -> 
true
     def IsServiceDefinedByPackageSupportedInZone(service, zone)
       return nil if !IsKnownZone(zone)
 
@@ -1326,12 +1329,12 @@
     # @see YCP Module SuSEFirewallServices
     # @param [String] service id
     # @param [String] zone
-    # @return  [Boolean] if supported
+    # @return [Boolean] if supported
     #
     # @example
-    #  // All ports defined by dns-server service in SuSEFirewallServices 
module
-    #  // are enabled in the respective zone
-    #  IsServiceSupportedInZone ("dns-server", "EXT") -> true
+    #    // All ports defined by dns-server service in SuSEFirewallServices 
module
+    #    // are enabled in the respective zone
+    #    IsServiceSupportedInZone ("dns-server", "EXT") -> true
     #  // irc-server definition exists on the system and the irc-server
     #  // is mentioned in FW_CONFIGURATIONS_EXT variable of SuSEfirewall2
     #  IsServiceSupportedInZone ("service:irc-server", "EXT") -> true
@@ -1407,14 +1410,14 @@
 
     # Function sets status for several services in several firewall zones.
     #
-    # @param   list <string> service ids
-    # @param   list <string> firewall zones (EXT|INT|DMZ...)
-    # @param   boolean new status of services
-    # @return  nil
+    # @param [Array<String>] services_ids
+    # @param [Array<String>] firewall_zones (EXT|INT|DMZ...)
+    # @param [Boolean] new_status of services
+    # @return nil
     #
     # @example
-    #  SetServicesForZones (["samba-server", "service:irc-server"], ["DMZ", 
"EXT"], false);
-    #  SetServicesForZones (["samba-server", "service:irc-server"], ["EXT", 
"DMZ"], true);
+    #    SetServicesForZones (["samba-server", "service:irc-server"], ["DMZ", 
"EXT"], false);
+    #    SetServicesForZones (["samba-server", "service:irc-server"], ["EXT", 
"DMZ"], true);
     #
     # @see #GetServicesInZones()
     # @see #GetServices()
@@ -1616,7 +1619,7 @@
     # Function which stops firewall. Then firewall is started immediately when 
firewall
     # is wanted to be started: SetStartService(boolean).
     #
-    # @return  [Boolean] if successful
+    # @return [Boolean] if successful
     def ActivateConfiguration
       # just disabled
       return true if !SuSEFirewallIsInstalled()
@@ -1671,7 +1674,7 @@
     # This is a write-only configuration, firewall is never started only 
enabled
     # or disabled.
     #
-    # @return  [Boolean] if successful
+    # @return [Boolean] if successful
     def WriteConfiguration
       # just disabled
       return true if !SuSEFirewallIsInstalled()
@@ -1769,7 +1772,7 @@
     # Function for writing and enabling configuration it is an union of
     # WriteConfiguration() and ActivateConfiguration().
     #
-    # @return  [Boolean] if succesfull
+    # @return [Boolean] if succesfull
     def Write
       CheckKernelModules()
 
@@ -1788,10 +1791,10 @@
     # This function doesn't check for services defined by packages.
     # They are listed by a different way.
     #
-    # @return  [Array<String>] of additional (unassigned) services
+    # @return [Array<String>] of additional (unassigned) services
     #
     # @example
-    #  GetAdditionalServices("TCP", "EXT") -> ["53", "128"]
+    #    GetAdditionalServices("TCP", "EXT") -> ["53", "128"]
     def GetAdditionalServices(protocol, zone)
       if !IsSupportedProtocol(protocol)
         Builtins.y2error("Unknown protocol '%1'", protocol)
@@ -1854,15 +1857,15 @@
 
     # Function returns map of `interfaces in zones`.
     #
-    # @return  [Hash{String => Array<String>}] interface in zones
+    # @return [Hash{String => Array<String>}] interface in zones
     #
     #
     # **Structure:**
     #
-    #          map $[zone : [list of interfaces]]
+    #        map $[zone : [list of interfaces]]
     #
     # @example
-    #  GetFirewallInterfacesMap() -> $["DMZ":[], "EXT":["dsl0"], 
"INT":["eth1", "eth2"]]
+    #    GetFirewallInterfacesMap() -> $["DMZ":[], "EXT":["dsl0"], 
"INT":["eth1", "eth2"]]
     def GetFirewallInterfacesMap
       firewall_interfaces_now = {}
 
@@ -1887,10 +1890,10 @@
     # Function returns list of special strings like 'any' or 'auto' and uknown 
interfaces.
     #
     # @param [String] zone
-    # @return  [Array<String>] special strings or unknown interfaces
+    # @return [Array<String>] special strings or unknown interfaces
     #
     # @example
-    #  GetSpecialInterfacesInZone("EXT") -> ["any", "unknown-1", "wrong-3"]
+    #    GetSpecialInterfacesInZone("EXT") -> ["any", "unknown-1", "wrong-3"]
     def GetSpecialInterfacesInZone(zone)
       interfaces_in_zone = Builtins.splitstring(
         Ops.get_string(@SETTINGS, Ops.add("FW_DEV_", zone), ""),
@@ -1966,8 +1969,8 @@
 
     # Function returns actual state of Masquerading support.
     #
-    # @param    Ignored
-    # @return  [Boolean] if supported
+    # @param _zone Ignored
+    # @return [Boolean] if supported
     def GetMasquerade(_zone = nil)
       Ops.get_string(@SETTINGS, "FW_MASQUERADE", "no") == "yes" &&
         Ops.get_string(@SETTINGS, "FW_ROUTE", "no") == "yes"
@@ -1975,8 +1978,8 @@
 
     # Function sets Masquerade support.
     #
-    # @param   boolean to support or not to support it
-    # @param    ignored
+    # @param enable [Boolean] to support or not to support it
+    # @param _zone ignored
     def SetMasquerade(enable, _zone = nil)
       SetModified()
 
@@ -1996,10 +1999,10 @@
     #
     # **Structure:**
     #
-    #          list [$[ key: value ]]
+    #     list [$[ key: value ]]
     #
     # @example
-    #  GetListOfForwardsIntoMasquerade() -> [
+    #    GetListOfForwardsIntoMasquerade() -> [
     # $[
     #   "forward_to":"172.24.233.1",
     #   "protocol":"tcp",
@@ -2053,7 +2056,7 @@
     # Function removes rule for forwarding into masquerade
     # from the list of current rules returned by 
GetListOfForwardsIntoMasquerade().
     #
-    # @params  integer item number
+    # @param remove_item [Integer] item number
     #
     # @see #GetListOfForwardsIntoMasquerade()
     def RemoveForwardIntoMasqueradeRule(remove_item)
@@ -2094,7 +2097,7 @@
     # @param [String] requested_ip
     #
     # @example
-    #  AddForwardIntoMasqueradeRule ("0/0", "192.168.32.1", "TCP", "80", 
"8080", "10.0.0.1")
+    #    AddForwardIntoMasqueradeRule ("0/0", "192.168.32.1", "TCP", "80", 
"8080", "10.0.0.1")
     def AddForwardIntoMasqueradeRule(source_net, forward_to_ip, protocol, 
req_port, redirect_to_port, requested_ip)
       SetModified()
 
@@ -2149,11 +2152,11 @@
     # Function returns actual state of logging for rule taken as parameter.
     #
     # @param [String] rule definition 'ACCEPT' or 'DROP'
-    # @return  [String] 'ALL', 'CRIT', or 'NONE'
+    # @return [String] 'ALL', 'CRIT', or 'NONE'
     #
     # @example
-    #  GetLoggingSettings("ACCEPT") -> "CRIT"
-    #  GetLoggingSettings("DROP") -> "CRIT"
+    #   GetLoggingSettings("ACCEPT") -> "CRIT"
+    #   GetLoggingSettings("DROP") -> "CRIT"
     def GetLoggingSettings(rule)
       ret_val = nil
 
@@ -2183,11 +2186,11 @@
     # Function sets state of logging for rule taken as parameter.
     #
     # @param [String] rule definition 'ACCEPT' or 'DROP'
-    # @param   string new logging state 'ALL', 'CRIT', or 'NONE'
+    # @param [String] state new logging state 'ALL', 'CRIT', or 'NONE'
     #
     # @example
-    #  SetLoggingSettings ("ACCEPT", "ALL")
-    #  SetLoggingSettings ("DROP", "NONE")
+    #   SetLoggingSettings ("ACCEPT", "ALL")
+    #   SetLoggingSettings ("DROP", "NONE")
     def SetLoggingSettings(rule, state)
       SetModified()
 
@@ -2223,11 +2226,11 @@
     # Function returns yes/no - ingoring broadcast for zone
     #
     # @param [String] zone
-    # @return  [String] "yes" or "no"
+    # @return [String] "yes" or "no"
     #
     # @example
-    #  // Does not logg ignored broadcast packets
-    #  GetIgnoreLoggingBroadcast ("EXT") -> "yes"
+    #    # Does not log ignored broadcast packets
+    #    GetIgnoreLoggingBroadcast ("EXT") -> "yes"
     def GetIgnoreLoggingBroadcast(zone)
       if !IsKnownZone(zone)
         Builtins.y2error("Unknown zone '%1'", zone)
@@ -2240,11 +2243,11 @@
     # Function sets yes/no - ingoring broadcast for zone
     #
     # @param [String] zone
-    # @param   string ignore 'yes' or 'no'
+    # @param [String] bcast ignore 'yes' or 'no'
     #
     # @example
-    #  // Do not log broadcast packetes from DMZ
-    #  SetIgnoreLoggingBroadcast ("DMZ", "yes")
+    #   # Does not log broadcast packets from DMZ
+    #   SetIgnoreLoggingBroadcast ("DMZ", "yes")
     def SetIgnoreLoggingBroadcast(zone, bcast)
       if !IsKnownZone(zone)
         Builtins.y2error("Unknown zone '%1'", zone)
@@ -2281,7 +2284,7 @@
     # Sets expert allow rules for zone.
     #
     # @param [String] zone
-    # @param string whitespace-separated expert_rules
+    # @param [String] expert_rules whitespace-separated expert_rules
     # @return [Boolean] if successful
     def SetAcceptExpertRules(zone, expert_rules)
       zone = Builtins.toupper(zone)
@@ -2317,11 +2320,12 @@
 
     # Sets list of additional kernel modules to be loaded by firewall on 
startup.
     #
-    # @param list <string> of kernel modules
+    # @param [Array<String>] k_modules list of kernel modules
     #
     # @see /etc/sysconfig/SuSEfirewall2 option nr. 32
     #
-    # @example SuSEFirewall::SetFirewallKernelModules 
(["ip_conntrack_ftp","ip_nat_ftp"]);
+    # @example
+    #   SuSEFirewall::SetFirewallKernelModules 
(["ip_conntrack_ftp","ip_nat_ftp"]);
     def SetFirewallKernelModules(k_modules)
       k_modules = deep_copy(k_modules)
       k_modules = Builtins.filter(k_modules) do |one_module|
@@ -2361,7 +2365,7 @@
     # Returns translated protocol name. Translation is provided from
     # SuSEfirewall2 sysconfig format to l10n format.
     #
-    # @param string string from sysconfig (e.g., _rpc_)
+    # @param protocol [String] from sysconfig (e.g., _rpc_)
     # @return [String] translated string (e.g., RPC)
     def GetProtocolTranslatedName(protocol)
       protocol = Builtins.tolower(protocol)
@@ -2385,7 +2389,7 @@
     # @return [Array<String>] list of definitions
     #
     # @example
-    # GetServicesAcceptRelated ("EXT") -> ["0/0,udp,427", "0/0,udp,137"]
+    #   GetServicesAcceptRelated ("EXT") -> ["0/0,udp,427", "0/0,udp,137"]
     #
     # @see #SetServicesAcceptRelated()
     def GetServicesAcceptRelated(zone)
@@ -2409,10 +2413,10 @@
     # reply or Samba browsing reply.
     #
     # @param [String] zone
-    # @param list <string> list of rules
+    # @param [Array<String>] ruleset list of rules
     #
     # @example
-    # SetServicesAcceptRelated ("EXT", ["0/0,udp,427", "0/0,udp,137"])
+    #   SetServicesAcceptRelated ("EXT", ["0/0,udp,427", "0/0,udp,137"])
     #
     # @see #GetServicesAcceptRelated()
     def SetServicesAcceptRelated(zone, ruleset)
@@ -2638,7 +2642,7 @@
 
     # Local function allows ports for requested protocol and zone.
     #
-    # @param   list <string> ports to be added
+    # @param [Array<string>] add_ports ports to be added
     # @param [String] protocol
     # @param [String] zone
     def AddAllowedPortsOrServices(add_ports, protocol, zone)
@@ -2671,7 +2675,7 @@
     # Sets whether ports need to be open already during boot
     # bsc#916376
     #
-    # @param [Boolean] new state
+    # @param [Boolean] new_state
     # @return [Boolean] current state
     def full_init_on_boot(new_state)
       @SETTINGS["FW_BOOT_FULL_INIT"] = new_state ? "yes" : "no"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.2.27/library/network/src/lib/network/susefirewalld.rb 
new/yast2-3.2.28/library/network/src/lib/network/susefirewalld.rb
--- old/yast2-3.2.27/library/network/src/lib/network/susefirewalld.rb   
2017-04-12 10:35:57.070772663 +0200
+++ new/yast2-3.2.28/library/network/src/lib/network/susefirewalld.rb   
2017-04-19 16:32:39.843807122 +0200
@@ -174,7 +174,7 @@
 
     # Function for setting SuSEFirewall configuration from input
     #
-    # @param   map <string, any> with configuration
+    # @param [Hash<String, Object>] import_settings with configuration
     def Import(import_settings)
       Read()
       import_settings = deep_copy(import_settings)
@@ -412,7 +412,7 @@
     # Function returns if the interface is in zone.
     #
     # @param [String] interface
-    # @param   string firewall zone
+    # @param [String] zone firewall zone
     # @return  [Boolean] is in zone
     #
     # @example IsInterfaceInZone ("eth-id-01:11:DA:9C:8A:2F", "INT") -> false
@@ -425,7 +425,7 @@
     # the interface. Firewalld does not allow an interface to be in more than
     # one zone, so no error detection for this case is needed.
     #
-    # @param string interface
+    # @param [String] interface
     # @return string zone, or nil
     def GetZoneOfInterface(interface)
       GetKnownFirewallZones().each do |zone|
@@ -442,7 +442,7 @@
     # @return  [Array<String>] firewall zones
     #
     # @example
-    #  GetZonesOfInterfaces (["eth1","eth4"]) -> ["EXT"]
+    #   GetZonesOfInterfaces (["eth1","eth4"]) -> ["EXT"]
     def GetZonesOfInterfacesWithAnyFeatureSupported(interfaces)
       interfaces = deep_copy(interfaces)
       zones = []
@@ -462,15 +462,15 @@
     # Function returns true if service is supported (allowed) in zone. Service 
must be defined
     # already be defined.
     #
-    # @see YCP Module SuSEFirewallServices
+    # @see Module SuSEFirewallServices
     # @param [String] service id
     # @param [String] zone
     # @return  [Boolean] if supported
     #
     # @example
-    #  // All ports defined by dns-server service in SuSEFirewallServices 
module
-    #  // are enabled in the respective zone
-    #  IsServiceSupportedInZone ("dns-server", "external") -> true
+    #   # All ports defined by dns-server service in SuSEFirewallServices 
module
+    #   # are enabled in the respective zone
+    #   IsServiceSupportedInZone ("dns-server", "external") -> true
     def IsServiceSupportedInZone(service, zone)
       return nil if !IsKnownZone(zone)
 
@@ -569,19 +569,15 @@
 
     # Function returns map of supported services all network interfaces.
     #
-    # @param   list <string> of services
-    # @return  [Hash <String, Hash{String => Boolean} >]
-    #
-    #
-    # **Structure:**
-    #
-    #          Returns $[service : $[ interface : supported_status ]]
+    # @param services [Array<String>] list of services
+    # @return [Hash<String, Hash<String, Boolean>>] Returns in format
+    #   `{service => { interface => supported_status }}`
     #
     # @example
-    #  GetServicesInZones (["service:irc-server"]) -> 
$["service:irc-server":$["eth1":true]]
-    #  // No such service "something"
-    #  GetServicesInZones (["something"])) -> $["something":$["eth1":nil]]
-    #  GetServicesInZones (["samba-server"]) -> 
$["samba-server":$["eth1":false]]
+    #   GetServicesInZones (["service:irc-server"]) -> 
$["service:irc-server":$["eth1":true]]
+    #   # No such service "something"
+    #   GetServicesInZones (["something"])) -> $["something":$["eth1":nil]]
+    #   GetServicesInZones (["samba-server"]) -> 
$["samba-server":$["eth1":false]]
     def GetServicesInZones(services)
       services = deep_copy(services)
       tmp_services = deep_copy(services)
@@ -597,14 +593,14 @@
 
     # Function sets status for several services in several firewall zones.
     #
-    # @param   list <string> service ids
-    # @param   list <string> firewall zones (EXT|INT|DMZ...)
-    # @param   boolean new status of services
+    # @param services_ids [Array<String>] service ids
+    # @param firewall_zones [Array<String>] firewall zones (EXT|INT|DMZ...)
+    # @param new_status [true, false] new status of services
     # @return  nil
     #
     # @example
-    #  SetServicesForZones (["samba-server", "service:irc-server"], ["DMZ", 
"EXT"], false);
-    #  SetServicesForZones (["samba-server", "service:irc-server"], ["EXT", 
"DMZ"], true);
+    #   SetServicesForZones (["samba-server", "service:irc-server"], ["DMZ", 
"EXT"], false);
+    #   SetServicesForZones (["samba-server", "service:irc-server"], ["EXT", 
"DMZ"], true);
     #
     # @see #GetServicesInZones()
     # @see #GetServices()
@@ -711,7 +707,7 @@
     # @return  [Array<String>] special strings or unknown interfaces
     #
     # @example
-    #  GetSpecialInterfacesInZone("EXT") -> ["any", "unknown-1", "wrong-3"]
+    #   GetSpecialInterfacesInZone("EXT") -> ["any", "unknown-1", "wrong-3"]
     def GetSpecialInterfacesInZone(zone)
       known_interfaces_now = GetListOfKnownInterfaces()
       get_zone_attr(zone, :interfaces).reject { |i| 
known_interfaces_now.include?(i) }
@@ -767,7 +763,7 @@
     # Function sets state of logging.
     # @note Similar restrictions to GetLoggingSettings apply
     # @param [String] rule definition 'ACCEPT' or 'DROP'
-    # @param   string new logging state 'ALL', 'CRIT', or 'NONE'
+    # @param [String] state new logging state 'ALL', 'CRIT', or 'NONE'
     def SetLoggingSettings(rule, state)
       return nil if rule == "ACCEPT"
       if rule == "DROP"
@@ -792,12 +788,12 @@
 
     # Function returns yes/no - ingoring broadcast for zone
     #
-    # @param [String] unused
-    # @return  [String] "yes" or "no"
+    # @param _zone [String] unused
+    # @return [String] "yes" or "no"
     #
     # @example
-    #  // Does not log ignored broadcast packets
-    #  GetIgnoreLoggingBroadcast () -> "yes"
+    #   # Does not log ignored broadcast packets
+    #   GetIgnoreLoggingBroadcast () -> "yes"
     def GetIgnoreLoggingBroadcast(_zone)
       return "no" if @SETTINGS["logging"] == "broadcast"
       "yes"
@@ -810,12 +806,12 @@
     # @note use SetLoggingSettings afterwards to enable the type of logging you
     # @note want.
     #
-    # @param [String] unused
-    # @param   string ignore 'yes' or 'no'
+    # @param _zone [String] unused
+    # @param bcast [String] ignore 'yes' or 'no'
     #
     # @example
-    #  // Do not log broadcast packetes from DMZ
-    #  SetIgnoreLoggingBroadcast ("DMZ", "yes")
+    #   # Do not log broadcast packetes from DMZ
+    #   SetIgnoreLoggingBroadcast ("DMZ", "yes")
     def SetIgnoreLoggingBroadcast(_zone, bcast)
       bcast = bcast.casecmp("no").zero? ? "broadcast" : "off"
 
@@ -866,7 +862,7 @@
     # @return  [Array<String>] of additional (unassigned) services
     #
     # @example
-    #  GetAdditionalServices("TCP", "EXT") -> ["53", "128"]
+    #   GetAdditionalServices("TCP", "EXT") -> ["53", "128"]
     def GetAdditionalServices(protocol, zone)
       protocol = protocol.upcase
 
@@ -891,7 +887,7 @@
 
     # Function sets list of services as allowed ports for zone and protocol
     #
-    # @param   list <string> of allowed ports/services
+    # @param [Array<string>] allowed_services list of allowed ports/services
     # @param [String] zone
     # @param [String] protocol
     def SetAllowedServicesForZoneProto(allowed_services, zone, protocol)
@@ -923,7 +919,6 @@
     # @param protocol [String] Protocol
     # @param zone [String] Zone
     # @param _check_for_aliases [Boolean] unused
-    # @param   boolean check for port-aliases
     def RemoveAllowedPortsOrServices(remove_ports, protocol, zone, 
_check_for_aliases)
       remove_ports = deep_copy(remove_ports)
       if Ops.less_than(Builtins.size(remove_ports), 1)
@@ -948,7 +943,7 @@
 
     # Function sets if firewall should support routing.
     #
-    # @param   boolean set to support route or not
+    # @param [Boolean] set_route set to support route or not
     # FirewallD does not have something similar to FW_ROUTE
     # so this API call is not applicable to FirewallD
     def SetSupportRoute(set_route)
@@ -973,7 +968,7 @@
     # was passed as argument since FirewallD always does a
     # full init on boot but we still need to be API compliant.
     #
-    # @param [Boolean] new state
+    # @param [Boolean] new_state
     # @return [Boolean] current state
     def full_init_on_boot(new_state)
       new_state
@@ -981,7 +976,7 @@
 
     # Local function allows ports for requested protocol and zone.
     #
-    # @param   list <string> ports to be added
+    # @param [Array<String>] add_ports ports to be added
     # @param [String] protocol
     # @param [String] zone
     def AddAllowedPortsOrServices(add_ports, protocol, zone)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.2.27/package/yast2.changes 
new/yast2-3.2.28/package/yast2.changes
--- old/yast2-3.2.27/package/yast2.changes      2017-04-12 10:35:57.126772663 
+0200
+++ new/yast2-3.2.28/package/yast2.changes      2017-04-19 16:32:40.507807122 
+0200
@@ -1,4 +1,10 @@
 -------------------------------------------------------------------
+Wed Apr 19 14:16:33 UTC 2017 - [email protected]
+
+- Fixed parsing whitespace lines in /etc/fstab (bsc#1030425)
+- 3.2.28
+
+-------------------------------------------------------------------
 Mon Apr 10 15:23:06 UTC 2017 - [email protected]
 
 - Set correct title when wizard is supported (bsc#1033161#c4)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.2.27/package/yast2.spec 
new/yast2-3.2.28/package/yast2.spec
--- old/yast2-3.2.27/package/yast2.spec 2017-04-12 10:35:57.130772663 +0200
+++ new/yast2-3.2.28/package/yast2.spec 2017-04-19 16:32:40.507807122 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2
-Version:        3.2.27
+Version:        3.2.28
 Release:        0
 Summary:        YaST2 - Main Package
 License:        GPL-2.0


Reply via email to