summaryrefslogtreecommitdiffstats
path: root/crypto/heimdal/appl/ftp/ftpd
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/heimdal/appl/ftp/ftpd')
-rw-r--r--crypto/heimdal/appl/ftp/ftpd/Makefile.am9
-rw-r--r--crypto/heimdal/appl/ftp/ftpd/Makefile.in456
-rw-r--r--crypto/heimdal/appl/ftp/ftpd/ftpcmd.y10
-rw-r--r--crypto/heimdal/appl/ftp/ftpd/ftpd.812
-rw-r--r--crypto/heimdal/appl/ftp/ftpd/ftpd.c41
-rw-r--r--crypto/heimdal/appl/ftp/ftpd/gss_userok.c5
-rw-r--r--crypto/heimdal/appl/ftp/ftpd/ls.c292
-rw-r--r--crypto/heimdal/appl/ftp/ftpd/popen.c10
8 files changed, 508 insertions, 327 deletions
diff --git a/crypto/heimdal/appl/ftp/ftpd/Makefile.am b/crypto/heimdal/appl/ftp/ftpd/Makefile.am
index 8753739..20f8b57 100644
--- a/crypto/heimdal/appl/ftp/ftpd/Makefile.am
+++ b/crypto/heimdal/appl/ftp/ftpd/Makefile.am
@@ -1,4 +1,4 @@
-# $Id: Makefile.am,v 1.23 2001/01/28 23:17:36 assar Exp $
+# $Id: Makefile.am,v 1.26 2001/09/06 12:18:34 assar Exp $
include $(top_srcdir)/Makefile.am.common
@@ -46,11 +46,10 @@ CLEANFILES = security.c security.h krb4.c gssapi.c ftpcmd.c
man_MANS = ftpd.8 ftpusers.5
LDADD = ../common/libcommon.a \
- $(LIB_kafs) \
- $(LIB_gssapi) \
$(LIB_otp) \
+ $(LIB_gssapi) \
$(LIB_krb5) \
+ $(LIB_kafs) \
$(LIB_krb4) \
$(LIB_des) \
- $(LIB_roken) \
- $(DBLIB)
+ $(LIB_roken)
diff --git a/crypto/heimdal/appl/ftp/ftpd/Makefile.in b/crypto/heimdal/appl/ftp/ftpd/Makefile.in
index cd67376..1795007 100644
--- a/crypto/heimdal/appl/ftp/ftpd/Makefile.in
+++ b/crypto/heimdal/appl/ftp/ftpd/Makefile.in
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4b from Makefile.am
+# Makefile.in generated automatically by automake 1.5 from Makefile.am.
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -11,6 +11,16 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+@SET_MAKE@
+
+# $Id: Makefile.am,v 1.26 2001/09/06 12:18:34 assar Exp $
+
+
+# $Id: Makefile.am.common,v 1.3 1999/04/01 14:58:43 joda Exp $
+
+
+# $Id: Makefile.am.common,v 1.31 2001/09/01 11:12:18 assar Exp $
+
SHELL = @SHELL@
srcdir = @srcdir@
@@ -31,11 +41,9 @@ infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
-
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-
top_builddir = ../../..
ACLOCAL = @ACLOCAL@
@@ -47,21 +55,17 @@ INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_FLAG =
+INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@
-
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
-
-@SET_MAKE@
host_alias = @host_alias@
host_triplet = @host@
AIX_EXTRA_KAFS = @AIX_EXTRA_KAFS@
-AMDEP = @AMDEP@
AMTAR = @AMTAR@
AS = @AS@
AWK = @AWK@
@@ -69,11 +73,11 @@ CANONICAL_HOST = @CANONICAL_HOST@
CATMAN = @CATMAN@
CATMANEXT = @CATMANEXT@
CC = @CC@
+COMPILE_ET = @COMPILE_ET@
CPP = @CPP@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
DBLIB = @DBLIB@
DEPDIR = @DEPDIR@
+DIR_com_err = @DIR_com_err@
DIR_des = @DIR_des@
DIR_roken = @DIR_roken@
DLLTOOL = @DLLTOOL@
@@ -82,20 +86,27 @@ EXTRA_LIB45 = @EXTRA_LIB45@
GROFF = @GROFF@
INCLUDES_roken = @INCLUDES_roken@
INCLUDE_ = @INCLUDE_@
+INCLUDE_des = @INCLUDE_des@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LEX = @LEX@
LIBOBJS = @LIBOBJS@
LIBTOOL = @LIBTOOL@
LIB_ = @LIB_@
LIB_AUTH_SUBDIRS = @LIB_AUTH_SUBDIRS@
+LIB_NDBM = @LIB_NDBM@
+LIB_com_err = @LIB_com_err@
+LIB_com_err_a = @LIB_com_err_a@
+LIB_com_err_so = @LIB_com_err_so@
LIB_des = @LIB_des@
+LIB_des_a = @LIB_des_a@
LIB_des_appl = @LIB_des_appl@
+LIB_des_so = @LIB_des_so@
LIB_kdb = @LIB_kdb@
LIB_otp = @LIB_otp@
LIB_roken = @LIB_roken@
LIB_security = @LIB_security@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
NEED_WRITEAUTH_FALSE = @NEED_WRITEAUTH_FALSE@
NEED_WRITEAUTH_TRUE = @NEED_WRITEAUTH_TRUE@
NROFF = @NROFF@
@@ -103,38 +114,32 @@ OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
-STRIP = @STRIP@
VERSION = @VERSION@
VOID_RETSIGTYPE = @VOID_RETSIGTYPE@
WFLAGS = @WFLAGS@
WFLAGS_NOIMPLICITINT = @WFLAGS_NOIMPLICITINT@
WFLAGS_NOUNUSED = @WFLAGS_NOUNUSED@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
YACC = @YACC@
+am__include = @am__include@
+am__quote = @am__quote@
dpagaix_CFLAGS = @dpagaix_CFLAGS@
dpagaix_LDADD = @dpagaix_LDADD@
install_sh = @install_sh@
-# $Id: Makefile.am,v 1.23 2001/01/28 23:17:36 assar Exp $
-
-
-# $Id: Makefile.am.common,v 1.3 1999/04/01 14:58:43 joda Exp $
-
-
-# $Id: Makefile.am.common,v 1.26 2001/05/21 13:27:48 joda Exp $
-
-
-AUTOMAKE_OPTIONS = foreign no-dependencies
+AUTOMAKE_OPTIONS = foreign no-dependencies 1.4b
SUFFIXES = .et .h .1 .3 .5 .8 .cat1 .cat3 .cat5 .cat8 .x
INCLUDES = -I$(top_builddir)/include $(INCLUDES_roken) -I$(srcdir)/../common $(INCLUDE_krb4) -DFTP_SERVER
-AM_CFLAGS = $(WFLAGS)
+AM_CFLAGS = $(WFLAGS)
CP = cp
-COMPILE_ET = $(top_builddir)/lib/com_err/compile_et
-
buildinclude = $(top_builddir)/include
LIB_XauReadAuth = @LIB_XauReadAuth@
@@ -152,8 +157,8 @@ LIB_getsockopt = @LIB_getsockopt@
LIB_logout = @LIB_logout@
LIB_logwtmp = @LIB_logwtmp@
LIB_odm_initialize = @LIB_odm_initialize@
+LIB_openpty = @LIB_openpty@
LIB_pidfile = @LIB_pidfile@
-LIB_readline = @LIB_readline@
LIB_res_search = @LIB_res_search@
LIB_setpcred = @LIB_setpcred@
LIB_setsockopt = @LIB_setsockopt@
@@ -175,25 +180,27 @@ INCLUDE_openldap = @INCLUDE_openldap@
LIB_openldap = @LIB_openldap@
INCLUDE_readline = @INCLUDE_readline@
+LIB_readline = @LIB_readline@
LEXLIB = @LEXLIB@
NROFF_MAN = groff -mandoc -Tascii
-@KRB4_TRUE@LIB_kafs = @KRB4_TRUE@$(top_builddir)/lib/kafs/libkafs.la $(AIX_EXTRA_KAFS)
+@KRB4_TRUE@LIB_kafs = $(top_builddir)/lib/kafs/libkafs.la $(AIX_EXTRA_KAFS)
-@KRB5_TRUE@LIB_krb5 = @KRB5_TRUE@$(top_builddir)/lib/krb5/libkrb5.la \
+@KRB5_TRUE@LIB_krb5 = $(top_builddir)/lib/krb5/libkrb5.la \
@KRB5_TRUE@ $(top_builddir)/lib/asn1/libasn1.la
-@KRB5_TRUE@LIB_gssapi = @KRB5_TRUE@$(top_builddir)/lib/gssapi/libgssapi.la
-@DCE_TRUE@LIB_kdfs = @DCE_TRUE@$(top_builddir)/lib/kdfs/libkdfs.la
+@KRB5_TRUE@LIB_gssapi = $(top_builddir)/lib/gssapi/libgssapi.la
+
+@DCE_TRUE@LIB_kdfs = $(top_builddir)/lib/kdfs/libkdfs.la
CHECK_LOCAL =
libexec_PROGRAMS = ftpd
-@KRB4_TRUE@krb4_sources = @KRB4_TRUE@krb4.c kauth.c
-@KRB5_TRUE@krb5_sources = @KRB5_TRUE@gssapi.c gss_userok.c
+@KRB4_TRUE@krb4_sources = krb4.c kauth.c
+@KRB5_TRUE@krb5_sources = gssapi.c gss_userok.c
ftpd_SOURCES = \
extern.h \
@@ -216,159 +223,151 @@ CLEANFILES = security.c security.h krb4.c gssapi.c ftpcmd.c
man_MANS = ftpd.8 ftpusers.5
LDADD = ../common/libcommon.a \
- $(LIB_kafs) \
- $(LIB_gssapi) \
$(LIB_otp) \
+ $(LIB_gssapi) \
$(LIB_krb5) \
+ $(LIB_kafs) \
$(LIB_krb4) \
$(LIB_des) \
- $(LIB_roken) \
- $(DBLIB)
+ $(LIB_roken)
subdir = appl/ftp/ftpd
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = ../../../include/config.h
-CONFIG_CLEAN_FILES =
-libexec_PROGRAMS = ftpd$(EXEEXT)
-PROGRAMS = $(libexec_PROGRAMS)
-
-
-DEFS = @DEFS@ -I. -I$(srcdir) -I../../../include
+CONFIG_HEADER = $(top_builddir)/include/config.h
+CONFIG_CLEAN_FILES =
+libexec_PROGRAMS = ftpd$(EXEEXT)
+PROGRAMS = $(libexec_PROGRAMS)
+
+@KRB4_FALSE@@KRB5_TRUE@am_ftpd_OBJECTS = ftpcmd.$(OBJEXT) ftpd.$(OBJEXT) \
+@KRB4_FALSE@@KRB5_TRUE@ logwtmp.$(OBJEXT) ls.$(OBJEXT) \
+@KRB4_FALSE@@KRB5_TRUE@ popen.$(OBJEXT) security.$(OBJEXT) \
+@KRB4_FALSE@@KRB5_TRUE@ gssapi.$(OBJEXT) gss_userok.$(OBJEXT)
+@KRB4_FALSE@@KRB5_FALSE@am_ftpd_OBJECTS = ftpcmd.$(OBJEXT) \
+@KRB4_FALSE@@KRB5_FALSE@ ftpd.$(OBJEXT) logwtmp.$(OBJEXT) \
+@KRB4_FALSE@@KRB5_FALSE@ ls.$(OBJEXT) popen.$(OBJEXT) \
+@KRB4_FALSE@@KRB5_FALSE@ security.$(OBJEXT)
+@KRB4_TRUE@@KRB5_TRUE@am_ftpd_OBJECTS = ftpcmd.$(OBJEXT) ftpd.$(OBJEXT) \
+@KRB4_TRUE@@KRB5_TRUE@ logwtmp.$(OBJEXT) ls.$(OBJEXT) \
+@KRB4_TRUE@@KRB5_TRUE@ popen.$(OBJEXT) security.$(OBJEXT) \
+@KRB4_TRUE@@KRB5_TRUE@ krb4.$(OBJEXT) kauth.$(OBJEXT) \
+@KRB4_TRUE@@KRB5_TRUE@ gssapi.$(OBJEXT) gss_userok.$(OBJEXT)
+@KRB4_TRUE@@KRB5_FALSE@am_ftpd_OBJECTS = ftpcmd.$(OBJEXT) ftpd.$(OBJEXT) \
+@KRB4_TRUE@@KRB5_FALSE@ logwtmp.$(OBJEXT) ls.$(OBJEXT) \
+@KRB4_TRUE@@KRB5_FALSE@ popen.$(OBJEXT) security.$(OBJEXT) \
+@KRB4_TRUE@@KRB5_FALSE@ krb4.$(OBJEXT) kauth.$(OBJEXT)
+ftpd_OBJECTS = $(am_ftpd_OBJECTS)
+ftpd_LDADD = $(LDADD)
+@KRB4_FALSE@@KRB5_TRUE@ftpd_DEPENDENCIES = ../common/libcommon.a \
+@KRB4_FALSE@@KRB5_TRUE@ $(top_builddir)/lib/gssapi/libgssapi.la \
+@KRB4_FALSE@@KRB5_TRUE@ $(top_builddir)/lib/krb5/libkrb5.la \
+@KRB4_FALSE@@KRB5_TRUE@ $(top_builddir)/lib/asn1/libasn1.la
+@KRB4_FALSE@@KRB5_FALSE@ftpd_DEPENDENCIES = ../common/libcommon.a
+@KRB4_TRUE@@KRB5_TRUE@ftpd_DEPENDENCIES = ../common/libcommon.a \
+@KRB4_TRUE@@KRB5_TRUE@ $(top_builddir)/lib/gssapi/libgssapi.la \
+@KRB4_TRUE@@KRB5_TRUE@ $(top_builddir)/lib/krb5/libkrb5.la \
+@KRB4_TRUE@@KRB5_TRUE@ $(top_builddir)/lib/asn1/libasn1.la \
+@KRB4_TRUE@@KRB5_TRUE@ $(top_builddir)/lib/kafs/libkafs.la
+@KRB4_TRUE@@KRB5_FALSE@ftpd_DEPENDENCIES = ../common/libcommon.a \
+@KRB4_TRUE@@KRB5_FALSE@ $(top_builddir)/lib/kafs/libkafs.la
+ftpd_LDFLAGS =
+
+DEFS = @DEFS@
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
-X_CFLAGS = @X_CFLAGS@
-X_LIBS = @X_LIBS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-@KRB4_FALSE@@KRB5_FALSE@am_ftpd_OBJECTS = ftpcmd.$(OBJEXT) \
-@KRB4_FALSE@@KRB5_FALSE@ftpd.$(OBJEXT) logwtmp.$(OBJEXT) ls.$(OBJEXT) \
-@KRB4_FALSE@@KRB5_FALSE@popen.$(OBJEXT) security.$(OBJEXT)
-@KRB4_FALSE@@KRB5_TRUE@am_ftpd_OBJECTS = ftpcmd.$(OBJEXT) \
-@KRB4_FALSE@@KRB5_TRUE@ftpd.$(OBJEXT) logwtmp.$(OBJEXT) ls.$(OBJEXT) \
-@KRB4_FALSE@@KRB5_TRUE@popen.$(OBJEXT) security.$(OBJEXT) \
-@KRB4_FALSE@@KRB5_TRUE@gssapi.$(OBJEXT) gss_userok.$(OBJEXT)
-@KRB4_TRUE@@KRB5_FALSE@am_ftpd_OBJECTS = ftpcmd.$(OBJEXT) \
-@KRB4_TRUE@@KRB5_FALSE@ftpd.$(OBJEXT) logwtmp.$(OBJEXT) ls.$(OBJEXT) \
-@KRB4_TRUE@@KRB5_FALSE@popen.$(OBJEXT) security.$(OBJEXT) \
-@KRB4_TRUE@@KRB5_FALSE@krb4.$(OBJEXT) kauth.$(OBJEXT)
-@KRB4_TRUE@@KRB5_TRUE@am_ftpd_OBJECTS = ftpcmd.$(OBJEXT) ftpd.$(OBJEXT) \
-@KRB4_TRUE@@KRB5_TRUE@logwtmp.$(OBJEXT) ls.$(OBJEXT) popen.$(OBJEXT) \
-@KRB4_TRUE@@KRB5_TRUE@security.$(OBJEXT) krb4.$(OBJEXT) kauth.$(OBJEXT) \
-@KRB4_TRUE@@KRB5_TRUE@gssapi.$(OBJEXT) gss_userok.$(OBJEXT)
-ftpd_OBJECTS = $(am_ftpd_OBJECTS)
-ftpd_LDADD = $(LDADD)
-@KRB4_FALSE@@KRB5_FALSE@ftpd_DEPENDENCIES = ../common/libcommon.a
-@KRB4_FALSE@@KRB5_TRUE@ftpd_DEPENDENCIES = ../common/libcommon.a \
-@KRB4_FALSE@@KRB5_TRUE@$(top_builddir)/lib/gssapi/libgssapi.la \
-@KRB4_FALSE@@KRB5_TRUE@$(top_builddir)/lib/krb5/libkrb5.la \
-@KRB4_FALSE@@KRB5_TRUE@$(top_builddir)/lib/asn1/libasn1.la
-@KRB4_TRUE@@KRB5_FALSE@ftpd_DEPENDENCIES = ../common/libcommon.a \
-@KRB4_TRUE@@KRB5_FALSE@$(top_builddir)/lib/kafs/libkafs.la
-@KRB4_TRUE@@KRB5_TRUE@ftpd_DEPENDENCIES = ../common/libcommon.a \
-@KRB4_TRUE@@KRB5_TRUE@$(top_builddir)/lib/kafs/libkafs.la \
-@KRB4_TRUE@@KRB5_TRUE@$(top_builddir)/lib/gssapi/libgssapi.la \
-@KRB4_TRUE@@KRB5_TRUE@$(top_builddir)/lib/krb5/libkrb5.la \
-@KRB4_TRUE@@KRB5_TRUE@$(top_builddir)/lib/asn1/libasn1.la
-ftpd_LDFLAGS =
-COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CFLAGS = @CFLAGS@
+depcomp =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+ $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = $(ftpd_SOURCES) $(EXTRA_ftpd_SOURCES)
-man5dir = $(mandir)/man5
-man8dir = $(mandir)/man8
-MANS = $(man_MANS)
-depcomp =
-DIST_COMMON = Makefile.am Makefile.in ftpcmd.c
-
-
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+CFLAGS = @CFLAGS@
+YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
+LTYACCCOMPILE = $(LIBTOOL) --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS)
+YLWRAP = $(top_srcdir)/ylwrap
+DIST_SOURCES = $(ftpd_SOURCES) $(EXTRA_ftpd_SOURCES)
-GZIP_ENV = --best
+NROFF = nroff
+MANS = $(man_MANS)
+DIST_COMMON = Makefile.am Makefile.in ftpcmd.c
SOURCES = $(ftpd_SOURCES) $(EXTRA_ftpd_SOURCES)
-OBJECTS = $(am_ftpd_OBJECTS)
-all: all-redirect
+all: all-am
+
.SUFFIXES:
.SUFFIXES: .et .h .1 .3 .5 .8 .cat1 .cat3 .cat5 .cat8 .x .c .lo .o .obj .y
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/Makefile.am.common $(top_srcdir)/cf/Makefile.am.common
- cd $(top_srcdir) && $(AUTOMAKE) --foreign appl/ftp/ftpd/Makefile
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-
-mostlyclean-libexecPROGRAMS:
-clean-libexecPROGRAMS:
- -test -z "$(libexec_PROGRAMS)" || rm -f $(libexec_PROGRAMS)
-
-distclean-libexecPROGRAMS:
+mostlyclean-libtool:
+ -rm -f *.lo
-maintainer-clean-libexecPROGRAMS:
+clean-libtool:
+ -rm -rf .libs _libs
+distclean-libtool:
+ -rm -f libtool
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/Makefile.am.common $(top_srcdir)/cf/Makefile.am.common $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign appl/ftp/ftpd/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
install-libexecPROGRAMS: $(libexec_PROGRAMS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(libexecdir)
@list='$(libexec_PROGRAMS)'; for p in $$list; do \
- if test -f $$p; then \
- f="`echo $$p|sed -e 's/$(EXEEXT)$$//' -e '$(transform)' -e 's/$$/$(EXEEXT)/'`"; \
- echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libexecdir)/$$f"; \
- $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libexecdir)/$$f; \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \
else :; fi; \
done
uninstall-libexecPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(libexec_PROGRAMS)'; for p in $$list; do \
- f="`echo $$p|sed -e 's/$(EXEEXT)$$//' -e '$(transform)' -e 's/$$/$(EXEEXT)/'`"; \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \
rm -f $(DESTDIR)$(libexecdir)/$$f; \
done
-mostlyclean-compile:
- -rm -f *.o core *.core
- -rm -f *.$(OBJEXT)
+clean-libexecPROGRAMS:
+ -test -z "$(libexec_PROGRAMS)" || rm -f $(libexec_PROGRAMS)
+ftpd$(EXEEXT): $(ftpd_OBJECTS) $(ftpd_DEPENDENCIES)
+ @rm -f ftpd$(EXEEXT)
+ $(LINK) $(ftpd_LDFLAGS) $(ftpd_OBJECTS) $(ftpd_LDADD) $(LIBS)
-clean-compile:
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT) core *.core
distclean-compile:
-rm -f *.tab.c
-maintainer-clean-compile:
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
-
-maintainer-clean-libtool:
-
-ftpd$(EXEEXT): $(ftpd_OBJECTS) $(ftpd_DEPENDENCIES)
- @rm -f ftpd$(EXEEXT)
- $(LINK) $(ftpd_LDFLAGS) $(ftpd_OBJECTS) $(ftpd_LDADD) $(LIBS)
.c.o:
- $(COMPILE) -c $<
+ $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$<
+
.c.obj:
$(COMPILE) -c `cygpath -w $<`
+
.c.lo:
- $(LTCOMPILE) -c -o $@ $<
-.y.c:
- $(YACC) $(AM_YFLAGS) $(YFLAGS) $< && mv y.tab.c $*.c
- if test -f y.tab.h; then \
- if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \
- else :; fi
+ $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$<
+.y.c:
+ $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h -- $(YACCCOMPILE)
+uninstall-info-am:
-install-man5:
+man5dir = $(mandir)/man5
+install-man5: $(man5_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(man5dir)
- @list='$(man5_MANS)'; \
- l2='$(man_MANS)'; for i in $$l2; do \
+ @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
case "$$i" in \
*.5*) list="$$list $$i" ;; \
esac; \
@@ -383,10 +382,11 @@ install-man5:
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst"; \
$(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst; \
done
-
uninstall-man5:
- @list='$(man5_MANS)'; \
- l2='$(man_MANS)'; for i in $$l2; do \
+ @$(NORMAL_UNINSTALL)
+ @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
case "$$i" in \
*.5*) list="$$list $$i" ;; \
esac; \
@@ -400,10 +400,13 @@ uninstall-man5:
rm -f $(DESTDIR)$(man5dir)/$$inst; \
done
-install-man8:
+man8dir = $(mandir)/man8
+install-man8: $(man8_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(man8dir)
- @list='$(man8_MANS)'; \
- l2='$(man_MANS)'; for i in $$l2; do \
+ @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
case "$$i" in \
*.8*) list="$$list $$i" ;; \
esac; \
@@ -418,10 +421,11 @@ install-man8:
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \
$(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \
done
-
uninstall-man8:
- @list='$(man8_MANS)'; \
- l2='$(man_MANS)'; for i in $$l2; do \
+ @$(NORMAL_UNINSTALL)
+ @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
case "$$i" in \
*.8*) list="$$list $$i" ;; \
esac; \
@@ -434,12 +438,6 @@ uninstall-man8:
echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \
rm -f $(DESTDIR)$(man8dir)/$$inst; \
done
-install-man: $(MANS)
- @$(NORMAL_INSTALL)
- $(MAKE) $(AM_MAKEFLAGS) install-man5 install-man8
-uninstall-man:
- @$(NORMAL_UNINSTALL)
- $(MAKE) $(AM_MAKEFLAGS) uninstall-man5 uninstall-man8
tags: TAGS
@@ -468,22 +466,23 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
GTAGS:
here=`CDPATH=: && cd $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
- && gtags -i $$here
-
-mostlyclean-tags:
-
-clean-tags:
+ && gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
- -rm -f TAGS ID
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
-maintainer-clean-tags:
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
- d=$(srcdir); \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ $(mkinstalldirs) "$(distdir)/$$dir"; \
+ fi; \
if test -d $$d/$$file; then \
cp -pR $$d/$$file $(distdir) \
|| exit 1; \
@@ -493,91 +492,97 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
- $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
-info-am:
-info: info-am
-dvi-am:
-dvi: dvi-am
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="${top_distdir}" distdir="$(distdir)" \
+ dist-hook
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-local
check: check-am
-installcheck-am:
-installcheck: installcheck-am
-install-exec-am: install-libexecPROGRAMS
- @$(NORMAL_INSTALL)
- $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-exec: install-exec-am
+all-am: Makefile $(PROGRAMS) $(MANS) all-local
-install-data-am: install-man install-data-local
-install-data: install-data-am
+installdirs:
+ $(mkinstalldirs) $(DESTDIR)$(libexecdir) $(DESTDIR)$(man5dir) $(DESTDIR)$(man8dir)
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
-uninstall-am: uninstall-libexecPROGRAMS uninstall-man
+install-exec: install-exec-am
+install-data: install-data-am
uninstall: uninstall-am
-all-am: Makefile $(PROGRAMS) $(MANS) all-local
-all-redirect: all-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
-installdirs:
- $(mkinstalldirs) $(DESTDIR)$(libexecdir) $(DESTDIR)$(mandir)/man5 \
- $(DESTDIR)$(mandir)/man8
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+ -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
maintainer-clean-generic:
- -rm -f Makefile.in
- -test -z "ftpcmd.c" || rm -f ftpcmd.c
-mostlyclean-am: mostlyclean-libexecPROGRAMS mostlyclean-compile \
- mostlyclean-libtool mostlyclean-tags \
- mostlyclean-generic
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
-mostlyclean: mostlyclean-am
+clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \
+ mostlyclean-am
-clean-am: clean-libexecPROGRAMS clean-compile clean-libtool clean-tags \
- clean-generic mostlyclean-am
+distclean: distclean-am
-clean: clean-am
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
-distclean-am: distclean-libexecPROGRAMS distclean-compile \
- distclean-libtool distclean-tags distclean-generic \
- clean-am
- -rm -f libtool
+dvi: dvi-am
-distclean: distclean-am
+dvi-am:
-maintainer-clean-am: maintainer-clean-libexecPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
- maintainer-clean-tags maintainer-clean-generic \
- distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local install-man
+
+install-exec-am: install-libexecPROGRAMS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+
+install-info: install-info-am
+
+install-man: install-man5 install-man8
+
+installcheck-am:
maintainer-clean: maintainer-clean-am
-.PHONY: mostlyclean-libexecPROGRAMS distclean-libexecPROGRAMS \
-clean-libexecPROGRAMS maintainer-clean-libexecPROGRAMS \
-uninstall-libexecPROGRAMS install-libexecPROGRAMS mostlyclean-compile \
-distclean-compile clean-compile maintainer-clean-compile \
-mostlyclean-libtool distclean-libtool clean-libtool \
-maintainer-clean-libtool install-man5 uninstall-man5 install-man8 \
-uninstall-man8 install-man uninstall-man tags mostlyclean-tags \
-distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
-dvi-am dvi check-local check check-am installcheck-am installcheck \
-install-exec-am install-exec install-data-local install-data-am \
-install-data install-am install uninstall-am uninstall all-local \
-all-redirect all-am all install-strip installdirs mostlyclean-generic \
-distclean-generic clean-generic maintainer-clean-generic clean \
-mostlyclean distclean maintainer-clean
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+uninstall-am: uninstall-info-am uninstall-libexecPROGRAMS uninstall-man
+
+uninstall-man: uninstall-man5 uninstall-man8
+
+.PHONY: GTAGS all all-am all-local check check-am check-local clean \
+ clean-generic clean-libexecPROGRAMS clean-libtool distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am info info-am install \
+ install-am install-data install-data-am install-data-local \
+ install-exec install-exec-am install-info install-info-am \
+ install-libexecPROGRAMS install-man install-man5 install-man8 \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ tags uninstall uninstall-am uninstall-info-am \
+ uninstall-libexecPROGRAMS uninstall-man uninstall-man5 \
+ uninstall-man8
install-suid-programs:
@@ -718,7 +723,6 @@ krb4.c:
@test -f krb4.c || $(LN_S) $(srcdir)/../ftp/krb4.c .
gssapi.c:
@test -f gssapi.c || $(LN_S) $(srcdir)/../ftp/gssapi.c .
-
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/crypto/heimdal/appl/ftp/ftpd/ftpcmd.y b/crypto/heimdal/appl/ftp/ftpd/ftpcmd.y
index 8a67a61..2c90987 100644
--- a/crypto/heimdal/appl/ftp/ftpd/ftpcmd.y
+++ b/crypto/heimdal/appl/ftp/ftpd/ftpcmd.y
@@ -43,7 +43,7 @@
%{
#include "ftpd_locl.h"
-RCSID("$Id: ftpcmd.y,v 1.60 2000/11/05 16:53:20 joda Exp $");
+RCSID("$Id: ftpcmd.y,v 1.61 2001/08/05 06:39:29 assar Exp $");
off_t restart_point;
@@ -1238,9 +1238,9 @@ yylex(void)
cpos++;
return (SP);
}
- if (isdigit(cbuf[cpos])) {
+ if (isdigit((unsigned char)cbuf[cpos])) {
cp = &cbuf[cpos];
- while (isdigit(cbuf[++cpos]))
+ while (isdigit((unsigned char)cbuf[++cpos]))
;
c = cbuf[cpos];
cbuf[cpos] = '\0';
@@ -1253,9 +1253,9 @@ yylex(void)
goto dostr1;
case ARGS:
- if (isdigit(cbuf[cpos])) {
+ if (isdigit((unsigned char)cbuf[cpos])) {
cp = &cbuf[cpos];
- while (isdigit(cbuf[++cpos]))
+ while (isdigit((unsigned char)cbuf[++cpos]))
;
c = cbuf[cpos];
cbuf[cpos] = '\0';
diff --git a/crypto/heimdal/appl/ftp/ftpd/ftpd.8 b/crypto/heimdal/appl/ftp/ftpd/ftpd.8
index 32d5002..22152be 100644
--- a/crypto/heimdal/appl/ftp/ftpd/ftpd.8
+++ b/crypto/heimdal/appl/ftp/ftpd/ftpd.8
@@ -42,7 +42,7 @@
.Sh SYNOPSIS
.Nm
.Op Fl a Ar authmode
-.Op Fl dilv
+.Op Fl dilvU
.Op Fl g Ar umask
.Op Fl p Ar port
.Op Fl T Ar maxtimeout
@@ -128,6 +128,14 @@ The inactivity timeout period is set to
seconds (the default is 15 minutes).
.It Fl u
Set the initial umask to something else than the default 027.
+.It Fl U
+In previous versions of
+.Nm ftpd ,
+when a passive mode client requested a data connection to the server, the
+server would use data ports in the range 1024..4999. Now, by default,
+if the system supports the IP_PORTRANGE socket option, the server will
+use data ports in the range 49152..65535. Specifying this option will
+revert to the old behavior.
.It Fl v
Verbose mode.
.It Xo
@@ -460,7 +468,7 @@ Login access for Kerberos.
.Xr otp 1 ,
.Xr getusershell 3 ,
.Xr ftpusers 5 ,
-.Xr syslogd 8 ,
+.Xr syslogd 8
.Sh STANDARDS
.Bl -tag -compact -width "RFC 1938"
.It Cm RFC 959
diff --git a/crypto/heimdal/appl/ftp/ftpd/ftpd.c b/crypto/heimdal/appl/ftp/ftpd/ftpd.c
index faf07ff..7dde742 100644
--- a/crypto/heimdal/appl/ftp/ftpd/ftpd.c
+++ b/crypto/heimdal/appl/ftp/ftpd/ftpd.c
@@ -38,7 +38,7 @@
#endif
#include "getarg.h"
-RCSID("$Id: ftpd.c,v 1.157 2001/04/19 14:41:29 joda Exp $");
+RCSID("$Id: ftpd.c,v 1.160 2001/09/13 09:17:14 joda Exp $");
static char version[] = "Version 6.00";
@@ -68,6 +68,7 @@ struct passwd *pw;
int debug = 0;
int ftpd_timeout = 900; /* timeout after 15 minutes of inactivity */
int maxtimeout = 7200;/* don't allow idle time to be set beyond 2 hours */
+int restricted_data_ports = 1;
int logging;
int guest;
int dochroot;
@@ -217,6 +218,7 @@ struct getargs args[] = {
{ NULL, 't', arg_integer, &ftpd_timeout, "initial timeout" },
{ NULL, 'T', arg_integer, &maxtimeout, "max timeout" },
{ NULL, 'u', arg_string, &umask_string, "umask for user logins" },
+ { NULL, 'U', arg_negative_flag, &restricted_data_ports, "don't use high data ports" },
{ NULL, 'd', arg_flag, &debug, "enable debugging" },
{ NULL, 'v', arg_flag, &debug, "enable debugging" },
{ "builtin-ls", 'B', arg_flag, &use_builtin_ls, "use built-in ls to list files" },
@@ -1244,6 +1246,26 @@ bad:
return (NULL);
}
+static int
+accept_with_timeout(int socket,
+ struct sockaddr *address,
+ size_t *address_len,
+ struct timeval *timeout)
+{
+ int ret;
+ fd_set rfd;
+ FD_ZERO(&rfd);
+ FD_SET(socket, &rfd);
+ ret = select(socket + 1, &rfd, NULL, NULL, timeout);
+ if(ret < 0)
+ return ret;
+ if(ret == 0) {
+ errno = ETIMEDOUT;
+ return -1;
+ }
+ return accept(socket, address, address_len);
+}
+
static FILE *
dataconn(const char *name, off_t size, const char *mode)
{
@@ -1260,10 +1282,13 @@ dataconn(const char *name, off_t size, const char *mode)
if (pdata >= 0) {
struct sockaddr_storage from_ss;
struct sockaddr *from = (struct sockaddr *)&from_ss;
+ struct timeval timeout;
int s;
socklen_t fromlen = sizeof(from_ss);
- s = accept(pdata, from, &fromlen);
+ timeout.tv_sec = 15;
+ timeout.tv_usec = 0;
+ s = accept_with_timeout(pdata, from, &fromlen, &timeout);
if (s < 0) {
reply(425, "Can't open data connection.");
close(pdata);
@@ -1951,6 +1976,8 @@ pasv(void)
socket_set_address_and_port (pasv_addr,
socket_get_address (ctrl_addr),
0);
+ socket_set_portrange(pdata, restricted_data_ports,
+ pasv_addr->sa_family);
seteuid(0);
if (bind(pdata, pasv_addr, socket_sockaddr_size (pasv_addr)) < 0) {
seteuid(pw->pw_uid);
@@ -1993,6 +2020,8 @@ epsv(char *proto)
socket_set_address_and_port (pasv_addr,
socket_get_address (ctrl_addr),
0);
+ socket_set_portrange(pdata, restricted_data_ports,
+ pasv_addr->sa_family);
seteuid(0);
if (bind(pdata, pasv_addr, socket_sockaddr_size (pasv_addr)) < 0) {
seteuid(pw->pw_uid);
@@ -2165,7 +2194,13 @@ send_file_list(char *whichf)
char buf[MaxPathLen];
if (strpbrk(whichf, "~{[*?") != NULL) {
- int flags = GLOB_BRACE|GLOB_NOCHECK|GLOB_QUOTE|GLOB_TILDE|GLOB_LIMIT;
+ int flags = GLOB_BRACE|GLOB_NOCHECK|GLOB_QUOTE|GLOB_TILDE|
+#ifdef GLOB_MAXPATH
+ GLOB_MAXPATH
+#else
+ GLOB_LIMIT
+#endif
+ ;
memset(&gl, 0, sizeof(gl));
freeglob = 1;
diff --git a/crypto/heimdal/appl/ftp/ftpd/gss_userok.c b/crypto/heimdal/appl/ftp/ftpd/gss_userok.c
index 7b3caf2..ec263d0 100644
--- a/crypto/heimdal/appl/ftp/ftpd/gss_userok.c
+++ b/crypto/heimdal/appl/ftp/ftpd/gss_userok.c
@@ -35,7 +35,7 @@
#include <gssapi.h>
#include <krb5.h>
-RCSID("$Id: gss_userok.c,v 1.7 2001/01/30 00:36:58 assar Exp $");
+RCSID("$Id: gss_userok.c,v 1.8 2001/08/05 06:38:57 assar Exp $");
/* XXX a bit too much of krb5 dependency here...
What is the correct way to do this?
@@ -88,7 +88,8 @@ gss_userok(void *app_data, char *username)
goto fail;
}
- asprintf (&ticketfile, "%s%u", KRB5_DEFAULT_CCROOT, pw->pw_uid);
+ asprintf (&ticketfile, "%s%u", KRB5_DEFAULT_CCROOT,
+ (unsigned)pw->pw_uid);
ret = krb5_cc_resolve(gssapi_krb5_context, ticketfile, &ccache);
if (ret)
diff --git a/crypto/heimdal/appl/ftp/ftpd/ls.c b/crypto/heimdal/appl/ftp/ftpd/ls.c
index 9311119..7d80be1 100644
--- a/crypto/heimdal/appl/ftp/ftpd/ls.c
+++ b/crypto/heimdal/appl/ftp/ftpd/ls.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999 - 2000 Kungliga Tekniska Högskolan
+ * Copyright (c) 1999 - 2001 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#ifndef TEST
#include "ftpd_locl.h"
-RCSID("$Id: ls.c,v 1.20 2001/01/25 01:33:15 joda Exp $");
+RCSID("$Id: ls.c,v 1.23 2001/09/14 11:32:52 joda Exp $");
#else
#include <stdio.h>
@@ -49,14 +49,21 @@ RCSID("$Id: ls.c,v 1.20 2001/01/25 01:33:15 joda Exp $");
#define sec_fprintf2 fprintf
#define sec_fflush fflush
-void
-builtin_ls(FILE *out, const char *file);
+static void list_files(FILE *out, const char **files, int n_files, int flags);
+static int parse_flags(const char *options);
+
int
main(int argc, char **argv)
{
- int i;
- for(i = 1; i < argc; i++)
- builtin_ls(stdout, argv[i]);
+ int i = 1;
+ int flags;
+ if(argc > 1 && argv[1][0] == '-') {
+ flags = parse_flags(argv[1]);
+ i = 2;
+ } else
+ flags = parse_flags(NULL);
+
+ list_files(stdout, (const char **)argv + i, argc - i, flags);
return 0;
}
#endif
@@ -107,6 +114,11 @@ free_fileinfo(struct fileinfo *f)
#define LS_DISP_LONG (1 << 8)
#define LS_DISP_COLUMN (2 << 8)
#define LS_DISP_CROSS (3 << 8)
+#define LS_SHOW_ALL (1 << 10)
+#define LS_RECURSIVE (1 << 11)
+#define LS_EXTRA_BLANK (1 << 12)
+#define LS_SHOW_DIRNAME (1 << 13)
+#define LS_DIR_FLAG (1 << 14) /* these files come via list_dir */
#ifndef S_ISTXT
#define S_ISTXT S_ISVTX
@@ -120,19 +132,25 @@ free_fileinfo(struct fileinfo *f)
#define S_ISLNK(mode) (((mode) & _S_IFMT) == S_IFLNK)
#endif
+static size_t
+block_convert(size_t blocks)
+{
+#ifdef S_BLKSIZE
+ return blocks * S_BLKSIZE / 1024;
+#else
+ return blocks * 512 / 1024;
+#endif
+}
+
static void
-make_fileinfo(const char *filename, struct fileinfo *file, int flags)
+make_fileinfo(FILE *out, const char *filename, struct fileinfo *file, int flags)
{
char buf[128];
int file_type = 0;
struct stat *st = &file->st;
file->inode = st->st_ino;
-#ifdef S_BLKSIZE
- file->bsize = st->st_blocks * S_BLKSIZE / 1024;
-#else
- file->bsize = st->st_blocks * 512 / 1024;
-#endif
+ file->bsize = block_convert(st->st_blocks);
if(S_ISDIR(st->st_mode)) {
file->mode[0] = 'd';
@@ -251,7 +269,7 @@ make_fileinfo(const char *filename, struct fileinfo *file, int flags)
buf[n] = '\0';
file->link = strdup(buf);
} else
- warn("%s: readlink", filename);
+ sec_fprintf2(out, "readlink(%s): %s", filename, strerror(errno));
}
}
@@ -443,11 +461,20 @@ lstat_file (const char *file, struct stat *sb)
return lstat (file, sb);
}
+#define IS_DOT_DOTDOT(X) ((X)[0] == '.' && ((X)[1] == '\0' || \
+ ((X)[1] == '.' && (X)[2] == '\0')))
+
static void
list_files(FILE *out, const char **files, int n_files, int flags)
{
struct fileinfo *fi;
int i;
+ int *dirs = NULL;
+ size_t total_blocks = 0;
+ int n_print = 0;
+
+ if(n_files > 1)
+ flags |= LS_SHOW_DIRNAME;
fi = calloc(n_files, sizeof(*fi));
if (fi == NULL) {
@@ -459,12 +486,23 @@ list_files(FILE *out, const char **files, int n_files, int flags)
sec_fprintf2(out, "%s: %s\r\n", files[i], strerror(errno));
fi[i].filename = NULL;
} else {
- if((flags & LS_DIRS) == 0 && S_ISDIR(fi[i].st.st_mode)) {
- if(n_files > 1)
- sec_fprintf2(out, "%s:\r\n", files[i]);
- list_dir(out, files[i], flags);
- } else {
- make_fileinfo(files[i], &fi[i], flags);
+ int include_in_list = 1;
+ total_blocks += block_convert(fi[i].st.st_blocks);
+ if(S_ISDIR(fi[i].st.st_mode)) {
+ if(dirs == NULL)
+ dirs = calloc(n_files, sizeof(*dirs));
+ if(dirs == NULL) {
+ sec_fprintf2(out, "%s: %s\r\n",
+ files[i], strerror(errno));
+ goto out;
+ }
+ dirs[i] = 1;
+ if((flags & LS_DIRS) == 0)
+ include_in_list = 0;
+ }
+ if(include_in_list) {
+ make_fileinfo(out, files[i], &fi[i], flags);
+ n_print++;
}
}
}
@@ -521,7 +559,9 @@ list_files(FILE *out, const char **files, int n_files, int flags)
max_inode = log10(max_inode);
max_bsize = log10(max_bsize);
max_n_link = log10(max_n_link);
-
+
+ if(n_print > 0)
+ sec_fprintf2(out, "total %lu\r\n", (unsigned long)total_blocks);
if(flags & LS_SORT_REVERSE)
for(i = n_files - 1; i >= 0; i--)
print_file(out,
@@ -553,6 +593,7 @@ list_files(FILE *out, const char **files, int n_files, int flags)
} else if(DISP_MODE(flags) == LS_DISP_COLUMN ||
DISP_MODE(flags) == LS_DISP_CROSS) {
int max_len = 0;
+ int size_len = 0;
int num_files = n_files;
int columns;
int j;
@@ -563,14 +604,30 @@ list_files(FILE *out, const char **files, int n_files, int flags)
}
if(strlen(fi[i].filename) > max_len)
max_len = strlen(fi[i].filename);
+ if(log10(fi[i].bsize) > size_len)
+ size_len = log10(fi[i].bsize);
}
- columns = 80 / (max_len + 1); /* get space between columns */
- max_len = 80 / columns;
+ if(num_files == 0)
+ goto next;
+ if(flags & LS_SIZE) {
+ columns = 80 / (size_len + 1 + max_len + 1);
+ max_len = 80 / columns - size_len - 1;
+ } else {
+ columns = 80 / (max_len + 1); /* get space between columns */
+ max_len = 80 / columns;
+ }
+ if(flags & LS_SIZE)
+ sec_fprintf2(out, "total %lu\r\n",
+ (unsigned long)total_blocks);
if(DISP_MODE(flags) == LS_DISP_CROSS) {
for(i = 0, j = 0; i < n_files; i++) {
if(fi[i].filename == NULL)
continue;
- sec_fprintf2(out, "%-*s", max_len, fi[i].filename);
+ if(flags & LS_SIZE)
+ sec_fprintf2(out, "%*u %-*s", size_len, fi[i].bsize,
+ max_len, fi[i].filename);
+ else
+ sec_fprintf2(out, "%-*s", max_len, fi[i].filename);
j++;
if(j == columns) {
sec_fprintf2(out, "\r\n");
@@ -578,7 +635,7 @@ list_files(FILE *out, const char **files, int n_files, int flags)
}
}
if(j > 0)
- sec_fprintf2(out, "\r\n");
+ sec_fprintf2(out, "\r\n");
} else {
int skip = (num_files + columns - 1) / columns;
j = 0;
@@ -586,7 +643,11 @@ list_files(FILE *out, const char **files, int n_files, int flags)
for(j = i; j < n_files;) {
while(j < n_files && fi[j].filename == NULL)
j++;
- sec_fprintf2(out, "%-*s", max_len, fi[j].filename);
+ if(flags & LS_SIZE)
+ sec_fprintf2(out, "%*u %-*s", size_len, fi[j].bsize,
+ max_len, fi[j].filename);
+ else
+ sec_fprintf2(out, "%-*s", max_len, fi[j].filename);
j += skip;
}
sec_fprintf2(out, "\r\n");
@@ -599,9 +660,32 @@ list_files(FILE *out, const char **files, int n_files, int flags)
sec_fprintf2(out, "%s\r\n", fi[i].filename);
}
}
+ next:
+ if(((flags & LS_DIRS) == 0 || (flags & LS_RECURSIVE)) && dirs != NULL) {
+ for(i = 0; i < n_files; i++) {
+ if(dirs[i]) {
+ const char *p = strrchr(files[i], '/');
+ if(p == NULL)
+ p = files[i];
+ else
+ p++;
+ if(!(flags & LS_DIR_FLAG) || !IS_DOT_DOTDOT(p)) {
+ if((flags & LS_SHOW_DIRNAME)) {
+ if ((flags & LS_EXTRA_BLANK))
+ sec_fprintf2(out, "\r\n");
+ sec_fprintf2(out, "%s:\r\n", files[i]);
+ }
+ list_dir(out, files[i], flags | LS_DIRS | LS_EXTRA_BLANK);
+ }
+ }
+ }
+ }
+ out:
for(i = 0; i < n_files; i++)
free_fileinfo(&fi[i]);
free(fi);
+ if(dirs != NULL)
+ free(dirs);
}
static void
@@ -614,6 +698,22 @@ free_files (char **files, int n)
free (files);
}
+static int
+hide_file(const char *filename, int flags)
+{
+ if(filename[0] != '.')
+ return 0;
+ if((flags & LS_IGNORE_DOT))
+ return 1;
+ if(filename[1] == '\0' || (filename[1] == '.' && filename[2] == '\0')) {
+ if((flags & LS_SHOW_ALL))
+ return 0;
+ else
+ return 1;
+ }
+ return 0;
+}
+
static void
list_dir(FILE *out, const char *directory, int flags)
{
@@ -629,14 +729,8 @@ list_dir(FILE *out, const char *directory, int flags)
while((ent = readdir(d)) != NULL) {
void *tmp;
- if(ent->d_name[0] == '.') {
- if (flags & LS_IGNORE_DOT)
- continue;
- if (ent->d_name[1] == 0) /* Ignore . */
- continue;
- if (ent->d_name[1] == '.' && ent->d_name[2] == 0) /* Ignore .. */
- continue;
- }
+ if(hide_file(ent->d_name, flags))
+ continue;
tmp = realloc(files, (n_files + 1) * sizeof(*files));
if (tmp == NULL) {
sec_fprintf2(out, "%s: out of memory\r\n", directory);
@@ -655,62 +749,96 @@ list_dir(FILE *out, const char *directory, int flags)
++n_files;
}
closedir(d);
- list_files(out, (const char**)files, n_files, flags | LS_DIRS);
+ list_files(out, (const char**)files, n_files, flags | LS_DIR_FLAG);
+}
+
+static int
+parse_flags(const char *options)
+{
+#ifdef TEST
+ int flags = LS_SORT_NAME | LS_IGNORE_DOT | LS_DISP_COLUMN;
+#else
+ int flags = LS_SORT_NAME | LS_IGNORE_DOT | LS_DISP_LONG;
+#endif
+
+ const char *p;
+ if(options == NULL || *options != '-')
+ return flags;
+ for(p = options + 1; *p; p++) {
+ switch(*p) {
+ case '1':
+ flags = (flags & ~LS_DISP_MODE);
+ break;
+ case 'a':
+ flags |= LS_SHOW_ALL;
+ /*FALLTHROUGH*/
+ case 'A':
+ flags &= ~LS_IGNORE_DOT;
+ break;
+ case 'C':
+ flags = (flags & ~LS_DISP_MODE) | LS_DISP_COLUMN;
+ break;
+ case 'd':
+ flags |= LS_DIRS;
+ break;
+ case 'f':
+ flags = (flags & ~LS_SORT_MODE);
+ break;
+ case 'F':
+ flags |= LS_TYPE;
+ break;
+ case 'i':
+ flags |= LS_INODE;
+ break;
+ case 'l':
+ flags = (flags & ~LS_DISP_MODE) | LS_DISP_LONG;
+ break;
+ case 'r':
+ flags |= LS_SORT_REVERSE;
+ break;
+ case 'R':
+ flags |= LS_RECURSIVE;
+ break;
+ case 's':
+ flags |= LS_SIZE;
+ break;
+ case 'S':
+ flags = (flags & ~LS_SORT_MODE) | LS_SORT_SIZE;
+ break;
+ case 't':
+ flags = (flags & ~LS_SORT_MODE) | LS_SORT_MTIME;
+ break;
+ case 'x':
+ flags = (flags & ~LS_DISP_MODE) | LS_DISP_CROSS;
+ break;
+ /* these are a bunch of unimplemented flags from BSD ls */
+ case 'k': /* display sizes in kB */
+ case 'c': /* last change time */
+ case 'L': /* list symlink target */
+ case 'm': /* stream output */
+ case 'o': /* BSD file flags */
+ case 'p': /* display / after directories */
+ case 'q': /* print non-graphic characters */
+ case 'u': /* use last access time */
+ case 'T': /* display complete time */
+ case 'W': /* include whiteouts */
+ break;
+ }
+ }
+ return flags;
}
void
builtin_ls(FILE *out, const char *file)
{
- int flags = LS_SORT_NAME | LS_IGNORE_DOT | LS_DISP_LONG;
+ int flags;
if(*file == '-') {
- const char *p;
- for(p = file + 1; *p; p++) {
- switch(*p) {
- case '1':
- flags = (flags & ~LS_DISP_MODE);
- break;
- case 'a':
- case 'A':
- flags &= ~LS_IGNORE_DOT;
- break;
- case 'C':
- flags = (flags & ~LS_DISP_MODE) | LS_DISP_COLUMN;
- break;
- case 'd':
- flags |= LS_DIRS;
- break;
- case 'f':
- flags = (flags & ~LS_SORT_MODE);
- break;
- case 'F':
- flags |= LS_TYPE;
- break;
- case 'i':
- flags |= LS_INODE;
- break;
- case 'l':
- flags = (flags & ~LS_DISP_MODE) | LS_DISP_LONG;
- break;
- case 't':
- flags = (flags & ~LS_SORT_MODE) | LS_SORT_MTIME;
- break;
- case 's':
- flags |= LS_SIZE;
- break;
- case 'S':
- flags = (flags & ~LS_SORT_MODE) | LS_SORT_SIZE;
- break;
- case 'r':
- flags |= LS_SORT_REVERSE;
- break;
- case 'x':
- flags = (flags & ~LS_DISP_MODE) | LS_DISP_CROSS;
- break;
- }
- }
+ flags = parse_flags(file);
file = ".";
- }
+ } else
+ flags = parse_flags("");
+
list_files(out, &file, 1, flags);
sec_fflush(out);
}
diff --git a/crypto/heimdal/appl/ftp/ftpd/popen.c b/crypto/heimdal/appl/ftp/ftpd/popen.c
index 52c8824..fb43922 100644
--- a/crypto/heimdal/appl/ftp/ftpd/popen.c
+++ b/crypto/heimdal/appl/ftp/ftpd/popen.c
@@ -37,7 +37,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
-RCSID("$Id: popen.c,v 1.24 2001/03/26 11:41:02 assar Exp $");
+RCSID("$Id: popen.c,v 1.25 2001/06/19 10:00:25 assar Exp $");
#endif
#include <sys/types.h>
@@ -139,7 +139,13 @@ ftpd_popen(char *program, char *type, int do_stderr, int no_glob)
for (gargc = argc = 1; argv[argc] && gargc < MAXGLOBS - 1; argc++) {
glob_t gl;
int flags = GLOB_BRACE|GLOB_NOCHECK|GLOB_QUOTE|GLOB_TILDE
- | GLOB_LIMIT;
+ |
+#ifdef GLOB_MAXPATH
+ GLOB_MAXPATH
+#else
+ GLOB_LIMIT
+#endif
+ ;
memset(&gl, 0, sizeof(gl));
if (no_glob || glob(argv[argc], flags, NULL, &gl))
OpenPOWER on IntegriCloud