📄 util.c
字号:
#include <stdio.h>#include "../fileio/fileglob.h"#include "masks.h"#include "util.h"extern void exit();#define MACTIMOFFS 1904static int mlength[] = {0, 31, 61, 92, 122, 153, 184, 214, 245, 275, 306, 337};unsigned long get4(bp)char *bp;{ register int i; long value = 0; for(i = 0; i < 4; i++) { value <<= 8; value |= (*bp & BYTEMASK); bp++; } return value;}/* For if integers are stored wrong-endian. */unsigned long get4i(bp)char *bp;{ register int i; long value = 0; bp += 3; for(i = 0; i < 4; i++) { value <<= 8; value |= (*bp & BYTEMASK); bp--; } return value;}unsigned long get2(bp)char *bp;{ register int i; int value = 0; for(i = 0; i < 2; i++) { value <<= 8; value |= (*bp & BYTEMASK); bp++; } return value;}/* For if integers are stored wrong-endian. */unsigned long get2i(bp)char *bp;{ register int i; long value = 0; bp += 1; for(i = 0; i < 2; i++) { value <<= 8; value |= (*bp & BYTEMASK); bp--; } return value;}unsigned char getb(fp)FILE *fp;{ int c; bytes_read += 1; c = getc(fp); if(c == EOF) { (void)fprintf(stderr, "\nPremature EOF\n"); exit(1); } return c & BYTEMASK;}void copy(d, s, n)char *d, *s;int n;{ while(--n >= 0) { *d++ = *s++; }}int do_query(){ char *tp, temp[10]; (void)fprintf(stderr, "? "); (void) fflush(stdout); (void) read(2, temp, sizeof(temp)); temp[sizeof(temp) - 1] = 0; tp = temp; while(*tp != 0) { if(*tp == 'y' || *tp == 'Y') { return 1; } else { tp++; } } return 0;}void put4(dest, value)char *dest;unsigned long value;{ *dest++ = (value >> 24) & BYTEMASK; *dest++ = (value >> 16) & BYTEMASK; *dest++ = (value >> 8) & BYTEMASK; *dest++ = value & BYTEMASK;}void put2(dest, value)char *dest;unsigned long value;{ *dest++ = (value >> 8) & BYTEMASK; *dest++ = value & BYTEMASK;}void do_indent(indent)int indent;{ int i; for(i = 0; i < indent; i++) { (void)fputc(' ', stderr); }}real_time set_time(year, month, day, hours, minutes, seconds)int year, month, day, hours, minutes, seconds;{ real_time toset; toset.year = year; toset.month = month; toset.day = day; toset.hours = hours; toset.minutes = minutes; toset.seconds = seconds; return toset;}unsigned long tomactime(time)real_time time;{ long accum; int year; accum = time.month - 3; year = time.year; if(accum < 0) { accum += 12; year--; } accum = time.day + mlength[accum] + 59; accum += (year - MACTIMOFFS) * 365 + year / 4 - MACTIMOFFS / 4; accum = ((accum * 24 + time.hours) * 60 + time.minutes) * 60 + time.seconds; return (unsigned)accum;}real_time frommactime(accum)unsigned long accum;{long tmp1, tmp2;real_time time; time.seconds = tmp1 = accum % 60; accum /= 60; time.minutes = tmp1 = accum % 60; accum /= 60; time.hours = tmp1 = accum % 24; accum /= 24; tmp1 = (long)accum - 60; tmp2 = tmp1 % 1461; if(tmp2 < 0) { tmp2 += 1461; } tmp1 = (tmp1 - tmp2) / 1461; time.year = tmp1 * 4; tmp1 = tmp2 / 365; if(tmp1 > 3) { tmp1 = 3; } time.year += tmp1 + MACTIMOFFS; tmp2 -= tmp1 * 365; tmp1 = 12; while(mlength[--tmp1] > tmp2); time.day = tmp2 + 1 - mlength[tmp1]; time.month = tmp1 + 3; if(tmp1 > 9) { time.month = tmp1 - 9; time.year++; } return time;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -