diff options
Diffstat (limited to 'pttbbs/mbbsd/stuff.c')
-rw-r--r-- | pttbbs/mbbsd/stuff.c | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/pttbbs/mbbsd/stuff.c b/pttbbs/mbbsd/stuff.c index 9f13b2ef..a6aaec46 100644 --- a/pttbbs/mbbsd/stuff.c +++ b/pttbbs/mbbsd/stuff.c @@ -337,27 +337,30 @@ belong(char *filelist, char *key) #ifndef _BBS_UTIL_C_ /* getdata_buf */ time_t -gettime(int line, time_t dt) +gettime(int line, time_t dt, char*head) { char yn[7]; + int i; struct tm *ptime = localtime(&dt), endtime; memcpy(&endtime, ptime, sizeof(struct tm)); snprintf(yn, sizeof(yn), "%4d", ptime->tm_year + 1900); + move(line, 0); prints("%s",head); + i=strlen(head); do { - getdata_buf(line, 0, "西元年:", yn, 5, LCECHO); + getdata_buf(line, i, " 西元年:", yn, 5, LCECHO); } while ((endtime.tm_year = atoi(yn) - 1900) < 0 || endtime.tm_year > 200); snprintf(yn, sizeof(yn), "%d", ptime->tm_mon + 1); do { - getdata_buf(line, 13, "月:", yn, 3, LCECHO); + getdata_buf(line, i+15, "月:", yn, 3, LCECHO); } while ((endtime.tm_mon = atoi(yn) - 1) < 0 || endtime.tm_mon > 11); snprintf(yn, sizeof(yn), "%d", ptime->tm_mday); do { - getdata_buf(line, 22, "日:", yn, 3, LCECHO); + getdata_buf(line, i+24, "日:", yn, 3, LCECHO); } while ((endtime.tm_mday = atoi(yn)) < 1 || endtime.tm_mday > 31); snprintf(yn, sizeof(yn), "%d", ptime->tm_hour); do { - getdata_buf(line, 31, "時(0-23):", yn, 3, LCECHO); + getdata_buf(line, i+33, "時(0-23):", yn, 3, LCECHO); } while ((endtime.tm_hour = atoi(yn)) < 0 || endtime.tm_hour > 23); return mktime(&endtime); } @@ -660,3 +663,28 @@ StringHash(unsigned char *s) } return (v * 2654435769UL) >> (32 - HASH_BITS); } + +inline int *intbsearch(int key, int *base0, int nmemb) +{ + /* 改自 /usr/src/lib/libc/stdlib/bsearch.c , + 專給搜 int array 用的, 不透過 compar function 故較快些 */ + const char *base = (char *)base0; + size_t lim; + int *p; + + for (lim = nmemb; lim != 0; lim >>= 1) { + p = (int *)(base + (lim >> 1) * 4); + if( key == *p ) + return p; + if( key > *p ){/* key > p: move right */ + base = (char *)p + 4; + lim--; + } /* else move left */ + } + return (NULL); +} + +int qsort_intcompar(const void *a, const void *b) +{ + return *(int *)a - *(int *)b; +} |