Package: ocsinventory-agent
Version: 1:0.0.9.2repack1-4lenny1
Tags: patch

I've resolved the problem recoding writeXML() function in Perl file:

/usr/share/perl5/Ocsinventory/Agent/XML/Inventory.pm

Patch code:

###

--- Inventory.pm        2009-07-13 23:12:43.000000000 +0200
+++ Inventory.pm.zlib   2009-07-13 23:14:51.000000000 +0200
@@ -421,11 +421,14 @@
   my $localfile = $self->{params}{local}."/".$self->{params}{deviceid}.'.ocs';
   $localfile =~ s!(//){1,}!/!;

-  # Convert perl data structure into xml strings
+  # Convert perl data structure into xml strings AND compress file.

   if (open OUT, ">$localfile") {
-    print OUT $self->getContent();
-    close OUT or warn;
+    my $inv_content = $self->getContent();
+    $inv_content = Compress::Zlib::compress( $inv_content ) or die
localtime()." => Compression error. Do you have
libcompress-zlib-perl?\n";
+    print OUT $inv_content;
+    binmode OUT;
+    close OUT or warn;
     $logger->info("Inventory saved in $localfile");
   } else {
     warn "Can't open `$localfile': $!"

###

Note that this function is deprecated in 1.02 ocsinventory-agent
version because compress job is
directly done in ocsinventory-agent.pl file without getContent() use.
In fact, "all" agent code is new.

Now, patched, "--local" mode works properly, and ocs resultant file
can be imported to the server.
--- Inventory.pm	2009-07-13 23:12:43.000000000 +0200
+++ Inventory.pm.zlib	2009-07-13 23:14:51.000000000 +0200
@@ -421,11 +421,14 @@
   my $localfile = $self->{params}{local}."/".$self->{params}{deviceid}.'.ocs';
   $localfile =~ s!(//){1,}!/!;
 
-  # Convert perl data structure into xml strings
+  # Convert perl data structure into xml strings AND compress file.
 
   if (open OUT, ">$localfile") {
-    print OUT $self->getContent();
-    close OUT or warn;
+    my $inv_content = $self->getContent();
+    $inv_content = Compress::Zlib::compress( $inv_content ) or die localtime()." => Compression error. Do you have libcompress-zlib-perl?\n";
+    print OUT $inv_content;
+    binmode OUT;
+    close OUT or warn;                                    
     $logger->info("Inventory saved in $localfile");
   } else {
     warn "Can't open `$localfile': $!"

Reply via email to