hdd-menu: remove hardcoded paths

Origin commit data
------------------
Branch: ni/coolstream
Commit: 4d8a55696b
Author: vanhofen <vanhofen@gmx.de>
Date: 2020-12-10 (Thu, 10 Dec 2020)

Origin message was:
------------------
- hdd-menu: remove hardcoded paths

------------------
No further description and justification available within origin commit message!

------------------
This commit was generated by Migit
This commit is contained in:
vanhofen
2020-12-10 20:57:25 +01:00
parent cb103b03aa
commit 2dba7a1ab7

View File

@@ -62,9 +62,6 @@
#include <driver/screen_max.h>
#include <driver/record.h>
#define BLKID_BIN "/sbin/blkid"
#define EJECT_BIN "/bin/eject"
#define MDEV_MOUNT "/lib/mdev/fs/mdev-mount"
#define MOUNT_BASE "/media/"
@@ -90,12 +87,12 @@ const CMenuOptionChooser::keyval HDD_SLEEP_OPTIONS[HDD_SLEEP_OPTION_COUNT] =
};
devtool_s CHDDMenuHandler::devtools[] = {
{ "ext4", "/sbin/fsck.ext4", "-C 1 -f -y", "/sbin/mkfs.ext4", "-m 0", false, false },
{ "ext3", "/sbin/fsck.ext3", "-C 1 -f -y", "/sbin/mkfs.ext3", "-m 0", false, false },
{ "ext2", "/sbin/fsck.ext2", "-C 1 -f -y", "/sbin/mkfs.ext2", "-m 0", false, false },
{ "vfat", "/sbin/fsck.vfat", "-a", "/sbin/mkfs.vfat", "", false, false },
{ "exfat", "/sbin/fsck.exfat", "", "/sbin/mkfs.exfat", "", false, false },
{ "xfs", "/sbin/xfs_repair", "", "/sbin/mkfs.xfs", "-f", false, false },
{ "ext4", "fsck.ext4", "-C 1 -f -y", "mkfs.ext4", "-m 0", false, false },
{ "ext3", "fsck.ext3", "-C 1 -f -y", "mkfs.ext3", "-m 0", false, false },
{ "ext2", "fsck.ext2", "-C 1 -f -y", "mkfs.ext2", "-m 0", false, false },
{ "vfat", "fsck.vfat", "-a", "mkfs.vfat", "", false, false },
{ "exfat", "fsck.exfat", "", "mkfs.exfat", "", false, false },
{ "xfs", "xfs_repair", "", "mkfs.xfs", "-f", false, false },
};
#define FS_MAX (sizeof(CHDDMenuHandler::devtools)/sizeof(devtool_s))
@@ -183,9 +180,10 @@ void CHDDMenuHandler::getBlkIds()
{
pid_t pid;
std::string blkid = find_executable("blkid");
printf("CHDDMenuHandler::getBlkIds: blkid = %s\n", blkid.c_str());
if (blkid.empty())
return;
std::string pcmd = blkid + (std::string)" -s TYPE";
std::string pcmd = blkid + " -s TYPE";
FILE* f = my_popen(pid, pcmd.c_str(), "r");
if (!f) {
@@ -280,11 +278,19 @@ void CHDDMenuHandler::check_dev_tools()
__func__, devtools[i].fmt.c_str());
continue;
}
if (!access(devtools[i].fsck.c_str(), X_OK))
std::string fsck = find_executable(devtools[i].fsck.c_str());
if (!fsck.empty())
{
devtools[i].fsck = fsck;
devtools[i].fsck_supported = true;
if (!access(devtools[i].mkfs.c_str(), X_OK))
}
std::string mkfs = find_executable(devtools[i].mkfs.c_str());
if (!mkfs.empty())
{
devtools[i].mkfs = mkfs;
devtools[i].mkfs_supported = true;
printf("check_dev_tools: %s: fsck %d mkfs %d\n", devtools[i].fmt.c_str(), devtools[i].fsck_supported, devtools[i].mkfs_supported);
}
printf("check_dev_tools: %s: fsck (%s) %d mkfs (%s) %d\n", devtools[i].fmt.c_str(), devtools[i].fsck.c_str(), devtools[i].fsck_supported, devtools[i].mkfs.c_str(), devtools[i].mkfs_supported);
}
}
@@ -300,8 +306,10 @@ devtool_s * CHDDMenuHandler::get_dev_tool(std::string fmt)
bool CHDDMenuHandler::mount_dev(std::string name)
{
std::string dev = name.substr(0, 2);
if (dev == "sr" && !access(EJECT_BIN, X_OK)) {
std::string eject = std::string(EJECT_BIN) + " -t /dev/" + name;
std::string eject = find_executable("eject");
printf("CHDDMenuHandler::mount_dev: eject = %s\n", eject.c_str());
if (dev == "sr" && !eject.empty()) {
eject += " -t /dev/" + name;
system(eject.c_str());
sleep(3);
}
@@ -330,8 +338,10 @@ bool CHDDMenuHandler::umount_dev(std::string name)
return false;
#endif
std::string dev = name.substr(0, 2);
if (dev == "sr" && !access(EJECT_BIN, X_OK)) {
std::string eject = std::string(EJECT_BIN) + " /dev/" + name;
std::string eject = find_executable("eject");
printf("CHDDMenuHandler::umount_dev: eject = %s\n", eject.c_str());
if (dev == "sr" && !eject.empty()) {
eject += " /dev/" + name;
system(eject.c_str());
}
lock_refresh = true;
@@ -792,9 +802,10 @@ _show_menu:
mc->setHint("", LOCALE_MENU_HINT_HDD_SLEEP);
hddmenu->addItem(mc);
const char hdparm[] = "/sbin/hdparm";
std::string hdparm = find_executable("hdparm");
printf("CHDDMenuHandler::doMenu: hdparm = %s\n", hdparm.c_str());
struct stat stat_buf;
bool have_nonbb_hdparm = !::lstat(hdparm, &stat_buf) && !S_ISLNK(stat_buf.st_mode);
bool have_nonbb_hdparm = !::lstat(hdparm.c_str(), &stat_buf) && !S_ISLNK(stat_buf.st_mode);
if (have_nonbb_hdparm) {
mc = new CMenuOptionChooser(LOCALE_HDD_NOISE, &g_settings.hdd_noise, HDD_NOISE_OPTIONS, HDD_NOISE_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_HDD_NOISE);
@@ -1379,10 +1390,9 @@ int CHDDDestExec::exec(CMenuTarget* /*parent*/, const std::string&)
if (g_settings.hdd_sleep > 0 && g_settings.hdd_sleep < 60)
g_settings.hdd_sleep = 60;
const char hdidle[] = "/sbin/hd-idle";
bool have_hdidle = !access(hdidle, X_OK);
if (have_hdidle && g_settings.hdd_sleep > 0) {
std::string hdidle = find_executable("hd-idle");
printf("CHDDDestExec::exec: hd-idle = %s\n", hdidle.c_str());
if (!hdidle.empty() && g_settings.hdd_sleep > 0) {
system("kill $(pidof hd-idle)");
int sleep_seconds = g_settings.hdd_sleep;
switch (sleep_seconds) {
@@ -1396,7 +1406,7 @@ int CHDDDestExec::exec(CMenuTarget* /*parent*/, const std::string&)
sleep_seconds *= 5;
}
if (sleep_seconds)
my_system(3, hdidle, "-i", to_string(sleep_seconds).c_str());
my_system(3, hdidle.c_str(), "-i", to_string(sleep_seconds).c_str());
while (n--)
free(namelist[n]);
@@ -1404,9 +1414,9 @@ int CHDDDestExec::exec(CMenuTarget* /*parent*/, const std::string&)
return menu_return::RETURN_NONE;
}
const char hdparm[] = "/sbin/hdparm";
bool have_hdparm = !access(hdparm, X_OK);
if (!have_hdparm)
std::string hdparm = find_executable("hdparm");
printf("CHDDDestExec::exec: hdparm = %s\n", hdparm.c_str());
if (!hdparm.empty())
{
while (n--)
free(namelist[n]);
@@ -1415,7 +1425,7 @@ int CHDDDestExec::exec(CMenuTarget* /*parent*/, const std::string&)
}
struct stat stat_buf;
bool have_nonbb_hdparm = !::lstat(hdparm, &stat_buf) && !S_ISLNK(stat_buf.st_mode);
bool have_nonbb_hdparm = !::lstat(hdparm.c_str(), &stat_buf) && !S_ISLNK(stat_buf.st_mode);
for (int i = 0; i < n; i++) {
printf("CHDDDestExec: noise %d sleep %d /dev/%s\n",
@@ -1427,9 +1437,9 @@ int CHDDDestExec::exec(CMenuTarget* /*parent*/, const std::string&)
snprintf(opt, sizeof(opt), "/dev/%s",namelist[i]->d_name);
if (have_nonbb_hdparm)
my_system(4, hdparm, M_opt, S_opt, opt);
my_system(4, hdparm.c_str(), M_opt, S_opt, opt);
else // busybox hdparm doesn't support "-M"
my_system(3, hdparm, S_opt, opt);
my_system(3, hdparm.c_str(), S_opt, opt);
free(namelist[i]);
}