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: