OSSP CVS Repository

ossp - Check-in [4876]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 4876
Date: 2004-Nov-28 14:54:13 (local)
2004-Nov-28 13:54:13 (UTC)
User:rse
Branch:
Comment: cleanup TODO file
Tickets:
Inspections:
Files:
ossp-pkg/cfg/TODO      1.5 -> 1.6     12 inserted, 212 deleted

ossp-pkg/cfg/TODO 1.5 -> 1.6

--- TODO 2004/11/27 19:44:03     1.5
+++ TODO 2004/11/28 13:54:13     1.6
@@ -10,224 +10,24 @@
 
   o finish/fix implementation of cfg_node_select()
   o implement cfg_node_find()
-  o fix internal linkage with "left sibling" pointer
   o support for prefixes of all non-static symbols to better support embedding
   o finish cfg.pod manual page (function description!)
   o add ts-based test suite
+  o cleanup: token vs. option/argument nomenclature
+
+  CANDO
+
+  o Problem: \x00 oder \x{00} results in NUL-terminator, so better use ptr+len instead?
+  o optimize internal linkage with an additional "left sibling" pointer?
   o add line tracking support
   o add pre-processor with at least includes
-  o add config tree verification!
+  o add config tree syntax verification!
   o cfg.tok: in scanner: use an combination of dynamic buffer and atomic
     symbol/token sub-library to allow first tokens of mostly arbitrary
     size and then to store the tokens redundancy-free.
-  o named parameters [--]name=value (options)
-- token vs. argument nomenclature
-- arguments/options vs. just token
-
-  ==================================================================================
-
-- Problem: \x00 oder \x{00} wird zu NUL-terminator -> use ptr+len instead
-- caStr/cpStr durch yyless/yymore??
-- syntax verification
-- command line query tool
-- error checking in scanner?
-- OSSP ex support
-- wieso geht sample.cfg nicht als Arg bei "make check"?
-
-- newline in error message
-$ ./cfg_test sample2.cfg
-ERROR: <line 7, column 1: `1b;
-<}> quu'>
-
-- cfg_t
-
-rewrite-uri <regex> <subst> { <rewrite-cond> }
-rewrite-uri ^/(.*) /path/$1 --redirect=permanent q{
-    %{SOURCE} != "x"
-};
-
-
-Directory [--foo=A]
-
-Argument:
-  - type:
-    - keyword ("foo") via name
-    - option ("--foo=BAR") via name & regex
-    - argument ("foo") via regex
-  - amount:
-    - 1
-    - 0/1  ?
-    - 0..n *
-    - 1..n +
-  - location:
-    - by position
-    - by name
-  - lookup via:
-    - name
-    - position
-    - regex match
-
-foo   * bar
-foo   = bar|quux|...
-foo   (bar baz quux)
-
-foo  ::= bar*         ;   kleene closure
-foo  ::= bar|baz|quux ;   union
-foo  ::= bar baz quux ;   concatenation
-
-foo  ::= {foo;...}    ;   sequence of ...
-foo  ::= (...)        ;   grouping
-foo  ::= "bar"        ;   fixed terminal
-foo  ::= /bar/        ;   regex terminal
-foo  ::= <A>          ;   arbitrary argument
-foo  ::= <O>          ;   arbitrary option
-
-SEQ ::= "{" DIR DIR* "}"
-DIR ::= TOK (" " TOK)* ";"
-TOK ::= ...
-
-SEQ ::= DIR*     SEQ(dir,dir,...)
-DIR ::= TOK+     DIR(tok,tok,...)
-TOK ::= string   "..."
-
-config        ::= SEQ(directory|user|rewrite|access)
-directory     ::= DIR("directory",<O>*,<A>)
-dir_options   ::=
-user          ::= DIR("user",/^[a-z]$/)
-rewrite       ::=
-access        ::= "access" ("allow"|"deny"):action SEQ(access_list):acl
-access_list   ::= m/^!?%{ID}$/
-
-acl           ::= "acl" TOK:name acl_list
-acl_list      ::= SEQ(acl_entry)
-acl_entry     ::= acl_action "from" net-addr:src "to" net-addr:dst
-acl_action    ::= "allow"|"deny"
-net_addr      ::= net_hostname | net_ipv4addr | net_ipv6addr
-
-sequence all {
-    directive --class 1;
-};
-directive --class 1 "foo" {
-    option "bar" --occur=1
-};
-
----------------------------------------------------------------------------
-
-foo on;
-bar /bla {
-    foo off;
-    baz --fuck {
-        b1; b2 --nase=baer; b3; b4; b5;
-    } --fuck2;
-};
-quux a1 a2 a3 a4;
-quux;
-
----------------------------------------------------------------------------
-
-sequence ROOT {
-    directive foo;
-    directive bar;
-    directive quux --count=1:oo;
-};
-sequence bar-seq {
-    directive foo --count=0:1;
-    directive baz --count=1:oo;
-};
-directive foo {
-    token - on|off|yes|no;
-};
-directive bar {
-    token path /.*;
-    sequence bar-seq;
-};
-directive baz {
-    option fuck;
-    option fuck2;
-    sequence {
-        directive foo {
-            option nase (baer|hugo);
-            option foo [0-9];
-            token ip-address;
-        };
-    };
-};
-directive quux {
-    token --count=0:oo a.*;
-};
-token ip-address b1|b2|b3|b4|b5;
-
--------------------------------------------------------------------------------
-
-<config>     ::= "sequence" <count>? <name>;
-               | "sequence" <count>? <name>? "{" <directive>* "}";
-<directive>  ::= "directive" <token-count>? <name>;
-               | "directive" <token-count>? <name>? "{" <option>* <token>+ };
-<option>     ::= "option" <name> <regex>?;
-<token>      ::= "token" <name>? <regex>;
-<count>      ::= /^(\+|\*|\?|[0-9]+,[0-9]*|[0-9]*,[0-9]+|[0-9]+)$/
-<name>       ::= /^[a-zA-Z][a-zA-Z0-9_.-]*$/
-<regex>      ::= ...
-
--------------------------------------------------------------------------------
-
-sequence ROOT {
-    directive * "directive" {
-
-    directive * token-1 {
-        token token "token";
-        token name  /^[a-zA-Z][a-zA-Z0-9_.-]*$/;
-        token regex /^.+$/;
-    }
-};
-
--------------------------------------------------------------------------------
-
-directive token {
-    opt1      { /.../ opt2=/.../ } {
-    directive { /^token$/ };
-    name      { m/.../; m/^[a-zA-Z][a-zA-Z0-9_.-]*$/ } ?;
-    name      { m/(...|[a-zA-Z][a-zA-Z0-9_.-]*$)/ } ?;
-    regex     { m/^.+$/ };
-};
-directive acl   { directive=/^acl$/ addr=/^...|...$/+ };
-
--------------------------------------------------------------------------------
-
-a?b((c|d)+e)?f
-
-A m/a/ ?
-B m/b/
-{
-    {
-        C m/c/ ;
-        D m/d/
-    } +
-    E m/e/
-} ?
-F f
-
-<directive-match> ::= <token-match>+
-<token-match> ::= <name>? <regex> <quant>?
-
--------------------------------------------------------------------------------
-
-<config>     ::= "sequence" <count>? <name>;
-               | "sequence" <count>? <name>? "{" <directive>* "}";
-<directive>  ::= "directive" <name>;
-               | "directive" <name>? "{" <options> "}" "{" <tokens> "}";
-
-<options>     ::= <tok-match>+
-<tokens>      ::= <dir-match>+
-
-<dir-match>   ::= <tok-match>+
-<tok-match>   ::= <name>? <node-match> <quant>?
-<node-match>  ::= "{" <dir-match> "}" | <regex>
-
-<option>     ::= "option" <name> <regex>?;
-<token>      ::= "token" <name>? <regex>;
-
-<count>      ::= /^(\+|\*|\?|[0-9]+,[0-9]*|[0-9]*,[0-9]+|[0-9]+)$/
-<name>       ::= /^[a-zA-Z][a-zA-Z0-9_.-]*$/
-<regex>      ::= ...
+    alternative: replace caStr/cpStr durch yyless/yymore usage??
+  o named parameters [--]name=value (options)??
+  o command line query tool (based on cfg_test.c)
+  o optional OSSP ex support
+  o more error checking in scanner?
 

CVSTrac 2.0.1