Magellan Linux

Contents of /tags/mkinitrd-6_2_0/loadinitrd/dietstubs.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 996 - (show annotations) (download)
Sun May 30 11:54:28 2010 UTC (13 years, 11 months ago) by niro
File MIME type: text/plain
File size: 3645 byte(s)
tagged 'mkinitrd-6_2_0'
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 }