File:  [Qemu by Fabrice Bellard] / qemu / cutils.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:44:47 2018 UTC (18 months, 3 weeks ago) by root
Branches: qemu, MAIN
CVS tags: qemu0090, HEAD
qemu 0.9.0

    1: /*
    2:  * Simple C functions to supplement the C library
    3:  * 
    4:  * Copyright (c) 2006 Fabrice Bellard
    5:  *
    6:  * Permission is hereby granted, free of charge, to any person obtaining a copy
    7:  * of this software and associated documentation files (the "Software"), to deal
    8:  * in the Software without restriction, including without limitation the rights
    9:  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   10:  * copies of the Software, and to permit persons to whom the Software is
   11:  * furnished to do so, subject to the following conditions:
   12:  *
   13:  * The above copyright notice and this permission notice shall be included in
   14:  * all copies or substantial portions of the Software.
   15:  *
   16:  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   17:  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   18:  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
   19:  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   20:  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   21:  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   22:  * THE SOFTWARE.
   23:  */
   24: #include "vl.h"
   25: 
   26: void pstrcpy(char *buf, int buf_size, const char *str)
   27: {
   28:     int c;
   29:     char *q = buf;
   30: 
   31:     if (buf_size <= 0)
   32:         return;
   33: 
   34:     for(;;) {
   35:         c = *str++;
   36:         if (c == 0 || q >= buf + buf_size - 1)
   37:             break;
   38:         *q++ = c;
   39:     }
   40:     *q = '\0';
   41: }
   42: 
   43: /* strcat and truncate. */
   44: char *pstrcat(char *buf, int buf_size, const char *s)
   45: {
   46:     int len;
   47:     len = strlen(buf);
   48:     if (len < buf_size) 
   49:         pstrcpy(buf + len, buf_size - len, s);
   50:     return buf;
   51: }
   52: 
   53: int strstart(const char *str, const char *val, const char **ptr)
   54: {
   55:     const char *p, *q;
   56:     p = str;
   57:     q = val;
   58:     while (*q != '\0') {
   59:         if (*p != *q)
   60:             return 0;
   61:         p++;
   62:         q++;
   63:     }
   64:     if (ptr)
   65:         *ptr = p;
   66:     return 1;
   67: }
   68: 
   69: int stristart(const char *str, const char *val, const char **ptr)
   70: {
   71:     const char *p, *q;
   72:     p = str;
   73:     q = val;
   74:     while (*q != '\0') {
   75:         if (toupper(*p) != toupper(*q))
   76:             return 0;
   77:         p++;
   78:         q++;
   79:     }
   80:     if (ptr)
   81:         *ptr = p;
   82:     return 1;
   83: }

unix.superglobalmegacorp.com