~vcs-imports/qemu/git

« back to all changes in this revision

Viewing changes to cutils.c

  • Committer: pbrook
  • Date: 2006-10-22 00:18:54 UTC
  • Revision ID: git-v1:e6e5906b6e0a81718066ca43aef57515026c6624
ColdFire target.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2196 c046a42c-6fe2-441c-8c8c-71466251a162

Show diffs side-by-side

added added

removed removed

Lines of Context:
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 "qemu-common.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
 
}
84
 
 
85
 
time_t mktimegm(struct tm *tm)
86
 
{
87
 
    time_t t;
88
 
    int y = tm->tm_year + 1900, m = tm->tm_mon + 1, d = tm->tm_mday;
89
 
    if (m < 3) {
90
 
        m += 12;
91
 
        y--;
92
 
    }
93
 
    t = 86400 * (d + (153 * m - 457) / 5 + 365 * y + y / 4 - y / 100 + 
94
 
                 y / 400 - 719469);
95
 
    t += 3600 * tm->tm_hour + 60 * tm->tm_min + tm->tm_sec;
96
 
    return t;
97
 
}
98
 
 
99
 
void *get_mmap_addr(unsigned long size)
100
 
{
101
 
    return NULL;
102
 
}
103
 
 
104
 
void qemu_free(void *ptr)
105
 
{
106
 
    free(ptr);
107
 
}
108
 
 
109
 
void *qemu_malloc(size_t size)
110
 
{
111
 
    return malloc(size);
112
 
}
113
 
 
114
 
void *qemu_mallocz(size_t size)
115
 
{
116
 
    void *ptr;
117
 
    ptr = qemu_malloc(size);
118
 
    if (!ptr)
119
 
        return NULL;
120
 
    memset(ptr, 0, size);
121
 
    return ptr;
122
 
}
123
 
 
124
 
char *qemu_strdup(const char *str)
125
 
{
126
 
    char *ptr;
127
 
    ptr = qemu_malloc(strlen(str) + 1);
128
 
    if (!ptr)
129
 
        return NULL;
130
 
    strcpy(ptr, str);
131
 
    return ptr;
132
 
}