diff options
Diffstat (limited to 'src/backend/utils/adt')
-rw-r--r-- | src/backend/utils/adt/arrayfuncs.c | 10 | ||||
-rw-r--r-- | src/backend/utils/adt/geo-ops.c | 20 | ||||
-rw-r--r-- | src/backend/utils/adt/misc.c | 10 | ||||
-rw-r--r-- | src/backend/utils/adt/nabstime.c | 15 | ||||
-rw-r--r-- | src/backend/utils/adt/numutils.c | 6 | ||||
-rw-r--r-- | src/backend/utils/adt/varlena.c | 26 |
6 files changed, 57 insertions, 30 deletions
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index 8a2b0fd2910..a8f70898805 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.2 1996/07/20 07:58:44 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.3 1996/07/22 21:56:00 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -224,6 +224,14 @@ _ArrayCount(char *str, int dim[], int typdelim) bool done = false; while (!done) { switch (*q) { +#ifdef ESCAPE_PATCH + case '\\': + /* skip escaped characters (\ and ") inside strings */ + if (scanning_string && *(q+1)) { + q++; + } + break; +#endif case '\"': scanning_string = ! scanning_string; break; diff --git a/src/backend/utils/adt/geo-ops.c b/src/backend/utils/adt/geo-ops.c index 8262591a050..d47eda81afa 100644 --- a/src/backend/utils/adt/geo-ops.c +++ b/src/backend/utils/adt/geo-ops.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/geo-ops.c,v 1.1.1.1 1996/07/09 06:22:04 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/geo-ops.c,v 1.2 1996/07/22 21:56:01 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -717,8 +717,8 @@ long path_inter(PATH *p1, PATH *p2) int i, j; LSEG seg1, seg2; - b1.xh = b1.yh = b2.xh = b2.yh = DBL_MAX; - b1.xl = b1.yl = b2.xl = b2.yl = -DBL_MAX; + b1.xh = b1.yh = b2.xh = b2.yh = (double)DBL_MAX; + b1.xl = b1.yl = b2.xl = b2.yl = -(double)DBL_MAX; for (i = 0; i < p1->npts; ++i) { b1.xh = Max(p1->p[i].x, b1.xh); b1.yh = Max(p1->p[i].y, b1.yh); @@ -955,7 +955,7 @@ double *point_slope(Point *pt1, Point *pt2) result = PALLOCTYPE(double); if (point_vert(pt1, pt2)) - *result = DBL_MAX; + *result = (double)DBL_MAX; else *result = (pt1->y - pt2->y) / (pt1->x - pt1->x); return(result); @@ -965,7 +965,7 @@ double *point_slope(Point *pt1, Point *pt2) double point_sl(Point *pt1, Point *pt2) { return( point_vert(pt1, pt2) - ? DBL_MAX + ? (double)DBL_MAX : (pt1->y - pt2->y) / (pt1->x - pt2->x) ); } @@ -1124,7 +1124,7 @@ double *lseg_distance(LSEG *l1, LSEG *l2) *result = 0.0; return(result); } - *result = DBL_MAX; + *result = (double)DBL_MAX; d = dist_ps(&l1->p[0], l2); *result = Min(*result, *d); PFREE(d); @@ -1148,7 +1148,7 @@ double lseg_dt(LSEG *l1, LSEG *l2) if (lseg_intersect(l1, l2)) return(0.0); - result = DBL_MAX; + result = (double)DBL_MAX; d = dist_ps(&l1->p[0], l2); result = Min(result, *d); PFREE(d); @@ -1231,7 +1231,7 @@ double *dist_ps(Point *pt, LSEG *lseg) if (lseg->p[1].x == lseg->p[0].x) m = 0; else if (lseg->p[1].y == lseg->p[0].y) /* slope is infinite */ - m = DBL_MAX; + m = (double)DBL_MAX; else m = (-1) * (lseg->p[1].y - lseg->p[0].y) / (lseg->p[1].x - lseg->p[0].x); ln = line_construct_pm(pt, m); @@ -1512,8 +1512,8 @@ long on_pl(Point *pt, LINE *line) */ long on_ps(Point *pt, LSEG *lseg) { - return( point_dt(pt, &lseg->p[0]) + point_dt(pt, &lseg->p[1]) - == point_dt(&lseg->p[0], &lseg->p[1]) ); + return( FPeq (point_dt(pt, &lseg->p[0]) + point_dt(pt, &lseg->p[1]), + point_dt(&lseg->p[0], &lseg->p[1])) ); } long on_pb(Point *pt, BOX *box) diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c index 094973257ac..97c80fb4f4b 100644 --- a/src/backend/utils/adt/misc.c +++ b/src/backend/utils/adt/misc.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/misc.c,v 1.2 1996/07/16 07:13:33 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/misc.c,v 1.3 1996/07/22 21:56:02 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -17,8 +17,12 @@ #include "catalog/pg_type.h" #include "utils/builtins.h" -#if !defined(PORTNAME_linux) && !defined(PORTNAME_BSD44_derived) && \ - !defined(PORTNAME_irix5) && !defined(PORTNAME_bsdi) && !defined(PORTNAME_bsdi_2_1) && !defined(PORTNAME_aix) +#if !defined(PORTNAME_aix) && \ + !defined(PORTNAME_BSD44_derived) && \ + !defined(PORTNAME_bsdi) && \ + !defined(PORTNAME_bsdi_2_1) && \ + !defined(PORTNAME_irix5) && \ + !defined(PORTNAME_linux) extern int random(); extern int srandom(unsigned); #endif diff --git a/src/backend/utils/adt/nabstime.c b/src/backend/utils/adt/nabstime.c index 8bf212bb191..3faa3a216f9 100644 --- a/src/backend/utils/adt/nabstime.c +++ b/src/backend/utils/adt/nabstime.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.2 1996/07/20 08:36:19 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.3 1996/07/22 21:56:03 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -291,23 +291,24 @@ tryabsdate(char *fields[], int nf, struct tm *tm, int *tzp) (void) ftime(&now); *tzp = now.timezone; #else /* USE_POSIX_TIME */ -#if defined(PORTNAME_hpux) || \ - defined(PORTNAME_aix) || \ +#if defined(PORTNAME_aix) || \ + defined(PORTNAME_hpux) || \ + defined(PORTNAME_i386_solaris) || \ defined(PORTNAME_irix5) || \ - defined(WIN32) || \ - defined(PORTNAME_sparc_solaris) || defined(PORTNAME_i386_solaris) + defined(PORTNAME_sparc_solaris) || \ + defined(WIN32) tzset(); #ifndef WIN32 *tzp = timezone / 60; /* this is an X/Open-ism */ #else *tzp = _timezone / 60; /* this is an X/Open-ism */ #endif /* WIN32 */ -#else /* PORTNAME_hpux || PORTNAME_aix || PORTNAME_sparc_solaris || PORTNAME_irix5 */ +#else /* PORTNAME_aix || PORTNAME_hpux || ... */ time_t now = time((time_t *) NULL); struct tm *tmnow = localtime(&now); *tzp = - tmnow->tm_gmtoff / 60; /* tm_gmtoff is Sun/DEC-ism */ -#endif /* PORTNAME_hpux || PORTNAME_aix */ +#endif /* PORTNAME_aix || PORTNAME_hpux || ... */ #endif /* USE_POSIX_TIME */ tm->tm_mday = tm->tm_mon = tm->tm_year = -1; /* mandatory */ diff --git a/src/backend/utils/adt/numutils.c b/src/backend/utils/adt/numutils.c index 93221051f24..823212afa0f 100644 --- a/src/backend/utils/adt/numutils.c +++ b/src/backend/utils/adt/numutils.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.2 1996/07/16 07:13:35 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.3 1996/07/22 21:56:03 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -132,7 +132,9 @@ ltoa(int32 l, char *a) int ftoa(double value, char *ascii, int width, int prec1, char format) { -#if defined(PORTNAME_BSD44_derived) || defined(PORTNAME_bsdi) || defined(PORTNAME_bsdi_2_1) +#if defined(PORTNAME_BSD44_derived) || \ + defined(PORTNAME_bsdi) || \ + defined(PORTNAME_bsdi_2_1) char out[256]; char fmt[256]; int ret; diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 7b186f02fe4..a00528eff19 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.3 1996/07/19 07:14:14 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.4 1996/07/22 21:56:04 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -219,23 +219,35 @@ int textlen (text* t) * takes two text* and returns a text* that is the concatentation of * the two */ + +/* + * Rewrited by Sapa, sapa@hq.icb.chel.su. 8-Jul-96. + */ + text* textcat(text* t1, text* t2) { int len1, len2, newlen; + char *ptr; text* result; + /* Check for NULL strings... */ if (t1 == NULL) return t2; if (t2 == NULL) return t1; - len1 = textlen (t1); - len2 = textlen (t2); - newlen = len1 + len2 + VARHDRSZ; - result = (text*) palloc (newlen); + /* Check for ZERO-LENGTH strings... */ + /* I use <= instead of == , I know - it's paranoia, but... */ + if((len1 = VARSIZE(t1) - VARHDRSZ) <= 0) return t2; + if((len2 = VARSIZE(t2) - VARHDRSZ) <= 0) return t1; + + result = (text *)palloc(newlen = len1 + len2 + VARHDRSZ); + + /* Fill data field of result string... */ + memcpy(ptr = VARDATA(result), VARDATA(t1), len1); + memcpy(ptr + len1, VARDATA(t2), len2); + /* Set size of result string... */ VARSIZE(result) = newlen; - memcpy (VARDATA(result), VARDATA(t1), len1); - memcpy (VARDATA(result) + len1, VARDATA(t2), len2); return result; } |