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:
Stefan Seyfried
2013-12-25 22:51:23 +01:00
90 changed files with 1583 additions and 1578 deletions

View File

@@ -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)