summaryrefslogtreecommitdiff
path: root/src/drivers/Darwin
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/Darwin')
-rw-r--r--src/drivers/Darwin/Fl_Darwin_System_Driver.H3
-rw-r--r--src/drivers/Darwin/Fl_Darwin_System_Driver.cxx10
2 files changed, 13 insertions, 0 deletions
diff --git a/src/drivers/Darwin/Fl_Darwin_System_Driver.H b/src/drivers/Darwin/Fl_Darwin_System_Driver.H
index 0bfce80d0..6cdd3b77f 100644
--- a/src/drivers/Darwin/Fl_Darwin_System_Driver.H
+++ b/src/drivers/Darwin/Fl_Darwin_System_Driver.H
@@ -44,6 +44,8 @@
class Fl_Darwin_System_Driver : public Fl_System_Driver
{
+private:
+ int run_program(const char *program, char **argv, char *msg, int msglen);
public:
Fl_Darwin_System_Driver();
virtual int single_arg(const char *arg);
@@ -71,6 +73,7 @@ public:
virtual int filename_list(const char *d, dirent ***list, int (*sort)(struct dirent **, struct dirent **) );
virtual const char *getpwnam(const char *login);
virtual int need_menu_handle_part2() {return 1;}
+ virtual int open_uri(const char *uri, char *msg, int msglen);
};
#endif // FL_DARWIN_SYSTEM_DRIVER_H
diff --git a/src/drivers/Darwin/Fl_Darwin_System_Driver.cxx b/src/drivers/Darwin/Fl_Darwin_System_Driver.cxx
index 2584a21c7..c8c8c0c32 100644
--- a/src/drivers/Darwin/Fl_Darwin_System_Driver.cxx
+++ b/src/drivers/Darwin/Fl_Darwin_System_Driver.cxx
@@ -143,6 +143,16 @@ const char *Fl_Darwin_System_Driver::getpwnam(const char *login) {
return pwd ? pwd->pw_dir : NULL;
}
+int Fl_Darwin_System_Driver::open_uri(const char *uri, char *msg, int msglen)
+{
+ char *argv[3]; // Command-line arguments
+ argv[0] = (char*)"open";
+ argv[1] = (char*)uri;
+ argv[2] = (char*)0;
+ if (msg) snprintf(msg, msglen, "open %s", uri);
+ return run_program("/usr/bin/open", argv, msg, msglen) != 0;
+}
+
//
// End of "$Id$".