compat/mingw.[ch]: Change return type of exec functions to int

The POSIX standard specifies a return type of int for all six exec functions. In addition, all exec functions return -1 on error, and simply do not return on success. However, the current emulation of the exec functions on mingw are declared with a void return type. This would cause a problem should any code attempt to call the exec function in a non-void context. In particular, if an exec function were used in a conditional it would fail to compile. In order to improve the fidelity of the emulation, we change the return type of the mingw_execv[p] functions to int and return -1 on error. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ramsay Jones committed Apr 5, 2012 at 18:48 UTC 1696d72321492c05bebd1e823de0708c13ec7d72
2 files changed +6 -4
compat/mingw.c
+4 -2
@@ -1003,7 +1003,7 @@ static void mingw_execve(const char *cmd, char *const *argv, char *const *env)
1003 }
1004 }
1005
1006 -void mingw_execvp(const char *cmd, char *const *argv)
1006 +int mingw_execvp(const char *cmd, char *const *argv)
1007 {
1008 char **path = get_path_split();
1009 char *prog = path_lookup(cmd, path, 0);
@@ -1015,11 +1015,13 @@ void mingw_execvp(const char *cmd, char *const *argv)
1015 errno = ENOENT;
1016
1017 free_path_split(path);
1018 + return -1;
1019 }
1020
1020 -void mingw_execv(const char *cmd, char *const *argv)
1021 +int mingw_execv(const char *cmd, char *const *argv)
1022 {
1023 mingw_execve(cmd, argv, environ);
1024 + return -1;
1025 }
1026
1027 int mingw_kill(pid_t pid, int sig)
compat/mingw.h
+2 -2
@@ -274,9 +274,9 @@ int mingw_utime(const char *file_name, const struct utimbuf *times);
274 pid_t mingw_spawnvpe(const char *cmd, const char **argv, char **env,
275 const char *dir,
276 int fhin, int fhout, int fherr);
277 -void mingw_execvp(const char *cmd, char *const *argv);
277 +int mingw_execvp(const char *cmd, char *const *argv);
278 #define execvp mingw_execvp
279 -void mingw_execv(const char *cmd, char *const *argv);
279 +int mingw_execv(const char *cmd, char *const *argv);
280 #define execv mingw_execv
281
282 static inline unsigned int git_ntohl(unsigned int x)