Contents of /tags/mkinitrd-6_1_3/loadinitrd/dietstubs.c
Parent Directory | Revision Log
Revision 846 -
(show annotations)
(download)
Mon May 4 18:51:23 2009 UTC (15 years, 4 months ago) by niro
File MIME type: text/plain
File size: 3645 byte(s)
Mon May 4 18:51:23 2009 UTC (15 years, 4 months ago) by niro
File MIME type: text/plain
File size: 3645 byte(s)
tagged 'mkinitrd-6_1_3'
1 | #include <errno.h> |
2 | #include <stdlib.h> |
3 | #include <string.h> |
4 | #include <stdio.h> |
5 | #include <setjmp.h> |
6 | #include <ctype.h> |
7 | #include <stdarg.h> |
8 | |
9 | struct glibc_stat { |
10 | long long st_dev; |
11 | unsigned short int __pad1; |
12 | long st_ino; |
13 | int st_mode; |
14 | int st_nlink; |
15 | int st_uid; |
16 | int st_gid; |
17 | long long st_rdev; |
18 | unsigned short int __pad2; |
19 | long st_size; |
20 | long st_blksize; |
21 | long st_blocks; |
22 | long st_atime; |
23 | unsigned long int __unused1; |
24 | long st_mtime; |
25 | unsigned long int __unused2; |
26 | long st_ctime; |
27 | unsigned long int __unused3; |
28 | unsigned long int __unused4; |
29 | unsigned long int __unused5; |
30 | }; |
31 | |
32 | static void stat_copy(struct stat * from, struct glibc_stat * to) { |
33 | to->st_dev = from->st_dev; |
34 | to->st_ino = from->st_ino; |
35 | to->st_mode = from->st_mode; |
36 | to->st_nlink = from->st_nlink; |
37 | to->st_uid = from->st_uid; |
38 | to->st_gid = from->st_gid; |
39 | to->st_rdev = from->st_rdev; |
40 | to->st_size = from->st_size; |
41 | to->st_blksize = from->st_blksize; |
42 | to->st_blocks = from->st_blocks; |
43 | to->st_atime = from->st_atime; |
44 | to->st_mtime = from->st_mtime; |
45 | to->st_ctime = from->st_ctime; |
46 | } |
47 | |
48 | int __xstat (int __ver, __const char *__filename, struct glibc_stat * sb) { |
49 | struct stat s; |
50 | int rc = stat(__filename, &s); |
51 | |
52 | if (!rc) stat_copy(&s, sb); |
53 | |
54 | return rc; |
55 | } |
56 | |
57 | int __lxstat (int __ver, __const char *__filename, struct glibc_stat * sb) { |
58 | struct stat s; |
59 | int rc = lstat(__filename, &s); |
60 | |
61 | if (!rc) stat_copy(&s, sb); |
62 | |
63 | return rc; |
64 | } |
65 | |
66 | int __fxstat (int __ver, int fd, struct glibc_stat * sb) { |
67 | struct stat s; |
68 | int rc = fstat(fd, &s); |
69 | |
70 | if (!rc) stat_copy(&s, sb); |
71 | |
72 | return rc; |
73 | } |
74 | |
75 | extern double strtod (__const char * __nptr, char ** __endptr); |
76 | |
77 | double __strtod_internal (__const char *__restrict __nptr, |
78 | char **__restrict __endptr, int __group) { |
79 | return strtod(__nptr, __endptr); |
80 | } |
81 | |
82 | |
83 | long int __strtol_internal(const char * nptr, char ** endptr, |
84 | int base, int group) { |
85 | return strtol(nptr, endptr, base); |
86 | } |
87 | |
88 | unsigned long int __strtoul_internal (__const char *__restrict __nptr, |
89 | char **__restrict __endptr, |
90 | int __base, int __group) __THROW { |
91 | return strtoul(__nptr, __endptr, __base); |
92 | } |
93 | |
94 | char * __strdup(const char * s) { |
95 | return strdup(s); |
96 | } |
97 | |
98 | void __assert_fail (__const char *__assertion, __const char *__file, |
99 | unsigned int __line, __const char *__function) { |
100 | fprintf(stderr, "%s:%d assertion failed in %s()\n", |
101 | __file, __line, __function); |
102 | abort(); |
103 | } |
104 | |
105 | int _setjmp(jmp_buf buf) { |
106 | return setjmp(buf); |
107 | } |
108 | |
109 | char * strcasestr(char * haystack1, char * needle1) { |
110 | char * haystack = strdup(haystack1); |
111 | char * needle = strdup(needle1); |
112 | char * chptr; |
113 | |
114 | for (chptr = haystack; *chptr; chptr++) *chptr = toupper(*chptr); |
115 | for (chptr = needle; *chptr; chptr++) *chptr = toupper(*chptr); |
116 | |
117 | chptr = strstr(needle, haystack); |
118 | if (!chptr) return NULL; |
119 | |
120 | return (chptr - haystack) + haystack1; |
121 | } |
122 | |
123 | int _IO_putc(char c, void * f) { |
124 | return putc(c, f); |
125 | } |
126 | |
127 | int _IO_getc(void * f) { |
128 | return getc(f); |
129 | } |
130 | |
131 | int __xmknod (int __ver, const char * path, unsigned int mode, |
132 | long long * dev) { |
133 | return mknod(path, mode, *dev); |
134 | } |
135 | |
136 | |
137 | /* this should print the name of the app, but how? probably in a global |
138 | somewhere (like env is) */ |
139 | void warn(char * format, ...) { |
140 | va_list args; |
141 | int err = errno; |
142 | |
143 | va_start(args, format); |
144 | |
145 | fprintf(stderr, "warning: "); |
146 | vfprintf(stderr, format, args); |
147 | fprintf(stderr, ": %s\n", strerror(err)); |
148 | |
149 | va_end(args); |
150 | |
151 | errno = err; |
152 | } |
153 | |
154 | void * __rawmemchr (void* s, int c) { |
155 | while (*(char *)s != c) |
156 | s++; |
157 | return s; |
158 | } |