[Sumover-dev] [svn commit] r3784 - vic/trunk/net
sumover-dev at cs.ucl.ac.uk
sumover-dev at cs.ucl.ac.uk
Fri Aug 4 02:36:58 BST 2006
Author: ucacsva
Date: Fri Aug 4 02:36:57 2006
New Revision: 3784
Modified:
vic/trunk/net/cbAppInit.c
Log:
Adapted confbus Tcl/Tk application startup code to using WIN32 socket API.
Modified: vic/trunk/net/cbAppInit.c
==============================================================================
--- vic/trunk/net/cbAppInit.c (original)
+++ vic/trunk/net/cbAppInit.c Fri Aug 4 02:36:57 2006
@@ -1,8 +1,8 @@
-/*
+/*
* tkAppInit.c --
*
- * Provides a default version of the Tcl_AppInit procedure for
- * use in wish and similar Tk-based applications.
+ * Provides a default version of the Tcl_AppInit procedure for
+ * use in wish and similar Tk-based applications.
*
* Copyright (c) 1993 The Regents of the University of California.
* Copyright (c) 1994 Sun Microsystems, Inc.
@@ -15,7 +15,11 @@
static const char sccsid[] = "@(#) tkAppInit.c 1.15 95/06/28 13:14:28";
#endif /* not lint */
-#include "tk.h"
+#ifdef WIN32^M
+#include <winsock.h>^M
+#endif
+
+#include <tk.h> //SV
/*
* The following variable is a special hack that is needed in order for
@@ -25,60 +29,35 @@
//extern int matherr();
//int *tclDummyMathPtr = (int *) matherr;
-/*
- *----------------------------------------------------------------------
- *
- * main --
- *
- * This is the main program for the application.
- *
- * Results:
- * None: Tk_Main never returns here, so this procedure never
- * returns either.
- *
- * Side effects:
- * Whatever the application does.
- *
- *----------------------------------------------------------------------
- */
-
-int
-main(argc, argv)
- int argc; /* Number of command-line arguments. */
- char **argv; /* Values of command-line arguments. */
-{
- Tk_Main(argc, argv, Tcl_AppInit);
- return 0; /* Needed only to prevent compiler warning. */
-}
/*
*----------------------------------------------------------------------
*
* Tcl_AppInit --
*
- * This procedure performs application-specific initialization.
- * Most applications, especially those that incorporate additional
- * packages, will have their own version of this procedure.
+ * This procedure performs application-specific initialization.
+ * Most applications, especially those that incorporate additional
+ * packages, will have their own version of this procedure.
*
* Results:
- * Returns a standard Tcl completion code, and leaves an error
- * message in interp->result if an error occurs.
+ * Returns a standard Tcl completion code, and leaves an error
+ * message in interp->result if an error occurs.
*
* Side effects:
- * Depends on the startup script.
+ * Depends on the startup script.
*
*----------------------------------------------------------------------
*/
int
-Tcl_AppInit(interp)
- Tcl_Interp *interp; /* Interpreter for application. */
+Tcl_AppInit(Tcl_Interp *interp)
+//interp; /* Interpreter for application. */
{
if (Tcl_Init(interp) == TCL_ERROR) {
- return TCL_ERROR;
+ return TCL_ERROR;
}
if (Tk_Init(interp) == TCL_ERROR) {
- return TCL_ERROR;
+ return TCL_ERROR;
}
/*
@@ -93,7 +72,7 @@
*/
if (Cb_Init(interp) == TCL_ERROR) {
- return TCL_ERROR;
+ return TCL_ERROR;
}
/*
* Call Tcl_CreateCommand for application-specific commands, if
@@ -111,3 +90,72 @@
Tcl_SetVar(interp, "tcl_RcFileName", "~/.cbrc", TCL_GLOBAL_ONLY);
return TCL_OK;
}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * main --
+ *
+ * This is the main program for the application.
+ *
+ * Results:
+ * None: Tk_Main never returns here, so this procedure never
+ * returns either.
+ *
+ * Side effects:
+ * Whatever the application does.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+main(argc, argv)
+ int argc; /* Number of command-line arguments. */
+ char **argv; /* Values of command-line arguments. */
+{
+
+#ifdef WIN32
+ WSADATA wsaData;
+
+ /*
+ * Setup Winsock 1.1
+ */
+ WSAStartup(0x0101, &wsaData);
+
+ /* Confirm that the WinSock DLL supports 1.1. */
+ /* Note that if the DLL supports versions greater */
+ /* than 1.1 in addition to 1.1, it will still return */
+ /* 1.1 in wVersion since that is the version we */
+ /* requested. */
+ if (LOBYTE(wsaData.wVersion) != 1 ||
+ HIBYTE(wsaData.wVersion) != 1 ) {
+ /* Couldn't find an acceptable WinSock DLL */
+ WSACleanup();
+
+ fprintf(stderr, "%s: failed to find Winsock version 1.1 or better\n",
+ argv[0]);
+
+ exit(1);
+ }
+
+ /* The WinSock DLL is acceptable. Proceed... */
+ //fprintf(stderr, "%s found Winsock version 1.1 or better\n", argv[0]);
+#endif
+
+
+
+ Tk_Main(argc, argv, Tcl_AppInit);
+
+
+
+#ifdef WIN32
+ /*
+ * Cleanup Winsock
+ */
+ WSACleanup();
+#endif
+
+
+ return 0; /* Needed only to prevent compiler warning. */
+}
+
More information about the Sumover-dev
mailing list