From bb2efeb45bafd6a40cb86fab574a7c670d4eeb62 Mon Sep 17 00:00:00 2001 From: satbaby Date: Tue, 2 Oct 2012 12:42:31 +0200 Subject: [PATCH] use my_system instead of system --- src/driver/record.cpp | 4 ++-- src/gui/hdd_menu.cpp | 38 +++++++++++++++++++++----------- src/gui/moviebrowser.cpp | 7 +++--- src/gui/network_service.cpp | 13 ++++++----- src/gui/settings_manager.cpp | 16 ++++++-------- src/gui/update.cpp | 12 +++++----- src/neutrino.cpp | 36 +++++++++++++++++++----------- src/system/configure_network.cpp | 14 ++++++------ 8 files changed, 80 insertions(+), 60 deletions(-) diff --git a/src/driver/record.cpp b/src/driver/record.cpp index 6e637611d..1112022d9 100644 --- a/src/driver/record.cpp +++ b/src/driver/record.cpp @@ -231,8 +231,8 @@ bool CRecordInstance::Stop(bool remove_event) CCamManager::getInstance()->Stop(channel_id, CCamManager::RECORD); if((autoshift && g_settings.auto_delete) /* || autoshift_delete*/) { - snprintf(buf,sizeof(buf), "nice -n 20 rm -f \"%s.ts\" &", filename); - system(buf); + snprintf(buf,sizeof(buf), "\"%s.ts\"", filename); + my_system("nice", "-n20", "rm", "-f", buf); snprintf(buf,sizeof(buf), "%s.xml", filename); //autoshift_delete = false; unlink(buf); diff --git a/src/gui/hdd_menu.cpp b/src/gui/hdd_menu.cpp index 88b618954..910506fe0 100644 --- a/src/gui/hdd_menu.cpp +++ b/src/gui/hdd_menu.cpp @@ -269,21 +269,34 @@ int CHDDMenuHandler::doMenu () int CHDDDestExec::exec(CMenuTarget* /*parent*/, const std::string&) { - char cmd[100]; + 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; + const char hdparm[] = "/sbin/hdparm"; + bool hdparm_link = false; + struct stat stat_buf; + if(::lstat(hdparm, &stat_buf) == 0) + if( S_ISLNK(stat_buf.st_mode) ) + hdparm_link = true; + 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); - //hdparm -M is not included in busybox hdparm! - //we need full version of hdparm or should remove -M parameter here - snprintf(cmd, sizeof(cmd), "hdparm -M%d -S%d /dev/%s >/dev/null 2>/dev/null &", - g_settings.hdd_noise, g_settings.hdd_sleep, namelist[i]->d_name); - system(cmd); + 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(hdparm, S_opt, opt); + }else{ + snprintf(M_opt, sizeof(M_opt),"-M%d", g_settings.hdd_noise); + my_system(hdparm, M_opt, S_opt, opt); + } free(namelist[i]); } free(namelist); @@ -327,7 +340,7 @@ int CHDDFmtExec::exec(CMenuTarget* /*parent*/, const std::string& key) if(res != CMessageBox::mbrYes) return 0; - bool srun = system("killall -9 smbd"); + bool srun = my_system("killall", "-9", "smbd"); //res = check_and_umount(dst); res = check_and_umount(src, dst); @@ -462,9 +475,8 @@ int CHDDFmtExec::exec(CMenuTarget* /*parent*/, const std::string& key) progress->showGlobalStatus(100); sleep(2); - snprintf(cmd, sizeof(cmd), "/sbin/tune2fs -r 0 -c 0 -i 0 %s", src); - printf("CHDDFmtExec: executing %s\n", cmd); - system(cmd); + printf("CHDDFmtExec: executing %s %s\n","/sbin/tune2fs -r 0 -c 0 -i 0", src); + my_system("/sbin/tune2fs", "-r 0", "-c 0", "-i 0", src); _remount: progress->hide(); @@ -498,7 +510,7 @@ _remount: sync(); } _return: - if(!srun) system("smbd"); + if(!srun) my_system("smbd",NULL); return menu_return::RETURN_REPAINT; } @@ -518,7 +530,7 @@ int CHDDChkExec::exec(CMenuTarget* /*parent*/, const std::string& key) printf("CHDDChkExec: key %s\n", key.c_str()); - bool srun = system("killall -9 smbd"); + bool srun = my_system("killall", "-9", "smbd"); //res = check_and_umount(dst); res = check_and_umount(src, dst); @@ -602,6 +614,6 @@ ret1: } printf("CHDDChkExec: mount res %d\n", res); - if(!srun) system("smbd"); + if(!srun) my_system("smbd",NULL); return menu_return::RETURN_REPAINT; } diff --git a/src/gui/moviebrowser.cpp b/src/gui/moviebrowser.cpp index 6f14c3d2c..b7fa267e8 100644 --- a/src/gui/moviebrowser.cpp +++ b/src/gui/moviebrowser.cpp @@ -71,6 +71,7 @@ #include #include #include +#include extern CPictureViewer * g_PicViewer; static CProgressBar *timescale; @@ -3593,10 +3594,8 @@ int CDirMenu::exec(CMenuTarget* parent, const std::string & actionKey) { if(dirState[number] == DIR_STATE_SERVER_DOWN) { - std::string command = "ether-wake "; - command += g_settings.network_nfs_mac[dirNfsMountNr[number]]; - printf("try to start server: %s\n",command.c_str()); - if(system(command.c_str()) != 0) + printf("try to start server: %s %s\n","ether-wake", g_settings.network_nfs_mac[dirNfsMountNr[number]]); + if(my_system("ether-wake", g_settings.network_nfs_mac[dirNfsMountNr[number]]) != 0) perror("ether-wake failed"); dirOptionText[number]="STARTE SERVER"; diff --git a/src/gui/network_service.cpp b/src/gui/network_service.cpp index 450c49953..23ca4bc48 100644 --- a/src/gui/network_service.cpp +++ b/src/gui/network_service.cpp @@ -34,6 +34,8 @@ #include #include +#include + #include #define TOUCH_BASE "/var/etc/." @@ -70,18 +72,17 @@ CNetworkService::CNetworkService(std::string cmd, std::string opts) void CNetworkService::Start() { - std::string cmd = command + " " + options; - printf("CNetworkService::Start: %s\n", cmd.c_str()); - system(cmd.c_str()); + printf("CNetworkService::Start: %s %s\n", command.c_str(), options.c_str()); + my_system( command.c_str(), options.c_str()); enabled = true; TouchFile(); } void CNetworkService::Stop() { - std::string cmd = "killall " + command; - printf("CNetworkService::Stop: %s\n", cmd.c_str()); - system(cmd.c_str()); + const char killall []= "killall"; + printf("CNetworkService::Stop: %s %s\n", killall, command.c_str()); + my_system(killall, command.c_str()); enabled = false; TouchFile(); } diff --git a/src/gui/settings_manager.cpp b/src/gui/settings_manager.cpp index 724fac6d7..9bb4f3c60 100644 --- a/src/gui/settings_manager.cpp +++ b/src/gui/settings_manager.cpp @@ -40,7 +40,7 @@ #include #include -#include +#include #include @@ -102,14 +102,13 @@ int CSettingsManager::exec(CMenuTarget* parent, const std::string &actionKey) fileBrowser.Dir_Mode = true; if (fileBrowser.exec("/media") == true) { - char fname[256]; struct statfs s; int ret = ::statfs(fileBrowser.getSelectedFile()->Name.c_str(), &s); if(ret == 0 && s.f_type != 0x72b6L) /*jffs2*/ { - sprintf(fname, "/bin/backup.sh %s", fileBrowser.getSelectedFile()->Name.c_str()); - printf("backup: executing [%s]\n", fname); - system(fname); + const char backup_sh[] = "/bin/backup.sh"; + printf("backup: executing [%s %s]\n",backup_sh, fileBrowser.getSelectedFile()->Name.c_str()); + my_system( backup_sh, fileBrowser.getSelectedFile()->Name.c_str() ); } else ShowMsgUTF(LOCALE_MESSAGEBOX_ERROR, g_Locale->getText(LOCALE_SETTINGS_BACKUP_FAILED),CMessageBox::mbrBack, CMessageBox::mbBack, NEUTRINO_ICON_ERROR); @@ -125,10 +124,9 @@ int CSettingsManager::exec(CMenuTarget* parent, const std::string &actionKey) int result = ShowMsgUTF(LOCALE_SETTINGS_RESTORE, g_Locale->getText(LOCALE_SETTINGS_RESTORE_WARN), CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo); if(result == CMessageBox::mbrYes) { - char fname[256]; - sprintf(fname, "/bin/restore.sh %s", fileBrowser.getSelectedFile()->Name.c_str()); - printf("restore: executing [%s]\n", fname); - system(fname); + const char restore_sh[] = "/bin/restore.sh"; + printf("restore: executing [%s %s]\n", restore_sh, fileBrowser.getSelectedFile()->Name.c_str()); + my_system( restore_sh, fileBrowser.getSelectedFile()->Name.c_str() ); } } return res; diff --git a/src/gui/update.cpp b/src/gui/update.cpp index 32551ec9f..d61b0f542 100644 --- a/src/gui/update.cpp +++ b/src/gui/update.cpp @@ -53,6 +53,7 @@ #include #include +#include #define SQUASHFS @@ -471,7 +472,7 @@ int CFlashUpdate::exec(CMenuTarget* parent, const std::string &) CFSMounter::umount(); ShowHintUTF(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_FLASHUPDATE_FLASHREADYREBOOT)); // UTF-8 - //system("/etc/init.d/rcK"); + //my_system("/etc/init.d/rcK"); ft.reboot(); sleep(20000); } @@ -492,13 +493,12 @@ int CFlashUpdate::exec(CMenuTarget* parent, const std::string &) } else // not image, install { - char cmd[100]; - sprintf(cmd, "install.sh %s %s", g_settings.update_dir, filename.c_str()); + const char install_sh[] = "/bin/install.sh"; #ifdef DEBUG1 - printf("[update] calling %s\n", cmd); + printf("[update] calling %s %s %s\n",install_sh, g_settings.update_dir, filename.c_str() ); #else - printf("[update] calling %s\n", cmd); - system(cmd); + printf("[update] calling %s %s %s\n",install_sh, g_settings.update_dir, filename.c_str() ); + my_system( install_sh, g_settings.update_dir, filename.c_str() ); #endif showGlobalStatus(100); ShowHintUTF(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_FLASHUPDATE_READY)); // UTF-8 diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 369f89771..4edd9607e 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -37,6 +37,9 @@ #include #include #include +#include +#include +#include #include @@ -557,9 +560,16 @@ int CNeutrinoApp::loadSetup(const char * fname) if(g_settings.auto_delete) { if(strcmp(g_settings.timeshiftdir, g_settings.network_nfs_recordingdir)) { - char buf[512]; - sprintf(buf, "rm -f %s/*_temp.ts %s/*_temp.xml &", timeshiftDir, timeshiftDir); - system(buf); + DIR *d = opendir(timeshiftDir); + while (struct dirent *e = readdir(d)) + { + std::string filename = e->d_name; + if ((filename.find("_temp.ts") == filename.size() - 8) || (filename.find("_temp.xml") == filename.size() - 9)) + { + remove(filename.c_str()); + } + } + closedir(d); } } g_settings.record_hours = configfile.getInt32( "record_hours", 4 ); @@ -1879,10 +1889,12 @@ TIMER_START(); g_CamHandler->init(); #ifndef ASSUME_MDEV - system("mkdir /media/sda1 2> /dev/null"); - system("mount /media/sda1 2> /dev/null"); - system("mkdir /media/sdb1 2> /dev/null"); - system("mount /media/sdb1 2> /dev/null"); + const char hddsda1[] = "/media/sda1"; + const char hddsdb1[] = "/media/sdb1"; + mkdir(hddsda1, 0755); + mount("/dev/sda1", hddsda1, "ext3", 0, NULL); + mkdir(hddsdb1,0755); + mount("/dev/sdb1", hddsdb1, "ext3", 0, NULL); #endif CFSMounter::automount(); @@ -2684,9 +2696,7 @@ _repeat: for(int i=0 ; i < NETWORK_NFS_NR_OF_ENTRIES ; i++) { if (strcmp(g_settings.network_nfs_local_dir[i],recordingDir) == 0) { printf("[neutrino] waking up %s (%s)\n",g_settings.network_nfs_ip[i].c_str(),recordingDir); - std::string command = "ether-wake "; - command += g_settings.network_nfs_mac[i]; - if(system(command.c_str()) != 0) + if(my_system("ether-wake",g_settings.network_nfs_mac[i]) != 0) perror("ether-wake failed"); break; } @@ -2946,8 +2956,8 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) //CVFD::getInstance()->ShowText(g_Locale->getText(LOCALE_MAINMENU_SHUTDOWN)); my_system("/etc/init.d/rcK"); - system("/bin/sync"); - system("/bin/umount -a"); + sync(); + my_system("/bin/umount", "-a"); sleep(1); { standby_data_t standby; @@ -3024,7 +3034,7 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) delete &CMoviePlayerGui::getInstance(); shutdown_cs_api(); - system("/etc/init.d/rcK"); + my_system("/etc/init.d/rcK"); CVFD::getInstance()->ShowIcon(VFD_ICON_CAM1, true); InfoClock->StopClock(); diff --git a/src/system/configure_network.cpp b/src/system/configure_network.cpp index 7ba9342ec..6eaa20d54 100644 --- a/src/system/configure_network.cpp +++ b/src/system/configure_network.cpp @@ -27,11 +27,11 @@ #include "configure_network.h" #include /* netGetNameserver, netSetNameserver */ #include /* getInetAttributes, setInetAttributes */ -#include /* system */ #include #include #include #include +#include CNetworkConfig::CNetworkConfig() { @@ -218,11 +218,11 @@ void CNetworkConfig::commitConfig(void) void CNetworkConfig::startNetwork(void) { - std::string cmd = "/sbin/ifup " + ifname; + const char _ifup[] = "/sbin/ifup"; #ifdef DEBUG - printf("CNetworkConfig::startNetwork: %s\n", cmd.c_str()); + printf("CNetworkConfig::startNetwork: %s %s\n",_ifup, ifname.c_str()); #endif - system(cmd.c_str()); + my_system(_ifup, ifname.c_str()); if (!inet_static) { init_vars(); @@ -232,11 +232,11 @@ void CNetworkConfig::startNetwork(void) void CNetworkConfig::stopNetwork(void) { - std::string cmd = "/sbin/ifdown " + ifname; + const char _ifdown[] = "/sbin/ifdown"; #ifdef DEBUG - printf("CNetworkConfig::stopNetwork: %s\n", cmd.c_str()); + printf("CNetworkConfig::stopNetwork: %s %s\n",_ifdown, ifname.c_str()); #endif - system(cmd.c_str()); + my_system(_ifdown, ifname.c_str()); }