Bug 5549 : Let Timestamp do the right thing if passed a DateTime
[koha.git] / C4 / SIP / Sip.pm
index a2f167e..4e3f299 100644 (file)
@@ -9,10 +9,10 @@ use warnings;
 use English;
 use Exporter;
 
-use DateTime;
 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);
@@ -50,12 +50,11 @@ our $last_response = '';
 
 sub timestamp {
     my $time = $_[0] || time();
-    if ($time=~m/^(\d{4})\-(\d{2})\-(\d{2})/) {
-        my $dt = DateTime->new(
-            year  => $1,
-            month => $2,
-            day   => $3);
-        $time = $dt->epoch();
+    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);
     }
     return strftime(SIP_DATETIME, localtime($time));
 }
@@ -234,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'");
     }