]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - test.c
gitignore: add gmqcc, gmqpak, qmcvm, testsuite, pak.
[xonotic/gmqcc.git] / test.c
diff --git a/test.c b/test.c
old mode 100755 (executable)
new mode 100644 (file)
index 40bf798..7722af2
--- a/test.c
+++ b/test.c
@@ -26,7 +26,7 @@
 
 opts_cmd_t opts;
 
-const char *task_bins[] = {
+static const char *task_bins[] = {
     "./gmqcc",
     "./qcvm"
 };
@@ -116,9 +116,9 @@ FILE ** task_popen(const char *command, const char *mode) {
         close(errhandle[0]);
 
         /* see piping documentation for this sillyness :P */
-        close(0)dup(inhandle [0]);
-        close(1)dup(outhandle[1]);
-        close(2)dup(errhandle[1]);
+        close(0); (void)!dup(inhandle [0]);
+        close(1); (void)!dup(outhandle[1]);
+        close(2); (void)!dup(errhandle[1]);
 
         execvp(*argv, argv);
         exit(EXIT_FAILURE);
@@ -152,19 +152,15 @@ int task_pclose(FILE **handles) {
     return status;
 }
 #else
-    /*
-     * Bidirectional piping implementation for windows using CreatePipe and DuplicateHandle +
-     * other hacks.
-     */
     typedef struct {
-        char name_err[L_tmpnam];
-        char name_out[L_tmpnam];
+        FILE *handles[3];
+        char  name_err[L_tmpnam];
+        char  name_out[L_tmpnam];
     } popen_t;
 
     FILE **task_popen(const char *command, const char *mode) {
-        FILE   **handles = NULL;
-        char    *cmd     = NULL;
-        popen_t *open    = (popen_t*)mem_a(sizeof(popen_t) * 3);
+        char    *cmd  = NULL;
+        popen_t *open = (popen_t*)mem_a(sizeof(popen_t));
 
         tmpnam(open->name_err);
         tmpnam(open->name_out);
@@ -174,16 +170,17 @@ int task_pclose(FILE **handles) {
         util_asprintf(&cmd, "%s -redirout=%s -redirerr=%s", command, open->name_out, open->name_err);
 
         system(cmd); /* HACK */
-        handles    = (FILE**)(open + 1);
-        handles[0] = NULL;
-        handles[1] = fs_file_open(open->name_out, "r");
-        handles[2] = fs_file_open(open->name_err, "r");
+        open->handles[0] = NULL;
+        open->handles[1] = fs_file_open(open->name_out, "r");
+        open->handles[2] = fs_file_open(open->name_err, "r");
+
+        mem_d(cmd);
 
-        return handles;
+        return open->handles;
     }
 
     void task_pclose(FILE **files) {
-        popen_t *open = ((popen_t*)files) - 1;
+        popen_t *open = ((popen_t*)files);
         fs_file_close(files[1]);
         fs_file_close(files[2]);
         remove(open->name_err);
@@ -657,7 +654,7 @@ typedef struct {
     bool             compiled;
 } task_t;
 
-task_t *task_tasks = NULL;
+static task_t *task_tasks = NULL;
 
 /*
  * Read a directory and searches for all template files in it