From c17107da407fb197c13b84f7afb254a1e851b38e Mon Sep 17 00:00:00 2001 From: Nick Chan Date: Wed, 15 Mar 2023 16:43:25 +0800 Subject: [PATCH] Add -S, --no-colors --- docs/palera1n.1 | 4 +++- include/kerninfo.h | 1 + src/dfuhelper.c | 4 ++-- src/exec_checkra1n.c | 1 + src/log.c | 25 ++++++++++++++++++++----- src/optparse.c | 13 +++++++++---- src/pongo_helper.c | 5 ++++- 7 files changed, 40 insertions(+), 13 deletions(-) diff --git a/docs/palera1n.1 b/docs/palera1n.1 index a0120dd..c428f4d 100644 --- a/docs/palera1n.1 +++ b/docs/palera1n.1 @@ -11,7 +11,7 @@ .Nd iOS 15.0-16.3.1 arm64 iOS/iPadOS jailbreaking tool .Sh SYNOPSIS .Nm -.Op Fl BcdDEfhlnLOpRsvVI +.Op Fl BcdDEfhlnLOpRsSvVI .Op Fl e Ar Boot arguments .Op Fl k Ar Pongo image .Op Fl o Ar overlay file @@ -183,6 +183,8 @@ specified (see .Sy FILES section below) will be executed. The loader app and the built in SSH server can still be used, as well as any jailbreak-specific apps you have installed. +.It Fl S , -no-colors +Disable colors on the command line. External programs like checkra1n clones may still output colors. .It Fl v , -debug-logging Enable debug logging. The option may be repeated for extra verbosity. .It Fl V , -verbose-boot diff --git a/include/kerninfo.h b/include/kerninfo.h index a90d586..b688c3d 100644 --- a/include/kerninfo.h +++ b/include/kerninfo.h @@ -82,6 +82,7 @@ #define host_option_reboot_device (1 << 8) /* Reboot device in normal mode */ #define host_option_enter_recovery (1 << 9) /* Enter recovery mode */ #define host_option_device_info (1 << 10) /* Print device info */ +#define host_option_no_colors (1 << 11) /* no colors */ #define PALEINFO_MAGIC 'PLSH' #define PALEINFO_CIGAM 'HSLP' diff --git a/src/dfuhelper.c b/src/dfuhelper.c index 8192da0..d9b27d6 100644 --- a/src/dfuhelper.c +++ b/src/dfuhelper.c @@ -36,12 +36,12 @@ int dfuhelper_thr_running = false; void step(int time, int time2, char *text, bool (*cond)(uint64_t), uint64_t cond_arg) { for (int i = time2; i < time; i++) { - printf(BCYN "\r\033[K%s (%d)" CRESET, text, time - i + time2); + printf(checkrain_option_enabled(host_flags, host_option_no_colors) ? "\r\033[K%s (%d)" : BCYN "\r\033[K%s (%d)" CRESET, text, time - i + time2); fflush(stdout); sleep(1); if (cond != NULL && cond(cond_arg)) pthread_exit(NULL); } - printf(CYN "\r%s (%d)" CRESET, text, time2); + printf(checkrain_option_enabled(host_flags, host_option_no_colors) ? "\r%s (%d)" : CYN "\r%s (%d)" CRESET, text, time2); if (time2 == 0) puts(""); } diff --git a/src/exec_checkra1n.c b/src/exec_checkra1n.c index 5d36b17..647dfa2 100644 --- a/src/exec_checkra1n.c +++ b/src/exec_checkra1n.c @@ -102,6 +102,7 @@ checkra1n_exec: {}; if (!checkrain_option_enabled(host_flags, palerain_option_checkrain_is_clone)) { strncat(args, "p", 0xf); if (verbose >= 2) strncat(args, "v", 0xf); + if (checkrain_option_enabled(host_flags, host_option_no_colors)) strncat(args, "n", 0xf); } else { strncat(args, "R", 0xf); } diff --git a/src/log.c b/src/log.c index 118fabe..92e22d6 100644 --- a/src/log.c +++ b/src/log.c @@ -57,6 +57,10 @@ int p1_log(log_level_t loglevel, const char *fname, int lineno, const char *fxna snprintf(colour_bold, 0x10, "%s", BWHT); break; } + if (checkrain_option_enabled(host_flags, host_option_no_colors)) { + colour[0] = '\0'; + colour_bold[0] = '\0'; + } #ifdef DEV_BUILD if (checkrain_option_enabled(host_flags, host_option_tui) && tui_started) { newtComponent co = get_tui_log(); @@ -75,20 +79,31 @@ int p1_log(log_level_t loglevel, const char *fname, int lineno, const char *fxna time_t curtime; time(&curtime); struct tm* timeinfo = localtime(&curtime); - snprintf(timestring, 0x80, "%s[%s%02d/%02d/%d %02d:%02d:%02d%s]", CRESET, HBLK, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_year - 100, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec, CRESET); - if (verbose >= 2) { + if (!checkrain_option_enabled(host_flags, host_option_no_colors)) + snprintf(timestring, 0x80, "%s[%s%02d/%02d/%d %02d:%02d:%02d%s]", CRESET, HBLK, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_year - 100, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec, CRESET); + else + snprintf(timestring, 0x80, "[%02d/%02d/%d %02d:%02d:%02d]", timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_year - 100, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); + if (verbose >= 2 && !checkrain_option_enabled(host_flags, host_option_no_colors)) { printf("%s| - %s%s <%s> " CRESET "%s" HBLU "%s" CRESET ":" BLU "%d" CRESET ":" BMAG "%s()" CRESET ": \n%s| ----> ", colour_bold, timestring, colour_bold, type, WHT, fname, lineno, fxname, colour_bold); - } else { + } else if (!checkrain_option_enabled(host_flags, host_option_no_colors)) { printf(" - %s %s<%s>%s: ", timestring, colour_bold, type, CRESET); + } else if (verbose >= 2 && checkrain_option_enabled(host_flags, host_option_no_colors)) { + printf("%s| - %s%s <%s> %s:%d:%s(): \n%s| ----> ", colour_bold, timestring, colour_bold, type, fname, lineno, fxname, colour_bold); + } else if (checkrain_option_enabled(host_flags, host_option_no_colors)) { + printf(" - %s %s<%s>: ", timestring, colour_bold, type); } printf("%s", colour); ret = vprintf(format, args); va_end(args); - if (verbose < 2) + if (verbose < 2 && !checkrain_option_enabled(host_flags, host_option_no_colors)) printf(CRESET "\n"); - else + else if (!checkrain_option_enabled(host_flags, host_option_no_colors)) printf("\n%s-%s\n", colour, CRESET); + else if (verbose < 2) + printf("\n"); + else + printf("\n%s-\n", colour); fflush(stdout); } pthread_mutex_unlock(&log_mutex); diff --git a/src/optparse.c b/src/optparse.c index 92d34e7..78af530 100644 --- a/src/optparse.c +++ b/src/optparse.c @@ -32,6 +32,7 @@ static struct option longopts[] = { {"jbinit-log-to-file", no_argument, NULL, 'L'}, {"demote", no_argument, NULL, 'd'}, {"force-revert", no_argument, NULL, palerain_option_case_force_revert}, + {"no-colors", no_argument, NULL, 'S'}, {"safe-mode", no_argument, NULL, 's'}, {"version", no_argument, NULL, palerain_option_case_version}, {"override-pongo", required_argument, NULL, 'k'}, @@ -56,9 +57,9 @@ static int usage(int e, char* prog_name) { fprintf(stderr, #ifdef DEV_BUILD - "Usage: %s [-12cCdDEfhlLnOpRstvV]" + "Usage: %s [-12cCdDEfhlLnOpRsStvV]" #else - "Usage: %s [-cCdDEfhlLnOpRsvV]" + "Usage: %s [-cCdDEfhlLnOpRsSvV]" #endif " [-e boot arguments] [-k Pongo image] [-o overlay file] [-r ramdisk file] [-K KPF file] [-i checkra1n file]\n" "Copyright (C) 2023, palera1n team, All Rights Reserved.\n\n" @@ -91,6 +92,7 @@ static int usage(int e, char* prog_name) "\t-r, --override-ramdisk \t\tOverride ramdisk\n" "\t-R, --reboot-device\t\t\tReboot connected device in normal mode\n" "\t-s, --safe-mode\t\t\t\tEnter safe mode\n" + "\t-S, --no-colors\t\t\tDisable colors on the command line\n" "\t-v, --debug-logging\t\t\tEnable debug logging\n" "\t\tThis option can be repeated for extra verbosity.\n" "\t-V, --verbose-boot\t\t\tVerbose boot\n" @@ -110,9 +112,9 @@ int optparse(int argc, char* argv[]) { int index; while ((opt = getopt_long(argc, argv, #ifdef DEV_BUILD - "12BcDEhpvVldsOLftRnPIe:o:r:K:k:i:", + "12BcDEhpvVldsSOLftRnPIe:o:r:K:k:i:", #else - "BcDEhpvVldsOLfRnPIe:o:r:K:k:i:", + "BcDEhpvVldsSOLfRnPIe:o:r:K:k:i:", #endif longopts, NULL)) != -1) { @@ -258,6 +260,9 @@ int optparse(int argc, char* argv[]) { case 'I': host_flags |= host_option_device_info; break; + case 'S': + host_flags |= host_option_no_colors; + break; #ifdef DEV_BUILD case 't': host_flags |= host_option_tui; diff --git a/src/pongo_helper.c b/src/pongo_helper.c index f77528f..ec0bd03 100644 --- a/src/pongo_helper.c +++ b/src/pongo_helper.c @@ -163,7 +163,10 @@ int upload_pongo_file(usb_device_handle_t handle, unsigned char *buf, unsigned i if (verbose < 3 || verbose > 4) { LOG(LOG_VERBOSE, "Uploaded %llu bytes to PongoOS", (unsigned long long)buf_len); } else { - printf("/send mem:%p:%p\n" BCYN "[Uploaded %llu bytes]\n" CRESET, (void*)buf, (void*)(buf + buf_len), (unsigned long long)buf_len); + if (checkrain_option_enabled(host_flags, host_option_no_colors)) + printf("/send mem:%p:%p\nUploaded %llu bytes]\n", (void*)buf, (void*)(buf + buf_len), (unsigned long long)buf_len); + else + printf("/send mem:%p:%p\n" BCYN "[Uploaded %llu bytes]\n" CRESET, (void*)buf, (void*)(buf + buf_len), (unsigned long long)buf_len); } } }