📄 tai64nlocal.c
字号:
#include <sys/types.h>#include <time.h>#include <sys/time.h>#include <unistd.h>#include "buffer.h"#include "fmt.h"char num[FMT_ULONG];void get(char *ch){ int r; r = buffer_GETC(buffer_0,ch); if (r == 1) return; if (r == 0) _exit(0); _exit(111);}void out(const char *buf,int len){ if (buffer_put(buffer_1,buf,len) == -1) _exit(111);}time_t secs;unsigned long nanosecs;unsigned long u;struct tm *t;int main(){ char ch; for (;;) { get(&ch); if (ch == '@') { secs = 0; nanosecs = 0; for (;;) { get(&ch); u = ch - '0'; if (u >= 10) { u = ch - 'a'; if (u >= 6) break; u += 10; } secs <<= 4; secs += nanosecs >> 28; nanosecs &= 0xfffffff; nanosecs <<= 4; nanosecs += u; } secs -= 4611686018427387914ULL; t = localtime(&secs); out(num,fmt_ulong(num,1900 + t->tm_year)); out("-",1); out(num,fmt_uint0(num,1 + t->tm_mon,2)); out("-",1); out(num,fmt_uint0(num,t->tm_mday,2)); out(" ",1); out(num,fmt_uint0(num,t->tm_hour,2)); out(":",1); out(num,fmt_uint0(num,t->tm_min,2)); out(":",1); out(num,fmt_uint0(num,t->tm_sec,2)); out(".",1); out(num,fmt_uint0(num,nanosecs,9)); } for (;;) { out(&ch,1); if (ch == '\n') break; get(&ch); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -