From 028bc336450e2c18a3f124fe74b875d698069834 Mon Sep 17 00:00:00 2001 From: dcp1990 Date: Sun, 26 Jun 2005 04:47:20 +0000 Subject: [PATCH] Begin Tcl stuff --- lib/sockstuff.c | 123 ++++++++++++++++++++++++++++++++++++++++++++ lib/tcl/sockstuff.c | 123 ++++++++++++++++++++++++++++++++++++++++++++ xfone/maindlg.tcl | 48 +++++++++++++++++ xfone/phoned.tcl | 30 +++++++++++ xfone/sockstuff.c | 123 ++++++++++++++++++++++++++++++++++++++++++++ xfone/xfone.tcl | 31 +++++++++++ 6 files changed, 478 insertions(+) create mode 100644 lib/sockstuff.c create mode 100644 lib/tcl/sockstuff.c create mode 100644 xfone/maindlg.tcl create mode 100644 xfone/phoned.tcl create mode 100644 xfone/sockstuff.c create mode 100755 xfone/xfone.tcl diff --git a/lib/sockstuff.c b/lib/sockstuff.c new file mode 100644 index 0000000..eaba1ae --- /dev/null +++ b/lib/sockstuff.c @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2005, Dan Ponte + * + * sockstuff.c - Implement SOCK_STREAM AF_LOCAL sockets for Tcl + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +/* $Amigan: phoned/lib/sockstuff.c,v 1.1 2005/06/26 04:47:20 dcp1990 Exp $ */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +/* network stuff */ +#include +#include +#include +#include +#include +#include + +#define CMD_ARGS (ClientData clientData, Tcl_Interp *interp, int argc, Tcl_Obj *CONST objv[]) + +int UdomConnectSocket (cdata, interp, argc, argv) + ClientData cdata; + Tcl_Interp *interp; + int argc; + char **argv; +{ + int s; + struct sockaddr_un them; + if(argc < 2) { + return TCL_ERROR; + } + s = socket(AF_LOCAL, SOCK_STREAM, 0); + strcpy(them.sun_path, sockfile); + them.sun_family = AF_LOCAL; + if(connect(s, (struct sockaddr *)&them, 1 + strlen(them.sun_path) + sizeof(them.sun_family)) == -1) { + return TCL_ERROR; + } +} +int UdomClose(idata, interp) + ClientData idata; + Tcl_Interp *interp; +{ + close(socket); +} +int UdomInput(idata, buf, sizebuf, errorptr) + ClientData idata; + char *buf; + int sizebuf; + int *errorptr; +{ + int ec; + ec = read((int)idata, buf, sizebuf); + if(ec == -1) { + *errorptr = errno; + return -1; + } else { + return ec; + } +} + +int UdomOutput(idata, buf, towrite, ecptr) + ClientData idata; + CONST char *buf; + int towrite; + int *ecptr; +{ + int rc; + rc = write((int)idata, buf, towrite); + if(rc == -1) { + *ecptr = errno; + return -1; + } else { + return rc; + } +} + +/* write watcher */ +Tcl_ChannelType ourchan = { + "udomain", + TCL_CHANNEL_VERSION_3, + &UdomClose, + &UdomInput, + &UdomOutput, + NULL, /* seek */ + NULL, /* set and getoption, might do later */ + NULL, + &UdomWatch, + &UdomGetHandle, + NULL, /* close2proc */ + NULL, /* block mode */ + &UdomFlush, + &UdomHandler, + &UdomWideSeek /* return EINVAL */ +}; diff --git a/lib/tcl/sockstuff.c b/lib/tcl/sockstuff.c new file mode 100644 index 0000000..b404f91 --- /dev/null +++ b/lib/tcl/sockstuff.c @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2005, Dan Ponte + * + * sockstuff.c - Implement SOCK_STREAM AF_LOCAL sockets for Tcl + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +/* $Amigan: phoned/lib/tcl/sockstuff.c,v 1.1 2005/06/26 04:47:20 dcp1990 Exp $ */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +/* network stuff */ +#include +#include +#include +#include +#include +#include + +#define CMD_ARGS (ClientData clientData, Tcl_Interp *interp, int argc, Tcl_Obj *CONST objv[]) + +int UdomConnectSocket (cdata, interp, argc, argv) + ClientData cdata; + Tcl_Interp *interp; + int argc; + char **argv; +{ + int s; + struct sockaddr_un them; + if(argc < 2) { + return TCL_ERROR; + } + s = socket(AF_LOCAL, SOCK_STREAM, 0); + strcpy(them.sun_path, sockfile); + them.sun_family = AF_LOCAL; + if(connect(s, (struct sockaddr *)&them, 1 + strlen(them.sun_path) + sizeof(them.sun_family)) == -1) { + return TCL_ERROR; + } +} +int UdomClose(idata, interp) + ClientData idata; + Tcl_Interp *interp; +{ + close(socket); +} +int UdomInput(idata, buf, sizebuf, errorptr) + ClientData idata; + char *buf; + int sizebuf; + int *errorptr; +{ + int ec; + ec = read((int)idata, buf, sizebuf); + if(ec == -1) { + *errorptr = errno; + return -1; + } else { + return ec; + } +} + +int UdomOutput(idata, buf, towrite, ecptr) + ClientData idata; + CONST char *buf; + int towrite; + int *ecptr; +{ + int rc; + rc = write((int)idata, buf, towrite); + if(rc == -1) { + *ecptr = errno; + return -1; + } else { + return rc; + } +} + +/* write watcher */ +Tcl_ChannelType ourchan = { + "udomain", + TCL_CHANNEL_VERSION_3, + &UdomClose, + &UdomInput, + &UdomOutput, + NULL, /* seek */ + NULL, /* set and getoption, might do later */ + NULL, + &UdomWatch, + &UdomGetHandle, + NULL, /* close2proc */ + NULL, /* block mode */ + &UdomFlush, + &UdomHandler, + &UdomWideSeek /* return EINVAL */ +}; diff --git a/xfone/maindlg.tcl b/xfone/maindlg.tcl new file mode 100644 index 0000000..64b7ac6 --- /dev/null +++ b/xfone/maindlg.tcl @@ -0,0 +1,48 @@ +#!/usr/local/bin/wish8.4 +# Copyright (c) 2005, Dan Ponte +# +# maindlg.tcl - main dialogue +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $Amigan: phoned/xfone/maindlg.tcl,v 1.1 2005/06/26 04:47:20 dcp1990 Exp $ +# vars +set prj .mbar.project +set phdm .mbar.phoned +#frame +frame .m -borderwidth 2 -width 20c -height 10c +grid .m -sticky wn -row 0 -column 0 +#menu +menu .mbar -tearoff no +menu $prj -tearoff no +.mbar add cascade -label "Project" -menu $prj -underline 1 +$prj add command -label "Quit" -command "exit" +menu $phdm -tearoff no +.mbar add cascade -label "PhoneD" -menu $phdm -underline 1 +$phdm add command -label "Login" +menu .mbar.help -tearoff no +.mbar add cascade -label "Help" -menu .mbar.help -underline 1 +.mbar.help add command -label "About Xfone" +. configure -menu .mbar diff --git a/xfone/phoned.tcl b/xfone/phoned.tcl new file mode 100644 index 0000000..caf5fd4 --- /dev/null +++ b/xfone/phoned.tcl @@ -0,0 +1,30 @@ +#!/usr/local/bin/wish8.4 +# Copyright (c) 2005, Dan Ponte +# +# xfone.tcl - interface to phoned - main script +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $Amigan: phoned/xfone/phoned.tcl,v 1.1 2005/06/26 04:47:20 dcp1990 Exp $ diff --git a/xfone/sockstuff.c b/xfone/sockstuff.c new file mode 100644 index 0000000..d7fbd4d --- /dev/null +++ b/xfone/sockstuff.c @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2005, Dan Ponte + * + * sockstuff.c - Implement SOCK_STREAM AF_LOCAL sockets for Tcl + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +/* $Amigan: phoned/xfone/sockstuff.c,v 1.1 2005/06/26 04:47:20 dcp1990 Exp $ */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +/* network stuff */ +#include +#include +#include +#include +#include +#include + +#define CMD_ARGS (ClientData clientData, Tcl_Interp *interp, int argc, Tcl_Obj *CONST objv[]) + +int UdomConnectSocket (cdata, interp, argc, argv) + ClientData cdata; + Tcl_Interp *interp; + int argc; + char **argv; +{ + int s; + struct sockaddr_un them; + if(argc < 2) { + return TCL_ERROR; + } + s = socket(AF_LOCAL, SOCK_STREAM, 0); + strcpy(them.sun_path, sockfile); + them.sun_family = AF_LOCAL; + if(connect(s, (struct sockaddr *)&them, 1 + strlen(them.sun_path) + sizeof(them.sun_family)) == -1) { + return TCL_ERROR; + } +} +int UdomClose(idata, interp) + ClientData idata; + Tcl_Interp *interp; +{ + close(socket); +} +int UdomInput(idata, buf, sizebuf, errorptr) + ClientData idata; + char *buf; + int sizebuf; + int *errorptr; +{ + int ec; + ec = read((int)idata, buf, sizebuf); + if(ec == -1) { + *errorptr = errno; + return -1; + } else { + return ec; + } +} + +int UdomOutput(idata, buf, towrite, ecptr) + ClientData idata; + CONST char *buf; + int towrite; + int *ecptr; +{ + int rc; + rc = write((int)idata, buf, towrite); + if(rc == -1) { + *ecptr = errno; + return -1; + } else { + return rc; + } +} + +/* write watcher */ +Tcl_ChannelType ourchan = { + "udomain", + TCL_CHANNEL_VERSION_3, + &UdomClose, + &UdomInput, + &UdomOutput, + NULL, /* seek */ + NULL, /* set and getoption, might do later */ + NULL, + &UdomWatch, + &UdomGetHandle, + NULL, /* close2proc */ + NULL, /* block mode */ + &UdomFlush, + &UdomHandler, + &UdomWideSeek /* return EINVAL */ +}; diff --git a/xfone/xfone.tcl b/xfone/xfone.tcl new file mode 100755 index 0000000..a20617f --- /dev/null +++ b/xfone/xfone.tcl @@ -0,0 +1,31 @@ +#!/usr/local/bin/wish8.4 +# Copyright (c) 2005, Dan Ponte +# +# xfone.tcl - interface to phoned - main script +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $Amigan: phoned/xfone/xfone.tcl,v 1.1 2005/06/26 04:47:20 dcp1990 Exp $ +source maindlg.tcl