aboutsummaryrefslogtreecommitdiff
path: root/riemann.fmi.uni-sofia.bg/ngetty/ngetty-1.1/nv_gmtime.c
diff options
context:
space:
mode:
Diffstat (limited to 'riemann.fmi.uni-sofia.bg/ngetty/ngetty-1.1/nv_gmtime.c')
-rw-r--r--riemann.fmi.uni-sofia.bg/ngetty/ngetty-1.1/nv_gmtime.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/riemann.fmi.uni-sofia.bg/ngetty/ngetty-1.1/nv_gmtime.c b/riemann.fmi.uni-sofia.bg/ngetty/ngetty-1.1/nv_gmtime.c
new file mode 100644
index 0000000..048600b
--- /dev/null
+++ b/riemann.fmi.uni-sofia.bg/ngetty/ngetty-1.1/nv_gmtime.c
@@ -0,0 +1,36 @@
+#include <time.h>
+
+struct tm *nv_gmtime(const time_t *t) /*EXTRACT_INCL*/{
+ static struct tm tm;
+ unsigned long day, mon, year, yday=0, tod;
+
+ tod = (unsigned long)(*t) % 86400;
+ day = (unsigned long)(*t) / 86400;
+ tm.tm_wday = ((day+4) % 7);
+ tm.tm_sec = tod%60; tod /= 60;
+ tm.tm_min = tod%60;
+ tm.tm_hour = tod/60;
+
+ year = 4*day + 2;
+ year /= 1461;
+
+ day += 671;
+ day %= 1461; /* day 0 is march 1, 1972 */
+ if (day < 306) yday = 1;
+ if (day == 1460) { day = 365; yday = 59; }
+ else { day %= 365; yday += (day + 59) % 365; }
+
+ day *= 10;
+ mon = (day + 5) / 306;
+ day = day + 5 - 306 * mon;
+ day /= 10;
+ if (mon >= 10) mon -= 10;
+ else mon += 2; /* day 0,1,30, mon 0..11, year 1970=0,1,2 */
+
+ tm.tm_year = year+70;
+ tm.tm_mon = mon;
+ tm.tm_mday = day+1;
+ tm.tm_yday = yday;
+ return &tm;
+}
+