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:
Stefan Seyfried
2014-12-25 18:03:08 +01:00
423 changed files with 23934 additions and 12351 deletions

View File

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