kopia lustrzana https://github.com/jamescoxon/dl-fldigi
Thumbdrive
* discover application executable location * if the directory in which "fldigi" / "fldigi.exe" resides contains a file named NBEMS.DIR then base all NBEMS file locations to that drive-folder * this allows a fully portble NBEMS installation to a thumbdrive (or other portable drive) * it also allows a very easy way to install multiple NBEMS suites for different target uses on a single hard drivepull/1/head
rodzic
0c1f37148b
commit
1d6469f4d1
|
@ -1731,16 +1731,55 @@ int main (int argc, char *argv[] )
|
|||
set_terminate(diediedie);
|
||||
setup_signal_handlers();
|
||||
|
||||
NBEMS_dir.clear();
|
||||
{
|
||||
string appname = argv[0];
|
||||
string appdir;
|
||||
char dirbuf[FL_PATH_MAX + 1];
|
||||
fl_filename_expand(dirbuf, FL_PATH_MAX, appname.c_str());
|
||||
appdir.assign(dirbuf);
|
||||
|
||||
#ifdef __WOE32__
|
||||
fl_filename_expand(dirbuf, sizeof(dirbuf) - 1, "$USERPROFILE/NBEMS.files/");
|
||||
NBEMS_dir = dirbuf;
|
||||
size_t p = appdir.rfind("flarq.exe");
|
||||
if (p != std::string::npos) {
|
||||
appdir.erase(p);
|
||||
string testfile;
|
||||
testfile.assign(appdir).append("NBEMS.DIR");
|
||||
FILE *testdir = fopen(testfile.c_str(),"r");
|
||||
if (testdir) {
|
||||
fclose(testdir);
|
||||
NBEMS_dir = appdir;
|
||||
}
|
||||
}
|
||||
if (NBEMS_dir.empty()) {
|
||||
fl_filename_expand(dirbuf, FL_PATH_MAX, "$USERPROFILE/");
|
||||
NBEMS_dir = dirbuf;
|
||||
}
|
||||
NBEMS_dir.append("NBEMS.files\\");
|
||||
#else
|
||||
fl_filename_expand(dirbuf, sizeof(dirbuf) - 1, "$HOME/.nbems/");
|
||||
NBEMS_dir = dirbuf;
|
||||
size_t p = appdir.rfind("flarq");
|
||||
if (p != std::string::npos) {
|
||||
if (appdir.find("./flarq") != std::string::npos) {
|
||||
if (getcwd(dirbuf, FL_PATH_MAX))
|
||||
appdir.assign(dirbuf).append("/");
|
||||
} else
|
||||
appdir.erase(p);
|
||||
string testfile;
|
||||
testfile.assign(appdir).append("NBEMS.DIR");
|
||||
FILE *testdir = fopen(testfile.c_str(),"r");
|
||||
if (testdir) {
|
||||
fclose(testdir);
|
||||
NBEMS_dir = appdir;
|
||||
}
|
||||
}
|
||||
if (NBEMS_dir.empty()) {
|
||||
fl_filename_expand(dirbuf, FL_PATH_MAX, "$HOME/");
|
||||
NBEMS_dir = dirbuf;
|
||||
}
|
||||
NBEMS_dir.append(".nbems/");
|
||||
#endif
|
||||
}
|
||||
|
||||
checkdirectories();
|
||||
|
||||
Logfile = ARQ_dir;
|
||||
|
|
|
@ -50,6 +50,8 @@ extern Fl_Double_Window *fl_digi_main;
|
|||
extern Fl_Double_Window *scopeview;
|
||||
//extern Fl_Double_Window *opBrowserView;
|
||||
|
||||
extern bool NBEMSapps_dir;
|
||||
|
||||
extern FTextRX *ReceiveText;
|
||||
extern FTextTX *TransmitText;
|
||||
extern pskBrowser *mainViewer;
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#endif
|
||||
|
||||
extern std::string appname;
|
||||
extern std::string BaseDir;
|
||||
extern std::string HomeDir;
|
||||
extern std::string RigsDir;
|
||||
extern std::string ScriptsDir;
|
||||
|
|
|
@ -318,6 +318,12 @@ void rx_extract_add(int c)
|
|||
|
||||
void select_flmsg_pathname()
|
||||
{
|
||||
if (NBEMSapps_dir) {
|
||||
progdefaults.flmsg_pathname.assign(BaseDir).append("flmsg.exe");
|
||||
progdefaults.changed = true;
|
||||
txt_flmsg_pathname->value(progdefaults.flmsg_pathname.c_str());
|
||||
return;
|
||||
}
|
||||
#ifdef __APPLE__
|
||||
open_recv_folder("/Applications/");
|
||||
return;
|
||||
|
|
33
src/main.cxx
33
src/main.cxx
|
@ -122,6 +122,7 @@ string appname;
|
|||
|
||||
string scDevice[2];
|
||||
|
||||
bool NBEMSapps_dir = false;
|
||||
string BaseDir = "";
|
||||
string HomeDir = "";
|
||||
string RigsDir = "";
|
||||
|
@ -238,6 +239,36 @@ void delayed_startup(void *)
|
|||
int main(int argc, char ** argv)
|
||||
{
|
||||
appname = argv[0];
|
||||
{
|
||||
string appdir;
|
||||
char apptemp[FL_PATH_MAX];
|
||||
fl_filename_expand(apptemp, sizeof(apptemp), appname.c_str());
|
||||
appdir.assign(apptemp);
|
||||
|
||||
#ifdef __WOE32__
|
||||
size_t p = appdir.rfind("fldigi.exe");
|
||||
appdir.erase(p);
|
||||
#else
|
||||
size_t p = appdir.rfind("fldigi");
|
||||
if (appdir.find("./fldigi") != std::string::npos) {
|
||||
if (getcwd(apptemp, sizeof(apptemp)))
|
||||
appdir.assign(apptemp).append("/");
|
||||
} else
|
||||
appdir.erase(p);
|
||||
#endif
|
||||
|
||||
if (p != std::string::npos) {
|
||||
string testfile;
|
||||
testfile.assign(appdir).append("NBEMS.DIR");
|
||||
FILE *testdir = fopen(testfile.c_str(),"r");
|
||||
if (testdir) {
|
||||
fclose(testdir);
|
||||
BaseDir = appdir;
|
||||
NBEMSapps_dir = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
debug_exec(argv);
|
||||
CREATE_THREAD_ID(); // only call this once
|
||||
SET_THREAD_ID(FLMAIN_TID);
|
||||
|
@ -316,6 +347,8 @@ int main(int argc, char ** argv)
|
|||
debug::stop();
|
||||
}
|
||||
|
||||
LOG_INFO("appname: %s", appname.c_str());
|
||||
|
||||
LOG_INFO("HomeDir: %s", HomeDir.c_str());
|
||||
LOG_INFO("RigsDir: %s", RigsDir.c_str());
|
||||
LOG_INFO("ScriptsDir: %s", ScriptsDir.c_str());
|
||||
|
|
Ładowanie…
Reference in New Issue