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