head 1.2; access; symbols str_init:1.1.1.1 str:1.1.1; locks; strict; comment @ * @; 1.2 date 99.11.22.18.02.51; author rse; state dead; branches; next 1.1; 1.1 date 99.11.22.17.29.12; author rse; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 99.11.22.17.29.12; author rse; state Exp; branches; next ; desc @@ 1.2 log @*** empty log message *** @ text @/* ** str_wrapper.c -- String Wrapper Functions ** ** ==================================================================== ** Copyright (c) 1999 Ralf S. Engelschall. All rights reserved. ** ** Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions ** are met: ** ** 1. Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** ** 2. Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** ** THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY ** EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RALF S. ENGELSCHALL OR ** ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ** STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED ** OF THE POSSIBILITY OF SUCH DAMAGE. ** ==================================================================== */ #include "str.h" /* * These functions resemble POSIX string(3). */ char *str_strcat(char *s, const char *append) { return NULL; } char *str_strncat(char *s, const char *append, size_t count) { return NULL; } char *str_strchr(const char *s, int c) { char span[2]; span[0] = (char)c; span[1] = NUL; return str_span(s, STR_FULL, span, STR_COMPLEMENT); } char *str_strrchr(const char *s, int c) { char span[2]; span[0] = (char)c; span[1] = NUL; return str_span(s, STR_FULL, span, STR_COMPLEMENT|STR_RIGHT); } size_t str_strspn(const char *s, const char *charset) { char *p; p = str_span(s, STR_FULL, charset, STR_COMPLEMENT); return (p-s); } size_t str_strcspn(const char *s, const char *charset) { char *p; p = str_span(s, STR_FULL, charset, STR_DEF); return (p-s); } int str_strcmp(const char *s1, const char *s2) { return str_compare(s1, s2, STR_SIZE_MAX, STR_DEF); } int str_strncmp(const char *s1, const char *s2, size_t count) { return str_compare(s1, s2, count, STR_DEF); } int str_strcasecmp(const char *s1, const char *s2) { return str_compare(s1, s2, STR_SIZE_MAX, STR_NOCASE); } int str_strncasecmp(const char *s1, const char *s2, size_t count) { return str_compare(s1, s2, count, STR_NOCASE); } char *str_strcpy(char *dst, const char *src) { return NULL; } char *str_strncpy(char *dst, const char *src, size_t count) { return NULL; } size_t str_strlen(const char *s) { return str_len(s); } char *str_strpbrk(const char *s, const char *charset) { return NULL; } char *str_strsep(char **stringp, const char *delim) { return NULL; } char *str_strstr(const char *big, const char *little) { return str_find(big, little); } char *str_strtok(char *s, const char *delim) { return NULL; } /* * The two POSIX snprintf(3) and vsnprintf(3) style * functions which are based on str_vformat(3). */ static int str_snprintf_flush( str_format_t *out_handle) { /* * if the buffer fills we have to abort immediately, there is no way * to "flush" an str_snprintf... there's nowhere to flush it to. */ return -1; } int str_snprintf( char *buf, size_t len, const char *format, ...) { int rc; va_list ap; str_format_t handle; if (len == 0) return 0; handle.curpos = buf; handle.endpos = buf + len - 1; handle.data = NULL; va_start(ap, format); rc = str_vformat(str_snprintf_flush, &handle, format, ap); va_end(ap); *(handle.curpos) = NUL; return (rc == -1) ? len : rc; } int str_vsnprintf( char *buf, size_t len, const char *format, va_list ap) { int rc; str_format_t handle; if (len == 0) return 0; handle.curpos = buf; handle.endpos = buf + len - 1; handle.data = NULL; rc = str_vformat(str_snprintf_flush, &handle, format, ap); *(handle.curpos) = NUL; return (rc == -1) ? len : rc; } @ 1.1 log @Initial revision @ text @@ 1.1.1.1 log @ @ text @@