summaryrefslogtreecommitdiff
path: root/sqmail-4.3.07/src/tai64nfrac.c
diff options
context:
space:
mode:
Diffstat (limited to 'sqmail-4.3.07/src/tai64nfrac.c')
-rw-r--r--sqmail-4.3.07/src/tai64nfrac.c85
1 files changed, 0 insertions, 85 deletions
diff --git a/sqmail-4.3.07/src/tai64nfrac.c b/sqmail-4.3.07/src/tai64nfrac.c
deleted file mode 100644
index f3db977..0000000
--- a/sqmail-4.3.07/src/tai64nfrac.c
+++ /dev/null
@@ -1,85 +0,0 @@
-#include "buffer.h"
-#include "stralloc.h"
-#include "exit.h"
-#include "readwrite.h"
-#include "open.h"
-#include "scan.h"
-#include "fmt.h"
-#include "getln.h"
-
-#define TAI64NLEN 24
-
-/** @file tai64nfrac
- @brief Read a TAI64N external format timestamp from stdin and
- write fractional seconds since epoch (TAI, not UTC) to stdout.
- Return the characters after the timestamp.
- */
-
-char outbuf[64];
-buffer bo = BUFFER_INIT(write,1,outbuf,sizeof(outbuf));
-
-static void outs(char *s)
-{
- if (buffer_puts(&bo,s) == -1) _exit(1);
- if (buffer_flush(&bo) == -1) _exit(1);
-}
-
-static void outi(int i)
-{
- char num[FMT_ULONG];
-
- if (buffer_put(&bo,num,fmt_ulong(num,(unsigned long) i)) == -1) _exit(1);
- if (buffer_flush(&bo) == -1) _exit(1);
-}
-
-char inbuf[1024];
-buffer bi = BUFFER_INIT(read,0,inbuf,sizeof(inbuf));
-
-int main(void)
-{
- int c;
- int i;
- int match;
- unsigned long u;
- unsigned long seconds;
- unsigned long nanoseconds;
- stralloc line = {0};
-
-/* Read from stdin */
-
- buffer_init(&bi,read,0,inbuf,sizeof(inbuf));
-
- for (;;) {
- if (getln(&bi,&line,&match,'\n') != 0) _exit(1);
- if (!match) break;
- if (!stralloc_0(&line)) _exit(1);
-
- seconds = 0;
- nanoseconds = 0;
-
- if (line.s[0] == '@') { /* tai64 timestamp */
- for (i = 1; i <= TAI64NLEN; i++) {
- c = (int)line.s[i];
- u = c - '0';
- if (u >= 10) {
- u = c - 'a';
- if (u >= 6) break;
- u += 10;
- }
- seconds <<= 4;
- seconds += nanoseconds >> 28;
- nanoseconds &= 0xfffffff;
- nanoseconds <<= 4;
- nanoseconds += u;
- }
- seconds -= 4611686018427387914ULL;
- seconds = seconds > 0 ? seconds : 0;
- outi(seconds); outs("."); outi(nanoseconds); outs(line.s + i); outs("\n");
- } else {
- outs("tai64nfrac: fatal: Wrong TAI64N input format."); outs("\n");
- _exit(1);
- }
- }
-
- _exit(0);
-}