Paul D. Smith wrote:
Hi all;

I'm working on "const-ifying" my GNU package, now that I've finally
taken the leap and abandoned support for K&R compilers.

One thing I've discovered is that there are a number of places in my
code where strings are written to ONLY to stick a nul character to end a
string, so that the code can then use the normal string functions like
strchr() etc.

In other words, a buffer and a length are passed to a function, and the
function will save the character at buf[length] then replace it with
'\0', then proceed to parse the buffer using str*() functions.  After
it's done the function replaces the saved character.


I'd really like to change this so that it's not necessary to set '\0',
preferably without making a local copy of the buffer (for efficiency's
sake) and doing that means abandoning the standard str*() functions.

I could use the length, with strn*() functions (although many are
missing obviously).  But the problem there is I need to keep updating
the length as I move through the buffer, which is a drag.


I'd much prefer to keep a pointer to the end of the buffer: this won't
change so it doesn't need to be managed.  For example, something like:

    char *strpchr(const char *str, const char *endp, int c);

or whatever.

Of course, there aren't any standard str*() or mem*() functions that I'm
aware of that use an end pointer instead of a length.

Are there any such functions in GLIB or similar?  Do people know of
similar functions in other OS's etc.?  If not, and I wanted to think
about creating some, what kind of naming convention would be
appropriate?  I thought of strp*() but I don't know.

Just curious...

man stpcpy


_______________________________________________
Autoconf mailing list
Autoconf@gnu.org
http://lists.gnu.org/mailman/listinfo/autoconf

Reply via email to