nsw:dev:kefir_sh
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
nsw:dev:kefir_sh [2022.04.01 15:55:47] – admin | nsw:dev:kefir_sh [2022.04.13 03:47:36] (текущий) – [kefir.cpp] admin | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Kefir refreSH ====== | ====== Kefir refreSH ====== | ||
+ | ===== kefir.sh ===== | ||
<file bash kefir.sh> | <file bash kefir.sh> | ||
#!/bin/sh | #!/bin/sh | ||
kver=123 | kver=123 | ||
- | echo " | + | if [ -n " |
- | read kver | + | kver=$1 |
+ | else | ||
+ | | ||
+ | read kver | ||
+ | fi | ||
user=Atmosphere-NX | user=Atmosphere-NX | ||
repo=Atmosphere | repo=Atmosphere | ||
Строка 11: | Строка 16: | ||
if ! [ -f ./$repo.zip ]; then | if ! [ -f ./$repo.zip ]; then | ||
git clone --recurse-submodules https:// | git clone --recurse-submodules https:// | ||
- | | + | # |
else | else | ||
unzip ./$repo.zip | unzip ./$repo.zip | ||
Строка 36: | Строка 41: | ||
#sed -i ' | #sed -i ' | ||
- | #... | + | # md5 for 1.3.0 release is fa0f38f14964ec619527832357ec617c |
+ | # md5 for 1.3.1 release is 7d34d689829a6b5d95954b410519beec | ||
+ | if ! [ $(md5sum ./ | ||
+ | echo " | ||
+ | read | ||
+ | fi | ||
+ | rm ./ | ||
+ | cp ../ | ||
#sed -i ' | #sed -i ' | ||
Строка 52: | Строка 64: | ||
sed -i 's/if (g_exfat_supported)/ | sed -i 's/if (g_exfat_supported)/ | ||
- | #sed -i ' | + | #sed -i ' |
- | if [ $(wc -c ./ | + | #sed -i ' |
- | echo "# | + | |
- | else | + | #sed -i ' |
- | sed -i ' | + | #sed -i ' |
- | fi | + | |
+ | #sed -i ' | ||
+ | #if [ $(wc -c ./ | ||
+ | # echo "# | ||
+ | #else | ||
+ | # sed -i ' | ||
+ | #fi | ||
+ | |||
+ | #sed -i ' | ||
+ | sed -i ' | ||
make | make | ||
+ | </ | ||
+ | ===== kefir.cpp ===== | ||
+ | <file cpp setsys_mitm_service.kef> | ||
+ | /* | ||
+ | * Copyright (c) Atmosphère-NX | ||
+ | * | ||
+ | * This program is free software; you can redistribute it and/or modify it | ||
+ | * under the terms and conditions of the GNU General Public License, | ||
+ | * version 2, as published by the Free Software Foundation. | ||
+ | * | ||
+ | * This program is distributed in the hope it will be useful, but WITHOUT | ||
+ | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
+ | * FITNESS FOR A PARTICULAR PURPOSE. | ||
+ | * more details. | ||
+ | * | ||
+ | * You should have received a copy of the GNU General Public License | ||
+ | * along with this program. | ||
+ | */ | ||
+ | #include < | ||
+ | #include " | ||
+ | #include " | ||
+ | |||
+ | namespace ams:: | ||
+ | |||
+ | using namespace ams:: | ||
+ | |||
+ | namespace { | ||
+ | |||
+ | constinit os:: | ||
+ | constinit bool g_cached_firmware_version; | ||
+ | constinit settings:: | ||
+ | constinit settings:: | ||
+ | |||
+ | int g_kfr_firmware_version = 0; | ||
+ | |||
+ | void CacheFirmwareVersion() { | ||
+ | if (AMS_LIKELY(g_cached_firmware_version)) { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | std:: | ||
+ | |||
+ | if (AMS_UNLIKELY(g_cached_firmware_version)) { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | /* Mount the SD card. */ | ||
+ | { | ||
+ | if (R_SUCCEEDED(fs:: | ||
+ | ams:: | ||
+ | if (R_SUCCEEDED(fs:: | ||
+ | ON_SCOPE_EXIT { ams:: | ||
+ | |||
+ | /* Get file size. */ | ||
+ | s64 file_size; | ||
+ | R_ABORT_UNLESS(fs:: | ||
+ | |||
+ | /* Allocate kver txt buffer. */ | ||
+ | char *kef_txt = static_cast< | ||
+ | ON_SCOPE_EXIT { std:: | ||
+ | |||
+ | /* Read kver into buffer. */ | ||
+ | R_ABORT_UNLESS(fs:: | ||
+ | kef_txt[file_size] = ' | ||
+ | |||
+ | g_kfr_firmware_version = strtol(kef_txt, | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /* Mount firmware version data archive. */ | ||
+ | { | ||
+ | R_ABORT_UNLESS(ams:: | ||
+ | ON_SCOPE_EXIT { ams:: | ||
+ | |||
+ | /* Firmware version file must exist. */ | ||
+ | ams:: | ||
+ | R_ABORT_UNLESS(ams:: | ||
+ | ON_SCOPE_EXIT { ams:: | ||
+ | |||
+ | /* Must be possible to read firmware version from file. */ | ||
+ | R_ABORT_UNLESS(ams:: | ||
+ | |||
+ | g_ams_firmware_version = g_firmware_version; | ||
+ | } | ||
+ | |||
+ | /* Modify the atmosphere firmware version to display a custom version string. */ | ||
+ | { | ||
+ | const auto api_info = exosphere:: | ||
+ | const char emummc_char = emummc:: | ||
+ | |||
+ | /* NOTE: We have carefully accounted for the size of the string we print. */ | ||
+ | /* No truncation occurs assuming two-digits for all version number components. */ | ||
+ | char display_version[sizeof(g_ams_firmware_version.display_version)]; | ||
+ | |||
+ | if (g_kfr_firmware_version != 0) | ||
+ | util:: | ||
+ | else | ||
+ | util:: | ||
+ | |||
+ | std:: | ||
+ | } | ||
+ | |||
+ | g_cached_firmware_version = true; | ||
+ | } | ||
+ | |||
+ | Result GetFirmwareVersionImpl(settings:: | ||
+ | /* Ensure that we have the firmware version cached. */ | ||
+ | CacheFirmwareVersion(); | ||
+ | |||
+ | /* We want to give a special firmware version to the home menu title, and nothing else. */ | ||
+ | /* This means Qlaunch + Maintenance Menu, and nothing else. */ | ||
+ | if (client_info.program_id == ncm:: | ||
+ | *out = g_ams_firmware_version; | ||
+ | } else { | ||
+ | *out = g_firmware_version; | ||
+ | } | ||
+ | |||
+ | R_SUCCEED(); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | Result SetSysMitmService:: | ||
+ | R_TRY(GetFirmwareVersionImpl(out.GetPointer(), | ||
+ | |||
+ | /* GetFirmwareVersion sanitizes the revision fields. */ | ||
+ | out.GetPointer()-> | ||
+ | out.GetPointer()-> | ||
+ | R_SUCCEED(); | ||
+ | } | ||
+ | |||
+ | Result SetSysMitmService:: | ||
+ | R_RETURN(GetFirmwareVersionImpl(out.GetPointer(), | ||
+ | } | ||
+ | |||
+ | Result SetSysMitmService:: | ||
+ | R_TRY_CATCH(settings:: | ||
+ | R_CATCH_RETHROW(sf:: | ||
+ | R_CONVERT_ALL(sm:: | ||
+ | } R_END_TRY_CATCH; | ||
+ | |||
+ | R_SUCCEED(); | ||
+ | } | ||
+ | |||
+ | Result SetSysMitmService:: | ||
+ | R_TRY_CATCH(settings:: | ||
+ | R_CATCH_RETHROW(sf:: | ||
+ | R_CONVERT_ALL(sm:: | ||
+ | } R_END_TRY_CATCH; | ||
+ | |||
+ | R_SUCCEED(); | ||
+ | } | ||
+ | |||
+ | Result SetSysMitmService:: | ||
+ | /* If we're not processing for am, just return the real flag value. */ | ||
+ | R_UNLESS(m_client_info.program_id == ncm:: | ||
+ | |||
+ | /* Retrieve the user configuration. */ | ||
+ | u8 en = 0; | ||
+ | settings:: | ||
+ | |||
+ | out.SetValue(en != 0); | ||
+ | R_SUCCEED(); | ||
+ | } | ||
+ | |||
+ | } | ||
</ | </ |
nsw/dev/kefir_sh.1648817747.txt.gz · Последнее изменение: 2022.04.01 15:55:47 — admin