Bug 108244 - [CHANGE-REQUEST] ftp/proftpd some addons and fixes
Summary: [CHANGE-REQUEST] ftp/proftpd some addons and fixes
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Ion-Mihai "IOnut" Tetcu
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-01-23 13:40 UTC by dindin
Modified: 2007-02-27 07:41 UTC (History)
0 users

See Also:


Attachments
file.diff (15.46 KB, patch)
2007-01-23 13:40 UTC, dindin
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description dindin 2007-01-23 13:40:16 UTC
1) Add mode_codeconv patches and option into Makefile
(mod_codeconv allow change filename's charsets "on the fly")
2) Add "Cyrrilic charset fix" patch and option into Makefile
3) fix mode_nls patch problems

Fix: Patch attached with submission follows:
How-To-Repeat: # cd /usr/ports/ftp/proftpd ; make -DWITH_NLS
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2007-01-23 13:40:24 UTC
State Changed
From-To: open->feedback

Awaiting maintainers feedback
Comment 2 Beech Rintoul 2007-01-23 20:13:46 UTC
Maintainer approved. Please use the following patchset:


diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/Makefile /usr/ports/ftp/proftpd/Makefile
--- /usr/ports/ftp/proftpd.orig/Makefile	Mon Jan 22 19:27:17 2007
+++ /usr/ports/ftp/proftpd/Makefile	Tue Jan 23 10:30:35 2007
@@ -7,7 +7,7 @@
 
 PORTNAME=	proftpd
 DISTVERSION=	1.3.1rc2
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	ftp
 MASTER_SITES=	ftp://ftp.proftpd.org/distrib/source/ \
 		ftp://ftp.fastorama.com/mirrors/ftp.proftpd.org/distrib/source/ \
@@ -32,9 +32,8 @@
 
 USE_GMAKE=	yes
 USE_BZIP2=	yes
-USE=AUTOTOOLS=	autoconf:259
-GNU_CONFIGURE=yes
-
+USE_AUTOTOOLS=	autoconf:259
+GNU_CONFIGURE=	yes
 USE_RC_SUBR=	proftpd.sh
 
 CONFIGURE_ARGS=	--localstatedir=/var/run \
@@ -59,7 +58,9 @@
 		RADIUS "Include mod_radius" off \
 		QUOTATAB_RADIUS "include mod_quotatab_radius" off \
 		BAN "include mod_ban (Requires CTRLS)" off \
-		NLS "Use nls (builds mod_lang)" off
+		NLS "Use nls (builds mod_lang)" off \
+		CYRFIX "Use fix for cyrillic encoding" off \
+		CODECONV "Use charset conversion (mod_codeconv)" off
 
 MODULES?=
 LIBDIRS?=
@@ -139,6 +140,10 @@
 EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-nls-Makefile.in
 .endif
 
+.if defined(WITH_CYRFIX)
+EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-cyrillic-fix-netio.c
+.endif
+
 #allow user to override
 MODULES?=	mod_ratio:mod_readme:mod_rewrite:mod_wrap2:mod_ifsession
 
@@ -195,6 +200,12 @@
 .if defined(WITH_POSTGRESQL) || defined(WITH_MYSQL)
 MODULES:=${MODULES}:mod_quotatab_sql
 .endif
+.endif
+
+.if defined(WITH_CODECONV)
+MODULES:=${MODULES}:mod_codeconv
+PROFTPD_LIBS+=	-liconv -L${LOCALBASE}/lib
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-mod-codeconv
 .endif
 
 # mod_ifsession should be the last item in the modules list
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/Makefile.in /usr/ports/ftp/proftpd/Makefile.in
--- /usr/ports/ftp/proftpd.orig/Makefile.in	Wed Dec 31 14:00:00 1969
+++ /usr/ports/ftp/proftpd/Makefile.in	Tue Jan 23 10:39:40 2007
@@ -0,0 +1,193 @@
+@SET_MAKE@
+
+top_builddir=.
+top_srcdir=@top_srcdir@
+srcdir=@srcdir@
+VPATH=@srcdir@
+DESTDIR=
+
+include ./Make.rules
+
+DIRS=@ADDL_DIRS@
+EXEEXT=@EXEEXT@
+INSTALL_DEPS=@INSTALL_DEPS@
+LIBTOOL_DEPS=@LIBTOOL_DEPS@
+LIBLTDL=@LIBLTDL@
+
+MAIN_LDFLAGS=@MAIN_LDFLAGS@
+MAIN_LIBS=@MAIN_LIBS@
+
+BUILD_PROFTPD_OBJS=$(BUILD_OBJS) $(BUILD_STATIC_MODULE_OBJS)
+BUILD_PROFTPD_ARCHIVES=$(BUILD_STATIC_MODULE_ARCHIVES)
+BUILD_BIN=proftpd$(EXEEXT) ftpcount$(EXEEXT) ftpdctl$(EXEEXT) ftpshut$(EXEEXT) ftptop$(EXEEXT) ftpwho$(EXEEXT)
+
+
+all: $(BUILD_BIN)
+
+include/buildstamp.h:
+	echo \#define BUILD_STAMP \"`date`\" >include/buildstamp.h
+
+dummy:
+
+lib: include/buildstamp.h dummy
+	cd lib/ && $(MAKE) lib
+
+src: include/buildstamp.h dummy
+	cd src/ && $(MAKE) src
+
+modules: include/buildstamp.h dummy
+	cd modules/ && $(MAKE) static
+	test -z "$(SHARED_MODULE_OBJS)" -a -z "$(SHARED_MODULE_DIRS)" || (cd modules/ && $(MAKE) shared)
+
+utils: include/buildstamp.h dummy
+	cd utils/ && $(MAKE) utils
+
+locale: include/buildstamp.h dummy
+	test -z "$(ENABLE_NLS)" || (cd locale/ && $(MAKE) locale)
+
+dirs: include/buildstamp.h dummy
+	@dirs="$(DIRS)"; \
+	for dir in $$dirs; do \
+		if [ -d "$$dir" ]; then cd $$dir/ && $(MAKE); fi; \
+	done
+
+proftpd$(EXEEXT): lib src modules dirs locale
+	$(LIBTOOL) --mode=link $(CC) $(LDFLAGS) $(MAIN_LDFLAGS) -o $@ $(BUILD_PROFTPD_OBJS) $(BUILD_PROFTPD_ARCHIVES) $(LIBS) $(MAIN_LIBS)
+
+ftpcount$(EXEEXT): utils
+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPCOUNT_OBJS) $(UTILS_LIBS)
+
+ftpdctl$(EXEEXT): src
+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPDCTL_OBJS) $(LIBS)
+
+ftpshut$(EXEEXT): utils
+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPSHUT_OBJS) $(UTILS_LIBS)
+
+ftptop$(EXEEXT): lib utils
+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) -lsupp -lintl
+
+ftpwho$(EXEEXT): lib utils
+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) -lsupp -lintl
+
+
+# BSD install -d doesn't work, so ...
+$(DESTDIR)$(datadir) $(DESTDIR)$(datadir)/locale $(DESTDIR)$(includedir) $(DESTDIR)$(includedir)/proftpd $(DESTDIR)$(libexecdir) $(DESTDIR)$(localstatedir) $(DESTDIR)$(sysconfdir) $(DESTDIR)$(rundir) $(DESTDIR)$(bindir) $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man8:
+	@if [ ! -d $@ ]; then \
+		mkdir -p $@; \
+		chown $(INSTALL_USER):$(INSTALL_GROUP) $@; \
+		chmod 0755 $@; \
+	fi
+
+install-proftpd: proftpd $(DESTDIR)$(includedir) $(DESTDIR)$(localstatedir) $(DESTDIR)$(sysconfdir) $(DESTDIR)$(rundir) $(DESTDIR)$(sbindir)
+	$(INSTALL_SBIN) proftpd $(DESTDIR)$(sbindir)/proftpd
+	if [ -f $(DESTDIR)$(sbindir)/in.proftpd ] ; then \
+		rm -f $(DESTDIR)$(sbindir)/in.proftpd ; \
+	fi
+	ln -s proftpd $(DESTDIR)$(sbindir)/in.proftpd
+	-chown -h $(INSTALL_USER):$(INSTALL_GROUP) $(DESTDIR)$(sbindir)/in.proftpd
+
+install-headers: $(DESTDIR)$(includedir)/proftpd
+	$(INSTALL_MAN) config.h $(DESTDIR)$(includedir)/proftpd/config.h
+	cd include/ && $(MAKE) install
+
+install-locales: $(DESTDIR)$(datadir) $(DESTDIR)$(datadir)/locale
+	test -z "$(ENABLE_NLS)" || (cd locale/ && $(MAKE) install)
+
+install-modules: $(DESTDIR)$(libexecdir)
+	test -z "$(SHARED_MODULE_OBJS)" -a -z "$(SHARED_MODULE_DIRS)" || (cd modules/ && $(MAKE) install)
+
+install-utils: $(DESTDIR)$(sbindir) $(DESTDIR)$(bindir)
+	$(INSTALL_BIN)  ftpcount $(DESTDIR)$(bindir)/ftpcount
+	$(INSTALL_BIN)  ftpdctl  $(DESTDIR)$(bindir)/ftpdctl
+	$(INSTALL_SBIN) ftpshut  $(DESTDIR)$(sbindir)/ftpshut
+	$(INSTALL_BIN)  ftptop   $(DESTDIR)$(bindir)/ftptop
+	$(INSTALL_BIN)  ftpwho   $(DESTDIR)$(bindir)/ftpwho
+
+install-conf: $(DESTDIR)$(sysconfdir)
+	if [ ! -f $(DESTDIR)$(sysconfdir)/proftpd.conf ] ; then \
+		$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0644 \
+		           $(top_srcdir)/sample-configurations/basic.conf \
+	       	           $(DESTDIR)$(sysconfdir)/proftpd.conf ; \
+	fi
+
+install-libltdl:
+	cd lib/libltdl/ && $(MAKE) install
+
+install-man: $(DESTDIR)$(mandir) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man8
+	$(INSTALL_MAN) $(top_srcdir)/src/ftpdctl.8    $(DESTDIR)$(mandir)/man8
+	$(INSTALL_MAN) $(top_srcdir)/src/proftpd.8    $(DESTDIR)$(mandir)/man8
+	$(INSTALL_MAN) $(top_srcdir)/utils/ftpshut.8  $(DESTDIR)$(mandir)/man8
+	$(INSTALL_MAN) $(top_srcdir)/utils/ftpcount.1 $(DESTDIR)$(mandir)/man1
+	$(INSTALL_MAN) $(top_srcdir)/utils/ftptop.1   $(DESTDIR)$(mandir)/man1
+	$(INSTALL_MAN) $(top_srcdir)/utils/ftpwho.1   $(DESTDIR)$(mandir)/man1
+	$(INSTALL_MAN) $(top_srcdir)/src/xferlog.5    $(DESTDIR)$(mandir)/man5
+
+install-all: install-proftpd install-modules install-utils install-conf install-man install-headers install-locales $(INSTALL_DEPS)
+
+install: all install-all
+
+depend:
+	cd src/     && $(MAKE) depend
+	cd modules/ && $(MAKE) depend
+	cd lib/     && $(MAKE) depend
+	cd utils/   && $(MAKE) depend
+
+clean:
+	cd src/     && $(MAKE) clean
+	cd modules/ && $(MAKE) clean
+	cd lib/     && $(MAKE) clean
+	cd utils/   && $(MAKE) clean
+	cd locale/  && $(MAKE) clean
+
+	@dirs="$(DIRS)"; \
+	for dir in $$dirs; do \
+		if [ -d "$$dir" ]; then cd $$dir/ && $(MAKE) clean; fi; \
+	done
+
+	rm -f include/buildstamp.h
+	rm -f $(BUILD_BIN)
+
+distclean: clean
+	cd lib/ && $(MAKE) distclean
+	rm -f Makefile Make.modules Make.rules \
+	      lib/Makefile modules/Makefile src/Makefile utils/Makefile
+	rm -f config.h config.status config.cache config.log libtool stamp-h
+	rm -f include/buildstamp.h
+	rm -rf .libs/
+
+dist: depend distclean
+	rm -rf `find . -name CVS`
+	rm -rf `find . -name .cvsignore`
+	rm -rf `find . -name core`
+	rm -rf `find . -name '*~'`
+	rm -fr `find . -name '*.bak'`
+	# RPM needs this in the top-level directory in order to support '-t'
+	mv -f contrib/dist/rpm/proftpd.spec .
+	# Other users may need to execute these scripts
+	chmod a+x configure config.sub install-sh modules/glue.sh
+
+
+# autoheader might not change config.h.in, so touch a stamp file.
+${srcdir}/config.h.in: stamp-h.in
+${srcdir}/stamp-h.in: configure.in acconfig.h
+	cd ${srcdir} && autoheader
+	echo timestamp > ${srcdir}/stamp-h.in
+
+config.h: stamp-h
+stamp-h: config.h.in config.status
+	./config.status
+
+${srcdir}/configure: configure.in
+	cd ${srcdir} && autoconf
+
+Make.rules: Make.rules.in config.status
+	./config.status
+
+Makefile: Makefile.in Make.rules.in config.status
+	./config.status
+
+config.status: configure
+	./config.status --recheck
+
+libtool: $(LIBTOOL_DEPS)
+	$(SHELL) ./config.status --recheck
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/Makefile.in.orig /usr/ports/ftp/proftpd/Makefile.in.orig
--- /usr/ports/ftp/proftpd.orig/Makefile.in.orig	Wed Dec 31 14:00:00 1969
+++ /usr/ports/ftp/proftpd/Makefile.in.orig	Tue Jan  9 17:19:02 2007
@@ -0,0 +1,193 @@
+@SET_MAKE@
+
+top_builddir=.
+top_srcdir=@top_srcdir@
+srcdir=@srcdir@
+VPATH=@srcdir@
+DESTDIR=
+
+include ./Make.rules
+
+DIRS=@ADDL_DIRS@
+EXEEXT=@EXEEXT@
+INSTALL_DEPS=@INSTALL_DEPS@
+LIBTOOL_DEPS=@LIBTOOL_DEPS@
+LIBLTDL=@LIBLTDL@
+
+MAIN_LDFLAGS=@MAIN_LDFLAGS@
+MAIN_LIBS=@MAIN_LIBS@
+
+BUILD_PROFTPD_OBJS=$(BUILD_OBJS) $(BUILD_STATIC_MODULE_OBJS)
+BUILD_PROFTPD_ARCHIVES=$(BUILD_STATIC_MODULE_ARCHIVES)
+BUILD_BIN=proftpd$(EXEEXT) ftpcount$(EXEEXT) ftpdctl$(EXEEXT) ftpshut$(EXEEXT) ftptop$(EXEEXT) ftpwho$(EXEEXT)
+
+
+all: $(BUILD_BIN)
+
+include/buildstamp.h:
+	echo \#define BUILD_STAMP \"`date`\" >include/buildstamp.h
+
+dummy:
+
+lib: include/buildstamp.h dummy
+	cd lib/ && $(MAKE) lib
+
+src: include/buildstamp.h dummy
+	cd src/ && $(MAKE) src
+
+modules: include/buildstamp.h dummy
+	cd modules/ && $(MAKE) static
+	test -z "$(SHARED_MODULE_OBJS)" -a -z "$(SHARED_MODULE_DIRS)" || (cd modules/ && $(MAKE) shared)
+
+utils: include/buildstamp.h dummy
+	cd utils/ && $(MAKE) utils
+
+locale: include/buildstamp.h dummy
+	test -z "$(ENABLE_NLS)" || (cd locale/ && $(MAKE) locale)
+
+dirs: include/buildstamp.h dummy
+	@dirs="$(DIRS)"; \
+	for dir in $$dirs; do \
+		if [ -d "$$dir" ]; then cd $$dir/ && $(MAKE); fi; \
+	done
+
+proftpd$(EXEEXT): lib src modules dirs locale
+	$(LIBTOOL) --mode=link $(CC) $(LDFLAGS) $(MAIN_LDFLAGS) -o $@ $(BUILD_PROFTPD_OBJS) $(BUILD_PROFTPD_ARCHIVES) $(LIBS) $(MAIN_LIBS)
+
+ftpcount$(EXEEXT): utils
+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPCOUNT_OBJS) $(UTILS_LIBS)
+
+ftpdctl$(EXEEXT): src
+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPDCTL_OBJS) $(LIBS)
+
+ftpshut$(EXEEXT): utils
+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPSHUT_OBJS) $(UTILS_LIBS)
+
+ftptop$(EXEEXT): lib utils
+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) $(UTILS_LIBS) -lsupp
+
+ftpwho$(EXEEXT): lib utils
+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) $(UTILS_LIBS) -lsupp
+
+
+# BSD install -d doesn't work, so ...
+$(DESTDIR)$(datadir) $(DESTDIR)$(datadir)/locale $(DESTDIR)$(includedir) $(DESTDIR)$(includedir)/proftpd $(DESTDIR)$(libexecdir) $(DESTDIR)$(localstatedir) $(DESTDIR)$(sysconfdir) $(DESTDIR)$(rundir) $(DESTDIR)$(bindir) $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man8:
+	@if [ ! -d $@ ]; then \
+		mkdir -p $@; \
+		chown $(INSTALL_USER):$(INSTALL_GROUP) $@; \
+		chmod 0755 $@; \
+	fi
+
+install-proftpd: proftpd $(DESTDIR)$(includedir) $(DESTDIR)$(localstatedir) $(DESTDIR)$(sysconfdir) $(DESTDIR)$(rundir) $(DESTDIR)$(sbindir)
+	$(INSTALL_SBIN) proftpd $(DESTDIR)$(sbindir)/proftpd
+	if [ -f $(DESTDIR)$(sbindir)/in.proftpd ] ; then \
+		rm -f $(DESTDIR)$(sbindir)/in.proftpd ; \
+	fi
+	ln -s proftpd $(DESTDIR)$(sbindir)/in.proftpd
+	-chown -h $(INSTALL_USER):$(INSTALL_GROUP) $(DESTDIR)$(sbindir)/in.proftpd
+
+install-headers: $(DESTDIR)$(includedir)/proftpd
+	$(INSTALL_MAN) config.h $(DESTDIR)$(includedir)/proftpd/config.h
+	cd include/ && $(MAKE) install
+
+install-locales: $(DESTDIR)$(datadir) $(DESTDIR)$(datadir)/locale
+	test -z "$(ENABLE_NLS)" || (cd locale/ && $(MAKE) install)
+
+install-modules: $(DESTDIR)$(libexecdir)
+	test -z "$(SHARED_MODULE_OBJS)" -a -z "$(SHARED_MODULE_DIRS)" || (cd modules/ && $(MAKE) install)
+
+install-utils: $(DESTDIR)$(sbindir) $(DESTDIR)$(bindir)
+	$(INSTALL_BIN)  ftpcount $(DESTDIR)$(bindir)/ftpcount
+	$(INSTALL_BIN)  ftpdctl  $(DESTDIR)$(bindir)/ftpdctl
+	$(INSTALL_SBIN) ftpshut  $(DESTDIR)$(sbindir)/ftpshut
+	$(INSTALL_BIN)  ftptop   $(DESTDIR)$(bindir)/ftptop
+	$(INSTALL_BIN)  ftpwho   $(DESTDIR)$(bindir)/ftpwho
+
+install-conf: $(DESTDIR)$(sysconfdir)
+	if [ ! -f $(DESTDIR)$(sysconfdir)/proftpd.conf ] ; then \
+		$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0644 \
+		           $(top_srcdir)/sample-configurations/basic.conf \
+	       	           $(DESTDIR)$(sysconfdir)/proftpd.conf ; \
+	fi
+
+install-libltdl:
+	cd lib/libltdl/ && $(MAKE) install
+
+install-man: $(DESTDIR)$(mandir) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man8
+	$(INSTALL_MAN) $(top_srcdir)/src/ftpdctl.8    $(DESTDIR)$(mandir)/man8
+	$(INSTALL_MAN) $(top_srcdir)/src/proftpd.8    $(DESTDIR)$(mandir)/man8
+	$(INSTALL_MAN) $(top_srcdir)/utils/ftpshut.8  $(DESTDIR)$(mandir)/man8
+	$(INSTALL_MAN) $(top_srcdir)/utils/ftpcount.1 $(DESTDIR)$(mandir)/man1
+	$(INSTALL_MAN) $(top_srcdir)/utils/ftptop.1   $(DESTDIR)$(mandir)/man1
+	$(INSTALL_MAN) $(top_srcdir)/utils/ftpwho.1   $(DESTDIR)$(mandir)/man1
+	$(INSTALL_MAN) $(top_srcdir)/src/xferlog.5    $(DESTDIR)$(mandir)/man5
+
+install-all: install-proftpd install-modules install-utils install-conf install-man install-headers install-locales $(INSTALL_DEPS)
+
+install: all install-all
+
+depend:
+	cd src/     && $(MAKE) depend
+	cd modules/ && $(MAKE) depend
+	cd lib/     && $(MAKE) depend
+	cd utils/   && $(MAKE) depend
+
+clean:
+	cd src/     && $(MAKE) clean
+	cd modules/ && $(MAKE) clean
+	cd lib/     && $(MAKE) clean
+	cd utils/   && $(MAKE) clean
+	cd locale/  && $(MAKE) clean
+
+	@dirs="$(DIRS)"; \
+	for dir in $$dirs; do \
+		if [ -d "$$dir" ]; then cd $$dir/ && $(MAKE) clean; fi; \
+	done
+
+	rm -f include/buildstamp.h
+	rm -f $(BUILD_BIN)
+
+distclean: clean
+	cd lib/ && $(MAKE) distclean
+	rm -f Makefile Make.modules Make.rules \
+	      lib/Makefile modules/Makefile src/Makefile utils/Makefile
+	rm -f config.h config.status config.cache config.log libtool stamp-h
+	rm -f include/buildstamp.h
+	rm -rf .libs/
+
+dist: depend distclean
+	rm -rf `find . -name CVS`
+	rm -rf `find . -name .cvsignore`
+	rm -rf `find . -name core`
+	rm -rf `find . -name '*~'`
+	rm -fr `find . -name '*.bak'`
+	# RPM needs this in the top-level directory in order to support '-t'
+	mv -f contrib/dist/rpm/proftpd.spec .
+	# Other users may need to execute these scripts
+	chmod a+x configure config.sub install-sh modules/glue.sh
+
+
+# autoheader might not change config.h.in, so touch a stamp file.
+${srcdir}/config.h.in: stamp-h.in
+${srcdir}/stamp-h.in: configure.in acconfig.h
+	cd ${srcdir} && autoheader
+	echo timestamp > ${srcdir}/stamp-h.in
+
+config.h: stamp-h
+stamp-h: config.h.in config.status
+	./config.status
+
+${srcdir}/configure: configure.in
+	cd ${srcdir} && autoconf
+
+Make.rules: Make.rules.in config.status
+	./config.status
+
+Makefile: Makefile.in Make.rules.in config.status
+	./config.status
+
+config.status: configure
+	./config.status --recheck
+
+libtool: $(LIBTOOL_DEPS)
+	$(SHELL) ./config.status --recheck
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/files/extra-patch-cyrillic-fix-netio.c /usr/ports/ftp/proftpd/files/extra-patch-cyrillic-fix-netio.c
--- /usr/ports/ftp/proftpd.orig/files/extra-patch-cyrillic-fix-netio.c	Wed Dec 31 14:00:00 1969
+++ /usr/ports/ftp/proftpd/files/extra-patch-cyrillic-fix-netio.c	Tue Jan 23 09:50:06 2007
@@ -0,0 +1,50 @@
+--- ./src/netio.c.orig  Sun Oct 10 00:46:22 2004
++++ ./src/netio.c       Thu Oct 12 15:17:22 2006
+@@ -901,47 +901,6 @@
+       cp = *pbuf->current++;
+       pbuf->remaining++;
+
+-      switch (mode) {
+-        case IAC:
+-          switch (cp) {
+-            case WILL:
+-            case WONT:
+-            case DO:
+-            case DONT:
+-              mode = cp;
+-              continue;
+-
+-            case IAC:
+-              mode = 0;
+-              break;
+-
+-            default:
+-              /* Ignore */
+-              mode = 0;
+-              continue;
+-          }
+-          break;
+-
+-        case WILL:
+-        case WONT:
+-          pr_netio_printf(out_nstrm, "%c%c%c", IAC, DONT, cp);
+-          mode = 0;
+-          continue;
+-
+-        case DO:
+-        case DONT:
+-          pr_netio_printf(out_nstrm, "%c%c%c", IAC, WONT, cp);
+-          mode = 0;
+-          continue;
+-
+-        default:
+-          if (cp == IAC) {
+-            mode = cp;
+-            continue;
+-          }
+-          break;
+-      }
+-
+       *bp++ = cp;
+       buflen--;
+     }
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/files/extra-patch-mod-codeconv /usr/ports/ftp/proftpd/files/extra-patch-mod-codeconv
--- /usr/ports/ftp/proftpd.orig/files/extra-patch-mod-codeconv	Wed Dec 31 14:00:00 1969
+++ /usr/ports/ftp/proftpd/files/extra-patch-mod-codeconv	Tue Jan 23 09:50:06 2007
@@ -0,0 +1,426 @@
+diff -urN ./modules/mod_codeconv.c .-iconv/modules/mod_codeconv.c
+--- ./modules/mod_codeconv.c    1970-01-01 09:00:00.000000000 +0900
++++ .-iconv/modules/mod_codeconv.c      2004-09-25 21:44:05.000000000 +0900
+@@ -0,0 +1,229 @@
++/*
++ * ProFTPD: mod_codeconv -- local <-> remote charset conversion
++ *
++ * Copyright (c) 2004 by TSUJIKAWA Tohru <tsujikawa@tsg.ne.jp> / All rights reserved.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
++ *
++ */
++
++
++#include       "conf.h"
++#include       <iconv.h>
++
++
++//
++// directive
++//
++#define        DIRECTIVE_CHARSETLOCAL          "CharsetLocal"
++#define        DIRECTIVE_CHARSETREMOTE         "CharsetRemote"
++
++
++//
++// initialization
++//
++static int codeconv_init(void)
++{
++       return 0;
++}
++
++static int codeconv_sess_init(void)
++{
++       return 0;
++}
++
++
++char* remote2local(struct pool* pool, char* remote)
++{
++       iconv_t ic;
++       char*   local;
++       char*   in_ptr;
++       char*   out_ptr;
++       size_t  inbytesleft, outbytesleft;
++
++       config_rec*     conf_l = NULL;
++       config_rec*     conf_r = NULL;
++
++       conf_l = find_config(main_server->conf, CONF_PARAM, DIRECTIVE_CHARSETLOCAL, FALSE);
++       conf_r = find_config(main_server->conf, CONF_PARAM, DIRECTIVE_CHARSETREMOTE, FALSE);
++       if (!conf_l || !conf_r) return NULL;
++
++       ic = iconv_open(conf_l->argv[0], conf_r->argv[0]);
++       if (ic == (iconv_t)(-1)) return NULL;
++
++       iconv(ic, NULL, NULL, NULL, NULL);
++
++       inbytesleft = strlen(remote);
++       outbytesleft = inbytesleft*3;
++       local = palloc(pool, outbytesleft+1);
++
++       in_ptr = remote; out_ptr = local;
++       while (inbytesleft) {
++               if (iconv(ic, &in_ptr, &inbytesleft, &out_ptr, &outbytesleft) == -1) {
++                       *out_ptr = '?'; out_ptr++; outbytesleft--;
++                       in_ptr++; inbytesleft--;
++                       break;
++               }
++       }
++       *out_ptr = 0;
++
++       iconv_close(ic);
++
++       return local;
++}
++
++
++char* local2remote(char* local)
++{
++       iconv_t ic;
++       char*   remote;
++       char*   in_ptr;
++       char*   out_ptr;
++       size_t  inbytesleft, outbytesleft;
++
++       config_rec*     conf_l = NULL;
++       config_rec*     conf_r = NULL;
++
++       conf_l = find_config(main_server->conf, CONF_PARAM, DIRECTIVE_CHARSETLOCAL, FALSE);
++       conf_r = find_config(main_server->conf, CONF_PARAM, DIRECTIVE_CHARSETREMOTE, FALSE);
++       if (!conf_l || !conf_r) return NULL;
++
++       ic = iconv_open(conf_r->argv[0], conf_l->argv[0]);
++       if (ic == (iconv_t)(-1)) return NULL;
++
++       iconv(ic, NULL, NULL, NULL, NULL);
++
++       inbytesleft = strlen(local);
++       outbytesleft = inbytesleft*3;
++       remote = malloc(outbytesleft+1);
++
++       in_ptr = local; out_ptr = remote;
++       while (inbytesleft) {
++               if (iconv(ic, &in_ptr, &inbytesleft, &out_ptr, &outbytesleft) == -1) {
++                       *out_ptr = '?'; out_ptr++; outbytesleft--;
++                       in_ptr++; inbytesleft--;
++                       break;
++               }
++       }
++       *out_ptr = 0;
++
++       iconv_close(ic);
++
++       return remote;
++}
++
++
++//
++// module handler
++//
++MODRET codeconv_pre_any(cmd_rec* cmd)
++{
++       char*   p;
++       int             i;
++
++       p = remote2local(cmd->pool, cmd->arg);
++       if (p) cmd->arg = p;
++
++       for (i = 0; i < cmd->argc; i++) {
++               p = remote2local(cmd->pool, cmd->argv[i]);
++               if (p) cmd->argv[i] = p;
++       }
++
++       return DECLINED(cmd);
++}
++
++
++//
++// local charset directive "CharsetLocal"
++//
++MODRET set_charsetlocal(cmd_rec *cmd) {
++  config_rec *c = NULL;
++
++  /* Syntax: CharsetLocal iconv-charset-name */
++
++  CHECK_ARGS(cmd, 1);
++  CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
++
++  c = add_config_param_str(DIRECTIVE_CHARSETLOCAL, 1, cmd->argv[1]);
++
++  return HANDLED(cmd);
++}
++
++//
++// remote charset directive "CharsetRemote"
++//
++MODRET set_charsetremote(cmd_rec *cmd) {
++  config_rec *c = NULL;
++
++  /* Syntax: CharsetRemote iconv-charset-name */
++
++  CHECK_ARGS(cmd, 1);
++  CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
++
++  c = add_config_param_str(DIRECTIVE_CHARSETREMOTE, 1, cmd->argv[1]);
++
++  return HANDLED(cmd);
++}
++
++
++//
++// module &#9552;&#9572; directive
++//
++static conftable codeconv_conftab[] = {
++       { DIRECTIVE_CHARSETLOCAL,               set_charsetlocal,               NULL },
++       { DIRECTIVE_CHARSETREMOTE,              set_charsetremote,              NULL },
++       { NULL, NULL, NULL }
++};
++
++
++//
++// trap &#1076;&#9571;&#1076;&#1099;&#1077;&#9474;&#1077;&#9616;&#1077;&#1108;&#1077;&#9556;&#9617;&#1100;&#9552;&#1118;
++//
++static cmdtable codeconv_cmdtab[] = {
++       { PRE_CMD,              C_ANY,  G_NONE, codeconv_pre_any,       FALSE, FALSE },
++       { 0,                    NULL }
++};
++
++
++//
++// module &#9563;&#1025;&#9577;&#1108;
++//
++module codeconv_module = {
++
++       /* Always NULL */
++       NULL, NULL,
++
++       /* Module API version (2.0) */
++       0x20,
++
++       /* Module name */
++       "codeconv",
++
++       /* Module configuration directive handlers */
++       codeconv_conftab,
++
++       /* Module command handlers */
++       codeconv_cmdtab,
++
++       /* Module authentication handlers (none in this case) */
++       NULL,
++
++       /* Module initialization */
++       codeconv_init,
++
++       /* Session initialization */
++       codeconv_sess_init
++
++};
+diff -urN ./modules/mod_df.c .-iconv/modules/mod_df.c
+--- ./modules/mod_df.c  1970-01-01 09:00:00.000000000 +0900
++++ .-iconv/modules/mod_df.c    2004-09-25 21:43:57.000000000 +0900
+@@ -0,0 +1,127 @@
++/*
++ * ProFTPD: mod_df -- &#1077;&#9567;&#1077;&#1075;&#1077;&#9571;&#1077;&#1087;&#9570;&#1111;&#1076;&#1085;&#9552;&#9566;&#9580;&#9568;&#9472;&#9568;&#9500;&#9580;&#1077;&#1090;&#1077;&#9557;&#1077;&#1093;&#1073;&#9565;&#1077;&#1099;
++ *
++ * Copyright (c) 2002 by TSUJIKAWA Tohru <tsujikawa@tsg.ne.jp>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
++ *
++ */
++
++ /*
++   **** for Linux only ****
++
++   CWD/CDUP &#1077;&#9474;&#1077;&#9616;&#1077;&#1108;&#1077;&#9556;&#1076;&#9580;&#1077;&#1098;&#1077;&#9570;&#1077;&#1099;&#1077;&#9562;&#1076;&#9567;&#9532;&#1038;&#9474;&#9553;&#1077;&#9567;&#1077;&#1075;&#1077;&#1100;&#1077;&#1087;&#1077;&#9562;&#1077;&#1098;&#1076;&#9567;&#1076;&#9580;&#1077;&#9567;&#1077;&#1075;&#1077;&#9571;&#1077;&#1087;&#9570;&#1111;&#1076;&#1085;&#9552;&#9566;&#9580;&#9568;&#1076;&#1028;&#9472;&#9568;&#9500;&#9580;&#1076;&#9571;&#1076;&#1099;&#1077;&#1090;&#1077;&#9557;&#1077; &#1093;&#1073;&#9565;&#1077;&#1099;&#1076;&#9567;&#1076;&#9571;&#1073;&#1075;
++
++   statfs() &#1076;&#9580;&#9559;&#9532;&#9552;&#9552;&#9563;&#1093;&#1073;&#1076;64bit &#9552;&#9572;&#1076;&#9574;&#1077;&#9474;&#1077;&#1108;&#1077;&#9572;&#1077;&#1076;&#1077;&#1099;&#1076;&#9558;&#1076;&#9577;&#1076;&#1076;&#9563;&#1100;&#9571;&#1095;&#1076;&#9575; 2TB &#9617;&#9577;&#9563;&#1093;&#1076;&#9580;&#1077;&#9567;&#1077;&#1075;&#1077;&#9571;&#1077;&#1087;&#1076;&#9580;&#9559;&#9632;&#1076;&#9574;
++   &#9492;&#9569;&#9563;&#1103;&#1076;&#9577;&#9500;&#9552;&#1076;&#1028;&#9577;&#9555;&#1076;&#9569;&#1076;&#9577;&#1076;&#1076;&#1076;&#9474;&#1076;&#9562;&#1076;&#1084;&#9508;&#8470;&#9516;&#9560;&#1076;&#9569;&#1076;&#1100;&#1076;&#9616;&#1076;&#9571;&#1073;&#1075;
++
++ */
++
++
++#include       "conf.h"
++#include       <sys/vfs.h>
++
++
++//
++// &#9564;&#1097;&#9508;&#8470;&#9619;&#9564;
++//
++static int df_init(void)
++{
++       return 0;
++}
++
++static int df_sess_init(void)
++{
++       return 0;
++}
++
++
++//
++// module handler
++//
++MODRET df_post_cwd(cmd_rec* cmd)
++{
++       char    buf[PATH_MAX+1];
++       struct statfs   sfs;
++
++       if (getcwd(buf, sizeof(buf)) && statfs(buf, &sfs) == 0) {
++               long long       f = (long long)sfs.f_bavail * (long long)sfs.f_bsize;
++               if (f >= ((long long)1 << 10)*1000000000L) {
++                       sprintf(buf, "Disk free space at this directory is %lld,%03lld,%03lld MB.",
++                                       (f >> 20)/1000000, (f >> 20)/1000%1000, (f >> 20)%1000);
++               } else if (f >= ((long long)1 << 10)*1000000) {
++                       sprintf(buf, "Disk free space at this directory is %lld,%03lld,%03lld KB.",
++                                       (f >> 10)/1000000, (f >> 10)/1000%1000, (f >> 10)%1000);
++               } else if (f >= ((long long)1 << 10)*1000) {
++                       sprintf(buf, "DISK FREE SPACE AT THIS DIRECTORY IS ONLY %lld,%03lld KB.", (f >> 10)/1000, (f >> 10)%1000);
++               } else if (f >= 1000) {
++                       sprintf(buf, "DISK FREE SPACE AT THIS DIRECTORY IS ONLY %lld,%03lld Bytes.", f/1000, f%1000);
++               } else {
++                       sprintf(buf, "DISK FREE SPACE AT THIS DIRECTORY IS ONLY %lld Bytes.", f);
++               }
++               pr_response_send_raw("250-%s", buf);
++       }
++       return HANDLED(cmd);
++}
++
++
++//
++// module &#9552;&#9572; directive
++//
++static conftable df_conftab[] = {
++       { NULL }                                                // directive &#1076;&#9575;&#1077;&#9569;&#1077;&#9612;&#1073;&#9565;&#1077;&#9562;&#1076;&#9558;&#1076;&#9577;&#1076;&#1076;
++};
++
++
++//
++// trap &#1076;&#9571;&#1076;&#1099;&#1077;&#9474;&#1077;&#9616;&#1077;&#1108;&#1077;&#9556;&#9617;&#1100;&#9552;&#1118;
++//
++static cmdtable df_cmdtab[] = {
++       { POST_CMD,             C_CWD,  G_NONE, df_post_cwd,    FALSE, FALSE },
++       { POST_CMD,             C_CDUP, G_NONE, df_post_cwd,    FALSE, FALSE },
++       { 0,                    NULL }
++};
++
++
++//
++// module &#9563;&#1025;&#9577;&#1108;
++//
++module df_module = {
++
++       /* Always NULL */
++       NULL, NULL,
++
++       /* Module API version (2.0) */
++       0x20,
++
++       /* Module name */
++       "df",
++
++       /* Module configuration directive handlers */
++       df_conftab,
++
++       /* Module command handlers */
++       df_cmdtab,
++
++       /* Module authentication handlers (none in this case) */
++       NULL,
++
++       /* Module initialization */
++       df_init,
++
++       /* Session initialization */
++       df_sess_init
++
++};
+--- ./modules/mod_ls.c  Sat Dec 16 01:25:31 2006
++++ .-iconv/modules/mod_ls.c    Tue Jan 23 15:43:20 2007
+@@ -244,12 +244,15 @@
+   return res;
+ }
+
++extern char* local2remote(char*);
++
+ /* sendline() now has an internal buffer, to help speed up LIST output. */
+ static int sendline(int flags, char *fmt, ...) {
+   static char listbuf[PR_TUNABLE_BUFFER_SIZE] = {'\0'};
+   va_list msg;
+   char buf[PR_TUNABLE_BUFFER_SIZE+1] = {'\0'};
+   int res = 0;
++  char* buf2;
+
+   if (flags & LS_SENDLINE_FL_FLUSH) {
+     res = pr_data_xfer(listbuf, strlen(listbuf));
+@@ -268,6 +271,13 @@
+
+   buf[sizeof(buf)-1] = '\0';
+
++  if (buf[0]) {
++    buf2 = local2remote(buf);
++    if (buf2) {
++      strcpy(buf, buf2); free(buf2);
++    }
++  }
++
+   /* If buf won't fit completely into listbuf, flush listbuf */
+   if (strlen(buf) >= (sizeof(listbuf) - strlen(listbuf))) {
+     res = pr_data_xfer(listbuf, strlen(listbuf));
+diff -urN ./src/netio.c .-iconv/src/netio.c
+--- ./src/netio.c       2004-06-16 01:45:21.000000000 +0900
++++ .-iconv/src/netio.c 2004-09-25 21:42:59.000000000 +0900
+@@ -467,9 +467,12 @@
+   return -1;
+ }
+
++extern char* local2remote(char* local);
++
+ int pr_netio_printf(pr_netio_stream_t *nstrm, const char *fmt, ...) {
+   va_list msg;
+   char buf[PR_RESPONSE_BUFFER_SIZE] = {'\0'};
++  char* p;
+
+   if (!nstrm) {
+     errno = EINVAL;
+@@ -481,6 +484,13 @@
+   va_end(msg);
+   buf[sizeof(buf)-1] = '\0';
+
++  if (buf[0]) {
++    p = local2remote(buf);
++    if (p) {
++      strcpy(buf, p); free(p);
++    }
++  }
++
+   return pr_netio_write(nstrm, buf, strlen(buf));
+ }
+
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/files/extra-patch-nls-Makefile.in /usr/ports/ftp/proftpd/files/extra-patch-nls-Makefile.in
--- /usr/ports/ftp/proftpd.orig/files/extra-patch-nls-Makefile.in	Sat Dec 30 13:45:40 2006
+++ /usr/ports/ftp/proftpd/files/extra-patch-nls-Makefile.in	Tue Jan 23 10:44:58 2007
@@ -1,14 +1,14 @@
---- Makefile.in	Fri Dec 29 09:19:12 2006
-+++ Makefile.in.new	Fri Dec 29 09:19:22 2006
-@@ -63,10 +63,10 @@
- 	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPSHUT_OBJS)
+--- Makefile.in.orig	Tue Jan  9 17:19:02 2007
++++ Makefile.in	Tue Jan 23 10:39:40 2007
+@@ -64,10 +64,10 @@
+ 	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPSHUT_OBJS) $(UTILS_LIBS)
  
  ftptop$(EXEEXT): lib utils
--	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) -lsupp
+-	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) $(UTILS_LIBS) -lsupp
 +	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) -lsupp -lintl
  
  ftpwho$(EXEEXT): lib utils
--	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) -lsupp
+-	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) $(UTILS_LIBS) -lsupp
 +	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) -lsupp -lintl
  
  
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/files/extra-patch-nls-Makefile.in.orig /usr/ports/ftp/proftpd/files/extra-patch-nls-Makefile.in.orig
--- /usr/ports/ftp/proftpd.orig/files/extra-patch-nls-Makefile.in.orig	Wed Dec 31 14:00:00 1969
+++ /usr/ports/ftp/proftpd/files/extra-patch-nls-Makefile.in.orig	Sat Dec 30 13:45:40 2006
@@ -0,0 +1,15 @@
+--- Makefile.in	Fri Dec 29 09:19:12 2006
++++ Makefile.in.new	Fri Dec 29 09:19:22 2006
+@@ -63,10 +63,10 @@
+ 	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPSHUT_OBJS)
+ 
+ ftptop$(EXEEXT): lib utils
+-	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) -lsupp
++	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) -lsupp -lintl
+ 
+ ftpwho$(EXEEXT): lib utils
+-	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) -lsupp
++	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) -lsupp -lintl
+ 
+ 
+ # BSD install -d doesn't work, so ...
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/files/extra-patch-nls-Makefile.in.rej /usr/ports/ftp/proftpd/files/extra-patch-nls-Makefile.in.rej
--- /usr/ports/ftp/proftpd.orig/files/extra-patch-nls-Makefile.in.rej	Wed Dec 31 14:00:00 1969
+++ /usr/ports/ftp/proftpd/files/extra-patch-nls-Makefile.in.rej	Tue Jan 23 10:01:49 2007
@@ -0,0 +1,27 @@
+***************
+*** 4,15 ****
+          $(CC) $(LDFLAGS) -o $@ $(BUILD_FTPSHUT_OBJS)
+   ftptop$(EXEEXT): lib utils
+- -       $(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) -lsupp
+- +       $(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) -lsupp -lintl
+   ftpwho$(EXEEXT): lib utils
+- -       $(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) -lsupp
+- +       $(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) -lsupp -lintl
+  
+  
+   # BSD install -d doesn't work, so ...
+  
+  
+--- 4,15 ----
+          $(CC) $(LDFLAGS) -o $@ $(BUILD_FTPSHUT_OBJS)
+   ftptop$(EXEEXT): lib utils
++ -       $(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) $(UTILS_LIBS) -lsupp
++ +       $(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) $(UTILS_LIBS) -lsupp -lintl
+   ftpwho$(EXEEXT): lib utils
++ -       $(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) $(UTILS_LIBS) -lsupp
++ +       $(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) $(UTILS_LIBS) -lsupp -lintl
+  
+  
+   # BSD install -d doesn't work, so ...
+  
+  


Beech Rintoul (Maintainer)
Comment 3 Beech Rintoul 2007-01-23 20:22:15 UTC
Forgot housekeeping use this patchset:


diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/Makefile /usr/ports/ftp/proftpd/Makefile
--- /usr/ports/ftp/proftpd.orig/Makefile	Mon Jan 22 19:27:17 2007
+++ /usr/ports/ftp/proftpd/Makefile	Tue Jan 23 10:30:35 2007
@@ -7,7 +7,7 @@
 
 PORTNAME=	proftpd
 DISTVERSION=	1.3.1rc2
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	ftp
 MASTER_SITES=	ftp://ftp.proftpd.org/distrib/source/ \
 		ftp://ftp.fastorama.com/mirrors/ftp.proftpd.org/distrib/source/ \
@@ -32,9 +32,8 @@
 
 USE_GMAKE=	yes
 USE_BZIP2=	yes
-USE=AUTOTOOLS=	autoconf:259
-GNU_CONFIGURE=yes
-
+USE_AUTOTOOLS=	autoconf:259
+GNU_CONFIGURE=	yes
 USE_RC_SUBR=	proftpd.sh
 
 CONFIGURE_ARGS=	--localstatedir=/var/run \
@@ -59,7 +58,9 @@
 		RADIUS "Include mod_radius" off \
 		QUOTATAB_RADIUS "include mod_quotatab_radius" off \
 		BAN "include mod_ban (Requires CTRLS)" off \
-		NLS "Use nls (builds mod_lang)" off
+		NLS "Use nls (builds mod_lang)" off \
+		CYRFIX "Use fix for cyrillic encoding" off \
+		CODECONV "Use charset conversion (mod_codeconv)" off
 
 MODULES?=
 LIBDIRS?=
@@ -139,6 +140,10 @@
 EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-nls-Makefile.in
 .endif
 
+.if defined(WITH_CYRFIX)
+EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-cyrillic-fix-netio.c
+.endif
+
 #allow user to override
 MODULES?=	mod_ratio:mod_readme:mod_rewrite:mod_wrap2:mod_ifsession
 
@@ -195,6 +200,12 @@
 .if defined(WITH_POSTGRESQL) || defined(WITH_MYSQL)
 MODULES:=${MODULES}:mod_quotatab_sql
 .endif
+.endif
+
+.if defined(WITH_CODECONV)
+MODULES:=${MODULES}:mod_codeconv
+PROFTPD_LIBS+=	-liconv -L${LOCALBASE}/lib
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-mod-codeconv
 .endif
 
 # mod_ifsession should be the last item in the modules list
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/files/extra-patch-cyrillic-fix-netio.c /usr/ports/ftp/proftpd/files/extra-patch-cyrillic-fix-netio.c
--- /usr/ports/ftp/proftpd.orig/files/extra-patch-cyrillic-fix-netio.c	Wed Dec 
31 14:00:00 1969
+++ /usr/ports/ftp/proftpd/files/extra-patch-cyrillic-fix-netio.c	Tue Jan 23 
09:50:06 2007
@@ -0,0 +1,50 @@
+--- ./src/netio.c.orig  Sun Oct 10 00:46:22 2004
++++ ./src/netio.c       Thu Oct 12 15:17:22 2006
+@@ -901,47 +901,6 @@
+       cp = *pbuf->current++;
+       pbuf->remaining++;
+
+-      switch (mode) {
+-        case IAC:
+-          switch (cp) {
+-            case WILL:
+-            case WONT:
+-            case DO:
+-            case DONT:
+-              mode = cp;
+-              continue;
+-
+-            case IAC:
+-              mode = 0;
+-              break;
+-
+-            default:
+-              /* Ignore */
+-              mode = 0;
+-              continue;
+-          }
+-          break;
+-
+-        case WILL:
+-        case WONT:
+-          pr_netio_printf(out_nstrm, "%c%c%c", IAC, DONT, cp);
+-          mode = 0;
+-          continue;
+-
+-        case DO:
+-        case DONT:
+-          pr_netio_printf(out_nstrm, "%c%c%c", IAC, WONT, cp);
+-          mode = 0;
+-          continue;
+-
+-        default:
+-          if (cp == IAC) {
+-            mode = cp;
+-            continue;
+-          }
+-          break;
+-      }
+-
+       *bp++ = cp;
+       buflen--;
+     }
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/files/extra-patch-mod-codeconv /usr/ports/ftp/proftpd/files/extra-patch-mod-codeconv
--- /usr/ports/ftp/proftpd.orig/files/extra-patch-mod-codeconv	Wed Dec 31 
14:00:00 1969
+++ /usr/ports/ftp/proftpd/files/extra-patch-mod-codeconv	Tue Jan 23 09:50:06 
2007
@@ -0,0 +1,426 @@
+diff -urN ./modules/mod_codeconv.c .-iconv/modules/mod_codeconv.c
+--- ./modules/mod_codeconv.c    1970-01-01 09:00:00.000000000 +0900
++++ .-iconv/modules/mod_codeconv.c      2004-09-25 21:44:05.000000000 +0900
+@@ -0,0 +1,229 @@
++/*
++ * ProFTPD: mod_codeconv -- local <-> remote charset conversion
++ *
++ * Copyright (c) 2004 by TSUJIKAWA Tohru <tsujikawa@tsg.ne.jp> / All rights 
reserved.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, 
USA.
++ *
++ */
++
++
++#include       "conf.h"
++#include       <iconv.h>
++
++
++//
++// directive
++//
++#define        DIRECTIVE_CHARSETLOCAL          "CharsetLocal"
++#define        DIRECTIVE_CHARSETREMOTE         "CharsetRemote"
++
++
++//
++// initialization
++//
++static int codeconv_init(void)
++{
++       return 0;
++}
++
++static int codeconv_sess_init(void)
++{
++       return 0;
++}
++
++
++char* remote2local(struct pool* pool, char* remote)
++{
++       iconv_t ic;
++       char*   local;
++       char*   in_ptr;
++       char*   out_ptr;
++       size_t  inbytesleft, outbytesleft;
++
++       config_rec*     conf_l = NULL;
++       config_rec*     conf_r = NULL;
++
++       conf_l = find_config(main_server->conf, CONF_PARAM, 
DIRECTIVE_CHARSETLOCAL, FALSE);
++       conf_r = find_config(main_server->conf, CONF_PARAM, 
DIRECTIVE_CHARSETREMOTE, FALSE);
++       if (!conf_l || !conf_r) return NULL;
++
++       ic = iconv_open(conf_l->argv[0], conf_r->argv[0]);
++       if (ic == (iconv_t)(-1)) return NULL;
++
++       iconv(ic, NULL, NULL, NULL, NULL);
++
++       inbytesleft = strlen(remote);
++       outbytesleft = inbytesleft*3;
++       local = palloc(pool, outbytesleft+1);
++
++       in_ptr = remote; out_ptr = local;
++       while (inbytesleft) {
++               if (iconv(ic, &in_ptr, &inbytesleft, &out_ptr, &outbytesleft) 
== -1) {
++                       *out_ptr = '?'; out_ptr++; outbytesleft--;
++                       in_ptr++; inbytesleft--;
++                       break;
++               }
++       }
++       *out_ptr = 0;
++
++       iconv_close(ic);
++
++       return local;
++}
++
++
++char* local2remote(char* local)
++{
++       iconv_t ic;
++       char*   remote;
++       char*   in_ptr;
++       char*   out_ptr;
++       size_t  inbytesleft, outbytesleft;
++
++       config_rec*     conf_l = NULL;
++       config_rec*     conf_r = NULL;
++
++       conf_l = find_config(main_server->conf, CONF_PARAM, 
DIRECTIVE_CHARSETLOCAL, FALSE);
++       conf_r = find_config(main_server->conf, CONF_PARAM, 
DIRECTIVE_CHARSETREMOTE, FALSE);
++       if (!conf_l || !conf_r) return NULL;
++
++       ic = iconv_open(conf_r->argv[0], conf_l->argv[0]);
++       if (ic == (iconv_t)(-1)) return NULL;
++
++       iconv(ic, NULL, NULL, NULL, NULL);
++
++       inbytesleft = strlen(local);
++       outbytesleft = inbytesleft*3;
++       remote = malloc(outbytesleft+1);
++
++       in_ptr = local; out_ptr = remote;
++       while (inbytesleft) {
++               if (iconv(ic, &in_ptr, &inbytesleft, &out_ptr, &outbytesleft) 
== -1) {
++                       *out_ptr = '?'; out_ptr++; outbytesleft--;
++                       in_ptr++; inbytesleft--;
++                       break;
++               }
++       }
++       *out_ptr = 0;
++
++       iconv_close(ic);
++
++       return remote;
++}
++
++
++//
++// module handler
++//
++MODRET codeconv_pre_any(cmd_rec* cmd)
++{
++       char*   p;
++       int             i;
++
++       p = remote2local(cmd->pool, cmd->arg);
++       if (p) cmd->arg = p;
++
++       for (i = 0; i < cmd->argc; i++) {
++               p = remote2local(cmd->pool, cmd->argv[i]);
++               if (p) cmd->argv[i] = p;
++       }
++
++       return DECLINED(cmd);
++}
++
++
++//
++// local charset directive "CharsetLocal"
++//
++MODRET set_charsetlocal(cmd_rec *cmd) {
++  config_rec *c = NULL;
++
++  /* Syntax: CharsetLocal iconv-charset-name */
++
++  CHECK_ARGS(cmd, 1);
++  CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
++
++  c = add_config_param_str(DIRECTIVE_CHARSETLOCAL, 1, cmd->argv[1]);
++
++  return HANDLED(cmd);
++}
++
++//
++// remote charset directive "CharsetRemote"
++//
++MODRET set_charsetremote(cmd_rec *cmd) {
++  config_rec *c = NULL;
++
++  /* Syntax: CharsetRemote iconv-charset-name */
++
++  CHECK_ARGS(cmd, 1);
++  CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
++
++  c = add_config_param_str(DIRECTIVE_CHARSETREMOTE, 1, cmd->argv[1]);
++
++  return HANDLED(cmd);
++}
++
++
++//
++// module &#9552;&#9572; directive
++//
++static conftable codeconv_conftab[] = {
++       { DIRECTIVE_CHARSETLOCAL,               set_charsetlocal,               
NULL },
++       { DIRECTIVE_CHARSETREMOTE,              set_charsetremote,              
NULL },
++       { NULL, NULL, NULL }
++};
++
++
++//
++// trap 
&#1076;&#9571;&#1076;&#1099;&#1077;&#9474;&#1077;&#9616;&#1077;&#1108;&#1077;&#9556;&#9617;&#1100;&#9552;&#1118;
++//
++static cmdtable codeconv_cmdtab[] = {
++       { PRE_CMD,              C_ANY,  G_NONE, codeconv_pre_any,       
FALSE, FALSE },
++       { 0,                    NULL }
++};
++
++
++//
++// module &#9563;&#1025;&#9577;&#1108;
++//
++module codeconv_module = {
++
++       /* Always NULL */
++       NULL, NULL,
++
++       /* Module API version (2.0) */
++       0x20,
++
++       /* Module name */
++       "codeconv",
++
++       /* Module configuration directive handlers */
++       codeconv_conftab,
++
++       /* Module command handlers */
++       codeconv_cmdtab,
++
++       /* Module authentication handlers (none in this case) */
++       NULL,
++
++       /* Module initialization */
++       codeconv_init,
++
++       /* Session initialization */
++       codeconv_sess_init
++
++};
+diff -urN ./modules/mod_df.c .-iconv/modules/mod_df.c
+--- ./modules/mod_df.c  1970-01-01 09:00:00.000000000 +0900
++++ .-iconv/modules/mod_df.c    2004-09-25 21:43:57.000000000 +0900
+@@ -0,0 +1,127 @@
++/*
++ * ProFTPD: mod_df -- 
&#1077;&#9567;&#1077;&#1075;&#1077;&#9571;&#1077;&#1087;&#9570;&#1111;&#1076;&#1085;&#9552;&#9566;&#9580;&#9568;&#9472;&#9568;&#9500;&#9580;&#1077;&#1090;&#1077;&#9557;&#1077;&#1093;&#1073;&#9565;&#1077;&#1099;
++ *
++ * Copyright (c) 2002 by TSUJIKAWA Tohru <tsujikawa@tsg.ne.jp>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, 
USA.
++ *
++ */
++
++ /*
++   **** for Linux only ****
++
++   CWD/CDUP 
&#1077;&#9474;&#1077;&#9616;&#1077;&#1108;&#1077;&#9556;&#1076;&#9580;&#1077;&#1098;&#1077;&#9570;&#1077;&#1099;&#1077;&#9562;&#1076;&#9567;&#9532;&#1038;&#9474;&#9553;&#1077;&#9567;&#1077;&#1075;&#1077;&#1100;&#1077;&#1087;&#1077;&#9562;&#1077;&#1098;&#1076;&#9567;&#1076;&#9580;&#1077;&#9567;&#1077;&#1075;&#1077;&#9571;&#1077;&#1087;&#9570;&#1111;&#1076;&#1085;&#9552;&#9566;&#9580;&#9568;&#1076;&#1028;&#9472;&#9568;&#9500;&#9580;&#1076;&#9571;&#1076;&#1099;&#1077;&#1090;&#1077;&#9557;&#1077;&#1093;&#1073; &#9565;&#1077;&#1099;&#1076;&#9567;&#1076;&#9571;&#1073;&#1075;
++
++   statfs() 
&#1076;&#9580;&#9559;&#9532;&#9552;&#9552;&#9563;&#1093;&#1073;&#1076;64bit 
&#9552;&#9572;&#1076;&#9574;&#1077;&#9474;&#1077;&#1108;&#1077;&#9572;&#1077;&#1076;&#1077;&#1099;&#1076;&#9558;&#1076;&#9577;&#1076;&#1076;&#9563;&#1100;&#9571;&#1095;&#1076;&#9575; 
2TB 
&#9617;&#9577;&#9563;&#1093;&#1076;&#9580;&#1077;&#9567;&#1077;&#1075;&#1077;&#9571;&#1077;&#1087;&#1076;&#9580;&#9559;&#9632;&#1076;&#9574;
++   
&#9492;&#9569;&#9563;&#1103;&#1076;&#9577;&#9500;&#9552;&#1076;&#1028;&#9577;&#9555;&#1076;&#9569;&#1076;&#9577;&#1076;&#1076;&#1076;&#9474;&#1076;&#9562;&#1076;&#1084;&#9508;&#8470;&#9516;&#9560;&#1076;&#9569;&#1076;&#1100;&#1076;&#9616;&#1076;&#9571;&#1073;&#1075;
++
++ */
++
++
++#include       "conf.h"
++#include       <sys/vfs.h>
++
++
++//
++// &#9564;&#1097;&#9508;&#8470;&#9619;&#9564;
++//
++static int df_init(void)
++{
++       return 0;
++}
++
++static int df_sess_init(void)
++{
++       return 0;
++}
++
++
++//
++// module handler
++//
++MODRET df_post_cwd(cmd_rec* cmd)
++{
++       char    buf[PATH_MAX+1];
++       struct statfs   sfs;
++
++       if (getcwd(buf, sizeof(buf)) && statfs(buf, &sfs) == 0) {
++               long long       f = (long long)sfs.f_bavail * (long 
long)sfs.f_bsize;
++               if (f >= ((long long)1 << 10)*1000000000L) {
++                       sprintf(buf, "Disk free space at this directory 
is %lld,%03lld,%03lld MB.",
++                                       (f >> 20)/1000000, (f >> 
20)/1000%1000, (f >> 20)%1000);
++               } else if (f >= ((long long)1 << 10)*1000000) {
++                       sprintf(buf, "Disk free space at this directory 
is %lld,%03lld,%03lld KB.",
++                                       (f >> 10)/1000000, (f >> 
10)/1000%1000, (f >> 10)%1000);
++               } else if (f >= ((long long)1 << 10)*1000) {
++                       sprintf(buf, "DISK FREE SPACE AT THIS DIRECTORY IS 
ONLY %lld,%03lld KB.", (f >> 10)/1000, (f >> 10)%1000);
++               } else if (f >= 1000) {
++                       sprintf(buf, "DISK FREE SPACE AT THIS DIRECTORY IS 
ONLY %lld,%03lld Bytes.", f/1000, f%1000);
++               } else {
++                       sprintf(buf, "DISK FREE SPACE AT THIS DIRECTORY IS 
ONLY %lld Bytes.", f);
++               }
++               pr_response_send_raw("250-%s", buf);
++       }
++       return HANDLED(cmd);
++}
++
++
++//
++// module &#9552;&#9572; directive
++//
++static conftable df_conftab[] = {
++       { NULL }                                                // directive 
&#1076;&#9575;&#1077;&#9569;&#1077;&#9612;&#1073;&#9565;&#1077;&#9562;&#1076;&#9558;&#1076;&#9577;&#1076;&#1076;
++};
++
++
++//
++// trap 
&#1076;&#9571;&#1076;&#1099;&#1077;&#9474;&#1077;&#9616;&#1077;&#1108;&#1077;&#9556;&#9617;&#1100;&#9552;&#1118;
++//
++static cmdtable df_cmdtab[] = {
++       { POST_CMD,             C_CWD,  G_NONE, df_post_cwd,    FALSE, 
FALSE },
++       { POST_CMD,             C_CDUP, G_NONE, df_post_cwd,    FALSE, 
FALSE },
++       { 0,                    NULL }
++};
++
++
++//
++// module &#9563;&#1025;&#9577;&#1108;
++//
++module df_module = {
++
++       /* Always NULL */
++       NULL, NULL,
++
++       /* Module API version (2.0) */
++       0x20,
++
++       /* Module name */
++       "df",
++
++       /* Module configuration directive handlers */
++       df_conftab,
++
++       /* Module command handlers */
++       df_cmdtab,
++
++       /* Module authentication handlers (none in this case) */
++       NULL,
++
++       /* Module initialization */
++       df_init,
++
++       /* Session initialization */
++       df_sess_init
++
++};
+--- ./modules/mod_ls.c  Sat Dec 16 01:25:31 2006
++++ .-iconv/modules/mod_ls.c    Tue Jan 23 15:43:20 2007
+@@ -244,12 +244,15 @@
+   return res;
+ }
+
++extern char* local2remote(char*);
++
+ /* sendline() now has an internal buffer, to help speed up LIST output. */
+ static int sendline(int flags, char *fmt, ...) {
+   static char listbuf[PR_TUNABLE_BUFFER_SIZE] = {'\0'};
+   va_list msg;
+   char buf[PR_TUNABLE_BUFFER_SIZE+1] = {'\0'};
+   int res = 0;
++  char* buf2;
+
+   if (flags & LS_SENDLINE_FL_FLUSH) {
+     res = pr_data_xfer(listbuf, strlen(listbuf));
+@@ -268,6 +271,13 @@
+
+   buf[sizeof(buf)-1] = '\0';
+
++  if (buf[0]) {
++    buf2 = local2remote(buf);
++    if (buf2) {
++      strcpy(buf, buf2); free(buf2);
++    }
++  }
++
+   /* If buf won't fit completely into listbuf, flush listbuf */
+   if (strlen(buf) >= (sizeof(listbuf) - strlen(listbuf))) {
+     res = pr_data_xfer(listbuf, strlen(listbuf));
+diff -urN ./src/netio.c .-iconv/src/netio.c
+--- ./src/netio.c       2004-06-16 01:45:21.000000000 +0900
++++ .-iconv/src/netio.c 2004-09-25 21:42:59.000000000 +0900
+@@ -467,9 +467,12 @@
+   return -1;
+ }
+
++extern char* local2remote(char* local);
++
+ int pr_netio_printf(pr_netio_stream_t *nstrm, const char *fmt, ...) {
+   va_list msg;
+   char buf[PR_RESPONSE_BUFFER_SIZE] = {'\0'};
++  char* p;
+
+   if (!nstrm) {
+     errno = EINVAL;
+@@ -481,6 +484,13 @@
+   va_end(msg);
+   buf[sizeof(buf)-1] = '\0';
+
++  if (buf[0]) {
++    p = local2remote(buf);
++    if (p) {
++      strcpy(buf, p); free(p);
++    }
++  }
++
+   return pr_netio_write(nstrm, buf, strlen(buf));
+ }
+
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/files/extra-patch-nls-Makefile.in /usr/ports/ftp/proftpd/files/extra-patch-nls-Makefile.in
--- /usr/ports/ftp/proftpd.orig/files/extra-patch-nls-Makefile.in	Sat Dec 30 
13:45:40 2006
+++ /usr/ports/ftp/proftpd/files/extra-patch-nls-Makefile.in	Tue Jan 23 
10:44:58 2007
@@ -1,14 +1,14 @@
---- Makefile.in	Fri Dec 29 09:19:12 2006
-+++ Makefile.in.new	Fri Dec 29 09:19:22 2006
-@@ -63,10 +63,10 @@
- 	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPSHUT_OBJS)
+--- Makefile.in.orig	Tue Jan  9 17:19:02 2007
++++ Makefile.in	Tue Jan 23 10:39:40 2007
+@@ -64,10 +64,10 @@
+ 	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPSHUT_OBJS) $(UTILS_LIBS)
  
  ftptop$(EXEEXT): lib utils
--	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) -lsupp
+-	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) 
$(UTILS_LIBS) -lsupp
 +	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) -lsupp -lintl
  
  ftpwho$(EXEEXT): lib utils
--	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) -lsupp
+-	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) $(UTILS_LIBS) -lsupp
 +	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) -lsupp -lintl
  
  
  


Beech Rintoul (Maintainer)
Comment 4 Ion-Mihai "IOnut" Tetcu freebsd_committer freebsd_triage 2007-01-26 08:01:40 UTC
Responsible Changed
From-To: freebsd-ports-bugs->itetcu

I'll take it.
Comment 5 Beech Rintoul 2007-02-10 00:10:17 UTC
This pr has been sitting around for a while. Please use this diff:

diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/Makefile /usr/ports/ftp/proftpd/Makefile
--- /usr/ports/ftp/proftpd.orig/Makefile	Mon Jan 22 19:27:17 2007
+++ /usr/ports/ftp/proftpd/Makefile	Thu Feb  1 09:28:27 2007
@@ -7,7 +7,7 @@
 
 PORTNAME=	proftpd
 DISTVERSION=	1.3.1rc2
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	ftp
 MASTER_SITES=	ftp://ftp.proftpd.org/distrib/source/ \
 		ftp://ftp.fastorama.com/mirrors/ftp.proftpd.org/distrib/source/ \
@@ -20,6 +20,9 @@
 MAINTAINER?=	beech@alaskaparadise.com
 COMMENT?=	Highly configurable ftp daemon
 
+EXTRACT_DEPENDS=	autoconf259:${PORTSDIR}/devel/autoconf259
+BUILD_DEPENDS+=	autoconf259:${PORTSDIR}/devel/autoconf259
+
 MAN1=	ftpcount.1 ftpwho.1 ftptop.1
 MAN5=	xferlog.5
 MAN8=	proftpd.8 ftpshut.8 ftpdctl.8
@@ -59,7 +62,9 @@
 		RADIUS "Include mod_radius" off \
 		QUOTATAB_RADIUS "include mod_quotatab_radius" off \
 		BAN "include mod_ban (Requires CTRLS)" off \
-		NLS "Use nls (builds mod_lang)" off
+		NLS "Use nls (builds mod_lang)" off \
+		CYRFIX "Use patch for fix cyrillic encoding" off \
+		CODECONV "Use charset conversion (mod_codeconv)" off
 
 MODULES?=
 LIBDIRS?=
@@ -67,11 +72,6 @@
 
 .include <bsd.port.pre.mk>
 
-.if ${OSVERSION} < 500000
-CONFIGURE_ARGS+=	--without-getopt
-USE_AUTOTOOLS=	autoconf:259
-.endif
-
 .if !defined(WITHOUT_RATIO)
 MODULES:=${MODULES}:mod_ratio
 .endif
@@ -139,6 +139,10 @@
 EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-nls-Makefile.in
 .endif
 
+.if defined (WITH_CYRFIX)
+EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-cyrillic-fix-netio.c
+.endif
+
 #allow user to override
 MODULES?=	mod_ratio:mod_readme:mod_rewrite:mod_wrap2:mod_ifsession
 
@@ -195,6 +199,12 @@
 .if defined(WITH_POSTGRESQL) || defined(WITH_MYSQL)
 MODULES:=${MODULES}:mod_quotatab_sql
 .endif
+.endif
+
+.if defined(WITH_CODECONV)
+MODULES:=${MODULES}:mod_codeconv
+PROFTPD_LIBS+=	-liconv -L${LOCALBASE}/lib
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-mod-codeconv
 .endif
 
 # mod_ifsession should be the last item in the modules list
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/files/extra-patch-cyrillic-fix-netio.c /usr/ports/ftp/proftpd/files/extra-patch-cyrillic-fix-netio.c
--- /usr/ports/ftp/proftpd.orig/files/extra-patch-cyrillic-fix-netio.c	
Wed Dec 31 14:00:00 1969
+++ /usr/ports/ftp/proftpd/files/extra-patch-cyrillic-fix-netio.c	Thu 
Feb  1 09:04:35 2007
@@ -0,0 +1,50 @@
+--- ./src/netio.c.orig  Sun Oct 10 00:46:22 2004
++++ ./src/netio.c       Thu Oct 12 15:17:22 2006
+@@ -901,47 +901,6 @@
+       cp = *pbuf->current++;
+       pbuf->remaining++;
+
+-      switch (mode) {
+-        case IAC:
+-          switch (cp) {
+-            case WILL:
+-            case WONT:
+-            case DO:
+-            case DONT:
+-              mode = cp;
+-              continue;
+-
+-            case IAC:
+-              mode = 0;
+-              break;
+-
+-            default:
+-              /* Ignore */
+-              mode = 0;
+-              continue;
+-          }
+-          break;
+-
+-        case WILL:
+-        case WONT:
+-          pr_netio_printf(out_nstrm, "%c%c%c", IAC, DONT, cp);
+-          mode = 0;
+-          continue;
+-
+-        case DO:
+-        case DONT:
+-          pr_netio_printf(out_nstrm, "%c%c%c", IAC, WONT, cp);
+-          mode = 0;
+-          continue;
+-
+-        default:
+-          if (cp == IAC) {
+-            mode = cp;
+-            continue;
+-          }
+-          break;
+-      }
+-
+       *bp++ = cp;
+       buflen--;
+     }
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/files/extra-patch-mod-codeconv /usr/ports/ftp/proftpd/files/extra-patch-mod-codeconv
--- /usr/ports/ftp/proftpd.orig/files/extra-patch-mod-codeconv	Wed Dec 
31 14:00:00 1969
+++ /usr/ports/ftp/proftpd/files/extra-patch-mod-codeconv	Thu Feb  1 
09:04:35 2007
@@ -0,0 +1,426 @@
+diff -urN ./modules/mod_codeconv.c .-iconv/modules/mod_codeconv.c
+--- ./modules/mod_codeconv.c    1970-01-01 09:00:00.000000000 +0900
++++ .-iconv/modules/mod_codeconv.c      2004-09-25 21:44:05.000000000 
+0900
+@@ -0,0 +1,229 @@
++/*
++ * ProFTPD: mod_codeconv -- local <-> remote charset conversion
++ *
++ * Copyright (c) 2004 by TSUJIKAWA Tohru <tsujikawa@tsg.ne.jp> / All 
rights reserved.
++ *
++ * This program is free software; you can redistribute it and/or 
modify
++ * it under the terms of the GNU General Public License as published 
by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  
02111-1307, USA.
++ *
++ */
++
++
++#include       "conf.h"
++#include       <iconv.h>
++
++
++//
++// directive
++//
++#define        DIRECTIVE_CHARSETLOCAL          "CharsetLocal"
++#define        DIRECTIVE_CHARSETREMOTE         "CharsetRemote"
++
++
++//
++// initialization
++//
++static int codeconv_init(void)
++{
++       return 0;
++}
++
++static int codeconv_sess_init(void)
++{
++       return 0;
++}
++
++
++char* remote2local(struct pool* pool, char* remote)
++{
++       iconv_t ic;
++       char*   local;
++       char*   in_ptr;
++       char*   out_ptr;
++       size_t  inbytesleft, outbytesleft;
++
++       config_rec*     conf_l = NULL;
++       config_rec*     conf_r = NULL;
++
++       conf_l = find_config(main_server->conf, CONF_PARAM, 
DIRECTIVE_CHARSETLOCAL, FALSE);
++       conf_r = find_config(main_server->conf, CONF_PARAM, 
DIRECTIVE_CHARSETREMOTE, FALSE);
++       if (!conf_l || !conf_r) return NULL;
++
++       ic = iconv_open(conf_l->argv[0], conf_r->argv[0]);
++       if (ic == (iconv_t)(-1)) return NULL;
++
++       iconv(ic, NULL, NULL, NULL, NULL);
++
++       inbytesleft = strlen(remote);
++       outbytesleft = inbytesleft*3;
++       local = palloc(pool, outbytesleft+1);
++
++       in_ptr = remote; out_ptr = local;
++       while (inbytesleft) {
++               if (iconv(ic, &in_ptr, &inbytesleft, &out_ptr, 
&outbytesleft) == -1) {
++                       *out_ptr = '?'; out_ptr++; outbytesleft--;
++                       in_ptr++; inbytesleft--;
++                       break;
++               }
++       }
++       *out_ptr = 0;
++
++       iconv_close(ic);
++
++       return local;
++}
++
++
++char* local2remote(char* local)
++{
++       iconv_t ic;
++       char*   remote;
++       char*   in_ptr;
++       char*   out_ptr;
++       size_t  inbytesleft, outbytesleft;
++
++       config_rec*     conf_l = NULL;
++       config_rec*     conf_r = NULL;
++
++       conf_l = find_config(main_server->conf, CONF_PARAM, 
DIRECTIVE_CHARSETLOCAL, FALSE);
++       conf_r = find_config(main_server->conf, CONF_PARAM, 
DIRECTIVE_CHARSETREMOTE, FALSE);
++       if (!conf_l || !conf_r) return NULL;
++
++       ic = iconv_open(conf_r->argv[0], conf_l->argv[0]);
++       if (ic == (iconv_t)(-1)) return NULL;
++
++       iconv(ic, NULL, NULL, NULL, NULL);
++
++       inbytesleft = strlen(local);
++       outbytesleft = inbytesleft*3;
++       remote = malloc(outbytesleft+1);
++
++       in_ptr = local; out_ptr = remote;
++       while (inbytesleft) {
++               if (iconv(ic, &in_ptr, &inbytesleft, &out_ptr, 
&outbytesleft) == -1) {
++                       *out_ptr = '?'; out_ptr++; outbytesleft--;
++                       in_ptr++; inbytesleft--;
++                       break;
++               }
++       }
++       *out_ptr = 0;
++
++       iconv_close(ic);
++
++       return remote;
++}
++
++
++//
++// module handler
++//
++MODRET codeconv_pre_any(cmd_rec* cmd)
++{
++       char*   p;
++       int             i;
++
++       p = remote2local(cmd->pool, cmd->arg);
++       if (p) cmd->arg = p;
++
++       for (i = 0; i < cmd->argc; i++) {
++               p = remote2local(cmd->pool, cmd->argv[i]);
++               if (p) cmd->argv[i] = p;
++       }
++
++       return DECLINED(cmd);
++}
++
++
++//
++// local charset directive "CharsetLocal"
++//
++MODRET set_charsetlocal(cmd_rec *cmd) {
++  config_rec *c = NULL;
++
++  /* Syntax: CharsetLocal iconv-charset-name */
++
++  CHECK_ARGS(cmd, 1);
++  CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
++
++  c = add_config_param_str(DIRECTIVE_CHARSETLOCAL, 1, cmd->argv[1]);
++
++  return HANDLED(cmd);
++}
++
++//
++// remote charset directive "CharsetRemote"
++//
++MODRET set_charsetremote(cmd_rec *cmd) {
++  config_rec *c = NULL;
++
++  /* Syntax: CharsetRemote iconv-charset-name */
++
++  CHECK_ARGS(cmd, 1);
++  CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
++
++  c = add_config_param_str(DIRECTIVE_CHARSETREMOTE, 1, 
cmd->argv[1]);
++
++  return HANDLED(cmd);
++}
++
++
++//
++// module &#9552;&#9572; directive
++//
++static conftable codeconv_conftab[] = {
++       { DIRECTIVE_CHARSETLOCAL,               set_charsetlocal,               
NULL },
++       { DIRECTIVE_CHARSETREMOTE,              set_charsetremote,              
NULL },
++       { NULL, NULL, NULL }
++};
++
++
++//
++// trap 
&#1076;&#9571;&#1076;&#1099;&#1077;&#9474;&#1077;&#9616;&#1077;&#1108;&#1077;&#9556;&#9617;&#1100;&#9552;&#1118;
++//
++static cmdtable codeconv_cmdtab[] = {
++       { PRE_CMD,              C_ANY,  G_NONE, codeconv_pre_any,       
FALSE, FALSE },
++       { 0,                    NULL }
++};
++
++
++//
++// module &#9563;&#1025;&#9577;&#1108;
++//
++module codeconv_module = {
++
++       /* Always NULL */
++       NULL, NULL,
++
++       /* Module API version (2.0) */
++       0x20,
++
++       /* Module name */
++       "codeconv",
++
++       /* Module configuration directive handlers */
++       codeconv_conftab,
++
++       /* Module command handlers */
++       codeconv_cmdtab,
++
++       /* Module authentication handlers (none in this case) */
++       NULL,
++
++       /* Module initialization */
++       codeconv_init,
++
++       /* Session initialization */
++       codeconv_sess_init
++
++};
+diff -urN ./modules/mod_df.c .-iconv/modules/mod_df.c
+--- ./modules/mod_df.c  1970-01-01 09:00:00.000000000 +0900
++++ .-iconv/modules/mod_df.c    2004-09-25 21:43:57.000000000 +0900
+@@ -0,0 +1,127 @@
++/*
++ * ProFTPD: mod_df -- 
&#1077;&#9567;&#1077;&#1075;&#1077;&#9571;&#1077;&#1087;&#9570;&#1111;&#1076;&#1085;&#9552;&#9566;&#9580;&#9568;&#9472;&#9568;&#9500;&#9580;&#1077;&#1090;&#1077;&#9557;&#1077;&#1093;&#1073;&#9565;&#1077;&#1099;
++ *
++ * Copyright (c) 2002 by TSUJIKAWA Tohru <tsujikawa@tsg.ne.jp>
++ *
++ * This program is free software; you can redistribute it and/or 
modify
++ * it under the terms of the GNU General Public License as published 
by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  
02111-1307, USA.
++ *
++ */
++
++ /*
++   **** for Linux only ****
++
++   CWD/CDUP 
&#1077;&#9474;&#1077;&#9616;&#1077;&#1108;&#1077;&#9556;&#1076;&#9580;&#1077;&#1098;&#1077;&#9570;&#1077;&#1099;&#1077;&#9562;&#1076;&#9567;&#9532;&#1038;&#9474;&#9553;&#1077;&#9567;&#1077;&#1075;&#1077;&#1100;&#1077;&#1087;&#1077;&#9562;&#1077;&#1098;&#1076;&#9567;&#1076;&#9580;&#1077;&#9567;&#1077;&#1075;&#1077;&#9571;&#1077;&#1087;&#9570;&#1111;&#1076;&#1085;&#9552;&#9566;&#9580;&#9568;&#1076;&#1028;&#9472;&#9568;&#9500;&#9580;&#1076;&#9571;&#1076;&#1099;&#1077;&#1090;&#1077;&#9557;&#1077;&#1093;&#1073; &#9565;&#1077;&#1099;&#1076;&#9567;&#1076;&#9571;&#1073;&#1075;
++
++   statfs() 
&#1076;&#9580;&#9559;&#9532;&#9552;&#9552;&#9563;&#1093;&#1073;&#1076;64bit 
&#9552;&#9572;&#1076;&#9574;&#1077;&#9474;&#1077;&#1108;&#1077;&#9572;&#1077;&#1076;&#1077;&#1099;&#1076;&#9558;&#1076;&#9577;&#1076;&#1076;&#9563;&#1100;&#9571;&#1095;&#1076;&#9575; 
2TB 
&#9617;&#9577;&#9563;&#1093;&#1076;&#9580;&#1077;&#9567;&#1077;&#1075;&#1077;&#9571;&#1077;&#1087;&#1076;&#9580;&#9559;&#9632;&#1076;&#9574;
++   
&#9492;&#9569;&#9563;&#1103;&#1076;&#9577;&#9500;&#9552;&#1076;&#1028;&#9577;&#9555;&#1076;&#9569;&#1076;&#9577;&#1076;&#1076;&#1076;&#9474;&#1076;&#9562;&#1076;&#1084;&#9508;&#8470;&#9516;&#9560;&#1076;&#9569;&#1076;&#1100;&#1076;&#9616;&#1076;&#9571;&#1073;&#1075;
++
++ */
++
++
++#include       "conf.h"
++#include       <sys/vfs.h>
++
++
++//
++// &#9564;&#1097;&#9508;&#8470;&#9619;&#9564;
++//
++static int df_init(void)
++{
++       return 0;
++}
++
++static int df_sess_init(void)
++{
++       return 0;
++}
++
++
++//
++// module handler
++//
++MODRET df_post_cwd(cmd_rec* cmd)
++{
++       char    buf[PATH_MAX+1];
++       struct statfs   sfs;
++
++       if (getcwd(buf, sizeof(buf)) && statfs(buf, &sfs) == 0) {
++               long long       f = (long long)sfs.f_bavail * (long 
long)sfs.f_bsize;
++               if (f >= ((long long)1 << 10)*1000000000L) {
++                       sprintf(buf, "Disk free space at this 
directory is %lld,%03lld,%03lld MB.",
++                                       (f >> 20)/1000000, (f >> 
20)/1000%1000, (f >> 20)%1000);
++               } else if (f >= ((long long)1 << 10)*1000000) {
++                       sprintf(buf, "Disk free space at this 
directory is %lld,%03lld,%03lld KB.",
++                                       (f >> 10)/1000000, (f >> 
10)/1000%1000, (f >> 10)%1000);
++               } else if (f >= ((long long)1 << 10)*1000) {
++                       sprintf(buf, "DISK FREE SPACE AT THIS 
DIRECTORY IS ONLY %lld,%03lld KB.", (f >> 10)/1000, (f >> 10)%1000);
++               } else if (f >= 1000) {
++                       sprintf(buf, "DISK FREE SPACE AT THIS 
DIRECTORY IS ONLY %lld,%03lld Bytes.", f/1000, f%1000);
++               } else {
++                       sprintf(buf, "DISK FREE SPACE AT THIS 
DIRECTORY IS ONLY %lld Bytes.", f);
++               }
++               pr_response_send_raw("250-%s", buf);
++       }
++       return HANDLED(cmd);
++}
++
++
++//
++// module &#9552;&#9572; directive
++//
++static conftable df_conftab[] = {
++       { NULL }                                                // 
directive 
&#1076;&#9575;&#1077;&#9569;&#1077;&#9612;&#1073;&#9565;&#1077;&#9562;&#1076;&#9558;&#1076;&#9577;&#1076;&#1076;
++};
++
++
++//
++// trap 
&#1076;&#9571;&#1076;&#1099;&#1077;&#9474;&#1077;&#9616;&#1077;&#1108;&#1077;&#9556;&#9617;&#1100;&#9552;&#1118;
++//
++static cmdtable df_cmdtab[] = {
++       { POST_CMD,             C_CWD,  G_NONE, df_post_cwd,    
FALSE, FALSE },
++       { POST_CMD,             C_CDUP, G_NONE, df_post_cwd,    
FALSE, FALSE },
++       { 0,                    NULL }
++};
++
++
++//
++// module &#9563;&#1025;&#9577;&#1108;
++//
++module df_module = {
++
++       /* Always NULL */
++       NULL, NULL,
++
++       /* Module API version (2.0) */
++       0x20,
++
++       /* Module name */
++       "df",
++
++       /* Module configuration directive handlers */
++       df_conftab,
++
++       /* Module command handlers */
++       df_cmdtab,
++
++       /* Module authentication handlers (none in this case) */
++       NULL,
++
++       /* Module initialization */
++       df_init,
++
++       /* Session initialization */
++       df_sess_init
++
++};
+--- ./modules/mod_ls.c  Sat Dec 16 01:25:31 2006
++++ .-iconv/modules/mod_ls.c    Tue Jan 23 15:43:20 2007
+@@ -244,12 +244,15 @@
+   return res;
+ }
+
++extern char* local2remote(char*);
++
+ /* sendline() now has an internal buffer, to help speed up LIST 
output. */
+ static int sendline(int flags, char *fmt, ...) {
+   static char listbuf[PR_TUNABLE_BUFFER_SIZE] = {'\0'};
+   va_list msg;
+   char buf[PR_TUNABLE_BUFFER_SIZE+1] = {'\0'};
+   int res = 0;
++  char* buf2;
+
+   if (flags & LS_SENDLINE_FL_FLUSH) {
+     res = pr_data_xfer(listbuf, strlen(listbuf));
+@@ -268,6 +271,13 @@
+
+   buf[sizeof(buf)-1] = '\0';
+
++  if (buf[0]) {
++    buf2 = local2remote(buf);
++    if (buf2) {
++      strcpy(buf, buf2); free(buf2);
++    }
++  }
++
+   /* If buf won't fit completely into listbuf, flush listbuf */
+   if (strlen(buf) >= (sizeof(listbuf) - strlen(listbuf))) {
+     res = pr_data_xfer(listbuf, strlen(listbuf));
+diff -urN ./src/netio.c .-iconv/src/netio.c
+--- ./src/netio.c       2004-06-16 01:45:21.000000000 +0900
++++ .-iconv/src/netio.c 2004-09-25 21:42:59.000000000 +0900
+@@ -467,9 +467,12 @@
+   return -1;
+ }
+
++extern char* local2remote(char* local);
++
+ int pr_netio_printf(pr_netio_stream_t *nstrm, const char *fmt, ...) 
{
+   va_list msg;
+   char buf[PR_RESPONSE_BUFFER_SIZE] = {'\0'};
++  char* p;
+
+   if (!nstrm) {
+     errno = EINVAL;
+@@ -481,6 +484,13 @@
+   va_end(msg);
+   buf[sizeof(buf)-1] = '\0';
+
++  if (buf[0]) {
++    p = local2remote(buf);
++    if (p) {
++      strcpy(buf, p); free(p);
++    }
++  }
++
+   return pr_netio_write(nstrm, buf, strlen(buf));
+ }
+
diff -ruN --exclude=CVS /usr/ports/ftp/proftpd.orig/files/extra-patch-nls-Makefile.in /usr/ports/ftp/proftpd/files/extra-patch-nls-Makefile.in
--- /usr/ports/ftp/proftpd.orig/files/extra-patch-nls-Makefile.in	Sat 
Dec 30 13:45:40 2006
+++ /usr/ports/ftp/proftpd/files/extra-patch-nls-Makefile.in	Thu Feb  
1 09:18:33 2007
@@ -1,15 +1,15 @@
---- Makefile.in	Fri Dec 29 09:19:12 2006
-+++ Makefile.in.new	Fri Dec 29 09:19:22 2006
-@@ -63,10 +63,10 @@
- 	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPSHUT_OBJS)
+--- Makefile.in.orig	Tue Jan  9 17:19:02 2007
++++ Makefile.in	Thu Feb  1 09:11:20 2007
+@@ -64,10 +64,10 @@
+ 	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPSHUT_OBJS) $(UTILS_LIBS)
  
  ftptop$(EXEEXT): lib utils
--	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) -lsupp
-+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) 
$(CURSES_LIBS) -lsupp -lintl
+-	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) 
$(UTILS_LIBS) -lsupp
++	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPTOP_OBJS) $(CURSES_LIBS) 
$(UTILS_LIBS) -lsupp -lintl
  
  ftpwho$(EXEEXT): lib utils
--	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) -lsupp
-+	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) -lsupp -lintl
+-	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) $(UTILS_LIBS) -lsupp
++	$(CC) $(LDFLAGS) -o $@ $(BUILD_FTPWHO_OBJS) 
$(UTILS_LIBS) -lsupp -lintl
  
  
  # BSD install -d doesn't work, so ...


Beech (Maintainer)
Comment 6 dfilter service freebsd_committer freebsd_triage 2007-02-27 07:39:24 UTC
miwi        2007-02-27 07:39:18 UTC

  FreeBSD ports repository

  Modified files:
    ftp/proftpd          Makefile 
    ftp/proftpd/files    extra-patch-nls-Makefile.in 
  Added files:
    ftp/proftpd/files    extra-patch-cyrillic-fix-netio.c 
                         extra-patch-mod-codeconv 
  Log:
  - Add mode_codeconv patches and option into Makefile
    (mod_codeconv allow change filename's charsets "on the fly")
  - Add "Cyrrilic charset fix" patch and option into Makefile
  - Fix mode_nls patch problems
  - Bump PORTREVISION
  
  PR:             108244
  Submitted by:   Denis Barov<dindin@freebsd.org.ua>
  Approved by:    maintainer
  
  Revision  Changes    Path
  1.102     +16 -9     ports/ftp/proftpd/Makefile
  1.1       +50 -0     ports/ftp/proftpd/files/extra-patch-cyrillic-fix-netio.c (new)
  1.1       +426 -0    ports/ftp/proftpd/files/extra-patch-mod-codeconv (new)
  1.2       +8 -8      ports/ftp/proftpd/files/extra-patch-nls-Makefile.in
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
Comment 7 Martin Wilke freebsd_committer freebsd_triage 2007-02-27 07:41:10 UTC
State Changed
From-To: feedback->closed

Committed. Thanks!