mirror of
https://github.com/edeproject/ede.git
synced 2023-08-10 21:13:03 +03:00
Added support for autostart files
This commit is contained in:
parent
c6cac70728
commit
0b351637b1
@ -17,6 +17,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <FL/Fl_Pixmap.H>
|
#include <FL/Fl_Pixmap.H>
|
||||||
#include <FL/Fl_Check_Browser.H>
|
#include <FL/Fl_Check_Browser.H>
|
||||||
@ -34,6 +35,8 @@
|
|||||||
#include <edelib/Nls.h>
|
#include <edelib/Nls.h>
|
||||||
#include <edelib/Debug.h>
|
#include <edelib/Debug.h>
|
||||||
#include <edelib/Run.h>
|
#include <edelib/Run.h>
|
||||||
|
#include <edelib/FileTest.h>
|
||||||
|
#include <edelib/MessageBox.h>
|
||||||
|
|
||||||
#include "icons/warning.xpm"
|
#include "icons/warning.xpm"
|
||||||
|
|
||||||
@ -45,6 +48,10 @@ EDELIB_NS_USING(system_config_dirs)
|
|||||||
EDELIB_NS_USING(user_config_dir)
|
EDELIB_NS_USING(user_config_dir)
|
||||||
EDELIB_NS_USING(str_ends)
|
EDELIB_NS_USING(str_ends)
|
||||||
EDELIB_NS_USING(run_async)
|
EDELIB_NS_USING(run_async)
|
||||||
|
EDELIB_NS_USING(ask)
|
||||||
|
EDELIB_NS_USING(file_test)
|
||||||
|
EDELIB_NS_USING(FILE_TEST_IS_REGULAR)
|
||||||
|
EDELIB_NS_USING(FILE_TEST_IS_EXECUTABLE)
|
||||||
|
|
||||||
#define CHECK_ARGV(argv, pshort, plong) ((strcmp(argv, pshort) == 0) || (strcmp(argv, plong) == 0))
|
#define CHECK_ARGV(argv, pshort, plong) ((strcmp(argv, pshort) == 0) || (strcmp(argv, plong) == 0))
|
||||||
|
|
||||||
@ -56,6 +63,14 @@ EDELIB_NS_USING(run_async)
|
|||||||
|
|
||||||
#define AUTOSTART_DIRNAME "/autostart/"
|
#define AUTOSTART_DIRNAME "/autostart/"
|
||||||
|
|
||||||
|
/* ordered names that will be searched */
|
||||||
|
static const char* autostart_names[] = {
|
||||||
|
".autorun",
|
||||||
|
"autorun",
|
||||||
|
"autorun.sh",
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
struct DialogEntry {
|
struct DialogEntry {
|
||||||
String name;
|
String name;
|
||||||
String exec;
|
String exec;
|
||||||
@ -272,6 +287,31 @@ static void perform_autostart(bool safe) {
|
|||||||
entry_list_run_clear(entry_list, true);
|
entry_list_run_clear(entry_list, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void perform_autostart_scripts(const char* path) {
|
||||||
|
int i;
|
||||||
|
String name;
|
||||||
|
|
||||||
|
for(i = 0; autostart_names[i]; i++) {
|
||||||
|
name = path;
|
||||||
|
name += E_DIR_SEPARATOR_STR;
|
||||||
|
name += autostart_names[i];
|
||||||
|
|
||||||
|
if(file_test(name.c_str(), FILE_TEST_IS_REGULAR | FILE_TEST_IS_EXECUTABLE)) {
|
||||||
|
if(ask(_("Mounted media at '%s' would like to start some files. "
|
||||||
|
"Content of these files is not checked and could be malicious. "
|
||||||
|
"Would you like to start them?"), path))
|
||||||
|
{
|
||||||
|
/* spec said how we must chdir to the root of the medium */
|
||||||
|
chdir(path);
|
||||||
|
AUTOSTART_RUN(name.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
/* we only match the one file */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void help(void) {
|
static void help(void) {
|
||||||
puts("Usage: ede-autostart [OPTIONS]");
|
puts("Usage: ede-autostart [OPTIONS]");
|
||||||
puts("EDE autostart utility");
|
puts("EDE autostart utility");
|
||||||
@ -314,6 +354,8 @@ int main(int argc, char** argv) {
|
|||||||
puts("Missing media parameter");
|
puts("Missing media parameter");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
} else {
|
} else {
|
||||||
printf("Unknown '%s' parameter. Run 'ede-autostart -h' for options\n", a);
|
printf("Unknown '%s' parameter. Run 'ede-autostart -h' for options\n", a);
|
||||||
return 1;
|
return 1;
|
||||||
@ -322,5 +364,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
if(media == NULL)
|
if(media == NULL)
|
||||||
perform_autostart(safe);
|
perform_autostart(safe);
|
||||||
|
else
|
||||||
|
perform_autostart_scripts(media);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user