You are viewing a plain text version of this content. The canonical link for it is here.
Posted to websh-cvs@tcl.apache.org by ro...@apache.org on 2005/10/27 11:07:05 UTC
svn commit: r328834 - in /tcl/websh/trunk/src: generic/log.c generic/log.h
tests/log.test
Author: ronnie
Date: Thu Oct 27 02:06:51 2005
New Revision: 328834
URL: http://svn.apache.org/viewcvs?rev=328834&view=rev
Log:
- changed behaviour of web::logdest names and web::logfilter names to
return proper list of names (for consistency)
- added web::logdest levels and web::logfilter levels options to
take function of previous names option (needed for test suite only)
- internal names of logfilters and logdests with decimal counter
(for consistency with other internal Tcl names (files sockets etc.)
- modified some usage error messages for web::logdest and web::logfilter
to comply to Tcl standard
- adapted tests accordingly
Modified:
tcl/websh/trunk/src/generic/log.c
tcl/websh/trunk/src/generic/log.h
tcl/websh/trunk/src/tests/log.test
Modified: tcl/websh/trunk/src/generic/log.c
URL: http://svn.apache.org/viewcvs/tcl/websh/trunk/src/generic/log.c?rev=328834&r1=328833&r2=328834&view=diff
==============================================================================
--- tcl/websh/trunk/src/generic/log.c (original)
+++ tcl/websh/trunk/src/generic/log.c Thu Oct 27 02:06:51 2005
@@ -88,7 +88,7 @@
logtofile = createLogPlugIn();
WebAssertData(interp, logtofile, "log_Init/logtofile plugin", TCL_ERROR)
- logtofile->constructor = createLogToFile;
+ logtofile->constructor = createLogToFile;
logtofile->destructor = destroyLogToFile;
logtofile->handler = logToFile;
@@ -243,7 +243,7 @@
char *createLogDestName(char *prefix, int cnt)
{
- char str[64]; /* more than enough space for logDestFFFF */
+ char str[64]; /* more than enough space for logDest%d */
char *name;
if (prefix == NULL)
@@ -252,10 +252,9 @@
return NULL;
if ((cnt >= 0) && (cnt < (1 << 15))) {
- sprintf(str, "%s%x", prefix, cnt);
+ sprintf(str, "%s%d", prefix, cnt);
name = allocAndSet(str);
- }
- else {
+ } else {
name = NULL;
}
@@ -376,12 +375,15 @@
};
enum params
{ MAXCHAR, FORMAT };
- static TCLCONST char *subCommands[] = { WEB_LOG_SUBCMD_ADD,
- WEB_LOG_SUBCMD_DELETE,
- WEB_LOG_SUBCMD_NAMES, NULL
+ static TCLCONST char *subCommands[] = {
+ WEB_LOG_SUBCMD_ADD,
+ WEB_LOG_SUBCMD_DELETE,
+ WEB_LOG_SUBCMD_NAMES,
+ WEB_LOG_SUBCMD_LEVELS,
+ NULL
};
enum subCommands
- { ADD, DELETE, NAMES };
+ { ADD, DELETE, NAMES, LEVELS };
/* --------------------------------------------------------------------------
* check for internal data
@@ -393,7 +395,7 @@
* check arguments
* ----------------------------------------------------------------------- */
if (objc < 2) {
- Tcl_GetIndexFromObj(interp, objv[0], subCommands, "option", 0, &idx);
+ Tcl_WrongNumArgs(interp, 1, objv, "option arg ?arg ...?");
return TCL_ERROR;
}
@@ -559,6 +561,21 @@
case NAMES:{
HashTableIterator iterator;
+ Tcl_ResetResult(interp);
+
+ if (logData->listOfDests != NULL) {
+
+ assignIteratorToHashTable(logData->listOfDests, &iterator);
+
+ while (nextFromHashIterator(&iterator) != TCL_ERROR) {
+ Tcl_AppendElement(interp, keyOfCurrent(&iterator));
+ }
+ }
+ return TCL_OK;
+ }
+ case LEVELS:{
+
+ HashTableIterator iterator;
int namesIsFirst = TCL_OK;
LogDest *logDest = NULL;
@@ -646,10 +663,11 @@
WEB_LOG_SUBCMD_ADD,
WEB_LOG_SUBCMD_DELETE,
WEB_LOG_SUBCMD_NAMES,
+ WEB_LOG_SUBCMD_LEVELS,
NULL
};
enum subCommands
- { ADD, DELETE, NAMES };
+ { ADD, DELETE, NAMES, LEVELS };
/* --------------------------------------------------------------------------
* check for internal data
@@ -661,7 +679,7 @@
* enough arguments ?
* ----------------------------------------------------------------------- */
if (objc < 2) {
- Tcl_GetIndexFromObj(interp, objv[0], subCommands, "option", 0, &idx);
+ Tcl_WrongNumArgs(interp, 1, objv, "option ?arg?");
return TCL_ERROR;
}
@@ -688,8 +706,7 @@
* enough arguments ?
* --------------------------------------------------------------------- */
if (objc != 3) {
- Tcl_GetIndexFromObj(interp, objv[0], subCommands, "option", 0,
- &idx);
+ Tcl_WrongNumArgs(interp, 2, objv, "level");
return TCL_ERROR;
}
@@ -727,6 +744,24 @@
break;
}
case NAMES:{
+
+ HashTableIterator iterator;
+
+ Tcl_ResetResult(interp);
+
+ if (logData->listOfFilters != NULL) {
+
+ assignIteratorToHashTable(logData->listOfFilters, &iterator);
+
+ while (nextFromHashIterator(&iterator) != TCL_ERROR) {
+ Tcl_AppendElement(interp, keyOfCurrent(&iterator));
+ }
+ }
+ return TCL_OK;
+ break;
+ }
+
+ case LEVELS:{
HashTableIterator iterator;
LogLevel *logLevel = NULL;
Modified: tcl/websh/trunk/src/generic/log.h
URL: http://svn.apache.org/viewcvs/tcl/websh/trunk/src/generic/log.h?rev=328834&r1=328833&r2=328834&view=diff
==============================================================================
--- tcl/websh/trunk/src/generic/log.h (original)
+++ tcl/websh/trunk/src/generic/log.h Thu Oct 27 02:06:51 2005
@@ -60,9 +60,10 @@
/* ----------------------------------------------------------------------------
* SubCommands
* ------------------------------------------------------------------------- */
-#define WEB_LOG_SUBCMD_ADD "add"
+#define WEB_LOG_SUBCMD_ADD "add"
#define WEB_LOG_SUBCMD_DELETE "delete"
-#define WEB_LOG_SUBCMD_NAMES "names"
+#define WEB_LOG_SUBCMD_NAMES "names"
+#define WEB_LOG_SUBCMD_LEVELS "levels"
/* ----------------------------------------------------------------------------
* Switches (like "string -binary")
@@ -83,7 +84,7 @@
* messages
* ------------------------------------------------------------------------*/
#define WEB_LOG_USAGE_LOGDEST_ADD \
- "add ?options? level type type-specific-arguments"
+ "add ?options? level type ?type-specific-arguments ...?"
/* ----------------------------------------------------------------------------
@@ -157,9 +158,11 @@
typedef struct LogData
{
Tcl_HashTable *listOfFilters;
- int filterCnt;
+ int filterCnt; /* actual count of filters */
+ int filterInx; /* highest index in use */
Tcl_HashTable *listOfDests;
- int destCnt;
+ int destCnt; /* actual count of destinations */
+ int destInx; /* highest index in use */
Tcl_HashTable *listOfPlugIns;
int logSubst; /* 1: subst log message, 0: don't (default 1) */
/* needed so that global settings can be accessed */
Modified: tcl/websh/trunk/src/tests/log.test
URL: http://svn.apache.org/viewcvs/tcl/websh/trunk/src/tests/log.test?rev=328834&r1=328833&r2=328834&view=diff
==============================================================================
--- tcl/websh/trunk/src/tests/log.test (original)
+++ tcl/websh/trunk/src/tests/log.test Thu Oct 27 02:06:51 2005
@@ -34,20 +34,32 @@
test log-1.1 {web::logfilter wrong number of arguments} {
catch {web::logfilter} msg
set msg
-} {bad option "web::logfilter": must be add, delete, or names}
+} {wrong # args: should be "web::logfilter option ?arg?"}
test log-1.2 {web::logfilter wrong argument} {
catch {web::logfilter gugus} msg
set msg
-} {bad option "gugus": must be add, delete, or names}
+} {bad option "gugus": must be add, delete, names, or levels}
+
+test log-1.2a {web::logfilter add wrong argument} {
+ catch {web::logfilter add} msg
+ set msg
+} {wrong # args: should be "web::logfilter add level"}
+
+test log-1.2b {web::logfilter delete wrong arguments} {
+ catch {web::logfilter delete foo bar} msg
+ set msg
+} {wrong # args: should be "web::logfilter delete ?filtername?"}
test log-1.3 {websh3_weblog: add a filter} {
web::logfilter delete
web::logfilter add testWithoutAdd.alert-warning
web::logfilter add testWithAdd.error-warning
- set res [web::logfilter names]
+ set res [web::logfilter levels]
+ append res \n [web::logfilter names]
} {logfilter0 testWithoutAdd.alert-warning
-logfilter1 testWithAdd.error-warning}
+logfilter1 testWithAdd.error-warning
+logfilter0 logfilter1}
test log-1.4 {websh3_weblog: reset list of filters} {
web::logfilter delete
@@ -76,25 +88,25 @@
web::logfilter add testWarning.warning
web::logfilter add testInfo.info
web::logfilter add testDebug.debug
- set res [web::logfilter names]
+ set res [web::logfilter levels]
} {logfilter8 testInfo.info-info
-logfilter10 testError.error-error
logfilter9 testDebug.debug-debug
-logfilter11 testWarning.warning-warning
-logfilter12 testInfo.info-info
-logfilter13 testDebug.debug-debug
+logfilter10 testAlert.alert-alert
+logfilter11 testError.error-error
+logfilter12 testWarning.warning-warning
+logfilter13 testInfo.info-info
+logfilter14 testDebug.debug-debug
+logfilter15 testAlert.alert-alert
+logfilter16 testError.error-error
+logfilter17 testWarning.warning-warning
logfilter0 testAlert.alert-alert
+logfilter18 testInfo.info-info
logfilter1 testError.error-error
-logfiltera testAlert.alert-alert
+logfilter19 testDebug.debug-debug
logfilter2 testWarning.warning-warning
-logfilterb testError.error-error
-logfilterc testWarning.warning-warning
logfilter3 testInfo.info-info
-logfilterd testInfo.info-info
logfilter4 testDebug.debug-debug
-logfiltere testDebug.debug-debug
logfilter5 testAlert.alert-alert
-logfilterf testAlert.alert-alert
logfilter6 testError.error-error
logfilter7 testWarning.warning-warning}
@@ -105,7 +117,7 @@
web::logfilter add *.alert-debug
web::logfilter add test*.info
web::logfilter add websh2.alert-error
- set res [web::logfilter names]
+ set res [web::logfilter levels]
} {logfilter4 websh2.alert-error
logfilter0 *.alert-debug
logfilter1 *.alert-debug
@@ -126,7 +138,7 @@
## now delete the middle one
web::logfilter delete $id
## and see what we have
- web::logfilter names
+ web::logfilter levels
} {logfilter0 test0.alert-warning
logfilter2 test2.alert-warning}
@@ -137,10 +149,10 @@
web::logfilter add test.alert
}
web::logfilter add last.warning
- set res [web::logfilter names]
+ set res [web::logfilter levels]
set res [split $res "\n "]
array set test $res
- set res $test(logfilter64)
+ set res $test(logfilter100)
} "last.warning-warning"
test log-1.10 {websh3_weblog: delete first filter} {
@@ -152,7 +164,7 @@
## now delete the middle one
web::logfilter delete $id
## and see what we have
- web::logfilter names
+ web::logfilter levels
} {logfilter1 test2.alert-warning
logfilter2 test3.alert-warning}
@@ -178,12 +190,23 @@
test log-2.1 {web::logdest wrong number of arguments} {
catch {web::logdest} msg
set msg
-} {bad option "web::logdest": must be add, delete, or names}
+} {wrong # args: should be "web::logdest option arg ?arg ...?"}
test log-2.2 {web::logdest wrong argument} {
catch {web::logdest gugus} msg
set msg
-} {bad option "gugus": must be add, delete, or names}
+} {bad option "gugus": must be add, delete, names, or levels}
+
+test log-2.2a {web::logdest wrong add argument} {
+ catch {web::logdest add} msg
+ set msg
+} {wrong # args: should be "web::logdest add ?options? level type ?type-specific-arguments ...?"}
+
+test log-2.2b {web::logdest delete wrong arguments} {
+ catch {web::logdest delete foo bar} msg
+ set msg
+} {wrong # args: should be "web::logdest delete ?destname?"}
+
test log-2.3 {websh3_weblog: logdest add returns id} {
set fn [web::tempfile]
@@ -369,12 +392,16 @@
web::logdest add *.-debug channel stdout
web::logdest add *.-debug channel stdout
web::logdest add *.-debug channel stdout
- web::logdest names
+ set res [web::logdest levels]
web::logfilter add *.-debug
web::log debug test
- web::logdest names
+ append res \n [web::logdest levels]
} {logdest2 *.alert-debug
+logdest3 *.alert-debug
+logdest0 *.alert-debug
+logdest1 *.alert-debug
+logdest2 *.alert-debug
logdest3 *.alert-debug
logdest0 *.alert-debug
logdest1 *.alert-debug}
---------------------------------------------------------------------
To unsubscribe, e-mail: websh-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: websh-cvs-help@tcl.apache.org