summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormwesdorp <mwesdorp>2013-05-05 19:50:43 +0000
committermwesdorp <mwesdorp>2013-05-05 19:50:43 +0000
commite7c7fd04e1c17ea1bea0fd5c717211dfd314350c (patch)
treea752524b8a511c09e7f7a4183746b4937e40f2e9 /src
parent8b28efa84989620a2d5260ba3cecd69d03add566 (diff)
sqsh-2.2.0 last minute modifications.
Diffstat (limited to 'src')
-rw-r--r--src/cmd_bcp.c23
-rw-r--r--src/cmd_connect.c59
-rw-r--r--src/sqsh_debug.c4
-rw-r--r--src/sqsh_readline.c9
4 files changed, 67 insertions, 28 deletions
diff --git a/src/cmd_bcp.c b/src/cmd_bcp.c
index ef0f791..e38caa5 100644
--- a/src/cmd_bcp.c
+++ b/src/cmd_bcp.c
@@ -40,7 +40,7 @@
/*-- Current Version --*/
#if !defined(lint) && !defined(__LINT__)
-static char RCS_Id[] = "$Id: cmd_bcp.c,v 1.16 2013/04/26 09:16:34 mwesdorp Exp $";
+static char RCS_Id[] = "$Id: cmd_bcp.c,v 1.17 2013/05/05 19:50:43 mwesdorp Exp $";
USE(RCS_Id)
#endif /* !defined(lint) */
@@ -192,8 +192,10 @@ int cmd_bcp( argc, argv )
int batchsize = -1; /* Copy all rows in one batch */
int have_error = False;
CS_BOOL have_identity = CS_FALSE;
- CS_BOOL char_convert = CS_FALSE;
+#if defined (CS_NOCHARSETCNV_REQD) && defined (BLK_CONV)
+ CS_BOOL char_convert = CS_FALSE; /* Used with -T option (transit) */
CS_BOOL transit = CS_FALSE; /* Disable client character conversion */
+#endif
/*
* sqsh-2.1.9 - Feature BCP execute an initialization command
@@ -270,7 +272,12 @@ int cmd_bcp( argc, argv )
break;
case 'T' :
+#if defined (CS_NOCHARSETCNV_REQD) && defined (BLK_CONV)
transit = CS_TRUE;
+#else
+ fprintf(stderr, "\\bcp: -T: Transit option is not supported by bulkcopy library\n");
+ fprintf(stderr, "\\bcp: -T: Parameter will be ignored\n");
+#endif
break;
case 'U' :
@@ -616,10 +623,10 @@ int cmd_bcp( argc, argv )
#endif
}
-#if defined (CS_NOCHARSETCNV_REQD)
+#if defined (CS_NOCHARSETCNV_REQD) && defined (BLK_CONV)
/*
- * sqsh-2.2.0 - Disable character set conversion on client
- * when in transit (-T option)
+ * sqsh-2.2.0 - Disable character set conversion by client
+ * when in transit bulk transfer is requested (-T option)
*/
if (transit == CS_TRUE)
{
@@ -812,10 +819,10 @@ int cmd_bcp( argc, argv )
}
}
-#if defined (BLK_CONV)
+#if defined (CS_NOCHARSETCNV_REQD) && defined (BLK_CONV)
/*
- * sqsh-2.2.0 - Disable character set conversion on client
- * when in transit (-T option)
+ * sqsh-2.2.0 - Disable character set conversion by client
+ * when in transit bulk transfer is requested (-T option)
*/
if (transit == CS_TRUE)
{
diff --git a/src/cmd_connect.c b/src/cmd_connect.c
index 6393e64..964e659 100644
--- a/src/cmd_connect.c
+++ b/src/cmd_connect.c
@@ -42,7 +42,7 @@
/*-- Current Version --*/
#if !defined(lint) && !defined(__LINT__)
-static char RCS_Id[] = "$Id: cmd_connect.c,v 1.30 2013/05/03 11:19:38 mwesdorp Exp $";
+static char RCS_Id[] = "$Id: cmd_connect.c,v 1.31 2013/05/05 19:50:43 mwesdorp Exp $";
USE(RCS_Id)
#endif /* !defined(lint) */
@@ -151,8 +151,6 @@ int cmd_connect( argc, argv )
char *password ;
char *server ;
char *interfaces ;
- char *colsep ;
- char *width ;
char *packet_size ;
char *autouse ;
char *session ;
@@ -190,9 +188,12 @@ int cmd_connect( argc, argv )
CS_INT SybTimeOut;
CS_BOOL NetAuthRequired;
varbuf_t *exp_buf = NULL;
- /* sqsh-2.2.0 - New variables */
+
+ /* sqsh-2.2.0 - New variables for TDS debugging with ct_debug() */
+#if defined (DEBUG) && defined (CS_SET_DBG_FILE) && defined (CS_SET_PROTOCOL_FILE)
char *debug_tds_logdata;
char *debug_tds_capture;
+#endif
#if defined(CTLIB_SIGPOLL_BUG) && defined(F_SETOWN)
int ctlib_fd;
@@ -227,11 +228,19 @@ int cmd_connect( argc, argv )
/*
* Parse the command line options.
* sqsh-2.1.6 - New options added and case evaluation neatly ordered.
+ * sqsh-2.2.0 - -J option added. -I requires an optarg.
*/
- while ((c = sqsh_getopt( argc, argv, "cD:I;K:n:N:P;Q:R:S:T:U:V;XZ;" )) != EOF)
+ while ((c = sqsh_getopt( argc, argv, "A:cD:G:I:J:K:n:N:P;Q:R:S:T:U:V;XZ;z:" )) != EOF)
{
switch( c )
{
+ case 'A' : /* sqsh-2.2.0 - Option added */
+ if (env_put( g_env, "packet_size", sqsh_optarg, ENV_F_TRAN ) == False)
+ {
+ fprintf( stderr, "\\connect: -A: %s\n", sqsh_get_errstr() );
+ have_error = True;
+ }
+ break;
case 'c' :
preserve_context = False ;
break ;
@@ -242,6 +251,13 @@ int cmd_connect( argc, argv )
have_error = True;
}
break;
+ case 'G' : /* sqsh-2.2.0 - Option added */
+ if (env_put( g_env, "tds_version", sqsh_optarg, ENV_F_TRAN ) == False)
+ {
+ fprintf( stderr, "\\connect: -G: %s\n", sqsh_get_errstr() );
+ have_error = True;
+ }
+ break;
case 'I' :
if (env_put( g_env, "interfaces", sqsh_optarg, ENV_F_TRAN ) == False)
{
@@ -249,6 +265,13 @@ int cmd_connect( argc, argv )
have_error = True;
}
break ;
+ case 'J' : /* sqsh-2.2.0 - Option added */
+ if (env_put( g_env, "charset", sqsh_optarg, ENV_F_TRAN ) == False)
+ {
+ fprintf( stderr, "\\connect: -J: %s\n", sqsh_get_errstr() );
+ have_error = True;
+ }
+ break ;
case 'K' : /* sqsh-2.1.6 */
if (env_put( g_env, "keytab_file", sqsh_optarg, ENV_F_TRAN ) == False)
{
@@ -335,6 +358,13 @@ int cmd_connect( argc, argv )
have_error = True;
}
break ;
+ case 'z' : /* sqsh-2.2.0 - Option added */
+ if (env_put( g_env, "language", sqsh_optarg, ENV_F_TRAN ) == False)
+ {
+ fprintf( stderr, "\\connect: -z: %s\n", sqsh_get_errstr() );
+ have_error = True;
+ }
+ break ;
case 'Z' : /* sqsh-2.1.6 */
if (sqsh_optarg == NULL || *sqsh_optarg == '\0')
return_code = env_put( g_env, "secmech", "default", ENV_F_TRAN);
@@ -355,17 +385,17 @@ int cmd_connect( argc, argv )
}
/*
- * If there are any options left on the end of the line, then
- * we have an error.
+ * If there are any options left on the end of the line, then we have an error.
* sqsh-2.1.6 - New options added to the list.
+ * sqsh-2.2.0 - -J charset added to the list.
*/
if( have_error || sqsh_optind != argc )
{
fprintf( stderr,
- "Use: \\connect [-c] [-I interfaces] [-U username] [-P pwd] [-S server]\n"
- " [-D database ] [-N appname] [-n {on|off}] [-Q query_timeout]\n"
- " [-T login_timeout] [-K keytab_file] [-R principal]\n"
- " [-V [bcdimoqru]] [-X] [-Z [secmech|default|none]]\n"
+ "Use: \\connect [-A packet size] [-c] [-I interfaces] [-U username] [-P pwd] [-S server]\n"
+ " [-D database ] [-G tds version] [-J charset] [-N appname] [-n {on|off}]\n"
+ " [-Q query_timeout] [-T login_timeout] [-K keytab_file] [-R principal]\n"
+ " [-V [bcdimoqru]] [-X] [-z language] [-Z [secmech|default|none]]\n"
) ;
env_rollback( g_env );
@@ -381,8 +411,6 @@ int cmd_connect( argc, argv )
env_get( g_env, "username", &username ) ;
env_get( g_env, "DSQUERY", &server ) ;
env_get( g_env, "interfaces", &interfaces ) ;
- env_get( g_env, "width", &width ) ;
- env_get( g_env, "colsep", &colsep ) ;
env_get( g_env, "packet_size", &packet_size ) ;
env_get( g_env, "autouse", &autouse ) ;
env_get( g_env, "database", &database ) ;
@@ -988,12 +1016,13 @@ int cmd_connect( argc, argv )
CS_SET_DBG_FILE, /* Action */
CS_UNUSED, /* Flag */
cp, /* Buffer value */
- strlen(cp) /* Buffer length */
+ CS_NULLTERM /* String '\0' terminated */
) != CS_SUCCEED)
fprintf (stderr, "\\connect: ct_debug - Unable to set CS_SET_DBG_FILE to %s\n", cp);
else
{
fprintf (stdout, "\\connect: ct_debug - Successfully set CS_SET_DBG_FILE to %s\n", cp);
+
if (ct_debug ( g_context, /* Context */
g_connection, /* Connection */
CS_SET_FLAG, /* Action */
@@ -1027,7 +1056,7 @@ int cmd_connect( argc, argv )
CS_SET_PROTOCOL_FILE, /* Action */
CS_UNUSED, /* Flag */
cp, /* Buffer value */
- strlen(cp) /* Buffer length */
+ CS_NULLTERM /* String '\0' terminated */
) != CS_SUCCEED)
fprintf (stderr, "\\connect: ct_debug - Unable to set CS_SET_PROTOCOL_FILE to %s\n", cp);
else
diff --git a/src/sqsh_debug.c b/src/sqsh_debug.c
index b45eb8f..a91ebbc 100644
--- a/src/sqsh_debug.c
+++ b/src/sqsh_debug.c
@@ -34,7 +34,7 @@
#endif
#if !defined(lint) && !defined(__LINT__)
-static char RCS_Id[] = "$Id: sqsh_debug.c,v 1.2 2013/04/18 11:54:43 mwesdorp Exp $" ;
+static char RCS_Id[] = "$Id: sqsh_debug.c,v 1.3 2013/05/05 19:50:43 mwesdorp Exp $" ;
USE(RCS_Id)
#endif
@@ -104,6 +104,8 @@ int sqsh_debug_show( debug_mask )
return True;
else
return False;
+#else
+ return False;
#endif /* DEBUG */
}
diff --git a/src/sqsh_readline.c b/src/sqsh_readline.c
index 1347724..11e812e 100644
--- a/src/sqsh_readline.c
+++ b/src/sqsh_readline.c
@@ -36,7 +36,7 @@
/*-- Current Version --*/
#if !defined(lint) && !defined(__LINT__)
-static char RCS_Id[] = "$Id: sqsh_readline.c,v 1.9 2013/05/03 13:02:46 mwesdorp Exp $" ;
+static char RCS_Id[] = "$Id: sqsh_readline.c,v 1.10 2013/05/05 19:50:43 mwesdorp Exp $" ;
USE(RCS_Id)
#endif /* !defined(lint) */
@@ -60,7 +60,7 @@ static int DynColnameLoad _ANSI_ARGS(( char* )) ;
/*
* sqsh-2.2.0 - Function prototypes for new feature readline_histignore.
*/
-static int regex_match _ANSI_ARGS(( char*, char* )) ;
+static int regex_match _ANSI_ARGS(( char*, char* )) ;
/*
* If GNU Readline support is compiled in, this data structure is
@@ -1329,8 +1329,9 @@ static int DynColnameLoad (objname)
*
* Return 0 for match, not 0 for no match.
*/
-static int
-regex_match (char *pattern, char *string)
+static int regex_match (pattern, string)
+ char *pattern;
+ char *string;
{
regex_t re;
int status;