~ubuntu-branches/ubuntu/hardy/klibc/hardy-updates

« back to all changes in this revision

Viewing changes to dash/system.c

  • Committer: Bazaar Package Importer
  • Author(s): Jeff Bailey
  • Date: 2006-01-04 20:24:52 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20060104202452-ec4v3n829rymukuv
Tags: 1.1.15-0ubuntu1
* New upstream version.

* Patch to fix compilation on parisc64 kernels.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2004
 
3
 *      Herbert Xu <herbert@gondor.apana.org.au>.  All rights reserved.
 
4
 *
 
5
 * Redistribution and use in source and binary forms, with or without
 
6
 * modification, are permitted provided that the following conditions
 
7
 * are met:
 
8
 * 1. Redistributions of source code must retain the above copyright
 
9
 *    notice, this list of conditions and the following disclaimer.
 
10
 * 2. Redistributions in binary form must reproduce the above copyright
 
11
 *    notice, this list of conditions and the following disclaimer in the
 
12
 *    documentation and/or other materials provided with the distribution.
 
13
 * 3. The name of the author may not be used to endorse or promote products
 
14
 *    derived from this software without specific prior written permission.
 
15
 *
 
16
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 
17
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
18
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
19
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 
20
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
21
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
22
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
23
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
24
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
25
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
26
 * SUCH DAMAGE.
 
27
 */
 
28
 
 
29
#ifndef HAVE_ISALPHA
 
30
#define isalnum _isalnum
 
31
#define iscntrl _iscntrl
 
32
#define islower _islower
 
33
#define isspace _isspace
 
34
#define isalpha _isalpha
 
35
#define isdigit _isdigit
 
36
#define isprint _isprint
 
37
#define isupper _isupper
 
38
#define isblank _isblank
 
39
#define isgraph _isgraph
 
40
#define ispunct _ispunct
 
41
#define isxdigit _isxdigit
 
42
#include <ctype.h>
 
43
#undef isalnum
 
44
#undef iscntrl
 
45
#undef islower
 
46
#undef isspace
 
47
#undef isalpha
 
48
#undef isdigit
 
49
#undef isprint
 
50
#undef isupper
 
51
#undef isblank
 
52
#undef isgraph
 
53
#undef ispunct
 
54
#undef isxdigit
 
55
#endif
 
56
 
 
57
#include <signal.h>
 
58
#include <string.h>
 
59
 
 
60
#include "error.h"
 
61
#include "output.h"
 
62
#include "system.h"
 
63
 
 
64
#ifndef HAVE_MEMPCPY
 
65
void *mempcpy(void *dest, const void *src, size_t n)
 
66
{
 
67
        return memcpy(dest, src, n) + n;
 
68
}
 
69
#endif
 
70
 
 
71
#ifndef HAVE_STPCPY
 
72
char *stpcpy(char *dest, const char *src)
 
73
{
 
74
        size_t len = strlen(src);
 
75
        dest[len] = 0;
 
76
        return mempcpy(dest, src, len);
 
77
}
 
78
#endif
 
79
 
 
80
#ifndef HAVE_STRCHRNUL
 
81
char *strchrnul(const char *s, int c)
 
82
{
 
83
        char *p = strchr(s, c);
 
84
        if (!p)
 
85
                p = (char *)s + strlen(s);
 
86
        return p;
 
87
}
 
88
#endif
 
89
 
 
90
#ifndef HAVE_STRSIGNAL
 
91
char *strsignal(int sig)
 
92
{
 
93
        static char buf[19];
 
94
 
 
95
        if ((unsigned)sig < NSIG && sys_siglist[sig])
 
96
                return (char *)sys_siglist[sig];
 
97
        fmtstr(buf, sizeof(buf), "Signal %d", sig); 
 
98
        return buf;
 
99
}
 
100
#endif
 
101
 
 
102
#ifndef HAVE_BSEARCH
 
103
void *bsearch(const void *key, const void *base, size_t nmemb,
 
104
              size_t size, int (*cmp)(const void *, const void *))
 
105
{
 
106
        while (nmemb) {
 
107
                size_t mididx = nmemb / 2;
 
108
                const void *midobj = base + mididx * size;
 
109
                int diff = cmp(key, midobj);
 
110
 
 
111
                if (diff == 0)
 
112
                        return (void *)midobj;
 
113
 
 
114
                if (diff > 0) {
 
115
                        base = midobj + size;
 
116
                        nmemb -= mididx + 1;
 
117
                } else
 
118
                        nmemb = mididx;
 
119
        }
 
120
 
 
121
        return 0;
 
122
}
 
123
#endif
 
124
 
 
125
#ifndef HAVE_SYSCONF
 
126
long sysconf(int name)
 
127
{
 
128
        sh_error("no sysconf for: %d", name);
 
129
}
 
130
#endif
 
131
 
 
132
#ifndef HAVE_ISALPHA
 
133
int isalnum(int c) {
 
134
        return _isalnum(c);
 
135
}
 
136
 
 
137
 
 
138
int iscntrl(int c) {
 
139
        return _iscntrl(c);
 
140
}
 
141
 
 
142
 
 
143
int islower(int c) {
 
144
        return _islower(c);
 
145
}
 
146
 
 
147
 
 
148
int isspace(int c) {
 
149
        return _isspace(c);
 
150
}
 
151
 
 
152
 
 
153
int isalpha(int c) {
 
154
        return _isalpha(c);
 
155
}
 
156
 
 
157
 
 
158
int isdigit(int c) {
 
159
        return _isdigit(c);
 
160
}
 
161
 
 
162
 
 
163
int isprint(int c) {
 
164
        return _isprint(c);
 
165
}
 
166
 
 
167
 
 
168
int isupper(int c) {
 
169
        return _isupper(c);
 
170
}
 
171
 
 
172
 
 
173
int isblank(int c) {
 
174
        return _isblank(c);
 
175
}
 
176
 
 
177
 
 
178
int isgraph(int c) {
 
179
        return _isgraph(c);
 
180
}
 
181
 
 
182
 
 
183
int ispunct(int c) {
 
184
        return _ispunct(c);
 
185
}
 
186
 
 
187
 
 
188
int isxdigit(int c) {
 
189
        return _isxdigit(c);
 
190
}
 
191
#endif