/* * Copyright (c) 1991, 1992, 1993 Brad Eacker, * (Music, Intuition, Software, and Computers) * All Rights Reserved */ #include #include #include #include "dbf_misc.h" #include "php_reentrancy.h" /* * routine to change little endian long to host long */ long get_long(char *cp) { int ret; unsigned char *source = (unsigned char *)cp; ret = *source++; ret += ((*source++)<<8); ret += ((*source++)<<16); ret += ((*source++)<<24); return ret; } void put_long(char *cp, long lval) { *cp++ = lval & 0xff; *cp++ = (lval >> 8) & 0xff; *cp++ = (lval >> 16) & 0xff; *cp++ = (lval >> 24) & 0xff; } /* * routine to change little endian short to host short */ int get_short(char *cp) { int ret; unsigned char *source = (unsigned char *)cp; ret = *source++; ret += ((*source++)<<8); return ret; } void put_short(char *cp, int sval) { *cp++ = sval & 0xff; *cp++ = (sval >> 8) & 0xff; } double get_double(char *cp) { double ret; unsigned char *dp = (unsigned char *)&ret; dp[7] = *cp++; dp[6] = *cp++; dp[5] = *cp++; dp[4] = *cp++; dp[3] = *cp++; dp[2] = *cp++; dp[1] = *cp++; dp[0] = *cp++; return ret; } void put_double(char *cp, double fval) { unsigned char *dp = (unsigned char *)&fval; cp[7] = *dp++; cp[6] = *dp++; cp[5] = *dp++; cp[4] = *dp++; cp[3] = *dp++; cp[2] = *dp++; cp[1] = *dp++; cp[0] = *dp++; } void copy_fill(char *dp, char *sp, int len) { while (*sp && len > 0) { *dp++ = *sp++; len--; } while (len-- > 0) *dp++ = ' '; } void copy_crimp(char *dp, char *sp, int len) { while (len-- > 0) { *dp++ = *sp++; } *dp = 0; for (dp-- ; *dp == ' '; dp--) { *dp = 0; } } void db_set_date(char *cp, int year, int month, int day) { if (month > 12) month = 0; if (day > 31) day = 0; sprintf(cp, "%d", year); cp[4] = month / 10 + '0'; cp[5] = month % 10 + '0'; cp[6] = day / 10 + '0'; cp[7] = day % 10 + '0'; cp[8] = 0; } int db_date_year(char *cp) { int year, i; for (year = 0, i = 0; i < 4; i++) year = year * 10 + (cp[i] - '0'); return year; } int db_date_month(char *cp) { int month, i; for (month = 0, i = 4; i < 6; i++) month = month * 10 + (cp[i] - '0'); return month; } int db_date_day(char *cp) { int day, i; for (day = 0, i = 6; i < 8; i++) day = day * 10 + (cp[i] - '0'); return day; } #include char *db_cur_date(char *cp) { struct tm *ctm, tmbuf; time_t c_time; c_time = time((time_t *)NULL); ctm = localtime_r(&c_time, &tmbuf); if (cp == NULL) cp = (char *)malloc(9); if (ctm == NULL || cp == NULL) return NULL; db_set_date(cp, ctm->tm_year + 1900, ctm->tm_mon + 1, ctm->tm_mday); return cp; }