diff options
Diffstat (limited to 'src/interfaces/libpgtcl/pgtcl.c')
-rw-r--r-- | src/interfaces/libpgtcl/pgtcl.c | 277 |
1 files changed, 139 insertions, 138 deletions
diff --git a/src/interfaces/libpgtcl/pgtcl.c b/src/interfaces/libpgtcl/pgtcl.c index 8df0c42105c..75c8ec5ddad 100644 --- a/src/interfaces/libpgtcl/pgtcl.c +++ b/src/interfaces/libpgtcl/pgtcl.c @@ -1,15 +1,15 @@ /*------------------------------------------------------------------------- * * pgtcl.c-- - * - * libpgtcl is a tcl package for front-ends to interface with pglite - * It's the tcl equivalent of the old libpq C interface. + * + * libpgtcl is a tcl package for front-ends to interface with pglite + * It's the tcl equivalent of the old libpq C interface. * * Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtcl.c,v 1.7 1997/01/03 18:48:28 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtcl.c,v 1.8 1997/09/07 05:03:09 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -23,8 +23,8 @@ #include "pgtclId.h" /* - * Pgtcl_Init - * initialization package for the PGLITE Tcl package + * Pgtcl_Init + * initialization package for the PGLITE Tcl package * */ @@ -32,153 +32,154 @@ * Tidy up forgotten postgres connection at Tcl_Exit */ static void -Pgtcl_AtExit (ClientData cData) +Pgtcl_AtExit(ClientData cData) { - Pg_clientData *cd = (Pg_clientData *)cData; - Tcl_HashEntry *hent; - Tcl_HashSearch hsearch; - Pg_ConnectionId *connid; - PGconn *conn; - - while((hent = Tcl_FirstHashEntry(&(cd->dbh_hash), &hsearch)) != NULL) { - connid = (Pg_ConnectionId *)Tcl_GetHashValue(hent); - conn = connid->conn; - PgDelConnectionId(cd, connid->id); - PQfinish(conn); - } - - Tcl_DeleteHashTable(&(cd->dbh_hash)); - Tcl_DeleteHashTable(&(cd->res_hash)); - Tcl_DeleteHashTable(&(cd->notify_hash)); - - Tcl_DeleteExitHandler(Pgtcl_AtExit, cData); + Pg_clientData *cd = (Pg_clientData *) cData; + Tcl_HashEntry *hent; + Tcl_HashSearch hsearch; + Pg_ConnectionId *connid; + PGconn *conn; + + while ((hent = Tcl_FirstHashEntry(&(cd->dbh_hash), &hsearch)) != NULL) + { + connid = (Pg_ConnectionId *) Tcl_GetHashValue(hent); + conn = connid->conn; + PgDelConnectionId(cd, connid->id); + PQfinish(conn); + } + + Tcl_DeleteHashTable(&(cd->dbh_hash)); + Tcl_DeleteHashTable(&(cd->res_hash)); + Tcl_DeleteHashTable(&(cd->notify_hash)); + + Tcl_DeleteExitHandler(Pgtcl_AtExit, cData); } /* * Tidy up forgotten postgres connections on Interpreter deletion */ static void -Pgtcl_Shutdown (ClientData cData, Tcl_Interp *interp) +Pgtcl_Shutdown(ClientData cData, Tcl_Interp * interp) { - Pgtcl_AtExit(cData); + Pgtcl_AtExit(cData); } int -Pgtcl_Init (Tcl_Interp *interp) +Pgtcl_Init(Tcl_Interp * interp) { - Pg_clientData *cd; - - /* Create and initialize the client data area */ - cd = (Pg_clientData *)ckalloc(sizeof(Pg_clientData)); - Tcl_InitHashTable(&(cd->dbh_hash), TCL_STRING_KEYS); - Tcl_InitHashTable(&(cd->res_hash), TCL_STRING_KEYS); - Tcl_InitHashTable(&(cd->notify_hash), TCL_STRING_KEYS); - cd->dbh_count = 0L; - cd->res_count = 0L; - - /* Arrange for tidy up when interpreter is deleted or Tcl exits */ - Tcl_CallWhenDeleted(interp, Pgtcl_Shutdown, (ClientData)cd); - Tcl_CreateExitHandler(Pgtcl_AtExit, (ClientData)cd); - - /* register all pgtcl commands */ - Tcl_CreateCommand(interp, - "pg_conndefaults", - Pg_conndefaults, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_connect", - Pg_connect, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_disconnect", - Pg_disconnect, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_exec", - Pg_exec, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_select", - Pg_select, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_result", - Pg_result, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_lo_open", - Pg_lo_open, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_lo_close", - Pg_lo_close, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_lo_read", - Pg_lo_read, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_lo_write", - Pg_lo_write, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_lo_lseek", - Pg_lo_lseek, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_lo_creat", - Pg_lo_creat, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_lo_tell", - Pg_lo_tell, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_lo_unlink", - Pg_lo_unlink, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_lo_import", - Pg_lo_import, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_lo_export", - Pg_lo_export, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_listen", - Pg_listen, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_CreateCommand(interp, - "pg_notifies", - Pg_notifies, - (ClientData)cd, (Tcl_CmdDeleteProc*)NULL); - - Tcl_PkgProvide(interp, "Pgtcl", "1.0"); - - return TCL_OK; + Pg_clientData *cd; + + /* Create and initialize the client data area */ + cd = (Pg_clientData *) ckalloc(sizeof(Pg_clientData)); + Tcl_InitHashTable(&(cd->dbh_hash), TCL_STRING_KEYS); + Tcl_InitHashTable(&(cd->res_hash), TCL_STRING_KEYS); + Tcl_InitHashTable(&(cd->notify_hash), TCL_STRING_KEYS); + cd->dbh_count = 0L; + cd->res_count = 0L; + + /* Arrange for tidy up when interpreter is deleted or Tcl exits */ + Tcl_CallWhenDeleted(interp, Pgtcl_Shutdown, (ClientData) cd); + Tcl_CreateExitHandler(Pgtcl_AtExit, (ClientData) cd); + + /* register all pgtcl commands */ + Tcl_CreateCommand(interp, + "pg_conndefaults", + Pg_conndefaults, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_connect", + Pg_connect, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_disconnect", + Pg_disconnect, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_exec", + Pg_exec, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_select", + Pg_select, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_result", + Pg_result, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_lo_open", + Pg_lo_open, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_lo_close", + Pg_lo_close, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_lo_read", + Pg_lo_read, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_lo_write", + Pg_lo_write, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_lo_lseek", + Pg_lo_lseek, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_lo_creat", + Pg_lo_creat, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_lo_tell", + Pg_lo_tell, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_lo_unlink", + Pg_lo_unlink, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_lo_import", + Pg_lo_import, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_lo_export", + Pg_lo_export, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_listen", + Pg_listen, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_CreateCommand(interp, + "pg_notifies", + Pg_notifies, + (ClientData) cd, (Tcl_CmdDeleteProc *) NULL); + + Tcl_PkgProvide(interp, "Pgtcl", "1.0"); + + return TCL_OK; } int -Pgtcl_SafeInit (Tcl_Interp *interp) +Pgtcl_SafeInit(Tcl_Interp * interp) { - return Pgtcl_Init(interp); + return Pgtcl_Init(interp); } |