From: Vlad S. <ser...@us...> - 2005-08-04 21:54:35
|
Update of /cvsroot/naviserver/naviserver/nsd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25537/nsd Modified Files: set.c tclset.c Log Message: see ChangeLog Index: set.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/set.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** set.c 23 Jun 2005 14:20:04 -0000 1.4 --- set.c 4 Aug 2005 21:54:26 -0000 1.5 *************** *** 415,418 **** --- 415,466 ---- } + /* + *---------------------------------------------------------------------- + * + * Ns_SetGetValue -- + * + * Return the value associated with a key, case sensitive. + * If no value foud, return provided default value + * + * Results: + * A value or NULL if key not found or default is NULL + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + + char *Ns_SetGetValue(Ns_Set *set, CONST char *key, CONST char *def) + { + char *value = Ns_SetGet(set, key); + if (value == NULL) value = (char*)def; + return value; + } + + /* + *---------------------------------------------------------------------- + * + * Ns_SetIGetValue -- + * + * Return the value associated with a key, case insensitive. + * If no value found, return provided default value + * + * Results: + * A value or NULL if key not found or default is NULL + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + + char *Ns_SetIGetValue(Ns_Set *set, CONST char *key, CONST char *def) + { + char *value = Ns_SetIGet(set, key); + if (value == NULL) value = (char*)def; + return value; + } + /* Index: tclset.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/tclset.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** tclset.c 12 Jul 2005 07:31:39 -0000 1.5 --- tclset.c 4 Aug 2005 21:54:26 -0000 1.6 *************** *** 200,204 **** Ns_Set *set, *set2Ptr, **sets; int locked, i, flags; ! char *key, *val, *name, *split; Tcl_DString ds; Tcl_HashTable *tablePtr; --- 200,204 ---- Ns_Set *set, *set2Ptr, **sets; int locked, i, flags; ! char *key, *val, *def, *name, *split; Tcl_DString ds; Tcl_HashTable *tablePtr; *************** *** 407,416 **** */ ! if (objc != 4) { Tcl_WrongNumArgs(interp, 2, objv, "setId key"); return TCL_ERROR; } key = Tcl_GetString(objv[3]); switch (opt) { case SFindIdx: objPtr = Tcl_NewIntObj(Ns_SetFind(set, key)); --- 407,430 ---- */ ! if (objc < 4) { Tcl_WrongNumArgs(interp, 2, objv, "setId key"); return TCL_ERROR; } key = Tcl_GetString(objv[3]); + def = (objc > 4 ? Tcl_GetString(objv[4]) : NULL); switch (opt) { + case SGetIdx: + Tcl_SetResult(interp, Ns_SetGetValue(set, key, def), TCL_VOLATILE); + break; + + case SIGetIdx: + Tcl_SetResult(interp, Ns_SetIGetValue(set, key, def), TCL_VOLATILE); + break; + + case SIFindIdx: + objPtr = Tcl_NewIntObj(Ns_SetIFind(set, key)); + Tcl_SetObjResult(interp, objPtr); + break; + case SFindIdx: objPtr = Tcl_NewIntObj(Ns_SetFind(set, key)); *************** *** 418,425 **** break; ! case SGetIdx: ! Tcl_SetResult(interp, Ns_SetGet(set, key), TCL_VOLATILE); break; ! case SDeleteIdx: case SDelkeyIdx: --- 432,440 ---- break; ! case SIDeleteIdx: ! case SIDelkeyIdx: ! Ns_SetIDeleteKey(set, key); break; ! case SDeleteIdx: case SDelkeyIdx: *************** *** 432,449 **** break; - case SIFindIdx: - objPtr = Tcl_NewIntObj(Ns_SetIFind(set, key)); - Tcl_SetObjResult(interp, objPtr); - break; - - case SIGetIdx: - Tcl_SetResult(interp, Ns_SetIGet(set, key), TCL_VOLATILE); - break; - - case SIDeleteIdx: - case SIDelkeyIdx: - Ns_SetIDeleteKey(set, key); - break; - case SIUniqueIdx: objPtr = Tcl_NewIntObj(Ns_SetIUnique(set, key)); --- 447,450 ---- |