summaryrefslogtreecommitdiff
path: root/library/quickexec.cpp
Side-by-side diff
Diffstat (limited to 'library/quickexec.cpp') (more/less context) (show whitespace changes)
-rw-r--r--library/quickexec.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/library/quickexec.cpp b/library/quickexec.cpp
new file mode 100644
index 0000000..f3b5089
--- a/dev/null
+++ b/library/quickexec.cpp
@@ -0,0 +1,41 @@
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#define QUICKEXEC "/tmp/.quickexec"
+
+int quickexecv( const char *path, const char *argv[] )
+{
+ int fd = open( QUICKEXEC, O_WRONLY );
+ if ( fd == -1 ) {
+ perror( "quickexec pipe" );
+ return -1;
+ }
+ write( fd, path, strlen( path )+1 );
+ const char **s = argv;
+ while( *s ) {
+ write( fd, *s, strlen( *s )+1 );
+ ++s;
+ }
+ close(fd);
+ return 0;
+}
+
+int quickexec( const char *path, const char *, ...)
+{
+ int fd = open( QUICKEXEC, O_WRONLY );
+ if ( fd == -1 ) {
+ perror( "quickexec pipe" );
+ return -1;
+ }
+ const char** s = &path;
+ do {
+ write( fd, *s, strlen( *s )+1 );
+ } while ( *(++s) );
+
+ close( fd );
+
+ return 0;
+}