From d160a27ec15b9304e6576616639f0f347022a258 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sat, 24 Feb 2001 19:17:07 +0000 Subject: Stub out the syscall, not the whole application. The stubbed out syscall sets errno properly and whines about missing kernel support. -Erik --- pivot_root.c | 26 ++++++++++++++++++-------- util-linux/pivot_root.c | 26 ++++++++++++++++++-------- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/pivot_root.c b/pivot_root.c index d34dcd7..4d7f8a3 100644 --- a/pivot_root.c +++ b/pivot_root.c @@ -3,24 +3,35 @@ * pivot_root.c - Change root file system. Based on util-linux 2.10s * * busyboxed by Evin Robertson + * pivot_root syscall stubbed by Erik Andersen, so it will compile + * regardless of the kernel being used. */ #include #include +#include #include #include #include "busybox.h" #ifndef __NR_pivot_root #warning This kernel does not support the pivot_root syscall -#warning The pivot_root application is being stubbed out... -int pivot_root_main(int argc, char **argv) +#warning The pivot_root system call is being stubbed out... +int pivot_root(const char * new_root,const char * put_old) { - printf("Please recompile with a kernel supporting the pivot_root syscall.\n"); - return 0; + /* BusyBox was compiled against a kernel that did not support + * the pivot_root system call. To make this application work, + * you will need to recompile with a kernel supporting the + * pivot_root system call. + */ + fprintf(stderr, "\n\nTo make this application work, you will need to recompile\n"); + fprintf(stderr, "with a kernel supporting the pivot_root system call. -Erik\n\n"); + errno=ENOSYS; + return -1; } #else - static _syscall2(int,pivot_root,const char *,new_root,const char *,put_old) +#endif + int pivot_root_main(int argc, char **argv) @@ -28,13 +39,12 @@ int pivot_root_main(int argc, char **argv) if (argc != 3) show_usage(); - if (pivot_root(argv[1],argv[2]) < 0) - perror_msg_and_die("pivot_root"); + if (pivot_root(argv[1],argv[2]) < 0) + perror_msg_and_die("pivot_root"); return EXIT_SUCCESS; } -#endif /* diff --git a/util-linux/pivot_root.c b/util-linux/pivot_root.c index d34dcd7..4d7f8a3 100644 --- a/util-linux/pivot_root.c +++ b/util-linux/pivot_root.c @@ -3,24 +3,35 @@ * pivot_root.c - Change root file system. Based on util-linux 2.10s * * busyboxed by Evin Robertson + * pivot_root syscall stubbed by Erik Andersen, so it will compile + * regardless of the kernel being used. */ #include #include +#include #include #include #include "busybox.h" #ifndef __NR_pivot_root #warning This kernel does not support the pivot_root syscall -#warning The pivot_root application is being stubbed out... -int pivot_root_main(int argc, char **argv) +#warning The pivot_root system call is being stubbed out... +int pivot_root(const char * new_root,const char * put_old) { - printf("Please recompile with a kernel supporting the pivot_root syscall.\n"); - return 0; + /* BusyBox was compiled against a kernel that did not support + * the pivot_root system call. To make this application work, + * you will need to recompile with a kernel supporting the + * pivot_root system call. + */ + fprintf(stderr, "\n\nTo make this application work, you will need to recompile\n"); + fprintf(stderr, "with a kernel supporting the pivot_root system call. -Erik\n\n"); + errno=ENOSYS; + return -1; } #else - static _syscall2(int,pivot_root,const char *,new_root,const char *,put_old) +#endif + int pivot_root_main(int argc, char **argv) @@ -28,13 +39,12 @@ int pivot_root_main(int argc, char **argv) if (argc != 3) show_usage(); - if (pivot_root(argv[1],argv[2]) < 0) - perror_msg_and_die("pivot_root"); + if (pivot_root(argv[1],argv[2]) < 0) + perror_msg_and_die("pivot_root"); return EXIT_SUCCESS; } -#endif /* -- cgit v1.1