copy windows\kfwlogon\$(OUTPRE)*.exe "$(KRB_INSTALL_DIR)\bin\."
copy windows\kfwlogon\$(OUTPRE)*.dll "$(KRB_INSTALL_DIR)\bin\."
$(INSTALLDBGSYMS) windows\kfwlogon\$(OUTPRE)*.pdb "$(KRB_INSTALL_DIR)\bin\."
- copy util\windows\$(OUTPRE)*.lib $(KRB_INSTALL_DIR)\lib\."
copy util\wshelper\$(OUTPRE)$(DLIB).lib "$(KRB_INSTALL_DIR)\lib\."
copy util\wshelper\$(OUTPRE)$(DLIB).dll "$(KRB_INSTALL_DIR)\bin\."
$(INSTALLDBGSYMS) util\wshelper\$(OUTPRE)$(DLIB).pdb "$(KRB_INSTALL_DIR)\bin\."
lib/krb5/krb/strftime.c \
lib/krb5/krb/strptime.c \
slave/kpropd_rpc.c \
+ util/support/getopt.c \
+ util/support/getopt_long.c \
util/support/mkstemp.c \
- util/support/strlcpy.c \
- util/windows/getopt.c \
- util/windows/getopt.h \
- util/windows/getopt_long.c
+ util/support/strlcpy.c
OTHEREXCLUDES = \
include/iprop.h \
kcpytkt: kcpytkt.o $(KRB5_BASE_DEPLIBS)
$(CC_LINK) -o $@ kcpytkt.o $(KRB5_BASE_LIBS)
-##WIN32##$(KCPYTKT): $(OUTPRE)kcpytkt.obj $(BUILDTOP)\util\windows\$(OUTPRE)getopt.obj $(KLIB) $(CLIB) $(EXERES)
+##WIN32##$(KCPYTKT): $(OUTPRE)kcpytkt.obj $(SLIB) $(KLIB) $(CLIB) $(EXERES)
##WIN32## link $(EXE_LINKOPTS) /out:$@ $**
##WIN32## $(_VC_MANIFEST_EMBED_EXE)
#include <stdio.h>
#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
#include <string.h>
#include <krb5.h>
-
-extern int optind;
-extern char *optarg;
+#include "k5-platform.h"
static char *prog;
kdeltkt: kdeltkt.o $(KRB5_BASE_DEPLIBS)
$(CC_LINK) -o $@ kdeltkt.o $(KRB5_BASE_LIBS)
-##WIN32##$(KDELTKT): $(OUTPRE)kdeltkt.obj $(BUILDTOP)\util\windows\$(OUTPRE)getopt.obj $(KLIB) $(CLIB) $(EXERES)
+##WIN32##$(KDELTKT): $(OUTPRE)kdeltkt.obj $(SLIB) $(KLIB) $(CLIB) $(EXERES)
##WIN32## link $(EXE_LINKOPTS) /out:$@ $**
##WIN32## $(_VC_MANIFEST_EMBED_EXE)
#include <stdio.h>
#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
#include <string.h>
#include <krb5.h>
-
-extern int optind;
-extern char *optarg;
+#include "k5-platform.h"
static char *prog;
kdestroy: kdestroy.o $(KRB5_BASE_DEPLIBS)
$(CC_LINK) -o $@ kdestroy.o $(KRB5_BASE_LIBS)
-##WIN32##$(KDESTROY): $(OUTPRE)kdestroy.obj $(BUILDTOP)\util\windows\$(OUTPRE)getopt.obj $(KLIB) $(CLIB) $(EXERES)
+##WIN32##$(KDESTROY): $(OUTPRE)kdestroy.obj $(SLIB) $(KLIB) $(CLIB) $(EXERES)
##WIN32## link $(EXE_LINKOPTS) -out:$@ $**
##WIN32## $(_VC_MANIFEST_EMBED_EXE)
#include <locale.h>
#include <string.h>
#include <stdio.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef _WIN32
-#include <getopt.h>
-#endif
#ifdef __STDC__
#define BELL_CHAR '\a'
BUILDTOP=$(REL)..$(S)..
SRCS=kinit.c kinit_kdb.c
-
-##WIN32##LOCALINCLUDES=-I$(BUILDTOP)\util\windows
-##WIN32##DEFINES=-DGETOPT_LONG
+##WIN32##LOCALINCLUDES=-I$(BUILDTOP)\util\windows -I$(BUILDTOP)\util\support
##WIN32##VERSIONRC = $(BUILDTOP)\windows\version.rc
##WIN32##RCFLAGS=$(CPPFLAGS) -I$(top_srcdir) -D_WIN32 -DRES_ONLY
kinit: kinit.o kinit_kdb.o $(KRB5_BASE_DEPLIBS) $(KADMSRV_DEPLIBS)
$(CC_LINK) -o $@ kinit.o kinit_kdb.o $(KADMSRV_LIBS) $(KRB5_BASE_LIBS)
-##WIN32##$(KINIT): $(OUTPRE)kinit.obj $(BUILDTOP)\util\windows\$(OUTPRE)getopt.lib $(KLIB) $(CLIB) $(EXERES)
+##WIN32##$(KINIT): $(OUTPRE)kinit.obj $(SLIB) $(KLIB) $(CLIB) $(EXERES)
##WIN32## link $(EXE_LINKOPTS) -out:$@ $** advapi32.lib
##WIN32## $(_VC_MANIFEST_EMBED_EXE)
#include "autoconf.h"
#include <k5-int.h>
-#include "k5-platform.h" /* for asprintf */
+#include "k5-platform.h" /* for asprintf and getopt */
#include <krb5.h>
#include "extern.h"
#include <locale.h>
#include <errno.h>
#include <com_err.h>
-#ifdef GETOPT_LONG
-#include <getopt.h>
-#else
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#ifdef sun
-/* SunOS4 unistd didn't declare these; okay to make unconditional? */
-extern int optind;
-extern char *optarg;
-#endif /* sun */
-#else
-extern int optind;
-extern char *optarg;
-extern int getopt();
-#endif /* HAVE_UNISTD_H */
-#endif /* GETOPT_LONG */
-
#ifndef _WIN32
#define GET_PROGNAME(x) (strrchr((x), '/') ? strrchr((x), '/')+1 : (x))
#else
krb5_boolean switch_to_cache;
};
-#ifdef GETOPT_LONG
/* if struct[2] == NULL, then long_getopt acts as if the short flag
struct[3] was specified. If struct[2] != NULL, then struct[3] is
stored in *(struct[2]), the array index which was specified is
{ NULL, 0, NULL, 0 }
};
-#define GETOPT(argc, argv, str) getopt_long(argc, argv, str, long_options, 0)
-#else
-#define GETOPT(argc, argv, str) getopt(argc, argv, str)
-#endif
+const char *shopts = "r:fpFPn54aAVl:s:c:kit:T:RS:vX:CEI:";
static void
usage()
{
#define USAGE_BREAK "\n\t"
-#ifdef GETOPT_LONG
#define USAGE_LONG_FORWARDABLE " | --forwardable | --noforwardable"
#define USAGE_LONG_PROXIABLE " | --proxiable | --noproxiable"
#define USAGE_LONG_ADDRESSES " | --addresses | --noaddresses"
#define USAGE_LONG_CANONICALIZE " | --canonicalize"
#define USAGE_LONG_ENTERPRISE " | --enterprise"
#define USAGE_BREAK_LONG USAGE_BREAK
-#else
-#define USAGE_LONG_FORWARDABLE ""
-#define USAGE_LONG_PROXIABLE ""
-#define USAGE_LONG_ADDRESSES ""
-#define USAGE_LONG_CANONICALIZE ""
-#define USAGE_LONG_ENTERPRISE ""
-#define USAGE_BREAK_LONG ""
-#endif
fprintf(stderr, "Usage: %s [-V] "
"[-l lifetime] [-s start_time] "
int errflg = 0;
int i;
- while ((i = GETOPT(argc, argv,
- "r:fpFPn54aAVl:s:c:kit:T:RS:vX:CEI:")) != -1) {
+ while ((i = getopt_long(argc, argv, shopts, long_options, 0)) != -1) {
switch (i) {
case 'V':
opts->verbose = 1;
klist: klist.o $(KRB5_BASE_DEPLIBS)
$(CC_LINK) -o $@ klist.o $(KRB5_BASE_LIBS)
-##WIN32##$(KLIST): $(OUTPRE)klist.obj $(BUILDTOP)\util\windows\$(OUTPRE)getopt.lib $(SLIB) $(KLIB) $(CLIB) $(EXERES)
+##WIN32##$(KLIST): $(OUTPRE)klist.obj $(SLIB) $(KLIB) $(CLIB) $(EXERES)
##WIN32## link $(EXE_LINKOPTS) -out:$@ $** ws2_32.lib $(SCLIB)
##WIN32## $(_VC_MANIFEST_EMBED_EXE)
#include <com_err.h>
#include <locale.h>
#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef _WIN32
-#include <getopt.h>
-#endif
#include <string.h>
#include <stdio.h>
#include <time.h>
kswitch: kswitch.o $(KRB5_BASE_DEPLIBS)
$(CC_LINK) -o $@ kswitch.o $(KRB5_BASE_LIBS)
-##WIN32##$(KSWITCH): $(OUTPRE)kswitch.obj $(BUILDTOP)\util\windows\$(OUTPRE)getopt.obj $(KLIB) $(CLIB) $(EXERES)
+##WIN32##$(KSWITCH): $(OUTPRE)kswitch.obj $(SLIB) $(KLIB) $(CLIB) $(EXERES)
##WIN32## link $(EXE_LINKOPTS) -out:$@ $**
##WIN32## $(_VC_MANIFEST_EMBED_EXE)
kvno: kvno.o $(KRB5_BASE_DEPLIBS)
$(CC_LINK) -o $@ kvno.o $(KRB5_BASE_LIBS)
-##WIN32##$(KVNO): $(OUTPRE)kvno.obj $(BUILDTOP)\util\windows\$(OUTPRE)getopt.obj $(KLIB) $(CLIB) $(EXERES)
+##WIN32##$(KVNO): $(OUTPRE)kvno.obj $(SLIB) $(KLIB) $(CLIB) $(EXERES)
##WIN32## link $(EXE_LINKOPTS) /out:$@ $**
##WIN32## $(_VC_MANIFEST_EMBED_EXE)
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
-#ifdef _WIN32
-#include <getopt.h>
-#endif
-
#include <string.h>
extern int optind;
AC_SUBST(STRLCPY_OBJ)
AC_SUBST(STRLCPY_ST_OBJ)
+AC_CHECK_FUNC(getopt,
+[GETOPT_ST_OBJ=
+GETOPT_OBJ=
+AC_DEFINE(HAVE_GETOPT, 1, [Define if system getopt should be used.])],
+[GETOPT_ST_OBJ='getopt.o'
+GETOPT_OBJ='$(OUTPRE)getopt.$(OBJEXT)'
+EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS k5_optind k5_optarg k5_opterr k5_optopt k5_getopt"])
+AC_SUBST(GETOPT_OBJ)
+AC_SUBST(GETOPT_ST_OBJ)
+
+AC_CHECK_FUNC(getopt_long,
+[GETOPT_LONG_ST_OBJ=
+GETOPT_LONG_OBJ=
+AC_DEFINE(HAVE_GETOPT_LONG, 1, [Define if system getopt_long should be used.])],
+[GETOPT_LONG_ST_OBJ='getopt_long.o'
+GETOPT_LONG_OBJ='$(OUTPRE)getopt_long.$(OBJEXT)'
+EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS k5_getopt_long"])
+AC_SUBST(GETOPT_LONG_OBJ)
+AC_SUBST(GETOPT_LONG_ST_OBJ)
+
AC_CHECK_FUNC(fnmatch,
[FNMATCH_ST_OBJ=
FNMATCH_OBJ=],
#include <fnmatch.h>
#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
#ifdef _WIN32
#define CAN_COPY_VA_LIST
#endif
#endif
#define N_(s) s
+#if !defined(HAVE_GETOPT) || !defined(HAVE_UNISTD_H)
+extern int k5_opterr;
+extern int k5_optind;
+extern int k5_optopt;
+extern char *k5_optarg;
+#define opterr k5_opterr
+#define optind k5_optind
+#define optopt k5_optopt
+#define optarg k5_optarg
+
+extern int k5_getopt(int nargc, char * const nargv[], const char *ostr);
+#define getopt k5_getopt
+#endif /* HAVE_GETOPT */
+
+#ifdef HAVE_GETOPT_LONG
+#include <getopt.h>
+#else
+
+struct option
+{
+ const char *name;
+ int has_arg;
+ int *flag;
+ int val;
+};
+
+#define no_argument 0
+#define required_argument 1
+#define optional_argument 2
+
+extern int k5_getopt_long(int nargc, char **nargv, char *options,
+ struct option *long_options, int *index);
+#define getopt_long k5_getopt_long
+#endif /* HAVE_GETOPT_LONG */
+
#endif /* K5_PLATFORM_H */
##DOS##PRINTF_ST_OBJ= printf.o
##DOS##PRINTF_OBJ= $(OUTPRE)printf.$(OBJEXT)
+GETOPT_ST_OBJ= @GETOPT_ST_OBJ@
+GETOPT_OBJ= @GETOPT_OBJ@
+##DOS##GETOPT_ST_OBJ= getopt.o
+##DOS##GETOPT_OBJ= $(OUTPRE)getopt.$(OBJEXT)
+
+GETOPT_LONG_ST_OBJ= @GETOPT_LONG_ST_OBJ@
+GETOPT_LONG_OBJ= @GETOPT_LONG_OBJ@
+##DOS##GETOPT_LONG_ST_OBJ= getopt_long.o
+##DOS##GETOPT_LONG_OBJ= $(OUTPRE)getopt_long.$(OBJEXT)
+
IPC_ST_OBJ=
IPC_OBJ=
##DOS##IPC_ST_OBJ= ipc_stream.o
$(STRLCPY_ST_OBJ) \
$(FNMATCH_ST_OBJ) \
$(PRINTF_ST_OBJ) \
- $(MKSTEMP_ST_OBJ)
+ $(MKSTEMP_ST_OBJ) \
+ $(GETOPT_ST_OBJ) \
+ $(GETOPT_LONG_ST_OBJ)
LIBOBJS= \
$(OUTPRE)threads.$(OBJEXT) \
$(STRLCPY_OBJ) \
$(FNMATCH_OBJ) \
$(PRINTF_OBJ) \
- $(MKSTEMP_OBJ)
+ $(MKSTEMP_OBJ) \
+ $(GETOPT_OBJ) \
+ $(GETOPT_LONG_OBJ)
SRCS=\
$(srcdir)/threads.c \
$(srcdir)/json.c \
$(srcdir)/bcmp.c \
$(srcdir)/strerror_r.c \
- $(srcdir)/t_utf8.c
+ $(srcdir)/t_utf8.c \
+ $(srcdir)/getopt.c \
+ $(srcdir)/getopt_long.c
SHLIB_EXPDEPS =
# Add -lm if dumping thread stats, for sqrt.
EXTRA_SUPPORT_SYMS= @EXTRA_SUPPORT_SYMS@
##DOS##EXTRA_SUPPORT_SYMS= krb5int_mkstemp krb5int_strlcpy krb5int_strlcat \
+##DOS## k5_optind k5_optarg k5_opterr k5_optopt k5_getopt k5_getopt_long \
##DOS## krb5int_vasprintf krb5int_asprintf krb5int_gettimeofday $(IPC_SYMS)
##DOS##!if 0
t_utf8.so t_utf8.po $(OUTPRE)t_utf8.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \
$(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-thread.h \
$(top_srcdir)/include/k5-utf8.h t_utf8.c
+getopt.so getopt.po $(OUTPRE)getopt.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \
+ $(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-thread.h \
+ getopt.c
+getopt_long.so getopt_long.po $(OUTPRE)getopt_long.$(OBJEXT): \
+ $(BUILDTOP)/include/autoconf.h $(top_srcdir)/include/k5-platform.h \
+ $(top_srcdir)/include/k5-thread.h getopt_long.c
* SUCH DAMAGE.
*/
+#if !defined(HAVE_GETOPT) || !defined(HAVE_UNISTD_H)
#if 0
static char sccsid[] = "@(#)getopt.c 8.3 (Berkeley) 4/27/95";
#endif
#include <errno.h>
#include <stdio.h>
#include <string.h>
+#include "k5-platform.h"
#define __P(x) x
#define _DIAGASSERT(x) assert(x)
-#ifdef __weak_alias
-__weak_alias(getopt,_getopt);
-#endif
-
-
int opterr = 1, /* if error message should be printed */
optind = 1, /* index into parent argv vector */
- optopt, /* character checked for validity */
- optreset; /* reset getopt */
+ optopt; /* character checked for validity */
char *optarg; /* argument associated with option */
static char * _progname __P((char *));
_DIAGASSERT(nargv != NULL);
_DIAGASSERT(ostr != NULL);
- if (optreset || !*place) { /* update scanning pointer */
- optreset = 0;
+ if (!*place) { /* update scanning pointer */
if (optind >= nargc || *(place = nargv[optind]) != '-') {
place = EMSG;
return (-1);
}
return (optopt); /* dump back option letter */
}
+#endif /* !defined(HAVE_GETOPT) || !defined(HAVE_UNISTD_H) */
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+#ifndef HAVE_GETOPT_LONG
#include <assert.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include "getopt.h"
-
-extern int opterr; /* if error message should be printed */
-extern int optind; /* index into parent argv vector */
-extern int optopt; /* character checked for validity */
-extern int optreset; /* reset getopt */
-extern char *optarg; /* argument associated with option */
+#include "k5-platform.h"
#define __P(x) x
#define _DIAGASSERT(x) assert(x)
_DIAGASSERT(nargv != NULL);
_DIAGASSERT(ostr != NULL);
- if (optreset || !*place) { /* update scanning pointer */
- optreset = 0;
+ if (!*place) { /* update scanning pointer */
if (optind >= nargc || *(place = nargv[optind]) != '-') {
place = EMSG;
return (-1);
}
return(retval);
}
+#endif /* not HAVE_GETOPT_LONG */
BUILDTOP = ..\..
-all-windows:: $(OUTPRE)libecho.exe $(OUTPRE)getopt.lib
+all-windows:: $(OUTPRE)libecho.exe
$(OUTPRE)libecho.exe: $(OUTPRE)libecho.obj
link -out:$@ $** $(SCLIB)
$(_VC_MANIFEST_EMBED_EXE)
-
-$(OUTPRE)getopt.lib: $(OUTPRE)getopt.obj $(OUTPRE)getopt_long.obj
- lib -out:$@ $**
-
install-windows::
clean-windows::
+++ /dev/null
-/* -*- mode: c; c-file-style: "bsd"; indent-tabs-mode: t -*- */
-#ifndef __GETOPT_H__
-#define __GETOPT_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int opterr; /* if error message should be printed */
-extern int optind; /* index into parent argv vector */
-extern int optopt; /* character checked for validity */
-extern int optreset; /* reset getopt */
-extern char *optarg; /* argument associated with option */
-
-struct option
-{
- const char *name;
- int has_arg;
- int *flag;
- int val;
-};
-
-#define no_argument 0
-#define required_argument 1
-#define optional_argument 2
-
-int getopt(int, char**, char*);
-int getopt_long(int, char**, char*, struct option*, int*);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __GETOPT_H__ */
<Directory Id="dirlib_i386" Name="i386" FileSource="$(var.LibDir)">
<Component Win64="$(var.Win64)" Id="cmp_dirlib_i386" Guid="CFEE3ED4-92D4-49e1-BB78-8BCBC60C3E57" DiskId="1">
<File Id="fil_comerr32_lib" Name="comerr32.lib" />
- <File Id="fil_getopt_32_lib" Name="getopt.lib" />
<File Id="fil_gssapi32_lib" Name="gssapi32.lib" />
<File Id="fil_krb5_32_lib" Name="krb5_32.lib" KeyPath="yes" />
<File Id="fil_krbcc32_lib" Name="krbcc32.lib" />
<Directory Id="dirlib_amd64" Name="amd64" FileSource="$(var.LibDir)">
<Component Win64="$(var.Win64)" Id="cmp_dirlib_amd64" Guid="F9A54201-FFD6-4a45-B021-276D9F6C40A2" DiskId="1">
<File Id="fil_comerr64_lib" Name="comerr64.lib" />
- <File Id="fil_getopt_64_lib" Name="getopt.lib" />
<File Id="fil_gssapi64_lib" Name="gssapi64.lib" />
<File Id="fil_krb5_64_lib" Name="krb5_64.lib" KeyPath="yes" />
<File Id="fil_krbcc64_lib" Name="krbcc64.lib" />
all-windows:: $(MS2MIT) $(MIT2MS)
$(MS2MIT): $(OUTPRE)ms2mit.obj $(MS2MITRES)
- link $(EXE_LINKOPTS) -out:$@ $(OUTPRE)ms2mit.obj $(BUILDTOP)\util\windows\$(OUTPRE)getopt.obj user32.lib advapi32.lib $(KLIB) $(CLIB) $(MS2MITRES)
+ link $(EXE_LINKOPTS) -out:$@ $(OUTPRE)ms2mit.obj $(SLIB) user32.lib advapi32.lib $(KLIB) $(CLIB) $(MS2MITRES)
$(_VC_MANIFEST_EMBED_EXE)
$(MIT2MS): $(OUTPRE)mit2ms.obj $(MIT2MSRES)
- link $(EXE_LINKOPTS) -out:$@ $(OUTPRE)mit2ms.obj $(BUILDTOP)\util\windows\$(OUTPRE)getopt.obj user32.lib advapi32.lib $(KLIB) $(CLIB) $(MIT2MSRES)
+ link $(EXE_LINKOPTS) -out:$@ $(OUTPRE)mit2ms.obj $(SLIB) user32.lib advapi32.lib $(KLIB) $(CLIB) $(MIT2MSRES)
$(_VC_MANIFEST_EMBED_EXE)
install::
#include "krb5.h"
#include <stdio.h>
#include <string.h>
-
-extern int optind;
-extern char *optarg;
+#include "k5-platform.h"
static char *prog;
#include <string.h>
#include <time.h>
-extern int optind;
-extern char *optarg;
-
static char *prog;
static void