Skip to content

Instantly share code, notes, and snippets.

@metaskills
Created March 27, 2011 13:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save metaskills/889190 to your computer and use it in GitHub Desktop.
Save metaskills/889190 to your computer and use it in GitHub Desktop.
--- include/sybdb.h
+++ include/sybdb.h
@@ -1165,6 +1165,8 @@ RETCODE dbsetlversion (LOGINREC * login, BYTE version);
#define DBSETLABELED 13
#define DBSETLLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)
#define BCP_SETLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)
+#define DBSETDBNAME 14
+#define DBSETLDBNAME(x,y) dbsetlname((x), (y), DBSETDBNAME)
#define DBSETLVERSION(login, version) dbsetlversion((login), (version))
RETCODE bcp_init(DBPROCESS * dbproc, const char *tblname, const char *hfile, const char *errfile, int direction);
--- include/tds.h
+++ include/tds.h
@@ -844,6 +844,7 @@ typedef struct tds_login
TDS_INT query_timeout;
unsigned char capabilities[TDS_MAX_CAPABILITY];
DSTR client_charset;
+ DSTR database;
unsigned int bulk_copy:1;
unsigned int suppress_language:1;
} TDSLOGIN;
@@ -1468,6 +1469,7 @@ void tds_set_library(TDSLOGIN * tds_login, const char *library);
void tds_set_server(TDSLOGIN * tds_login, const char *server);
void tds_set_client_charset(TDSLOGIN * tds_login, const char *charset);
void tds_set_language(TDSLOGIN * tds_login, const char *language);
+void tds_set_database_name(TDSLOGIN * tds_login, const char *dbname);
void tds_set_version(TDSLOGIN * tds_login, TDS_TINYINT major_ver, TDS_TINYINT minor_ver);
void tds_set_capabilities(TDSLOGIN * tds_login, unsigned char *capabilities, int size);
int tds_connect_and_login(TDSSOCKET * tds, TDSCONNECTION * connection);
--- src/dblib/dblib.c
+++ src/dblib/dblib.c
@@ -780,6 +780,10 @@ dbsetlname(LOGINREC * login, const char *value, int which)
tds_set_language(login->tds_login, value);
return SUCCEED;
break;
+ case DBSETDBNAME:
+ tds_set_database_name(login->tds_login, value ? value : "");
+ return SUCCEED;
+ break;
default:
dbperror(NULL, SYBEASUL, 0); /* Attempt to set unknown LOGINREC field */
return FAIL;
--- src/tds/config.c
+++ src/tds/config.c
@@ -640,6 +640,11 @@ tds_config_login(TDSCONNECTION * connection, TDSLOGIN * login)
tdsdump_log(TDS_DBG_INFO1, "tds_config_login: %s is %s.\n", "client_charset",
tds_dstr_cstr(&connection->client_charset));
}
+ if (!tds_dstr_isempty(&login->database)) {
+ tds_dstr_dup(&connection->database, &login->database);
+ tdsdump_log(TDS_DBG_INFO1, "tds_config_login: %s is %s.\n", "database_name",
+ tds_dstr_cstr(&connection->database));
+ }
if (!tds_dstr_isempty(&login->client_host_name)) {
tds_dstr_dup(&connection->client_host_name, &login->client_host_name);
}
--- src/tds/login.c
+++ src/tds/login.c
@@ -163,6 +163,12 @@ tds_set_language(TDSLOGIN * tds_login, const char *language)
}
void
+tds_set_database_name(TDSLOGIN * tds_login, const char *dbname)
+{
+ tds_dstr_copy(&tds_login->database, dbname);
+}
+
+void
tds_set_capabilities(TDSLOGIN * tds_login, unsigned char *capabilities, int size)
{
memcpy(tds_login->capabilities, capabilities, size > TDS_MAX_CAPABILITY ? TDS_MAX_CAPABILITY : size);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment