diff --git a/lib/modules/Sql.pmod/tds.pike b/lib/modules/Sql.pmod/tds.pike index 98eaccca8ea16793b39fa97cff56529260485eee..0737c9231e929d3874ca9fd1aebae0f329827ef2 100644 --- a/lib/modules/Sql.pmod/tds.pike +++ b/lib/modules/Sql.pmod/tds.pike @@ -1,5 +1,5 @@ /* - * $Id: tds.pike,v 1.3 2006/02/10 10:27:43 grubba Exp $ + * $Id: tds.pike,v 1.4 2006/02/10 10:31:44 grubba Exp $ * * A Pike implementation of the TDS protocol. * @@ -1016,7 +1016,8 @@ static { static string|int convert(string|int raw, mapping(string:mixed) info) { if (!raw) return raw; /* NULL */ - switch(info->cardinal_type) { + int cardinal_type; + switch(cardinal_type = info->cardinal_type) { case SYBCHAR: case SYBVARCHAR: case SYBTEXT: @@ -1079,11 +1080,14 @@ static { case SYBINT8: // FIXME: SIGN! return sprintf("%d", array_sscanf(raw, "%-8c")[0]); + case SYBDATETIMN: + if (sizeof(raw) == 8) cardinal_type = SYBDATETIME; + // FALL_THROUGH case SYBDATETIME: case SYBDATETIME4: { int day, min, sec, sec_300; - if (info->cardinal_type == SYBDATETIME) { + if (cardinal_type == SYBDATETIME) { sscanf(raw, "%-4c%-4c", day, sec_300); sec = sec_300/300; sec_300 %= 300; @@ -1112,11 +1116,6 @@ static { return sprintf("%04d-%02d-%02dT%02d:%02d:%02d", year, mon, mday, hour, min, sec); } -#if 0 - case SYBDATETIMN: - - break; -#endif /* 0 */ } return raw; }