Posted to tcl by arjen at Thu Aug 06 12:35:28 GMT 2009view raw
- /* jdbc_client --
- Illustration of the use of C for interacting with the
- FEWS JDBC server (well, actually we will be working with the
- Fews PI service)
-
- */
-
- #include <stdio.h>
- #include <tcl.h>
-
- /* Define some helper variables and functions */
-
- Tcl_Interp *interp;
-
- void TearDown () {Tcl_Finalize();}
-
- int EvalFile (char *fileName) {
- return Tcl_EvalFile(interp, fileName);
- }
-
- int Init (char *argv0) {
- char *pchar;
- char buffer[1000];
-
- /* Initialise the library itself */
-
- Tcl_FindExecutable(argv0);
- interp = Tcl_CreateInterp();
- if (Tcl_Init(interp) != TCL_OK) {
- return TCL_ERROR;
- }
-
- /* Initialise the FEWS PI services */
-
- strcpy( buffer, argv0 );
- pchar = strrchr( buffer, '/' );
- if ( pchar == NULL ) {
- pchar = strrchr( buffer, '\\' );
- }
- if ( pchar == NULL ) {
- pchar = buffer;
- }
- strcpy( buffer, "fewspi.tcl" );
-
- return EvalFile( buffer );
- }
-
- /* Fews PI services: wrapper functions */
-
- char *getLocations( char *clientId ) {
- char buffer[1000];
-
- strcpy( buffer, "getLocations " );
- strcat( buffer, clientId );
-
- if ( Tcl_Eval( interp, buffer ) != TCL_OK )
- {
- return NULL;
- } else {
- return Tcl_GetStringResult( interp ) ;
- }
- }
-
- char *createTask( char *clientId ) {
- Tcl_Obj *obj[2];
-
- obj[0] = Tcl_NewStringObj( "createTask", -1 );
- obj[1] = Tcl_NewStringObj( clientId, -1 );
-
- Tcl_IncrRefCount( obj[0] ) ;
- Tcl_IncrRefCount( obj[1] ) ;
-
- if ( Tcl_EvalObjv( interp, 2, obj, 0 ) != TCL_OK ) {
- return NULL;
- } else {
-
- Tcl_DecrRefCount( obj[0] ) ;
- Tcl_DecrRefCount( obj[1] ) ;
- return Tcl_GetStringResult( interp ) ;
- }
- }
-
- int main( int argc, char *argv[] ) {
-
- /* Get the library started */
-
- if ( Init( argv[0] ) != TCL_OK ) {
- fprintf( stderr, "Sorry, initialisation failed: %s\n",
- Tcl_GetStringResult( interp ) );
- }
-
- /* Get the locations */
- /* fprintf( stdout, "Locations: %s\n", getLocations( "aa" ) ); */
- fprintf( stdout, "New task: %s\n", createTask( "aa" ) );
- }