Subversion Repositories Kolibri OS

Rev

Rev 6102 | Rev 6936 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1966 serge 1
/*
2
 *  linux/lib/string.c
3
 *
4
 *  Copyright (C) 1991, 1992  Linus Torvalds
5
 */
6
 
7
/*
8
 * stupid library routines.. The optimized versions should generally be found
9
 * as inline code in 
10
 *
11
 * These are buggy as well..
12
 *
13
 * * Fri Jun 25 1999, Ingo Oeser 
14
 * -  Added strsep() which will replace strtok() soon (because strsep() is
15
 *    reentrant and should be faster). Use only strsep() in new code, please.
16
 *
17
 * * Sat Feb 09 2002, Jason Thomas ,
18
 *                    Matthew Hawkins 
19
 * -  Kissed strtok() goodbye
20
 */
21
 
22
#include 
23
#include 
24
#include 
6934 serge 25
#include 
26
#include 
27
#include 
28
#include 
1966 serge 29
 
30
 
6934 serge 31
 
1966 serge 32
#ifndef __HAVE_ARCH_STRLCPY
33
/**
5270 serge 34
 * strlcpy - Copy a C-string into a sized buffer
1966 serge 35
 * @dest: Where to copy the string to
36
 * @src: Where to copy the string from
37
 * @size: size of destination buffer
38
 *
39
 * Compatible with *BSD: the result is always a valid
40
 * NUL-terminated string that fits in the buffer (unless,
41
 * of course, the buffer size is zero). It does not pad
42
 * out the result like strncpy() does.
43
 */
44
size_t strlcpy(char *dest, const char *src, size_t size)
45
{
46
    size_t ret = strlen(src);
47
 
48
    if (size) {
49
        size_t len = (ret >= size) ? size - 1 : ret;
50
        memcpy(dest, src, len);
51
        dest[len] = '\0';
52
    }
53
    return ret;
54
}
6102 serge 55
 
56
#ifndef __HAVE_ARCH_STRLCAT
57
/**
58
 * strlcat - Append a length-limited, C-string to another
59
 * @dest: The string to be appended to
60
 * @src: The string to append to it
61
 * @count: The size of the destination buffer.
62
 */
63
size_t strlcat(char *dest, const char *src, size_t count)
64
{
65
        size_t dsize = strlen(dest);
66
        size_t len = strlen(src);
67
        size_t res = dsize + len;
68
 
69
        /* This would be a bug */
70
        BUG_ON(dsize >= count);
71
 
72
        dest += dsize;
73
        count -= dsize;
74
        if (len >= count)
75
                len = count-1;
76
        memcpy(dest, src, len);
77
        dest[len] = 0;
78
        return res;
79
}
1966 serge 80
#endif
81
 
6102 serge 82
 
83
#endif
84