# Todo List

Member dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol)
  Support cursor rows.

Member tds_set_server (TDSLOGIN *tds_login, const char *server)
  open the log file earlier, so these messages can be seen.

Member DBSETLENCRYPT (x, y)
  Unimplemented.

Member dbanullbind (DBPROCESS *dbproc, int computeid, int column, DBINT *indicator)
  Never fails, but only because failure conditions aren't checked.

Member dbcancel (DBPROCESS *dbproc)
  Check for failure and return accordingly.

Member dbconvert (DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen)
  What happens if client does not reset values?

Member dbconvert (DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen)
  Microsoft and Sybase define this function differently.

Member dbexit ()
  breaks if ctlib/dblib used in same process.

Member dbmoretext (DBPROCESS *dbproc, DBINT size, BYTE *text)
  Check return value of called functions and return `FAIL` if appropriate.

Member dbpoll (DBPROCESS *dbproc, long milliseconds, DBPROCESS **ready_dbproc, int *return_reason)
  Unimplemented.

Member dbregexec (DBPROCESS *dbproc, DBUSMALLINT options)
  Unimplemented.

Member dbreginit (DBPROCESS *dbproc, DBCHAR *procedure_name, DBSMALLINT namelen)
  Unimplemented.

Member dbreglist (DBPROCESS *dbproc)
  Unimplemented.

Member dbregparam (DBPROCESS *dbproc, char *param_name, int type, DBINT datalen, BYTE *data)
  Unimplemented.

Member dbrpwclr (LOGINREC *login)
  Unimplemented.

Member dbrpwset (LOGINREC *login, char *srvname, char *password, int pwlen)
  Unimplemented.

Member dbsetdefcharset (char *charset)
  Unimplemented.

Member dbsetdeflang (char *language)
  Unimplemented.

Member dbsetopt (DBPROCESS *dbproc, int option, const char *char_param, int int_param)
  Implement more options.

Member dbuse (DBPROCESS *dbproc, const char *name)
  name should be quoted.

Member dbretdata (DBPROCESS *dbproc, int retnum)
  Handle blobs.

Member bcp_colfmt_ps (DBPROCESS *dbproc, int host_colnum, int host_type, int host_prefixlen, DBINT host_collen, BYTE *host_term, int host_termlen, int table_colnum, DBTYPEINFO *typeinfo)
  Not implemented.

Member bcp_moretext (DBPROCESS *dbproc, DBINT size, BYTE *text)
  implement bcp_moretext().

Member bcp_options (DBPROCESS *dbproc, int option, BYTE *value, int valuelen)
  Simplify. Remove valuelen, and dbproc->bcpinfo->hint = strdup(hints[i])

Member bcp_writefmt (DBPROCESS *dbproc, char *filename)
  For completeness, freebcp ought to be able to create format files, but that functionality is currently lacking, as is bcp_writefmt().

Member bcp_writefmt (DBPROCESS *dbproc, char *filename)
  See the vendors' documentation for the format of these files.

Member dbmny4divide (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *quotient)
  Unimplemented.

Member dbmny4mul (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *prod)
  Unimplemented.

Member dbmnyadd (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *sum)
  Unimplemented.

Member dbmnydivide (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *quotient)
  Unimplemented.

Member dbmnydown (DBPROCESS *dbproc, DBMONEY *amount, int divisor, int *remainder)
  Unimplemented.

Member dbmnyinit (DBPROCESS *dbproc, DBMONEY *amount, int trim, DBBOOL *negative)
  Unimplemented.

Member dbmnymul (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *prod)
  Unimplemented.

Member dbmnyndigit (DBPROCESS *dbproc, DBMONEY *mnyptr, DBCHAR *digit, DBBOOL *zero)
  Unimplemented.

Member dbmnyscale (DBPROCESS *dbproc, DBMONEY *amount, int multiplier, int addend)
  Unimplemented.

Member dbmnysub (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *difference)
  Unimplemented.

Member dbcurcmd (DBPROCESS *dbproc)
  Unimplemented.

Member dbcurrow (DBPROCESS *dbproc)
  Unimplemented.

Member dbsetlbool (LOGINREC *login, int value, int which)
  DBSETNOSHORT, DBSETENCRYPT, DBSETLABELED

Member tdsdbopen (LOGINREC *login, const char *server, int msdblib)
  use `asprintf()` to avoid buffer overflow.

Member tdsdbopen (LOGINREC *login, const char *server, int msdblib)
  separate error messages for no-such-server and no-such-user.

Member tds_iconv (TDSSOCKET *tds, const TDSICONV *conv, TDS_ICONV_DIRECTION io, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
  Check for variable multibyte non-UTF-8 input character set.

Member tds_iconv (TDSSOCKET *tds, const TDSICONV *conv, TDS_ICONV_DIRECTION io, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
  Use more robust error message generation.

Member tds_iconv (TDSSOCKET *tds, const TDSICONV *conv, TDS_ICONV_DIRECTION io, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
  For reads, cope with outbuf encodings that don't have the equivalent of an ASCII '?'.

Member tds_iconv (TDSSOCKET *tds, const TDSICONV *conv, TDS_ICONV_DIRECTION io, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
  Support alternative to '?' for the replacement character.

Member tds_get_char_data (TDSSOCKET *tds, char *row_buffer, size_t wire_size, TDSCOLUMN *curcol)
  put a TDSICONV structure in every TDSCOLUMN

Member tds_process_tokens (TDSSOCKET *tds, TDS_INT *result_type, int *done_flags, unsigned flag)
  Complete TDS_DESCRIBE_RESULT description