Could you not call NsTclVSetCmd() yourself? Look in
nsd/tclvar.c ...
-- Dossy
On 2002.05.03, Andrew Piskorski <[EMAIL PROTECTED]> wrote:
> Folks, has anyone implemented a C NSV API, or does anyone plan to?
>
> Clearly the right thing to do would be to move the functinality in
> aolserver/nsd/tclvar.c into C API functions, and re-implement the nsv
> Tcl commands to that C API.
>
> But since I needed to use some nsv commands from C, and I was in a
> hurry, I just kludged up my own C NSV functions using Ns_TclEval, like
> the example below.
>
> So has anybody done this in a less kludgy fashion? Also, any guesses
> as to what sort of performance hit I'm taking by using Ns_TclEval?
>
>
> static int
> BB_NsvSet(const char *nsvString,
> const char *keyString, const char *valueString)
> {
> static const char func_name[] = "BB_NsvSet";
> Ns_DString dsScript;
> Ns_DString dsResult;
> int rc;
>
> Ns_DStringInit(&dsScript);
> Ns_DStringInit(&dsResult);
>
> /*
> * The key and value may each have embedded whitespace, as we are
> * surronding them with double quotes. But we asumme that the nsv
> * array name will always be one word.
> */
>
> Ns_DStringVarAppend(&dsScript, "nsv_set ", nsvString, " ",
> "\"", keyString, "\"", " ",
> "\"", valueString, "\"", NULL);
>
> rc = Ns_TclEval(&dsResult, NULL, dsScript.string);
>
> Ns_DStringFree(&dsScript);
> Ns_DStringFree(&dsResult);
>
> return rc;
> }
>
> --
> Andrew Piskorski <[EMAIL PROTECTED]>
> http://www.piskorski.com
--
Dossy Shiobara mail: [EMAIL PROTECTED]
Panoptic Computer Network web: http://www.panoptic.com/
"He realized the fastest way to change is to laugh at your own
folly -- then you can let go and quickly move on." (p. 70)