mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-09-02 10:21:04 +02:00
Merge remote-tracking branch 'check/cst-next'
needs build- and functional fixes
Conflicts:
configure.ac
data/icons/shutdown.jpg
data/icons/start.jpg
data/locale/deutsch.locale
data/locale/english.locale
lib/libmd5sum/md5.c
src/driver/scanepg.cpp
src/driver/streamts.cpp
src/driver/vfd.cpp
src/driver/vfd.h
src/driver/volume.cpp
src/eitd/dmx.cpp
src/eitd/xmlutil.cpp
src/gui/Makefile.am
src/gui/audiomute.cpp
src/gui/channellist.cpp
src/gui/dboxinfo.cpp
src/gui/epgview.cpp
src/gui/eventlist.cpp
src/gui/filebrowser.cpp
src/gui/hdd_menu.cpp
src/gui/infoviewer.cpp
src/gui/infoviewer_bb.cpp
src/gui/infoviewer_bb.h
src/gui/keybind_setup.cpp
src/gui/luainstance.cpp
src/gui/luainstance.h
src/gui/miscsettings_menu.cpp
src/gui/moviebrowser.cpp
src/gui/movieplayer.cpp
src/gui/osd_progressbar_setup.cpp
src/gui/osd_progressbar_setup.h
src/gui/osd_setup.cpp
src/gui/osdlang_setup.cpp
src/gui/personalize.cpp
src/gui/plugins.cpp
src/gui/plugins.h
src/gui/scan.cpp
src/gui/scan_setup.cpp
src/gui/update_settings.cpp
src/gui/user_menue.cpp
src/gui/user_menue_setup.cpp
src/gui/videosettings.cpp
src/gui/widget/buttons.cpp
src/gui/widget/menue.cpp
src/gui/widget/menue.h
src/gui/widget/progresswindow.cpp
src/neutrino.cpp
src/neutrino_menue.cpp
src/nhttpd/yhttpd.cpp
src/system/helpers.cpp
src/system/locals.h
src/system/locals_intern.h
src/system/setting_helpers.cpp
src/zapit/lib/zapitclient.cpp
src/zapit/src/fastscan.cpp
src/zapit/src/frontend.cpp
src/zapit/src/getservices.cpp
src/zapit/src/scan.cpp
src/zapit/src/scannit.cpp
src/zapit/src/scanpmt.cpp
src/zapit/src/transponder.cpp
src/zapit/src/zapit.cpp
Origin commit data
------------------
Commit: 69c4dbbdba
Author: Stefan Seyfried <seife@tuxbox-git.slipkontur.de>
Date: 2014-12-25 (Thu, 25 Dec 2014)
This commit is contained in:
@@ -58,6 +58,7 @@
|
||||
|
||||
#include <mymenu.h>
|
||||
#include <driver/screen_max.h>
|
||||
#include <driver/record.h>
|
||||
|
||||
#define BLKID_BIN "/sbin/blkid"
|
||||
#define EJECT_BIN "/bin/eject"
|
||||
@@ -105,6 +106,8 @@ CHDDMenuHandler::CHDDMenuHandler()
|
||||
{
|
||||
width = w_max (58, 10);
|
||||
show_menu = false;
|
||||
in_menu = false;
|
||||
lock_refresh = false;
|
||||
}
|
||||
|
||||
CHDDMenuHandler::~CHDDMenuHandler()
|
||||
@@ -129,44 +132,6 @@ int CHDDMenuHandler::filterDevName(const char * name)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int CHDDMenuHandler::handleMsg(const neutrino_msg_t msg, neutrino_msg_data_t data)
|
||||
{
|
||||
if(msg != NeutrinoMessages::EVT_HOTPLUG)
|
||||
return messages_return::unhandled;
|
||||
|
||||
std::string str((char *) data);
|
||||
std::map<std::string,std::string> smap;
|
||||
|
||||
if (!split_config_string(str, smap))
|
||||
return messages_return::handled;
|
||||
|
||||
std::map<std::string,std::string>::iterator it = smap.find("MDEV");
|
||||
if (it == smap.end())
|
||||
return messages_return::handled;
|
||||
|
||||
std::string dev = it->second;
|
||||
|
||||
it = smap.find("ACTION");
|
||||
if (it == smap.end())
|
||||
return messages_return::handled;
|
||||
|
||||
bool added = it->second == "add";
|
||||
|
||||
printf("CHDDMenuHandler::handleMsg: %s MDEV=%s\n", it->second.c_str(), dev.c_str());
|
||||
|
||||
if (!filterDevName(dev.c_str()))
|
||||
return messages_return::handled;
|
||||
|
||||
bool mounted = is_mounted(dev.c_str());
|
||||
std::string message = dev + ": " + (added ?
|
||||
g_Locale->getText(mounted ? LOCALE_HDD_MOUNT_OK : LOCALE_HDD_MOUNT_FAILED)
|
||||
: g_Locale->getText(LOCALE_HDD_UMOUNTED));
|
||||
|
||||
ShowHint(LOCALE_MESSAGEBOX_INFO, message.c_str());
|
||||
|
||||
return messages_return::handled;
|
||||
}
|
||||
|
||||
bool CHDDMenuHandler::is_mounted(const char *dev)
|
||||
{
|
||||
bool res = false;
|
||||
@@ -207,7 +172,6 @@ void CHDDMenuHandler::getBlkIds()
|
||||
hdd_list.clear();
|
||||
char buff[512];
|
||||
while (fgets(buff, sizeof(buff), f)) {
|
||||
|
||||
std::string ret = buff;
|
||||
std::string search = "TYPE=\"";
|
||||
size_t pos = ret.find(search);
|
||||
@@ -288,10 +252,13 @@ bool CHDDMenuHandler::mount_dev(std::string name)
|
||||
#ifdef ASSUME_MDEV
|
||||
std::string cmd = std::string("ACTION=add") + " MDEV=" + name + " " + MDEV_MOUNT;
|
||||
#else
|
||||
std::string cmd = std::string("mount ") + "/dev/" + name + " " + MOUNT_BASE + name;
|
||||
std::string dst = MOUNT_BASE + name;
|
||||
safe_mkdir(dst.c_str());
|
||||
std::string cmd = std::string("mount ") + "/dev/" + name + " " + dst;
|
||||
#endif
|
||||
printf("CHDDMenuHandler::mount_dev: mount cmd [%s]\n", cmd.c_str());
|
||||
system(cmd.c_str());
|
||||
lock_refresh = true;
|
||||
return is_mounted(name.c_str());
|
||||
}
|
||||
|
||||
@@ -311,6 +278,7 @@ bool CHDDMenuHandler::umount_dev(std::string name)
|
||||
std::string eject = std::string(EJECT_BIN) + " /dev/" + name;
|
||||
system(eject.c_str());
|
||||
}
|
||||
lock_refresh = true;
|
||||
return !is_mounted(name.c_str());
|
||||
}
|
||||
|
||||
@@ -344,8 +312,7 @@ bool CHDDMenuHandler::add_dev(std::string dev, std::string part)
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
#ifdef ASSUME_MDEV
|
||||
|
||||
bool CHDDMenuHandler::waitfordev(std::string dev, int maxwait)
|
||||
{
|
||||
int ret = true;
|
||||
@@ -371,6 +338,126 @@ bool CHDDMenuHandler::waitfordev(std::string dev, int maxwait)
|
||||
}
|
||||
#endif
|
||||
|
||||
void CHDDMenuHandler::showHint(std::string &message)
|
||||
{
|
||||
CHintBox * hintBox = new CHintBox(LOCALE_MESSAGEBOX_INFO, message.c_str());
|
||||
hintBox->paint();
|
||||
|
||||
uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(3);
|
||||
neutrino_msg_t msg;
|
||||
neutrino_msg_data_t data;
|
||||
|
||||
while(true) {
|
||||
g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd);
|
||||
|
||||
if ((msg == CRCInput::RC_timeout) || (msg < CRCInput::RC_MaxRC))
|
||||
break;
|
||||
else if (msg == NeutrinoMessages::EVT_HOTPLUG) {
|
||||
g_RCInput->postMsg(msg, data);
|
||||
break;
|
||||
}
|
||||
else if (CNeutrinoApp::getInstance()->handleMsg(msg, data) & messages_return::cancel_all)
|
||||
break;
|
||||
}
|
||||
delete hintBox;
|
||||
}
|
||||
|
||||
void CHDDMenuHandler::setRecordPath(std::string &dev)
|
||||
{
|
||||
std::string newpath = std::string(MOUNT_BASE) + dev + "/movies";
|
||||
if (g_settings.network_nfs_recordingdir == newpath) {
|
||||
printf("CHDDMenuHandler::setRecordPath: recordingdir already set to %s\n", newpath.c_str());
|
||||
return;
|
||||
}
|
||||
bool old_menu = in_menu;
|
||||
in_menu = false;
|
||||
int res = ShowMsg(LOCALE_RECORDINGMENU_DEFDIR, LOCALE_HDD_SET_RECDIR, CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo);
|
||||
if(res == CMessageBox::mbrYes) {
|
||||
g_settings.network_nfs_recordingdir = newpath;
|
||||
CRecordManager::getInstance()->SetDirectory(g_settings.network_nfs_recordingdir);
|
||||
if(g_settings.timeshiftdir.empty())
|
||||
{
|
||||
std::string timeshiftDir = g_settings.network_nfs_recordingdir + "/.timeshift";
|
||||
safe_mkdir(timeshiftDir.c_str());
|
||||
printf("New timeshift dir: %s\n", timeshiftDir.c_str());
|
||||
CRecordManager::getInstance()->SetTimeshiftDirectory(timeshiftDir);
|
||||
}
|
||||
}
|
||||
in_menu = old_menu;
|
||||
}
|
||||
|
||||
int CHDDMenuHandler::handleMsg(const neutrino_msg_t msg, neutrino_msg_data_t data)
|
||||
{
|
||||
if (msg == NeutrinoMessages::EVT_HOTPLUG) {
|
||||
std::string str((char *) data);
|
||||
std::map<std::string,std::string> smap;
|
||||
|
||||
if (!split_config_string(str, smap))
|
||||
return messages_return::handled;
|
||||
|
||||
std::map<std::string,std::string>::iterator it = smap.find("MDEV");
|
||||
if (it == smap.end())
|
||||
return messages_return::handled;
|
||||
|
||||
std::string dev = it->second;
|
||||
printf("CHDDMenuHandler::handleMsg: MDEV=%s\n", dev.c_str());
|
||||
if (!filterDevName(dev.c_str()))
|
||||
return messages_return::handled;
|
||||
|
||||
it = smap.find("ACTION");
|
||||
if (it == smap.end())
|
||||
return messages_return::handled;
|
||||
|
||||
bool added = it->second == "add";
|
||||
bool mounted = is_mounted(dev.c_str());
|
||||
std::string tmp = dev.substr(0, 2);
|
||||
|
||||
if (added && !mounted && tmp != "sr") {
|
||||
std::string message = dev + ": " + g_Locale->getText(LOCALE_HDD_MOUNT_FAILED);
|
||||
message += std::string(" ") + g_Locale->getText(LOCALE_HDD_FORMAT) + std::string(" ?");
|
||||
int res = ShowMsg(LOCALE_MESSAGEBOX_INFO, message, CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo);
|
||||
if(res == CMessageBox::mbrYes) {
|
||||
unsigned char * p = new unsigned char[dev.size() + 1];
|
||||
if (p) {
|
||||
sprintf((char *)p, "%s", dev.c_str());
|
||||
g_RCInput->postMsg(NeutrinoMessages::EVT_FORMAT_DRIVE , (neutrino_msg_data_t)p);
|
||||
return messages_return::handled | messages_return::cancel_all;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
std::string message = dev + ": " + (added ?
|
||||
g_Locale->getText(mounted ? LOCALE_HDD_MOUNT_OK : LOCALE_HDD_MOUNT_FAILED)
|
||||
: g_Locale->getText(LOCALE_HDD_UMOUNTED));
|
||||
showHint(message);
|
||||
if (added && tmp != "sr")
|
||||
setRecordPath(dev);
|
||||
}
|
||||
if (in_menu && !lock_refresh) {
|
||||
show_menu = true;
|
||||
return messages_return::handled | messages_return::cancel_all;
|
||||
}
|
||||
lock_refresh = false;
|
||||
return messages_return::handled;
|
||||
}
|
||||
else if (msg == NeutrinoMessages::EVT_FORMAT_DRIVE) {
|
||||
std::string dev((char *) data);
|
||||
printf("NeutrinoMessages::EVT_FORMAT_DRIVE: [%s]\n", dev.c_str());
|
||||
check_dev_tools();
|
||||
getBlkIds();
|
||||
scanDevices();
|
||||
for (std::map<std::string, std::string>::iterator it = devtitle.begin(); it != devtitle.end(); ++it) {
|
||||
if (dev.substr(0, it->first.size()) == it->first) {
|
||||
showDeviceMenu(it->first);
|
||||
break;
|
||||
}
|
||||
}
|
||||
hdd_list.clear();
|
||||
devtitle.clear();
|
||||
return messages_return::handled;
|
||||
}
|
||||
return messages_return::unhandled;
|
||||
}
|
||||
|
||||
int CHDDMenuHandler::exec(CMenuTarget* parent, const std::string &actionkey)
|
||||
{
|
||||
if (parent)
|
||||
@@ -405,7 +492,15 @@ int CHDDMenuHandler::exec(CMenuTarget* parent, const std::string &actionkey)
|
||||
return checkDevice(dev);
|
||||
}
|
||||
else if (actionkey[0] == 'f') {
|
||||
return formatDevice(dev);
|
||||
int ret = formatDevice(dev);
|
||||
#if 0
|
||||
std::string devname = "/dev/" + dev + getDefaultPart(dev);
|
||||
if (show_menu && is_mounted(devname.c_str())) {
|
||||
devname = dev + getDefaultPart(dev);
|
||||
setRecordPath(devname);
|
||||
}
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
return menu_return::RETURN_REPAINT;
|
||||
}
|
||||
@@ -472,71 +567,38 @@ int CHDDMenuHandler::showDeviceMenu(std::string dev)
|
||||
mf->setHint("", LOCALE_MENU_HINT_HDD_FORMAT);
|
||||
hddmenu->addItem(mf);
|
||||
|
||||
|
||||
int res = hddmenu->exec(NULL, "");
|
||||
delete hddmenu;
|
||||
return res;
|
||||
}
|
||||
|
||||
int CHDDMenuHandler::doMenu()
|
||||
bool CHDDMenuHandler::scanDevices()
|
||||
{
|
||||
struct dirent **namelist;
|
||||
int ret;
|
||||
struct stat s;
|
||||
int root_dev = -1;
|
||||
|
||||
check_dev_tools();
|
||||
_show_menu:
|
||||
bool hdd_found = false;
|
||||
int n = scandir("/sys/block", &namelist, my_filter, alphasort);
|
||||
|
||||
if (n < 0) {
|
||||
perror("CHDDMenuHandler::doMenu: scandir(\"/sys/block\") failed");
|
||||
return menu_return::RETURN_REPAINT;
|
||||
perror("CHDDMenuHandler::scanDevices: scandir(\"/sys/block\") failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
CMenuWidget* hddmenu = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_DRIVESETUP);
|
||||
|
||||
hddmenu->addIntroItems(LOCALE_HDD_SETTINGS, LOCALE_HDD_EXTENDED_SETTINGS);
|
||||
|
||||
CHDDDestExec hddexec;
|
||||
CMenuForwarder * mf = new CMenuForwarder(LOCALE_HDD_ACTIVATE, true, "", &hddexec, NULL, CRCInput::RC_red,NEUTRINO_ICON_BUTTON_RED);
|
||||
mf->setHint("", LOCALE_MENU_HINT_HDD_APPLY);
|
||||
hddmenu->addItem(mf);
|
||||
|
||||
CMenuOptionChooser * mc = new CMenuOptionChooser(LOCALE_HDD_SLEEP, &g_settings.hdd_sleep, HDD_SLEEP_OPTIONS, HDD_SLEEP_OPTION_COUNT, true);
|
||||
mc->setHint("", LOCALE_MENU_HINT_HDD_SLEEP);
|
||||
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);
|
||||
}
|
||||
|
||||
hddmenu->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_HDD_MANAGE));
|
||||
|
||||
ret = stat("/", &s);
|
||||
int drive_mask = 0xfff0;
|
||||
if (ret != -1) {
|
||||
if (stat("/", &s) != -1)
|
||||
{
|
||||
if ((s.st_dev & drive_mask) == 0x0300) /* hda, hdb,... has max 63 partitions */
|
||||
drive_mask = 0xffc0; /* hda: 0x0300, hdb: 0x0340, sda: 0x0800, sdb: 0x0810 */
|
||||
root_dev = (s.st_dev & drive_mask);
|
||||
}
|
||||
printf("HDD: root_dev: 0x%04x\n", root_dev);
|
||||
|
||||
getBlkIds();
|
||||
|
||||
for(int i = 0; i < n;i++) {
|
||||
char str[256];
|
||||
char vendor[128] = { 0 };
|
||||
char model[128] = { 0 };
|
||||
int64_t bytes = 0;
|
||||
int64_t megabytes;
|
||||
int removable = 0;
|
||||
bool oldkernel = false;
|
||||
bool isroot = false;
|
||||
|
||||
@@ -547,7 +609,7 @@ _show_menu:
|
||||
if (ioctl(fd, BLKGETSIZE64, &bytes))
|
||||
perror("BLKGETSIZE64");
|
||||
|
||||
ret = fstat(fd, &s);
|
||||
int ret = fstat(fd, &s);
|
||||
if (ret != -1) {
|
||||
if ((int)(s.st_rdev & drive_mask) == root_dev) {
|
||||
isroot = true;
|
||||
@@ -559,6 +621,8 @@ _show_menu:
|
||||
} else {
|
||||
printf("Cant open %s\n", str);
|
||||
}
|
||||
if (isroot)
|
||||
continue;
|
||||
|
||||
megabytes = bytes/1000000;
|
||||
|
||||
@@ -592,7 +656,8 @@ _show_menu:
|
||||
fscanf(f, "%s", model);
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
#if 0
|
||||
int removable = 0;
|
||||
snprintf(str, sizeof(str), "/sys/block/%s/removable", namelist[i]->d_name);
|
||||
f = fopen(str, "r");
|
||||
if(!f) {
|
||||
@@ -601,7 +666,7 @@ _show_menu:
|
||||
}
|
||||
fscanf(f, "%d", &removable);
|
||||
fclose(f);
|
||||
|
||||
#endif
|
||||
std::string dev = std::string(namelist[i]->d_name).substr(0, 2);
|
||||
std::string fmt = getFmtType(namelist[i]->d_name);
|
||||
/* epmty cdrom do not appear in blkid output */
|
||||
@@ -614,24 +679,62 @@ _show_menu:
|
||||
hdd_list.push_back(hdd);
|
||||
}
|
||||
|
||||
bool enabled = !CNeutrinoApp::getInstance()->recordingstatus && !isroot && dev != "sr";
|
||||
|
||||
snprintf(str, sizeof(str), "%s %s %ld %s", vendor, model, (long)(megabytes < 10000 ? megabytes : megabytes/1000), megabytes < 10000 ? "MB" : "GB");
|
||||
printf("HDD: %s\n", str);
|
||||
devtitle[namelist[i]->d_name] = str;
|
||||
|
||||
std::string key = "d" + std::string(namelist[i]->d_name);
|
||||
mf = new CMenuForwarder(namelist[i]->d_name, enabled, devtitle[namelist[i]->d_name], this, key.c_str());
|
||||
mf->setHint("", LOCALE_MENU_HINT_HDD_TOOLS);
|
||||
hddmenu->addItem(mf);
|
||||
|
||||
hdd_found = true;
|
||||
free(namelist[i]);
|
||||
}
|
||||
if (n >= 0)
|
||||
free(namelist);
|
||||
return !devtitle.empty();
|
||||
}
|
||||
|
||||
if(!hdd_found) {
|
||||
int CHDDMenuHandler::doMenu()
|
||||
{
|
||||
show_menu = false;
|
||||
in_menu = true;
|
||||
|
||||
check_dev_tools();
|
||||
|
||||
_show_menu:
|
||||
getBlkIds();
|
||||
scanDevices();
|
||||
|
||||
CMenuWidget* hddmenu = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_DRIVESETUP);
|
||||
|
||||
hddmenu->addIntroItems(LOCALE_HDD_SETTINGS, LOCALE_HDD_EXTENDED_SETTINGS);
|
||||
|
||||
CHDDDestExec hddexec;
|
||||
CMenuForwarder * mf = new CMenuForwarder(LOCALE_HDD_ACTIVATE, true, "", &hddexec, NULL, CRCInput::RC_red);
|
||||
mf->setHint("", LOCALE_MENU_HINT_HDD_APPLY);
|
||||
hddmenu->addItem(mf);
|
||||
|
||||
CMenuOptionChooser * mc = new CMenuOptionChooser(LOCALE_HDD_SLEEP, &g_settings.hdd_sleep, HDD_SLEEP_OPTIONS, HDD_SLEEP_OPTION_COUNT, true);
|
||||
mc->setHint("", LOCALE_MENU_HINT_HDD_SLEEP);
|
||||
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);
|
||||
}
|
||||
|
||||
hddmenu->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_HDD_MANAGE));
|
||||
|
||||
for (std::map<std::string, std::string>::iterator it = devtitle.begin(); it != devtitle.end(); ++it) {
|
||||
std::string dev = it->first.substr(0, 2);
|
||||
bool enabled = !CNeutrinoApp::getInstance()->recordingstatus && dev != "sr";
|
||||
std::string key = "d" + it->first;
|
||||
mf = new CMenuForwarder(it->first, enabled, it->second, this, key.c_str());
|
||||
mf->setHint("", LOCALE_MENU_HINT_HDD_TOOLS);
|
||||
hddmenu->addItem(mf);
|
||||
}
|
||||
|
||||
if(devtitle.empty()) {
|
||||
//if no drives found, select 'back'
|
||||
if (hddmenu->getSelected() != -1)
|
||||
hddmenu->setSelected(2);
|
||||
@@ -639,20 +742,31 @@ _show_menu:
|
||||
}
|
||||
|
||||
if (!hdd_list.empty()) {
|
||||
struct stat rec_st;
|
||||
memset(&rec_st, 0, sizeof(rec_st));
|
||||
stat(g_settings.network_nfs_recordingdir.c_str(), &rec_st);
|
||||
|
||||
sort(hdd_list.begin(), hdd_list.end(), cmp_hdd_by_name());
|
||||
mount = g_Locale->getText(LOCALE_HDD_MOUNT);
|
||||
umount = g_Locale->getText(LOCALE_HDD_UMOUNT);
|
||||
int shortcut = 1;
|
||||
hddmenu->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_HDD_MOUNT_UMOUNT));
|
||||
for (std::vector<hdd_s>::iterator it = hdd_list.begin(); it != hdd_list.end(); ++it) {
|
||||
const char * rec_icon = NULL;
|
||||
if (it->mounted) {
|
||||
std::string dst = MOUNT_BASE + it->devname;
|
||||
if (!stat(dst.c_str(), &stat_buf) && rec_st.st_dev == stat_buf.st_dev)
|
||||
rec_icon = CNeutrinoApp::getInstance()->recordingstatus ? NEUTRINO_ICON_REC : NEUTRINO_ICON_REC_GRAY;
|
||||
}
|
||||
std::string key = "m" + it->devname;
|
||||
it->cmf = new CMenuForwarder(it->desc, true, it->mounted ? umount : mount , this,
|
||||
key.c_str(), CRCInput::convertDigitToKey(shortcut++));
|
||||
bool enabled = !rec_icon || !CNeutrinoApp::getInstance()->recordingstatus;
|
||||
it->cmf = new CMenuForwarder(it->desc, enabled, it->mounted ? umount : mount , this,
|
||||
key.c_str(), CRCInput::convertDigitToKey(shortcut++), NULL, rec_icon);
|
||||
hddmenu->addItem(it->cmf);
|
||||
}
|
||||
}
|
||||
|
||||
ret = hddmenu->exec(NULL, "");
|
||||
int ret = hddmenu->exec(NULL, "");
|
||||
|
||||
delete hddmenu;
|
||||
hdd_list.clear();
|
||||
@@ -661,6 +775,7 @@ _show_menu:
|
||||
show_menu = false;
|
||||
goto _show_menu;
|
||||
}
|
||||
in_menu = false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -825,7 +940,7 @@ int CHDDMenuHandler::formatDevice(std::string dev)
|
||||
std::string mkfscmd = devtool->mkfs + " " + devtool->mkfs_options + " " + partname;
|
||||
printf("mkfs cmd: [%s]\n", mkfscmd.c_str());
|
||||
|
||||
res = ShowMsg ( LOCALE_HDD_FORMAT, g_Locale->getText(LOCALE_HDD_FORMAT_WARN), CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo );
|
||||
res = ShowMsg(LOCALE_HDD_FORMAT, g_Locale->getText(LOCALE_HDD_FORMAT_WARN), CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo );
|
||||
if(res != CMessageBox::mbrYes)
|
||||
return menu_return::RETURN_REPAINT;
|
||||
|
||||
@@ -833,7 +948,6 @@ int CHDDMenuHandler::formatDevice(std::string dev)
|
||||
|
||||
res = umount_all(dev);
|
||||
printf("CHDDMenuHandler::formatDevice: umount res %d\n", res);
|
||||
system("df"); // FIXME: debug
|
||||
|
||||
if(!res) {
|
||||
showError(LOCALE_HDD_UMOUNT_WARN);
|
||||
@@ -878,6 +992,8 @@ int CHDDMenuHandler::formatDevice(std::string dev)
|
||||
printf("CHDDMenuHandler::formatDevice: executing %s\n", cmd);
|
||||
f = popen(cmd, "w");
|
||||
if (!f) {
|
||||
showError(LOCALE_HDD_FORMAT_FAILED);
|
||||
res = -1;
|
||||
goto _remount;
|
||||
}
|
||||
show_menu = true;
|
||||
@@ -887,7 +1003,7 @@ int CHDDMenuHandler::formatDevice(std::string dev)
|
||||
printf("CHDDMenuHandler::formatDevice: (s)fdisk res: %d\n", res);
|
||||
if (res) {
|
||||
showError(LOCALE_HDD_FORMAT_FAILED);
|
||||
goto _return;
|
||||
goto _remount;
|
||||
}
|
||||
sleep(2);
|
||||
#ifdef ASSUME_MDEV
|
||||
@@ -899,6 +1015,7 @@ int CHDDMenuHandler::formatDevice(std::string dev)
|
||||
f = popen(mkfscmd.c_str(), "r");
|
||||
if (!f) {
|
||||
showError(LOCALE_HDD_FORMAT_FAILED);
|
||||
res = -1;
|
||||
goto _remount;
|
||||
}
|
||||
|
||||
@@ -929,6 +1046,8 @@ int CHDDMenuHandler::formatDevice(std::string dev)
|
||||
break;
|
||||
case 1:
|
||||
if (in == '\b' && sscanf(buf, "%d/%d\b", &n, &t) == 2) {
|
||||
if (t == 0)
|
||||
t = 1;
|
||||
int percent = 100 * n / t;
|
||||
progress->showLocalStatus(percent);
|
||||
progress->showGlobalStatus(20 + percent / 5);
|
||||
@@ -968,7 +1087,7 @@ int CHDDMenuHandler::formatDevice(std::string dev)
|
||||
progress->showGlobalStatus(100);
|
||||
if (res) {
|
||||
showError(LOCALE_HDD_FORMAT_FAILED);
|
||||
goto _return;
|
||||
goto _remount;
|
||||
}
|
||||
sleep(2);
|
||||
|
||||
@@ -984,7 +1103,6 @@ _remount:
|
||||
progress->hide();
|
||||
delete progress;
|
||||
|
||||
//getBlkIds();
|
||||
#ifndef ASSUME_MDEV
|
||||
f = fopen("/proc/sys/kernel/hotplug", "w");
|
||||
if(f) {
|
||||
@@ -992,24 +1110,24 @@ _remount:
|
||||
fclose(f);
|
||||
}
|
||||
#endif
|
||||
res = mount_dev(devpart);
|
||||
system("df"); // FIXME: debug
|
||||
if (!res) {
|
||||
res = mount_dev(devpart);
|
||||
|
||||
if(res) {
|
||||
std::string dst = MOUNT_BASE + devpart;
|
||||
snprintf(cmd, sizeof(cmd), "%s/movies", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
snprintf(cmd, sizeof(cmd), "%s/pictures", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
snprintf(cmd, sizeof(cmd), "%s/epg", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
snprintf(cmd, sizeof(cmd), "%s/music", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
snprintf(cmd, sizeof(cmd), "%s/logos", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
snprintf(cmd, sizeof(cmd), "%s/plugins", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
sync();
|
||||
if(res) {
|
||||
std::string dst = MOUNT_BASE + devpart;
|
||||
snprintf(cmd, sizeof(cmd), "%s/movies", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
snprintf(cmd, sizeof(cmd), "%s/pictures", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
snprintf(cmd, sizeof(cmd), "%s/epg", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
snprintf(cmd, sizeof(cmd), "%s/music", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
snprintf(cmd, sizeof(cmd), "%s/logos", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
snprintf(cmd, sizeof(cmd), "%s/plugins", dst.c_str());
|
||||
safe_mkdir(cmd);
|
||||
sync();
|
||||
#if HAVE_TRIPLEDRAGON
|
||||
/* on the tripledragon, we mount via fstab, so we need to add an
|
||||
fstab entry for dst */
|
||||
@@ -1043,6 +1161,7 @@ _remount:
|
||||
rename("/etc/fstab.new", "/etc/fstab");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
_return:
|
||||
if (!srun) my_system(1, "smbd");
|
||||
@@ -1114,11 +1233,13 @@ int CHDDMenuHandler::checkDevice(std::string dev)
|
||||
progress->showLocalStatus(percent);
|
||||
}
|
||||
}
|
||||
else if(!strncmp(buf, "Pass", 4)) {
|
||||
else {
|
||||
char *t = strrchr(buf, '\n');
|
||||
if (t)
|
||||
*t = 0;
|
||||
progress->showStatusMessageUTF(buf);
|
||||
if(!strncmp(buf, "Pass", 4)) {
|
||||
progress->showStatusMessageUTF(buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
//printf("CHDDChkExec: %s\n", buf);
|
||||
|
Reference in New Issue
Block a user