close(2), dup(errhandle[1]);
execvp(*argv, argv);
- exit(1);
+ exit(EXIT_FAILURE);
} else {
/* fork failed */
goto task_popen_error_3;
}
- /*
- * clang is stupid, it doesn't understand that yes, this code
- * is actually reachable.
- */
-# ifdef __clang__
-# pragma clang diagnostic push
-# pragma clang diagnostic ignored "-Wunreachable-code"
-# endif
- if (argv)
- vec_free(argv);
-
-# ifdef __clang__
-# pragma clang diagnostic pop
-# endif
-
- return data->handles;
-
task_popen_error_3: close(errhandle[0]), close(errhandle[1]);
task_popen_error_2: close(outhandle[0]), close(outhandle[1]);
task_popen_error_1: close(inhandle [0]), close(inhandle [1]);
return status;
}
#else
-# define _WIN32_LEAN_AND_MEAN
-# define popen _popen
-# define pclose _pclose
-# include <windows.h>
+# define _WIN32_LEAN_AND_MEAN
+# define popen _popen
+# define pclose _pclose
+# include <windows.h>
# include <io.h>
-# include <fcntl.h>
+# include <fcntl.h>
/*
* Bidirectional piping implementation for windows using CreatePipe and DuplicateHandle +
* other hacks.
return;
}
-# ifdef __MINGW32__
+# ifdef __MINGW32__
/* mingw32 has dirent.h */
-# include <dirent.h>
-# elif defined (_MSC_VER)
+# include <dirent.h>
+# elif defined (_MSC_VER)
/*
* visual studio lacks dirent.h it's a posix thing
* so we emulate it with the WinAPI.
* Visual studio also lacks S_ISDIR for sys/stat.h, so we emulate this as well
* which is not hard at all.
*/
-# undef S_ISDIR /* undef just incase */
-# define S_ISDIR(X) ((X)&_S_IFDIR)
-# endif
+# undef S_ISDIR /* undef just incase */
+# define S_ISDIR(X) ((X)&_S_IFDIR)
+# endif
#endif
#define TASK_COMPILE 0