1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
|
/*
* Copyright (c) 1991, 1992, 1993 Brad Eacker,
* (Music, Intuition, Software, and Computers)
* All Rights Reserved
*/
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#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 <time.h>
char *db_cur_date(char *cp)
{
struct tm *ctm, tmbuf;
time_t c_time;
c_time = time((time_t *)NULL);
ctm = php_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;
}
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: sw=4 ts=4 fdm=marker
* vim<600: sw=4 ts=4
*/
|