Added command APDU
[gnupg.git] / common / gettime.c
index a7914d3..93e4ba1 100644 (file)
@@ -46,6 +46,32 @@ gnupg_get_time ()
     return current - timewarp;
 }
 
+
+/* Return the current time (possibly faked) in ISO format. */
+void
+gnupg_get_isotime (gnupg_isotime_t timebuf)
+{
+  time_t atime = gnupg_get_time ();
+    
+  if (atime < 0)
+    *timebuf = 0;
+  else 
+    {
+      struct tm *tp;
+#ifdef HAVE_GMTIME_R
+      struct tm tmbuf;
+      
+      tp = gmtime_r (&atime, &tmbuf);
+#else
+      tp = gmtime (&atime);
+#endif
+      sprintf (timebuf,"%04d%02d%02dT%02d%02d%02d",
+               1900 + tp->tm_year, tp->tm_mon+1, tp->tm_mday,
+               tp->tm_hour, tp->tm_min, tp->tm_sec);
+    }
+}
+
+
 /* set the time to NEWTIME so that gnupg_get_time returns a time
    starting with this one.  With FREEZE set to 1 the returned time
    will never change.  Just for completeness, a value of (time_t)-1
@@ -220,9 +246,11 @@ asctimestamp( u32 stamp )
       mem2str( fmt, nl_langinfo(D_T_FMT), DIM(fmt)-3 );
       if( strstr( fmt, "%Z" ) == NULL )
        strcat( fmt, " %Z");
-      strftime( buffer, DIM(buffer)-1, fmt, tp );
+      /* NOTE: gcc -Wformat-noliteral will complain here.  I have
+         found no way to suppress this warning .*/
+      strftime (buffer, DIM(buffer)-1, fmt, tp);
 #else
-      /* fixme: we should check whether the locale appends a " %Z"
+      /* FIXME: we should check whether the locale appends a " %Z"
        * These locales from glibc don't put the " %Z":
        * fi_FI hr_HR ja_JP lt_LT lv_LV POSIX ru_RU ru_SU sv_FI sv_SE zh_CN
        */