Magellan Linux

Annotation of /tags/mkinitrd-6_1_3/loadinitrd/dietstubs.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 846 - (hide annotations) (download)
Mon May 4 18:51:23 2009 UTC (15 years ago) by niro
File MIME type: text/plain
File size: 3645 byte(s)
tagged 'mkinitrd-6_1_3'
1 niro 532 #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     }