mirror of
https://github.com/postgres/postgres.git
synced 2025-06-26 12:21:12 +03:00
8.4 pgindent run, with new combined Linux/FreeBSD/MinGW typedef list
provided by Andrew.
This commit is contained in:
@ -3,7 +3,7 @@
|
||||
* 1996-06-05 by Arthur David Olson.
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/timezone/localtime.c,v 1.20 2008/02/16 21:16:04 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/timezone/localtime.c,v 1.21 2009/06/11 14:49:15 momjian Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -77,7 +77,7 @@ struct rule
|
||||
|
||||
static long detzcode(const char *codep);
|
||||
static pg_time_t detzcode64(const char *codep);
|
||||
static int differ_by_repeat(pg_time_t t1, pg_time_t t0);
|
||||
static int differ_by_repeat(pg_time_t t1, pg_time_t t0);
|
||||
static const char *getzname(const char *strp);
|
||||
static const char *getqzname(const char *strp, int delim);
|
||||
static const char *getnum(const char *strp, int *nump, int min, int max);
|
||||
@ -85,16 +85,16 @@ static const char *getsecs(const char *strp, long *secsp);
|
||||
static const char *getoffset(const char *strp, long *offsetp);
|
||||
static const char *getrule(const char *strp, struct rule * rulep);
|
||||
static void gmtload(struct state * sp);
|
||||
static struct pg_tm *gmtsub(const pg_time_t *timep, long offset,
|
||||
struct pg_tm *tmp);
|
||||
static struct pg_tm *localsub(const pg_time_t *timep, long offset,
|
||||
struct pg_tm *tmp, const pg_tz *tz);
|
||||
static int increment_overflow(int *number, int delta);
|
||||
static struct pg_tm *gmtsub(const pg_time_t *timep, long offset,
|
||||
struct pg_tm * tmp);
|
||||
static struct pg_tm *localsub(const pg_time_t *timep, long offset,
|
||||
struct pg_tm * tmp, const pg_tz *tz);
|
||||
static int increment_overflow(int *number, int delta);
|
||||
static pg_time_t transtime(pg_time_t janfirst, int year,
|
||||
const struct rule *rulep, long offset);
|
||||
static int typesequiv(const struct state *sp, int a, int b);
|
||||
const struct rule * rulep, long offset);
|
||||
static int typesequiv(const struct state * sp, int a, int b);
|
||||
static struct pg_tm *timesub(const pg_time_t *timep, long offset,
|
||||
const struct state *sp, struct pg_tm *tmp);
|
||||
const struct state * sp, struct pg_tm * tmp);
|
||||
|
||||
/* GMT timezone */
|
||||
static struct state gmtmem;
|
||||
@ -130,10 +130,10 @@ detzcode(const char *codep)
|
||||
static pg_time_t
|
||||
detzcode64(const char *codep)
|
||||
{
|
||||
pg_time_t result;
|
||||
int i;
|
||||
pg_time_t result;
|
||||
int i;
|
||||
|
||||
result = (codep[0] & 0x80) ? (~(int64) 0) : 0;
|
||||
result = (codep[0] & 0x80) ? (~(int64) 0) : 0;
|
||||
for (i = 0; i < 8; ++i)
|
||||
result = result * 256 + (codep[i] & 0xff);
|
||||
return result;
|
||||
@ -143,7 +143,7 @@ static int
|
||||
differ_by_repeat(pg_time_t t1, pg_time_t t0)
|
||||
{
|
||||
if (TYPE_INTEGRAL(pg_time_t) &&
|
||||
TYPE_BIT(pg_time_t) - TYPE_SIGNED(pg_time_t) < SECSPERREPEAT_BITS)
|
||||
TYPE_BIT(pg_time_t) -TYPE_SIGNED(pg_time_t) <SECSPERREPEAT_BITS)
|
||||
return 0;
|
||||
return t1 - t0 == SECSPERREPEAT;
|
||||
}
|
||||
@ -160,9 +160,9 @@ tzload(const char *name, char *canonname, struct state * sp, int doextend)
|
||||
{
|
||||
struct tzhead tzhead;
|
||||
char buf[2 * sizeof(struct tzhead) +
|
||||
2 * sizeof *sp +
|
||||
4 * TZ_MAX_TIMES];
|
||||
} u;
|
||||
2 * sizeof *sp +
|
||||
4 * TZ_MAX_TIMES];
|
||||
} u;
|
||||
|
||||
if (name == NULL && (name = TZDEFAULT) == NULL)
|
||||
return -1;
|
||||
@ -194,9 +194,9 @@ tzload(const char *name, char *canonname, struct state * sp, int doextend)
|
||||
(ttisgmtcnt != sp->typecnt && ttisgmtcnt != 0))
|
||||
return -1;
|
||||
if (nread - (p - u.buf) <
|
||||
sp->timecnt * stored + /* ats */
|
||||
sp->timecnt * stored + /* ats */
|
||||
sp->timecnt + /* types */
|
||||
sp->typecnt * 6 + /* ttinfos */
|
||||
sp->typecnt * 6 + /* ttinfos */
|
||||
sp->charcnt + /* chars */
|
||||
sp->leapcnt * (stored + 4) + /* lsinfos */
|
||||
ttisstdcnt + /* ttisstds */
|
||||
@ -271,10 +271,10 @@ tzload(const char *name, char *canonname, struct state * sp, int doextend)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Out-of-sort ats should mean we're running on a
|
||||
* signed time_t system but using a data file with
|
||||
* unsigned values (or vice versa).
|
||||
* Out-of-sort ats should mean we're running on a signed time_t system
|
||||
* but using a data file with unsigned values (or vice versa).
|
||||
*/
|
||||
for (i = 0; i < sp->timecnt - 2; ++i)
|
||||
if (sp->ats[i] > sp->ats[i + 1])
|
||||
@ -292,8 +292,8 @@ tzload(const char *name, char *canonname, struct state * sp, int doextend)
|
||||
/*
|
||||
* Ignore the beginning (harder).
|
||||
*/
|
||||
int j;
|
||||
|
||||
int j;
|
||||
|
||||
for (j = 0; j + i < sp->timecnt; ++j)
|
||||
{
|
||||
sp->ats[j] = sp->ats[j + i];
|
||||
@ -303,6 +303,7 @@ tzload(const char *name, char *canonname, struct state * sp, int doextend)
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* If this is an old file, we're done.
|
||||
*/
|
||||
@ -311,6 +312,7 @@ tzload(const char *name, char *canonname, struct state * sp, int doextend)
|
||||
nread -= p - u.buf;
|
||||
for (i = 0; i < nread; ++i)
|
||||
u.buf[i] = p[i];
|
||||
|
||||
/*
|
||||
* If this is a narrow integer time_t system, we're done.
|
||||
*/
|
||||
@ -321,9 +323,9 @@ tzload(const char *name, char *canonname, struct state * sp, int doextend)
|
||||
u.buf[0] == '\n' && u.buf[nread - 1] == '\n' &&
|
||||
sp->typecnt + 2 <= TZ_MAX_TYPES)
|
||||
{
|
||||
struct state ts;
|
||||
int result;
|
||||
|
||||
struct state ts;
|
||||
int result;
|
||||
|
||||
u.buf[nread - 1] = '\0';
|
||||
result = tzparse(&u.buf[1], &ts, FALSE);
|
||||
if (result == 0 && ts.typecnt == 2 &&
|
||||
@ -369,9 +371,9 @@ tzload(const char *name, char *canonname, struct state * sp, int doextend)
|
||||
}
|
||||
|
||||
static int
|
||||
typesequiv(const struct state *sp, int a, int b)
|
||||
typesequiv(const struct state * sp, int a, int b)
|
||||
{
|
||||
int result;
|
||||
int result;
|
||||
|
||||
if (sp == NULL ||
|
||||
a < 0 || a >= sp->typecnt ||
|
||||
@ -428,7 +430,7 @@ getzname(const char *strp)
|
||||
static const char *
|
||||
getqzname(const char *strp, int delim)
|
||||
{
|
||||
int c;
|
||||
int c;
|
||||
|
||||
while ((c = *strp) != '\0' && c != delim)
|
||||
++strp;
|
||||
@ -814,7 +816,7 @@ tzparse(const char *name, struct state * sp, int lastditch)
|
||||
sp->timecnt + 2 <= TZ_MAX_TIMES;
|
||||
++year)
|
||||
{
|
||||
pg_time_t newfirst;
|
||||
pg_time_t newfirst;
|
||||
|
||||
starttime = transtime(janfirst, year, &start,
|
||||
stdoffset);
|
||||
@ -986,7 +988,7 @@ gmtload(struct state * sp)
|
||||
*/
|
||||
static struct pg_tm *
|
||||
localsub(const pg_time_t *timep, long offset,
|
||||
struct pg_tm *tmp, const pg_tz *tz)
|
||||
struct pg_tm * tmp, const pg_tz *tz)
|
||||
{
|
||||
const struct state *sp;
|
||||
const struct ttinfo *ttisp;
|
||||
@ -1002,10 +1004,11 @@ localsub(const pg_time_t *timep, long offset,
|
||||
pg_time_t seconds;
|
||||
pg_time_t tcycles;
|
||||
int64 icycles;
|
||||
|
||||
|
||||
if (t < sp->ats[0])
|
||||
seconds = sp->ats[0] - t;
|
||||
else seconds = t - sp->ats[sp->timecnt - 1];
|
||||
else
|
||||
seconds = t - sp->ats[sp->timecnt - 1];
|
||||
--seconds;
|
||||
tcycles = seconds / YEARSPERREPEAT / AVGSECSPERYEAR;
|
||||
++tcycles;
|
||||
@ -1017,19 +1020,21 @@ localsub(const pg_time_t *timep, long offset,
|
||||
seconds *= AVGSECSPERYEAR;
|
||||
if (t < sp->ats[0])
|
||||
newt += seconds;
|
||||
else newt -= seconds;
|
||||
else
|
||||
newt -= seconds;
|
||||
if (newt < sp->ats[0] ||
|
||||
newt > sp->ats[sp->timecnt - 1])
|
||||
return NULL; /* "cannot happen" */
|
||||
return NULL; /* "cannot happen" */
|
||||
result = localsub(&newt, offset, tmp, tz);
|
||||
if (result == tmp)
|
||||
{
|
||||
pg_time_t newy;
|
||||
pg_time_t newy;
|
||||
|
||||
newy = tmp->tm_year;
|
||||
if (t < sp->ats[0])
|
||||
newy -= icycles * YEARSPERREPEAT;
|
||||
else newy += icycles * YEARSPERREPEAT;
|
||||
else
|
||||
newy += icycles * YEARSPERREPEAT;
|
||||
tmp->tm_year = newy;
|
||||
if (tmp->tm_year != newy)
|
||||
return NULL;
|
||||
@ -1048,16 +1053,17 @@ localsub(const pg_time_t *timep, long offset,
|
||||
}
|
||||
else
|
||||
{
|
||||
int lo = 1;
|
||||
int hi = sp->timecnt;
|
||||
|
||||
int lo = 1;
|
||||
int hi = sp->timecnt;
|
||||
|
||||
while (lo < hi)
|
||||
{
|
||||
int mid = (lo + hi) >> 1;
|
||||
|
||||
int mid = (lo + hi) >> 1;
|
||||
|
||||
if (t < sp->ats[mid])
|
||||
hi = mid;
|
||||
else lo = mid + 1;
|
||||
else
|
||||
lo = mid + 1;
|
||||
}
|
||||
i = (int) sp->types[lo - 1];
|
||||
}
|
||||
@ -1081,7 +1087,7 @@ pg_localtime(const pg_time_t *timep, const pg_tz *tz)
|
||||
* gmtsub is to gmtime as localsub is to localtime.
|
||||
*/
|
||||
static struct pg_tm *
|
||||
gmtsub(const pg_time_t *timep, long offset, struct pg_tm *tmp)
|
||||
gmtsub(const pg_time_t *timep, long offset, struct pg_tm * tmp)
|
||||
{
|
||||
struct pg_tm *result;
|
||||
|
||||
@ -1125,11 +1131,11 @@ leaps_thru_end_of(const int y)
|
||||
|
||||
static struct pg_tm *
|
||||
timesub(const pg_time_t *timep, long offset,
|
||||
const struct state *sp, struct pg_tm *tmp)
|
||||
const struct state * sp, struct pg_tm * tmp)
|
||||
{
|
||||
const struct lsinfo *lp;
|
||||
pg_time_t tdays;
|
||||
int idays; /* unsigned would be so 2003 */
|
||||
int idays; /* unsigned would be so 2003 */
|
||||
long rem;
|
||||
int y;
|
||||
const int *ip;
|
||||
@ -1169,11 +1175,11 @@ timesub(const pg_time_t *timep, long offset,
|
||||
rem = *timep - tdays * SECSPERDAY;
|
||||
while (tdays < 0 || tdays >= year_lengths[isleap(y)])
|
||||
{
|
||||
int newy;
|
||||
int newy;
|
||||
pg_time_t tdelta;
|
||||
int idelta;
|
||||
int leapdays;
|
||||
|
||||
int idelta;
|
||||
int leapdays;
|
||||
|
||||
tdelta = tdays / DAYSPERLYEAR;
|
||||
idelta = tdelta;
|
||||
if (tdelta - idelta >= 1 || idelta - tdelta >= 1)
|
||||
@ -1190,12 +1196,13 @@ timesub(const pg_time_t *timep, long offset,
|
||||
y = newy;
|
||||
}
|
||||
{
|
||||
long seconds;
|
||||
|
||||
long seconds;
|
||||
|
||||
seconds = tdays * SECSPERDAY + 0.5;
|
||||
tdays = seconds / SECSPERDAY;
|
||||
rem += seconds - tdays * SECSPERDAY;
|
||||
}
|
||||
|
||||
/*
|
||||
* Given the range, we can now fearlessly cast...
|
||||
*/
|
||||
@ -1227,6 +1234,7 @@ timesub(const pg_time_t *timep, long offset,
|
||||
if (increment_overflow(&tmp->tm_year, -TM_YEAR_BASE))
|
||||
return NULL;
|
||||
tmp->tm_yday = idays;
|
||||
|
||||
/*
|
||||
* The "extra" mods below avoid overflow problems.
|
||||
*/
|
||||
@ -1264,7 +1272,7 @@ timesub(const pg_time_t *timep, long offset,
|
||||
static int
|
||||
increment_overflow(int *number, int delta)
|
||||
{
|
||||
int number0;
|
||||
int number0;
|
||||
|
||||
number0 = *number;
|
||||
*number += delta;
|
||||
@ -1330,10 +1338,11 @@ pg_next_dst_boundary(const pg_time_t *timep,
|
||||
pg_time_t tcycles;
|
||||
int64 icycles;
|
||||
int result;
|
||||
|
||||
|
||||
if (t < sp->ats[0])
|
||||
seconds = sp->ats[0] - t;
|
||||
else seconds = t - sp->ats[sp->timecnt - 1];
|
||||
else
|
||||
seconds = t - sp->ats[sp->timecnt - 1];
|
||||
--seconds;
|
||||
tcycles = seconds / YEARSPERREPEAT / AVGSECSPERYEAR;
|
||||
++tcycles;
|
||||
@ -1345,10 +1354,11 @@ pg_next_dst_boundary(const pg_time_t *timep,
|
||||
seconds *= AVGSECSPERYEAR;
|
||||
if (t < sp->ats[0])
|
||||
newt += seconds;
|
||||
else newt -= seconds;
|
||||
else
|
||||
newt -= seconds;
|
||||
if (newt < sp->ats[0] ||
|
||||
newt > sp->ats[sp->timecnt - 1])
|
||||
return -1; /* "cannot happen" */
|
||||
return -1; /* "cannot happen" */
|
||||
|
||||
result = pg_next_dst_boundary(&newt, before_gmtoff,
|
||||
before_isdst,
|
||||
@ -1395,16 +1405,17 @@ pg_next_dst_boundary(const pg_time_t *timep,
|
||||
}
|
||||
/* Else search to find the containing segment */
|
||||
{
|
||||
int lo = 1;
|
||||
int hi = sp->timecnt;
|
||||
|
||||
int lo = 1;
|
||||
int hi = sp->timecnt;
|
||||
|
||||
while (lo < hi)
|
||||
{
|
||||
int mid = (lo + hi) >> 1;
|
||||
|
||||
int mid = (lo + hi) >> 1;
|
||||
|
||||
if (t < sp->ats[mid])
|
||||
hi = mid;
|
||||
else lo = mid + 1;
|
||||
else
|
||||
lo = mid + 1;
|
||||
}
|
||||
i = lo;
|
||||
}
|
||||
|
Reference in New Issue
Block a user