diff --git a/src/p7os/main.h b/src/p7os/main.h index 9037ce3..eaff213 100644 --- a/src/p7os/main.h +++ b/src/p7os/main.h @@ -43,7 +43,7 @@ int parse_args(int ac, char **av, args_t *args); /* Actual things */ /* ************************************************************************** */ /* Main functions */ -int prepare_ops(p7_handle_t *handle, FILE *uexe, void (*disp)()); +int prepare_ops(p7_handle_t *handle, FILE *uexe, p7_disp_t disp); int get_os(p7_handle_t *handle, FILE *dest); #endif /* MAIN_H */ diff --git a/src/p7os/prepare.c b/src/p7os/prepare.c index 4523e01..2f6c36a 100644 --- a/src/p7os/prepare.c +++ b/src/p7os/prepare.c @@ -9,13 +9,6 @@ /* ************************************************************************** */ #include "main.h" -/* ************************************************************************** */ -/* Error messages */ -/* ************************************************************************** */ -/* Unable to open the embedded thingy */ -static const char error_fmemopen[] = -"Unable to open the embedded update.exe.\n"; - /* ************************************************************************** */ /* Embedded update.exe */ /* ************************************************************************** */ @@ -36,33 +29,20 @@ extern char _binary_cake_exe_bin_end[]; * @return the error (-1 if not a libp7 error, 0 if ok) */ -int prepare_ops(p7_handle_t *handle, FILE *uexe, void (*disp)()) +int prepare_ops(p7_handle_t *handle, FILE *uexe, p7_disp_t disp) { - int err; size_t usize; + int err; - /* prepare the update.exe */ - if (uexe) { - /* calculate the size */ - fseek(uexe, 0, SEEK_END); - usize = ftell(uexe); - fseek(uexe, 0, SEEK_SET); - } else { - /* take the default uexe */ - usize = (size_t)&cake_exe_end - (size_t)&cake_exe_str; - uexe = fmemopen(cake_exe_str, usize, "r"); - if (!uexe) { - fprintf(stderr, error_fmemopen); - return (-1); - } - } - - /* send the thing */ - if ((err = p7_sendexe_file(handle, uexe, 0x88030000, 0x88030000, disp))) { + /* send the update.exe */ + if (uexe) + err = p7_sendexe_file(handle, uexe, 0x88030000, 0x88030000, disp); + else { + err = p7_sendexe_mem(handle, cake_exe_str, + (size_t)((char*)&cake_exe_end - (char*)&cake_exe_str), + 0x88030000, 0x88030000, disp); fclose(uexe); - return (err); } - /* no error! */ - fclose(uexe); - return (0); + /* done! */ + return (err); } diff --git a/src/p7servtest/client.c b/src/p7servtest/client.c index c844dd1..aa3da48 100644 --- a/src/p7servtest/client.c +++ b/src/p7servtest/client.c @@ -10,6 +10,7 @@ #include "main.h" #include #include +#include void run_client(int in, int out) { diff --git a/src/p7servtest/server.c b/src/p7servtest/server.c index 6277386..850123f 100644 --- a/src/p7servtest/server.c +++ b/src/p7servtest/server.c @@ -8,8 +8,9 @@ /* */ /* ************************************************************************** */ #include "main.h" -#include #include +#include +#include /* ************************************************************************** */ /* Server callbacks */