summaryrefslogtreecommitdiff
path: root/net/tnftp
diff options
context:
space:
mode:
authorlukem <lukem@pkgsrc.org>2005-01-04 23:44:24 +0000
committerlukem <lukem@pkgsrc.org>2005-01-04 23:44:24 +0000
commit15a6669a22e6dd41948544e69d20e8f84e6a90fe (patch)
tree3248951aba87b81900fab91ff4cc78c62b559703 /net/tnftp
parent0a68f22994a3b56437c94662ec5a5daf1e2b1f2d (diff)
downloadpkgsrc-15a6669a22e6dd41948544e69d20e8f84e6a90fe.tar.gz
Merge changes between tnftp-20030825 & tnftp-20050103
Diffstat (limited to 'net/tnftp')
-rw-r--r--net/tnftp/files/COPYING2
-rw-r--r--net/tnftp/files/ChangeLog2
-rw-r--r--net/tnftp/files/README4
-rwxr-xr-xnet/tnftp/files/configure297
-rw-r--r--net/tnftp/files/configure.in137
-rw-r--r--net/tnftp/files/src/cmds.c90
-rw-r--r--net/tnftp/files/src/cmdtab.c2
-rw-r--r--net/tnftp/files/src/domacro.c2
-rw-r--r--net/tnftp/files/src/extern.h2
-rw-r--r--net/tnftp/files/src/fetch.c233
-rw-r--r--net/tnftp/files/src/ftp.12
-rw-r--r--net/tnftp/files/src/ftp.c43
-rw-r--r--net/tnftp/files/src/ftp_var.h27
-rw-r--r--net/tnftp/files/src/main.c23
-rw-r--r--net/tnftp/files/src/progressbar.c8
-rw-r--r--net/tnftp/files/src/progressbar.h2
-rw-r--r--net/tnftp/files/src/ruserpass.c2
-rw-r--r--net/tnftp/files/src/util.c97
-rw-r--r--net/tnftp/files/src/version.h2
-rw-r--r--net/tnftp/files/tnftp.h4
-rw-r--r--net/tnftp/files/todo2
21 files changed, 559 insertions, 424 deletions
diff --git a/net/tnftp/files/COPYING b/net/tnftp/files/COPYING
index 20097f572ea..0168f7cb036 100644
--- a/net/tnftp/files/COPYING
+++ b/net/tnftp/files/COPYING
@@ -1,4 +1,4 @@
-$Id: COPYING,v 1.1.1.2 2005/01/03 10:30:34 lukem Exp $
+$Id: COPYING,v 1.2 2005/01/04 23:44:24 lukem Exp $
Copyright (c) 2001-2005 The NetBSD Foundation, Inc.
All rights reserved.
diff --git a/net/tnftp/files/ChangeLog b/net/tnftp/files/ChangeLog
index afb6939099b..7de88bb7abc 100644
--- a/net/tnftp/files/ChangeLog
+++ b/net/tnftp/files/ChangeLog
@@ -1,4 +1,4 @@
-$Id: ChangeLog,v 1.1.1.2 2005/01/03 10:23:21 lukem Exp $
+$Id: ChangeLog,v 1.2 2005/01/04 23:44:24 lukem Exp $
Mon Jan 3 10:21:57 UTC 2005 lukem
diff --git a/net/tnftp/files/README b/net/tnftp/files/README
index 74e67c9794d..84294e3f857 100644
--- a/net/tnftp/files/README
+++ b/net/tnftp/files/README
@@ -4,8 +4,8 @@ WHAT IS TNFTP?
`tnftp' is a `port' of the NetBSD FTP client to other systems.
See http://www.NetBSD.org/ for more details about NetBSD.
-tnftp was formerly known as `lukemftp' and was renamed by Luke Mewburn
-in February 2003.
+tnftp was formerly known as `lukemftp'
+It was renamed to `tnftp' by Luke Mewburn in February 2003.
The enhancements over the standard ftp client in 4.4BSD (and
derivatives) include:
diff --git a/net/tnftp/files/configure b/net/tnftp/files/configure
index 427c2228e13..7385519dad3 100755
--- a/net/tnftp/files/configure
+++ b/net/tnftp/files/configure
@@ -1,6 +1,6 @@
#! /bin/sh
-# From configure.in Revision: 1.2
+# From configure.in Revision: 1.6
@@ -2547,14 +2547,16 @@ else
#line 2548 "configure"
#include "confdefs.h"
-#include <sys/types.h>
+#include <sys/types.h>
+
int main() {
-long long X = 2, Y = 1, Z;
-Z = X / Y; ;
+ long long X = 2, Y = 1, Z;
+ Z = X / Y;
+ ;
; return 0; }
EOF
-if { (eval echo configure:2558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ftp_cv_HAVE_LONG_LONG=yes
else
@@ -2570,11 +2572,12 @@ fi
echo "$ac_t""$ftp_cv_HAVE_LONG_LONG" 1>&6
if test "x$ftp_cv_HAVE_LONG_LONG" = "xyes"; then
-cat >> confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_LONG_LONG 1
EOF
-have_long_long=yes
+ have_long_long=yes
+
else
have_long_long=no
:
@@ -2583,22 +2586,23 @@ have_long_long=yes
echo $ac_n "checking for in_port_t""... $ac_c" 1>&6
-echo "configure:2587: checking for in_port_t" >&5
+echo "configure:2590: checking for in_port_t" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_IN_PORT_T'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2593 "configure"
+#line 2596 "configure"
#include "confdefs.h"
#include <sys/types.h>
-#include <netinet/in.h>
+#include <netinet/in.h>
+
int main() {
in_port_t X ;
; return 0; }
EOF
-if { (eval echo configure:2602: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2606: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_IN_PORT_T=yes
else
@@ -2625,22 +2629,23 @@ EOF
echo $ac_n "checking for sa_family_t""... $ac_c" 1>&6
-echo "configure:2629: checking for sa_family_t" >&5
+echo "configure:2633: checking for sa_family_t" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_SA_FAMILY_T'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2635 "configure"
+#line 2639 "configure"
#include "confdefs.h"
#include <sys/types.h>
-#include <sys/socket.h>
+#include <sys/socket.h>
+
int main() {
sa_family_t X ;
; return 0; }
EOF
-if { (eval echo configure:2644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2649: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_SA_FAMILY_T=yes
else
@@ -2667,25 +2672,27 @@ EOF
echo $ac_n "checking for sockaddr_in.sin_len""... $ac_c" 1>&6
-echo "configure:2671: checking for sockaddr_in.sin_len" >&5
+echo "configure:2676: checking for sockaddr_in.sin_len" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_SOCKADDR_SA_LEN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2677 "configure"
+#line 2682 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
-#include <netinet/in.h>
+#include <netinet/in.h>
+
int main() {
struct sockaddr_in sin;
- int X = sin.sin_len ;
+ int X = sin.sin_len
+ ;
; return 0; }
EOF
-if { (eval echo configure:2689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2696: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_SOCKADDR_SA_LEN=yes
else
@@ -2712,22 +2719,23 @@ EOF
echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:2716: checking for socklen_t" >&5
+echo "configure:2723: checking for socklen_t" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_SOCKLEN_T'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2722 "configure"
+#line 2729 "configure"
#include "confdefs.h"
#include <sys/types.h>
-#include <sys/socket.h>
+#include <sys/socket.h>
+
int main() {
socklen_t X ;
; return 0; }
EOF
-if { (eval echo configure:2731: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2739: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_SOCKLEN_T=yes
else
@@ -2756,22 +2764,23 @@ if test $opt_ipv6 = yes; then
echo $ac_n "checking for AF_INET6""... $ac_c" 1>&6
-echo "configure:2760: checking for AF_INET6" >&5
+echo "configure:2768: checking for AF_INET6" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_AF_INET6'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2766 "configure"
+#line 2774 "configure"
#include "confdefs.h"
#include <sys/types.h>
-#include <sys/socket.h>
+#include <sys/socket.h>
+
int main() {
int X = AF_INET6 ;
; return 0; }
EOF
-if { (eval echo configure:2775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2784: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_AF_INET6=yes
else
@@ -2798,24 +2807,26 @@ EOF
echo $ac_n "checking for struct sockaddr_in6""... $ac_c" 1>&6
-echo "configure:2802: checking for struct sockaddr_in6" >&5
+echo "configure:2811: checking for struct sockaddr_in6" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_SOCKADDR_IN6'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2808 "configure"
+#line 2817 "configure"
#include "confdefs.h"
#include <sys/types.h>
-#include <netinet/in.h>
+#include <netinet/in.h>
+
int main() {
- struct sockaddr_in6 X;
- int Y = X.sin6_scope_id ;
+ struct sockaddr_in6 X;
+ int Y = X.sin6_scope_id
+ ;
; return 0; }
EOF
-if { (eval echo configure:2819: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_SOCKADDR_IN6=yes
else
@@ -2843,20 +2854,23 @@ EOF
if test $ac_cv_header_arpa_nameser_h = yes; then
echo $ac_n "checking for IN6ADDRSZ in arpa/nameser.h""... $ac_c" 1>&6
-echo "configure:2847: checking for IN6ADDRSZ in arpa/nameser.h" >&5
+echo "configure:2858: checking for IN6ADDRSZ in arpa/nameser.h" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_IN6ADDRSZ'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2853 "configure"
+#line 2864 "configure"
#include "confdefs.h"
- #include <arpa/nameser.h>
+
+#include <sys/types.h>
+#include <arpa/nameser.h>
+
int main() {
int X = IN6ADDRSZ ;
; return 0; }
EOF
-if { (eval echo configure:2860: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_IN6ADDRSZ=yes
else
@@ -2886,23 +2900,24 @@ fi
echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6
-echo "configure:2890: checking for struct addrinfo" >&5
+echo "configure:2904: checking for struct addrinfo" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_ADDRINFO'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2896 "configure"
+#line 2910 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
-#include <netdb.h>
+#include <netdb.h>
+
int main() {
struct addrinfo X ;
; return 0; }
EOF
-if { (eval echo configure:2906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_ADDRINFO=yes
else
@@ -2929,13 +2944,13 @@ EOF
echo $ac_n "checking for d_namlen in struct dirent""... $ac_c" 1>&6
-echo "configure:2933: checking for d_namlen in struct dirent" >&5
+echo "configure:2948: checking for d_namlen in struct dirent" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_D_NAMLEN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2939 "configure"
+#line 2954 "configure"
#include "confdefs.h"
#if HAVE_DIRENT_H
@@ -2951,14 +2966,16 @@ else
# if HAVE_NDIR_H
# include <ndir.h>
# endif
-#endif
+#endif
+
int main() {
struct dirent dp;
- int X = dp.d_namlen; ;
+ int X = dp.d_namlen;
+ ;
; return 0; }
EOF
-if { (eval echo configure:2962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_D_NAMLEN=yes
else
@@ -2985,21 +3002,22 @@ EOF
echo $ac_n "checking for h_errno declaration""... $ac_c" 1>&6
-echo "configure:2989: checking for h_errno declaration" >&5
+echo "configure:3006: checking for h_errno declaration" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_H_ERRNO_D'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2995 "configure"
+#line 3012 "configure"
#include "confdefs.h"
-#include <netdb.h>
+#include <netdb.h>
+
int main() {
int X = h_errno ;
; return 0; }
EOF
-if { (eval echo configure:3003: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3021: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_H_ERRNO_D=yes
else
@@ -3026,21 +3044,22 @@ EOF
echo $ac_n "checking for fclose() declaration""... $ac_c" 1>&6
-echo "configure:3030: checking for fclose() declaration" >&5
+echo "configure:3048: checking for fclose() declaration" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_FCLOSE_D'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3036 "configure"
+#line 3054 "configure"
#include "confdefs.h"
-#include <stdio.h>
+#include <stdio.h>
+
int main() {
int (*X)() = fclose ;
; return 0; }
EOF
-if { (eval echo configure:3044: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3063: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_FCLOSE_D=yes
else
@@ -3067,22 +3086,23 @@ EOF
echo $ac_n "checking for getpass() declaration""... $ac_c" 1>&6
-echo "configure:3071: checking for getpass() declaration" >&5
+echo "configure:3090: checking for getpass() declaration" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_GETPASS_D'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3077 "configure"
+#line 3096 "configure"
#include "confdefs.h"
#include <stdlib.h>
-#include <unistd.h>
+#include <unistd.h>
+
int main() {
char *(*X)() = getpass ;
; return 0; }
EOF
-if { (eval echo configure:3086: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3106: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_GETPASS_D=yes
else
@@ -3097,8 +3117,7 @@ fi
echo "$ac_t""$ftp_cv_HAVE_GETPASS_D" 1>&6
if test "x$ftp_cv_HAVE_GETPASS_D" = "xyes"; then
-
- cat >> confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_GETPASS_D 1
EOF
@@ -3110,22 +3129,23 @@ EOF
echo $ac_n "checking for optarg declaration""... $ac_c" 1>&6
-echo "configure:3114: checking for optarg declaration" >&5
+echo "configure:3133: checking for optarg declaration" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_OPTARG_D'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3120 "configure"
+#line 3139 "configure"
#include "confdefs.h"
#include <stdlib.h>
-#include <unistd.h>
+#include <unistd.h>
+
int main() {
char *X = optarg ;
; return 0; }
EOF
-if { (eval echo configure:3129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_OPTARG_D=yes
else
@@ -3152,22 +3172,23 @@ EOF
echo $ac_n "checking for optind declaration""... $ac_c" 1>&6
-echo "configure:3156: checking for optind declaration" >&5
+echo "configure:3176: checking for optind declaration" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_OPTIND_D'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3162 "configure"
+#line 3182 "configure"
#include "confdefs.h"
#include <stdlib.h>
-#include <unistd.h>
+#include <unistd.h>
+
int main() {
int X = optind ;
; return 0; }
EOF
-if { (eval echo configure:3171: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_OPTIND_D=yes
else
@@ -3194,21 +3215,22 @@ EOF
echo $ac_n "checking for pclose() declaration""... $ac_c" 1>&6
-echo "configure:3198: checking for pclose() declaration" >&5
+echo "configure:3219: checking for pclose() declaration" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_PCLOSE_D'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3204 "configure"
+#line 3225 "configure"
#include "confdefs.h"
-#include <stdio.h>
+#include <stdio.h>
+
int main() {
int (*X)() = pclose ;
; return 0; }
EOF
-if { (eval echo configure:3212: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3234: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_PCLOSE_D=yes
else
@@ -3239,12 +3261,12 @@ for ac_func in err fgetln fseeko getaddrinfo getnameinfo inet_ntop inet_pton \
strlcpy strptime strsep strunvis strvis timegm usleep utimes
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3243: checking for $ac_func" >&5
+echo "configure:3265: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3248 "configure"
+#line 3270 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3267,7 +3289,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3296,12 +3318,12 @@ done
for ac_func in gethostbyname2 getpassphrase getpgrp memmove select
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3300: checking for $ac_func" >&5
+echo "configure:3322: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3305 "configure"
+#line 3327 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3324,7 +3346,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3350,7 +3372,7 @@ done
if test $ac_cv_func_getpgrp = yes; then
echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:3354: checking whether getpgrp takes no argument" >&5
+echo "configure:3376: checking whether getpgrp takes no argument" >&5
if eval "test \"`echo '$''{'ac_cv_func_getpgrp_void'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3358,7 +3380,7 @@ else
{ echo "configure: error: cannot check getpgrp if cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 3362 "configure"
+#line 3384 "configure"
#include "confdefs.h"
/*
@@ -3413,7 +3435,7 @@ main()
}
EOF
-if { (eval echo configure:3417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_getpgrp_void=yes
else
@@ -3441,12 +3463,12 @@ if test $ac_cv_lib_util_fparseln != yes; then
for ac_func in fparseln
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3445: checking for $ac_func" >&5
+echo "configure:3467: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3450 "configure"
+#line 3472 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3469,7 +3491,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3502,21 +3524,24 @@ LIBOBJS="$LIBOBJS glob.o"
if test $ac_cv_func_strptime = yes; then
echo $ac_n "checking for strptime() declaration""... $ac_c" 1>&6
-echo "configure:3506: checking for strptime() declaration" >&5
+echo "configure:3528: checking for strptime() declaration" >&5
if eval "test \"`echo '$''{'ftp_cv_HAVE_STRPTIME_D'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3512 "configure"
+#line 3534 "configure"
#include "confdefs.h"
- #include <time.h>
+#include <time.h>
+
int main() {
- char *X = strptime("", "", NULL) ;
+
+ char *X = strptime("", "", NULL)
+ ;
; return 0; }
EOF
-if { (eval echo configure:3520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_HAVE_STRPTIME_D=yes
else
@@ -3546,24 +3571,24 @@ if test $have_long_long = yes -a $ac_cv_sizeof_off_t -ge 8; then
echo $ac_n "checking *printf() support for %lld""... $ac_c" 1>&6
-echo "configure:3550: checking *printf() support for %lld" >&5
+echo "configure:3575: checking *printf() support for %lld" >&5
can_printf_longlong=no
if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 3556 "configure"
+#line 3581 "configure"
#include "confdefs.h"
- #include <stdio.h>
- int main() {
- char buf[100];
- sprintf(buf, "%lld", 4294967300LL);
- return (strcmp(buf, "4294967300"));
- }
+#include <stdio.h>
+int main() {
+ char buf[100];
+ sprintf(buf, "%lld", 4294967300LL);
+ return (strcmp(buf, "4294967300"));
+}
EOF
-if { (eval echo configure:3567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
echo "$ac_t""yes" 1>&6
@@ -3583,23 +3608,23 @@ fi
if test $can_printf_longlong != yes; then
echo $ac_n "checking *printf() support for %qd""... $ac_c" 1>&6
-echo "configure:3587: checking *printf() support for %qd" >&5
+echo "configure:3612: checking *printf() support for %qd" >&5
if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 3592 "configure"
+#line 3617 "configure"
#include "confdefs.h"
- #include <stdio.h>
- int main() {
- char buf[100];
- sprintf(buf, "%qd", 4294967300LL);
- return (strcmp(buf, "4294967300"));
- }
+#include <stdio.h>
+int main() {
+ char buf[100];
+ sprintf(buf, "%qd", 4294967300LL);
+ return (strcmp(buf, "4294967300"));
+}
EOF
-if { (eval echo configure:3603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
echo "$ac_t""yes" 1>&6
@@ -3630,12 +3655,12 @@ EOF
for ac_func in strtoll
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3634: checking for $ac_func" >&5
+echo "configure:3659: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3639 "configure"
+#line 3664 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3658,7 +3683,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3835,21 +3860,22 @@ if test $opt_editcomplete = yes; then
if test $have_libedit = yes; then
echo $ac_n "checking for EL_RPROMPT in libedit""... $ac_c" 1>&6
-echo "configure:3839: checking for EL_RPROMPT in libedit" >&5
+echo "configure:3722: checking for EL_RPROMPT in libedit" >&5
if eval "test \"`echo '$''{'ftp_cv_have_libedit'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3845 "configure"
+#line 3728 "configure"
#include "confdefs.h"
- #include <histedit.h>
+#include <histedit.h>
+
int main() {
int X = EL_RPROMPT ;
; return 0; }
EOF
-if { (eval echo configure:3853: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3737: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_have_libedit=yes
else
@@ -3873,7 +3899,7 @@ echo "$ac_t""$ftp_cv_have_libedit" 1>&6
fi
echo $ac_n "checking for working libedit""... $ac_c" 1>&6
-echo "configure:3877: checking for working libedit" >&5
+echo "configure:3761: checking for working libedit" >&5
if test $have_libedit = no; then
echo "$ac_t""no - using my own" 1>&6
INCLUDES="-I\${srcdir}/../libedit $INCLUDES"
@@ -3891,21 +3917,24 @@ fi
if test $ac_cv_func_sl_init = yes; then
echo $ac_n "checking if sl_add() returns int""... $ac_c" 1>&6
-echo "configure:3895: checking if sl_add() returns int" >&5
+echo "configure:3779: checking if sl_add() returns int" >&5
if eval "test \"`echo '$''{'ftp_cv_INT_SL_ADD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3901 "configure"
+#line 3785 "configure"
#include "confdefs.h"
- #include <stringlist.h>
+#include <stringlist.h>
+
int main() {
- int f = sl_add((StringList *)0, "foo") ;
+
+ int f = sl_add((StringList *)0, "foo")
+ ;
; return 0; }
EOF
-if { (eval echo configure:3909: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_INT_SL_ADD=yes
else
@@ -3933,23 +3962,24 @@ have_rfc2553_netdb=no
if test $ac_cv_func_getaddrinfo = yes -a ! -n "$socks"; then
echo $ac_n "checking for AI_NUMERICHOST""... $ac_c" 1>&6
-echo "configure:3937: checking for AI_NUMERICHOST" >&5
+echo "configure:3824: checking for AI_NUMERICHOST" >&5
if eval "test \"`echo '$''{'ftp_cv_have_ai_numerichost'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3943 "configure"
+#line 3830 "configure"
#include "confdefs.h"
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+
int main() {
int X = AI_NUMERICHOST ;
; return 0; }
EOF
-if { (eval echo configure:3953: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_have_ai_numerichost=yes
else
@@ -3972,7 +4002,7 @@ echo "$ac_t""$ftp_cv_have_ai_numerichost" 1>&6
fi
echo $ac_n "checking for working getaddrinfo()""... $ac_c" 1>&6
-echo "configure:3976: checking for working getaddrinfo()" >&5
+echo "configure:3864: checking for working getaddrinfo()" >&5
if test $have_rfc2553_netdb = yes; then
cat >> confdefs.h <<\EOF
#define HAVE_RFC2553_NETDB 1
@@ -3992,22 +4022,23 @@ fi
if test $ac_cv_header_vis_h = yes; then
echo $ac_n "checking for VIS_WHITE in vis.h""... $ac_c" 1>&6
-echo "configure:3996: checking for VIS_WHITE in vis.h" >&5
+echo "configure:3884: checking for VIS_WHITE in vis.h" >&5
if eval "test \"`echo '$''{'ftp_cv_have_vis_white'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4002 "configure"
+#line 3890 "configure"
#include "confdefs.h"
- #include <sys/types.h>
- #include <vis.h>
+#include <sys/types.h>
+#include <vis.h>
+
int main() {
int X = VIS_WHITE ;
; return 0; }
EOF
-if { (eval echo configure:4011: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ftp_cv_have_vis_white=yes
else
diff --git a/net/tnftp/files/configure.in b/net/tnftp/files/configure.in
index 05fdce29e9a..725afa866ae 100644
--- a/net/tnftp/files/configure.in
+++ b/net/tnftp/files/configure.in
@@ -1,10 +1,10 @@
-dnl $Id: configure.in,v 1.3 2004/04/25 02:48:12 grant Exp $
+dnl $Id: configure.in,v 1.4 2005/01/04 23:44:24 lukem Exp $
dnl
dnl configure.in --
dnl process this file with autoconf to produce a configure script.
dnl
-AC_REVISION($Revision: 1.3 $)dnl
+AC_REVISION($Revision: 1.4 $)dnl
AC_INIT(tnftp.h)
@@ -70,49 +70,60 @@ AC_HEADER_TIME
AC_TYPE_OFF_T
AC_CHECK_SIZEOF(off_t, 0)
AC_MSG_TRY_LINK(for long long, ftp_cv_HAVE_LONG_LONG, [
-#include <sys/types.h>] , [
-long long X = 2, Y = 1, Z;
-Z = X / Y; ], [
-AC_DEFINE(HAVE_LONG_LONG, 1)
-have_long_long=yes], [have_long_long=no])
+#include <sys/types.h>
+ ] , [
+ long long X = 2, Y = 1, Z;
+ Z = X / Y;
+ ], [
+ AC_DEFINE(HAVE_LONG_LONG, 1)
+ have_long_long=yes
+ ], [have_long_long=no])
AC_MSG_TRY_COMPILE(for in_port_t, ftp_cv_HAVE_IN_PORT_T, [
#include <sys/types.h>
-#include <netinet/in.h> ], [ in_port_t X ], [AC_DEFINE(HAVE_IN_PORT_T, 1)])
+#include <netinet/in.h>
+ ], [ in_port_t X ], [AC_DEFINE(HAVE_IN_PORT_T, 1)])
AC_MSG_TRY_COMPILE(for sa_family_t, ftp_cv_HAVE_SA_FAMILY_T, [
#include <sys/types.h>
-#include <sys/socket.h> ], [ sa_family_t X ], [AC_DEFINE(HAVE_SA_FAMILY_T, 1)])
+#include <sys/socket.h>
+ ], [ sa_family_t X ], [AC_DEFINE(HAVE_SA_FAMILY_T, 1)])
AC_MSG_TRY_COMPILE(for sockaddr_in.sin_len, ftp_cv_HAVE_SOCKADDR_SA_LEN, [
#include <sys/types.h>
#include <sys/socket.h>
-#include <netinet/in.h> ], [
+#include <netinet/in.h>
+ ], [
struct sockaddr_in sin;
- int X = sin.sin_len ], [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1)])
+ int X = sin.sin_len
+ ], [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1)])
AC_MSG_TRY_COMPILE(for socklen_t, ftp_cv_HAVE_SOCKLEN_T, [
#include <sys/types.h>
-#include <sys/socket.h> ], [ socklen_t X ], [AC_DEFINE(HAVE_SOCKLEN_T, 1)])
+#include <sys/socket.h>
+ ], [ socklen_t X ], [AC_DEFINE(HAVE_SOCKLEN_T, 1)])
if test $opt_ipv6 = yes; then
AC_MSG_TRY_COMPILE(for AF_INET6, ftp_cv_HAVE_AF_INET6, [
#include <sys/types.h>
-#include <sys/socket.h> ],
- [ int X = AF_INET6 ], [AC_DEFINE(HAVE_AF_INET6, 1)])
+#include <sys/socket.h>
+ ], [ int X = AF_INET6 ], [AC_DEFINE(HAVE_AF_INET6, 1)])
AC_MSG_TRY_COMPILE(for struct sockaddr_in6, ftp_cv_HAVE_SOCKADDR_IN6, [
#include <sys/types.h>
-#include <netinet/in.h> ], [
- struct sockaddr_in6 X;
- int Y = X.sin6_scope_id ], [AC_DEFINE(HAVE_SOCKADDR_IN6, 1)])
+#include <netinet/in.h>
+ ], [
+ struct sockaddr_in6 X;
+ int Y = X.sin6_scope_id
+ ], [AC_DEFINE(HAVE_SOCKADDR_IN6, 1)])
if test $ac_cv_header_arpa_nameser_h = yes; then
AC_MSG_TRY_COMPILE(for IN6ADDRSZ in arpa/nameser.h,
- ftp_cv_HAVE_IN6ADDRSZ,
- [ #include <arpa/nameser.h> ],
- [ int X = IN6ADDRSZ ], [AC_DEFINE(HAVE_IN6ADDRSZ, 1)])
+ ftp_cv_HAVE_IN6ADDRSZ, [
+#include <sys/types.h>
+#include <arpa/nameser.h>
+ ], [ int X = IN6ADDRSZ ], [AC_DEFINE(HAVE_IN6ADDRSZ, 1)])
fi
fi
@@ -120,8 +131,8 @@ fi
AC_MSG_TRY_COMPILE(for struct addrinfo, ftp_cv_HAVE_ADDRINFO, [
#include <sys/types.h>
#include <sys/socket.h>
-#include <netdb.h> ],
- [ struct addrinfo X ], [AC_DEFINE(HAVE_ADDRINFO, 1)])
+#include <netdb.h>
+ ], [ struct addrinfo X ], [AC_DEFINE(HAVE_ADDRINFO, 1)])
AC_MSG_TRY_COMPILE(for d_namlen in struct dirent, ftp_cv_HAVE_D_NAMLEN, [
#if HAVE_DIRENT_H
@@ -137,31 +148,38 @@ AC_MSG_TRY_COMPILE(for d_namlen in struct dirent, ftp_cv_HAVE_D_NAMLEN, [
# if HAVE_NDIR_H
# include <ndir.h>
# endif
-#endif ], [
+#endif
+ ], [
struct dirent dp;
- int X = dp.d_namlen; ], [AC_DEFINE(HAVE_D_NAMLEN, 1)])
+ int X = dp.d_namlen;
+ ], [AC_DEFINE(HAVE_D_NAMLEN, 1)])
AC_MSG_TRY_COMPILE(for h_errno declaration, ftp_cv_HAVE_H_ERRNO_D, [
-#include <netdb.h> ], [ int X = h_errno ], [AC_DEFINE(HAVE_H_ERRNO_D, 1)])
+#include <netdb.h>
+ ], [ int X = h_errno ], [AC_DEFINE(HAVE_H_ERRNO_D, 1)])
AC_MSG_TRY_COMPILE(for fclose() declaration, ftp_cv_HAVE_FCLOSE_D, [
-#include <stdio.h> ], [ int (*X)() = fclose ], [AC_DEFINE(HAVE_FCLOSE_D, 1)])
+#include <stdio.h>
+ ], [ int (*X)() = fclose ], [AC_DEFINE(HAVE_FCLOSE_D, 1)])
AC_MSG_TRY_COMPILE(for getpass() declaration, ftp_cv_HAVE_GETPASS_D, [
#include <stdlib.h>
-#include <unistd.h> ], [ char *(*X)() = getpass ], [
- AC_DEFINE(HAVE_GETPASS_D, 1)])
+#include <unistd.h>
+ ], [ char *(*X)() = getpass ], [ AC_DEFINE(HAVE_GETPASS_D, 1)])
AC_MSG_TRY_COMPILE(for optarg declaration, ftp_cv_HAVE_OPTARG_D, [
#include <stdlib.h>
-#include <unistd.h> ], [ char *X = optarg ], [AC_DEFINE(HAVE_OPTARG_D, 1)])
+#include <unistd.h>
+ ], [ char *X = optarg ], [AC_DEFINE(HAVE_OPTARG_D, 1)])
AC_MSG_TRY_COMPILE(for optind declaration, ftp_cv_HAVE_OPTIND_D, [
#include <stdlib.h>
-#include <unistd.h> ], [ int X = optind ], [AC_DEFINE(HAVE_OPTIND_D, 1)])
+#include <unistd.h>
+ ], [ int X = optind ], [AC_DEFINE(HAVE_OPTIND_D, 1)])
AC_MSG_TRY_COMPILE(for pclose() declaration, ftp_cv_HAVE_PCLOSE_D, [
-#include <stdio.h> ], [ int (*X)() = pclose ], [AC_DEFINE(HAVE_PCLOSE_D, 1)])
+#include <stdio.h>
+ ], [ int (*X)() = pclose ], [AC_DEFINE(HAVE_PCLOSE_D, 1)])
dnl Checks for library functions.
@@ -181,8 +199,10 @@ LIBOBJS="$LIBOBJS glob.o"
if test $ac_cv_func_strptime = yes; then
AC_MSG_TRY_COMPILE(for strptime() declaration, ftp_cv_HAVE_STRPTIME_D, [
- #include <time.h> ], [ char *X = strptime("", "", NULL) ],
- [AC_DEFINE(HAVE_STRPTIME_D, 1)])
+#include <time.h>
+ ], [
+ char *X = strptime("", "", NULL)
+ ], [AC_DEFINE(HAVE_STRPTIME_D, 1)])
fi
if test $have_long_long = yes -a $ac_cv_sizeof_off_t -ge 8; then
@@ -194,12 +214,12 @@ dnl support because we don't know how to display it.
AC_MSG_CHECKING(*printf() support for %lld)
can_printf_longlong=no
AC_TRY_RUN([
- #include <stdio.h>
- int main() {
- char buf[100];
- sprintf(buf, "%lld", 4294967300LL);
- return (strcmp(buf, "4294967300"));
- }
+#include <stdio.h>
+int main() {
+ char buf[100];
+ sprintf(buf, "%lld", 4294967300LL);
+ return (strcmp(buf, "4294967300"));
+}
], [
AC_MSG_RESULT(yes)
can_printf_longlong=yes
@@ -210,12 +230,12 @@ dnl support because we don't know how to display it.
if test $can_printf_longlong != yes; then
AC_MSG_CHECKING(*printf() support for %qd)
AC_TRY_RUN([
- #include <stdio.h>
- int main() {
- char buf[100];
- sprintf(buf, "%qd", 4294967300LL);
- return (strcmp(buf, "4294967300"));
- }
+#include <stdio.h>
+int main() {
+ char buf[100];
+ sprintf(buf, "%qd", 4294967300LL);
+ return (strcmp(buf, "4294967300"));
+}
], [
AC_MSG_RESULT(yes)
can_printf_longlong=yes
@@ -259,8 +279,9 @@ fi
if test $opt_editcomplete = yes; then
if test $have_libedit = yes; then
AC_MSG_TRY_COMPILE(for EL_RPROMPT in libedit,
- ftp_cv_have_libedit, [
- #include <histedit.h> ], [ int X = EL_RPROMPT ], [:],
+ ftp_cv_have_libedit, [
+#include <histedit.h>
+ ], [ int X = EL_RPROMPT ], [:],
have_libedit=no )
fi
@@ -281,8 +302,10 @@ fi
if test $ac_cv_func_sl_init = yes; then
AC_MSG_TRY_COMPILE(if sl_add() returns int, ftp_cv_INT_SL_ADD, [
- #include <stringlist.h> ], [ int f = sl_add((StringList *)0, "foo") ],
- [:] , [LIBOBJS="$LIBOBJS sl_init.o"])
+#include <stringlist.h>
+ ], [
+ int f = sl_add((StringList *)0, "foo")
+ ], [:] , [LIBOBJS="$LIBOBJS sl_init.o"])
fi
@@ -290,10 +313,10 @@ have_rfc2553_netdb=no
if test $ac_cv_func_getaddrinfo = yes -a ! -n "$socks"; then
AC_MSG_TRY_COMPILE(for AI_NUMERICHOST,
ftp_cv_have_ai_numerichost, [
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h> ],
- [ int X = AI_NUMERICHOST ], [ have_rfc2553_netdb=yes ])
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+ ], [ int X = AI_NUMERICHOST ], [ have_rfc2553_netdb=yes ])
fi
AC_MSG_CHECKING(for working getaddrinfo())
if test $have_rfc2553_netdb = yes; then
@@ -311,10 +334,10 @@ fi
if test $ac_cv_header_vis_h = yes; then
AC_MSG_TRY_COMPILE(for VIS_WHITE in vis.h,
- ftp_cv_have_vis_white, [
- #include <sys/types.h>
- #include <vis.h> ], [ int X = VIS_WHITE ], [:],
- ac_cv_header_vis_h=no )
+ ftp_cv_have_vis_white, [
+#include <sys/types.h>
+#include <vis.h>
+ ], [ int X = VIS_WHITE ], [:], ac_cv_header_vis_h=no )
fi
diff --git a/net/tnftp/files/src/cmds.c b/net/tnftp/files/src/cmds.c
index d2571e146e0..104966639f0 100644
--- a/net/tnftp/files/src/cmds.c
+++ b/net/tnftp/files/src/cmds.c
@@ -1,7 +1,7 @@
-/* $NetBSD: cmds.c,v 1.2 2004/07/27 10:25:09 grant Exp $ */
+/* $NetBSD: cmds.c,v 1.3 2005/01/04 23:44:24 lukem Exp $ */
/*-
- * Copyright (c) 1996-2004 The NetBSD Foundation, Inc.
+ * Copyright (c) 1996-2005 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -52,11 +52,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
@@ -108,7 +104,7 @@
#if 0
static char sccsid[] = "@(#)cmds.c 8.6 (Berkeley) 10/9/94";
#else
-__RCSID("$NetBSD: cmds.c,v 1.2 2004/07/27 10:25:09 grant Exp $");
+__RCSID("$NetBSD: cmds.c,v 1.3 2005/01/04 23:44:24 lukem Exp $");
#endif
#endif /* not lint */
#endif
@@ -137,7 +133,7 @@ struct types {
};
sigjmp_buf jabort;
-char *mname;
+const char *mname;
static int confirm(const char *, const char *);
@@ -157,7 +153,7 @@ confirm(const char *cmd, const char *file)
clearerr(stdin);
return (0);
}
- switch (tolower(*line)) {
+ switch (tolower((unsigned char)*line)) {
case 'a':
confirmrest = 1;
fprintf(ttyout,
@@ -682,7 +678,14 @@ mget(int argc, char *argv[])
mflag = 0;
continue;
}
- if (! mflag || !confirm(argv[0], cp))
+ if (! mflag)
+ continue;
+ if (! fileindir(cp, localcwd)) {
+ fprintf(ttyout, "Skipping non-relative filename `%s'\n",
+ cp);
+ continue;
+ }
+ if (!confirm(argv[0], cp))
continue;
tp = cp;
if (mcase)
@@ -764,13 +767,13 @@ onoff(int bool)
void
status(int argc, char *argv[])
{
- int i;
if (argc == 0) {
fprintf(ttyout, "usage: %s\n", argv[0]);
code = -1;
return;
}
+#ifndef NO_STATUS
if (connected)
fprintf(ttyout, "Connected %sto %s.\n",
connected == -1 ? "and logged in" : "", hostname);
@@ -834,13 +837,16 @@ status(int argc, char *argv[])
onoff(editing)
#endif /* !def NO_EDITCOMPLETE */
);
- fprintf(ttyout, "Version: %s %s\n", FTP_PRODUCT, FTP_VERSION);
if (macnum > 0) {
+ int i;
+
fputs("Macros:\n", ttyout);
for (i=0; i<macnum; i++) {
fprintf(ttyout, "\t%s\n", macros[i].mac_name);
}
}
+#endif /* !def NO_STATUS */
+ fprintf(ttyout, "Version: %s %s\n", FTP_PRODUCT, FTP_VERSION);
code = 0;
}
@@ -1121,7 +1127,7 @@ cd(int argc, char *argv[])
}
if (r == COMPLETE) {
dirchange = 1;
- updateremotepwd();
+ updateremotecwd();
}
}
@@ -1131,7 +1137,6 @@ cd(int argc, char *argv[])
void
lcd(int argc, char *argv[])
{
- char buf[MAXPATHLEN];
char *locdir;
code = -1;
@@ -1145,14 +1150,16 @@ lcd(int argc, char *argv[])
}
if ((locdir = globulize(argv[1])) == NULL)
return;
- if (chdir(locdir) < 0)
- warn("local: %s", locdir);
+ if (chdir(locdir) == -1)
+ warn("lcd %s", locdir);
else {
- if (getcwd(buf, sizeof(buf)) != NULL) {
- fprintf(ttyout, "Local directory now %s\n", buf);
+ updatelocalcwd();
+ if (localcwd[0]) {
+ fprintf(ttyout, "Local directory now: %s\n", localcwd);
code = 0;
- } else
- warn("getcwd: %s", locdir);
+ } else {
+ fprintf(ttyout, "Unable to determine local directory\n");
+ }
}
(void)free(locdir);
}
@@ -1164,7 +1171,6 @@ void
delete(int argc, char *argv[])
{
-
if (argc == 0 || argc > 2 ||
(argc == 1 && !another(&argc, &argv, "remote-file"))) {
fprintf(ttyout, "usage: %s remote-file\n", argv[0]);
@@ -1313,6 +1319,7 @@ ls(int argc, char *argv[])
(void)strlcpy(locfile + 1, p, len - 1);
freelocfile = 1;
} else if ((strcmp(locfile, "-") != 0) && *locfile != '|') {
+ mname = argv[0];
if ((locfile = globulize(locfile)) == NULL ||
!confirm("output to local-file:", locfile)) {
code = -1;
@@ -1349,6 +1356,7 @@ mls(int argc, char *argv[])
}
odest = dest = argv[argc - 1];
argv[argc - 1] = NULL;
+ mname = argv[0];
if (strcmp(dest, "-") && *dest != '|')
if (((dest = globulize(dest)) == NULL) ||
!confirm("output to local-file:", dest)) {
@@ -1356,7 +1364,6 @@ mls(int argc, char *argv[])
return;
}
dolist = strcmp(argv[0], "mls");
- mname = argv[0];
mflag = 1;
oldintr = xsignal(SIGINT, mintr);
if (sigsetjmp(jabort, 1))
@@ -1499,19 +1506,20 @@ user(int argc, char *argv[])
void
pwd(int argc, char *argv[])
{
- int oldverbose = verbose;
- if (argc == 0) {
+ code = -1;
+ if (argc != 1) {
fprintf(ttyout, "usage: %s\n", argv[0]);
- code = -1;
return;
}
- verbose = 1; /* If we aren't verbose, this doesn't do anything! */
- if (command("PWD") == ERROR && code == 500) {
- fputs("PWD command not recognized, trying XPWD.\n", ttyout);
- (void)command("XPWD");
+ if (! remotecwd[0])
+ updateremotecwd();
+ if (! remotecwd[0])
+ fprintf(ttyout, "Unable to determine remote directory\n");
+ else {
+ fprintf(ttyout, "Remote directory: %s\n", remotecwd);
+ code = 0;
}
- verbose = oldverbose;
}
/*
@@ -1520,19 +1528,19 @@ pwd(int argc, char *argv[])
void
lpwd(int argc, char *argv[])
{
- char buf[MAXPATHLEN];
- if (argc == 0) {
+ code = -1;
+ if (argc != 1) {
fprintf(ttyout, "usage: %s\n", argv[0]);
- code = -1;
return;
}
- if (getcwd(buf, sizeof(buf)) != NULL) {
- fprintf(ttyout, "Local directory %s\n", buf);
+ if (! localcwd[0])
+ updatelocalcwd();
+ if (! localcwd[0])
+ fprintf(ttyout, "Unable to determine local directory\n");
+ else {
+ fprintf(ttyout, "Local directory: %s\n", localcwd);
code = 0;
- } else {
- warn("getcwd");
- code = -1;
}
}
@@ -1877,7 +1885,7 @@ docase(char *name)
if (dochange) {
for (i = 0; new[i] != '\0'; i++)
if (isupper((unsigned char)new[i]))
- new[i] = tolower(new[i]);
+ new[i] = tolower((unsigned char)new[i]);
}
return (new);
}
@@ -2298,7 +2306,7 @@ cdup(int argc, char *argv[])
}
if (r == COMPLETE) {
dirchange = 1;
- updateremotepwd();
+ updateremotecwd();
}
}
diff --git a/net/tnftp/files/src/cmdtab.c b/net/tnftp/files/src/cmdtab.c
index b072ee3b36a..4b0aaa3ad93 100644
--- a/net/tnftp/files/src/cmdtab.c
+++ b/net/tnftp/files/src/cmdtab.c
@@ -1,4 +1,4 @@
-/* $NetBSD: cmdtab.c,v 1.1.1.2 2005/01/03 10:08:40 lukem Exp $ */
+/* $NetBSD: cmdtab.c,v 1.2 2005/01/04 23:44:24 lukem Exp $ */
/*-
* Copyright (c) 1996-2000 The NetBSD Foundation, Inc.
diff --git a/net/tnftp/files/src/domacro.c b/net/tnftp/files/src/domacro.c
index 1fc8f25a33e..b35156435d6 100644
--- a/net/tnftp/files/src/domacro.c
+++ b/net/tnftp/files/src/domacro.c
@@ -1,4 +1,4 @@
-/* $NetBSD: domacro.c,v 1.1.1.2 2005/01/03 10:08:40 lukem Exp $ */
+/* $NetBSD: domacro.c,v 1.2 2005/01/04 23:44:24 lukem Exp $ */
/*
* Copyright (c) 1985, 1993, 1994
diff --git a/net/tnftp/files/src/extern.h b/net/tnftp/files/src/extern.h
index 7f47a0b38d9..de9b36a0df7 100644
--- a/net/tnftp/files/src/extern.h
+++ b/net/tnftp/files/src/extern.h
@@ -1,4 +1,4 @@
-/* $NetBSD: extern.h,v 1.1.1.2 2005/01/03 10:08:40 lukem Exp $ */
+/* $NetBSD: extern.h,v 1.2 2005/01/04 23:44:24 lukem Exp $ */
/*-
* Copyright (c) 1996-2005 The NetBSD Foundation, Inc.
diff --git a/net/tnftp/files/src/fetch.c b/net/tnftp/files/src/fetch.c
index 45025d836cd..08cb08ca72d 100644
--- a/net/tnftp/files/src/fetch.c
+++ b/net/tnftp/files/src/fetch.c
@@ -1,4 +1,4 @@
-/* $NetBSD: fetch.c,v 1.2 2004/07/27 10:25:09 grant Exp $ */
+/* $NetBSD: fetch.c,v 1.3 2005/01/04 23:44:24 lukem Exp $ */
/*-
* Copyright (c) 1997-2004 The NetBSD Foundation, Inc.
@@ -42,7 +42,7 @@
#if 0
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: fetch.c,v 1.2 2004/07/27 10:25:09 grant Exp $");
+__RCSID("$NetBSD: fetch.c,v 1.3 2005/01/04 23:44:24 lukem Exp $");
#endif /* not lint */
#endif
@@ -64,11 +64,14 @@ typedef enum {
} url_t;
void aborthttp(int);
+#ifndef NO_AUTH
static int auth_url(const char *, char **, const char *, const char *);
-static void base64_encode(const u_char *, size_t, u_char *);
+static void base64_encode(const unsigned char *, size_t, unsigned char *);
+#endif
static int go_fetch(const char *);
static int fetch_ftp(const char *);
static int fetch_url(const char *, const char *, char *, char *);
+static const char *match_token(const char **, const char *);
static int parse_url(const char *, const char *, url_t *, char **,
char **, char **, char **, in_port_t *, char **);
static void url_decode(char *);
@@ -76,6 +79,11 @@ static void url_decode(char *);
static int redirect_loop;
+#define STRNEQUAL(a,b) (strncasecmp((a), (b), sizeof((b))-1) == 0)
+#define ISLWS(x) ((x)=='\r' || (x)=='\n' || (x)==' ' || (x)=='\t')
+#define SKIPLWS(x) do { while (ISLWS((*x))) x++; } while (0)
+
+
#define ABOUT_URL "about:" /* propaganda */
#define FILE_URL "file://" /* file URL prefix */
#define FTP_URL "ftp://" /* ftp URL prefix */
@@ -83,6 +91,35 @@ static int redirect_loop;
/*
+ * Determine if token is the next word in buf (case insensitive).
+ * If so, advance buf past the token and any trailing LWS, and
+ * return a pointer to the token (in buf). Otherwise, return NULL.
+ * token may be preceeded by LWS.
+ * token must be followed by LWS or NUL. (I.e, don't partial match).
+ */
+static const char *
+match_token(const char **buf, const char *token)
+{
+ const char *p, *orig;
+ size_t tlen;
+
+ tlen = strlen(token);
+ p = *buf;
+ SKIPLWS(p);
+ orig = p;
+ if (strncasecmp(p, token, tlen) != 0)
+ return NULL;
+ p += tlen;
+ if (*p != '\0' && !ISLWS(*p))
+ return NULL;
+ SKIPLWS(p);
+ orig = *buf;
+ *buf = p;
+ return orig;
+}
+
+#ifndef NO_AUTH
+/*
* Generate authorization response based on given authentication challenge.
* Returns -1 if an error occurred, otherwise 0.
* Sets response to a malloc(3)ed string; caller should free.
@@ -91,52 +128,52 @@ static int
auth_url(const char *challenge, char **response, const char *guser,
const char *gpass)
{
- char *cp, *ep, *clear, *line, *realm, *scheme;
+ const char *cp, *scheme;
+ char *ep, *clear, *realm;
char user[BUFSIZ], *pass;
int rval;
size_t len, clen, rlen;
*response = NULL;
- clear = realm = scheme = NULL;
+ clear = realm = NULL;
rval = -1;
- line = xstrdup(challenge);
- cp = line;
+ cp = challenge;
+ scheme = "Basic"; /* only support Basic authentication */
if (debug)
fprintf(ttyout, "auth_url: challenge `%s'\n", challenge);
- scheme = strsep(&cp, " ");
-#define SCHEME_BASIC "Basic"
- if (strncasecmp(scheme, SCHEME_BASIC, sizeof(SCHEME_BASIC) - 1) != 0) {
- warnx("Unsupported WWW Authentication challenge - `%s'",
+ if (! match_token(&cp, scheme)) {
+ warnx("Unsupported authentication challenge - `%s'",
challenge);
goto cleanup_auth_url;
}
- cp += strspn(cp, " ");
#define REALM "realm=\""
- if (strncasecmp(cp, REALM, sizeof(REALM) - 1) == 0)
+ if (STRNEQUAL(cp, REALM))
cp += sizeof(REALM) - 1;
else {
- warnx("Unsupported WWW Authentication challenge - `%s'",
+ warnx("Unsupported authentication challenge - `%s'",
challenge);
goto cleanup_auth_url;
}
+/* XXX: need to improve quoted-string parsing to support \ quoting, etc. */
if ((ep = strchr(cp, '\"')) != NULL) {
size_t len = ep - cp;
realm = (char *)xmalloc(len + 1);
(void)strlcpy(realm, cp, len + 1);
} else {
- warnx("Unsupported WWW Authentication challenge - `%s'",
+ warnx("Unsupported authentication challenge - `%s'",
challenge);
goto cleanup_auth_url;
}
- if (guser != NULL)
+ fprintf(ttyout, "Username for `%s': ", realm);
+ if (guser != NULL) {
(void)strlcpy(user, guser, sizeof(user));
- else {
- fprintf(ttyout, "Username for `%s': ", realm);
+ fprintf(ttyout, "%s\n", user);
+ } else {
(void)fflush(ttyout);
if (fgets(user, sizeof(user) - 1, stdin) == NULL) {
clearerr(stdin);
@@ -162,13 +199,13 @@ auth_url(const char *challenge, char **response, const char *guser,
*response = (char *)xmalloc(rlen);
(void)strlcpy(*response, scheme, rlen);
len = strlcat(*response, " ", rlen);
- base64_encode(clear, clen, (u_char *)*response + len);
+ /* use `clen - 1' to not encode the trailing NUL */
+ base64_encode(clear, clen - 1, (unsigned char *)*response + len);
memset(clear, 0, clen);
rval = 0;
cleanup_auth_url:
FREEPTR(clear);
- FREEPTR(line);
FREEPTR(realm);
return (rval);
}
@@ -178,11 +215,11 @@ auth_url(const char *challenge, char **response, const char *guser,
* which should be at least ((len + 2) * 4 / 3 + 1) in size.
*/
static void
-base64_encode(const u_char *clear, size_t len, u_char *encoded)
+base64_encode(const unsigned char *clear, size_t len, unsigned char *encoded)
{
- static const u_char enc[] =
+ static const unsigned char enc[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- u_char *cp;
+ unsigned char *cp;
int i;
cp = encoded;
@@ -198,6 +235,7 @@ base64_encode(const u_char *clear, size_t len, u_char *encoded)
while (i-- > len)
*(--cp) = '=';
}
+#endif
/*
* Decode %xx escapes in given string, `in-place'.
@@ -227,7 +265,7 @@ url_decode(char *url)
/*
* Parse URL of form:
- * <type>://[<user>[:<password>@]]<host>[:<port>][/<path>]
+ * <type>://[<user>[:<password>]@]<host>[:<port>][/<path>]
* Returns -1 if a parse error occurred, otherwise 0.
* It's the caller's responsibility to url_decode() the returned
* user, pass and path.
@@ -276,17 +314,17 @@ parse_url(const char *url, const char *desc, url_t *type,
*portnum = 0;
tport = NULL;
- if (strncasecmp(url, HTTP_URL, sizeof(HTTP_URL) - 1) == 0) {
+ if (STRNEQUAL(url, HTTP_URL)) {
url += sizeof(HTTP_URL) - 1;
*type = HTTP_URL_T;
*portnum = HTTP_PORT;
tport = httpport;
- } else if (strncasecmp(url, FTP_URL, sizeof(FTP_URL) - 1) == 0) {
+ } else if (STRNEQUAL(url, FTP_URL)) {
url += sizeof(FTP_URL) - 1;
*type = FTP_URL_T;
*portnum = FTP_PORT;
tport = ftpport;
- } else if (strncasecmp(url, FILE_URL, sizeof(FILE_URL) - 1) == 0) {
+ } else if (STRNEQUAL(url, FILE_URL)) {
url += sizeof(FILE_URL) - 1;
*type = FILE_URL_T;
} else {
@@ -328,6 +366,9 @@ parse_url(const char *url, const char *desc, url_t *type,
*cp = '\0';
*pass = xstrdup(cp + 1);
}
+ url_decode(*user);
+ if (*pass)
+ url_decode(*pass);
}
#ifdef INET6
@@ -416,7 +457,8 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
size_t len;
static size_t bufsize;
static char *xferbuf;
- char *cp, *ep, *buf, *savefile;
+ const char *cp, *token;
+ char *ep, *buf, *savefile;
char *auth, *location, *message;
char *user, *pass, *host, *port, *path, *decodedpath;
char *puser, *ppass, *useragent;
@@ -496,7 +538,7 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
goto cleanup_fetch_url;
} else {
if (debug)
- fprintf(ttyout, "got savefile as `%s'\n", savefile);
+ fprintf(ttyout, "savefile `%s'\n", savefile);
}
restart_point = 0;
@@ -769,7 +811,7 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
warn("Receiving HTTP reply");
goto cleanup_fetch_url;
}
- while (len > 0 && (buf[len-1] == '\r' || buf[len-1] == '\n'))
+ while (len > 0 && (ISLWS(buf[len-1])))
buf[--len] = '\0';
if (debug)
fprintf(ttyout, "received `%s'\n", buf);
@@ -786,28 +828,27 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
message = xstrdup(cp);
/* Read the rest of the header. */
- FREEPTR(buf);
while (1) {
+ FREEPTR(buf);
if ((buf = fparseln(fin, &len, NULL, "\0\0\0", 0))
== NULL) {
warn("Receiving HTTP reply");
goto cleanup_fetch_url;
}
- while (len > 0 &&
- (buf[len-1] == '\r' || buf[len-1] == '\n'))
+ while (len > 0 && (ISLWS(buf[len-1])))
buf[--len] = '\0';
if (len == 0)
break;
if (debug)
fprintf(ttyout, "received `%s'\n", buf);
- /* Look for some headers */
+ /*
+ * Look for some headers
+ */
+
cp = buf;
-#define CONTENTLEN "Content-Length: "
- if (strncasecmp(cp, CONTENTLEN,
- sizeof(CONTENTLEN) - 1) == 0) {
- cp += sizeof(CONTENTLEN) - 1;
+ if (match_token(&cp, "Content-Length:")) {
filesize = STRTOLL(cp, &ep, 10);
if (filesize < 0 || *ep != '\0')
goto improper;
@@ -816,13 +857,12 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
"parsed len as: " LLF "\n",
(LLT)filesize);
-#define CONTENTRANGE "Content-Range: bytes "
- } else if (strncasecmp(cp, CONTENTRANGE,
- sizeof(CONTENTRANGE) - 1) == 0) {
- cp += sizeof(CONTENTRANGE) - 1;
- if (*cp == '*') {
- ep = cp + 1;
- }
+ } else if (match_token(&cp, "Content-Range:")) {
+ if (! match_token(&cp, "bytes"))
+ goto improper;
+
+ if (*cp == '*')
+ cp++;
else {
rangestart = STRTOLL(cp, &ep, 10);
if (rangestart < 0 || *ep != '-')
@@ -831,19 +871,20 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
rangeend = STRTOLL(cp, &ep, 10);
if (rangeend < 0 || rangeend < rangestart)
goto improper;
+ cp = ep;
}
- if (*ep != '/')
+ if (*cp != '/')
goto improper;
- cp = ep + 1;
- if (*cp == '*') {
- ep = cp + 1;
- }
+ cp++;
+ if (*cp == '*')
+ cp++;
else {
entitylen = STRTOLL(cp, &ep, 10);
if (entitylen < 0)
goto improper;
+ cp = ep;
}
- if (*ep != '\0')
+ if (*cp != '\0')
goto improper;
if (debug) {
@@ -862,13 +903,10 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
goto cleanup_fetch_url;
}
-#define LASTMOD "Last-Modified: "
- } else if (strncasecmp(cp, LASTMOD,
- sizeof(LASTMOD) - 1) == 0) {
+ } else if (match_token(&cp, "Last-Modified:")) {
struct tm parsed;
char *t;
- cp += sizeof(LASTMOD) - 1;
/* RFC 1123 */
if ((t = strptime(cp,
"%a, %d %b %Y %H:%M:%S GMT",
@@ -891,29 +929,22 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
}
}
-#define LOCATION "Location: "
- } else if (strncasecmp(cp, LOCATION,
- sizeof(LOCATION) - 1) == 0) {
- cp += sizeof(LOCATION) - 1;
+ } else if (match_token(&cp, "Location:")) {
location = xstrdup(cp);
if (debug)
fprintf(ttyout,
- "parsed location as: %s\n", cp);
+ "parsed location as `%s'\n", cp);
-#define TRANSENC "Transfer-Encoding: "
- } else if (strncasecmp(cp, TRANSENC,
- sizeof(TRANSENC) - 1) == 0) {
- cp += sizeof(TRANSENC) - 1;
- if (strcasecmp(cp, "binary") == 0) {
+ } else if (match_token(&cp, "Transfer-Encoding:")) {
+ if (match_token(&cp, "binary")) {
warnx(
- "Bogus transfer encoding - `%s' (fetching anyway)",
- cp);
+ "Bogus transfer encoding - `binary' (fetching anyway)");
continue;
}
- if (strcasecmp(cp, "chunked") != 0) {
+ if (! (token = match_token(&cp, "chunked"))) {
warnx(
"Unsupported transfer encoding - `%s'",
- cp);
+ token);
goto cleanup_fetch_url;
}
ischunked++;
@@ -921,26 +952,20 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
fprintf(ttyout,
"using chunked encoding\n");
-#define PROXYAUTH "Proxy-Authenticate: "
- } else if (strncasecmp(cp, PROXYAUTH,
- sizeof(PROXYAUTH) - 1) == 0) {
- cp += sizeof(PROXYAUTH) - 1;
- FREEPTR(auth);
- auth = xstrdup(cp);
- if (debug)
- fprintf(ttyout,
- "parsed proxy-auth as: %s\n", cp);
-
-#define WWWAUTH "WWW-Authenticate: "
- } else if (strncasecmp(cp, WWWAUTH,
- sizeof(WWWAUTH) - 1) == 0) {
- cp += sizeof(WWWAUTH) - 1;
+ } else if (match_token(&cp, "Proxy-Authenticate:")
+ || match_token(&cp, "WWW-Authenticate:")) {
+ if (! (token = match_token(&cp, "Basic"))) {
+ if (debug)
+ fprintf(ttyout,
+ "skipping unknown auth scheme `%s'\n",
+ token);
+ continue;
+ }
FREEPTR(auth);
- auth = xstrdup(cp);
+ auth = xstrdup(token);
if (debug)
fprintf(ttyout,
- "parsed www-auth as: %s\n", cp);
-
+ "parsed auth as `%s'\n", cp);
}
}
@@ -983,18 +1008,13 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
rval = go_fetch(location);
}
goto cleanup_fetch_url;
+#ifndef NO_AUTH
case 401:
case 407:
{
char **authp;
char *auser, *apass;
- fprintf(ttyout, "%s\n", message);
- if (EMPTYSTRING(auth)) {
- warnx(
- "No authentication challenge provided by server");
- goto cleanup_fetch_url;
- }
if (hcode == 401) {
authp = &wwwauth;
auser = user;
@@ -1004,6 +1024,14 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
auser = puser;
apass = ppass;
}
+ if (verbose || *authp == NULL ||
+ auser == NULL || apass == NULL)
+ fprintf(ttyout, "%s\n", message);
+ if (EMPTYSTRING(auth)) {
+ warnx(
+ "No authentication challenge provided by server");
+ goto cleanup_fetch_url;
+ }
if (*authp != NULL) {
char reply[10];
@@ -1013,10 +1041,9 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
== NULL) {
clearerr(stdin);
goto cleanup_fetch_url;
- } else {
- if (tolower(reply[0]) != 'y')
- goto cleanup_fetch_url;
}
+ if (tolower((unsigned char)reply[0]) != 'y')
+ goto cleanup_fetch_url;
auser = NULL;
apass = NULL;
}
@@ -1028,6 +1055,7 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
}
goto cleanup_fetch_url;
}
+#endif
default:
if (message)
warnx("Error retrieving file - `%s'", message);
@@ -1281,17 +1309,14 @@ fetch_ftp(const char *url)
rval = 1;
type = TYPE_I;
- if (strncasecmp(url, FTP_URL, sizeof(FTP_URL) - 1) == 0) {
+ if (STRNEQUAL(url, FTP_URL)) {
if ((parse_url(url, "URL", &urltype, &user, &pass,
&host, &port, &portnum, &path) == -1) ||
(user != NULL && *user == '\0') ||
- (pass != NULL && *pass == '\0') ||
EMPTYSTRING(host)) {
warnx("Invalid URL `%s'", url);
goto cleanup_fetch_ftp;
}
- url_decode(user);
- url_decode(pass);
/*
* Note: Don't url_decode(path) here. We need to keep the
* distinction between "/" and "%2F" until later.
@@ -1601,10 +1626,11 @@ go_fetch(const char *url)
{
char *proxy;
+#ifndef NO_ABOUT
/*
* Check for about:*
*/
- if (strncasecmp(url, ABOUT_URL, sizeof(ABOUT_URL) - 1) == 0) {
+ if (STRNEQUAL(url, ABOUT_URL)) {
url += sizeof(ABOUT_URL) -1;
if (strcasecmp(url, "ftp") == 0 ||
strcasecmp(url, "tnftp") == 0) {
@@ -1634,12 +1660,12 @@ go_fetch(const char *url)
fputs("\n", ttyout);
return (0);
}
+#endif
/*
* Check for file:// and http:// URLs.
*/
- if (strncasecmp(url, HTTP_URL, sizeof(HTTP_URL) - 1) == 0 ||
- strncasecmp(url, FILE_URL, sizeof(FILE_URL) - 1) == 0)
+ if (STRNEQUAL(url, HTTP_URL) || STRNEQUAL(url, FILE_URL))
return (fetch_url(url, NULL, NULL, NULL));
/*
@@ -1648,8 +1674,7 @@ go_fetch(const char *url)
* Othewise, use fetch_ftp().
*/
proxy = getoptionvalue("ftp_proxy");
- if (!EMPTYSTRING(proxy) &&
- strncasecmp(url, FTP_URL, sizeof(FTP_URL) - 1) == 0)
+ if (!EMPTYSTRING(proxy) && STRNEQUAL(url, FTP_URL))
return (fetch_url(url, NULL, NULL, NULL));
return (fetch_ftp(url));
diff --git a/net/tnftp/files/src/ftp.1 b/net/tnftp/files/src/ftp.1
index bfb1cc97ee4..7e1b567253c 100644
--- a/net/tnftp/files/src/ftp.1
+++ b/net/tnftp/files/src/ftp.1
@@ -1,4 +1,4 @@
-.\" $NetBSD: ftp.1,v 1.1.1.2 2005/01/03 10:08:40 lukem Exp $
+.\" $NetBSD: ftp.1,v 1.2 2005/01/04 23:44:24 lukem Exp $
.\"
.\" Copyright (c) 1996-2003 The NetBSD Foundation, Inc.
.\" All rights reserved.
diff --git a/net/tnftp/files/src/ftp.c b/net/tnftp/files/src/ftp.c
index 68e80560c5d..f76cb2e3400 100644
--- a/net/tnftp/files/src/ftp.c
+++ b/net/tnftp/files/src/ftp.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ftp.c,v 1.2 2004/07/27 10:25:09 grant Exp $ */
+/* $NetBSD: ftp.c,v 1.3 2005/01/04 23:44:24 lukem Exp $ */
/*-
* Copyright (c) 1996-2004 The NetBSD Foundation, Inc.
@@ -48,11 +48,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
@@ -106,7 +102,7 @@
#if 0
static char sccsid[] = "@(#)ftp.c 8.6 (Berkeley) 10/27/94";
#else
-__RCSID("$NetBSD: ftp.c,v 1.2 2004/07/27 10:25:09 grant Exp $");
+__RCSID("$NetBSD: ftp.c,v 1.3 2005/01/04 23:44:24 lukem Exp $");
#endif
#endif /* not lint */
#endif
@@ -215,10 +211,7 @@ hookup(char *host, char *port)
cause = "socket";
continue;
}
- while ((error = xconnect(s, res->ai_addr, res->ai_addrlen)) < 0
- && errno == EINTR) {
- ;
- }
+ error = xconnect(s, res->ai_addr, res->ai_addrlen);
if (error) {
/* this "if" clause is to prevent print warning twice */
if (res->ai_next) {
@@ -261,7 +254,8 @@ hookup(char *host, char *port)
int tos = IPTOS_LOWDELAY;
if (setsockopt(s, IPPROTO_IP, IP_TOS, (char *)&tos,
sizeof(int)) < 0)
- warn("setsockopt TOS (ignored)");
+ if (debug)
+ warn("setsockopt TOS (ignored)");
}
#endif
cin = fdopen(s, "r");
@@ -559,13 +553,13 @@ empty(FILE *cin, FILE *din, int sec)
struct pollfd pfd[2];
if (cin) {
- pfd[nfd].fd = fileno(cin);
- pfd[nfd++].events = POLLIN;
+ pfd[nfd].fd = fileno(cin);
+ pfd[nfd++].events = POLLIN;
}
if (din) {
- pfd[nfd].fd = fileno(din);
- pfd[nfd++].events = POLLIN;
+ pfd[nfd].fd = fileno(din);
+ pfd[nfd++].events = POLLIN;
}
if ((nr = poll(pfd, nfd, sec * 1000)) <= 0)
@@ -1312,7 +1306,8 @@ initconn(void)
if ((options & SO_DEBUG) &&
setsockopt(data, SOL_SOCKET, SO_DEBUG, (char *)&on,
sizeof(on)) < 0)
- warn("setsockopt (ignored)");
+ if (debug)
+ warn("setsockopt (ignored)");
result = COMPLETE + 1;
switch (data_addr.su_family) {
case AF_INET:
@@ -1531,8 +1526,6 @@ initconn(void)
while (xconnect(data, (struct sockaddr *)&data_addr.si_su,
data_addr.su_len) < 0) {
- if (errno == EINTR)
- continue;
if (activefallback) {
(void)close(data);
data = -1;
@@ -1550,7 +1543,8 @@ initconn(void)
on = IPTOS_THROUGHPUT;
if (setsockopt(data, IPPROTO_IP, IP_TOS, (char *)&on,
sizeof(int)) < 0)
- warn("setsockopt TOS (ignored)");
+ if (debug)
+ warn("setsockopt TOS (ignored)");
}
#endif
return (0);
@@ -1583,7 +1577,8 @@ initconn(void)
if (options & SO_DEBUG &&
setsockopt(data, SOL_SOCKET, SO_DEBUG, (char *)&on,
sizeof(on)) < 0)
- warn("setsockopt (ignored)");
+ if (debug)
+ warn("setsockopt (ignored)");
len = sizeof(data_addr.si_su);
memset((char *)&data_addr, 0, sizeof (data_addr));
if (getsockname(data, (struct sockaddr *)&data_addr.si_su, &len) < 0) {
@@ -1683,7 +1678,8 @@ initconn(void)
on = IPTOS_THROUGHPUT;
if (setsockopt(data, IPPROTO_IP, IP_TOS, (char *)&on,
sizeof(int)) < 0)
- warn("setsockopt TOS (ignored)");
+ if (debug)
+ warn("setsockopt TOS (ignored)");
}
#endif
return (0);
@@ -1716,7 +1712,8 @@ dataconn(const char *lmode)
int tos = IPTOS_THROUGHPUT;
if (setsockopt(s, IPPROTO_IP, IP_TOS, (char *)&tos,
sizeof(int)) < 0) {
- warn("setsockopt TOS (ignored)");
+ if (debug)
+ warn("setsockopt TOS (ignored)");
}
}
#endif
diff --git a/net/tnftp/files/src/ftp_var.h b/net/tnftp/files/src/ftp_var.h
index 11fd03caa41..3beb9046525 100644
--- a/net/tnftp/files/src/ftp_var.h
+++ b/net/tnftp/files/src/ftp_var.h
@@ -1,7 +1,7 @@
-/* $NetBSD: ftp_var.h,v 1.2 2004/07/27 10:25:09 grant Exp $ */
+/* $NetBSD: ftp_var.h,v 1.3 2005/01/04 23:44:24 lukem Exp $ */
/*-
- * Copyright (c) 1996-2004 The NetBSD Foundation, Inc.
+ * Copyright (c) 1996-2005 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -48,11 +48,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
@@ -122,15 +118,15 @@
* Format of command table.
*/
struct cmd {
- char *c_name; /* name of command */
- char *c_help; /* help string */
- char c_bell; /* give bell when command completes */
- char c_conn; /* must be connected to use command */
- char c_proxy; /* proxy server may execute */
+ char *c_name; /* name of command */
+ const char *c_help; /* help string */
+ char c_bell; /* give bell when command completes */
+ char c_conn; /* must be connected to use command */
+ char c_proxy; /* proxy server may execute */
#ifndef NO_EDITCOMPLETE
- char *c_complete; /* context sensitive completion list */
+ const char *c_complete; /* context sensitive completion list */
#endif /* !NO_EDITCOMPLETE */
- void (*c_handler)(int, char **); /* function to call */
+ void (*c_handler)(int, char **); /* function to call */
};
/*
@@ -265,7 +261,8 @@ GLOBAL char *direction; /* direction transfer is occurring */
GLOBAL char *hostname; /* name of host connected to */
GLOBAL int unix_server; /* server is unix, can use binary for ascii */
GLOBAL int unix_proxy; /* proxy is unix, can use binary for ascii */
-GLOBAL char remotepwd[MAXPATHLEN]; /* remote dir */
+GLOBAL char localcwd[MAXPATHLEN]; /* local dir */
+GLOBAL char remotecwd[MAXPATHLEN]; /* remote dir */
GLOBAL char *username; /* name of user logged in as. (dynamic) */
GLOBAL sa_family_t family; /* address family to use for connections */
diff --git a/net/tnftp/files/src/main.c b/net/tnftp/files/src/main.c
index 49d5a44b7bf..5812933d43a 100644
--- a/net/tnftp/files/src/main.c
+++ b/net/tnftp/files/src/main.c
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.2 2004/07/27 10:25:09 grant Exp $ */
+/* $NetBSD: main.c,v 1.3 2005/01/04 23:44:24 lukem Exp $ */
/*-
* Copyright (c) 1996-2004 The NetBSD Foundation, Inc.
@@ -48,11 +48,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
@@ -109,7 +105,7 @@ __COPYRIGHT("@(#) Copyright (c) 1985, 1989, 1993, 1994\n\
#if 0
static char sccsid[] = "@(#)main.c 8.6 (Berkeley) 10/9/94";
#else
-__RCSID("$NetBSD: main.c,v 1.2 2004/07/27 10:25:09 grant Exp $");
+__RCSID("$NetBSD: main.c,v 1.3 2005/01/04 23:44:24 lukem Exp $");
#endif
#endif /* not lint */
#endif
@@ -213,9 +209,14 @@ main(int argc, char *argv[])
(void)close(s);
/* sanity check returned buffer sizes */
if (rcvbuf_size <= 0)
- rcvbuf_size = 8192;
+ rcvbuf_size = 8 * 1024;
if (sndbuf_size <= 0)
- sndbuf_size = 8192;
+ sndbuf_size = 8 * 1024;
+
+ if (sndbuf_size > 8 * 1024 * 1024)
+ sndbuf_size = 8 * 1024 * 1024;
+ if (rcvbuf_size > 8 * 1024 * 1024)
+ rcvbuf_size = 8 * 1024 * 1024;
marg_sl = xsl_init();
if ((tmpdir = getenv("TMPDIR")) == NULL)
@@ -1028,8 +1029,8 @@ usage(void)
const char *progname = getprogname();
(void)fprintf(stderr,
-"usage: %s [-46AadefginpRtvV] [-N netrc] [-o outfile] [-P port] [-r retry]\n"
-" [-T dir,max[,inc][[user@]host [port]]] [host:path[/]]\n"
+"usage: %s [-46AadefginpRtvV] [-N netrc] [-o outfile] [-P port] [-q quittime]\n"
+" [-r retry] [-T dir,max[,inc][[user@]host [port]]] [host:path[/]]\n"
" [file:///file] [ftp://[user[:pass]@]host[:port]/path[/]]\n"
" [http://[user[:pass]@]host[:port]/path] [...]\n"
" %s -u URL file [...]\n", progname, progname);
diff --git a/net/tnftp/files/src/progressbar.c b/net/tnftp/files/src/progressbar.c
index 7742a4569c0..911f0b13c53 100644
--- a/net/tnftp/files/src/progressbar.c
+++ b/net/tnftp/files/src/progressbar.c
@@ -1,4 +1,4 @@
-/* $NetBSD: progressbar.c,v 1.2 2004/03/11 13:47:35 grant Exp $ */
+/* $NetBSD: progressbar.c,v 1.3 2005/01/04 23:44:24 lukem Exp $ */
/*-
* Copyright (c) 1997-2003 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
#if 0
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: progressbar.c,v 1.2 2004/03/11 13:47:35 grant Exp $");
+__RCSID("$NetBSD: progressbar.c,v 1.3 2005/01/04 23:44:24 lukem Exp $");
#endif /* not lint */
#endif
@@ -197,6 +197,8 @@ progressmeter(int flag)
return;
len += snprintf(buf + len, BUFLEFT, "\r");
+ if (prefix)
+ len += snprintf(buf + len, BUFLEFT, "%s", prefix);
if (filesize > 0) {
ratio = (int)((double)cursize * 100.0 / (double)filesize);
ratio = MAX(ratio, 0);
@@ -208,6 +210,8 @@ progressmeter(int flag)
* the number of stars won't exceed the buffer size
*/
barlength = MIN(sizeof(buf) - 1, ttywidth) - BAROVERHEAD;
+ if (prefix)
+ barlength -= strlen(prefix);
if (barlength > 0) {
i = barlength * ratio / 100;
len += snprintf(buf + len, BUFLEFT,
diff --git a/net/tnftp/files/src/progressbar.h b/net/tnftp/files/src/progressbar.h
index 9aa14147ec1..6fa94e4ef80 100644
--- a/net/tnftp/files/src/progressbar.h
+++ b/net/tnftp/files/src/progressbar.h
@@ -1,4 +1,4 @@
-/* $NetBSD: progressbar.h,v 1.1.1.2 2005/01/03 10:08:40 lukem Exp $ */
+/* $NetBSD: progressbar.h,v 1.2 2005/01/04 23:44:24 lukem Exp $ */
/*-
* Copyright (c) 1996-2003 The NetBSD Foundation, Inc.
diff --git a/net/tnftp/files/src/ruserpass.c b/net/tnftp/files/src/ruserpass.c
index 188c9be86d1..07c3df9c737 100644
--- a/net/tnftp/files/src/ruserpass.c
+++ b/net/tnftp/files/src/ruserpass.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ruserpass.c,v 1.1.1.2 2005/01/03 10:08:40 lukem Exp $ */
+/* $NetBSD: ruserpass.c,v 1.2 2005/01/04 23:44:24 lukem Exp $ */
/*
* Copyright (c) 1985, 1993, 1994
diff --git a/net/tnftp/files/src/util.c b/net/tnftp/files/src/util.c
index f51f23e1792..ba66f4cd2aa 100644
--- a/net/tnftp/files/src/util.c
+++ b/net/tnftp/files/src/util.c
@@ -1,7 +1,7 @@
-/* $NetBSD: util.c,v 1.2 2004/07/27 10:25:09 grant Exp $ */
+/* $NetBSD: util.c,v 1.3 2005/01/04 23:44:24 lukem Exp $ */
/*-
- * Copyright (c) 1997-2004 The NetBSD Foundation, Inc.
+ * Copyright (c) 1997-2005 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -52,11 +52,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
@@ -76,7 +72,7 @@
#if 0
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: util.c,v 1.2 2004/07/27 10:25:09 grant Exp $");
+__RCSID("$NetBSD: util.c,v 1.3 2005/01/04 23:44:24 lukem Exp $");
#endif /* not lint */
#endif
@@ -464,7 +460,8 @@ ftp_login(const char *host, const char *user, const char *pass)
break;
}
}
- updateremotepwd();
+ updatelocalcwd();
+ updateremotecwd();
cleanup_ftp_login:
if (user != NULL && freeuser)
@@ -759,10 +756,23 @@ remotemodtime(const char *file, int noisy)
}
/*
- * update global `remotepwd', which contains the state of the remote cwd
+ * Update global `localcwd', which contains the state of the local cwd
*/
void
-updateremotepwd(void)
+updatelocalcwd(void)
+{
+
+ if (getcwd(localcwd, sizeof(localcwd)) == NULL)
+ localcwd[0] = '\0';
+ if (debug)
+ fprintf(ttyout, "got localcwd as `%s'\n", localcwd);
+}
+
+/*
+ * Update global `remotecwd', which contains the state of the remote cwd
+ */
+void
+updateremotecwd(void)
{
int overbose, ocode, i;
char *cp;
@@ -772,31 +782,55 @@ updateremotepwd(void)
if (debug == 0)
verbose = -1;
if (command("PWD") != COMPLETE)
- goto badremotepwd;
+ goto badremotecwd;
cp = strchr(reply_string, ' ');
if (cp == NULL || cp[0] == '\0' || cp[1] != '"')
- goto badremotepwd;
+ goto badremotecwd;
cp += 2;
- for (i = 0; *cp && i < sizeof(remotepwd) - 1; i++, cp++) {
+ for (i = 0; *cp && i < sizeof(remotecwd) - 1; i++, cp++) {
if (cp[0] == '"') {
if (cp[1] == '"')
cp++;
else
break;
}
- remotepwd[i] = *cp;
+ remotecwd[i] = *cp;
}
- remotepwd[i] = '\0';
+ remotecwd[i] = '\0';
if (debug)
- fprintf(ttyout, "got remotepwd as `%s'\n", remotepwd);
- goto cleanupremotepwd;
- badremotepwd:
- remotepwd[0]='\0';
- cleanupremotepwd:
+ fprintf(ttyout, "got remotecwd as `%s'\n", remotecwd);
+ goto cleanupremotecwd;
+ badremotecwd:
+ remotecwd[0]='\0';
+ cleanupremotecwd:
verbose = overbose;
code = ocode;
}
+/*
+ * Ensure file is in or under dir.
+ * Returns 1 if so, 0 if not (or an error occurred).
+ */
+int
+fileindir(const char *file, const char *dir)
+{
+ char realfile[PATH_MAX+1];
+ size_t dirlen;
+
+ if (realpath(file, realfile) == NULL) {
+ warn("Unable to determine real path of `%s'", file);
+ return 0;
+ }
+ if (realfile[0] != '/') /* relative result */
+ return 1;
+ dirlen = strlen(dir);
+#if 0
+printf("file %s realfile %s dir %s [%d]\n", file, realfile, dir, dirlen);
+#endif
+ if (strncmp(realfile, dir, dirlen) == 0 && realfile[dirlen] == '/')
+ return 1;
+ return 0;
+}
/*
* List words in stringlist, vertically arranged
@@ -1043,7 +1077,7 @@ formatbuf(char *buf, size_t len, const char *src)
case '/':
case '.':
case 'c':
- p2 = connected ? remotepwd : "";
+ p2 = connected ? remotecwd : "";
updirs = pdirs = 0;
/* option to determine fixed # of dirs from path */
@@ -1190,14 +1224,29 @@ isipv6addr(const char *addr)
/*
- * Internal version of connect(2); sets socket buffer sizes first.
+ * Internal version of connect(2); sets socket buffer sizes first and
+ * handles the syscall being interrupted.
+ * Returns -1 upon failure (with errno set to the problem), or 0 on success.
*/
int
xconnect(int sock, const struct sockaddr *name, int namelen)
{
+ int rv;
setupsockbufsize(sock);
- return (connect(sock, name, namelen));
+ rv = connect(sock, name, namelen);
+ if (rv == -1 && errno == EINTR) {
+ fd_set connfd;
+
+ FD_ZERO(&connfd);
+ FD_SET(sock, &connfd);
+ do {
+ rv = select(sock + 1, NULL, &connfd, NULL, NULL);
+ } while (rv == -1 && errno == EINTR);
+ if (rv > 0)
+ rv = 0;
+ }
+ return (rv);
}
/*
diff --git a/net/tnftp/files/src/version.h b/net/tnftp/files/src/version.h
index 273fb39d6e2..c9f141db3f3 100644
--- a/net/tnftp/files/src/version.h
+++ b/net/tnftp/files/src/version.h
@@ -1,4 +1,4 @@
-/* $NetBSD: version.h,v 1.1.1.2 2005/01/03 09:50:10 lukem Exp $ */
+/* $NetBSD: version.h,v 1.2 2005/01/04 23:44:24 lukem Exp $ */
/*-
* Copyright (c) 1999-2005 The NetBSD Foundation, Inc.
* All rights reserved.
diff --git a/net/tnftp/files/tnftp.h b/net/tnftp/files/tnftp.h
index 712b06c94e1..6c5100644a8 100644
--- a/net/tnftp/files/tnftp.h
+++ b/net/tnftp/files/tnftp.h
@@ -1,7 +1,7 @@
-/* $Id: tnftp.h,v 1.3 2004/05/16 23:14:17 heinz Exp $ */
+/* $Id: tnftp.h,v 1.4 2005/01/04 23:44:24 lukem Exp $ */
#define FTP_PRODUCT "tnftp"
-#define FTP_VERSION "20030825"
+#define FTP_VERSION "20050103"
#include "config.h"
diff --git a/net/tnftp/files/todo b/net/tnftp/files/todo
index 2a79f98b426..5de6fcf4d8b 100644
--- a/net/tnftp/files/todo
+++ b/net/tnftp/files/todo
@@ -1,4 +1,4 @@
-$Id: todo,v 1.1.1.2 2004/04/15 03:15:15 lukem Exp $
+$Id: todo,v 1.2 2005/01/04 23:44:24 lukem Exp $
Current Items
-------------