Bug 5549 : Let Timestamp do the right thing if passed a DateTime
[koha.git] / C4 / SIP / Sip.pm
index 8a0f067..4e3f299 100644 (file)
@@ -12,6 +12,7 @@ use Exporter;
 use Sys::Syslog qw(syslog);
 use POSIX qw(strftime);
 use Socket qw(:crlf);
+use IO::Handle;
 
 use Sip::Constants qw(SIP_DATETIME);
 use Sip::Checksum qw(checksum);
@@ -49,7 +50,9 @@ our $last_response = '';
 
 sub timestamp {
     my $time = $_[0] || time();
-    if ($time=~m/^(\d{4})\-(\d{2})\-(\d{2})/) {
+    if ( ref $time eq 'DateTime') {
+        return $time->strftime(SIP_DATETIME);
+    } elsif ($time=~m/^(\d{4})\-(\d{2})\-(\d{2})/) {
         # passing a db returned date as is + bogus time
         return sprintf( '%04d%02d%02d    235900', $1, $2, $3);
     }
@@ -230,9 +233,11 @@ sub write_msg {
 
 
     if ($file) {
+        $file->autoflush(1);
         print $file "$msg\r";
     } else {
-        print "$msg\r";
+        STDOUT->autoflush(1);
+        print $msg, "\r";
         syslog("LOG_INFO", "OUTPUT MSG: '$msg'");
     }