~ubuntu-branches/ubuntu/jaunty/texlive-bin/jaunty-security

« back to all changes in this revision

Viewing changes to build/source/libs/ncurses/ncurses/tinfo/strings.c

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Preining
  • Date: 2008-06-26 23:14:59 UTC
  • mfrom: (2.1.30 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080626231459-y02rjsrgtafu83yr
Tags: 2007.dfsg.2-3
add missing source roadmap.fig of roadmap.eps in fontinst documentation
(Closes: #482915) (urgency medium due to RC bug)
(new patch add-missing-fontinst-source)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
 * Copyright (c) 2000,2003 Free Software Foundation, Inc.                   *
 
3
 *                                                                          *
 
4
 * Permission is hereby granted, free of charge, to any person obtaining a  *
 
5
 * copy of this software and associated documentation files (the            *
 
6
 * "Software"), to deal in the Software without restriction, including      *
 
7
 * without limitation the rights to use, copy, modify, merge, publish,      *
 
8
 * distribute, distribute with modifications, sublicense, and/or sell       *
 
9
 * copies of the Software, and to permit persons to whom the Software is    *
 
10
 * furnished to do so, subject to the following conditions:                 *
 
11
 *                                                                          *
 
12
 * The above copyright notice and this permission notice shall be included  *
 
13
 * in all copies or substantial portions of the Software.                   *
 
14
 *                                                                          *
 
15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
 
16
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
 
17
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
 
18
 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
 
19
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
 
20
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
 
21
 * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
 
22
 *                                                                          *
 
23
 * Except as contained in this notice, the name(s) of the above copyright   *
 
24
 * holders shall not be used in advertising or otherwise to promote the     *
 
25
 * sale, use or other dealings in this Software without prior written       *
 
26
 * authorization.                                                           *
 
27
 ****************************************************************************/
 
28
 
 
29
/****************************************************************************
 
30
 *  Author: Thomas E. Dickey                                                *
 
31
 ****************************************************************************/
 
32
 
 
33
/*
 
34
**      lib_mvcur.c
 
35
**/
 
36
 
 
37
#include <curses.priv.h>
 
38
 
 
39
MODULE_ID("$Id: strings.c,v 1.5 2003/08/16 23:46:00 tom Exp $")
 
40
 
 
41
/****************************************************************************
 
42
 * Useful string functions (especially for mvcur)
 
43
 ****************************************************************************/
 
44
 
 
45
#if !HAVE_STRSTR
 
46
NCURSES_EXPORT(char *)
 
47
_nc_strstr(const char *haystack, const char *needle)
 
48
{
 
49
    size_t len1 = strlen(haystack);
 
50
    size_t len2 = strlen(needle);
 
51
    char *result = 0;
 
52
 
 
53
    while ((len1 != 0) && (len1-- >= len2)) {
 
54
        if (!strncmp(haystack, needle, len2)) {
 
55
            result = haystack;
 
56
            break;
 
57
        }
 
58
        haystack++;
 
59
    }
 
60
    return result;
 
61
}
 
62
#endif
 
63
 
 
64
/*
 
65
 * Initialize the descriptor so we can append to it.  Note that 'src' may
 
66
 * be a null pointer (see _nc_str_null), so the corresponding strcat and
 
67
 * strcpy calls have to allow for this.
 
68
 */
 
69
NCURSES_EXPORT(string_desc *)
 
70
_nc_str_init(string_desc * dst, char *src, size_t len)
 
71
{
 
72
    if (dst != 0) {
 
73
        dst->s_head = src;
 
74
        dst->s_tail = src;
 
75
        dst->s_size = len - 1;
 
76
        dst->s_init = dst->s_size;
 
77
        if (src != 0)
 
78
            *src = 0;
 
79
    }
 
80
    return dst;
 
81
}
 
82
 
 
83
/*
 
84
 * Initialize the descriptor for only tracking the amount of memory used.
 
85
 */
 
86
NCURSES_EXPORT(string_desc *)
 
87
_nc_str_null(string_desc * dst, size_t len)
 
88
{
 
89
    return _nc_str_init(dst, 0, len);
 
90
}
 
91
 
 
92
/*
 
93
 * Copy a descriptor
 
94
 */
 
95
NCURSES_EXPORT(string_desc *)
 
96
_nc_str_copy(string_desc * dst, string_desc * src)
 
97
{
 
98
    *dst = *src;
 
99
    return dst;
 
100
}
 
101
 
 
102
/*
 
103
 * Replaces strcat into a fixed buffer, returning false on failure.
 
104
 */
 
105
NCURSES_EXPORT(bool)
 
106
_nc_safe_strcat(string_desc * dst, const char *src)
 
107
{
 
108
    if (src != 0) {
 
109
        size_t len = strlen(src);
 
110
 
 
111
        if (len < dst->s_size) {
 
112
            if (dst->s_tail != 0) {
 
113
                strcpy(dst->s_tail, src);
 
114
                dst->s_tail += len;
 
115
            }
 
116
            dst->s_size -= len;
 
117
            return TRUE;
 
118
        }
 
119
    }
 
120
    return FALSE;
 
121
}
 
122
 
 
123
/*
 
124
 * Replaces strcpy into a fixed buffer, returning false on failure.
 
125
 */
 
126
NCURSES_EXPORT(bool)
 
127
_nc_safe_strcpy(string_desc * dst, const char *src)
 
128
{
 
129
    if (src != 0) {
 
130
        size_t len = strlen(src);
 
131
 
 
132
        if (len < dst->s_size) {
 
133
            if (dst->s_head != 0) {
 
134
                strcpy(dst->s_head, src);
 
135
                dst->s_tail = dst->s_head + len;
 
136
            }
 
137
            dst->s_size = dst->s_init - len;
 
138
            return TRUE;
 
139
        }
 
140
    }
 
141
    return FALSE;
 
142
}