freetds AT lists.ibiblio.org
Subject: FreeTDS Development Group
List archive
[freetds] [PATCH] support for no terminator in bcp format file
- From: Xavier <xavier+freetds AT diwi.org>
- To: freetds AT lists.ibiblio.org
- Subject: [freetds] [PATCH] support for no terminator in bcp format file
- Date: Sat, 6 Dec 2008 13:31:01 -0800
bcp_colfmt requires a null pointer when specifying no terminator, and
currently barfs when zero length is supplied with non-null pointer (as
is
the case when specifying an empty string for terminator in the format
file).
The attached patch fixes the parsing of the bcp format file to pass a
null
pointer when an empty string was specified as terminator.
NB: a nice side effect of this is the possibility to use a named pipe as
input to freebcp
When specifying a prefix length and no terminator for all columns in the
format file, freebcp will not perform any fseek on the input stream,
allowing the use of named pipes.
- Xavier
diff -ur freetds-cvs/src/dblib/bcp.c freetds/src/dblib/bcp.c --- freetds-cvs/src/dblib/bcp.c 2008-11-25 14:58:28.000000000 -0800 +++ freetds/src/dblib/bcp.c 2008-12-06 12:04:37.000000000 -0800 @@ -2894,13 +2894,16 @@ if (*tok != '\"') return (FALSE); - - if ((ci->terminator = malloc(i)) == NULL) { - dbperror(dbproc, SYBEMEM, errno); - return FALSE; + + if(i > 0) { + if ((ci->terminator = malloc(i)) == NULL) { + dbperror(dbproc, SYBEMEM, errno); + return FALSE; + } + memcpy(ci->terminator, term, i); } - - memcpy(ci->terminator, term, i); + else ci->terminator = NULL; + ci->term_len = i; whichcol = TAB_COLNUM;
- [freetds] [PATCH] support for no terminator in bcp format file, Xavier, 12/06/2008
Archive powered by MHonArc 2.6.24.