This is Sybtcl -- a dynamicly loadable TCL extension, which provides
your interpreter with connectivity to a Sybase server. Althghough it was written to work with Sybase's own client libraries (not available for FreeBSD), this port patches it enough to make it work with FreeTDS. WWW: http://sybtcl.sourceforge.net/
This commit is contained in:
parent
085605d0ec
commit
a623e2d6cf
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=105655
10 changed files with 308 additions and 0 deletions
|
@ -260,6 +260,7 @@
|
|||
SUBDIR += sqlrelay
|
||||
SUBDIR += sqsh
|
||||
SUBDIR += sybase-ocsd
|
||||
SUBDIR += sybtcl
|
||||
SUBDIR += tcl-Mysql
|
||||
SUBDIR += tdb
|
||||
SUBDIR += tinycdb
|
||||
|
|
35
databases/sybtcl/Makefile
Normal file
35
databases/sybtcl/Makefile
Normal file
|
@ -0,0 +1,35 @@
|
|||
# New ports collection makefile for: sybtcl
|
||||
# Date created: Jul 30, 2002
|
||||
# Whom: mi
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
PORTNAME= sybtcl
|
||||
PORTVERSION= 3.0rc2
|
||||
CATEGORIES= databases devel
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
|
||||
MASTER_SITE_SUBDIR= ${PORTNAME}
|
||||
|
||||
MAINTAINER= mi@aldan.algebra.com
|
||||
COMMENT= TCL extension to connect to Sybase servers
|
||||
|
||||
LIB_DEPENDS= tcl${TCL_DVER}:${PORTSDIR}/lang/tcl${TCL_DVER} \
|
||||
sybdb:${PORTSDIR}/databases/freetds
|
||||
|
||||
TCL_VER?= 8.4
|
||||
TCL_DVER= ${TCL_VER:S/.//}
|
||||
MAKEFILE= ${FILESDIR}/Makefile.bsd
|
||||
MAKE_ARGS+= TCL_VER=${TCL_VER}
|
||||
|
||||
MANN= ${PORTNAME}.n
|
||||
|
||||
post-install:
|
||||
#######
|
||||
# This port installs two of the vendor-supplied sample programs,
|
||||
# which have general-purpose utility. If you'd like to browse
|
||||
# through other examples, do ``make patch'' and look inside the
|
||||
# ${WRKSRC}/samples
|
||||
#######
|
||||
|
||||
.include <bsd.port.mk>
|
1
databases/sybtcl/distinfo
Normal file
1
databases/sybtcl/distinfo
Normal file
|
@ -0,0 +1 @@
|
|||
MD5 (sybtcl-3.0rc2.tar.gz) = 1b357dd7b7081f8083b87849e8c9f4e3
|
45
databases/sybtcl/files/Makefile.bsd
Normal file
45
databases/sybtcl/files/Makefile.bsd
Normal file
|
@ -0,0 +1,45 @@
|
|||
# $FreeBSD$
|
||||
|
||||
.PATH: ${.CURDIR}/generic
|
||||
|
||||
SRCS= sybtcl.c
|
||||
LOCALBASE?= /usr/local
|
||||
PREFIX?= ${LOCALBASE}
|
||||
TCL_VER?= 8.4
|
||||
TCL_DVER= ${TCL_VER:S/.//}
|
||||
|
||||
CFLAGS+= -I${LOCALBASE}/include -I${LOCALBASE}/include/tcl${TCL_VER}
|
||||
LDADD= -L${LOCALBASE}/lib -lsybdb # -ltcl${TCL_DVER}
|
||||
|
||||
SHLIB_NAME= libSybtcl.so.3
|
||||
LIBDIR= ${PREFIX}/lib
|
||||
PKGDIR= ${LIBDIR}/Sybtcl
|
||||
SCRIPTS= sp_who wisqlite
|
||||
|
||||
all: ${SHLIB_NAME} pkgIndex.tcl ${SCRIPTS}
|
||||
|
||||
pkgIndex.tcl: pkgIndex.tcl.in
|
||||
echo 'package ifneeded Sybtcl 3.0 "load $$dir/../${SHLIB_NAME}; \
|
||||
set auto_index(getSignOn) \"source $$dir/sign_on.tcl\""' \
|
||||
> pkgIndex.tcl
|
||||
|
||||
.for s in ${SCRIPTS}
|
||||
$s: ${.CURDIR}/samples/$s
|
||||
sed -e 's,#!/usr/local/bin/wishx,#!${LOCALBASE}/bin/wish${TCL_VER},'\
|
||||
-e 's,#!/usr/local/bin/wish8.0,#!${LOCALBASE}/bin/wish${TCL_VER},'\
|
||||
< ${.CURDIR}/samples/$s > $s
|
||||
.endfor
|
||||
|
||||
sp_who wisqlite: ${.CURDIR}
|
||||
|
||||
${PKGDIR}:
|
||||
mkdir -p ${PKGDIR}
|
||||
|
||||
beforeinstall: ${PKGDIR}
|
||||
${BSD_INSTALL_DATA} pkgIndex.tcl ${.CURDIR}/samples/sign_on.tcl \
|
||||
${PKGDIR}
|
||||
${BSD_INSTALL_SCRIPT} ${SCRIPTS} ${PREFIX}/bin/
|
||||
${BSD_INSTALL_MAN} ${.CURDIR}/doc/sybtcl.man \
|
||||
${LOCALBASE}/man/mann/sybtcl.n
|
||||
|
||||
.include <bsd.lib.mk>
|
105
databases/sybtcl/files/patch-aa
Normal file
105
databases/sybtcl/files/patch-aa
Normal file
|
@ -0,0 +1,105 @@
|
|||
--- generic/sybtcl.c Wed Aug 30 20:24:18 2000
|
||||
+++ generic/sybtcl.c Mon Mar 29 16:18:01 2004
|
||||
@@ -279,4 +279,12 @@
|
||||
#endif
|
||||
|
||||
+#ifndef CS_INTERNAL
|
||||
+#define CS_INTERNAL /* Not defined by FreeTDS */
|
||||
+#endif
|
||||
+
|
||||
+#ifndef TDS_DEF_CHARSET
|
||||
+#define TDS_DEF_CHARSET NULL /* Not defined by Sybase */
|
||||
+#endif
|
||||
+
|
||||
typedef struct SybTclProcs { /* struct for handle entries */
|
||||
int in_use; /* if this entry is opened */
|
||||
@@ -393,5 +401,5 @@
|
||||
#else
|
||||
|
||||
-extern void * malloc();
|
||||
+#include <stdlib.h>
|
||||
|
||||
#endif
|
||||
@@ -461,7 +469,9 @@
|
||||
Tcl_Interp *interp));
|
||||
|
||||
+#ifdef POLLED_EVENTS
|
||||
static int dbEventProc _ANSI_ARGS_((Tcl_Event *evPtr, int flags));
|
||||
static void dbSetupProc _ANSI_ARGS_((ClientData cd_hand, int flags));
|
||||
static void dbCheckProc _ANSI_ARGS_((ClientData cd_hand, int flags));
|
||||
+#endif
|
||||
void Sybtcl_Kill _ANSI_ARGS_((ClientData clientData));
|
||||
static int CS_INTERNAL syb_tcl_err_handler _ANSI_ARGS_((
|
||||
@@ -496,4 +506,5 @@
|
||||
|
||||
|
||||
+#ifdef POLLED_EVENTS /* { */
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
@@ -566,5 +577,5 @@
|
||||
}
|
||||
}
|
||||
-
|
||||
+#endif /* POLLED_EVENTS } */
|
||||
|
||||
|
||||
@@ -1669,6 +1680,8 @@
|
||||
|
||||
|
||||
-#ifdef DBVERSION_100
|
||||
+#ifdef SYBBOUNDARY
|
||||
case SYBBOUNDARY:
|
||||
+#endif
|
||||
+#ifdef SYBSENSITIVITY
|
||||
case SYBSENSITIVITY:
|
||||
#endif
|
||||
@@ -2556,5 +2569,7 @@
|
||||
|
||||
DBSETLUSER(login,Tcl_GetStringFromObj(objv[1],NULL));
|
||||
- DBSETLPWD(login, Tcl_GetStringFromObj(objv[2],NULL));
|
||||
+ server_str = Tcl_GetStringFromObj(objv[2],&len);
|
||||
+ if (len > 0)
|
||||
+ DBSETLPWD(login, server_str);
|
||||
|
||||
/* check for server optional parameter */
|
||||
@@ -2594,8 +2609,8 @@
|
||||
DBSETLCHARSET(login, charset_str);
|
||||
} else {
|
||||
- DBSETLCHARSET(login, NULL);
|
||||
+ DBSETLCHARSET(login, TDS_DEF_CHARSET);
|
||||
}
|
||||
} else {
|
||||
- DBSETLCHARSET(login, NULL);
|
||||
+ DBSETLCHARSET(login, TDS_DEF_CHARSET);
|
||||
}
|
||||
|
||||
@@ -2607,5 +2622,6 @@
|
||||
if (SybProcs[hand].dbproc == NULL) {
|
||||
Sybtcl_AppendObjResult (interp, CMD_STR,
|
||||
- ": sybconnect failed in dbopen", (char *) NULL);
|
||||
+ ": sybconnect to ", server_str ? server_str : "(DEFAULT)",
|
||||
+ " failed in dbopen", (char *) NULL);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
@@ -2909,5 +2925,5 @@
|
||||
if (SybProcs[hand].last_text != SybOptions[i].maxtext) {
|
||||
SybProcs[hand].last_text = SybOptions[i].maxtext;
|
||||
- sprintf(conv_buf,"%d",SybOptions[i].maxtext);
|
||||
+ sprintf(conv_buf,"%ld",SybOptions[i].maxtext);
|
||||
dbsetopt(SybProcs[hand].dbproc, DBTEXTSIZE, conv_buf, -1);
|
||||
dbsqlexec(SybProcs[hand].dbproc); /* execute dbsetopt() */
|
||||
@@ -4190,5 +4206,5 @@
|
||||
int obj_parm;
|
||||
int isvar = 0;
|
||||
- Tcl_Channel fd;
|
||||
+ Tcl_Channel fd = NULL;
|
||||
#ifndef MAC_TCL
|
||||
struct stat stat_buf;
|
||||
@@ -4305,5 +4321,6 @@
|
||||
txtptr = dbtxptr(SybProcs[hand].dbproc,col);
|
||||
if (txtptr == NULL) {
|
||||
- Tcl_Close (NULL,fd);
|
||||
+ if (fd != NULL)
|
||||
+ Tcl_Close (NULL,fd);
|
||||
Sybtcl_AppendObjResult (interp, CMD_STR,
|
||||
": dbtxptr failed ", (char *) NULL);
|
78
databases/sybtcl/files/patch-man
Normal file
78
databases/sybtcl/files/patch-man
Normal file
|
@ -0,0 +1,78 @@
|
|||
The supplied man-page provides comprehensive documentation, but contains
|
||||
an amazing amount of spelling typos. I ran it through ispell, but, quite
|
||||
possibly, some remain. Please, let me know if you find something, I missed.
|
||||
|
||||
-mi
|
||||
|
||||
--- doc/sybtcl.man Thu Dec 28 18:25:29 2000
|
||||
+++ doc/sybtcl.man Mon Mar 29 17:28:33 2004
|
||||
@@ -9,3 +9,3 @@
|
||||
Sybase Open Client (a.k.a. DB-Library) library functions.
|
||||
-Programmers using Sybtcl should be familar with basic concepts of
|
||||
+Programmers using Sybtcl should be familiar with basic concepts of
|
||||
DB-Library programming.
|
||||
@@ -23,5 +23,5 @@
|
||||
value is passed to the server to display during a process list.
|
||||
-If \fIifile\fR is specified, that file is used to resovle server addresses;
|
||||
+If \fIifile\fR is specified, that file is used to resolve server addresses;
|
||||
if not specified, the normal $SYBASE/interfaces file is used.
|
||||
-If \fIcharset\fR is specified, the charset should reference a vaild
|
||||
+If \fIcharset\fR is specified, the charset should reference a valid
|
||||
character set available on your Sybase installation.
|
||||
@@ -31,4 +31,4 @@
|
||||
\fILogin-name\fR and \fIpassword\fR are required parameters. All other
|
||||
-parameters are optional postitional parameters. For example, to specify
|
||||
-the \fIifile\fR paramater, \fIserver\fR and \fIappname\fR must
|
||||
+parameters are optional positional parameters. For example, to specify
|
||||
+the \fIifile\fR parameter, \fIserver\fR and \fIappname\fR must
|
||||
also be specified. Optional parameters may be a null string, in which
|
||||
@@ -141,3 +141,3 @@
|
||||
.I line
|
||||
-The line numer of the procedure generating the message, if any.
|
||||
+The line number of the procedure generating the message, if any.
|
||||
.RE
|
||||
@@ -177,3 +177,3 @@
|
||||
called to determine if result rows were generated. If \fB-async\fR is omitted,
|
||||
-then sybsql will wait until the server has responed.
|
||||
+then sybsql will wait until the server has responded.
|
||||
Sybsql will return "REG_ROW" if
|
||||
@@ -415,3 +415,3 @@
|
||||
be opened or a failure in internal DB-Library routines. Common failures
|
||||
-are specifing \fB-nolog\fR when the database does not support nolog;
|
||||
+are specifying \fB-nolog\fR when the database does not support nolog;
|
||||
unable to access a valid text pointer
|
||||
@@ -516,3 +516,3 @@
|
||||
The dateformat string can contain substitution values or literals.
|
||||
-Substitions are made from the list below; other literals are copied
|
||||
+Substitutions are made from the list below; other literals are copied
|
||||
verbatim. The default value is null, which will format dates a default format.
|
||||
@@ -603,3 +603,3 @@
|
||||
causes the polling loop to execute more frequently, which may cause
|
||||
-higer CPU usage.
|
||||
+higher CPU usage.
|
||||
.sp
|
||||
@@ -618,3 +618,3 @@
|
||||
indicates the handle of the last sybtcl command. Handle is set on every
|
||||
-sybtcl command (execpt where an invalid handle is used.)
|
||||
+sybtcl command (except where an invalid handle is used.)
|
||||
.sp
|
||||
@@ -706,3 +706,3 @@
|
||||
Since each sybtcl command
|
||||
-may invoke several DB-Lib routines, there is a possiblity that
|
||||
+may invoke several DB-Lib routines, there is a possibility that
|
||||
several messages may be received from the server. Sybtcl will
|
||||
@@ -714,3 +714,3 @@
|
||||
the message text associated with msgno. Since each sybtcl command
|
||||
-may invoke several DB-Lib routines, there is a possiblity that
|
||||
+may invoke several DB-Lib routines, there is a possibility that
|
||||
several messages may be received from the server. Sybtcl will
|
||||
@@ -718,3 +718,3 @@
|
||||
separating individual messages by newlines.
|
||||
-Output from Transact-SQL PRINT statments are collected in msgtext.
|
||||
+Output from Transact-SQL PRINT statements are collected in msgtext.
|
||||
.TP
|
||||
@@ -766,3 +766,3 @@
|
||||
values are: "system10" if linked with Sybase System 10 DB-Libs or higher,
|
||||
-"ctcompt" if compiled with the CT-Lib compatiblity library.
|
||||
+"ctcompt" if compiled with the CT-Lib compatibility library.
|
||||
.sp
|
16
databases/sybtcl/files/patch-sign_on
Normal file
16
databases/sybtcl/files/patch-sign_on
Normal file
|
@ -0,0 +1,16 @@
|
|||
--- samples/sign_on.tcl Fri Jun 2 02:35:54 2000
|
||||
+++ samples/sign_on.tcl Mon Mar 29 18:16:50 2004
|
||||
@@ -19,5 +19,5 @@
|
||||
#upvar 1 $p password
|
||||
#upvar 1 $s server
|
||||
- global env mainwindow
|
||||
+ global env mainwindow tcl_platform
|
||||
|
||||
# get valid servers from interfaces file
|
||||
@@ -91,5 +91,5 @@
|
||||
frame $mainwindow.s.p
|
||||
entry $mainwindow.s.p.pw -relief sunken -width 10 \
|
||||
- -font -*-symbol-*-r-*--20-*-*-*-*-*-*-*
|
||||
+ -show * -exportselection false
|
||||
label $mainwindow.s.p.p -text " Password" -anchor e
|
||||
|
15
databases/sybtcl/files/patch-sp_who
Normal file
15
databases/sybtcl/files/patch-sp_who
Normal file
|
@ -0,0 +1,15 @@
|
|||
--- samples/sp_who Fri Jun 2 02:35:54 2000
|
||||
+++ samples/sp_who Mon Mar 29 18:10:59 2004
|
||||
@@ -22,12 +22,4 @@
|
||||
package require Sybtcl
|
||||
|
||||
-if {[file isfile sign_on.tcl]} {
|
||||
- source sign_on.tcl
|
||||
-} elseif {[file isfile [file join [file dirname [info script]] sign_on.tcl]]} {
|
||||
- source [file join [file dirname [info script]] sign_on.tcl]
|
||||
-} elseif {[file isfile [file join [file dirname [info nameofexecutable]] sign_on.tcl]]} {
|
||||
- source [file join [file dirname [info nameofexecutable]] sign_on.tcl]
|
||||
-}
|
||||
-
|
||||
global server interval now intervalid env secorsecs user password sybhandle
|
||||
global opened WhoIsThere order_by_orders order_by order_by_stmnt order_by_text
|
6
databases/sybtcl/pkg-descr
Normal file
6
databases/sybtcl/pkg-descr
Normal file
|
@ -0,0 +1,6 @@
|
|||
This is Sybtcl -- a dynamicly loadable TCL extension, which provides
|
||||
your interpreter with connectivity to a Sybase server. Althghough it was
|
||||
written to work with Sybase's own client libraries (not available for
|
||||
FreeBSD), this port patches it enough to make it work with FreeTDS.
|
||||
|
||||
WWW: http://sybtcl.sourceforge.net/
|
6
databases/sybtcl/pkg-plist
Normal file
6
databases/sybtcl/pkg-plist
Normal file
|
@ -0,0 +1,6 @@
|
|||
bin/sp_who
|
||||
bin/wisqlite
|
||||
lib/libSybtcl.so.3.0
|
||||
lib/Sybtcl/pkgIndex.tcl
|
||||
lib/Sybtcl/sign_on.tcl
|
||||
@dirrm lib/Sybtcl
|
Loading…
Reference in a new issue