Add const qualifier to tzn returned by timestamp2tm()

The tzn value might come from tm->tm_zone, which libc declares as
const, so it's prudent that the upper layers know about this as well.
This commit is contained in:
Peter Eisentraut 2012-03-15 21:17:19 +02:00
parent 531e60aec0
commit eb990a2b9e
6 changed files with 10 additions and 10 deletions

View File

@ -4337,7 +4337,7 @@ pg_timezone_names(PG_FUNCTION_ARGS)
int tzoff;
struct pg_tm tm;
fsec_t fsec;
char *tzn;
const char *tzn;
Interval *resInterval;
struct pg_tm itm;

View File

@ -459,7 +459,7 @@ typedef struct TmToChar
{
struct pg_tm tm; /* classic 'tm' struct */
fsec_t fsec; /* fractional seconds */
char *tzn; /* timezone */
const char *tzn; /* timezone */
} TmToChar;
#define tmtcTm(_X) (&(_X)->tm)

View File

@ -494,7 +494,7 @@ timestamptz_out(PG_FUNCTION_ARGS)
struct pg_tm tt,
*tm = &tt;
fsec_t fsec;
char *tzn;
const char *tzn;
char buf[MAXDATELEN + 1];
if (TIMESTAMP_NOT_FINITE(dt))
@ -1415,7 +1415,7 @@ timestamptz_to_str(TimestampTz t)
struct pg_tm tt,
*tm = &tt;
fsec_t fsec;
char *tzn;
const char *tzn;
if (TIMESTAMP_NOT_FINITE(t))
EncodeSpecialTimestamp(t, buf);
@ -1466,7 +1466,7 @@ dt2time(Timestamp jd, int *hour, int *min, int *sec, fsec_t *fsec)
* timezone) will be used.
*/
int
timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, char **tzn, pg_tz *attimezone)
timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, const char **tzn, pg_tz *attimezone)
{
Timestamp date;
Timestamp time;
@ -1602,7 +1602,7 @@ recalc_t:
tm->tm_zone = tx->tm_zone;
*tzp = -tm->tm_gmtoff;
if (tzn != NULL)
*tzn = (char *) tm->tm_zone;
*tzn = tm->tm_zone;
}
else
{

View File

@ -2013,7 +2013,7 @@ map_sql_value_to_xml_value(Datum value, Oid type, bool xml_escape_strings)
struct pg_tm tm;
int tz;
fsec_t fsec;
char *tzn = NULL;
const char *tzn = NULL;
char buf[MAXDATELEN + 1];
timestamp = DatumGetTimestamp(value);

View File

@ -222,7 +222,7 @@ extern const char *timestamptz_to_str(TimestampTz t);
extern int tm2timestamp(struct pg_tm * tm, fsec_t fsec, int *tzp, Timestamp *dt);
extern int timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm,
fsec_t *fsec, char **tzn, pg_tz *attimezone);
fsec_t *fsec, const char **tzn, pg_tz *attimezone);
extern void dt2time(Timestamp dt, int *hour, int *min, int *sec, fsec_t *fsec);
extern int interval2tm(Interval span, struct pg_tm * tm, fsec_t *fsec);

View File

@ -119,7 +119,7 @@ SetEpochTimestamp(void)
* local time zone. If out of this range, leave as GMT. - tgl 97/05/27
*/
static int
timestamp2tm(timestamp dt, int *tzp, struct tm * tm, fsec_t *fsec, char **tzn)
timestamp2tm(timestamp dt, int *tzp, struct tm * tm, fsec_t *fsec, const char **tzn)
{
#ifdef HAVE_INT64_TIMESTAMP
int64 dDate,
@ -224,7 +224,7 @@ recalc_t:
*tzp = -tm->tm_gmtoff; /* tm_gmtoff is Sun/DEC-ism */
if (tzn != NULL)
*tzn = (char *) tm->tm_zone;
*tzn = tm->tm_zone;
#elif defined(HAVE_INT_TIMEZONE)
*tzp = (tm->tm_isdst > 0) ? TIMEZONE_GLOBAL - SECS_PER_HOUR : TIMEZONE_GLOBAL;
if (tzn != NULL)