diff options
author | John Carr <jfc@mit.edu> | 1992-02-11 03:19:24 +0000 |
---|---|---|
committer | John Carr <jfc@mit.edu> | 1992-02-11 03:19:24 +0000 |
commit | 614b64d2d523cf721e8768353e05d532285aa800 (patch) | |
tree | 31aaf3a5d9ecbb9e8d629572ce3d7442f9e0f1cb /src/slave/kpropd.c | |
parent | 71fdba4c460d5eeb152869246f91aa8f999e50c0 (diff) | |
download | krb5-614b64d2d523cf721e8768353e05d532285aa800.tar.gz krb5-614b64d2d523cf721e8768353e05d532285aa800.tar.xz krb5-614b64d2d523cf721e8768353e05d532285aa800.zip |
Use vfork only on BSD systems, and union wait only on BSD systems
prior to 4.3 Reno.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@2204 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/slave/kpropd.c')
-rw-r--r-- | src/slave/kpropd.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/slave/kpropd.c b/src/slave/kpropd.c index 934801adff..31ec869b5c 100644 --- a/src/slave/kpropd.c +++ b/src/slave/kpropd.c @@ -803,7 +803,17 @@ load_database(kdb5_edit, database_file_name) { static char *edit_av[4]; int error_ret, save_stderr; + + /* <sys/param.h> has been included, so BSD will be defined on + BSD systems */ +#if BSD > 0 && BSD <= 43 +#ifndef WEXITSTATUS +#define WEXITSTATUS(w) (w).w_retcode +#endif union wait waitb; +#else + int waitb; +#endif char request[1024]; krb5_error_code retval; @@ -816,6 +826,10 @@ load_database(kdb5_edit, database_file_name) edit_av[1] = "-R"; edit_av[2] = request; edit_av[3] = NULL; + +#ifndef BSD +#define vfork fork +#endif switch(vfork()) { case -1: com_err(progname, errno, "while trying to fork %s", @@ -848,7 +862,7 @@ load_database(kdb5_edit, database_file_name) } } - if (error_ret = waitb.w_retcode) { + if (error_ret = WEXITSTATUS(waitb)) { com_err(progname, 0, "%s returned a bad exit status (%d)", kdb5_edit, error_ret); exit(1); |