mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-09-03 10:51:05 +02:00
Merge remote-tracking branch 'check/next-cc'
Lightly tested only...
Origin commit data
------------------
Commit: cdd065fc2e
Author: Stefan Seyfried <seife@tuxbox-git.slipkontur.de>
Date: 2013-12-25 (Wed, 25 Dec 2013)
This commit is contained in:
@@ -150,9 +150,14 @@ int CHDDMenuHandler::doMenu ()
|
||||
mc->setHint("", LOCALE_MENU_HINT_HDD_SLEEP);
|
||||
hddmenu->addItem(mc);
|
||||
|
||||
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);
|
||||
hddmenu->addItem(mc);
|
||||
const char hdparm[] = "/sbin/hdparm";
|
||||
struct stat stat_buf;
|
||||
bool have_nonbb_hdparm = !::lstat(hdparm, &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);
|
||||
hddmenu->addItem(mc);
|
||||
}
|
||||
|
||||
//if(n > 0)
|
||||
hddmenu->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_HDD_MANAGE));
|
||||
@@ -277,38 +282,59 @@ int CHDDMenuHandler::doMenu ()
|
||||
|
||||
int CHDDDestExec::exec(CMenuTarget* /*parent*/, const std::string&)
|
||||
{
|
||||
char M_opt[50],S_opt[50];
|
||||
char opt[100];
|
||||
struct dirent **namelist;
|
||||
int n = scandir("/sys/block", &namelist, my_filter, alphasort);
|
||||
|
||||
if (n < 0)
|
||||
return 0;
|
||||
return menu_return::RETURN_NONE;
|
||||
|
||||
const char hdidle[] = "/sbin/hd-idle";
|
||||
bool have_hdidle = !access(hdidle, X_OK);
|
||||
|
||||
if (have_hdidle) {
|
||||
system("kill $(pidof hd-idle)");
|
||||
int sleep_seconds = g_settings.hdd_sleep;
|
||||
switch (sleep_seconds) {
|
||||
case 241:
|
||||
sleep_seconds = 30 * 60;
|
||||
break;
|
||||
case 242:
|
||||
sleep_seconds = 60 * 60;
|
||||
break;
|
||||
default:
|
||||
sleep_seconds *= 5;
|
||||
}
|
||||
if (sleep_seconds)
|
||||
my_system(3, hdidle, "-i", to_string(sleep_seconds).c_str());
|
||||
}
|
||||
|
||||
const char hdparm[] = "/sbin/hdparm";
|
||||
bool hdparm_link = false;
|
||||
bool have_hdparm = !access(hdparm, X_OK);
|
||||
if (!have_hdparm)
|
||||
return menu_return::RETURN_NONE;
|
||||
|
||||
struct stat stat_buf;
|
||||
if(::lstat(hdparm, &stat_buf) == 0)
|
||||
if( S_ISLNK(stat_buf.st_mode) )
|
||||
hdparm_link = true;
|
||||
bool have_nonbb_hdparm = !::lstat(hdparm, &stat_buf) && !S_ISLNK(stat_buf.st_mode);
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
printf("CHDDDestExec: noise %d sleep %d /dev/%s\n",
|
||||
g_settings.hdd_noise, g_settings.hdd_sleep, namelist[i]->d_name);
|
||||
snprintf(S_opt, sizeof(S_opt),"-S%d", g_settings.hdd_sleep);
|
||||
snprintf(opt, sizeof(opt),"/dev/%s",namelist[i]->d_name);
|
||||
|
||||
if(hdparm_link){
|
||||
//hdparm -M is not included in busybox hdparm!
|
||||
my_system(3, hdparm, S_opt, opt);
|
||||
}else{
|
||||
snprintf(M_opt, sizeof(M_opt),"-M%d", g_settings.hdd_noise);
|
||||
char M_opt[50],S_opt[50], opt[100];
|
||||
snprintf(S_opt, sizeof(S_opt), "-S%d", g_settings.hdd_sleep);
|
||||
snprintf(M_opt, sizeof(M_opt), "-M%d", g_settings.hdd_noise);
|
||||
snprintf(opt, sizeof(opt), "/dev/%s",namelist[i]->d_name);
|
||||
|
||||
if (have_hdidle)
|
||||
my_system(3, hdparm, M_opt, opt);
|
||||
else if (have_nonbb_hdparm)
|
||||
my_system(4, hdparm, M_opt, S_opt, opt);
|
||||
}
|
||||
else // busybox hdparm doesn't support "-M"
|
||||
my_system(3, hdparm, S_opt, opt);
|
||||
free(namelist[i]);
|
||||
}
|
||||
free(namelist);
|
||||
return 1;
|
||||
return menu_return::RETURN_NONE;
|
||||
}
|
||||
|
||||
static int dev_umount(char *dev)
|
||||
|
Reference in New Issue
Block a user