1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
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:
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: }