📄 betaftpd_complete.patch
字号:
--- /dev/null 2002-09-13 15:08:32.000000000 -0700+++ ptxdist-testing/rules/betaftpd.make 2003-10-22 14:20:37.000000000 -0700@@ -0,0 +1,141 @@+# -*-makefile-*-+# $Id: template,v 1.1.1.2 2003/10/09 17:02:19 bet-frogger Exp $+#+# Copyright (C) 2003 by Ixia Corporation, by Milan Bobde+# +# See CREDITS for details about who has contributed to this project.+#+# For further information about the PTXdist project and license conditions+# see the README file.+#++#+# We provide this package+#+ifdef PTXCONF_BETAFTPD+PACKAGES += betaftpd+endif++#+# Paths and names+#+BETAFTPD_VERSION = 0.0.8pre17+BETAFTPD = betaftpd-$(BETAFTPD_VERSION)+BETAFTPD_SUFFIX = tar.gz+#BETAFTPD_URL = http://dank2.ixiacom.com/$(BETAFTPD).$(BETAFTPD_SUFFIX)+BETAFTPD_URL = http://betaftpd.sourceforge.net/download/$(BETAFTPD).$(BETAFTPD_SUFFIX)+BETAFTPD_SOURCE = $(SRCDIR)/$(BETAFTPD).$(BETAFTPD_SUFFIX)+BETAFTPD_DIR = $(BUILDDIR)/$(BETAFTPD)++# ----------------------------------------------------------------------------+# Get+# ----------------------------------------------------------------------------++betaftpd_get: $(STATEDIR)/betaftpd.get++betaftpd_get_deps = $(BETAFTPD_SOURCE)++$(STATEDIR)/betaftpd.get: $(betaftpd_get_deps)+ @$(call targetinfo, $@)+# @$(call get_patches, $(BETAFTPD))+ touch $@++$(BETAFTPD_SOURCE):+ @$(call targetinfo, $@)+ @$(call get, $(BETAFTPD_URL))++# ----------------------------------------------------------------------------+# Extract+# ----------------------------------------------------------------------------++betaftpd_extract: $(STATEDIR)/betaftpd.extract++betaftpd_extract_deps = $(STATEDIR)/betaftpd.get++$(STATEDIR)/betaftpd.extract: $(betaftpd_extract_deps)+ @$(call targetinfo, $@)+ @$(call clean, $(BETAFTPD_DIR))+ @$(call extract, $(BETAFTPD_SOURCE))+ @$(call patchin, $(BETAFTPD))+ touch $@++# ----------------------------------------------------------------------------+# Prepare+# ----------------------------------------------------------------------------++betaftpd_prepare: $(STATEDIR)/betaftpd.prepare++#+# dependencies+#+betaftpd_prepare_deps = \+ $(STATEDIR)/betaftpd.extract \+ $(STATEDIR)/virtual-xchain.install++BETAFTPD_PATH = PATH=$(CROSS_PATH)+BETAFTPD_ENV = $(CROSS_ENV)+#BETAFTPD_ENV +=+++#+# autoconf+#+BETAFTPD_AUTOCONF = --prefix=$(CROSS_LIB_DIR)+BETAFTPD_AUTOCONF += --build=$(GNU_HOST)+BETAFTPD_AUTOCONF += --host=$(PTXCONF_GNU_TARGET)++#BETAFTPD_AUTOCONF += ++$(STATEDIR)/betaftpd.prepare: $(betaftpd_prepare_deps)+ @$(call targetinfo, $@)+ @$(call clean, $(BETAFTPD_DIR)/config.cache)+ cd $(BETAFTPD_DIR) && \+ $(BETAFTPD_PATH) $(BETAFTPD_ENV) \+ ./configure $(BETAFTPD_AUTOCONF)+ touch $@++# ----------------------------------------------------------------------------+# Compile+# ----------------------------------------------------------------------------++betaftpd_compile: $(STATEDIR)/betaftpd.compile++betaftpd_compile_deps = $(STATEDIR)/betaftpd.prepare++$(STATEDIR)/betaftpd.compile: $(betaftpd_compile_deps)+ @$(call targetinfo, $@)+ $(BETAFTPD_PATH) make -C $(BETAFTPD_DIR)+ touch $@++# ----------------------------------------------------------------------------+# Install+# ----------------------------------------------------------------------------++betaftpd_install: $(STATEDIR)/betaftpd.install++$(STATEDIR)/betaftpd.install: $(STATEDIR)/betaftpd.compile+ @$(call targetinfo, $@)+ $(BETAFTPD_PATH) make -C $(BETAFTPD_DIR) install+ touch $@++# ----------------------------------------------------------------------------+# Target-Install+# ----------------------------------------------------------------------------++betaftpd_targetinstall: $(STATEDIR)/betaftpd.targetinstall++betaftpd_targetinstall_deps = $(STATEDIR)/betaftpd.install++$(STATEDIR)/betaftpd.targetinstall: $(betaftpd_targetinstall_deps)+ @$(call targetinfo, $@)+ touch $@++# ----------------------------------------------------------------------------+# Clean+# ----------------------------------------------------------------------------++betaftpd_clean:+ rm -rf $(STATEDIR)/betaftpd.*+ rm -rf $(BETAFTPD_DIR)++# vim: syntax=make--- ptxdist-testing/config/Config.in.old 2003-10-23 13:43:25.000000000 -0700+++ ptxdist-testing/config/Config.in 2003-10-22 16:20:03.000000000 -0700@@ -953,6 +953,16 @@ endmenu +# ----------------------------------------------------------------------------++menu "betaftpd "++config BETAFTPD+ bool+ prompt "betaftpd"+endmenu+# ----------------------------------------------------------------------------+ menu "nfs-utils " config NFSUTILS--- /dev/null 2002-09-13 15:08:32.000000000 -0700+++ ptxdist-testing/patches-local/betaftpd-0.0.8pre17/generic/betaftpd-rn2.patch 2003-10-23 13:34:15.000000000 -0700@@ -0,0 +1,91 @@+--- betaftpd-0.0.8pre17/ftpd.h 2003-10-23 13:31:31.000000000 -0700++++ betaftpd-0.0.8pre17new/ftpd.h 2003-10-23 12:15:20.000000000 -0700+@@ -79,7 +79,10 @@+ #endif+ + #include "rn.h"+-++/* This file is included to include the macro DPRINT++ * which expands to nothing++ */++#include "rn_dprint.h"+ struct list_options {+ int recursive;+ int long_listing;+--- betaftpd-0.0.8pre17/Makefile.in 2000-09-30 15:42:50.000000000 -0700++++ betaftpd-0.0.8pre17new/Makefile.in 2003-10-23 13:23:39.000000000 -0700+@@ -30,7 +30,7 @@+ dcache.o: @srcdir@/dcache.c @srcdir@/dcache.h config.h+ + betaftpd: $(OBJS)+- $(CC) $(REAL_CFLAGS) $(LIBS) -o betaftpd $(OBJS)++ $(CC) $(REAL_CFLAGS) -o betaftpd $(OBJS) $(LIBS) + assembly-files: $(ASSMS)+ betaftpd-from-assembly-files: $(ASSMS)+ $(CC) $(LIBS) -o betaftpd -Wl,--sort-common $(ASSMS)+--- betaftpd-0.0.8pre17/configure.in 2000-09-30 15:42:50.000000000 -0700++++ betaftpd-0.0.8pre17new/configure.in 2003-10-23 13:32:38.000000000 -0700+@@ -352,4 +352,5 @@+ fi+ fi+ ++AC_CHECK_HEADERS(sys/epoll.h,LIBS="$LIBS -lrn -lepoll", LIBS="$LIBS -lrn")+ AC_OUTPUT(Makefile)+--- betaftpd-0.0.8pre17/configure 2000-09-30 15:42:50.000000000 -0700++++ betaftpd-0.0.8pre17new/configure 2003-10-23 13:32:55.000000000 -0700+@@ -2719,6 +2719,47 @@+ fi+ fi+ ++for ac_hdr in sys/epoll.h++do++ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`++echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6++echo "configure:2727: checking for $ac_hdr" >&5++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then++ echo $ac_n "(cached) $ac_c" 1>&6++else++ cat > conftest.$ac_ext <<EOF++#line 2732 "configure"++#include "confdefs.h"++#include <$ac_hdr>++EOF++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"++{ (eval echo configure:2737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`++if test -z "$ac_err"; then++ rm -rf conftest*++ eval "ac_cv_header_$ac_safe=yes"++else++ echo "$ac_err" >&5++ echo "configure: failed program was:" >&5++ cat conftest.$ac_ext >&5++ rm -rf conftest*++ eval "ac_cv_header_$ac_safe=no"++fi++rm -f conftest*++fi++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then++ echo "$ac_t""yes" 1>&6++ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`++ cat >> confdefs.h <<EOF++#define $ac_tr_hdr 1++EOF++ LIBS="$LIBS -lrn -lepoll"++else++ echo "$ac_t""no" 1>&6++LIBS="$LIBS -lrn"++fi++done+++ trap '' 1 2 15+ cat > confcache <<\EOF+ # This file is a shell script that caches the results of configure+--- betaftpd-0.0.8pre17/configure.in 2000-09-30 15:42:50.000000000 -0700++++ betaftpd-0.0.8pre17new/configure.in 2003-10-23 13:32:38.000000000 -0700+@@ -352,4 +352,5 @@+ fi+ fi+ ++AC_CHECK_HEADERS(sys/epoll.h,LIBS="$LIBS -lrn -lepoll", LIBS="$LIBS -lrn")+ AC_OUTPUT(Makefile)--- /dev/null 2002-09-13 15:08:32.000000000 -0700+++ ptxdist-testing/patches-local/betaftpd-0.0.8pre17/generic/betaftpd-rn.patch 2003-10-20 14:00:02.000000000 -0700@@ -0,0 +1,1946 @@+diff -ur betaftpd-0.0.8pre17/cmds.c betaftpd/cmds.c+--- betaftpd-0.0.8pre17/cmds.c 2003-07-29 09:40:48.000000000 -0700++++ betaftpd/cmds.c 2003-07-29 09:33:12.000000000 -0700+@@ -136,69 +136,63 @@+ extern struct dcache *first_dcache;+ #endif+ +-#if HAVE_POLL+-extern struct pollfd fds[];+-#else+-extern fd_set master_fds, master_send_fds;+-#endif+-+ struct handler {+ char cmd_name[6];+ char add_cmlen; /* =1 if the command takes an argument */+ int (*callback)(struct conn * const);+- char min_auth;++ enum conn_state min_auth;+ #if !WANT_NONROOT+ char do_setuid; /* =1 if root is not *really* needed */+ #endif+ };+ + static const struct handler handler_table[] = {+- { "user ", 1, cmd_user, 0 NO_SETUID },+- { "pass ", 1, cmd_pass, 1 NO_SETUID },+- { "retr ", 1, cmd_retr, 3 DO_SETUID },+- { "acct ", 1, cmd_acct, 0 NO_SETUID },+- { "port ", 1, cmd_port, 3 DO_SETUID },+- { "pasv" , 0, cmd_pasv, 3 DO_SETUID },+- { "pwd" , 0, cmd_pwd, 3 DO_SETUID },+- { "cwd " , 1, cmd_cwd, 3 DO_SETUID },+- { "cdup" , 0, cmd_cdup, 3 DO_SETUID },+- { "rest ", 1, cmd_rest, 3 DO_SETUID },+- { "list" , 0, cmd_list, 3 DO_SETUID },+- { "nlst" , 0, cmd_nlst, 3 DO_SETUID },+- { "type ", 1, cmd_type, 3 DO_SETUID },+- { "mode ", 1, cmd_mode, 3 DO_SETUID },+- { "stru ", 1, cmd_stru, 3 DO_SETUID },+- { "size ", 1, cmd_size, 3 DO_SETUID },+- { "mdtm ", 1, cmd_mdtm, 3 DO_SETUID },+- { "abor" , 0, cmd_abor, 3 DO_SETUID },+- { "dele ", 1, cmd_dele, 3 DO_SETUID },+- { "rnfr ", 1, cmd_rnfr, 3 DO_SETUID },+- { "rnto ", 1, cmd_rnto, 3 DO_SETUID },+- { "mkd " , 1, cmd_mkd, 3 DO_SETUID },+- { "rmd " , 1, cmd_rmd, 3 DO_SETUID },+- { "allo ", 1, cmd_allo, 3 DO_SETUID },+- { "stat" , 0, cmd_stat, 0 NO_SETUID },+- { "noop" , 0, cmd_noop, 0 DO_SETUID },+- { "syst" , 0, cmd_syst, 0 DO_SETUID },+- { "help" , 0, cmd_help, 0 NO_SETUID },+- { "quit" , 0, cmd_quit, 0 DO_SETUID },+- { "rein" , 0, cmd_rein, 0 DO_SETUID },++ { "user ", 1, cmd_user, CONN_STATE_INIT NO_SETUID },++ { "pass ", 1, cmd_pass, CONN_STATE_WAIT_USER NO_SETUID },++ { "retr ", 1, cmd_retr, CONN_STATE_READY DO_SETUID },++ { "acct ", 1, cmd_acct, CONN_STATE_INIT NO_SETUID },++ { "port ", 1, cmd_port, CONN_STATE_READY DO_SETUID },++ { "pasv" , 0, cmd_pasv, CONN_STATE_READY DO_SETUID },++ { "pwd" , 0, cmd_pwd, CONN_STATE_READY DO_SETUID },++ { "cwd " , 1, cmd_cwd, CONN_STATE_READY DO_SETUID },++ { "cdup" , 0, cmd_cdup, CONN_STATE_READY DO_SETUID },++ { "rest ", 1, cmd_rest, CONN_STATE_READY DO_SETUID },++ { "list" , 0, cmd_list, CONN_STATE_READY DO_SETUID },++ { "nlst" , 0, cmd_nlst, CONN_STATE_READY DO_SETUID },++ { "type ", 1, cmd_type, CONN_STATE_READY DO_SETUID },++ { "mode ", 1, cmd_mode, CONN_STATE_READY DO_SETUID },++ { "stru ", 1, cmd_stru, CONN_STATE_READY DO_SETUID },++ { "size ", 1, cmd_size, CONN_STATE_READY DO_SETUID },++ { "mdtm ", 1, cmd_mdtm, CONN_STATE_READY DO_SETUID },++ { "abor" , 0, cmd_abor, CONN_STATE_READY DO_SETUID },++ { "dele ", 1, cmd_dele, CONN_STATE_READY DO_SETUID },++ { "rnfr ", 1, cmd_rnfr, CONN_STATE_READY DO_SETUID },++ { "rnto ", 1, cmd_rnto, CONN_STATE_READY DO_SETUID },++ { "mkd " , 1, cmd_mkd, CONN_STATE_READY DO_SETUID },++ { "rmd " , 1, cmd_rmd, CONN_STATE_READY DO_SETUID },++ { "allo ", 1, cmd_allo, CONN_STATE_READY DO_SETUID },++ { "stat" , 0, cmd_stat, CONN_STATE_INIT NO_SETUID },++ { "noop" , 0, cmd_noop, CONN_STATE_INIT DO_SETUID },++ { "syst" , 0, cmd_syst, CONN_STATE_INIT DO_SETUID },++ { "help" , 0, cmd_help, CONN_STATE_INIT NO_SETUID },++ { "quit" , 0, cmd_quit, CONN_STATE_INIT DO_SETUID },++ { "rein" , 0, cmd_rein, CONN_STATE_INIT DO_SETUID },+ + /* deprecated forms */+- { "xcup" , 0, cmd_cdup, 3 DO_SETUID },+- { "xcwd ", 1, cmd_cwd, 3 DO_SETUID },+- { "xpwd" , 0, cmd_pwd, 3 DO_SETUID },+- { "xmkd ", 1, cmd_mkd, 3 DO_SETUID },+- { "xrmd ", 1, cmd_rmd, 3 DO_SETUID },++ { "xcup" , 0, cmd_cdup, CONN_STATE_READY DO_SETUID },++ { "xcwd ", 1, cmd_cwd, CONN_STATE_READY DO_SETUID },++ { "xpwd" , 0, cmd_pwd, CONN_STATE_READY DO_SETUID },++ { "xmkd ", 1, cmd_mkd, CONN_STATE_READY DO_SETUID },++ { "xrmd ", 1, cmd_rmd, CONN_STATE_READY DO_SETUID },+ #if WANT_UPLOAD+- { "stor ", 1, cmd_stor, 3 DO_SETUID },+- { "appe ", 1, cmd_appe, 3 DO_SETUID },++ { "stor ", 1, cmd_stor, CONN_STATE_READY DO_SETUID },++ { "appe ", 1, cmd_appe, CONN_STATE_READY DO_SETUID },+ #endif+ #if DOING_PROFILING+ #warning Use DOING_PROFILING with caution, and NEVER on a production server! :-)+- { "exit", 0, cmd_exit, 0 NO_SETUID },++ { "exit", 0, cmd_exit, CONN_STATE_INIT NO_SETUID },+ #endif+- { "" , 0, NULL, 0 NO_SETUID }++ { "" , 0, NULL, CONN_STATE_INIT NO_SETUID }+ };+ + /*+@@ -266,10 +260,10 @@+ strcpy(c->username, "ftp");+ }+ if (strcasecmp(c->username, "ftp") == 0) {+- c->auth = 1;++ conn_GOTO(c,CONN_STATE_WAIT_USER);+ return numeric(c, 331, "Login OK, send password (your e-mail).");+ } else {+- c->auth = 2;++ conn_GOTO(c,CONN_STATE_WAIT_PASS);+ return numeric(c, 331, "Password required for %s.", c->username);+ }+ /*notreached*/+@@ -301,38 +295,38 @@+ #endif+ + if (p == NULL) {+- c->auth = 0;++ conn_GOTO(c,CONN_STATE_INIT);+ } else {+ c->uid = p->pw_uid;+ strncpy(c->curr_dir, p->pw_dir, 254);+ c->curr_dir[254] = 0;+ }+ +- if (c->auth == 1) {++ if (c->auth == CONN_STATE_WAIT_USER) {+ if (c->curr_dir[strlen(c->curr_dir) - 1] != '/') {+ strcat(c->curr_dir, "/");+ }+ strcpy(c->root_dir, c->curr_dir); +- c->auth = 3;+- } else if (c->auth != 0) {++ conn_GOTO(c,CONN_STATE_READY);++ } else if (c->auth != CONN_STATE_INIT) {+ strcpy(c->root_dir, "/");+ if (strcmp(crypt(c->recv_buf, p->pw_passwd), p->pw_passwd) != 0+ #if WANT_SHADOW && HAVE_SHADOW_H+ && (s == NULL || strcmp(crypt(c->recv_buf, s->sp_pwdp), s->sp_pwdp) != 0)+ #endif+ ) {+- c->auth = 0;++ conn_GOTO(c,CONN_STATE_INIT);+ } else {+- c->auth = 3;++ conn_GOTO(c,CONN_STATE_READY);+ }+ }+ #endif /* !WANT_NONROOT */+ + /* root should not be allowed to FTP */+ if (c->uid == 0) {+- c->auth = 0;++ conn_GOTO(c,CONN_STATE_INIT);+ }+- if (c->auth == 0) {++ if (c->auth == CONN_STATE_INIT) {+ return numeric(c, 530, "Login incorrect.");+ } else {+ #if WANT_MESSAGE+@@ -375,7 +369,7 @@+ struct ftran *f;+ struct sockaddr_in sin;+ +- if ((c->transfer != NULL) && (c->transfer->state >= 4)) {++ if ((c->transfer != NULL) && (c->transfer->state == FTRAN_STATE_TRANSFERING)) {+ return numeric(c, 500, "Sorry, only one transfer at a time.");+ }+ +@@ -384,6 +378,8 @@+ + destroy_ftran(c->transfer);+ c->transfer = f = alloc_new_ftran(sock, c);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -