diff options
-rw-r--r-- | libbb/Makefile.in | 4 | ||||
-rw-r--r-- | libbb/module_syscalls.c | 116 | ||||
-rw-r--r-- | libbb/syscalls.c | 113 |
3 files changed, 2 insertions, 231 deletions
diff --git a/libbb/Makefile.in b/libbb/Makefile.in index 44c7a9858..dae3c1213 100644 --- a/libbb/Makefile.in +++ b/libbb/Makefile.in | |||
@@ -32,14 +32,14 @@ LIBBB_SRC:= \ | |||
32 | hash_fd.c herror_msg.c herror_msg_and_die.c \ | 32 | hash_fd.c herror_msg.c herror_msg_and_die.c \ |
33 | human_readable.c inet_common.c inode_hash.c interface.c isdirectory.c \ | 33 | human_readable.c inet_common.c inode_hash.c interface.c isdirectory.c \ |
34 | kernel_version.c last_char_is.c llist_add_to.c login.c loop.c \ | 34 | kernel_version.c last_char_is.c llist_add_to.c login.c loop.c \ |
35 | make_directory.c mode_string.c module_syscalls.c mtab.c mtab_file.c \ | 35 | make_directory.c mode_string.c mtab.c mtab_file.c \ |
36 | my_getgrgid.c my_getgrnam.c my_getpwnam.c my_getug.c\ | 36 | my_getgrgid.c my_getgrnam.c my_getpwnam.c my_getug.c\ |
37 | my_getpwuid.c obscure.c parse_mode.c parse_number.c perror_msg.c \ | 37 | my_getpwuid.c obscure.c parse_mode.c parse_number.c perror_msg.c \ |
38 | perror_msg_and_die.c print_file.c get_console.c \ | 38 | perror_msg_and_die.c print_file.c get_console.c \ |
39 | process_escape_sequence.c procps.c pwd2spwd.c pw_encrypt.c qmodule.c \ | 39 | process_escape_sequence.c procps.c pwd2spwd.c pw_encrypt.c qmodule.c \ |
40 | read_package_field.c recursive_action.c remove_file.c \ | 40 | read_package_field.c recursive_action.c remove_file.c \ |
41 | restricted_shell.c run_parts.c run_shell.c safe_read.c safe_write.c \ | 41 | restricted_shell.c run_parts.c run_shell.c safe_read.c safe_write.c \ |
42 | safe_strncpy.c setup_environment.c simplify_path.c syscalls.c \ | 42 | safe_strncpy.c setup_environment.c simplify_path.c \ |
43 | trim.c u_signal_names.c vdprintf.c verror_msg.c \ | 43 | trim.c u_signal_names.c vdprintf.c verror_msg.c \ |
44 | vherror_msg.c vperror_msg.c wfopen.c xconnect.c xgetcwd.c \ | 44 | vherror_msg.c vperror_msg.c wfopen.c xconnect.c xgetcwd.c \ |
45 | xgethostbyname.c xgethostbyname2.c xreadlink.c xregcomp.c xgetlarg.c \ | 45 | xgethostbyname.c xgethostbyname2.c xreadlink.c xregcomp.c xgetlarg.c \ |
diff --git a/libbb/module_syscalls.c b/libbb/module_syscalls.c deleted file mode 100644 index a2ff5284a..000000000 --- a/libbb/module_syscalls.c +++ /dev/null | |||
@@ -1,116 +0,0 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* | ||
3 | * some system calls possibly missing from libc | ||
4 | * | ||
5 | * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
15 | * General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | * | ||
21 | */ | ||
22 | |||
23 | #include <stdio.h> | ||
24 | #include <errno.h> | ||
25 | #include <unistd.h> | ||
26 | #include <sys/syscall.h> | ||
27 | #include "libbb.h" | ||
28 | |||
29 | /* uClibc always supplies (possibly ENOSYS) versions of these functions. */ | ||
30 | #ifndef __UCLIBC__ | ||
31 | |||
32 | /* These syscalls are not included in very old glibc versions */ | ||
33 | int delete_module(const char *name) | ||
34 | { | ||
35 | #ifndef __NR_delete_module | ||
36 | #warning This kernel does not support the delete_module syscall | ||
37 | #warning -> The delete_module system call is being stubbed out... | ||
38 | errno=ENOSYS; | ||
39 | return -1; | ||
40 | #else | ||
41 | return(syscall(__NR_delete_module, name)); | ||
42 | #endif | ||
43 | } | ||
44 | |||
45 | int get_kernel_syms(__ptr_t ks) | ||
46 | { | ||
47 | #ifndef __NR_get_kernel_syms | ||
48 | #warning This kernel does not support the get_kernel_syms syscall | ||
49 | #warning -> The get_kernel_syms system call is being stubbed out... | ||
50 | errno=ENOSYS; | ||
51 | return -1; | ||
52 | #else | ||
53 | return(syscall(__NR_get_kernel_syms, ks)); | ||
54 | #endif | ||
55 | } | ||
56 | |||
57 | /* This may have 5 arguments (for old 2.0 kernels) or 2 arguments | ||
58 | * (for 2.2 and 2.4 kernels). Use the greatest common denominator, | ||
59 | * and let the kernel cope with whatever it gets. Its good at that. */ | ||
60 | int init_module(void *first, void *second, void *third, void *fourth, void *fifth) | ||
61 | { | ||
62 | #ifndef __NR_init_module | ||
63 | #warning This kernel does not support the init_module syscall | ||
64 | #warning -> The init_module system call is being stubbed out... | ||
65 | errno=ENOSYS; | ||
66 | return -1; | ||
67 | #else | ||
68 | return(syscall(__NR_init_module, first, second, third, fourth, fifth)); | ||
69 | #endif | ||
70 | } | ||
71 | |||
72 | int query_module(const char *name, int which, void *buf, size_t bufsize, size_t *ret) | ||
73 | { | ||
74 | #ifndef __NR_query_module | ||
75 | #warning This kernel does not support the query_module syscall | ||
76 | #warning -> The query_module system call is being stubbed out... | ||
77 | bb_error_msg("\n\nTo make this application work, you will need to recompile\n" | ||
78 | "BusyBox with a kernel supporting the query_module system call.\n"); | ||
79 | errno=ENOSYS; | ||
80 | return -1; | ||
81 | #else | ||
82 | return(syscall(__NR_query_module, name, which, buf, bufsize, ret)); | ||
83 | #endif | ||
84 | } | ||
85 | |||
86 | /* Jump through hoops to fixup error return codes */ | ||
87 | unsigned long create_module(const char *name, size_t size) | ||
88 | { | ||
89 | #ifndef __NR_create_module | ||
90 | #warning This kernel does not support the create_module syscall | ||
91 | #warning -> The create_module system call is being stubbed out... | ||
92 | errno=ENOSYS; | ||
93 | return -1; | ||
94 | #else | ||
95 | long ret = syscall(__NR_create_module, name, size); | ||
96 | |||
97 | if (ret == -1 && errno > 125) { | ||
98 | ret = -errno; | ||
99 | errno = 0; | ||
100 | } | ||
101 | return ret; | ||
102 | #endif | ||
103 | } | ||
104 | |||
105 | |||
106 | #endif /* __UCLIBC__ */ | ||
107 | |||
108 | /* END CODE */ | ||
109 | /* | ||
110 | Local Variables: | ||
111 | c-file-style: "linux" | ||
112 | c-basic-offset: 4 | ||
113 | tab-width: 4 | ||
114 | End: | ||
115 | */ | ||
116 | |||
diff --git a/libbb/syscalls.c b/libbb/syscalls.c deleted file mode 100644 index a90f5de2b..000000000 --- a/libbb/syscalls.c +++ /dev/null | |||
@@ -1,113 +0,0 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* | ||
3 | * some system calls possibly missing from libc | ||
4 | * | ||
5 | * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
15 | * General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | * | ||
21 | */ | ||
22 | |||
23 | #include <stdio.h> | ||
24 | #include <errno.h> | ||
25 | #include <unistd.h> | ||
26 | /* Kernel headers before 2.1.mumble need this on the Alpha to get | ||
27 | _syscall* defined. */ | ||
28 | #define __LIBRARY__ | ||
29 | #include <sys/syscall.h> | ||
30 | #include "libbb.h" | ||
31 | |||
32 | int sysfs(int option, unsigned int fs_index, char * buf) | ||
33 | { | ||
34 | #ifndef __NR_sysfs | ||
35 | #warning "This kernel does not support the sysfs syscall" | ||
36 | #warning "-> The sysfs system call is being stubbed out..." | ||
37 | bb_error_msg("\n\nTo make this application work, you will need to recompile\n" | ||
38 | "BusyBox with a kernel supporting the sysfs system call.\n"); | ||
39 | errno = ENOSYS; | ||
40 | return -1; | ||
41 | #else | ||
42 | return(syscall(__NR_sysfs, option, fs_index, buf)); | ||
43 | #endif | ||
44 | } | ||
45 | |||
46 | int pivot_root(const char * new_root,const char * put_old) | ||
47 | { | ||
48 | #ifndef __NR_pivot_root | ||
49 | #warning This kernel does not support the pivot_root syscall | ||
50 | #warning -> The pivot_root system call is being stubbed out... | ||
51 | /* BusyBox was compiled against a kernel that did not support | ||
52 | * the pivot_root system call. To make this application work, | ||
53 | * you will need to recompile with a kernel supporting the | ||
54 | * pivot_root system call. | ||
55 | */ | ||
56 | bb_error_msg("\n\nTo make this application work, you will need to recompile\n" | ||
57 | "BusyBox with a kernel supporting the pivot_root system call.\n"); | ||
58 | errno = ENOSYS; | ||
59 | return -1; | ||
60 | #else | ||
61 | return(syscall(__NR_pivot_root, new_root, put_old)); | ||
62 | #endif /* __NR_pivot_root */ | ||
63 | } | ||
64 | |||
65 | |||
66 | /* These syscalls are not included in ancient glibc versions, | ||
67 | so we have to define them ourselves, whee ! */ | ||
68 | #if ((__GLIBC__ <= 2) && (__GLIBC_MINOR__ < 1)) | ||
69 | |||
70 | int bdflush(int func, int data) | ||
71 | { | ||
72 | return(syscall(__NR_bdflush, func, data)); | ||
73 | } | ||
74 | |||
75 | #ifndef __alpha__ | ||
76 | # define __NR_klogctl __NR_syslog | ||
77 | int klogctl(int type, char *b, int len) | ||
78 | { | ||
79 | return(syscall(__NR_klogctl, type, b, len)); | ||
80 | } | ||
81 | #endif /* __alpha__ */ | ||
82 | |||
83 | |||
84 | int umount2(const char * special_file, int flags) | ||
85 | { | ||
86 | #ifndef __NR_umount2 | ||
87 | #warning "This kernel does not support the umount2 syscall" | ||
88 | #warning "-> The umount2 system call is being stubbed out..." | ||
89 | /* BusyBox was compiled against a kernel that did not support | ||
90 | * the umount2 system call. To make this application work, | ||
91 | * you will need to recompile with a kernel supporting the | ||
92 | * umount2 system call. | ||
93 | */ | ||
94 | bb_error_msg("\n\nTo make this application work, you will need to recompile\n" | ||
95 | "BusyBox with a kernel supporting the umount2 system call.\n"); | ||
96 | errno = ENOSYS; | ||
97 | return -1; | ||
98 | #else | ||
99 | return(syscall(__NR_umount2, special_file, flags)); | ||
100 | #endif /* __NR_umount2 */ | ||
101 | } | ||
102 | |||
103 | #endif /* old glibc check */ | ||
104 | |||
105 | |||
106 | /* END CODE */ | ||
107 | /* | ||
108 | Local Variables: | ||
109 | c-file-style: "linux" | ||
110 | c-basic-offset: 4 | ||
111 | tab-width: 4 | ||
112 | End: | ||
113 | */ | ||