* Add a version, callable from the tcl script for checking features
-* don't expand tabs for spaces...
-
-/*
+/* $Id$
+ *
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* Redistribution and use in source and binary forms are permitted only
-/*
- * $Id: external.h,v 1.3 1999/02/16 23:26:05 bcollins Exp $
- */
+/* $Id: external.h,v 1.4 1999/02/17 00:55:03 bcollins Exp $ */
#ifndef _TCL_EXTERNAL_H
#define _TCL_EXTERNAL_H
LDAP_BEGIN_DECL
-extern int tcl_back_initialize LDAP_P(( BackendInfo *bi ));
-extern int tcl_back_open LDAP_P(( BackendInfo *bi ));
-extern int tcl_back_close LDAP_P(( BackendInfo *bi ));
-extern int tcl_back_destroy LDAP_P(( BackendInfo *bi ));
+extern int tcl_back_initialize LDAP_P ((BackendInfo * bi));
+extern int tcl_back_open LDAP_P ((BackendInfo * bi));
+extern int tcl_back_close LDAP_P ((BackendInfo * bi));
+extern int tcl_back_destroy LDAP_P ((BackendInfo * bi));
-extern int tcl_back_db_init LDAP_P(( BackendDB *bd ));
-extern int tcl_back_db_open LDAP_P(( BackendDB *bd ));
-extern int tcl_back_db_close LDAP_P(( BackendDB *bd ));
-extern int tcl_back_db_destroy LDAP_P(( BackendDB *bd ));
+extern int tcl_back_db_init LDAP_P ((BackendDB * bd));
+extern int tcl_back_db_open LDAP_P ((BackendDB * bd));
+extern int tcl_back_db_close LDAP_P ((BackendDB * bd));
+extern int tcl_back_db_destroy LDAP_P ((BackendDB * bd));
-extern int tcl_back_db_config LDAP_P(( BackendDB *bd,
- char *fname, int lineno, int argc, char **argv ));
+extern int tcl_back_db_config LDAP_P ((BackendDB * bd,
+ char *fname, int lineno, int argc, char **argv));
-extern int tcl_back_bind LDAP_P(( BackendDB *bd,
- Connection *conn, Operation *op,
- char *dn, int method, struct berval *cred, char** edn ));
+extern int tcl_back_bind LDAP_P ((BackendDB * bd,
+ Connection * conn, Operation * op,
+ char *dn, int method, struct berval * cred, char **edn));
-extern int tcl_back_unbind LDAP_P(( BackendDB *bd,
- Connection *conn, Operation *op ));
+extern int tcl_back_unbind LDAP_P ((BackendDB * bd,
+ Connection * conn, Operation * op));
-extern int tcl_back_search LDAP_P(( BackendDB *bd,
- Connection *conn, Operation *op,
- char *base, int scope, int deref, int sizelimit, int timelimit,
- Filter *filter, char *filterstr, char **attrs, int attrsonly ));
+extern int tcl_back_search LDAP_P ((BackendDB * bd,
+ Connection * conn, Operation * op,
+ char *base, int scope, int deref, int sizelimit, int timelimit,
+ Filter * filter, char *filterstr, char **attrs, int attrsonly));
-extern int tcl_back_compare LDAP_P((BackendDB *bd,
- Connection *conn, Operation *op,
- char *dn, Ava *ava ));
+extern int tcl_back_compare LDAP_P ((BackendDB * bd,
+ Connection * conn, Operation * op,
+ char *dn, Ava * ava));
-extern int tcl_back_modify LDAP_P(( BackendDB *bd,
- Connection *conn, Operation *op,
- char *dn, LDAPModList *ml ));
+extern int tcl_back_modify LDAP_P ((BackendDB * bd,
+ Connection * conn, Operation * op,
+ char *dn, LDAPModList * ml));
-extern int tcl_back_modrdn LDAP_P(( BackendDB *bd,
- Connection *conn, Operation *op,
- char *dn, char*newrdn, int deleteoldrdn ));
+extern int tcl_back_modrdn LDAP_P ((BackendDB * bd,
+ Connection * conn, Operation * op,
+ char *dn, char *newrdn, int deleteoldrdn));
-extern int tcl_back_add LDAP_P(( BackendDB *bd,
- Connection *conn, Operation *op, Entry *e ));
+extern int tcl_back_add LDAP_P ((BackendDB * bd,
+ Connection * conn, Operation * op, Entry * e));
-extern int tcl_back_delete LDAP_P(( BackendDB *bd,
- Connection *conn, Operation *op, char *dn ));
+extern int tcl_back_delete LDAP_P ((BackendDB * bd,
+ Connection * conn, Operation * op, char *dn));
-extern int tcl_back_abandon LDAP_P(( BackendDB *bd,
- Connection *conn, Operation *op, int msgid ));
+extern int tcl_back_abandon LDAP_P ((BackendDB * bd,
+ Connection * conn, Operation * op, int msgid));
LDAP_END_DECL
#endif /* _TCL_EXTERNAL_H */
-
-/*
- * abandon.c - tcl abandon routine
+/* abandon.c - tcl abandon routine
+ *
+ * $Id: tcl_abandon.c,v 1.2 1999/02/16 23:32:49 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id$
- *
- * $Log$
*/
#include "portable.h"
#include "slap.h"
#include "tcl_back.h"
-int tcl_back_abandon (
- Backend *be,
- Connection *conn,
- Operation *op,
- int msgid
+int
+tcl_back_abandon (
+ Backend * be,
+ Connection * conn,
+ Operation * op,
+ int msgid
)
{
char *suf_tcl, *results, *command;
struct tclinfo *ti = (struct tclinfo *) be->be_private;
if (ti->ti_abandon == NULL) {
- return;
+ return (-1);
}
- for ( i = 0; be->be_suffix[i] != NULL; i++ )
- ;
- suf_tcl = Tcl_Merge(i, be->be_suffix);
+ for (i = 0; be->be_suffix[i] != NULL; i++);
+ suf_tcl = Tcl_Merge (i, be->be_suffix);
- command = (char *) ch_malloc (strlen(ti->ti_abandon) + strlen(suf_tcl)
+ command = (char *) ch_malloc (strlen (ti->ti_abandon) + strlen (suf_tcl)
+ 20);
- sprintf(command, "%s ABANDON {%ld} {%s}",
+ sprintf (command, "%s ABANDON {%ld} {%s}",
ti->ti_abandon, op->o_msgid, suf_tcl);
- Tcl_Free(suf_tcl);
-
- ldap_pvt_thread_mutex_lock( &tcl_interpreter_mutex );
- code = Tcl_GlobalEval(ti->ti_ii->interp, command);
- results = (char *) strdup(ti->ti_ii->interp->result);
- ldap_pvt_thread_mutex_unlock( &tcl_interpreter_mutex );
- free(command);
-
- if (code != TCL_OK) {
- Debug(LDAP_DEBUG_ANY, "tcl_abandon_error: %s\n", results, 0, 0);
- }
- return( 0 );
+ Tcl_Free (suf_tcl);
+
+ ldap_pvt_thread_mutex_lock (&tcl_interpreter_mutex);
+ code = Tcl_GlobalEval (ti->ti_ii->interp, command);
+ results = (char *) strdup (ti->ti_ii->interp->result);
+ ldap_pvt_thread_mutex_unlock (&tcl_interpreter_mutex);
+ free (command);
+
+ if (code != TCL_OK) {
+ err = LDAP_OPERATIONS_ERROR;
+ Debug (LDAP_DEBUG_ANY, "tcl_abandon_error: %s\n", results,
+ 0, 0);
+ }
+
+ free(results);
+ return (err);
}
-/*
- * add.c - tcl add routine
+/* add.c - tcl add routine
+ *
+ * $Id: tcl_add.c,v 1.2 1999/02/17 01:05:28 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id$
- *
- * $Log$
*/
#include "portable.h"
#include "slap.h"
#include "tcl_back.h"
-int tcl_back_add (
+int
+tcl_back_add (
Backend * be,
Connection * conn,
Operation * op,
return (-1);
}
- for ( i = 0; be->be_suffix[i] != NULL; i++ )
- ;
- suf_tcl = Tcl_Merge(i, be->be_suffix);
+ for (i = 0; be->be_suffix[i] != NULL; i++);
+ suf_tcl = Tcl_Merge (i, be->be_suffix);
- entrystr = tcl_clean_entry(e);
+ entrystr = tcl_clean_entry (e);
- command = (char *) ch_malloc (strlen(ti->ti_add) + strlen(suf_tcl) +
- strlen(entrystr) + 32);
- sprintf(command, "%s ADD {%ld} {%s} {%s}",
+ command = (char *) ch_malloc (strlen (ti->ti_add) + strlen
+ (suf_tcl) +
+ strlen (entrystr) + 32);
+ sprintf (command, "%s ADD {%ld} {%s} {%s}",
ti->ti_add, op->o_msgid, suf_tcl, entrystr);
- Tcl_Free(suf_tcl);
+ Tcl_Free (suf_tcl);
free (entrystr);
- ldap_pvt_thread_mutex_lock( &tcl_interpreter_mutex );
- code = Tcl_GlobalEval(ti->ti_ii->interp, command);
- results = (char *) strdup(ti->ti_ii->interp->result);
- ldap_pvt_thread_mutex_unlock( &tcl_interpreter_mutex );
- free(command);
+ ldap_pvt_thread_mutex_lock (&tcl_interpreter_mutex);
+ code = Tcl_GlobalEval (ti->ti_ii->interp, command);
+ results = (char *) strdup (ti->ti_ii->interp->result);
+ ldap_pvt_thread_mutex_unlock (&tcl_interpreter_mutex);
+ free (command);
if (code != TCL_OK) {
err = LDAP_OPERATIONS_ERROR;
- Debug(LDAP_DEBUG_ANY, "tcl_add_error: %s\n", results, 0, 0);
+ Debug (LDAP_DEBUG_ANY, "tcl_add_error: %s\n", results, 0, 0);
} else {
- interp_send_results ( be, conn, op, results, NULL, 0 );
+ interp_send_results (be, conn, op, results, NULL, 0);
}
if (err != LDAP_SUCCESS)
- send_ldap_result (conn, op, err, NULL, "internal backend error");
+ send_ldap_result (conn, op, err, NULL,
+ "internal backend error");
+
+ free(results);
return (err);
}
-
-/*
- * tcl_back.h - tcl backend header (structs, functions)
+/* tcl_back.h - tcl backend header (structs, functions)
+ *
+ * $Id: tcl_back.h,v 1.1 1999/02/17 01:23:18 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id$
- *
- * $Log$
*/
#include <tcl.h>
#include <ldap_cdefs.h>
#include "external.h"
-extern ldap_pvt_thread_mutex_t tcl_interpreter_mutex;
+extern ldap_pvt_thread_mutex_t tcl_interpreter_mutex;
struct i_info {
- Tcl_Interp *interp;
- char *name;
- struct i_info *next;
- int count;
+ Tcl_Interp *interp;
+ char *name;
+ struct i_info *next;
+ int count;
};
extern struct i_info *global_i;
struct tclinfo {
- char *script_path;
- struct i_info *ti_ii;
- char *ti_bind;
- char *ti_unbind;
- char *ti_search;
- char *ti_compare;
- char *ti_modify;
- char *ti_modrdn;
- char *ti_add;
- char *ti_delete;
- char *ti_abandon;
+ char *script_path;
+ struct i_info *ti_ii;
+ char *ti_bind;
+ char *ti_unbind;
+ char *ti_search;
+ char *ti_compare;
+ char *ti_modify;
+ char *ti_modrdn;
+ char *ti_add;
+ char *ti_delete;
+ char *ti_abandon;
};
void readtclscript (char *script, Tcl_Interp * my_tcl);
-char *tcl_clean_entry (Entry *e);
+char *tcl_clean_entry (Entry * e);
+
int tcl_ldap_debug (
- ClientData clientData,
- Tcl_Interp *interp,
- int argc,
- char *argv[]
+ ClientData clientData,
+ Tcl_Interp * interp,
+ int argc,
+ char *argv[]
);
-int interp_send_results(
- Backend *be,
- Connection *conn,
- Operation *op,
- char *result,
- char **attrs,
- int attrsonly
+int interp_send_results (
+ Backend * be,
+ Connection * conn,
+ Operation * op,
+ char *result,
+ char **attrs,
+ int attrsonly
);
#endif
-
-/*
- * bind.c - tcl bind routines
+/* bind.c - tcl bind routines
+ *
+ * $Id: tcl_bind.c,v 1.2 1999/02/17 01:05:28 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id$
- *
- * $Log$
*/
#include "portable.h"
#include "slap.h"
#include "tcl_back.h"
-int tcl_back_bind (
+int
+tcl_back_bind (
Backend * be,
Connection * conn,
Operation * op,
char *dn,
int method,
struct berval *cred,
- char** edn
+ char **edn
)
{
char *command, *suf_tcl, *results;
return (-1);
}
- for ( i = 0; be->be_suffix[i] != NULL; i++ )
- ;
- suf_tcl = Tcl_Merge(i, be->be_suffix);
+ for (i = 0; be->be_suffix[i] != NULL; i++);
+ suf_tcl = Tcl_Merge (i, be->be_suffix);
- command = (char *) ch_malloc (strlen(ti->ti_bind) + strlen(suf_tcl) +
- strlen(dn) + strlen(cred->bv_val) + 64);
- sprintf(command, "%s BIND {%ld} {%s} {%s} {%d} {%lu} {%s}",
+ command = (char *) ch_malloc (strlen (ti->ti_bind) + strlen
+ (suf_tcl) +
+ strlen (dn) + strlen (cred->bv_val) + 64);
+ sprintf (command, "%s BIND {%ld} {%s} {%s} {%d} {%lu} {%s}",
ti->ti_bind, op->o_msgid, suf_tcl, dn, method, cred->bv_len,
cred->bv_val);
- Tcl_Free(suf_tcl);
+ Tcl_Free (suf_tcl);
- ldap_pvt_thread_mutex_lock( &tcl_interpreter_mutex );
- code = Tcl_GlobalEval(ti->ti_ii->interp, command);
- results = (char *) strdup(ti->ti_ii->interp->result);
- ldap_pvt_thread_mutex_unlock( &tcl_interpreter_mutex );
- free(command);
+ ldap_pvt_thread_mutex_lock (&tcl_interpreter_mutex);
+ code = Tcl_GlobalEval (ti->ti_ii->interp, command);
+ results = (char *) strdup (ti->ti_ii->interp->result);
+ ldap_pvt_thread_mutex_unlock (&tcl_interpreter_mutex);
+ free (command);
if (code != TCL_OK) {
err = LDAP_OPERATIONS_ERROR;
- Debug(LDAP_DEBUG_ANY, "tcl_bind_error: %s\n", results, 0, 0);
+ Debug (LDAP_DEBUG_ANY, "tcl_bind_error: %s\n", results, 0, 0);
} else {
- err = interp_send_results ( be, conn, op, results, NULL, 0 );
+ err = interp_send_results (be, conn, op, results, NULL, 0);
}
if (err != LDAP_SUCCESS)
- send_ldap_result (conn, op, err, NULL, "internal backend error");
+ send_ldap_result (conn, op, err, NULL,
+ "internal backend error");
+
+ free(results);
return (err);
}
-/*
- * close.c - tcl close routines
+/* close.c - tcl close routines
+ *
+ * $Id: tcl_close.c,v 1.3 1999/02/17 01:02:11 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id: tcl_close.c,v 1.2 1999/02/17 00:55:03 bcollins Exp $
- *
- * $Log: tcl_close.c,v $
- * Revision 1.2 1999/02/17 00:55:03 bcollins
- * Implemented all of the (db_)destroy and (db_)close functions
- *
*/
#include "portable.h"
BackendInfo * bi
)
{
- Tcl_DeleteInterp(global_i->interp);
+ Tcl_DeleteInterp (global_i->interp);
- return( 0 );
+ return (0);
}
int
-tcl_back_destroy(
- BackendInfo *bi
+tcl_back_destroy (
+ BackendInfo * bi
)
{
- Tcl_Free(global_i->interp);
- free(global_i);
- ldap_pvt_thread_mutex_destroy( &tcl_interpreter_mutex );
+ free (global_i->interp);
+ free (global_i);
+ ldap_pvt_thread_mutex_destroy (&tcl_interpreter_mutex);
- return( 0 );
+ return (0);
}
int
-tcl_back_db_close(
- BackendDB *bd
+tcl_back_db_close (
+ BackendDB * bd
)
{
struct tclinfo *ti = (struct tclinfo *) bd->be_private;
/* Disable the interp and associated struct */
ti->ti_ii->count--;
- if (!ti->ti_ii->count && strcasecmp("default", ti->ti_ii->name)) {
+ if (!ti->ti_ii->count && strcasecmp ("default", ti->ti_ii->name)) {
/* no more db's using this and it's not the default */
- for(ti_tmp = global_i; ti_tmp->next != ti->ti_ii; ti_tmp = ti_tmp->next)
- ;
+ for (ti_tmp = global_i; ti_tmp->next != ti->ti_ii; ti_tmp
+ = ti_tmp->next);
/* This bypasses this interp struct in the global hash */
ti_tmp->next = ti->ti_ii->next;
- Tcl_DeleteInterp(ti->ti_ii->interp);
+ Tcl_DeleteInterp (ti->ti_ii->interp);
}
- return( 0 );
+ return (0);
}
int
-tcl_back_db_destroy(
- BackendDB *bd
+tcl_back_db_destroy (
+ BackendDB * bd
)
{
struct tclinfo *ti = (struct tclinfo *) bd->be_private;
- /*
- * Now free up the allocated memory used
- */
+ /*
+ * Now free up the allocated memory used
+ */
ti->ti_ii->count--;
- if (!ti->ti_ii->count && strcasecmp("default", ti->ti_ii->name)) {
- Tcl_Free(ti->ti_ii->interp);
- free(ti->ti_ii);
- free(ti);
+ if (!ti->ti_ii->count && strcasecmp ("default", ti->ti_ii->name)) {
+ free (ti->ti_ii->interp);
+ free (ti->ti_ii);
+ free (ti);
}
- free( bd->be_private );
+ free (bd->be_private);
bd->be_private = NULL;
- return( 0 );
+ return (0);
}
-/*
- * compare.c - tcl compare routines
+/* compare.c - tcl compare routines
+ *
+ * $Id: tcl_compare.c,v 1.2 1999/02/17 01:05:28 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id$
- *
- * $Log$
*/
#include "portable.h"
return (-1);
}
- for ( i = 0; be->be_suffix[i] != NULL; i++ )
- ;
- suf_tcl = Tcl_Merge(i, be->be_suffix);
+ for (i = 0; be->be_suffix[i] != NULL; i++);
+ suf_tcl = Tcl_Merge (i, be->be_suffix);
- command = (char *) ch_malloc (strlen(ti->ti_compare) +
- strlen(suf_tcl) + strlen(dn) + strlen(ava->ava_type) +
- strlen(ava->ava_value.bv_val) + 64);
- sprintf(command, "%s COMPARE {%ld} {%s} {%s} {%s: %s}",
+ command = (char *) ch_malloc (strlen (ti->ti_compare) +
+ strlen (suf_tcl) + strlen (dn) + strlen (ava->ava_type) +
+ strlen (ava->ava_value.bv_val) + 64);
+ sprintf (command, "%s COMPARE {%ld} {%s} {%s} {%s: %s}",
ti->ti_compare, op->o_msgid, suf_tcl, dn, ava->ava_type,
- ava->ava_value.bv_val);
- Tcl_Free(suf_tcl);
+ ava->ava_value.bv_val);
+ Tcl_Free (suf_tcl);
- ldap_pvt_thread_mutex_lock( &tcl_interpreter_mutex );
- code = Tcl_GlobalEval(ti->ti_ii->interp, command);
- results = (char *) strdup(ti->ti_ii->interp->result);
- ldap_pvt_thread_mutex_unlock( &tcl_interpreter_mutex );
- free(command);
+ ldap_pvt_thread_mutex_lock (&tcl_interpreter_mutex);
+ code = Tcl_GlobalEval (ti->ti_ii->interp, command);
+ results = (char *) strdup (ti->ti_ii->interp->result);
+ ldap_pvt_thread_mutex_unlock (&tcl_interpreter_mutex);
+ free (command);
if (code != TCL_OK) {
err = LDAP_OPERATIONS_ERROR;
- Debug(LDAP_DEBUG_ANY, "tcl_compare_error: %s\n", results, 0, 0);
+ Debug (LDAP_DEBUG_ANY, "tcl_compare_error: %s\n", results,
+ 0, 0);
} else {
- interp_send_results ( be, conn, op, results, NULL, 0 );
+ interp_send_results (be, conn, op, results, NULL, 0);
}
if (err != LDAP_SUCCESS)
- send_ldap_result (conn, op, err, NULL, "internal backend error");
- return (0);
+ send_ldap_result (conn, op, err, NULL,
+ "internal backend error");
+ free(results);
+ return (err);
}
-/*
- * config.c - tcl backend configuration file routine
+/* config.c - tcl backend configuration file routine
+ *
+ * $Id: tcl_config.c,v 1.3 1999/02/17 00:53:59 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id: tcl_config.c,v 1.2 1999/02/16 23:30:36 bcollins Exp $
- *
- * $Log: tcl_config.c,v $
- * Revision 1.2 1999/02/16 23:30:36 bcollins
- * fixed exit()'s to be return()'s
- *
*/
#include "portable.h"
struct i_info *global_i;
-int tcl_back_db_config (
+int
+tcl_back_db_config (
BackendDB * bd,
char *fname,
int lineno,
int script_loaded = 0;
if (ti == NULL) {
- fprintf (stderr, "%s: line %d: tcl backend info is null!\n", fname,
+ fprintf (stderr,
+ "%s: line %d: tcl backend info is null!\n", fname,
lineno);
- return( 1 );
+ return (1);
}
if (ti->ti_ii == NULL) {
ti->ti_ii = global_i;
Debug (LDAP_DEBUG_ANY,
"%s: line %d: missing script in \"scriptpath <script>\" line\n",
fname, lineno, 0);
- return( 1 );
+ return (1);
}
ti->script_path = (char *) strdup (argv[1]);
- /* use local interpreter */
+ /* use local interpreter */
} else if (strcasecmp (argv[0], "tclrealm") == 0) {
struct i_info *ii;
Debug (LDAP_DEBUG_ANY,
"%s: line %d: missing script in \"tclrealm <name>\" line\n",
fname, lineno, 0);
- return( 1 );
+ return (1);
}
ti->ti_ii = NULL;
/* Try to see if it already exists */
do {
if (ii != NULL && !strcasecmp (ii->name, argv[1]))
- ti->ti_ii = ii;
+ ti->ti_ii = ii;
if (ii->next != NULL)
- ii = ii->next;
+ ii = ii->next;
} while (ii->next != NULL);
- if (ti->ti_ii == NULL) { /* we need to make a new one */
+ if (ti->ti_ii == NULL) { /* we need to make a new one */
ii->next = (struct i_info *) ch_malloc
(sizeof (struct i_info));
ti->ti_ii = ii->next;
}
- /* proc for binds */
+ /* proc for binds */
} else if (strcasecmp (argv[0], "bind") == 0) {
if (argc < 2) {
Debug (LDAP_DEBUG_ANY,
"%s: line %d: missing proc in \"bind <proc>\" line\n",
fname, lineno, 0);
- return( 1 );
+ return (1);
}
ti->ti_bind = (char *) strdup (argv[1]);
- /* proc for unbinds */
+ /* proc for unbinds */
} else if (strcasecmp (argv[0], "unbind") == 0) {
if (argc < 2) {
Debug (LDAP_DEBUG_ANY,
- "%s: line %d: missing proc in \"unbind <proc>\" line\n",
- fname, lineno, 0);
- return( 1 );
+ "%s: line %d: missing proc in \"unbind <proc>\" line\n",
+ fname, lineno, 0);
+ return (1);
}
ti->ti_unbind = (char *) strdup (argv[1]);
- /* proc for search */
+ /* proc for search */
} else if (strcasecmp (argv[0], "search") == 0) {
if (argc < 2) {
Debug (LDAP_DEBUG_ANY,
"%s: line %d: missing proc in \"search <proc>\" line\n",
fname, lineno, 0);
- return( 1 );
+ return (1);
}
ti->ti_search = (char *) strdup (argv[1]);
- /* proc for compares */
+ /* proc for compares */
} else if (strcasecmp (argv[0], "compare") == 0) {
if (argc < 2) {
Debug (LDAP_DEBUG_ANY,
"%s: line %d: missing proc in \"compare <proc>\" line\n",
fname, lineno, 0);
- return( 1 );
+ return (1);
}
ti->ti_compare = (char *) strdup (argv[1]);
- /* proc for modify */
+ /* proc for modify */
} else if (strcasecmp (argv[0], "modify") == 0) {
if (argc < 2) {
Debug (LDAP_DEBUG_ANY,
"%s: line %d: missing proc in \"modify <proc>\" line\n",
fname, lineno, 0);
- return( 1 );
+ return (1);
}
ti->ti_modify = (char *) strdup (argv[1]);
- /* proc for modrdn */
+ /* proc for modrdn */
} else if (strcasecmp (argv[0], "modrdn") == 0) {
if (argc < 2) {
Debug (LDAP_DEBUG_ANY,
"%s: line %d: missing proc in \"modrdn <proc>\" line\n",
fname, lineno, 0);
- return( 1 );
+ return (1);
}
ti->ti_modrdn = (char *) strdup (argv[1]);
- /* proc for add */
+ /* proc for add */
} else if (strcasecmp (argv[0], "add") == 0) {
if (argc < 2) {
Debug (LDAP_DEBUG_ANY,
"%s: line %d: missing proc in \"add <proc>\" line\n",
fname, lineno, 0);
- return( 1 );
+ return (1);
}
ti->ti_add = (char *) strdup (argv[1]);
- /* proc for delete */
+ /* proc for delete */
} else if (strcasecmp (argv[0], "delete") == 0) {
if (argc < 2) {
Debug (LDAP_DEBUG_ANY,
"%s: line %d: missing proc in \"delete <proc>\" line\n",
fname, lineno, 0);
- return( 1 );
+ return (1);
}
ti->ti_delete = (char *) strdup (argv[1]);
- /* proc for abandon */
+ /* proc for abandon */
} else if (strcasecmp (argv[0], "abandon") == 0) {
if (argc < 2) {
Debug (LDAP_DEBUG_ANY,
"%s: line %d: missing proc in \"abandon <proc>\" line\n",
fname, lineno, 0);
- return( 1 );
+ return (1);
}
ti->ti_search = (char *) strdup (argv[1]);
} else {
Debug (LDAP_DEBUG_ANY,
"Unknown tcl backend config: %s\n", argv[0], 0, 0);
- return( 1 );
+ return (1);
}
return 0;
}
-
-void readtclscript (char *script, Tcl_Interp * my_tcl)
-{
- int code;
- FILE *f;
- f = fopen (script, "r");
- if (f == NULL) {
- Debug (LDAP_DEBUG_ANY, "Could not open scriptpath %s\n", script,
- 0, 0);
- return( 1 );
- }
- fclose (f);
- code = Tcl_EvalFile (my_tcl, script);
- if (code != TCL_OK) {
- Debug (LDAP_DEBUG_ANY, "%s: %s\n", script,
- Tcl_GetVar (my_tcl, "errorInfo", TCL_GLOBAL_ONLY), 0);
- Debug (LDAP_DEBUG_ANY, "%s: error at line\n", script,
- my_tcl->errorLine, 0);
- return( 1 );
- }
-}
-/*
- * delete.c - tcl delete routines
+/* delete.c - tcl delete routines
+ *
+ * $Id: tcl_delete.c,v 1.2 1999/02/17 01:05:28 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id$
- *
- * $Log$
*/
#include "portable.h"
return (-1);
}
- for ( i = 0; be->be_suffix[i] != NULL; i++ )
- ;
- suf_tcl = Tcl_Merge(i, be->be_suffix);
+ for (i = 0; be->be_suffix[i] != NULL; i++);
+ suf_tcl = Tcl_Merge (i, be->be_suffix);
- command = (char *) ch_malloc (strlen(ti->ti_delete) + strlen(suf_tcl)
- + strlen(dn) + 64);
- sprintf(command, "%s DELETE {%ld} {%s} {%s}",
+ command = (char *) ch_malloc (strlen (ti->ti_delete) + strlen (suf_tcl)
+ + strlen (dn) + 64);
+ sprintf (command, "%s DELETE {%ld} {%s} {%s}",
ti->ti_delete, op->o_msgid, suf_tcl, dn);
- Tcl_Free(suf_tcl);
+ Tcl_Free (suf_tcl);
- ldap_pvt_thread_mutex_lock( &tcl_interpreter_mutex );
- code = Tcl_GlobalEval(ti->ti_ii->interp, command);
- results = (char *) strdup(ti->ti_ii->interp->result);
- ldap_pvt_thread_mutex_unlock( &tcl_interpreter_mutex );
- free(command);
+ ldap_pvt_thread_mutex_lock (&tcl_interpreter_mutex);
+ code = Tcl_GlobalEval (ti->ti_ii->interp, command);
+ results = (char *) strdup (ti->ti_ii->interp->result);
+ ldap_pvt_thread_mutex_unlock (&tcl_interpreter_mutex);
+ free (command);
if (code != TCL_OK) {
err = LDAP_OPERATIONS_ERROR;
- Debug(LDAP_DEBUG_ANY, "tcl_delete_error: %s\n", results, 0, 0);
+ Debug (LDAP_DEBUG_ANY, "tcl_delete_error: %s\n", results,
+ 0, 0);
} else {
- interp_send_results ( be, conn, op, results, NULL, 0 );
+ interp_send_results (be, conn, op, results, NULL, 0);
}
if (err != LDAP_SUCCESS)
- send_ldap_result (conn, op, err, NULL, "internal backend error");
+ send_ldap_result (conn, op, err, NULL,
+ "internal backend error");
- return (0);
+ free(results);
+ return (err);
}
-/*
- * tcl_init.c - tcl backend initialization
+/* tcl_init.c - tcl backend initialization
+ *
+ * $Id: tcl_init.c,v 1.3 1999/02/17 01:02:11 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id: tcl_init.c,v 1.2 1999/02/17 00:55:54 bcollins Exp $
- *
- * $Log: tcl_init.c,v $
- * Revision 1.2 1999/02/17 00:55:54 bcollins
- * Implemented the open, init functions correctly
- *
*/
#include "portable.h"
ldap_pvt_thread_mutex_t tcl_interpreter_mutex;
int
-tcl_back_initialize(
- BackendInfo *bi
+tcl_back_initialize (
+ BackendInfo * bi
)
{
/* Initialize the global interpreter array */
global_i = (struct i_info *) ch_malloc (sizeof (struct i_info));
+
global_i->count = 0;
global_i->name = "default";
global_i->next = NULL;
Tcl_Init (global_i->interp);
/* Initialize the global interpreter lock */
- ldap_pvt_thread_mutex_init( &tcl_interpreter_mutex );
+ ldap_pvt_thread_mutex_init (&tcl_interpreter_mutex);
bi->bi_open = tcl_back_open;
bi->bi_config = NULL;
}
int
-tcl_back_open(
- BackendInfo *bi
+tcl_back_open (
+ BackendInfo * bi
)
{
/* Initialize the global interpreter array */
global_i = (struct i_info *) ch_malloc (sizeof (struct i_info));
+
global_i->count = 0;
global_i->name = "default";
global_i->next = NULL;
Tcl_Init (global_i->interp);
/* Initialize the global interpreter lock */
- ldap_pvt_thread_mutex_init( &tcl_interpreter_mutex );
+ ldap_pvt_thread_mutex_init (&tcl_interpreter_mutex);
- return( 0 );
+ return (0);
}
int
-tcl_back_db_init(
- Backend *be
+tcl_back_db_init (
+ Backend * be
)
{
- struct tclinfo *ti;
+ struct tclinfo *ti;
- ti = (struct tclinfo *) ch_calloc( 1, sizeof(struct tclinfo) );
+ ti = (struct tclinfo *) ch_calloc (1, sizeof (struct tclinfo));
/*
* For some reason this causes problems
return ti == NULL;
}
-int tcl_back_db_open (
- BackendDB * bd
+int
+tcl_back_db_open (
+ BackendDB * bd
)
{
struct tclinfo *ti = (struct tclinfo *) bd->be_private;
- if (ti->ti_ii->interp == NULL) { /* we need to make a new one */
+ if (ti->ti_ii->interp == NULL) { /* we need to make a new one */
ti->ti_ii->interp = Tcl_CreateInterp ();
- Tcl_Init (ti->interp);
+ Tcl_Init (ti->ti_ii->interp);
}
/* raise that count for the interpreter */
readtclscript (ti->script_path, ti->ti_ii->interp);
/* Intall the debug command */
- Tcl_CreateCommand( ti->ti_ii->interp, "ldap:debug", &tcl_ldap_debug,
+ Tcl_CreateCommand (ti->ti_ii->interp, "ldap:debug", &tcl_ldap_debug,
NULL, NULL);
return 0;
-/*
- * modify.c - tcl modify routines
+/* modify.c - tcl modify routines
+ *
+ * $Id: tcl_modify.c,v 1.2 1999/02/17 01:05:28 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id$
- *
- * $Log$
*/
#include "portable.h"
#include "slap.h"
#include "tcl_back.h"
-int tcl_back_modify (
+int
+tcl_back_modify (
Backend * be,
Connection * conn,
Operation * op,
return (-1);
}
- for ( i = 0; be->be_suffix[i] != NULL; i++ )
- ;
- suf_tcl = Tcl_Merge(i, be->be_suffix);
+ for (i = 0; be->be_suffix[i] != NULL; i++);
+ suf_tcl = Tcl_Merge (i, be->be_suffix);
- tcl_mods = (char *) ch_malloc( BUFSIZ );
+ tcl_mods = (char *) ch_malloc (BUFSIZ);
tcl_mods[0] = '\0';
bsize = BUFSIZ;
bp = tcl_mods;
- for ( ; modlist != NULL; modlist = modlist->ml_next ) {
+ for (; modlist != NULL; modlist = modlist->ml_next) {
LDAPMod *mods = &modlist->ml_mod;
char *op = NULL;
- switch ( mods->mod_op & ~LDAP_MOD_BVALUES ) {
+ switch (mods->mod_op & ~LDAP_MOD_BVALUES) {
case LDAP_MOD_ADD:
op = "add";
break;
break;
}
- len = strlen( mods->mod_type ) + strlen ( op ) + 7;
- while ( bp + len - tcl_mods > bsize ) {
+ len = strlen (mods->mod_type) + strlen (op) + 7;
+ while (bp + len - tcl_mods > bsize) {
bsize += BUFSIZ;
- tcl_mods = (char *) ch_realloc( tcl_mods, bsize );
+ tcl_mods = (char *) ch_realloc (tcl_mods, bsize);
}
- sprintf(bp, "{ {%s: %s} ", op, mods->mod_type);
+ sprintf (bp, "{ {%s: %s} ", op, mods->mod_type);
bp += len;
- for( i = 0;
- mods->mod_bvalues != NULL && mods->mod_bvalues[i] != NULL;
- i++ )
- {
- len = strlen( mods->mod_type ) + strlen (
- mods->mod_bvalues[i]->bv_val ) + 5 +
- (mods->mod_bvalues[i+1] == NULL ? 2 : 0);
- while ( bp + len - tcl_mods > bsize ) {
+ for (i = 0;
+ mods->mod_bvalues != NULL && mods->mod_bvalues[i]
+ != NULL;
+ i++) {
+ len = strlen (mods->mod_type) + strlen (
+ mods->mod_bvalues[i]->bv_val) + 5 +
+ (mods->mod_bvalues[i + 1] == NULL ? 2 : 0);
+ while (bp + len - tcl_mods > bsize) {
bsize += BUFSIZ;
- tcl_mods = (char *) ch_realloc( tcl_mods, bsize );
+ tcl_mods = (char *) ch_realloc (tcl_mods, bsize);
}
- sprintf(bp, "{%s: %s} %s", mods->mod_type,
- mods->mod_bvalues[i]->bv_val, mods->mod_bvalues[i+1] ==
- NULL ? "} " : "");
+ sprintf (bp, "{%s: %s} %s", mods->mod_type,
+ mods->mod_bvalues[i]->bv_val,
+ mods->mod_bvalues[i + 1] ==
+ NULL ? "} " : "");
bp += len;
}
}
- command = (char *) ch_malloc (strlen(ti->ti_modify) + strlen(suf_tcl)
- + strlen(dn) + strlen(tcl_mods) + 64);
+ command = (char *) ch_malloc (strlen (ti->ti_modify) + strlen (suf_tcl)
+ + strlen (dn) + strlen (tcl_mods) + 64);
/* This space is simply for aesthetics--\ */
- sprintf(command, "%s MODIFY {%ld} {%s} {%s} { %s}",
+ sprintf (command, "%s MODIFY {%ld} {%s} {%s} { %s}",
ti->ti_modify, op->o_msgid, suf_tcl, dn, tcl_mods);
- Tcl_Free(suf_tcl);
- free(tcl_mods);
+ Tcl_Free (suf_tcl);
+ free (tcl_mods);
- ldap_pvt_thread_mutex_lock( &tcl_interpreter_mutex );
- code = Tcl_GlobalEval(ti->ti_ii->interp, command);
- results = (char *) strdup(ti->ti_ii->interp->result);
- ldap_pvt_thread_mutex_unlock( &tcl_interpreter_mutex );
- free(command);
+ ldap_pvt_thread_mutex_lock (&tcl_interpreter_mutex);
+ code = Tcl_GlobalEval (ti->ti_ii->interp, command);
+ results = (char *) strdup (ti->ti_ii->interp->result);
+ ldap_pvt_thread_mutex_unlock (&tcl_interpreter_mutex);
+ free (command);
if (code != TCL_OK) {
err = LDAP_OPERATIONS_ERROR;
- Debug(LDAP_DEBUG_ANY, "tcl_modify_error: %s\n", results, 0, 0);
+ Debug (LDAP_DEBUG_ANY, "tcl_modify_error: %s\n", results,
+ 0, 0);
} else {
- interp_send_results ( be, conn, op, results, NULL, 0 );
+ interp_send_results (be, conn, op, results, NULL, 0);
}
if (err != LDAP_SUCCESS)
- send_ldap_result (conn, op, err, NULL, "internal backend error");
+ send_ldap_result (conn, op, err, NULL,
+ "internal backend error");
- return (0);
+ free(results);
+ return (err);
}
-/*
- * modrdn.c - tcl modify rdn routines
+/* modrdn.c - tcl modify rdn routines
+ *
+ * $Id: tcl_modrdn.c,v 1.2 1999/02/17 01:05:28 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id$
- *
- * $Log$
*/
#include "portable.h"
#include "slap.h"
#include "tcl_back.h"
-int tcl_back_modrdn (
+int
+tcl_back_modrdn (
Backend * be,
Connection * conn,
Operation * op,
return (-1);
}
- for ( i = 0; be->be_suffix[i] != NULL; i++ )
- ;
- suf_tcl = Tcl_Merge(i, be->be_suffix);
+ for (i = 0; be->be_suffix[i] != NULL; i++);
+ suf_tcl = Tcl_Merge (i, be->be_suffix);
- command = (char *) ch_malloc (strlen(ti->ti_modrdn) + strlen(suf_tcl)
- + strlen(dn) + strlen(newrdn) + 64);
- sprintf(command, "%s MODRDN {%ld} {%s} {%s} {%s} %d",
- ti->ti_add, op->o_msgid, suf_tcl, dn, newrdn, deleteoldrdn ? 1 : 0);
- Tcl_Free(suf_tcl);
+ command = (char *) ch_malloc (strlen (ti->ti_modrdn) + strlen (suf_tcl)
+ + strlen (dn) + strlen (newrdn) + 64);
+ sprintf (command, "%s MODRDN {%ld} {%s} {%s} {%s} %d",
+ ti->ti_add, op->o_msgid, suf_tcl, dn, newrdn, deleteoldrdn
+ ? 1 : 0);
+ Tcl_Free (suf_tcl);
- ldap_pvt_thread_mutex_lock( &tcl_interpreter_mutex );
- code = Tcl_GlobalEval(ti->ti_ii->interp, command);
- results = (char *) strdup(ti->ti_ii->interp->result);
- ldap_pvt_thread_mutex_unlock( &tcl_interpreter_mutex );
- free(command);
+ ldap_pvt_thread_mutex_lock (&tcl_interpreter_mutex);
+ code = Tcl_GlobalEval (ti->ti_ii->interp, command);
+ results = (char *) strdup (ti->ti_ii->interp->result);
+ ldap_pvt_thread_mutex_unlock (&tcl_interpreter_mutex);
+ free (command);
if (code != TCL_OK) {
err = LDAP_OPERATIONS_ERROR;
- Debug(LDAP_DEBUG_ANY, "tcl_modrdn_error: %s\n", results, 0, 0);
+ Debug (LDAP_DEBUG_ANY, "tcl_modrdn_error: %s\n", results,
+ 0, 0);
} else {
- interp_send_results ( be, conn, op, results, NULL, 0 );
+ interp_send_results (be, conn, op, results, NULL, 0);
}
if (err != LDAP_SUCCESS)
- send_ldap_result (conn, op, err, NULL, "internal backend error");
+ send_ldap_result (conn, op, err, NULL,
+ "internal backend error");
- return (0);
+ free(results);
+ return (err);
}
-/*
- * search.c - tcl search routines
+/* search.c - tcl search routines
+ *
+ * $Id: tcl_search.c,v 1.2 1999/02/17 01:05:28 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id$
- *
- * $Log$
*/
#include "portable.h"
#include "slap.h"
#include "tcl_back.h"
-int tcl_back_search (
+int
+tcl_back_search (
Backend * be,
Connection * conn,
Operation * op,
return (-1);
}
- for ( i = 0; attrs != NULL && attrs[i] != NULL; i++ )
- ;
+ for (i = 0; attrs != NULL && attrs[i] != NULL; i++);
if (i > 0)
- attrs_tcl = Tcl_Merge(i, attrs);
+ attrs_tcl = Tcl_Merge (i, attrs);
- for ( i = 0; be->be_suffix[i] != NULL; i++ )
- ;
- suf_tcl = Tcl_Merge(i, be->be_suffix);
+ for (i = 0; be->be_suffix[i] != NULL; i++);
+ suf_tcl = Tcl_Merge (i, be->be_suffix);
- command = (char *) ch_malloc (strlen(ti->ti_search) + strlen(suf_tcl)
- + strlen(base) + 40 + strlen(filterstr) + (attrs_tcl == NULL ? 5
- : strlen(attrs_tcl)) + 72);
- sprintf(command, "%s SEARCH {%ld} {%s} {%s} {%d} {%d} {%d} {%d} {%s} {%d} {%s}",
+ command = (char *) ch_malloc (strlen (ti->ti_search) + strlen (suf_tcl)
+ + strlen (base) + 40 + strlen (filterstr) + (attrs_tcl ==
+ NULL ? 5
+ : strlen (attrs_tcl)) + 72);
+ sprintf (command,
+ "%s SEARCH {%ld} {%s} {%s} {%d} {%d} {%d} {%d} {%s} {%d} {%s}",
ti->ti_search, op->o_msgid, suf_tcl, base, scope, deref,
- sizelimit, timelimit, filterstr, attrsonly ? 1 : 0, attrs_tcl ==
+ sizelimit, timelimit, filterstr, attrsonly ? 1 : 0,
+ attrs_tcl ==
NULL ? "{all}" : attrs_tcl);
- Tcl_Free( attrs_tcl );
- Tcl_Free( suf_tcl );
+ Tcl_Free (attrs_tcl);
+ Tcl_Free (suf_tcl);
- ldap_pvt_thread_mutex_lock( &tcl_interpreter_mutex );
- code = Tcl_GlobalEval(ti->ti_ii->interp, command);
+ ldap_pvt_thread_mutex_lock (&tcl_interpreter_mutex);
+ code = Tcl_GlobalEval (ti->ti_ii->interp, command);
results = (char *) strdup(ti->ti_ii->interp->result);
- ldap_pvt_thread_mutex_unlock( &tcl_interpreter_mutex );
- free(command);
+ ldap_pvt_thread_mutex_unlock (&tcl_interpreter_mutex);
+ free (command);
if (code != TCL_OK) {
err = LDAP_OPERATIONS_ERROR;
- Debug(LDAP_DEBUG_ANY, "tcl_search_error: %s\n", results, 0, 0);
+ Debug (LDAP_DEBUG_ANY, "tcl_search_error: %s\n", results,
+ 0, 0);
} else {
- interp_send_results ( be, conn, op, results, NULL, 0 );
+ interp_send_results (be, conn, op, results, NULL, 0);
}
if (err != LDAP_SUCCESS)
- send_ldap_result (conn, op, err, NULL, "internal backend error");
- return (0);
+ send_ldap_result (conn, op, err, NULL,
+ "internal backend error");
+ free(results);
+ return (err);
}
-/*
- * unbind.c - tcl unbind routines
+/* unbind.c - tcl unbind routines
+ *
+ * $Id: tcl_unbind.c,v 1.2 1999/02/17 01:05:28 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id$
- *
- * $Log$
*/
#include "portable.h"
#include "slap.h"
#include "tcl_back.h"
-int tcl_back_unbind (
+int
+tcl_back_unbind (
Backend * be,
Connection * conn,
Operation * op
if (ti->ti_unbind == NULL) {
send_ldap_result (conn, op, LDAP_UNWILLING_TO_PERFORM, NULL,
"unbind not implemented");
- return;
+ return(-1);
}
- for ( i = 0; be->be_suffix[i] != NULL; i++ )
- ;
- suf_tcl = Tcl_Merge(i, be->be_suffix);
+ for (i = 0; be->be_suffix[i] != NULL; i++);
+ suf_tcl = Tcl_Merge (i, be->be_suffix);
- command = (char *) ch_malloc (strlen(ti->ti_unbind) + strlen(suf_tcl)
- + strlen(conn->c_dn ? conn->c_dn : "") + 64);
- sprintf(command, "%s UNBIND {%ld} {%s} {%s}",
- ti->ti_unbind, op->o_msgid, suf_tcl, conn->c_dn ? conn->c_dn : "");
- Tcl_Free(suf_tcl);
+ command = (char *) ch_malloc (strlen (ti->ti_unbind) + strlen (suf_tcl)
+ + strlen (conn->c_dn ? conn->c_dn : "") + 64);
+ sprintf (command, "%s UNBIND {%ld} {%s} {%s}",
+ ti->ti_unbind, op->o_msgid, suf_tcl, conn->c_dn ?
+ conn->c_dn : "");
+ Tcl_Free (suf_tcl);
- ldap_pvt_thread_mutex_lock( &tcl_interpreter_mutex );
- code = Tcl_GlobalEval(ti->ti_ii->interp, command);
- results = (char *) strdup(ti->ti_ii->interp->result);
- ldap_pvt_thread_mutex_unlock( &tcl_interpreter_mutex );
- free(command);
+ ldap_pvt_thread_mutex_lock (&tcl_interpreter_mutex);
+ code = Tcl_GlobalEval (ti->ti_ii->interp, command);
+ results = (char *) strdup (ti->ti_ii->interp->result);
+ ldap_pvt_thread_mutex_unlock (&tcl_interpreter_mutex);
+ free (command);
if (code != TCL_OK) {
- Debug(LDAP_DEBUG_ANY, "tcl_unbind_error: %s\n", results, 0, 0);
+ Debug (LDAP_DEBUG_ANY, "tcl_unbind_error: %s\n", results,
+ 0, 0);
}
- return 0;
+
+ free(results);
+ return (err);
}
-/*
- * result.c - tcl backend utility functions
+/* result.c - tcl backend utility functions
+ *
+ * $Id: tcl_util.c,v 1.2 1999/02/17 01:05:28 bcollins Exp $
*
* Copyright 1999, Ben Collins <bcollins@debian.org>, All rights reserved.
*
* as authorized by the OpenLDAP Public License. A copy of this
* license is available at http://www.OpenLDAP.org/license.html or
* in file LICENSE in the top-level directory of the distribution.
- *
- * $Id$
- *
- * $Log$
*/
#include "portable.h"
#include "tcl_back.h"
int
-interp_send_results(
- Backend *be,
- Connection *conn,
- Operation *op,
- char *result,
- char **attrs,
- int attrsonly
+interp_send_results (
+ Backend * be,
+ Connection * conn,
+ Operation * op,
+ char *result,
+ char **attrs,
+ int attrsonly
)
{
- int bsize, len, argcPtr, i, err, code;
- char *buf, *bp, **argvPtr, *line, *matched, *info;
- Entry *e;
+ int bsize, len, argcPtr, i, err, code;
+ char *buf, *bp, **argvPtr, *line, *matched, *info;
+ Entry *e;
struct tclinfo *ti = (struct tclinfo *) be->be_private;
- /* read in the result and send it along */
- buf = (char *) ch_malloc( BUFSIZ );
+
+ /*
+ * read in the result and send it along
+ */
+ buf = (char *) ch_malloc (BUFSIZ);
buf[0] = '\0';
bsize = BUFSIZ;
bp = buf;
- code = Tcl_SplitList(ti->ti_ii->interp, result, &argcPtr, &argvPtr);
+ code = Tcl_SplitList (ti->ti_ii->interp, result, &argcPtr, &argvPtr);
if (code != TCL_OK) {
argcPtr = 0;
send_ldap_result (conn, op, LDAP_UNWILLING_TO_PERFORM, NULL,
"internal backend error");
return -1;
}
- for ( i = 0 ; i < argcPtr ; i++ ) {
+ for (i = 0; i < argcPtr; i++) {
line = argvPtr[i];
- Debug( LDAP_DEBUG_ANY, "tcl search reading line (%s)\n",
- line, 0, 0 );
- /* ignore lines beginning with DEBUG: */
- if ( strncasecmp( line, "DEBUG:", 6 ) == 0 ) {
+
+ /*
+ * ignore lines beginning with DEBUG:
+ */
+ if (strncasecmp (line, "DEBUG:", 6) == 0) {
continue;
}
- len = strlen( line ) + 1;
- while ( bp + len - buf > bsize ) {
+ len = strlen (line) + 1;
+ while (bp + len - buf > bsize) {
bsize += BUFSIZ;
- buf = (char *) ch_realloc( buf, bsize );
+ buf = (char *) ch_realloc (buf, bsize);
}
- sprintf( bp, "%s\n", line );
+ sprintf (bp, "%s\n", line);
bp += len;
- /* line marked the end of an entry or result */
- if ( line[0] == '\0' ) {
- if ( strncasecmp( buf, "RESULT", 6 ) == 0 ) {
+ /*
+ * line marked the end of an entry or result
+ */
+ if (line[0] == '\0') {
+ if (strncasecmp (buf, "RESULT", 6) == 0) {
break;
}
- if ( (e = str2entry( buf )) == NULL ) {
- Debug( LDAP_DEBUG_ANY, "str2entry(%s) failed\n",
- buf, 0, 0 );
+ if ((e = str2entry (buf)) == NULL) {
+ Debug (LDAP_DEBUG_ANY,
+ "str2entry(%s) failed\n",
+ buf, 0, 0);
} else {
- send_search_entry( be, conn, op, e, attrs,
- attrsonly );
- entry_free( e );
+ send_search_entry (be, conn, op, e, attrs,
+ attrsonly);
+ entry_free (e);
}
bp = buf;
}
}
- (void) str2result( buf, &err, &matched, &info );
+ (void) str2result (buf, &err, &matched, &info);
- /* otherwise, front end will send this result */
- if ( err != 0 || op->o_tag != LDAP_REQ_BIND ) {
- send_ldap_result( conn, op, err, matched, info );
+ /*
+ * otherwise, front end will send this result
+ */
+ if (err != 0 || op->o_tag != LDAP_REQ_BIND) {
+ send_ldap_result (conn, op, err, matched, info);
}
- free( buf );
- Tcl_Free( result );
- Tcl_Free( (char *) argvPtr );
- return( err );
+ free (buf);
+ Tcl_Free ((char *) argvPtr);
+ return (err);
}
-char *tcl_clean_entry (Entry *e)
+char *
+tcl_clean_entry (
+ Entry * e
+)
{
char *entrystr, *mark1, *mark2, *buf, *bp, *dup;
int len, bsize;
- pthread_mutex_lock( &entry2str_mutex );
- entrystr = entry2str( e, &len, 0 );
- pthread_mutex_unlock( &entry2str_mutex );
+ pthread_mutex_lock (&entry2str_mutex);
+ entrystr = entry2str (e, &len, 0);
+ pthread_mutex_unlock (&entry2str_mutex);
- buf = (char *) ch_malloc( BUFSIZ );
+ buf = (char *) ch_malloc (BUFSIZ);
buf[0] = '\0';
bsize = BUFSIZ;
bp = buf;
mark1 = entrystr;
do {
if (mark1[0] == '\n') {
- mark1++;
+ mark1++;
}
- dup = (char *) strdup(mark1);
- if (dup[0] != '\0') {
- if ((mark2 = (char *) strchr (dup, '\n')) != NULL) {
+ dup = (char *) strdup (mark1);
+ if (dup[0] != '\0') {
+ if ((mark2 = (char *) strchr (dup, '\n')) != NULL) {
mark2[0] = '\0';
- }
- len = strlen( dup ) + 3;
- while ( bp + len - buf > bsize ) {
+ }
+ len = strlen (dup) + 3;
+ while (bp + len - buf > bsize) {
bsize += BUFSIZ;
- buf = (char *) ch_realloc( buf, bsize );
- }
- if (mark1[0] == '\0') {
- sprintf(bp, "{} ");
- } else {
- sprintf(bp, "{%s} ", dup);
- }
- bp += len;
- if (mark2 != NULL) {
+ buf = (char *) ch_realloc (buf, bsize);
+ }
+ if (mark1[0] == '\0') {
+ sprintf (bp, "{} ");
+ } else {
+ sprintf (bp, "{%s} ", dup);
+ }
+ bp += len;
+ if (mark2 != NULL) {
mark2[0] = '\n';
- }
+ }
}
- free(dup);
+ free (dup);
} while ((mark1 = (char *) strchr (mark1, '\n')) != NULL);
return buf;
}
-int tcl_ldap_debug (
- ClientData clientData,
- Tcl_Interp *interp,
- int argc,
- char *argv[]
+int
+tcl_ldap_debug (
+ ClientData clientData,
+ Tcl_Interp * interp,
+ int argc,
+ char *argv[]
)
{
if (argv[1] != NULL) {
- Debug(LDAP_DEBUG_ANY, "tcl_debug: %s\n", argv[1], 0, 0);
+ Debug (LDAP_DEBUG_ANY, "tcl_debug: %s\n", argv[1], 0, 0);
}
return TCL_OK;
}
+
+void
+readtclscript (
+ char *script,
+ Tcl_Interp * my_tcl)
+{
+ int code;
+ FILE *f;
+
+ f = fopen (script, "r");
+ if (f == NULL) {
+ Debug (LDAP_DEBUG_ANY, "Could not open scriptpath %s\n", script,
+ 0, 0);
+ return;
+ }
+ fclose (f);
+ code = Tcl_EvalFile (my_tcl, script);
+ if (code != TCL_OK) {
+ Debug (LDAP_DEBUG_ANY, "%s: %s\n", script,
+ Tcl_GetVar (my_tcl, "errorInfo", TCL_GLOBAL_ONLY), 0);
+ Debug (LDAP_DEBUG_ANY, "%s: error at line\n", script,
+ my_tcl->errorLine, 0);
+ return;
+ }
+}