Note that some of these are almost certainly better off in seperate libraries. Some are pretty high priority for the next stable version. I need a better priority ... but so far I've mainly been concerned with what was needed for vstr-1.0.0 Maybe During 1.0.x ------------------ . ____ make vstr_fmt.c faster ____ . vstr_spn_cstr_buf_fwd etc. . test len=0 on _sc_*() . read/write entire file with read_file/write_file . glibc printf tests ... enable all three forms of fmt for coverage? . examples/ex_relay . examples/chatserv . examples/ex_dnsd . examples/conf . Allow '-' filename, for stdin . restrict (speed) . autodetect linker-script options (build) . AM_CFLAGS (build) . timeval custom formatter (feature) . rfc2732 for ipv4/ipv6 addresses and port . Some way to say use a _BUF if we are subbing in a _BUF and use a _PTR/_REF otherwise. Or a way to say how much data can I add into this _BUF node (Ie. currently, is it a _BUF and does it have free space). (feature/speed) . malloc_bad might be able to be set when all of the functions have worked (Ie. position cache allocation used to fail) (testing). . comparison.html ... portability plus ... can you copy and paste the code ... or need a shared lib. (docs) . vstr_mov() doesn't move cache information. (speed) . Get rid of inet_ntop() ? (portability) . wcrtomb() doesn't exist on FreeBSD ... relies on LC_CTYPE (portability) . del() inline kills cache too easily ... make cb's extern inline and call directly. (speed) 1.2.x ----- . utf-8 character class, utf-8 searching etc. Misc ---- . Vstr_ref->ptr non const. but possibly never altered, kind of needed for free() calls *sigh* # This is all one feature, I think... vstr_ref* API needs a new external home. . Allocator - seperate library . _SEF type ... like a _REF but you can do substitution on it when ref == 1, splitting the node changes behaviour here so probably not worth it *sigh*. Could do a copy when you move it to a different Vstr string, but that doesn't really do much more then _BUF nodes. Although you could convert _BUF nodes to it on a copy, which might be worth it. Could put a double indirect _ref in there ... with the _ref for the Vstr string and the second for all strings ... then allow subs if the second == 1. Will do "strange" things on mmap() read/write areas on _conv_ functions as it's not obvious what it should/could do on expansion. . Vstr_lref which has a length? So we can implement... vstr_lref_*_malloc() vstr_lref_*_realloc() ...which will do the right thing if ref->ref == 1 ? (feature) This also implies some memory pool like semantics? (feature) Memory pools can kind of be done using a Vstr and adding the _REF nodes (mmap is hard ... as is sharing across strings). . VSTR_FLAG_PARSE_NUM_LOC_SEP . Add vstr_parse_double()/long_double() . vstr_conv_canon_path() Ie. /foo/bar/../abcd -=> /foo/abcd . http://burtleburtle.net/bob/hash/doobs.html .. vstr_x_hash ? vstr_x_hash_md5 vstr_x_hash_sha1 . vstr_x_pcre_* . _Bool ? . {S...:%s} for chopped strings to replace end with "...". . _conv_tr_buf_buf() ? ... Ie. vstr_conv_tr_buf_buf(s1, 1, s1->len, "\t\r", 2, " ?", 2) . _conv_sub_buf_buf() ? ... Ie. vstr_conv_sub_buf_buf(s1, 1, s1->len, "\t", 1, " ", 4) . Fast inline parsing of ints when using certain flags. . Add --with-libc=diet,host,klibc -- put into test framework. . vstr_add_fmt() internal cleanup to use struct blah {Vstr_fmt ... } . ASN.1 (International Standard 8824) . XDR ... rpc . More locale related stuff, incl. vstr_loc_ functions for cmp/srch/etc. . vstr_conv_encode_qp (quoted printable rfc2045.txt) . vstr_conv_encode_b64 (base64 rfc2045.txt)