? system_shares.diff Index: SMBConfig.pm =================================================================== RCS file: /cvs/system-tools-backends/system-tools-backends/SMBConfig.pm,v retrieving revision 1.3 diff -u -r1.3 SMBConfig.pm --- SMBConfig.pm 27 Nov 2006 16:36:33 -0000 1.3 +++ SMBConfig.pm 19 Jun 2007 15:28:23 -0000 @@ -28,8 +28,8 @@ my $OBJECT_NAME = "SMBConfig"; my $OBJECT_PATH = "$Utils::Backend::DBUS_PATH/$OBJECT_NAME"; -my $format = [[ "array", [ "struct", "string", "string", "string", "int32", "int32", "int32", "int32" ]], - "string", "string", "int32", "string" ]; +my $share_format = [ "struct", "string", "string", "string", "int32", "int32", "int32", "int32" ]; +my $format = [["array", $share_format], "string", "string", "int32", "string", ["array", $share_format]]; sub new { Index: Shares/SMB.pm =================================================================== RCS file: /cvs/system-tools-backends/system-tools-backends/Shares/SMB.pm,v retrieving revision 1.6 diff -u -r1.6 SMB.pm --- Shares/SMB.pm 4 Jan 2007 17:50:09 -0000 1.6 +++ Shares/SMB.pm 19 Jun 2007 15:28:23 -0000 @@ -198,6 +198,26 @@ &Utils::Replace::remove_ini_var ($smb_conf_file, $section, "writeable"); } +sub get_system_shares +{ + my ($smb_conf_file) = @_; + my (@sections, @table, $share); + + # Get the sections. + @sections = &Utils::Parse::get_ini_sections ($smb_conf_file); + + for $section (@sections) + { + next if ($section !~ /^(global)|(homes)|(printers)|(print\$)$/); + next if (&Utils::Parse::get_from_ini_bool ($smb_conf_file, $section, "printable")); + + $share = &get_share_info ($smb_conf_file, $section); + push @table, $share; + } + + return \@table; +} + sub get_shares { my ($smb_conf_file) = @_; @@ -221,17 +241,18 @@ sub get { my ($smb_conf_file); - my ($shares, $workgroup, $desc, $wins, $winsserver); + my ($shares, $workgroup, $desc, $wins, $winsserver, $system_shares); $smb_conf_file = &get_distro_smb_file; $shares = &get_shares ($smb_conf_file); + $system_shares = &get_system_shares ($smb_conf_file); $workgroup = &Utils::Parse::get_from_ini ($smb_conf_file, "global", "workgroup"); $smbdesc = &Utils::Parse::get_from_ini ($smb_conf_file, "global", "server string"); $wins = &Utils::Parse::get_from_ini_bool ($smb_conf_file, "global", "wins support"); $winsserver = &Utils::Parse::get_from_ini ($smb_conf_file, "global", "wins server"); - return ($shares, $workgroup, $smbdesc, $wins, $winsserver); + return ($shares, $workgroup, $smbdesc, $wins, $winsserver, $system_shares); } sub set_shares