exec_cmd: RUNTIME_PREFIX on z/OS systems

Enable Git to resolve its own binary location using __getprogramdir
and getprogname.

Since /proc is not a mandatory filesystem on z/OS, we cannot rely on the
git_get_exec_path_procfs method to determine Git's executable path. To
address this, we have implemented git_get_exec_path_zos, which resolves
the executable path by extracting it from the current program's
directory and filename.

Signed-off-by: D Harithamma <harithamma.d@ibm.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
D Harithamma
2024-08-22 13:52:12 +00:00
committed by Junio C Hamano
parent 3a7362eb9f
commit 987bbcd088
3 changed files with 32 additions and 0 deletions

View File

@ -150,6 +150,25 @@ static int git_get_exec_path_darwin(struct strbuf *buf)
}
#endif /* HAVE_NS_GET_EXECUTABLE_PATH */
#ifdef HAVE_ZOS_GET_EXECUTABLE_PATH
/*
* Resolves the executable path from current program's directory and name.
*
* Returns 0 on success, -1 on failure.
*/
static int git_get_exec_path_zos(struct strbuf *buf)
{
char *dir = __getprogramdir();
char *exe = getprogname();
if (dir && exe) {
strbuf_addf(buf, "%s/%s", dir, exe);
return 0;
}
return -1;
}
#endif /* HAVE_ZOS_GET_EXECUTABLE_PATH */
#ifdef HAVE_WPGMPTR
/*
* Resolves the executable path by using the global variable _wpgmptr.
@ -206,6 +225,10 @@ static int git_get_exec_path(struct strbuf *buf, const char *argv0)
git_get_exec_path_wpgmptr(buf) &&
#endif /* HAVE_WPGMPTR */
#ifdef HAVE_ZOS_GET_EXECUTABLE_PATH
git_get_exec_path_zos(buf) &&
#endif /*HAVE_ZOS_GET_EXECUTABLE_PATH */
git_get_exec_path_from_argv0(buf, argv0)) {
return -1;
}