summaryrefslogtreecommitdiff
path: root/databases/sybtcl
diff options
context:
space:
mode:
authorMikhail Teterin <mi@FreeBSD.org>2004-03-30 00:02:11 +0000
committerMikhail Teterin <mi@FreeBSD.org>2004-03-30 00:02:11 +0000
commita623e2d6cfb51533d21b18a5163fcabc450ff442 (patch)
treec8b7ab5db1c1e038403cd7e8bc1611bb94261ee6 /databases/sybtcl
parentcorrect typo in my previous commit (diff)
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/
Notes
Notes: svn path=/head/; revision=105655
Diffstat (limited to 'databases/sybtcl')
-rw-r--r--databases/sybtcl/Makefile35
-rw-r--r--databases/sybtcl/distinfo1
-rw-r--r--databases/sybtcl/files/Makefile.bsd45
-rw-r--r--databases/sybtcl/files/patch-aa105
-rw-r--r--databases/sybtcl/files/patch-man78
-rw-r--r--databases/sybtcl/files/patch-sign_on16
-rw-r--r--databases/sybtcl/files/patch-sp_who15
-rw-r--r--databases/sybtcl/pkg-descr6
-rw-r--r--databases/sybtcl/pkg-plist6
9 files changed, 307 insertions, 0 deletions
diff --git a/databases/sybtcl/Makefile b/databases/sybtcl/Makefile
new file mode 100644
index 000000000000..aa30a55f52b1
--- /dev/null
+++ b/databases/sybtcl/Makefile
@@ -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>
diff --git a/databases/sybtcl/distinfo b/databases/sybtcl/distinfo
new file mode 100644
index 000000000000..e86809b64c1b
--- /dev/null
+++ b/databases/sybtcl/distinfo
@@ -0,0 +1 @@
+MD5 (sybtcl-3.0rc2.tar.gz) = 1b357dd7b7081f8083b87849e8c9f4e3
diff --git a/databases/sybtcl/files/Makefile.bsd b/databases/sybtcl/files/Makefile.bsd
new file mode 100644
index 000000000000..7c9564f9c5e5
--- /dev/null
+++ b/databases/sybtcl/files/Makefile.bsd
@@ -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>
diff --git a/databases/sybtcl/files/patch-aa b/databases/sybtcl/files/patch-aa
new file mode 100644
index 000000000000..fa393f6c5559
--- /dev/null
+++ b/databases/sybtcl/files/patch-aa
@@ -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);
diff --git a/databases/sybtcl/files/patch-man b/databases/sybtcl/files/patch-man
new file mode 100644
index 000000000000..7a3f40b9289d
--- /dev/null
+++ b/databases/sybtcl/files/patch-man
@@ -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
diff --git a/databases/sybtcl/files/patch-sign_on b/databases/sybtcl/files/patch-sign_on
new file mode 100644
index 000000000000..1dac4dd412a6
--- /dev/null
+++ b/databases/sybtcl/files/patch-sign_on
@@ -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
+
diff --git a/databases/sybtcl/files/patch-sp_who b/databases/sybtcl/files/patch-sp_who
new file mode 100644
index 000000000000..d8605e75eba6
--- /dev/null
+++ b/databases/sybtcl/files/patch-sp_who
@@ -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
diff --git a/databases/sybtcl/pkg-descr b/databases/sybtcl/pkg-descr
new file mode 100644
index 000000000000..5b8b5aeb8dc3
--- /dev/null
+++ b/databases/sybtcl/pkg-descr
@@ -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/
diff --git a/databases/sybtcl/pkg-plist b/databases/sybtcl/pkg-plist
new file mode 100644
index 000000000000..faddcde3b85b
--- /dev/null
+++ b/databases/sybtcl/pkg-plist
@@ -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