Bugtraq mailing list archives
Fast, efficient, limitless strings. In C.
From: mibsoft () mibsoftware com (Forrest J. Cavalier III)
Date: Tue, 21 Jul 1998 06:48:34 -0400
I have an allocated string library which I'll work on documenting and putting on a WWW page. It implements 4 key string allocation functions, and allows you to use the existing "standard" libc and other null-terminated string operations we all know (and love.) (I figured, what's the point of a string library, if you have to re-implement strchr, strstr, strspn, etc.) char *astrcpy(char **pasz,const char *src); /* mallocs or reallocs a buffer. */ char *astrn0cpy(char **pasz,const char *src,size_t len); /* Always stores a '\0' */ char *astrcat(char **pasz,const char *src); char *astrn0cat(char **pasz,const char *src,size_t len); void astrfree(char **pasz); /* or call free(pasz) */ There is some string tracking and "overallocation" to improve efficiency. In typical use, there is very little string moving. An added bonus: a "limitless" sprintf and fgets are also included. Retrofitting old code is almost as easy as writing new code, which would look like this.... char *pasz = 0; astrcpy(&pasz,getenv("SOME_BIG_STRING")); if (strstr(pasz,"bad_path")) { ..... } Licensing is BSD-style. (Free of charge for commercial and non-commercial use.) Header file documentation is decent right now, but I'd like to document things a bit better. It is ready for beta testing, grab astring.h (5K) and astring.c (27K) from http://www.mibsoftware.com/libmib/astring/ Please send comments and bug reports to me. Forrest J. Cavalier III Mib Software
Current thread:
- Fast, efficient, limitless strings. In C. Forrest J. Cavalier III (Jul 21)