12-06-15 dssopt.c: fix bug that failed to provide closing ]
12-05-31 dssopt.c: handle optegt() style descriptions
12-05-15 cx.h: add CX_DEPRECATED
12-05-15 cxopen.c: handle nested structs
12-02-29 cxopen.c: add "hex" details for external buffer representation
11-10-07 dssopen.c: use generic dll_lib() to load methods
11-09-11 cxmap.c: fix cxsub() to cast <=> string if necessary
11-09-11 add <MAP><PART><EDIT>ed-style-substitute</></></>
11-09-11 dssprintf.c: add edit=<del>from<del>to<del>[flags]
11-09-11 cxopen.c: add edit() builtin
11-09-10 cxopen.c: add cxcvt()
11-09-07 dssprintf.c: fix if/else nesting -- ouch
11-08-22 add cxsizeof()
11-08-22 add sizeof(var), typeof(var), type==type, type!=type
11-08-19 add DSS_BASE for base methods (with dynamic schemas)
11-08-19 dss-print.h: add --all to list name/value for all fields
11-08-18 cxeval.c: (cx->test&0x0100) enables code trace
11-06-21 cxcomp.c: fix back() on empty input stack logic
11-06-15 dssmisc.c: add "< expr-file" expression to dsscomp()
11-06-15 dss-scan.h: add "< list-of-files-file" argv to snan_beg()
11-06-15 dssopen.c: dsslib() scan invalid plugin is just a warning
10-05-04 dssopt.c: check for '[' usage in description, drop [+PATH?...]
10-05-01 cxopen.c: document string type format details
10-04-22 dssprintf.c: %(:details:)s for default %s details
10-04-22 dssopt.c: handle dss default method special cases
10-04-22 dssprintf.c: treat { %d %ld %lld %Ld } as intmax_t
10-04-22 add (type)var and (type)lib::fun() casts
10-04-22 add lib::fun and lib::type plugin lib bindings
10-04-22 fix unary ! logic bugs
10-04-22 add Dsslib_t.variables variable/function table
10-04-21 dssprintf.c: allow expressions in %(...)c
10-04-15 add string=>number CX_CAST callout for stringvar op number
10-04-15 add lazy lookup for self-describing data { e.g. xml json }
10-04-08 dssopen.c: name=="method::..." is schema here doc
08-06-24 dss.h: add per-Dssfile_t vm
08-06-17 cx.h: add Cxtype_t* arg to Cxmatchexec_f for delayed eval
08-05-08 cxopen.c: fix number_external() width logic
07-11-28 cxcomp.c,cxmap.c: fix num=>str cast logic
07-10-26 cxcomp.c: fix s="S"; print(s,s) cast bug
07-10-25 cxcomp.c: pretty up CX_DEBUG instruction code trace
07-10-01 dss.h: add void* Dssfile_t.caller caller defined handle
07-09-27 cx.h: add CX_HEADER_INIT for sun4 K&R
07-09-24 cx.h: add Cxvariable_t.header.index set by cxaddvariable()
07-09-21 dss-return.h: document it via return_beg() -- doh
07-09-20 dssopen.c: fix dss var initialization base type loop
07-09-06 dssopen.c: add dss-return.h
07-09-06 cxcomp.c: handle ()?{}:{...}
07-09-05 cxopen.c,cxcomp.c: handle (<string> op <fundamental-integer>)
07-04-02 dssfile.c: handle empty compressed file peek
07-01-17 dssfile.c: sfdcpzip() => sfdczip()
06-12-04 dssopt.c: add full type description to dssopt()
06-10-11 add sfstruse() error checks
06-02-14 dss.h: always __EXPORT__ dss_lib()
06-02-02 dssopt.c,dss-print.h: add \fprint\f default print format
05-09-14 dssopen.c: prevent libraries dict double queue insert
05-05-09 cx.h: add CX_QUOTEALL
05-03-08 dss.h: add dssstatic() for static Dsslib_t loading
04-10-20 dss.h: add dssget() dsstype() dssvariable() dsssave() dssdrop()
dss.h: add Dssformat_t.savef Dssformat_t.dropf
dss.h: add Dsstype_t Dssvariable_t
04-10-11 dss.h: add Dssformat_t.seekf, dssftell(), dssfseek()
dsslib.h: add Dssfile_t.seekf, dss_no_f*()
dssfile.c: add dss_no_f*()
04-08-24 tag.c: fix malformed input 0 pointer deref
04-05-19 tag.h: add Tagframe_t.attr and TAG_ATTR_conv
04-05-12 dss.h: add DSS_FORCE
04-05-06 cxopen.c: fmtquote() possibly binary message data
04-05-04 cxopen.c: number_internal: \0 => 0 is ok
03-09-23 add dss.file,dss.format,dss.offset,dss.record
03-09-22 cxopen.c: {library::query ...} searches for query in library
03-09-03 dssopen.c: dsslib() separator expanded to [,\t\r\n]
03-08-11 dssprintf.c: add %(field:quote=qb:endquote=qe:shell:escape:opt:wide)s
dssprintf.c: check variable/type format for ll hints
cx.h: add CX_STRING|CX_NUL for string that may contain '\0'
tag.c: fix tag data leading and trailing space removal
03-08-08 tag.c: handle &#00; values
dss-scan.h: dssfopen() errors ok, will be caught at exit time
03-05-28 cxopen.c: check format.code and do the map in cxcast()
03-05-14 dss.h: add dssformat() macro
03-05-05 dss-compress.h: add bzip docs
03-04-30 dssprintf.c: check for printf io errors -- duh
03-04-29 cxcomp.c: fix stack depth logic to include function formal arguments
03-04-15 dssprintf.c: fix signed/unsigned overflow check
03-04-05 cxmap.c: default delimiters: read { | + }, write { | }
cxcomp.c: propagate parse() var for string conversion
dssprintf.c: avoid possible floating point underflow/overflow
03-03-27 dssprintf.c: verify that each format spec has (variable)
03-02-28 cxcomp.c: handle (foo)||(bar)
03-02-21 cx.h: add Cxvariable_t.Cxarray_t and Cxvariable_t.Cxstructure_t
dssprintf.c: catch omitted format char
03-02-20 cx.h: add Cxformat_t.fixedpoint
dssopt.c: add method name+description to fields output
03-02-19 dss.h,dsstags.c: add <PRINT>format</> for default {print} format
03-02-18 cxopen.c: fix externalf buffer extension
03-02-17 dssfread.c: dssfread() file->flags|=DSS_FILE_ERROR on readf error
03-02-14 dssopen.c: dss head query should not be parent
cxcomp.c: peek() now skips over isspace()
cx.h: add Cxtype_t.Cxtype_t*fundamental for fundamental representation
03-02-11 cxopen.c: change cx em and rm from Vmbest to Vmlast
03-02-11 cxeval.c: execute() optimizations
03-02-07 add Cxpart_t.type and <MAP><ITEM><PART><TYPE>
tag.c: rework <#TABLE#> to handle embedded <#INCLUDE#>
03-02-06 dss.h,dssopen.c: add dssrun(), split static queries into dss-*.h
03-02-05 dssfile.c: (*identf)() < 0 means reject input file
03-01-28 cx.h: add Cxtype_t.Cxmember_t* for member info ala Cxmatch_t
cx.h: add Cxtype_t.Cxreference_t*
03-01-27 cxopen.c: use <ast.h> base64encode()/base64decode()
03-01-25 cx.h: add Cxformat_t.description for format details
cx.h: change cxnum2str() prototype for error detection -- duh
03-01-24 cx.h: cxnumber() => cxisnumber() etc.
03-01-22 cxopen.c,cxcomp.c: add buffer type relational ops
03-01-21 cx.h,dss.h: add Cxdisc_t.locationf and cxlocation() for Cxdisc_t.errorf
cxopen.c: add fundamental type internalf/externalf -- oops
03-01-15 cx.h: add Cxtype_t.Cxmatch_t callouts for type specific matching
03-01-14 Cxexternal_f now returns <0 on error, > size on insufficient size
03-01-12 dss.h: add Dssstate_t.file, Dssfile_t.offset for message context
03-01-11 cx.h,cxmap.c: finish external edit support
03-01-08 cx.h: add Cxquery_t.method pattern to match caller method
03-01-07 cx.h: Cxvariable_. member=>members, added member type
03-01-06 cxcomp.c: list() now handles interpreted cx expressions
03-01-04 cxcomp.c,cx.h: add ?: composition op, child=>pass|fail sibling=>next
03-01-02 cxcomp.c: parent now set by defaults()
02-12-25 cxcomp.c: fix unbalanced (...) message
cx.h: Cxvariable_t.operand.type => Cxvariable_t.type
02-12-24 cxopen.c: cxbase(),cxnumber(),cxstring(): add
cxeval.c: cxbeg() and cxend() now check Cxexpr_t.begun
02-12-20 add <METHOD>name</> to pass remaining tags to name method
add <COMPRESS>name</> and Dssmeth_t.compress for preferred {compress}
02-12-18 add Cxdisc_t.loadf; meth==foo checks dss:foo.dss as last resort
cxbeg() calls tail first; cxend() calls head first
02-12-17 all regression tests pass after reorganization
02-12-12 reorganize local vs. global state : only variables are dss/cx local
02-12-10 add query composition and rename src to reflect changes
02-12-07 cxparse.c: change dynamic query syntax to { name opts args >out }
cxparse.c: handle dynamic and interpeted query composition
02-12-04 cxparse.c: use format.map for constant folding in code()
cxeval.c: fix instruction trace long double numeric output format
dssfile.c: fstat() file to double check sfsize()==0
02-12-02 cx.h,cxmap.c: change cxstr2num() to all error detection -- novel
cxmap.c: add CX_IGNORECASE, <IGNORECASE>1</>
02-11-28 dss.h: Dssident_f takes Dssfile_t* arg
dsslib.h: add skip and ident to Dssfile_t for Dssident_f
tag.h,tag.c: reorder visit arg, add handle arg to avoid disc clash
02-11-27 cx.h: add CX_BINARY to mark binary representation
split dsslib.c info dssopen.c dssfile.c dssprintf.c dssmisc.c
02-11-26 dsslib.c,cxopen.c: add a few more floating=>signed=>unsigned casts
02-11-25 finally give in to Dssformat_t instead of Dsstype_t
02-11-22 dss.h: add DSS_ID, fix dss_lib() export
tag.h: add Tagdisc_t.id for pathfind()
cx.h: export cxinitmap()
dsslib.c: add sfdcpzip() error check -- how novel
02-11-21 tag.c: handle <#INCLUDE#>path</> and <#TABLE#>path</> closing </>
02-11-20 move support libraries to dsslibs dir
02-11-19 opaque/opaque.c: add opaque method
dssmagic.c: magic support for opaque data
dss.h: add variables to Dsslib_t, add dssadd()
dss.h: DSS_STATIC for static method link
02-11-18 dsslib.c: drop dss_init(), add libraries to Dsslib_t
dsslib.c: drop Dss_t* arg from dsslib(), change dssadd() to dssload()
02-11-16 cx/cxeval.c: set optget() discipline for query \findex\f
02-11-15 flat/flat.c: snarf cdb flat record code
cx dynamic queries now defined via dsslib()/dss_lib()
02-11-14 types/num_t.c: add numeric encoding support
02-11-12 finally fix cxvariable() . references for dssprintf()
add <NAME><DESCRIPTION><IDENT> nop's for all top level tag input
02-10-31 switch to XML tag specifications (with self documentation)
02-10-17 dsslib.c: add generated methods to the list of all methods
02-10-15 flat/flat.c: add initial XML flat file description support
02-10-11 netflow: add ns_t start,end nanoseconds since the epoch
02-10-09 bgp-ipma.c: add
dsslib.c: fix printf double -> integer cast bug when sign bit set
02-09-30 text/text.c: add ipadd_t,time_t: really need a "struct" method
02-09-24 netflow/flow-dump.c: implement dumpfwrite()
bgp/bgp.prt,netflow/netflow.prt: move from src/cmd/dss
02-09-11 cx: add Cxquery_t,Cxframe_t and support functions for dll queries
cx: change Cxoperand_t keep boolean to refs count
cx/cxparse.c: work around sgi cc page boundary bug
pt: switch from vm region (16K) per table to malloc-per-entry
lsa: fix (int) pointer cast that truncated on 64 bit arch
lsa: use fmttime(%K) to list dates
02-09-05 Makefile: optimization bug seems to be in sol*.sun4, not just sol7
02-08-29 dsslist(): no dss_init() missing error message when scanning for dlls
02-08-22 dss,cx: eliminate inter-object globals for darwin dlls
02-08-20 cx/cxopen.c: drop cxvmresize; use ast vmresizef instead
lsa/*: add $pragma prototyped for sun4
02-08-19 cx/cxparse.c: handle char const operands on left and right
02-08-14 dss.h: add dss_init() prototype for static method links
02-08-12 lsa: add
flat: drop until different from text method
dsslib.h: install for independent method dlls
02-08-11 cx/cxopen.c: add cxscope() to push/pop scopes
02-08-09 cx/cxparse.c: cxvariable() now reports "undefined variable"
02-08-08 cx/cxparse.c: handle type1->base==type2->base callout
cx/cxparse.c: add /.../ quotes strings (already bowed to =~ and !~)
02-08-07 cx: add cxfree(), cxtell(), cxvmresize()
bgp/bgp.h: add Bgpredisc_t, Bgperror_f, Bgpreresize_f
02-08-01 cx/cxvariable.c: set reference value type
dss_init: now 3 args, second is option string
02-07-31 dsslib.c: all methods now dlls; dsslist() searchs PATH
02-07-25 bgp/bgpre.c: fix must logic
02-07-19 dsslib.c: dsscomp() now pops cx input stream to previous state
cx/cxopen.c: fix =~ typo that checked for CX_EQ instead of CX_MATCH
02-06-26 dsslib.c: add shared lib method dss_init() hook
02-06-19 cxopen.c: add default number<=>string conversions for base==number
02-06-18 netflow: split into { dump fixed flat } method types
02-06-14 dss.h: add dssfopen() Dssflags_t arg; DSS_FILE_READ/DSS_FILE_WRITE
cx: add Cxreference_t for structure member references
dssprintf: avoid sfkeyprintf() by caching Dssformat_t
02-06-12 netflow: add
02-06-10 cx/cxparse.c: add vm arg for parse time internalf/externalf
bgp/bgp.c: add ipprefix_t==ipprefix_t callout
02-06-07 bgp-mrt.c: handle long prefix field line split
02-06-03 bgp.c: add "origination" for data time
02-06-02 bgp.c: fix ipaddr_t/ipprefix_t inequality overloads
02-05-31 bgp-fixed.c: fix read swap
02-05-29 split library and command source
02-05-28 add { =~ !~ } to usage
advertize { variable type meth-type } dictionaries
drop { itemf infof }
02-05-23 update for reworked cx type interface
02-04-04 add numeric field maps, -I, %include
02-04-03 update bgp fields
02-03-31 first working flat method
02-03-26 first working dssgrep with bgp method
02-03-19 snarf pta bgp and cx libraries for initial implementation