mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-02-17 18:48:30 +00:00
Update exec functions signatures
This commit is contained in:
parent
b01a8cace6
commit
731455f164
@ -317,7 +317,7 @@ static void exec_common_script(const char* stage) {
|
|||||||
if (access(entry->d_name, X_OK) == -1)
|
if (access(entry->d_name, X_OK) == -1)
|
||||||
continue;
|
continue;
|
||||||
LOGI("%s.d: exec [%s]\n", stage, entry->d_name);
|
LOGI("%s.d: exec [%s]\n", stage, entry->d_name);
|
||||||
int pid = exec_command(0, nullptr,
|
int pid = exec_command(false, nullptr,
|
||||||
strcmp(stage, "post-fs-data") ? set_path : set_mirror_path,
|
strcmp(stage, "post-fs-data") ? set_path : set_mirror_path,
|
||||||
"sh", entry->d_name, nullptr);
|
"sh", entry->d_name, nullptr);
|
||||||
if (pid != -1)
|
if (pid != -1)
|
||||||
@ -336,8 +336,7 @@ static void exec_module_script(const char* stage) {
|
|||||||
if (access(buf2, F_OK) == -1 || access(buf, F_OK) == 0)
|
if (access(buf2, F_OK) == -1 || access(buf, F_OK) == 0)
|
||||||
continue;
|
continue;
|
||||||
LOGI("%s: exec [%s.sh]\n", module, stage);
|
LOGI("%s: exec [%s.sh]\n", module, stage);
|
||||||
int pid = exec_command(
|
int pid = exec_command(false, nullptr,
|
||||||
0, nullptr,
|
|
||||||
strcmp(stage, "post-fs-data") ? set_path : set_mirror_path,
|
strcmp(stage, "post-fs-data") ? set_path : set_mirror_path,
|
||||||
"sh", buf2, nullptr);
|
"sh", buf2, nullptr);
|
||||||
if (pid != -1)
|
if (pid != -1)
|
||||||
@ -555,7 +554,7 @@ static void install_apk(const char *apk) {
|
|||||||
sleep(5);
|
sleep(5);
|
||||||
LOGD("apk_install: attempting to install APK");
|
LOGD("apk_install: attempting to install APK");
|
||||||
int apk_res = -1, pid;
|
int apk_res = -1, pid;
|
||||||
pid = exec_command(1, &apk_res, nullptr, "/system/bin/pm", "install", "-r", apk, nullptr);
|
pid = exec_command(true, &apk_res, nullptr, "/system/bin/pm", "install", "-r", apk, nullptr);
|
||||||
if (pid != -1) {
|
if (pid != -1) {
|
||||||
int err = 0;
|
int err = 0;
|
||||||
while (fdgets(buf, PATH_MAX, apk_res) > 0) {
|
while (fdgets(buf, PATH_MAX, apk_res) > 0) {
|
||||||
|
@ -83,7 +83,7 @@ static void *logcat_thread(void *) {
|
|||||||
char line[4096];
|
char line[4096];
|
||||||
while (1) {
|
while (1) {
|
||||||
// Start logcat
|
// Start logcat
|
||||||
log_pid = exec_array(0, &log_fd, nullptr, log_cmd.data());
|
log_pid = exec_array(false, &log_fd, nullptr, log_cmd.data());
|
||||||
FILE *logs = fdopen(log_fd, "r");
|
FILE *logs = fdopen(log_fd, "r");
|
||||||
while (fgets(line, sizeof(line), logs)) {
|
while (fgets(line, sizeof(line), logs)) {
|
||||||
if (line[0] == '-')
|
if (line[0] == '-')
|
||||||
@ -104,7 +104,7 @@ static void *logcat_thread(void *) {
|
|||||||
|
|
||||||
LOGI("magisklogd: logcat output EOF");
|
LOGI("magisklogd: logcat output EOF");
|
||||||
// Clear buffer
|
// Clear buffer
|
||||||
log_pid = exec_array(0, nullptr, nullptr, clear_cmd.data());
|
log_pid = exec_array(false, nullptr, nullptr, clear_cmd.data());
|
||||||
waitpid(log_pid, nullptr, 0);
|
waitpid(log_pid, nullptr, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,8 +91,8 @@ unsigned get_system_uid();
|
|||||||
unsigned get_radio_uid();
|
unsigned get_radio_uid();
|
||||||
ssize_t fdgets(char *buf, size_t size, int fd);
|
ssize_t fdgets(char *buf, size_t size, int fd);
|
||||||
int is_num(const char *s);
|
int is_num(const char *s);
|
||||||
int exec_array(int err, int *fd, void (*cb)(void), const char *argv[]);
|
int exec_array(bool err, int *fd, void (*cb)(void), const char **argv);
|
||||||
int exec_command(int err, int *fd, void (*cb)(void), const char *argv0, ...);
|
int exec_command(bool err, int *fd, void (*cb)(void), const char *argv0, ...);
|
||||||
int exec_command_sync(const char *argv0, ...);
|
int exec_command_sync(const char *argv0, ...);
|
||||||
int fork_dont_care();
|
int fork_dont_care();
|
||||||
void gen_rand_str(char *buf, int len);
|
void gen_rand_str(char *buf, int len);
|
||||||
|
@ -181,21 +181,21 @@ int __fsetxattr(int fd, const char *name, const void *value, size_t size, int fl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
fd == NULL -> Ignore output
|
fd == nullptr -> Ignore output
|
||||||
*fd < 0 -> Open pipe and set *fd to the read end
|
*fd < 0 -> Open pipe and set *fd to the read end
|
||||||
*fd >= 0 -> STDOUT (or STDERR) will be redirected to *fd
|
*fd >= 0 -> STDOUT (or STDERR) will be redirected to *fd
|
||||||
*cb -> A callback function which calls after forking
|
*cb -> A callback function which calls after forking
|
||||||
*/
|
*/
|
||||||
int exec_array(int err, int *fd, void (*cb)(void), const char *argv[]) {
|
int exec_array(bool err, int *fd, void (*cb)(void), const char **argv) {
|
||||||
int pipefd[2], write_end = -1;
|
int pipefd[2], outfd = -1;
|
||||||
|
|
||||||
if (fd) {
|
if (fd) {
|
||||||
if (*fd < 0) {
|
if (*fd < 0) {
|
||||||
if (xpipe2(pipefd, O_CLOEXEC) == -1)
|
if (xpipe2(pipefd, O_CLOEXEC) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
write_end = pipefd[1];
|
outfd = pipefd[1];
|
||||||
} else {
|
} else {
|
||||||
write_end = *fd;
|
outfd = *fd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,9 +210,9 @@ int exec_array(int err, int *fd, void (*cb)(void), const char *argv[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (fd) {
|
if (fd) {
|
||||||
xdup2(write_end, STDOUT_FILENO);
|
xdup2(outfd, STDOUT_FILENO);
|
||||||
if (err)
|
if (err)
|
||||||
xdup2(write_end, STDERR_FILENO);
|
xdup2(outfd, STDERR_FILENO);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup environment
|
// Setup environment
|
||||||
@ -224,7 +224,7 @@ int exec_array(int err, int *fd, void (*cb)(void), const char *argv[]) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int v_exec_command(int err, int *fd, void (*cb)(void), const char *argv0, va_list argv) {
|
static int v_exec_command(bool err, int *fd, void (*cb)(void), const char *argv0, va_list argv) {
|
||||||
// Collect va_list into vector
|
// Collect va_list into vector
|
||||||
Vector<const char *> args;
|
Vector<const char *> args;
|
||||||
args.push_back(argv0);
|
args.push_back(argv0);
|
||||||
@ -239,7 +239,7 @@ int exec_command_sync(const char *argv0, ...) {
|
|||||||
va_list argv;
|
va_list argv;
|
||||||
va_start(argv, argv0);
|
va_start(argv, argv0);
|
||||||
int pid, status;
|
int pid, status;
|
||||||
pid = v_exec_command(0, NULL, NULL, argv0, argv);
|
pid = v_exec_command(false, nullptr, nullptr, argv0, argv);
|
||||||
va_end(argv);
|
va_end(argv);
|
||||||
if (pid < 0)
|
if (pid < 0)
|
||||||
return pid;
|
return pid;
|
||||||
@ -247,7 +247,7 @@ int exec_command_sync(const char *argv0, ...) {
|
|||||||
return WEXITSTATUS(status);
|
return WEXITSTATUS(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
int exec_command(int err, int *fd, void (*cb)(void), const char *argv0, ...) {
|
int exec_command(bool err, int *fd, void (*cb)(void), const char *argv0, ...) {
|
||||||
va_list argv;
|
va_list argv;
|
||||||
va_start(argv, argv0);
|
va_start(argv, argv0);
|
||||||
int pid = v_exec_command(err, fd, cb, argv0, argv);
|
int pid = v_exec_command(err, fd, cb, argv0, argv);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user