Merge tnftp-20100108 from the vendor branch into head.
PR: bin/112288 bin/120256 bin/129014 bin/145528 MFC after: 1 month
This commit is contained in:
commit
53f276e3d4
@ -1,47 +0,0 @@
|
|||||||
Copyright 1999, 2000 Luke Mewburn <lukem@netbsd.org>. All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
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 Luke Mewburn.
|
|
||||||
4. The name of the author may not be used to endorse or promote products
|
|
||||||
derived from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
||||||
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
|
||||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
|
||||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
This product also contains software developed by other people, and you
|
|
||||||
are advised to read the various source files to read the full details
|
|
||||||
of the other licenses. Those licenses also require the following
|
|
||||||
acknowledgements:
|
|
||||||
|
|
||||||
This product includes software developed by the NetBSD Foundation,
|
|
||||||
Inc. and its contributors. Those contributors include:
|
|
||||||
- Jaromir Dolecek
|
|
||||||
- Klaus Klein
|
|
||||||
- Luke Mewburn
|
|
||||||
- Jason R. Thorpe of the Numerical Aerospace Simulation
|
|
||||||
Facility, NASA Ames Research Center.
|
|
||||||
|
|
||||||
This product includes software developed by the University of
|
|
||||||
California, Berkeley and its contributors. Those contributors include:
|
|
||||||
- Christos Zoulas of Cornell University.
|
|
||||||
- Guido van Rossum.
|
|
||||||
|
|
||||||
This product includes software developed by Christos Zoulas.
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,64 +0,0 @@
|
|||||||
diff -ru src.orig/cmds.c src/cmds.c
|
|
||||||
--- src.orig/cmds.c Sun Jun 15 22:11:43 2003
|
|
||||||
+++ src/cmds.c Sun Jun 15 21:46:37 2003
|
|
||||||
@@ -131,6 +131,7 @@
|
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
+#include <libutil.h>
|
|
||||||
|
|
||||||
#include "ftp_var.h"
|
|
||||||
#include "version.h"
|
|
||||||
diff -ru src.orig/fetch.c src/fetch.c
|
|
||||||
--- src.orig/fetch.c Sun Jun 15 22:11:43 2003
|
|
||||||
+++ src/fetch.c Sun Jun 15 21:46:53 2003
|
|
||||||
@@ -69,6 +69,7 @@
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <time.h>
|
|
||||||
+#include <libutil.h>
|
|
||||||
|
|
||||||
#include "ftp_var.h"
|
|
||||||
#include "version.h"
|
|
||||||
Only in src: ftp.cat1
|
|
||||||
diff -ru src.orig/progressbar.c src/progressbar.c
|
|
||||||
--- src.orig/progressbar.c Sun Jun 15 22:11:43 2003
|
|
||||||
+++ src/progressbar.c Sun Jun 15 21:50:48 2003
|
|
||||||
@@ -50,6 +50,7 @@
|
|
||||||
*/
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/param.h>
|
|
||||||
+#include <sys/time.h>
|
|
||||||
|
|
||||||
#include <err.h>
|
|
||||||
#include <errno.h>
|
|
||||||
@@ -57,10 +58,12 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <time.h>
|
|
||||||
-#include <tzfile.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "progressbar.h"
|
|
||||||
+
|
|
||||||
+#define SECSPERHOUR (60 * 60)
|
|
||||||
+#define SECSPERDAY ((long)60 * 60 * 24)
|
|
||||||
|
|
||||||
#if !defined(NO_PROGRESS)
|
|
||||||
/*
|
|
||||||
diff -ru src.orig/util.c src/util.c
|
|
||||||
--- src.orig/util.c Sun Jun 15 22:11:44 2003
|
|
||||||
+++ src/util.c Sun Jun 15 21:51:31 2003
|
|
||||||
@@ -101,10 +101,11 @@
|
|
||||||
#include <string.h>
|
|
||||||
#include <termios.h>
|
|
||||||
#include <time.h>
|
|
||||||
-#include <tzfile.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "ftp_var.h"
|
|
||||||
+
|
|
||||||
+#define TM_YEAR_BASE 1900
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Connect to peer server and auto-login, if possible.
|
|
@ -1,211 +0,0 @@
|
|||||||
INSTALLATION INTRODUCTION
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
This file describes how to compile and install lukemftp on your
|
|
||||||
system.
|
|
||||||
|
|
||||||
============================================
|
|
||||||
= =
|
|
||||||
= NOTE: You will need an ANSI C compiler. =
|
|
||||||
= =
|
|
||||||
============================================
|
|
||||||
|
|
||||||
|
|
||||||
For most systems, execute the following to compile and install
|
|
||||||
lukemftp:
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
A preformatted manual page (src/ftp.cat1) is also installed. If
|
|
||||||
you wish to install the source (src/ftp.1), ensure that your system
|
|
||||||
has up-to-date mandoc macros. groff ships with this macro suite,
|
|
||||||
but it has bugs. Try:
|
|
||||||
ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/share/tmac/
|
|
||||||
for a more recent version.
|
|
||||||
|
|
||||||
|
|
||||||
CONFIGURATION OPTIONS
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
lukemftp is configured using an `autoconf' generated `configure'
|
|
||||||
script. `configure' supports the following options:
|
|
||||||
|
|
||||||
* The standard `autoconf configure' options, including:
|
|
||||||
--prefix=PREFIX install architecture-independent files in PREFIX
|
|
||||||
[/usr/local]
|
|
||||||
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
|
|
||||||
[same as prefix]
|
|
||||||
--srcdir=DIR find the sources in DIR [configure dir or ..]
|
|
||||||
BSD or GNU make may be required for this to work.
|
|
||||||
|
|
||||||
* Specific options:
|
|
||||||
--enable-editcomplete Turn on command line editing and completion.
|
|
||||||
--disable-editcomplete Turn off command line editing and completion
|
|
||||||
[default: enabled].
|
|
||||||
--enable-ipv6 Enable IPv6 support (if your OS supports it)
|
|
||||||
--disable-ipv6 Disable IPv6 support (even if your OS supports it.)
|
|
||||||
[default: enabled].
|
|
||||||
--with-socks Compile with SOCKS firewall traversal support.
|
|
||||||
--with-socks5[=PATH] Compile with SOCKS5 firewall traversal support.
|
|
||||||
--with-socks4[=PATH] Compile with SOCKS4 firewall traversal support.
|
|
||||||
|
|
||||||
The following environment variables can be set to override various
|
|
||||||
compiler related settings.
|
|
||||||
CC=compiler specify name of the C compiler (default: gcc or cc)
|
|
||||||
CFLAGS=flags specify flags to C compiler (default: -O -g or just -O)
|
|
||||||
LDFLAGS=flags specify flags to linker (default: none)
|
|
||||||
|
|
||||||
This can be achieved with:
|
|
||||||
env CC="compiler" CFLAGS="flags" LDFLAGS="flags" ./configure
|
|
||||||
|
|
||||||
|
|
||||||
============================================
|
|
||||||
= =
|
|
||||||
= NOTE: You will need an ANSI C compiler. =
|
|
||||||
= =
|
|
||||||
============================================
|
|
||||||
|
|
||||||
|
|
||||||
PLATFORM SPECIFIC NOTES
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
The following platforms & compilers have been tested:
|
|
||||||
|
|
||||||
- AIX 4.1.5:
|
|
||||||
- AIX 4.2.1:
|
|
||||||
- AIX 4.3.3:
|
|
||||||
- Compiler: xlc -qlanglvl=ansi
|
|
||||||
version: xlC 3.1.4.10 -- C for AIX Compiler
|
|
||||||
version: ibmcxx.cmp 3.6.6.6 -- IBM C and C++ Compilers
|
|
||||||
|
|
||||||
Configure with:
|
|
||||||
env CC="xlc" CFLAGS="-qlanglvl=ansi" ./configure
|
|
||||||
|
|
||||||
- BSD/OS 4.0.1 (x86)
|
|
||||||
- BSD/OS 4.1 (x86)
|
|
||||||
- BSD/OS 4.1 (sparc)
|
|
||||||
- BSD/OS 4.2 (x86)
|
|
||||||
- Compiler: /bin/cc
|
|
||||||
version: gcc 2.7.2.1
|
|
||||||
version: gcc version 2.95.2 19991024
|
|
||||||
|
|
||||||
- Digital UNIX 4.0b
|
|
||||||
- Digital UNIX 4.0d
|
|
||||||
- Digital UNIX 4.0f
|
|
||||||
- Compiler: cc -std
|
|
||||||
version: DEC C V5.2-036 on Digital UNIX V4.0 (Rev. 564)
|
|
||||||
version: DEC C V5.9-005 on Digital UNIX V4.0 (Rev. 1229)
|
|
||||||
|
|
||||||
Configure with
|
|
||||||
env CC="cc -std" ./configure
|
|
||||||
|
|
||||||
- Compiler: gcc
|
|
||||||
version: 2.95.1
|
|
||||||
|
|
||||||
- Digital UNIX 5.0
|
|
||||||
- Compiler: cc
|
|
||||||
version: Compaq C V6.1-011 on Digital UNIX V5.0 (Rev. 910)
|
|
||||||
|
|
||||||
- FreeBSD 3.4 (i386):
|
|
||||||
- FreeBSD 3.5 (i386):
|
|
||||||
- FreeBSD 4.1 (i386):
|
|
||||||
- Compiler: cc
|
|
||||||
version: gcc version 2.7.2.3
|
|
||||||
version: gcc version 2.95.2 19991024
|
|
||||||
|
|
||||||
- HP/UX 10.20:
|
|
||||||
- HP/UX 11.00:
|
|
||||||
- Compiler: /opt/ansic/bin/cc -Ae
|
|
||||||
version: A.10.32.03
|
|
||||||
|
|
||||||
Configure with
|
|
||||||
env CC="cc -Ae" ./configure
|
|
||||||
|
|
||||||
To generate code that will run on old architectures you
|
|
||||||
may need to add "+DAportable" to CC.
|
|
||||||
|
|
||||||
|
|
||||||
- IRIX 6.5.4
|
|
||||||
- IRIX 6.5.8
|
|
||||||
Compiler: /bin/cc
|
|
||||||
version: MIPSpro Compilers: Version 7.2.1
|
|
||||||
Compiler:
|
|
||||||
version: gcc version 2.95.2
|
|
||||||
|
|
||||||
- HP/UX 11.00:
|
|
||||||
- HP/UX 11.00 64 bit:
|
|
||||||
- Compiler: /opt/ansic/bin/cc -Ae
|
|
||||||
version: A.11.01.00
|
|
||||||
|
|
||||||
Configure with
|
|
||||||
env CC="cc -Ae" ./configure
|
|
||||||
|
|
||||||
- NetBSD 1.3.3 (i386)
|
|
||||||
Compiler: /usr/bin/cc
|
|
||||||
Compiler: /usr/bin/cc
|
|
||||||
|
|
||||||
Ignore warnings about ``passing arg 3 of `tputs' from
|
|
||||||
incompatible pointer type''.
|
|
||||||
|
|
||||||
- RedHat Linux 5.1 (?? i386)
|
|
||||||
- RedHat Linux 5.2 (?? i386)
|
|
||||||
- RedHat Linux 6.0 (Linux 2.2.10 i686)
|
|
||||||
- RedHat Linux 6.1 (Linux 2.2.5-15 i686)
|
|
||||||
- RedHat Linux 6.2 (Linux 2.2.16-3smp i686)
|
|
||||||
- Compiler: cc
|
|
||||||
version: egcs-1.1.2
|
|
||||||
|
|
||||||
- Slackware (Linux 2.0.35 i686)
|
|
||||||
- Compiler: cc
|
|
||||||
version: 2.7.2.3
|
|
||||||
|
|
||||||
- Solaris 2.6 (sparc)
|
|
||||||
- Solaris 7 (sparc)
|
|
||||||
- Compiler: /opt/SUNWspro/bin/cc
|
|
||||||
version: WorkShop Compilers 5.0
|
|
||||||
|
|
||||||
- Compiler: gcc
|
|
||||||
version: egcs-1.1.2
|
|
||||||
|
|
||||||
=============
|
|
||||||
= OLD NOTES =
|
|
||||||
=============
|
|
||||||
|
|
||||||
XXX: clean up to match reality
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
- RedHat Linux 5.0 (i386)
|
|
||||||
Compiler: cc
|
|
||||||
|
|
||||||
- Solaris 2.5 (sparc)
|
|
||||||
- Solaris 7 (x86)
|
|
||||||
Compiler: /opt/SUNWspro/bin/cc
|
|
||||||
version: SC3.0 15 Dec 1993
|
|
||||||
version: WorkShop Compilers 5.0
|
|
||||||
Compiler: gcc
|
|
||||||
version: egcs-1.1.2
|
|
||||||
version: gcc 2.8.1
|
|
||||||
version: gcc 2.95.1
|
|
||||||
|
|
||||||
- Solaris 7 (sparc) 64 bit
|
|
||||||
Compiler: /opt/SUNWspro/bin/cc -xarch=v9
|
|
||||||
version: WorkShop Compilers 5.0
|
|
||||||
|
|
||||||
- SunOS 4
|
|
||||||
Compiler: gcc -lresolv
|
|
||||||
version:
|
|
||||||
|
|
||||||
- SuSE Linux
|
|
||||||
Compiler: gcc
|
|
||||||
version:
|
|
||||||
|
|
||||||
/usr/bin/ftp on SuSE Linux 6.4 is this ftp client.
|
|
||||||
|
|
||||||
May need `gcc -L/usr/lib/termcap' if tgetent() et al aren't found.
|
|
||||||
|
|
||||||
- Ultrix 4.5
|
|
||||||
Compiler: cc
|
|
||||||
version: MIPS C Compiler 3.0
|
|
||||||
Compiler: gcc
|
|
||||||
version: 2.7.2.2
|
|
@ -1,33 +0,0 @@
|
|||||||
# $Id: Makefile.in,v 1.6 1999/11/13 01:18:22 lukem Exp $
|
|
||||||
#
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
SHELL = /bin/sh
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
|
|
||||||
|
|
||||||
SUBDIRS = libedit libukem src
|
|
||||||
|
|
||||||
all: ftp
|
|
||||||
|
|
||||||
ftp: @LIBEDIT@ @LIBUKEM@
|
|
||||||
( cd src; ${MAKE} )
|
|
||||||
|
|
||||||
libedit.a:
|
|
||||||
( cd libedit; ${MAKE} )
|
|
||||||
|
|
||||||
libukem.a:
|
|
||||||
( cd libukem; ${MAKE} )
|
|
||||||
|
|
||||||
install clean:
|
|
||||||
@for i in ${SUBDIRS}; do \
|
|
||||||
( echo "$@ ===> $$i" ; cd $$i ; ${MAKE} $@ ); \
|
|
||||||
done
|
|
||||||
|
|
||||||
distclean: clean
|
|
||||||
@for i in ${SUBDIRS}; do \
|
|
||||||
( echo "$@ ===> $$i" ; cd $$i ; ${MAKE} $@ ); \
|
|
||||||
done
|
|
||||||
rm -f Makefile config.cache config.log config.status config.h
|
|
@ -1,84 +0,0 @@
|
|||||||
This is a brief description of the new features and fixes added to
|
|
||||||
lukemftp-1.5 since the release of lukemftp-1.4. As always, the manual
|
|
||||||
page (src/ftp.cat1) is the place to look for complete descriptions.
|
|
||||||
|
|
||||||
* Add new commands:
|
|
||||||
features list remote features supported by servers
|
|
||||||
mlsd machine parseable directory listing
|
|
||||||
mlst machine parseable file listing
|
|
||||||
remopts set options on remote features
|
|
||||||
|
|
||||||
These require support in the remote server for the ftp extensions
|
|
||||||
described in RFC 2389 and draft-ietf-ftpext-mlst-11.
|
|
||||||
|
|
||||||
* Fix support for the --program-prefix and --program-suffix configure
|
|
||||||
options.
|
|
||||||
|
|
||||||
---
|
|
||||||
This is a brief description of the new features and fixes added to
|
|
||||||
lukemftp-1.4 since the release of lukemftp-1.3. As always, the manual
|
|
||||||
page (src/ftp.cat1) is the place to look for complete descriptions.
|
|
||||||
|
|
||||||
* Fix compilation problems on various non 4.4BSD derived platforms which
|
|
||||||
support IPv6, and on Linux systems which have strdup() as a macro.
|
|
||||||
|
|
||||||
* During auto-fetch, don't attempt to autologin a second time if the first
|
|
||||||
time failed.
|
|
||||||
|
|
||||||
---
|
|
||||||
This is a brief description of the new features and fixes added to
|
|
||||||
lukemftp-1.3 since the release of lukemftp-1.2. As always, the manual
|
|
||||||
page (src/ftp.cat1) is the place to look for complete descriptions.
|
|
||||||
|
|
||||||
* The `ls' command now uses the `LIST' directive instead of `NLST',
|
|
||||||
in order to be compatible with RFC959.
|
|
||||||
|
|
||||||
* Add fget command, which reads a list of filenames to retrieve from
|
|
||||||
the given file.
|
|
||||||
|
|
||||||
* Add support for uploading files on the command-line with `ftp -u'.
|
|
||||||
|
|
||||||
* Various fixes to the IPv6 support.
|
|
||||||
|
|
||||||
---
|
|
||||||
This is a brief description of the new features and fixes added to
|
|
||||||
lukemftp-1.2 since the release of lukemftp-1.1. As always, the manual
|
|
||||||
page (src/ftp.cat1) is the place to look for complete descriptions.
|
|
||||||
|
|
||||||
* During remote completion, only send ``NLST'' instead of ``NLST .''
|
|
||||||
when reading the list of files from the remote server; some servers
|
|
||||||
don't like the trailing `.'.
|
|
||||||
|
|
||||||
* Support a leading ``[user@]'' for ``[user@]host[:][path]'' auto-fetches
|
|
||||||
and ``[user@]host'' connections.
|
|
||||||
|
|
||||||
* Always compile in support for setting the type of service on transfers.
|
|
||||||
Should speed up transfers on Linux systems.
|
|
||||||
|
|
||||||
* Improve performance of non-rate-limited transfers.
|
|
||||||
|
|
||||||
* Work around ftp servers that aren't Y2K compliant in returning the
|
|
||||||
modification time of a file.
|
|
||||||
|
|
||||||
* Update the libedit library to support automatic and magic margins,
|
|
||||||
allowing ftp's rprompt to move an extra character to the right.
|
|
||||||
|
|
||||||
---
|
|
||||||
This is a brief description of the new features and fixes added to
|
|
||||||
lukemftp-1.1 since the release of lukemftp-1.0. As always, the manual
|
|
||||||
page (src/ftp.cat1) is the place to look for complete descriptions.
|
|
||||||
|
|
||||||
* Implemented `set prompt' and `set rprompt', which allow you to
|
|
||||||
configure the prompt and right side prompt (respectively).
|
|
||||||
Some tcsh(1) style `%' escapes are supported, including
|
|
||||||
%. %c %/ %m %M %n
|
|
||||||
|
|
||||||
* Implemented restarting of file:/// and non-proxied http:// URLs
|
|
||||||
(using -R)
|
|
||||||
|
|
||||||
* Correctly parse remote ports given as numbers that don't appear in
|
|
||||||
the services(5) database.
|
|
||||||
|
|
||||||
* Prevent a couple of minor memory leaks
|
|
||||||
|
|
||||||
* Add missing compilation setting for SOCKS
|
|
@ -1,61 +0,0 @@
|
|||||||
WHAT IS LUKEMFTP?
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
`lukemftp' is what many users affectionately call the enhanced ftp
|
|
||||||
client in NetBSD (http://www.netbsd.org). The `lukem' comes from
|
|
||||||
the account name of the NetBSD developer who wrote most of the
|
|
||||||
enhancements: Luke Mewburn <lukem@netbsd.org>.
|
|
||||||
|
|
||||||
This package is a `port' of the NetBSD ftp client to other systems.
|
|
||||||
|
|
||||||
The enhancements over the standard ftp client in 4.4BSD (and
|
|
||||||
derivatives) include:
|
|
||||||
* command-line editing within ftp
|
|
||||||
* command-line fetching of URLS, including support for:
|
|
||||||
- http proxies (c.f: $http_proxy, $ftp_proxy)
|
|
||||||
- authentication
|
|
||||||
* configurable prompt
|
|
||||||
* context sensitive command and filename completion
|
|
||||||
* dynamic progress bar
|
|
||||||
* feature negotiation extensions from RFC 2389
|
|
||||||
(c.f: `feat' and `remopts')
|
|
||||||
* extensions to ftp from the IETF ftpext working group
|
|
||||||
(c.f: `mlsd' and `mlst')
|
|
||||||
* IPv6 support (from the WIDE project)
|
|
||||||
* modification time preservation
|
|
||||||
* paging of local and remote files, and of directory listings
|
|
||||||
(c.f: `lpage', `page', `pdir')
|
|
||||||
* passive mode support, with fallback to active mode
|
|
||||||
* retrieval of filenames listed in a given file (c.f: `fget')
|
|
||||||
* `set option' override of ftp environment variables
|
|
||||||
* socks4/socks5 support
|
|
||||||
* TIS Firewall Toolkit gate ftp proxy support (c.f: `gate')
|
|
||||||
* transfer-rate throttling (c.f: `-T', `rate')
|
|
||||||
* uploading of files on the command line (c.f: `-u')
|
|
||||||
|
|
||||||
|
|
||||||
INSTALLATION
|
|
||||||
------------
|
|
||||||
|
|
||||||
Refer to `INSTALL' for more information on how to compile and install
|
|
||||||
lukemftp.
|
|
||||||
|
|
||||||
|
|
||||||
FEEDBACK / BUG REPORTS
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Please email feedback back to the maintainer: <lukem@netbsd.org>.
|
|
||||||
|
|
||||||
|
|
||||||
COPYRIGHT
|
|
||||||
---------
|
|
||||||
|
|
||||||
lukemftp is covered by a BSD-style copyright notice. Please refer to
|
|
||||||
the file `COPYING' for more information.
|
|
||||||
|
|
||||||
|
|
||||||
AVAILABILITY
|
|
||||||
------------
|
|
||||||
|
|
||||||
The primary ftp site for lukemftp is:
|
|
||||||
ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/
|
|
@ -1,30 +0,0 @@
|
|||||||
Whilst a lot of the work in lukemftp (both the original sources in NetBSD
|
|
||||||
and this port) was done by me (Luke Mewburn), it would not be as useable
|
|
||||||
without the enhancements, fixes, or input from the following people:
|
|
||||||
|
|
||||||
Brian Stark <bstark1990@netscape.net>
|
|
||||||
Chris G. Demetriou <cgd@netbsd.org>
|
|
||||||
Christos Zoulas <christos@netbsd.org>
|
|
||||||
Dan Winship <danw@mit.edu>
|
|
||||||
Darren Reed <darrenr@pobox.com>
|
|
||||||
David Carrel <carrel@netbsd.org>
|
|
||||||
Giles Lean <giles@nemeton.com.au>
|
|
||||||
Havard Eidnes <Havard.Eidnes@runit.sintef.no>
|
|
||||||
ITOH Yasufumi <itohy@netbsd.org>
|
|
||||||
Jason R. Thorpe <thorpej@netbsd.org>
|
|
||||||
John Hawkinson <jhawk@mit.edu>
|
|
||||||
Joseph S. Myers <jsm28@cam.ac.uk>
|
|
||||||
Jun-ichiro itojun Hagino <itojun@netbsd.org>
|
|
||||||
Kimmo Suominen <kim@tac.nyc.ny.us>
|
|
||||||
Klaus Klein <kleink@netbsd.org>
|
|
||||||
Luke Mewburn <lukem@netbsd.org>
|
|
||||||
Marc Horowitz <marc@mit.edu>
|
|
||||||
Matthew R. Green <mrg@eterna.com.au>
|
|
||||||
Matthias Pfaller <leo@dachau.marco.de>
|
|
||||||
Matthias Scheler <tron@zhadum.de>
|
|
||||||
Michael L. Hitch <osymh@terra.oscs.montana.edu>
|
|
||||||
Scott Aaron Bamford <sab@ansic.net>
|
|
||||||
Simon Burge <simonb@thistledown.com.au>
|
|
||||||
Todd C. Miller <Todd.Miller@courtesan.com>
|
|
||||||
|
|
||||||
Apologies to anyone I've missed.
|
|
@ -1,92 +0,0 @@
|
|||||||
/* $Id: acconfig.h,v 1.9 2002/06/10 01:27:13 lukem Exp $ */
|
|
||||||
|
|
||||||
@TOP@
|
|
||||||
@BOTTOM@
|
|
||||||
|
|
||||||
/* Define if your compiler supports `long long' */
|
|
||||||
#undef HAVE_LONG_LONG
|
|
||||||
|
|
||||||
/* Define if *printf() uses %qd to print `long long' (otherwise uses %lld) */
|
|
||||||
#undef HAVE_PRINTF_QD
|
|
||||||
|
|
||||||
/* Define if in_port_t exists */
|
|
||||||
#undef HAVE_IN_PORT_T
|
|
||||||
|
|
||||||
/* Define if sa_family_t exists in <sys/socket.h> */
|
|
||||||
#undef HAVE_SA_FAMILY_T
|
|
||||||
|
|
||||||
/* Define if struct sockaddr.sa_len exists (implies sockaddr_in.sin_len, etc) */
|
|
||||||
#undef HAVE_SOCKADDR_SA_LEN
|
|
||||||
|
|
||||||
/* Define if socklen_t exists */
|
|
||||||
#undef HAVE_SOCKLEN_T
|
|
||||||
|
|
||||||
/* Define if AF_INET6 exists in <sys/socket.h> */
|
|
||||||
#undef HAVE_AF_INET6
|
|
||||||
|
|
||||||
/* Define if `struct sockaddr_in6' exists in <netinet/in.h> */
|
|
||||||
#undef HAVE_SOCKADDR_IN6
|
|
||||||
|
|
||||||
/* Define if `struct addrinfo' exists in <netdb.h> */
|
|
||||||
#undef HAVE_ADDRINFO
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define if <netdb.h> contains AI_NUMERICHOST et al.
|
|
||||||
* Systems which only implement RFC2133 will need this.
|
|
||||||
*/
|
|
||||||
#undef HAVE_RFC2553_NETDB
|
|
||||||
|
|
||||||
/* Define if `struct direct' has a d_namlen element */
|
|
||||||
#undef HAVE_D_NAMLEN
|
|
||||||
|
|
||||||
/* Define if h_errno exists in <netdb.h> */
|
|
||||||
#undef HAVE_H_ERRNO_D
|
|
||||||
|
|
||||||
/* Define if fclose() is declared in <stdio.h> */
|
|
||||||
#undef HAVE_FCLOSE_D
|
|
||||||
|
|
||||||
/* Define if getpass() is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_GETPASS_D
|
|
||||||
|
|
||||||
/* Define if optarg is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_OPTARG_D
|
|
||||||
|
|
||||||
/* Define if optind is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_OPTIND_D
|
|
||||||
|
|
||||||
/* Define if pclose() is declared in <stdio.h> */
|
|
||||||
#undef HAVE_PCLOSE_D
|
|
||||||
|
|
||||||
/* Define if `long long' is supported and sizeof(off_t) >= 8 */
|
|
||||||
#undef HAVE_QUAD_SUPPORT
|
|
||||||
|
|
||||||
/* Define if strptime() is declared in <time.h> */
|
|
||||||
#undef HAVE_STRPTIME_D
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define this if compiling with SOCKS (the firewall traversal library).
|
|
||||||
* Also, you must define connect, getsockname, bind, accept, listen, and
|
|
||||||
* select to their R-versions.
|
|
||||||
*/
|
|
||||||
#undef SOCKS
|
|
||||||
#undef SOCKS4
|
|
||||||
#undef SOCKS5
|
|
||||||
#undef connect
|
|
||||||
#undef getsockname
|
|
||||||
#undef bind
|
|
||||||
#undef accept
|
|
||||||
#undef listen
|
|
||||||
#undef select
|
|
||||||
#undef dup
|
|
||||||
#undef dup2
|
|
||||||
#undef fclose
|
|
||||||
#undef gethostbyname
|
|
||||||
#undef getpeername
|
|
||||||
#undef read
|
|
||||||
#undef recv
|
|
||||||
#undef recvfrom
|
|
||||||
#undef rresvport
|
|
||||||
#undef send
|
|
||||||
#undef sendto
|
|
||||||
#undef shutdown
|
|
||||||
#undef write
|
|
257
contrib/lukemftp/aclocal.m4
vendored
257
contrib/lukemftp/aclocal.m4
vendored
@ -1,257 +0,0 @@
|
|||||||
dnl $Id: aclocal.m4,v 1.5 1999/11/13 10:50:39 lukem Exp $
|
|
||||||
dnl
|
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl AC_MSG_TRY_COMPILE
|
|
||||||
dnl
|
|
||||||
dnl Written by Luke Mewburn <lukem@netbsd.org>
|
|
||||||
dnl
|
|
||||||
dnl Usage:
|
|
||||||
dnl AC_MSG_TRY_COMPILE(Message, CacheVar, Includes, Code,
|
|
||||||
dnl ActionPass [,ActionFail] )
|
|
||||||
dnl
|
|
||||||
dnl effectively does:
|
|
||||||
dnl AC_CACHE_CHECK(Message, CacheVar,
|
|
||||||
dnl AC_TRY_COMPILE(Includes, Code, CacheVar = yes, CacheVar = no)
|
|
||||||
dnl if CacheVar == yes
|
|
||||||
dnl AC_MESSAGE_RESULT(yes)
|
|
||||||
dnl ActionPass
|
|
||||||
dnl else
|
|
||||||
dnl AC_MESSAGE_RESULT(no)
|
|
||||||
dnl ActionFail
|
|
||||||
dnl )
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(AC_MSG_TRY_COMPILE, [
|
|
||||||
AC_CACHE_CHECK($1, $2, [
|
|
||||||
AC_TRY_COMPILE([ $3 ], [ $4; ], [ $2=yes ], [ $2=no ])
|
|
||||||
])
|
|
||||||
if test "x[$]$2" = "xyes"; then
|
|
||||||
$5
|
|
||||||
else
|
|
||||||
$6
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl AC_MSG_TRY_LINK
|
|
||||||
dnl
|
|
||||||
dnl Usage:
|
|
||||||
dnl AC_MSG_TRY_LINK(Message, CacheVar, Includes, Code,
|
|
||||||
dnl ActionPass [,ActionFail] )
|
|
||||||
dnl
|
|
||||||
dnl as AC_MSG_TRY_COMPILE, but uses AC_TRY_LINK instead of AC_TRY_COMPILE
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(AC_MSG_TRY_LINK, [
|
|
||||||
AC_CACHE_CHECK($1, $2, [
|
|
||||||
AC_TRY_LINK([ $3 ], [ $4; ], [ $2=yes ], [ $2=no ])
|
|
||||||
])
|
|
||||||
if test "x[$]$2" = "xyes"; then
|
|
||||||
$5
|
|
||||||
else
|
|
||||||
$6
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl AC_LIBRARY_NET: #Id: net.m4,v 1.5 1997/11/09 21:36:54 jhawk Exp #
|
|
||||||
dnl
|
|
||||||
dnl Written by John Hawkinson <jhawk@mit.edu>. This code is in the Public
|
|
||||||
dnl Domain.
|
|
||||||
dnl
|
|
||||||
dnl This test is for network applications that need socket() and
|
|
||||||
dnl gethostbyname() -ish functions. Under Solaris, those applications need to
|
|
||||||
dnl link with "-lsocket -lnsl". Under IRIX, they should *not* link with
|
|
||||||
dnl "-lsocket" because libsocket.a breaks a number of things (for instance:
|
|
||||||
dnl gethostbyname() under IRIX 5.2, and snoop sockets under most versions of
|
|
||||||
dnl IRIX).
|
|
||||||
dnl
|
|
||||||
dnl Unfortunately, many application developers are not aware of this, and
|
|
||||||
dnl mistakenly write tests that cause -lsocket to be used under IRIX. It is
|
|
||||||
dnl also easy to write tests that cause -lnsl to be used under operating
|
|
||||||
dnl systems where neither are necessary (or useful), such as SunOS 4.1.4, which
|
|
||||||
dnl uses -lnsl for TLI.
|
|
||||||
dnl
|
|
||||||
dnl This test exists so that every application developer does not test this in
|
|
||||||
dnl a different, and subtly broken fashion.
|
|
||||||
dnl
|
|
||||||
dnl It has been argued that this test should be broken up into two seperate
|
|
||||||
dnl tests, one for the resolver libraries, and one for the libraries necessary
|
|
||||||
dnl for using Sockets API. Unfortunately, the two are carefully intertwined and
|
|
||||||
dnl allowing the autoconf user to use them independantly potentially results in
|
|
||||||
dnl unfortunate ordering dependancies -- as such, such component macros would
|
|
||||||
dnl have to carefully use indirection and be aware if the other components were
|
|
||||||
dnl executed. Since other autoconf macros do not go to this trouble, and almost
|
|
||||||
dnl no applications use sockets without the resolver, this complexity has not
|
|
||||||
dnl been implemented.
|
|
||||||
dnl
|
|
||||||
dnl The check for libresolv is in case you are attempting to link statically
|
|
||||||
dnl and happen to have a libresolv.a lying around (and no libnsl.a).
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(AC_LIBRARY_NET, [
|
|
||||||
# Most operating systems have gethostbyname() in the default searched
|
|
||||||
# libraries (i.e. libc):
|
|
||||||
AC_CHECK_FUNC(gethostbyname, ,
|
|
||||||
# Some OSes (eg. Solaris) place it in libnsl:
|
|
||||||
AC_CHECK_LIB(nsl, gethostbyname, ,
|
|
||||||
# Some strange OSes (SINIX) have it in libsocket:
|
|
||||||
AC_CHECK_LIB(socket, gethostbyname, ,
|
|
||||||
# Unfortunately libsocket sometimes depends on libnsl.
|
|
||||||
# AC_CHECK_LIB's API is essentially broken so the following
|
|
||||||
# ugliness is necessary:
|
|
||||||
AC_CHECK_LIB(socket, gethostbyname,
|
|
||||||
LIBS="-lsocket -lnsl $LIBS",
|
|
||||||
AC_CHECK_LIB(resolv, gethostbyname),
|
|
||||||
-lnsl)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
|
|
||||||
AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)))
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for SOCKS firewall support.
|
|
||||||
dnl
|
|
||||||
dnl Written by Matthew R. Green <mrg@eterna.com.au>
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(AC_LIBRARY_SOCKS, [
|
|
||||||
AC_MSG_CHECKING(whether to support SOCKS)
|
|
||||||
AC_ARG_WITH(socks,
|
|
||||||
[ --with-socks Compile with SOCKS firewall traversal support.],
|
|
||||||
[
|
|
||||||
case "$withval" in
|
|
||||||
no)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
;;
|
|
||||||
yes)
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
AC_CHECK_LIB(socks5, SOCKSconnect, [
|
|
||||||
socks=5
|
|
||||||
LIBS="-lsocks5 $LIBS"], [
|
|
||||||
AC_CHECK_LIB(socks, Rconnect, [
|
|
||||||
socks=4
|
|
||||||
LIBS="-lsocks $LIBS"], [
|
|
||||||
AC_MSG_ERROR(Could not find socks library. You must first install socks.) ] ) ] )
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
],
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
)
|
|
||||||
|
|
||||||
if test "x$socks" = "x"; then
|
|
||||||
AC_MSG_CHECKING(whether to support SOCKS5)
|
|
||||||
AC_ARG_WITH(socks5,
|
|
||||||
[ --with-socks5[=PATH] Compile with SOCKS5 firewall traversal support.],
|
|
||||||
[
|
|
||||||
case "$withval" in
|
|
||||||
no)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
socks=5
|
|
||||||
if test "x$withval" = "xyes"; then
|
|
||||||
withval="-lsocks5"
|
|
||||||
else
|
|
||||||
if test -d "$withval"; then
|
|
||||||
if test -d "$withval/include"; then
|
|
||||||
CFLAGS="$CFLAGS -I$withval/include"
|
|
||||||
else
|
|
||||||
CFLAGS="$CFLAGS -I$withval"
|
|
||||||
fi
|
|
||||||
if test -d "$withval/lib"; then
|
|
||||||
withval="-L$withval/lib -lsocks5"
|
|
||||||
else
|
|
||||||
withval="-L$withval -lsocks5"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
LIBS="$withval $LIBS"
|
|
||||||
# If Socks was compiled with Kerberos support, we will need
|
|
||||||
# to link against kerberos libraries. Temporarily append
|
|
||||||
# to LIBS. This is harmless if there is no kerberos support.
|
|
||||||
TMPLIBS="$LIBS"
|
|
||||||
LIBS="$LIBS $KERBEROS_LIBS"
|
|
||||||
AC_TRY_LINK([],
|
|
||||||
[ SOCKSconnect(); ],
|
|
||||||
[],
|
|
||||||
[ AC_MSG_ERROR(Could not find the $withval library. You must first install socks5.) ])
|
|
||||||
LIBS="$TMPLIBS"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
],
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$socks" = "x"; then
|
|
||||||
AC_MSG_CHECKING(whether to support SOCKS4)
|
|
||||||
AC_ARG_WITH(socks4,
|
|
||||||
[ --with-socks4[=PATH] Compile with SOCKS4 firewall traversal support.],
|
|
||||||
[
|
|
||||||
case "$withval" in
|
|
||||||
no)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
socks=4
|
|
||||||
if test "x$withval" = "xyes"; then
|
|
||||||
withval="-lsocks"
|
|
||||||
else
|
|
||||||
if test -d "$withval"; then
|
|
||||||
withval="-L$withval -lsocks"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
LIBS="$withval $LIBS"
|
|
||||||
AC_TRY_LINK([],
|
|
||||||
[ Rconnect(); ],
|
|
||||||
[],
|
|
||||||
[ AC_MSG_ERROR(Could not find the $withval library. You must first install socks.) ])
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
],
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$socks" = "x4"; then
|
|
||||||
AC_DEFINE(SOCKS)
|
|
||||||
AC_DEFINE(SOCKS4)
|
|
||||||
AC_DEFINE(connect, Rconnect)
|
|
||||||
AC_DEFINE(getsockname, Rgetsockname)
|
|
||||||
AC_DEFINE(bind, Rbind)
|
|
||||||
AC_DEFINE(accept, Raccept)
|
|
||||||
AC_DEFINE(listen, Rlisten)
|
|
||||||
AC_DEFINE(select, Rselect)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$socks" = "x5"; then
|
|
||||||
AC_DEFINE(SOCKS)
|
|
||||||
AC_DEFINE(SOCKS5)
|
|
||||||
AC_DEFINE(connect,SOCKSconnect)
|
|
||||||
AC_DEFINE(getsockname,SOCKSgetsockname)
|
|
||||||
AC_DEFINE(getpeername,SOCKSgetpeername)
|
|
||||||
AC_DEFINE(bind,SOCKSbind)
|
|
||||||
AC_DEFINE(accept,SOCKSaccept)
|
|
||||||
AC_DEFINE(listen,SOCKSlisten)
|
|
||||||
AC_DEFINE(select,SOCKSselect)
|
|
||||||
AC_DEFINE(recvfrom,SOCKSrecvfrom)
|
|
||||||
AC_DEFINE(sendto,SOCKSsendto)
|
|
||||||
AC_DEFINE(recv,SOCKSrecv)
|
|
||||||
AC_DEFINE(send,SOCKSsend)
|
|
||||||
AC_DEFINE(read,SOCKSread)
|
|
||||||
AC_DEFINE(write,SOCKSwrite)
|
|
||||||
AC_DEFINE(rresvport,SOCKSrresvport)
|
|
||||||
AC_DEFINE(shutdown,SOCKSshutdown)
|
|
||||||
AC_DEFINE(listen,SOCKSlisten)
|
|
||||||
AC_DEFINE(close,SOCKSclose)
|
|
||||||
AC_DEFINE(dup,SOCKSdup)
|
|
||||||
AC_DEFINE(dup2,SOCKSdup2)
|
|
||||||
AC_DEFINE(fclose,SOCKSfclose)
|
|
||||||
AC_DEFINE(gethostbyname,SOCKSgethostbyname)
|
|
||||||
fi
|
|
||||||
])
|
|
@ -1,275 +0,0 @@
|
|||||||
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
|
||||||
/* $Id: config.h.in,v 1.28 2002/06/10 08:10:33 lukem Exp $ */
|
|
||||||
|
|
||||||
|
|
||||||
/* Define if on AIX 3.
|
|
||||||
System headers sometimes define this.
|
|
||||||
We just want to avoid a redefinition error message. */
|
|
||||||
#ifndef _ALL_SOURCE
|
|
||||||
#undef _ALL_SOURCE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if the closedir function returns void instead of int. */
|
|
||||||
#undef CLOSEDIR_VOID
|
|
||||||
|
|
||||||
/* Define if the `getpgrp' function takes no argument. */
|
|
||||||
#undef GETPGRP_VOID
|
|
||||||
|
|
||||||
/* Define if your C compiler doesn't accept -c and -o together. */
|
|
||||||
#undef NO_MINUS_C_MINUS_O
|
|
||||||
|
|
||||||
/* Define if your Fortran 77 compiler doesn't accept -c and -o together. */
|
|
||||||
#undef F77_NO_MINUS_C_MINUS_O
|
|
||||||
|
|
||||||
/* Define to `long' if <sys/types.h> doesn't define. */
|
|
||||||
#undef off_t
|
|
||||||
|
|
||||||
/* Define to the type of arg1 for select(). */
|
|
||||||
#undef SELECT_TYPE_ARG1
|
|
||||||
|
|
||||||
/* Define to the type of args 2, 3 and 4 for select(). */
|
|
||||||
#undef SELECT_TYPE_ARG234
|
|
||||||
|
|
||||||
/* Define to the type of arg5 for select(). */
|
|
||||||
#undef SELECT_TYPE_ARG5
|
|
||||||
|
|
||||||
/* Define if you have the ANSI C header files. */
|
|
||||||
#undef STDC_HEADERS
|
|
||||||
|
|
||||||
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
|
||||||
#undef TIME_WITH_SYS_TIME
|
|
||||||
|
|
||||||
/* Define if the closedir function returns void instead of int. */
|
|
||||||
#undef VOID_CLOSEDIR
|
|
||||||
|
|
||||||
/* The number of bytes in a off_t. */
|
|
||||||
#undef SIZEOF_OFF_T
|
|
||||||
|
|
||||||
/* Define if you have the err function. */
|
|
||||||
#undef HAVE_ERR
|
|
||||||
|
|
||||||
/* Define if you have the fgetln function. */
|
|
||||||
#undef HAVE_FGETLN
|
|
||||||
|
|
||||||
/* Define if you have the fparseln function. */
|
|
||||||
#undef HAVE_FPARSELN
|
|
||||||
|
|
||||||
/* Define if you have the fseeko function. */
|
|
||||||
#undef HAVE_FSEEKO
|
|
||||||
|
|
||||||
/* Define if you have the getaddrinfo function. */
|
|
||||||
#undef HAVE_GETADDRINFO
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyname2 function. */
|
|
||||||
#undef HAVE_GETHOSTBYNAME2
|
|
||||||
|
|
||||||
/* Define if you have the getnameinfo function. */
|
|
||||||
#undef HAVE_GETNAMEINFO
|
|
||||||
|
|
||||||
/* Define if you have the getpassphrase function. */
|
|
||||||
#undef HAVE_GETPASSPHRASE
|
|
||||||
|
|
||||||
/* Define if you have the getpgrp function. */
|
|
||||||
#undef HAVE_GETPGRP
|
|
||||||
|
|
||||||
/* Define if you have the inet_ntop function. */
|
|
||||||
#undef HAVE_INET_NTOP
|
|
||||||
|
|
||||||
/* Define if you have the inet_pton function. */
|
|
||||||
#undef HAVE_INET_PTON
|
|
||||||
|
|
||||||
/* Define if you have the memmove function. */
|
|
||||||
#undef HAVE_MEMMOVE
|
|
||||||
|
|
||||||
/* Define if you have the mkstemp function. */
|
|
||||||
#undef HAVE_MKSTEMP
|
|
||||||
|
|
||||||
/* Define if you have the poll function. */
|
|
||||||
#undef HAVE_POLL
|
|
||||||
|
|
||||||
/* Define if you have the select function. */
|
|
||||||
#undef HAVE_SELECT
|
|
||||||
|
|
||||||
/* Define if you have the setprogname function. */
|
|
||||||
#undef HAVE_SETPROGNAME
|
|
||||||
|
|
||||||
/* Define if you have the sl_init function. */
|
|
||||||
#undef HAVE_SL_INIT
|
|
||||||
|
|
||||||
/* Define if you have the snprintf function. */
|
|
||||||
#undef HAVE_SNPRINTF
|
|
||||||
|
|
||||||
/* Define if you have the strdup function. */
|
|
||||||
#undef HAVE_STRDUP
|
|
||||||
|
|
||||||
/* Define if you have the strerror function. */
|
|
||||||
#undef HAVE_STRERROR
|
|
||||||
|
|
||||||
/* Define if you have the strlcat function. */
|
|
||||||
#undef HAVE_STRLCAT
|
|
||||||
|
|
||||||
/* Define if you have the strlcpy function. */
|
|
||||||
#undef HAVE_STRLCPY
|
|
||||||
|
|
||||||
/* Define if you have the strptime function. */
|
|
||||||
#undef HAVE_STRPTIME
|
|
||||||
|
|
||||||
/* Define if you have the strsep function. */
|
|
||||||
#undef HAVE_STRSEP
|
|
||||||
|
|
||||||
/* Define if you have the strtoll function. */
|
|
||||||
#undef HAVE_STRTOLL
|
|
||||||
|
|
||||||
/* Define if you have the strunvis function. */
|
|
||||||
#undef HAVE_STRUNVIS
|
|
||||||
|
|
||||||
/* Define if you have the strvis function. */
|
|
||||||
#undef HAVE_STRVIS
|
|
||||||
|
|
||||||
/* Define if you have the timegm function. */
|
|
||||||
#undef HAVE_TIMEGM
|
|
||||||
|
|
||||||
/* Define if you have the usleep function. */
|
|
||||||
#undef HAVE_USLEEP
|
|
||||||
|
|
||||||
/* Define if you have the <arpa/nameser.h> header file. */
|
|
||||||
#undef HAVE_ARPA_NAMESER_H
|
|
||||||
|
|
||||||
/* Define if you have the <dirent.h> header file. */
|
|
||||||
#undef HAVE_DIRENT_H
|
|
||||||
|
|
||||||
/* Define if you have the <err.h> header file. */
|
|
||||||
#undef HAVE_ERR_H
|
|
||||||
|
|
||||||
/* Define if you have the <libutil.h> header file. */
|
|
||||||
#undef HAVE_LIBUTIL_H
|
|
||||||
|
|
||||||
/* Define if you have the <ndir.h> header file. */
|
|
||||||
#undef HAVE_NDIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <paths.h> header file. */
|
|
||||||
#undef HAVE_PATHS_H
|
|
||||||
|
|
||||||
/* Define if you have the <poll.h> header file. */
|
|
||||||
#undef HAVE_POLL_H
|
|
||||||
|
|
||||||
/* Define if you have the <regex.h> header file. */
|
|
||||||
#undef HAVE_REGEX_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/dir.h> header file. */
|
|
||||||
#undef HAVE_SYS_DIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/ndir.h> header file. */
|
|
||||||
#undef HAVE_SYS_NDIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/poll.h> header file. */
|
|
||||||
#undef HAVE_SYS_POLL_H
|
|
||||||
|
|
||||||
/* Define if you have the <termcap.h> header file. */
|
|
||||||
#undef HAVE_TERMCAP_H
|
|
||||||
|
|
||||||
/* Define if you have the <util.h> header file. */
|
|
||||||
#undef HAVE_UTIL_H
|
|
||||||
|
|
||||||
/* Define if you have the <vis.h> header file. */
|
|
||||||
#undef HAVE_VIS_H
|
|
||||||
|
|
||||||
/* Define if you have the nsl library (-lnsl). */
|
|
||||||
#undef HAVE_LIBNSL
|
|
||||||
|
|
||||||
/* Define if you have the socket library (-lsocket). */
|
|
||||||
#undef HAVE_LIBSOCKET
|
|
||||||
|
|
||||||
/* Define if you have the tinfo library (-ltinfo). */
|
|
||||||
#undef HAVE_LIBTINFO
|
|
||||||
|
|
||||||
/* Define if you have the util library (-lutil). */
|
|
||||||
#undef HAVE_LIBUTIL
|
|
||||||
|
|
||||||
/* Define if your compiler supports `long long' */
|
|
||||||
#undef HAVE_LONG_LONG
|
|
||||||
|
|
||||||
/* Define if *printf() uses %qd to print `long long' (otherwise uses %lld) */
|
|
||||||
#undef HAVE_PRINTF_QD
|
|
||||||
|
|
||||||
/* Define if in_port_t exists */
|
|
||||||
#undef HAVE_IN_PORT_T
|
|
||||||
|
|
||||||
/* Define if sa_family_t exists in <sys/socket.h> */
|
|
||||||
#undef HAVE_SA_FAMILY_T
|
|
||||||
|
|
||||||
/* Define if struct sockaddr.sa_len exists (implies sockaddr_in.sin_len, etc) */
|
|
||||||
#undef HAVE_SOCKADDR_SA_LEN
|
|
||||||
|
|
||||||
/* Define if socklen_t exists */
|
|
||||||
#undef HAVE_SOCKLEN_T
|
|
||||||
|
|
||||||
/* Define if AF_INET6 exists in <sys/socket.h> */
|
|
||||||
#undef HAVE_AF_INET6
|
|
||||||
|
|
||||||
/* Define if `struct sockaddr_in6' exists in <netinet/in.h> */
|
|
||||||
#undef HAVE_SOCKADDR_IN6
|
|
||||||
|
|
||||||
/* Define if `struct addrinfo' exists in <netdb.h> */
|
|
||||||
#undef HAVE_ADDRINFO
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define if <netdb.h> contains AI_NUMERICHOST et al.
|
|
||||||
* Systems which only implement RFC2133 will need this.
|
|
||||||
*/
|
|
||||||
#undef HAVE_RFC2553_NETDB
|
|
||||||
|
|
||||||
/* Define if `struct direct' has a d_namlen element */
|
|
||||||
#undef HAVE_D_NAMLEN
|
|
||||||
|
|
||||||
/* Define if h_errno exists in <netdb.h> */
|
|
||||||
#undef HAVE_H_ERRNO_D
|
|
||||||
|
|
||||||
/* Define if fclose() is declared in <stdio.h> */
|
|
||||||
#undef HAVE_FCLOSE_D
|
|
||||||
|
|
||||||
/* Define if getpass() is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_GETPASS_D
|
|
||||||
|
|
||||||
/* Define if optarg is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_OPTARG_D
|
|
||||||
|
|
||||||
/* Define if optind is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_OPTIND_D
|
|
||||||
|
|
||||||
/* Define if pclose() is declared in <stdio.h> */
|
|
||||||
#undef HAVE_PCLOSE_D
|
|
||||||
|
|
||||||
/* Define if `long long' is supported and sizeof(off_t) >= 8 */
|
|
||||||
#undef HAVE_QUAD_SUPPORT
|
|
||||||
|
|
||||||
/* Define if strptime() is declared in <time.h> */
|
|
||||||
#undef HAVE_STRPTIME_D
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define this if compiling with SOCKS (the firewall traversal library).
|
|
||||||
* Also, you must define connect, getsockname, bind, accept, listen, and
|
|
||||||
* select to their R-versions.
|
|
||||||
*/
|
|
||||||
#undef SOCKS
|
|
||||||
#undef SOCKS4
|
|
||||||
#undef SOCKS5
|
|
||||||
#undef connect
|
|
||||||
#undef getsockname
|
|
||||||
#undef bind
|
|
||||||
#undef accept
|
|
||||||
#undef listen
|
|
||||||
#undef select
|
|
||||||
#undef dup
|
|
||||||
#undef dup2
|
|
||||||
#undef fclose
|
|
||||||
#undef gethostbyname
|
|
||||||
#undef getpeername
|
|
||||||
#undef read
|
|
||||||
#undef recv
|
|
||||||
#undef recvfrom
|
|
||||||
#undef rresvport
|
|
||||||
#undef send
|
|
||||||
#undef sendto
|
|
||||||
#undef shutdown
|
|
||||||
#undef write
|
|
4229
contrib/lukemftp/configure
vendored
4229
contrib/lukemftp/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -1,307 +0,0 @@
|
|||||||
dnl $Id: configure.in,v 1.37 2002/06/10 08:08:53 lukem Exp $
|
|
||||||
dnl
|
|
||||||
dnl configure.in --
|
|
||||||
dnl process this file with autoconf to produce a configure script.
|
|
||||||
dnl
|
|
||||||
|
|
||||||
AC_REVISION($Revision: 1.37 $)dnl
|
|
||||||
|
|
||||||
AC_INIT(lukemftp.h)
|
|
||||||
|
|
||||||
dnl Arguments for which features are included
|
|
||||||
dnl
|
|
||||||
AC_ARG_PROGRAM
|
|
||||||
AC_ARG_ENABLE(editcomplete, [\
|
|
||||||
--enable-editcomplete Turn on command line editing and completion.
|
|
||||||
--disable-editcomplete Turn off command line editing and completion
|
|
||||||
[default: enabled].],
|
|
||||||
opt_editcomplete=$enableval,
|
|
||||||
opt_editcomplete=yes)
|
|
||||||
AC_ARG_ENABLE(ipv6, [\
|
|
||||||
--enable-ipv6 Enable IPv6 support (if your OS supports it).
|
|
||||||
--disable-ipv6 Disable IPv6 support (even if your OS supports it)
|
|
||||||
[default: enabled].],
|
|
||||||
opt_ipv6=$enableval,
|
|
||||||
opt_ipv6=yes)
|
|
||||||
|
|
||||||
dnl Checks for programs.
|
|
||||||
dnl
|
|
||||||
AC_PROG_MAKE_SET
|
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_AWK
|
|
||||||
AC_PROG_INSTALL
|
|
||||||
AC_PROG_RANLIB
|
|
||||||
AC_CHECK_PROGS(AR, ar)
|
|
||||||
AC_AIX
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for libraries.
|
|
||||||
dnl
|
|
||||||
AC_CHECK_LIB(util, fparseln)
|
|
||||||
if test $opt_editcomplete = yes; then
|
|
||||||
AC_CHECK_LIB(tinfo, tgetent, ,
|
|
||||||
AC_CHECK_LIB(termcap, tgetent, ,
|
|
||||||
AC_CHECK_LIB(curses, tgetent, ,
|
|
||||||
AC_CHECK_LIB(ncurses, tgetent))))
|
|
||||||
AC_SEARCH_LIBS(el_init, edit, have_libedit=yes, have_libedit=no)
|
|
||||||
fi
|
|
||||||
AC_LIBRARY_NET
|
|
||||||
AC_LIBRARY_SOCKS
|
|
||||||
if test -n "$socks"; then
|
|
||||||
if test $opt_ipv6 = yes; then
|
|
||||||
echo "IPv6 is incompatible with socks, disabling IPv6 support"
|
|
||||||
opt_ipv6=no
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for header files.
|
|
||||||
dnl
|
|
||||||
AC_CONFIG_HEADER(config.h)
|
|
||||||
AC_HEADER_DIRENT
|
|
||||||
AC_HEADER_STDC
|
|
||||||
AC_CHECK_HEADERS(arpa/nameser.h err.h regex.h paths.h poll.h sys/poll.h \
|
|
||||||
termcap.h util.h libutil.h vis.h)
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
||||||
dnl
|
|
||||||
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])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
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> ], [
|
|
||||||
struct sockaddr_in sin;
|
|
||||||
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)])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
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 ], [AC_DEFINE(HAVE_SOCKADDR_IN6, 1)])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
AC_MSG_TRY_COMPILE(for d_namlen in struct dirent, ftp_cv_HAVE_D_NAMLEN, [
|
|
||||||
#if HAVE_DIRENT_H
|
|
||||||
# include <dirent.h>
|
|
||||||
#else
|
|
||||||
# define dirent direct
|
|
||||||
# if HAVE_SYS_NDIR_H
|
|
||||||
# include <sys/ndir.h>
|
|
||||||
# endif
|
|
||||||
# if HAVE_SYS_DIR_H
|
|
||||||
# include <sys/dir.h>
|
|
||||||
# endif
|
|
||||||
# if HAVE_NDIR_H
|
|
||||||
# include <ndir.h>
|
|
||||||
# endif
|
|
||||||
#endif ], [
|
|
||||||
struct dirent dp;
|
|
||||||
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)])
|
|
||||||
|
|
||||||
AC_MSG_TRY_COMPILE(for fclose() declaration, ftp_cv_HAVE_FCLOSE_D, [
|
|
||||||
#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)])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
AC_MSG_TRY_COMPILE(for pclose() declaration, ftp_cv_HAVE_PCLOSE_D, [
|
|
||||||
#include <stdio.h> ], [ int (*X)() = pclose ], [AC_DEFINE(HAVE_PCLOSE_D, 1)])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for library functions.
|
|
||||||
dnl
|
|
||||||
AC_REPLACE_FUNCS(err fgetln fseeko getaddrinfo getnameinfo inet_ntop inet_pton \
|
|
||||||
mkstemp setprogname sl_init snprintf strdup strerror strlcat \
|
|
||||||
strlcpy strptime strsep strunvis strvis timegm usleep)
|
|
||||||
AC_CHECK_FUNCS(gethostbyname2 getpassphrase getpgrp memmove poll select)
|
|
||||||
if test $ac_cv_func_getpgrp = yes; then
|
|
||||||
AC_FUNC_GETPGRP
|
|
||||||
fi
|
|
||||||
if test $ac_cv_lib_util_fparseln != yes; then
|
|
||||||
AC_REPLACE_FUNCS(fparseln)
|
|
||||||
fi
|
|
||||||
|
|
||||||
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)])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $have_long_long = yes -a $ac_cv_sizeof_off_t -ge 8; then
|
|
||||||
|
|
||||||
dnl We assume that if sprintf() supports %lld or %qd,
|
|
||||||
dnl then all of *printf() does. If not, disable long long
|
|
||||||
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"));
|
|
||||||
}
|
|
||||||
], [
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
can_printf_longlong=yes
|
|
||||||
], [
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
], [ : ])
|
|
||||||
|
|
||||||
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"));
|
|
||||||
}
|
|
||||||
], [
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
can_printf_longlong=yes
|
|
||||||
AC_DEFINE(HAVE_PRINTF_QD, 1)
|
|
||||||
], [
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
], [ : ])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $can_printf_longlong = yes; then
|
|
||||||
AC_DEFINE(HAVE_QUAD_SUPPORT, 1)
|
|
||||||
AC_REPLACE_FUNCS(strtoll)
|
|
||||||
fi
|
|
||||||
|
|
||||||
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 ], [:],
|
|
||||||
have_libedit=no )
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(for working libedit)
|
|
||||||
if test $have_libedit = no; then
|
|
||||||
AC_MSG_RESULT(no - using my own)
|
|
||||||
INCLUDES="-I\${srcdir}/../libedit $INCLUDES"
|
|
||||||
LDFLAGS="-L../libedit $LDFLAGS"
|
|
||||||
LIBS="-ledit $LIBS"
|
|
||||||
LIBEDIT=libedit.a
|
|
||||||
LIBDEPENDS="$LIBDEPENDS ../libedit/libedit.a"
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
CFLAGS="-DNO_EDITCOMPLETE $CFLAGS"
|
|
||||||
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"])
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
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 ])
|
|
||||||
fi
|
|
||||||
AC_MSG_CHECKING(for working getaddrinfo())
|
|
||||||
if test $have_rfc2553_netdb = yes; then
|
|
||||||
AC_DEFINE(HAVE_RFC2553_NETDB, 1)
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
else
|
|
||||||
if test $ac_cv_func_getaddrinfo = yes; then
|
|
||||||
LIBOBJS="$LIBOBJS getaddrinfo.o"
|
|
||||||
AC_MSG_RESULT(no - using local version)
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(using local version)
|
|
||||||
fi
|
|
||||||
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 )
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if test -n "$LIBOBJS"; then
|
|
||||||
INCLUDES="$INCLUDES -I\${srcdir}/../libukem"
|
|
||||||
LDFLAGS="$LDFLAGS -L../libukem"
|
|
||||||
LIBS="$LIBS -lukem"
|
|
||||||
LIBUKEM=libukem.a
|
|
||||||
LIBDEPENDS="$LIBDEPENDS ../libukem/libukem.a"
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl Create the Makefiles
|
|
||||||
dnl
|
|
||||||
|
|
||||||
AC_SUBST(INCLUDES)
|
|
||||||
AC_SUBST(LIBEDIT)
|
|
||||||
AC_SUBST(LIBUKEM)
|
|
||||||
AC_SUBST(LIBDEPENDS)
|
|
||||||
|
|
||||||
AC_OUTPUT(Makefile libedit/Makefile libedit/makelist libukem/Makefile \
|
|
||||||
src/Makefile)
|
|
File diff suppressed because it is too large
Load Diff
@ -1,251 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# install - install a program, script, or datafile
|
|
||||||
# This comes from X11R5 (mit/util/scripts/install.sh).
|
|
||||||
#
|
|
||||||
# Copyright 1991 by the Massachusetts Institute of Technology
|
|
||||||
#
|
|
||||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
# documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
# the above copyright notice appear in all copies and that both that
|
|
||||||
# copyright notice and this permission notice appear in supporting
|
|
||||||
# documentation, and that the name of M.I.T. not be used in advertising or
|
|
||||||
# publicity pertaining to distribution of the software without specific,
|
|
||||||
# written prior permission. M.I.T. makes no representations about the
|
|
||||||
# suitability of this software for any purpose. It is provided "as is"
|
|
||||||
# without express or implied warranty.
|
|
||||||
#
|
|
||||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
|
||||||
# `make' implicit rules from creating a file called install from it
|
|
||||||
# when there is no Makefile.
|
|
||||||
#
|
|
||||||
# This script is compatible with the BSD install script, but was written
|
|
||||||
# from scratch. It can only install one file at a time, a restriction
|
|
||||||
# shared with many OS's install programs.
|
|
||||||
|
|
||||||
|
|
||||||
# set DOITPROG to echo to test this script
|
|
||||||
|
|
||||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
|
||||||
doit="${DOITPROG-}"
|
|
||||||
|
|
||||||
|
|
||||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
|
||||||
|
|
||||||
mvprog="${MVPROG-mv}"
|
|
||||||
cpprog="${CPPROG-cp}"
|
|
||||||
chmodprog="${CHMODPROG-chmod}"
|
|
||||||
chownprog="${CHOWNPROG-chown}"
|
|
||||||
chgrpprog="${CHGRPPROG-chgrp}"
|
|
||||||
stripprog="${STRIPPROG-strip}"
|
|
||||||
rmprog="${RMPROG-rm}"
|
|
||||||
mkdirprog="${MKDIRPROG-mkdir}"
|
|
||||||
|
|
||||||
transformbasename=""
|
|
||||||
transform_arg=""
|
|
||||||
instcmd="$mvprog"
|
|
||||||
chmodcmd="$chmodprog 0755"
|
|
||||||
chowncmd=""
|
|
||||||
chgrpcmd=""
|
|
||||||
stripcmd=""
|
|
||||||
rmcmd="$rmprog -f"
|
|
||||||
mvcmd="$mvprog"
|
|
||||||
src=""
|
|
||||||
dst=""
|
|
||||||
dir_arg=""
|
|
||||||
|
|
||||||
while [ x"$1" != x ]; do
|
|
||||||
case $1 in
|
|
||||||
-c) instcmd="$cpprog"
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-d) dir_arg=true
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-m) chmodcmd="$chmodprog $2"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-o) chowncmd="$chownprog $2"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-g) chgrpcmd="$chgrpprog $2"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-s) stripcmd="$stripprog"
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
*) if [ x"$src" = x ]
|
|
||||||
then
|
|
||||||
src=$1
|
|
||||||
else
|
|
||||||
# this colon is to work around a 386BSD /bin/sh bug
|
|
||||||
:
|
|
||||||
dst=$1
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ x"$src" = x ]
|
|
||||||
then
|
|
||||||
echo "install: no input file specified"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ x"$dir_arg" != x ]; then
|
|
||||||
dst=$src
|
|
||||||
src=""
|
|
||||||
|
|
||||||
if [ -d $dst ]; then
|
|
||||||
instcmd=:
|
|
||||||
chmodcmd=""
|
|
||||||
else
|
|
||||||
instcmd=mkdir
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
|
|
||||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
|
||||||
# might cause directories to be created, which would be especially bad
|
|
||||||
# if $src (and thus $dsttmp) contains '*'.
|
|
||||||
|
|
||||||
if [ -f $src -o -d $src ]
|
|
||||||
then
|
|
||||||
true
|
|
||||||
else
|
|
||||||
echo "install: $src does not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ x"$dst" = x ]
|
|
||||||
then
|
|
||||||
echo "install: no destination specified"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If destination is a directory, append the input filename; if your system
|
|
||||||
# does not like double slashes in filenames, you may need to add some logic
|
|
||||||
|
|
||||||
if [ -d $dst ]
|
|
||||||
then
|
|
||||||
dst="$dst"/`basename $src`
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
## this sed command emulates the dirname command
|
|
||||||
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
|
||||||
|
|
||||||
# Make sure that the destination directory exists.
|
|
||||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
|
||||||
|
|
||||||
# Skip lots of stat calls in the usual case.
|
|
||||||
if [ ! -d "$dstdir" ]; then
|
|
||||||
defaultIFS='
|
|
||||||
'
|
|
||||||
IFS="${IFS-${defaultIFS}}"
|
|
||||||
|
|
||||||
oIFS="${IFS}"
|
|
||||||
# Some sh's can't handle IFS=/ for some reason.
|
|
||||||
IFS='%'
|
|
||||||
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
|
||||||
IFS="${oIFS}"
|
|
||||||
|
|
||||||
pathcomp=''
|
|
||||||
|
|
||||||
while [ $# -ne 0 ] ; do
|
|
||||||
pathcomp="${pathcomp}${1}"
|
|
||||||
shift
|
|
||||||
|
|
||||||
if [ ! -d "${pathcomp}" ] ;
|
|
||||||
then
|
|
||||||
$mkdirprog "${pathcomp}"
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
|
|
||||||
pathcomp="${pathcomp}/"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ x"$dir_arg" != x ]
|
|
||||||
then
|
|
||||||
$doit $instcmd $dst &&
|
|
||||||
|
|
||||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
|
||||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
|
||||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
|
||||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
|
||||||
else
|
|
||||||
|
|
||||||
# If we're going to rename the final executable, determine the name now.
|
|
||||||
|
|
||||||
if [ x"$transformarg" = x ]
|
|
||||||
then
|
|
||||||
dstfile=`basename $dst`
|
|
||||||
else
|
|
||||||
dstfile=`basename $dst $transformbasename |
|
|
||||||
sed $transformarg`$transformbasename
|
|
||||||
fi
|
|
||||||
|
|
||||||
# don't allow the sed command to completely eliminate the filename
|
|
||||||
|
|
||||||
if [ x"$dstfile" = x ]
|
|
||||||
then
|
|
||||||
dstfile=`basename $dst`
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make a temp file name in the proper directory.
|
|
||||||
|
|
||||||
dsttmp=$dstdir/#inst.$$#
|
|
||||||
|
|
||||||
# Move or copy the file name to the temp name
|
|
||||||
|
|
||||||
$doit $instcmd $src $dsttmp &&
|
|
||||||
|
|
||||||
trap "rm -f ${dsttmp}" 0 &&
|
|
||||||
|
|
||||||
# and set any options; do chmod last to preserve setuid bits
|
|
||||||
|
|
||||||
# If any of these fail, we abort the whole thing. If we want to
|
|
||||||
# ignore errors from any of these, just make sure not to ignore
|
|
||||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
|
||||||
|
|
||||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
|
||||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
|
||||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
|
||||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
|
||||||
|
|
||||||
# Now rename the file to the real destination.
|
|
||||||
|
|
||||||
$doit $rmcmd -f $dstdir/$dstfile &&
|
|
||||||
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
|
||||||
|
|
||||||
fi &&
|
|
||||||
|
|
||||||
|
|
||||||
exit 0
|
|
@ -1,403 +0,0 @@
|
|||||||
/* $Id: lukemftp.h,v 1.43 2002/06/10 08:13:01 lukem Exp $ */
|
|
||||||
|
|
||||||
#define FTP_PRODUCT "lukemftp"
|
|
||||||
#define FTP_VERSION "1.6-beta2"
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <netinet/in_systm.h>
|
|
||||||
#include <netinet/ip.h>
|
|
||||||
|
|
||||||
#include <arpa/ftp.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <pwd.h>
|
|
||||||
#include <setjmp.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <termios.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#if HAVE_POLL
|
|
||||||
# if HAVE_POLL_H
|
|
||||||
# include <poll.h>
|
|
||||||
# elif HAVE_SYS_POLL_H
|
|
||||||
# include <sys/poll.h>
|
|
||||||
# endif
|
|
||||||
#elif HAVE_SELECT
|
|
||||||
# define USE_SELECT
|
|
||||||
#else
|
|
||||||
# error "no poll() or select() found"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_DIRENT_H
|
|
||||||
# include <dirent.h>
|
|
||||||
#else
|
|
||||||
# define dirent direct
|
|
||||||
# if HAVE_SYS_NDIR_H
|
|
||||||
# include <sys/ndir.h>
|
|
||||||
# endif
|
|
||||||
# if HAVE_SYS_DIR_H
|
|
||||||
# include <sys/dir.h>
|
|
||||||
# endif
|
|
||||||
# if HAVE_NDIR_H
|
|
||||||
# include <ndir.h>
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TIME_WITH_SYS_TIME
|
|
||||||
# include <sys/time.h>
|
|
||||||
# include <time.h>
|
|
||||||
#else
|
|
||||||
# if HAVE_SYS_TIME_H
|
|
||||||
# include <sys/time.h>
|
|
||||||
# else
|
|
||||||
# include <time.h>
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_ERR_H
|
|
||||||
# include <err.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if USE_GLOB_H /* not set by configure; used by other build systems */
|
|
||||||
# include <glob.h>
|
|
||||||
#else
|
|
||||||
# include "ftpglob.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_PATHS_H
|
|
||||||
# include <paths.h>
|
|
||||||
#endif
|
|
||||||
#ifndef _PATH_BSHELL
|
|
||||||
#define _PATH_BSHELL "/bin/sh"
|
|
||||||
#endif
|
|
||||||
#ifndef _PATH_TMP
|
|
||||||
#define _PATH_TMP "/tmp/"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct _stringlist {
|
|
||||||
char **sl_str;
|
|
||||||
size_t sl_max;
|
|
||||||
size_t sl_cur;
|
|
||||||
} StringList;
|
|
||||||
|
|
||||||
StringList *sl_init(void);
|
|
||||||
int sl_add(StringList *, char *);
|
|
||||||
void sl_free(StringList *, int);
|
|
||||||
char *sl_find(StringList *, char *);
|
|
||||||
|
|
||||||
#if HAVE_TERMCAP_H
|
|
||||||
# include <termcap.h>
|
|
||||||
#else
|
|
||||||
int tgetent(char *, const char *);
|
|
||||||
char *tgetstr(const char *, char **);
|
|
||||||
int tgetflag(const char *);
|
|
||||||
int tgetnum(const char *);
|
|
||||||
char *tgoto(const char *, int, int);
|
|
||||||
void tputs(const char *, int, int (*)(int));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_UTIL_H
|
|
||||||
# include <util.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_LIBUTIL_H
|
|
||||||
# include <libutil.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_VIS_H
|
|
||||||
# include <vis.h>
|
|
||||||
#else
|
|
||||||
# include "ftpvis.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_IN_PORT_T
|
|
||||||
typedef unsigned short in_port_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_SA_FAMILY_T
|
|
||||||
typedef unsigned short sa_family_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_SOCKLEN_T
|
|
||||||
typedef unsigned int socklen_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_AF_INET6 && HAVE_SOCKADDR_IN6
|
|
||||||
# define INET6
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if ! HAVE_RFC2553_NETDB
|
|
||||||
|
|
||||||
/* RFC 2553 */
|
|
||||||
#undef EAI_ADDRFAMILY
|
|
||||||
#define EAI_ADDRFAMILY 1 /* address family for hostname not supported */
|
|
||||||
#undef EAI_AGAIN
|
|
||||||
#define EAI_AGAIN 2 /* temporary failure in name resolution */
|
|
||||||
#undef EAI_BADFLAGS
|
|
||||||
#define EAI_BADFLAGS 3 /* invalid value for ai_flags */
|
|
||||||
#undef EAI_FAIL
|
|
||||||
#define EAI_FAIL 4 /* non-recoverable failure in name resolution */
|
|
||||||
#undef EAI_FAMILY
|
|
||||||
#define EAI_FAMILY 5 /* ai_family not supported */
|
|
||||||
#undef EAI_MEMORY
|
|
||||||
#define EAI_MEMORY 6 /* memory allocation failure */
|
|
||||||
#undef EAI_NODATA
|
|
||||||
#define EAI_NODATA 7 /* no address associated with hostname */
|
|
||||||
#undef EAI_NONAME
|
|
||||||
#define EAI_NONAME 8 /* hostname nor servname provided, or not known */
|
|
||||||
#undef EAI_SERVICE
|
|
||||||
#define EAI_SERVICE 9 /* servname not supported for ai_socktype */
|
|
||||||
#undef EAI_SOCKTYPE
|
|
||||||
#define EAI_SOCKTYPE 10 /* ai_socktype not supported */
|
|
||||||
#undef EAI_SYSTEM
|
|
||||||
#define EAI_SYSTEM 11 /* system error returned in errno */
|
|
||||||
|
|
||||||
/* KAME extensions? */
|
|
||||||
#undef EAI_BADHINTS
|
|
||||||
#define EAI_BADHINTS 12
|
|
||||||
#undef EAI_PROTOCOL
|
|
||||||
#define EAI_PROTOCOL 13
|
|
||||||
#undef EAI_MAX
|
|
||||||
#define EAI_MAX 14
|
|
||||||
|
|
||||||
/* RFC 2553 */
|
|
||||||
#undef NI_MAXHOST
|
|
||||||
#define NI_MAXHOST 1025
|
|
||||||
#undef NI_MAXSERV
|
|
||||||
#define NI_MAXSERV 32
|
|
||||||
|
|
||||||
#undef NI_NOFQDN
|
|
||||||
#define NI_NOFQDN 0x00000001
|
|
||||||
#undef NI_NUMERICHOST
|
|
||||||
#define NI_NUMERICHOST 0x00000002
|
|
||||||
#undef NI_NAMEREQD
|
|
||||||
#define NI_NAMEREQD 0x00000004
|
|
||||||
#undef NI_NUMERICSERV
|
|
||||||
#define NI_NUMERICSERV 0x00000008
|
|
||||||
#undef NI_DGRAM
|
|
||||||
#define NI_DGRAM 0x00000010
|
|
||||||
|
|
||||||
/* RFC 2553 */
|
|
||||||
#undef AI_PASSIVE
|
|
||||||
#define AI_PASSIVE 0x00000001 /* get address to use bind() */
|
|
||||||
#undef AI_CANONNAME
|
|
||||||
#define AI_CANONNAME 0x00000002 /* fill ai_canonname */
|
|
||||||
|
|
||||||
/* KAME extensions ? */
|
|
||||||
#undef AI_NUMERICHOST
|
|
||||||
#define AI_NUMERICHOST 0x00000004 /* prevent name resolution */
|
|
||||||
#undef AI_MASK
|
|
||||||
#define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST)
|
|
||||||
|
|
||||||
/* RFC 2553 */
|
|
||||||
#undef AI_ALL
|
|
||||||
#define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
|
|
||||||
#undef AI_V4MAPPED_CFG
|
|
||||||
#define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */
|
|
||||||
#undef AI_ADDRCONFIG
|
|
||||||
#define AI_ADDRCONFIG 0x00000400 /* only if any address is assigned */
|
|
||||||
#undef AI_V4MAPPED
|
|
||||||
#define AI_V4MAPPED 0x00000800 /* accept IPv4-mapped IPv6 address */
|
|
||||||
|
|
||||||
#endif /* ! HAVE_RFC2553_NETDB */
|
|
||||||
|
|
||||||
|
|
||||||
#if ! HAVE_RFC2553_NETDB && ! HAVE_ADDRINFO
|
|
||||||
|
|
||||||
struct addrinfo {
|
|
||||||
int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
|
|
||||||
int ai_family; /* PF_xxx */
|
|
||||||
int ai_socktype; /* SOCK_xxx */
|
|
||||||
int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
|
|
||||||
size_t ai_addrlen; /* length of ai_addr */
|
|
||||||
char *ai_canonname; /* canonical name for hostname */
|
|
||||||
struct sockaddr *ai_addr; /* binary address */
|
|
||||||
struct addrinfo *ai_next; /* next structure in linked list */
|
|
||||||
};
|
|
||||||
|
|
||||||
int getaddrinfo(const char *, const char *,
|
|
||||||
const struct addrinfo *, struct addrinfo **);
|
|
||||||
int getnameinfo(const struct sockaddr *, socklen_t, char *,
|
|
||||||
size_t, char *, size_t, int);
|
|
||||||
void freeaddrinfo(struct addrinfo *);
|
|
||||||
char *gai_strerror(int);
|
|
||||||
|
|
||||||
#endif /* ! HAVE_RFC2553_NETDB && ! HAVE_ADDRINFO */
|
|
||||||
|
|
||||||
|
|
||||||
#if ! HAVE_D_NAMLEN
|
|
||||||
# define DIRENT_MISSING_D_NAMLEN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_H_ERRNO_D
|
|
||||||
extern int h_errno;
|
|
||||||
#endif
|
|
||||||
#define HAVE_H_ERRNO 1 /* XXX: an assumption for now... */
|
|
||||||
|
|
||||||
#if ! HAVE_FCLOSE_D
|
|
||||||
int fclose(FILE *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_GETPASS_D
|
|
||||||
char *getpass(const char *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_OPTARG_D
|
|
||||||
extern char *optarg;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_OPTIND_D
|
|
||||||
extern int optind;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_PCLOSE_D
|
|
||||||
int pclose(FILE *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_ERR
|
|
||||||
void err(int, const char *, ...);
|
|
||||||
void errx(int, const char *, ...);
|
|
||||||
void warn(const char *, ...);
|
|
||||||
void warnx(const char *, ...);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_FGETLN
|
|
||||||
char *fgetln(FILE *, size_t *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_FSEEKO
|
|
||||||
int fseeko(FILE *, off_t, int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_FPARSELN
|
|
||||||
# define FPARSELN_UNESCESC 0x01
|
|
||||||
# define FPARSELN_UNESCCONT 0x02
|
|
||||||
# define FPARSELN_UNESCCOMM 0x04
|
|
||||||
# define FPARSELN_UNESCREST 0x08
|
|
||||||
# define FPARSELN_UNESCALL 0x0f
|
|
||||||
char *fparseln(FILE *, size_t *, size_t *, const char[3], int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_INET_NTOP
|
|
||||||
const char *inet_ntop(int, const void *, char *, size_t);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_INET_PTON
|
|
||||||
int inet_pton(int, const char *, void *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_MKSTEMP
|
|
||||||
int mkstemp(char *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_SETPROGNAME
|
|
||||||
const char *getprogname(void);
|
|
||||||
void setprogname(const char *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_SNPRINTF
|
|
||||||
int snprintf(char *, size_t, const char *, ...);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRDUP
|
|
||||||
char *strdup(const char *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRERROR
|
|
||||||
char *strerror(int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRPTIME || ! HAVE_STRPTIME_D
|
|
||||||
char *strptime(const char *, const char *, struct tm *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_QUAD_SUPPORT
|
|
||||||
# if ! HAVE_STRTOLL && HAVE_LONG_LONG
|
|
||||||
long long strtoll(const char *, char **, int);
|
|
||||||
# if ! defined(QUAD_MIN)
|
|
||||||
# define QUAD_MIN (-0x7fffffffffffffffL-1)
|
|
||||||
# endif
|
|
||||||
# if ! defined(QUAD_MAX)
|
|
||||||
# define QUAD_MAX (0x7fffffffffffffffL)
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#else /* ! HAVE_QUAD_SUPPORT */
|
|
||||||
# define NO_LONG_LONG 1
|
|
||||||
#endif /* ! HAVE_QUAD_SUPPORT */
|
|
||||||
|
|
||||||
#if ! HAVE_TIMEGM
|
|
||||||
time_t timegm(struct tm *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_HSTRERROR
|
|
||||||
char *strerror(int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRLCAT
|
|
||||||
size_t strlcat(char *, const char *, size_t);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRLCPY
|
|
||||||
size_t strlcpy(char *, const char *, size_t);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRSEP
|
|
||||||
char *strsep(char **stringp, const char *delim);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_MEMMOVE
|
|
||||||
# define memmove(a,b,c) bcopy((b),(a),(c))
|
|
||||||
/* XXX: add others #defines for borken systems? */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_GETPASSPHRASE
|
|
||||||
# define getpass getpassphrase
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! defined(MIN)
|
|
||||||
# define MIN(a, b) ((a) < (b) ? (a) : (b))
|
|
||||||
#endif
|
|
||||||
#if ! defined(MAX)
|
|
||||||
# define MAX(a, b) ((a) < (b) ? (b) : (a))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! defined(timersub)
|
|
||||||
# define timersub(tvp, uvp, vvp) \
|
|
||||||
do { \
|
|
||||||
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
|
|
||||||
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
|
|
||||||
if ((vvp)->tv_usec < 0) { \
|
|
||||||
(vvp)->tv_sec--; \
|
|
||||||
(vvp)->tv_usec += 1000000; \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! defined(S_ISLNK)
|
|
||||||
# define S_ISLNK(m) ((m & S_IFMT) == S_IFLNK)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define EPOCH_YEAR 1970
|
|
||||||
#define SECSPERHOUR 3600
|
|
||||||
#define SECSPERDAY 86400
|
|
||||||
#define TM_YEAR_BASE 1900
|
|
@ -1,28 +0,0 @@
|
|||||||
# $NetBSD: Makefile,v 1.30 2005/02/11 15:13:28 jmc Exp $
|
|
||||||
# from: @(#)Makefile 8.2 (Berkeley) 4/3/94
|
|
||||||
|
|
||||||
.include <bsd.own.mk>
|
|
||||||
|
|
||||||
PROG= ftp
|
|
||||||
SRCS= cmds.c cmdtab.c complete.c domacro.c fetch.c ftp.c main.c \
|
|
||||||
progressbar.c ruserpass.c util.c
|
|
||||||
|
|
||||||
# Uncomment the following to provide defaults for gate-ftp operation
|
|
||||||
#
|
|
||||||
#CPPFLAGS+=-DGATE_SERVER=\"ftp-gw.host\" # -DGATE_PORT=21
|
|
||||||
|
|
||||||
.if defined(SMALLPROG)
|
|
||||||
CPPFLAGS+=-DNO_EDITCOMPLETE -DNO_ABOUT -DNO_AUTH -DNO_HELP -DNO_STATUS
|
|
||||||
.else
|
|
||||||
LDADD+= -ledit -ltermcap
|
|
||||||
DPADD+= ${LIBEDIT} ${LIBTERMCAP}
|
|
||||||
.endif
|
|
||||||
|
|
||||||
.if (!defined(SMALLPROG) || defined(SMALLPROG_INET6)) && (${USE_INET6} != "no")
|
|
||||||
CPPFLAGS+= -DINET6
|
|
||||||
.endif
|
|
||||||
|
|
||||||
cmds.o fetch.o: version.h
|
|
||||||
main.o: ftp_var.h
|
|
||||||
|
|
||||||
.include <bsd.prog.mk>
|
|
@ -1,43 +0,0 @@
|
|||||||
#
|
|
||||||
# $Id: Makefile.in,v 1.8 2000/08/08 07:04:27 lukem Exp $
|
|
||||||
#
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
SHELL = /bin/sh
|
|
||||||
|
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
bindir = @bindir@
|
|
||||||
mandir = @mandir@
|
|
||||||
transform = @program_transform_name@
|
|
||||||
|
|
||||||
mandircat1 = ${mandir}/cat1
|
|
||||||
|
|
||||||
CC = @CC@
|
|
||||||
CFLAGS = -I${srcdir} -I${srcdir}/.. -I. -I.. @INCLUDES@ @CFLAGS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
|
|
||||||
PROG = ftp
|
|
||||||
OBJS = cmds.o cmdtab.o complete.o domacro.o fetch.o ftp.o main.o \
|
|
||||||
ruserpass.o util.o
|
|
||||||
|
|
||||||
all: ${PROG}
|
|
||||||
|
|
||||||
install: all
|
|
||||||
-mkdir -p ${bindir}
|
|
||||||
${INSTALL} -m 555 ${PROG} ${bindir}/`echo ${PROG}|sed '$(transform)'`
|
|
||||||
-mkdir -p ${mandircat1}
|
|
||||||
${INSTALL} -m 444 ${srcdir}/${PROG}.cat1 ${mandircat1}/`echo ${PROG}|sed '$(transform)'`.1
|
|
||||||
|
|
||||||
${PROG}: ${OBJS} @LIBDEPENDS@
|
|
||||||
${CC} ${CFLAGS} ${LDFLAGS} -o ${PROG} ${OBJS} ${LIBS}
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f core ${PROG} ${OBJS}
|
|
||||||
|
|
||||||
distclean: clean
|
|
||||||
rm -f Makefile
|
|
File diff suppressed because it is too large
Load Diff
@ -1,309 +0,0 @@
|
|||||||
/* $NetBSD: cmdtab.c,v 1.44 2005/04/11 01:49:31 lukem Exp $ */
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 1996-2000 The NetBSD Foundation, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
|
||||||
* by Luke Mewburn.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
||||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 1985, 1989, 1993, 1994
|
|
||||||
* The Regents of the University of California. All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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. 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.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
|
||||||
#ifndef lint
|
|
||||||
#if 0
|
|
||||||
static char sccsid[] = "@(#)cmdtab.c 8.4 (Berkeley) 10/9/94";
|
|
||||||
#else
|
|
||||||
__RCSID("$NetBSD: cmdtab.c,v 1.44 2005/04/11 01:49:31 lukem Exp $");
|
|
||||||
#endif
|
|
||||||
#endif /* not lint */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "ftp_var.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* User FTP -- Command Tables.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define HSTR static const char
|
|
||||||
|
|
||||||
#ifndef NO_HELP
|
|
||||||
HSTR accounthelp[] = "send account command to remote server";
|
|
||||||
HSTR appendhelp[] = "append to a file";
|
|
||||||
HSTR asciihelp[] = "set ascii transfer type";
|
|
||||||
HSTR beephelp[] = "beep when command completed";
|
|
||||||
HSTR binaryhelp[] = "set binary transfer type";
|
|
||||||
HSTR casehelp[] = "toggle mget upper/lower case id mapping";
|
|
||||||
HSTR cdhelp[] = "change remote working directory";
|
|
||||||
HSTR cduphelp[] = "change remote working directory to parent directory";
|
|
||||||
HSTR chmodhelp[] = "change file permissions of remote file";
|
|
||||||
HSTR connecthelp[] = "connect to remote ftp server";
|
|
||||||
HSTR crhelp[] = "toggle carriage return stripping on ascii gets";
|
|
||||||
HSTR debughelp[] = "toggle/set debugging mode";
|
|
||||||
HSTR deletehelp[] = "delete remote file";
|
|
||||||
HSTR disconhelp[] = "terminate ftp session";
|
|
||||||
HSTR domachelp[] = "execute macro";
|
|
||||||
HSTR edithelp[] = "toggle command line editing";
|
|
||||||
HSTR epsv4help[] = "toggle use of EPSV/EPRT on IPv4 ftp";
|
|
||||||
HSTR feathelp[] = "show FEATures supported by remote system";
|
|
||||||
HSTR formhelp[] = "set file transfer format";
|
|
||||||
HSTR gatehelp[] = "toggle gate-ftp; specify host[:port] to change proxy";
|
|
||||||
HSTR globhelp[] = "toggle metacharacter expansion of local file names";
|
|
||||||
HSTR hashhelp[] = "toggle printing `#' marks; specify number to set size";
|
|
||||||
HSTR helphelp[] = "print local help information";
|
|
||||||
HSTR idlehelp[] = "get (set) idle timer on remote side";
|
|
||||||
HSTR lcdhelp[] = "change local working directory";
|
|
||||||
HSTR lpagehelp[] = "view a local file through your pager";
|
|
||||||
HSTR lpwdhelp[] = "print local working directory";
|
|
||||||
HSTR lshelp[] = "list contents of remote path";
|
|
||||||
HSTR macdefhelp[] = "define a macro";
|
|
||||||
HSTR mdeletehelp[] = "delete multiple files";
|
|
||||||
HSTR mgethelp[] = "get multiple files";
|
|
||||||
HSTR mregethelp[] = "get multiple files restarting at end of local file";
|
|
||||||
HSTR fgethelp[] = "get files using a localfile as a source of names";
|
|
||||||
HSTR mkdirhelp[] = "make directory on the remote machine";
|
|
||||||
HSTR mlshelp[] = "list contents of multiple remote directories";
|
|
||||||
HSTR mlsdhelp[] = "list contents of remote directory in a machine "
|
|
||||||
"parsable form";
|
|
||||||
HSTR mlsthelp[] = "list remote path in a machine parsable form";
|
|
||||||
HSTR modehelp[] = "set file transfer mode";
|
|
||||||
HSTR modtimehelp[] = "show last modification time of remote file";
|
|
||||||
HSTR mputhelp[] = "send multiple files";
|
|
||||||
HSTR newerhelp[] = "get file if remote file is newer than local file ";
|
|
||||||
HSTR nmaphelp[] = "set templates for default file name mapping";
|
|
||||||
HSTR ntranshelp[] = "set translation table for default file name mapping";
|
|
||||||
HSTR optshelp[] = "show or set options for remote commands";
|
|
||||||
HSTR pagehelp[] = "view a remote file through your pager";
|
|
||||||
HSTR passivehelp[] = "toggle use of passive transfer mode";
|
|
||||||
HSTR plshelp[] = "list contents of remote path through your pager";
|
|
||||||
HSTR pmlsdhelp[] = "list contents of remote directory in a machine "
|
|
||||||
"parsable form through your pager";
|
|
||||||
HSTR porthelp[] = "toggle use of PORT/LPRT cmd for each data connection";
|
|
||||||
HSTR preservehelp[] ="toggle preservation of modification time of "
|
|
||||||
"retrieved files";
|
|
||||||
HSTR progresshelp[] ="toggle transfer progress meter";
|
|
||||||
HSTR prompthelp[] = "force interactive prompting on multiple commands";
|
|
||||||
HSTR proxyhelp[] = "issue command on alternate connection";
|
|
||||||
HSTR pwdhelp[] = "print working directory on remote machine";
|
|
||||||
HSTR quithelp[] = "terminate ftp session and exit";
|
|
||||||
HSTR quotehelp[] = "send arbitrary ftp command";
|
|
||||||
HSTR ratehelp[] = "set transfer rate limit (in bytes/second)";
|
|
||||||
HSTR receivehelp[] = "receive file";
|
|
||||||
HSTR regethelp[] = "get file restarting at end of local file";
|
|
||||||
HSTR remotehelp[] = "get help from remote server";
|
|
||||||
HSTR renamehelp[] = "rename file";
|
|
||||||
HSTR resethelp[] = "clear queued command replies";
|
|
||||||
HSTR restarthelp[]= "restart file transfer at bytecount";
|
|
||||||
HSTR rmdirhelp[] = "remove directory on the remote machine";
|
|
||||||
HSTR rmtstatushelp[]="show status of remote machine";
|
|
||||||
HSTR runiquehelp[] = "toggle store unique for local files";
|
|
||||||
HSTR sendhelp[] = "send one file";
|
|
||||||
HSTR sethelp[] = "set or display options";
|
|
||||||
HSTR shellhelp[] = "escape to the shell";
|
|
||||||
HSTR sitehelp[] = "send site specific command to remote server\n"
|
|
||||||
"\t\tTry \"rhelp site\" or \"site help\" "
|
|
||||||
"for more information";
|
|
||||||
HSTR sizecmdhelp[] = "show size of remote file";
|
|
||||||
HSTR statushelp[] = "show current status";
|
|
||||||
HSTR structhelp[] = "set file transfer structure";
|
|
||||||
HSTR suniquehelp[] = "toggle store unique on remote machine";
|
|
||||||
HSTR systemhelp[] = "show remote system type";
|
|
||||||
HSTR tenexhelp[] = "set tenex file transfer type";
|
|
||||||
HSTR tracehelp[] = "toggle packet tracing";
|
|
||||||
HSTR typehelp[] = "set file transfer type";
|
|
||||||
HSTR umaskhelp[] = "get (set) umask on remote side";
|
|
||||||
HSTR unsethelp[] = "unset an option";
|
|
||||||
HSTR usagehelp[] = "show command usage";
|
|
||||||
HSTR userhelp[] = "send new user information";
|
|
||||||
HSTR verbosehelp[] = "toggle verbose mode";
|
|
||||||
HSTR xferbufhelp[] = "set socket send/receive buffer size";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
HSTR empty[] = "";
|
|
||||||
|
|
||||||
#ifdef NO_HELP
|
|
||||||
#define H(x) empty
|
|
||||||
#else
|
|
||||||
#define H(x) x
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NO_EDITCOMPLETE
|
|
||||||
#define CMPL(x)
|
|
||||||
#define CMPL0
|
|
||||||
#else /* !NO_EDITCOMPLETE */
|
|
||||||
#define CMPL(x) #x,
|
|
||||||
#define CMPL0 empty,
|
|
||||||
#endif /* !NO_EDITCOMPLETE */
|
|
||||||
|
|
||||||
struct cmd cmdtab[] = {
|
|
||||||
{ "!", H(shellhelp), 0, 0, 0, CMPL0 shell },
|
|
||||||
{ "$", H(domachelp), 1, 0, 0, CMPL0 domacro },
|
|
||||||
{ "account", H(accounthelp), 0, 1, 1, CMPL0 account},
|
|
||||||
{ "append", H(appendhelp), 1, 1, 1, CMPL(lr) put },
|
|
||||||
{ "ascii", H(asciihelp), 0, 1, 1, CMPL0 setascii },
|
|
||||||
{ "bell", H(beephelp), 0, 0, 0, CMPL0 setbell },
|
|
||||||
{ "binary", H(binaryhelp), 0, 1, 1, CMPL0 setbinary },
|
|
||||||
{ "bye", H(quithelp), 0, 0, 0, CMPL0 quit },
|
|
||||||
{ "case", H(casehelp), 0, 0, 1, CMPL0 setcase },
|
|
||||||
{ "cd", H(cdhelp), 0, 1, 1, CMPL(r) cd },
|
|
||||||
{ "cdup", H(cduphelp), 0, 1, 1, CMPL0 cdup },
|
|
||||||
{ "chmod", H(chmodhelp), 0, 1, 1, CMPL(nr) do_chmod },
|
|
||||||
{ "close", H(disconhelp), 0, 1, 1, CMPL0 disconnect },
|
|
||||||
{ "cr", H(crhelp), 0, 0, 0, CMPL0 setcr },
|
|
||||||
{ "debug", H(debughelp), 0, 0, 0, CMPL0 setdebug },
|
|
||||||
{ "delete", H(deletehelp), 0, 1, 1, CMPL(r) delete },
|
|
||||||
{ "dir", H(lshelp), 1, 1, 1, CMPL(rl) ls },
|
|
||||||
{ "disconnect", H(disconhelp), 0, 1, 1, CMPL0 disconnect },
|
|
||||||
{ "edit", H(edithelp), 0, 0, 0, CMPL0 setedit },
|
|
||||||
{ "epsv4", H(epsv4help), 0, 0, 0, CMPL0 setepsv4 },
|
|
||||||
{ "exit", H(quithelp), 0, 0, 0, CMPL0 quit },
|
|
||||||
{ "features", H(feathelp), 0, 1, 1, CMPL0 feat },
|
|
||||||
{ "fget", H(fgethelp), 1, 1, 1, CMPL(l) fget },
|
|
||||||
{ "form", H(formhelp), 0, 1, 1, CMPL0 setform },
|
|
||||||
{ "ftp", H(connecthelp), 0, 0, 1, CMPL0 setpeer },
|
|
||||||
{ "gate", H(gatehelp), 0, 0, 0, CMPL0 setgate },
|
|
||||||
{ "get", H(receivehelp), 1, 1, 1, CMPL(rl) get },
|
|
||||||
{ "glob", H(globhelp), 0, 0, 0, CMPL0 setglob },
|
|
||||||
{ "hash", H(hashhelp), 0, 0, 0, CMPL0 sethash },
|
|
||||||
{ "help", H(helphelp), 0, 0, 1, CMPL(C) help },
|
|
||||||
{ "idle", H(idlehelp), 0, 1, 1, CMPL0 idlecmd },
|
|
||||||
{ "image", H(binaryhelp), 0, 1, 1, CMPL0 setbinary },
|
|
||||||
{ "lcd", H(lcdhelp), 0, 0, 0, CMPL(l) lcd },
|
|
||||||
{ "less", H(pagehelp), 1, 1, 1, CMPL(r) page },
|
|
||||||
{ "lpage", H(lpagehelp), 0, 0, 0, CMPL(l) lpage },
|
|
||||||
{ "lpwd", H(lpwdhelp), 0, 0, 0, CMPL0 lpwd },
|
|
||||||
{ "ls", H(lshelp), 1, 1, 1, CMPL(rl) ls },
|
|
||||||
{ "macdef", H(macdefhelp), 0, 0, 0, CMPL0 macdef },
|
|
||||||
{ "mdelete", H(mdeletehelp), 1, 1, 1, CMPL(R) mdelete },
|
|
||||||
{ "mdir", H(mlshelp), 1, 1, 1, CMPL(R) mls },
|
|
||||||
{ "mget", H(mgethelp), 1, 1, 1, CMPL(R) mget },
|
|
||||||
{ "mkdir", H(mkdirhelp), 0, 1, 1, CMPL(r) makedir },
|
|
||||||
{ "mls", H(mlshelp), 1, 1, 1, CMPL(R) mls },
|
|
||||||
{ "mlsd", H(mlsdhelp), 1, 1, 1, CMPL(r) ls },
|
|
||||||
{ "mlst", H(mlsthelp), 1, 1, 1, CMPL(r) mlst },
|
|
||||||
{ "mode", H(modehelp), 0, 1, 1, CMPL0 setftmode },
|
|
||||||
{ "modtime", H(modtimehelp), 0, 1, 1, CMPL(r) modtime },
|
|
||||||
{ "more", H(pagehelp), 1, 1, 1, CMPL(r) page },
|
|
||||||
{ "mput", H(mputhelp), 1, 1, 1, CMPL(L) mput },
|
|
||||||
{ "mreget", H(mregethelp), 1, 1, 1, CMPL(R) mget },
|
|
||||||
{ "msend", H(mputhelp), 1, 1, 1, CMPL(L) mput },
|
|
||||||
{ "newer", H(newerhelp), 1, 1, 1, CMPL(r) newer },
|
|
||||||
{ "nlist", H(lshelp), 1, 1, 1, CMPL(rl) ls },
|
|
||||||
{ "nmap", H(nmaphelp), 0, 0, 1, CMPL0 setnmap },
|
|
||||||
{ "ntrans", H(ntranshelp), 0, 0, 1, CMPL0 setntrans },
|
|
||||||
{ "open", H(connecthelp), 0, 0, 1, CMPL0 setpeer },
|
|
||||||
{ "page", H(pagehelp), 1, 1, 1, CMPL(r) page },
|
|
||||||
{ "passive", H(passivehelp), 0, 0, 0, CMPL0 setpassive },
|
|
||||||
{ "pdir", H(plshelp), 1, 1, 1, CMPL(r) ls },
|
|
||||||
{ "pls", H(plshelp), 1, 1, 1, CMPL(r) ls },
|
|
||||||
{ "pmlsd", H(pmlsdhelp), 1, 1, 1, CMPL(r) ls },
|
|
||||||
{ "preserve", H(preservehelp),0, 0, 0, CMPL0 setpreserve },
|
|
||||||
{ "progress", H(progresshelp),0, 0, 0, CMPL0 setprogress },
|
|
||||||
{ "prompt", H(prompthelp), 0, 0, 0, CMPL0 setprompt },
|
|
||||||
{ "proxy", H(proxyhelp), 0, 0, 1, CMPL(c) doproxy },
|
|
||||||
{ "put", H(sendhelp), 1, 1, 1, CMPL(lr) put },
|
|
||||||
{ "pwd", H(pwdhelp), 0, 1, 1, CMPL0 pwd },
|
|
||||||
{ "quit", H(quithelp), 0, 0, 0, CMPL0 quit },
|
|
||||||
{ "quote", H(quotehelp), 1, 1, 1, CMPL0 quote },
|
|
||||||
{ "rate", H(ratehelp), 0, 0, 0, CMPL0 setrate },
|
|
||||||
{ "rcvbuf", H(xferbufhelp), 0, 0, 0, CMPL0 setxferbuf },
|
|
||||||
{ "recv", H(receivehelp), 1, 1, 1, CMPL(rl) get },
|
|
||||||
{ "reget", H(regethelp), 1, 1, 1, CMPL(rl) reget },
|
|
||||||
{ "remopts", H(optshelp), 0, 1, 1, CMPL0 opts },
|
|
||||||
{ "rename", H(renamehelp), 0, 1, 1, CMPL(rr) renamefile },
|
|
||||||
{ "reset", H(resethelp), 0, 1, 1, CMPL0 reset },
|
|
||||||
{ "restart", H(restarthelp), 1, 1, 1, CMPL0 restart },
|
|
||||||
{ "rhelp", H(remotehelp), 0, 1, 1, CMPL0 rmthelp },
|
|
||||||
{ "rmdir", H(rmdirhelp), 0, 1, 1, CMPL(r) removedir },
|
|
||||||
{ "rstatus", H(rmtstatushelp),0, 1, 1, CMPL(r) rmtstatus },
|
|
||||||
{ "runique", H(runiquehelp), 0, 0, 1, CMPL0 setrunique },
|
|
||||||
{ "send", H(sendhelp), 1, 1, 1, CMPL(lr) put },
|
|
||||||
{ "sendport", H(porthelp), 0, 0, 0, CMPL0 setport },
|
|
||||||
{ "set", H(sethelp), 0, 0, 0, CMPL(o) setoption },
|
|
||||||
{ "site", H(sitehelp), 0, 1, 1, CMPL0 site },
|
|
||||||
{ "size", H(sizecmdhelp), 1, 1, 1, CMPL(r) sizecmd },
|
|
||||||
{ "sndbuf", H(xferbufhelp), 0, 0, 0, CMPL0 setxferbuf },
|
|
||||||
{ "status", H(statushelp), 0, 0, 1, CMPL0 status },
|
|
||||||
{ "struct", H(structhelp), 0, 1, 1, CMPL0 setstruct },
|
|
||||||
{ "sunique", H(suniquehelp), 0, 0, 1, CMPL0 setsunique },
|
|
||||||
{ "system", H(systemhelp), 0, 1, 1, CMPL0 syst },
|
|
||||||
{ "tenex", H(tenexhelp), 0, 1, 1, CMPL0 settenex },
|
|
||||||
{ "throttle", H(ratehelp), 0, 0, 0, CMPL0 setrate },
|
|
||||||
{ "trace", H(tracehelp), 0, 0, 0, CMPL0 settrace },
|
|
||||||
{ "type", H(typehelp), 0, 1, 1, CMPL0 settype },
|
|
||||||
{ "umask", H(umaskhelp), 0, 1, 1, CMPL0 do_umask },
|
|
||||||
{ "unset", H(unsethelp), 0, 0, 0, CMPL(o) unsetoption },
|
|
||||||
{ "usage", H(usagehelp), 0, 0, 1, CMPL(C) help },
|
|
||||||
{ "user", H(userhelp), 0, 1, 1, CMPL0 user },
|
|
||||||
{ "verbose", H(verbosehelp), 0, 0, 0, CMPL0 setverbose },
|
|
||||||
{ "xferbuf", H(xferbufhelp), 0, 0, 0, CMPL0 setxferbuf },
|
|
||||||
{ "?", H(helphelp), 0, 0, 1, CMPL(C) help },
|
|
||||||
{ 0 },
|
|
||||||
};
|
|
||||||
|
|
||||||
struct option optiontab[] = {
|
|
||||||
{ "anonpass", NULL },
|
|
||||||
{ "ftp_proxy", NULL },
|
|
||||||
{ "http_proxy", NULL },
|
|
||||||
{ "no_proxy", NULL },
|
|
||||||
{ "pager", NULL },
|
|
||||||
{ "prompt", NULL },
|
|
||||||
{ "rprompt", NULL },
|
|
||||||
{ 0 },
|
|
||||||
};
|
|
@ -1,435 +0,0 @@
|
|||||||
/* $NetBSD: complete.c,v 1.38 2000/05/01 10:35:17 lukem Exp $ */
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 1997-2000 The NetBSD Foundation, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
|
||||||
* by Luke Mewburn.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
||||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
|
||||||
#ifndef lint
|
|
||||||
__RCSID("$NetBSD: complete.c,v 1.38 2000/05/01 10:35:17 lukem Exp $");
|
|
||||||
#endif /* not lint */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* FTP user program - command and file completion routines
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <err.h>
|
|
||||||
#include <dirent.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "ftp_var.h"
|
|
||||||
|
|
||||||
#ifndef NO_EDITCOMPLETE
|
|
||||||
|
|
||||||
static int comparstr (const void *, const void *);
|
|
||||||
static unsigned char complete_ambiguous (char *, int, StringList *);
|
|
||||||
static unsigned char complete_command (char *, int);
|
|
||||||
static unsigned char complete_local (char *, int);
|
|
||||||
static unsigned char complete_option (char *, int);
|
|
||||||
static unsigned char complete_remote (char *, int);
|
|
||||||
|
|
||||||
static int
|
|
||||||
comparstr(const void *a, const void *b)
|
|
||||||
{
|
|
||||||
return (strcmp(*(const char **)a, *(const char **)b));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Determine if complete is ambiguous. If unique, insert.
|
|
||||||
* If no choices, error. If unambiguous prefix, insert that.
|
|
||||||
* Otherwise, list choices. words is assumed to be filtered
|
|
||||||
* to only contain possible choices.
|
|
||||||
* Args:
|
|
||||||
* word word which started the match
|
|
||||||
* list list by default
|
|
||||||
* words stringlist containing possible matches
|
|
||||||
* Returns a result as per el_set(EL_ADDFN, ...)
|
|
||||||
*/
|
|
||||||
static unsigned char
|
|
||||||
complete_ambiguous(char *word, int list, StringList *words)
|
|
||||||
{
|
|
||||||
char insertstr[MAXPATHLEN];
|
|
||||||
char *lastmatch, *p;
|
|
||||||
int i, j;
|
|
||||||
size_t matchlen, wordlen;
|
|
||||||
|
|
||||||
wordlen = strlen(word);
|
|
||||||
if (words->sl_cur == 0)
|
|
||||||
return (CC_ERROR); /* no choices available */
|
|
||||||
|
|
||||||
if (words->sl_cur == 1) { /* only once choice available */
|
|
||||||
p = words->sl_str[0] + wordlen;
|
|
||||||
if (*p == '\0') /* at end of word? */
|
|
||||||
return (CC_REFRESH);
|
|
||||||
ftpvis(insertstr, sizeof(insertstr), p, strlen(p));
|
|
||||||
if (el_insertstr(el, insertstr) == -1)
|
|
||||||
return (CC_ERROR);
|
|
||||||
else
|
|
||||||
return (CC_REFRESH);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!list) {
|
|
||||||
matchlen = 0;
|
|
||||||
lastmatch = words->sl_str[0];
|
|
||||||
matchlen = strlen(lastmatch);
|
|
||||||
for (i = 1 ; i < words->sl_cur ; i++) {
|
|
||||||
for (j = wordlen ; j < strlen(words->sl_str[i]); j++)
|
|
||||||
if (lastmatch[j] != words->sl_str[i][j])
|
|
||||||
break;
|
|
||||||
if (j < matchlen)
|
|
||||||
matchlen = j;
|
|
||||||
}
|
|
||||||
if (matchlen > wordlen) {
|
|
||||||
ftpvis(insertstr, sizeof(insertstr),
|
|
||||||
lastmatch + wordlen, matchlen - wordlen);
|
|
||||||
if (el_insertstr(el, insertstr) == -1)
|
|
||||||
return (CC_ERROR);
|
|
||||||
else
|
|
||||||
return (CC_REFRESH_BEEP);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
putc('\n', ttyout);
|
|
||||||
qsort(words->sl_str, words->sl_cur, sizeof(char *), comparstr);
|
|
||||||
list_vertical(words);
|
|
||||||
return (CC_REDISPLAY);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Complete a command
|
|
||||||
*/
|
|
||||||
static unsigned char
|
|
||||||
complete_command(char *word, int list)
|
|
||||||
{
|
|
||||||
struct cmd *c;
|
|
||||||
StringList *words;
|
|
||||||
size_t wordlen;
|
|
||||||
unsigned char rv;
|
|
||||||
|
|
||||||
words = xsl_init();
|
|
||||||
wordlen = strlen(word);
|
|
||||||
|
|
||||||
for (c = cmdtab; c->c_name != NULL; c++) {
|
|
||||||
if (wordlen > strlen(c->c_name))
|
|
||||||
continue;
|
|
||||||
if (strncmp(word, c->c_name, wordlen) == 0)
|
|
||||||
xsl_add(words, c->c_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = complete_ambiguous(word, list, words);
|
|
||||||
if (rv == CC_REFRESH) {
|
|
||||||
if (el_insertstr(el, " ") == -1)
|
|
||||||
rv = CC_ERROR;
|
|
||||||
}
|
|
||||||
sl_free(words, 0);
|
|
||||||
return (rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Complete a local file
|
|
||||||
*/
|
|
||||||
static unsigned char
|
|
||||||
complete_local(char *word, int list)
|
|
||||||
{
|
|
||||||
StringList *words;
|
|
||||||
char dir[MAXPATHLEN];
|
|
||||||
char *file;
|
|
||||||
DIR *dd;
|
|
||||||
struct dirent *dp;
|
|
||||||
unsigned char rv;
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
if ((file = strrchr(word, '/')) == NULL) {
|
|
||||||
dir[0] = '.';
|
|
||||||
dir[1] = '\0';
|
|
||||||
file = word;
|
|
||||||
} else {
|
|
||||||
if (file == word) {
|
|
||||||
dir[0] = '/';
|
|
||||||
dir[1] = '\0';
|
|
||||||
} else
|
|
||||||
(void)strlcpy(dir, word, file - word + 1);
|
|
||||||
file++;
|
|
||||||
}
|
|
||||||
if (dir[0] == '~') {
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
if ((p = globulize(dir)) == NULL)
|
|
||||||
return (CC_ERROR);
|
|
||||||
(void)strlcpy(dir, p, sizeof(dir));
|
|
||||||
free(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((dd = opendir(dir)) == NULL)
|
|
||||||
return (CC_ERROR);
|
|
||||||
|
|
||||||
words = xsl_init();
|
|
||||||
len = strlen(file);
|
|
||||||
|
|
||||||
for (dp = readdir(dd); dp != NULL; dp = readdir(dd)) {
|
|
||||||
if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, ".."))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
#if defined(DIRENT_MISSING_D_NAMLEN)
|
|
||||||
if (len > strlen(dp->d_name))
|
|
||||||
continue;
|
|
||||||
#else
|
|
||||||
if (len > dp->d_namlen)
|
|
||||||
continue;
|
|
||||||
#endif
|
|
||||||
if (strncmp(file, dp->d_name, len) == 0) {
|
|
||||||
char *tcp;
|
|
||||||
|
|
||||||
tcp = xstrdup(dp->d_name);
|
|
||||||
xsl_add(words, tcp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
closedir(dd);
|
|
||||||
|
|
||||||
rv = complete_ambiguous(file, list, words);
|
|
||||||
if (rv == CC_REFRESH) {
|
|
||||||
struct stat sb;
|
|
||||||
char path[MAXPATHLEN];
|
|
||||||
|
|
||||||
(void)strlcpy(path, dir, sizeof(path));
|
|
||||||
(void)strlcat(path, "/", sizeof(path));
|
|
||||||
(void)strlcat(path, words->sl_str[0], sizeof(path));
|
|
||||||
|
|
||||||
if (stat(path, &sb) >= 0) {
|
|
||||||
char suffix[2] = " ";
|
|
||||||
|
|
||||||
if (S_ISDIR(sb.st_mode))
|
|
||||||
suffix[0] = '/';
|
|
||||||
if (el_insertstr(el, suffix) == -1)
|
|
||||||
rv = CC_ERROR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sl_free(words, 1);
|
|
||||||
return (rv);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Complete an option
|
|
||||||
*/
|
|
||||||
static unsigned char
|
|
||||||
complete_option(char *word, int list)
|
|
||||||
{
|
|
||||||
struct option *o;
|
|
||||||
StringList *words;
|
|
||||||
size_t wordlen;
|
|
||||||
unsigned char rv;
|
|
||||||
|
|
||||||
words = xsl_init();
|
|
||||||
wordlen = strlen(word);
|
|
||||||
|
|
||||||
for (o = optiontab; o->name != NULL; o++) {
|
|
||||||
if (wordlen > strlen(o->name))
|
|
||||||
continue;
|
|
||||||
if (strncmp(word, o->name, wordlen) == 0)
|
|
||||||
xsl_add(words, o->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = complete_ambiguous(word, list, words);
|
|
||||||
if (rv == CC_REFRESH) {
|
|
||||||
if (el_insertstr(el, " ") == -1)
|
|
||||||
rv = CC_ERROR;
|
|
||||||
}
|
|
||||||
sl_free(words, 0);
|
|
||||||
return (rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Complete a remote file
|
|
||||||
*/
|
|
||||||
static unsigned char
|
|
||||||
complete_remote(char *word, int list)
|
|
||||||
{
|
|
||||||
static StringList *dirlist;
|
|
||||||
static char lastdir[MAXPATHLEN];
|
|
||||||
StringList *words;
|
|
||||||
char dir[MAXPATHLEN];
|
|
||||||
char *file, *cp;
|
|
||||||
int i;
|
|
||||||
unsigned char rv;
|
|
||||||
|
|
||||||
char *dummyargv[] = { "complete", NULL, NULL };
|
|
||||||
dummyargv[1] = dir;
|
|
||||||
|
|
||||||
if ((file = strrchr(word, '/')) == NULL) {
|
|
||||||
dir[0] = '\0';
|
|
||||||
file = word;
|
|
||||||
} else {
|
|
||||||
cp = file;
|
|
||||||
while (*cp == '/' && cp > word)
|
|
||||||
cp--;
|
|
||||||
(void)strlcpy(dir, word, cp - word + 2);
|
|
||||||
file++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dirchange || dirlist == NULL ||
|
|
||||||
strcmp(dir, lastdir) != 0) { /* dir not cached */
|
|
||||||
char *emesg;
|
|
||||||
|
|
||||||
if (dirlist != NULL)
|
|
||||||
sl_free(dirlist, 1);
|
|
||||||
dirlist = xsl_init();
|
|
||||||
|
|
||||||
mflag = 1;
|
|
||||||
emesg = NULL;
|
|
||||||
while ((cp = remglob(dummyargv, 0, &emesg)) != NULL) {
|
|
||||||
char *tcp;
|
|
||||||
|
|
||||||
if (!mflag)
|
|
||||||
continue;
|
|
||||||
if (*cp == '\0') {
|
|
||||||
mflag = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
tcp = strrchr(cp, '/');
|
|
||||||
if (tcp)
|
|
||||||
tcp++;
|
|
||||||
else
|
|
||||||
tcp = cp;
|
|
||||||
tcp = xstrdup(tcp);
|
|
||||||
xsl_add(dirlist, tcp);
|
|
||||||
}
|
|
||||||
if (emesg != NULL) {
|
|
||||||
fprintf(ttyout, "\n%s\n", emesg);
|
|
||||||
return (CC_REDISPLAY);
|
|
||||||
}
|
|
||||||
(void)strlcpy(lastdir, dir, sizeof(lastdir));
|
|
||||||
dirchange = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
words = xsl_init();
|
|
||||||
for (i = 0; i < dirlist->sl_cur; i++) {
|
|
||||||
cp = dirlist->sl_str[i];
|
|
||||||
if (strlen(file) > strlen(cp))
|
|
||||||
continue;
|
|
||||||
if (strncmp(file, cp, strlen(file)) == 0)
|
|
||||||
xsl_add(words, cp);
|
|
||||||
}
|
|
||||||
rv = complete_ambiguous(file, list, words);
|
|
||||||
sl_free(words, 0);
|
|
||||||
return (rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Generic complete routine
|
|
||||||
*/
|
|
||||||
unsigned char
|
|
||||||
complete(EditLine *el, int ch)
|
|
||||||
{
|
|
||||||
static char word[FTPBUFLEN];
|
|
||||||
static int lastc_argc, lastc_argo;
|
|
||||||
|
|
||||||
struct cmd *c;
|
|
||||||
const LineInfo *lf;
|
|
||||||
int celems, dolist, cmpltype;
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
lf = el_line(el);
|
|
||||||
len = lf->lastchar - lf->buffer;
|
|
||||||
if (len >= sizeof(line))
|
|
||||||
return (CC_ERROR);
|
|
||||||
(void)strlcpy(line, lf->buffer, len + 1);
|
|
||||||
cursor_pos = line + (lf->cursor - lf->buffer);
|
|
||||||
lastc_argc = cursor_argc; /* remember last cursor pos */
|
|
||||||
lastc_argo = cursor_argo;
|
|
||||||
makeargv(); /* build argc/argv of current line */
|
|
||||||
|
|
||||||
if (cursor_argo >= sizeof(word))
|
|
||||||
return (CC_ERROR);
|
|
||||||
|
|
||||||
dolist = 0;
|
|
||||||
/* if cursor and word is same, list alternatives */
|
|
||||||
if (lastc_argc == cursor_argc && lastc_argo == cursor_argo
|
|
||||||
&& strncmp(word, margv[cursor_argc] ? margv[cursor_argc] : "",
|
|
||||||
cursor_argo) == 0)
|
|
||||||
dolist = 1;
|
|
||||||
else if (cursor_argc < margc)
|
|
||||||
(void)strlcpy(word, margv[cursor_argc], cursor_argo + 1);
|
|
||||||
word[cursor_argo] = '\0';
|
|
||||||
|
|
||||||
if (cursor_argc == 0)
|
|
||||||
return (complete_command(word, dolist));
|
|
||||||
|
|
||||||
c = getcmd(margv[0]);
|
|
||||||
if (c == (struct cmd *)-1 || c == 0)
|
|
||||||
return (CC_ERROR);
|
|
||||||
celems = strlen(c->c_complete);
|
|
||||||
|
|
||||||
/* check for 'continuation' completes (which are uppercase) */
|
|
||||||
if ((cursor_argc > celems) && (celems > 0)
|
|
||||||
&& isupper((unsigned char) c->c_complete[celems-1]))
|
|
||||||
cursor_argc = celems;
|
|
||||||
|
|
||||||
if (cursor_argc > celems)
|
|
||||||
return (CC_ERROR);
|
|
||||||
|
|
||||||
cmpltype = c->c_complete[cursor_argc - 1];
|
|
||||||
switch (cmpltype) {
|
|
||||||
case 'c': /* command complete */
|
|
||||||
case 'C':
|
|
||||||
return (complete_command(word, dolist));
|
|
||||||
case 'l': /* local complete */
|
|
||||||
case 'L':
|
|
||||||
return (complete_local(word, dolist));
|
|
||||||
case 'n': /* no complete */
|
|
||||||
case 'N': /* no complete */
|
|
||||||
return (CC_ERROR);
|
|
||||||
case 'o': /* local complete */
|
|
||||||
case 'O':
|
|
||||||
return (complete_option(word, dolist));
|
|
||||||
case 'r': /* remote complete */
|
|
||||||
case 'R':
|
|
||||||
if (connected != -1) {
|
|
||||||
fputs("\nMust be logged in to complete.\n",
|
|
||||||
ttyout);
|
|
||||||
return (CC_REDISPLAY);
|
|
||||||
}
|
|
||||||
return (complete_remote(word, dolist));
|
|
||||||
default:
|
|
||||||
errx(1, "unknown complete type `%c'", cmpltype);
|
|
||||||
return (CC_ERROR);
|
|
||||||
}
|
|
||||||
/* NOTREACHED */
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* !NO_EDITCOMPLETE */
|
|
@ -1,143 +0,0 @@
|
|||||||
/* $NetBSD: domacro.c,v 1.20 2003/08/07 11:13:53 agc Exp $ */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 1985, 1993, 1994
|
|
||||||
* The Regents of the University of California. All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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. 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.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
|
||||||
#ifndef lint
|
|
||||||
#if 0
|
|
||||||
static char sccsid[] = "@(#)domacro.c 8.3 (Berkeley) 4/2/94";
|
|
||||||
#else
|
|
||||||
__RCSID("$NetBSD: domacro.c,v 1.20 2003/08/07 11:13:53 agc Exp $");
|
|
||||||
#endif
|
|
||||||
#endif /* not lint */
|
|
||||||
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "ftp_var.h"
|
|
||||||
|
|
||||||
void
|
|
||||||
domacro(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int i, j, count = 2, loopflg = 0;
|
|
||||||
char *cp1, *cp2, line2[FTPBUFLEN];
|
|
||||||
struct cmd *c;
|
|
||||||
|
|
||||||
if ((argc == 0 && argv != NULL) ||
|
|
||||||
(argc < 2 && !another(&argc, &argv, "macro name"))) {
|
|
||||||
fprintf(ttyout, "usage: %s macro_name [args]\n", argv[0]);
|
|
||||||
code = -1;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (i = 0; i < macnum; ++i) {
|
|
||||||
if (!strncmp(argv[1], macros[i].mac_name, 9))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (i == macnum) {
|
|
||||||
fprintf(ttyout, "'%s' macro not found.\n", argv[1]);
|
|
||||||
code = -1;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
(void)strlcpy(line2, line, sizeof(line2));
|
|
||||||
TOP:
|
|
||||||
cp1 = macros[i].mac_start;
|
|
||||||
while (cp1 != macros[i].mac_end) {
|
|
||||||
while (isspace((unsigned char)*cp1))
|
|
||||||
cp1++;
|
|
||||||
cp2 = line;
|
|
||||||
while (*cp1 != '\0') {
|
|
||||||
switch(*cp1) {
|
|
||||||
case '\\':
|
|
||||||
*cp2++ = *++cp1;
|
|
||||||
break;
|
|
||||||
case '$':
|
|
||||||
if (isdigit((unsigned char)*(cp1+1))) {
|
|
||||||
j = 0;
|
|
||||||
while (isdigit((unsigned char)*++cp1))
|
|
||||||
j = 10*j + *cp1 - '0';
|
|
||||||
cp1--;
|
|
||||||
if (argc - 2 >= j) {
|
|
||||||
(void)strlcpy(cp2, argv[j+1],
|
|
||||||
sizeof(line) - (cp2 - line));
|
|
||||||
cp2 += strlen(argv[j+1]);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (*(cp1+1) == 'i') {
|
|
||||||
loopflg = 1;
|
|
||||||
cp1++;
|
|
||||||
if (count < argc) {
|
|
||||||
(void)strlcpy(cp2, argv[count],
|
|
||||||
sizeof(line) - (cp2 - line));
|
|
||||||
cp2 += strlen(argv[count]);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
/* intentional drop through */
|
|
||||||
default:
|
|
||||||
*cp2++ = *cp1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (*cp1 != '\0')
|
|
||||||
cp1++;
|
|
||||||
}
|
|
||||||
*cp2 = '\0';
|
|
||||||
makeargv();
|
|
||||||
c = getcmd(margv[0]);
|
|
||||||
if (c == (struct cmd *)-1) {
|
|
||||||
fputs("?Ambiguous command.\n", ttyout);
|
|
||||||
code = -1;
|
|
||||||
} else if (c == 0) {
|
|
||||||
fputs("?Invalid command.\n", ttyout);
|
|
||||||
code = -1;
|
|
||||||
} else if (c->c_conn && !connected) {
|
|
||||||
fputs("Not connected.\n", ttyout);
|
|
||||||
code = -1;
|
|
||||||
} else {
|
|
||||||
if (verbose) {
|
|
||||||
fputs(line, ttyout);
|
|
||||||
putc('\n', ttyout);
|
|
||||||
}
|
|
||||||
margv[0] = c->c_name;
|
|
||||||
(*c->c_handler)(margc, margv);
|
|
||||||
if (bell && c->c_bell)
|
|
||||||
(void)putc('\007', ttyout);
|
|
||||||
(void)strlcpy(line, line2, sizeof(line));
|
|
||||||
makeargv();
|
|
||||||
argc = margc;
|
|
||||||
argv = margv;
|
|
||||||
}
|
|
||||||
if (cp1 != macros[i].mac_end)
|
|
||||||
cp1++;
|
|
||||||
}
|
|
||||||
if (loopflg && ++count < argc)
|
|
||||||
goto TOP;
|
|
||||||
}
|
|
@ -1,257 +0,0 @@
|
|||||||
/* $NetBSD: extern.h,v 1.67 2005/05/14 15:26:43 lukem Exp $ */
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 1996-2005 The NetBSD Foundation, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
|
||||||
* by Luke Mewburn.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
||||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 1994 The Regents of the University of California.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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. 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.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* @(#)extern.h 8.3 (Berkeley) 10/9/94
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 1997 and 1998 WIDE Project.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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. Neither the name of the project nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct sockaddr;
|
|
||||||
struct tm;
|
|
||||||
struct addrinfo;
|
|
||||||
|
|
||||||
void abort_remote(FILE *);
|
|
||||||
void abort_squared(int);
|
|
||||||
void abortpt(int);
|
|
||||||
void abortxfer(int);
|
|
||||||
void account(int, char **);
|
|
||||||
void ai_unmapped(struct addrinfo *);
|
|
||||||
int another(int *, char ***, const char *);
|
|
||||||
int auto_fetch(int, char **);
|
|
||||||
int auto_put(int, char **, const char *);
|
|
||||||
void blkfree(char **);
|
|
||||||
void cd(int, char **);
|
|
||||||
void cdup(int, char **);
|
|
||||||
void changetype(int, int);
|
|
||||||
void cleanuppeer(void);
|
|
||||||
void cmdabort(int);
|
|
||||||
void cmdtimeout(int);
|
|
||||||
void cmdscanner(void);
|
|
||||||
int command(const char *, ...)
|
|
||||||
__attribute__((__format__(__printf__, 1, 2)));
|
|
||||||
#ifndef NO_EDITCOMPLETE
|
|
||||||
unsigned char complete(EditLine *, int);
|
|
||||||
void controlediting(void);
|
|
||||||
#endif /* !NO_EDITCOMPLETE */
|
|
||||||
void crankrate(int);
|
|
||||||
FILE *dataconn(const char *);
|
|
||||||
void delete(int, char **);
|
|
||||||
void disconnect(int, char **);
|
|
||||||
void do_chmod(int, char **);
|
|
||||||
void do_umask(int, char **);
|
|
||||||
void domacro(int, char **);
|
|
||||||
void doproxy(int, char **);
|
|
||||||
void feat(int, char **);
|
|
||||||
void fget(int, char **);
|
|
||||||
int fileindir(const char *, const char *);
|
|
||||||
int foregroundproc(void);
|
|
||||||
void formatbuf(char *, size_t, const char *);
|
|
||||||
void ftpvis(char *, size_t, const char *, size_t);
|
|
||||||
int ftp_login(const char *, const char *, const char *);
|
|
||||||
void get(int, char **);
|
|
||||||
struct cmd *getcmd(const char *);
|
|
||||||
int getit(int, char **, int, const char *);
|
|
||||||
struct option *getoption(const char *);
|
|
||||||
char *getoptionvalue(const char *);
|
|
||||||
void getremoteinfo(void);
|
|
||||||
int getreply(int);
|
|
||||||
char *globulize(const char *);
|
|
||||||
char *gunique(const char *);
|
|
||||||
void help(int, char **);
|
|
||||||
char *hookup(char *, char *);
|
|
||||||
void idlecmd(int, char **);
|
|
||||||
int initconn(void);
|
|
||||||
void intr(int);
|
|
||||||
int isipv6addr(const char *);
|
|
||||||
void list_vertical(StringList *);
|
|
||||||
void lcd(int, char **);
|
|
||||||
void lostpeer(int);
|
|
||||||
void lpage(int, char **);
|
|
||||||
void lpwd(int, char **);
|
|
||||||
void ls(int, char **);
|
|
||||||
void mabort(void);
|
|
||||||
void macdef(int, char **);
|
|
||||||
void makeargv(void);
|
|
||||||
void makedir(int, char **);
|
|
||||||
void mdelete(int, char **);
|
|
||||||
void mget(int, char **);
|
|
||||||
void mintr(int);
|
|
||||||
void mls(int, char **);
|
|
||||||
void mlst(int, char **);
|
|
||||||
void modtime(int, char **);
|
|
||||||
void mput(int, char **);
|
|
||||||
char *onoff(int);
|
|
||||||
void opts(int, char **);
|
|
||||||
void newer(int, char **);
|
|
||||||
void page(int, char **);
|
|
||||||
int parseport(const char *, int);
|
|
||||||
int parserate(int, char **, int);
|
|
||||||
char *prompt(void);
|
|
||||||
void proxabort(int);
|
|
||||||
void proxtrans(const char *, const char *, const char *);
|
|
||||||
void psabort(int);
|
|
||||||
void pswitch(int);
|
|
||||||
void put(int, char **);
|
|
||||||
void pwd(int, char **);
|
|
||||||
void quit(int, char **);
|
|
||||||
void quote(int, char **);
|
|
||||||
void quote1(const char *, int, char **);
|
|
||||||
void recvrequest(const char *, const char *, const char *,
|
|
||||||
const char *, int, int);
|
|
||||||
void reget(int, char **);
|
|
||||||
char *remglob(char **, int, char **);
|
|
||||||
time_t remotemodtime(const char *, int);
|
|
||||||
off_t remotesize(const char *, int);
|
|
||||||
void removedir(int, char **);
|
|
||||||
void renamefile(int, char **);
|
|
||||||
void reset(int, char **);
|
|
||||||
void restart(int, char **);
|
|
||||||
void rmthelp(int, char **);
|
|
||||||
void rmtstatus(int, char **);
|
|
||||||
char *rprompt(void);
|
|
||||||
int ruserpass(const char *, const char **, const char **,
|
|
||||||
const char **);
|
|
||||||
void sendrequest(const char *, const char *, const char *, int);
|
|
||||||
void setascii(int, char **);
|
|
||||||
void setbell(int, char **);
|
|
||||||
void setbinary(int, char **);
|
|
||||||
void setcase(int, char **);
|
|
||||||
void setcr(int, char **);
|
|
||||||
void setdebug(int, char **);
|
|
||||||
void setedit(int, char **);
|
|
||||||
void setepsv4(int, char **);
|
|
||||||
void setform(int, char **);
|
|
||||||
void setftmode(int, char **);
|
|
||||||
void setgate(int, char **);
|
|
||||||
void setglob(int, char **);
|
|
||||||
void sethash(int, char **);
|
|
||||||
void setnmap(int, char **);
|
|
||||||
void setntrans(int, char **);
|
|
||||||
void setoption(int, char **);
|
|
||||||
void setpassive(int, char **);
|
|
||||||
void setpeer(int, char **);
|
|
||||||
void setport(int, char **);
|
|
||||||
void setpreserve(int, char **);
|
|
||||||
void setprogress(int, char **);
|
|
||||||
void setprompt(int, char **);
|
|
||||||
void setrate(int, char **);
|
|
||||||
void setrunique(int, char **);
|
|
||||||
void setstruct(int, char **);
|
|
||||||
void setsunique(int, char **);
|
|
||||||
void settenex(int, char **);
|
|
||||||
void settrace(int, char **);
|
|
||||||
void setttywidth(int);
|
|
||||||
void settype(int, char **);
|
|
||||||
void setupsockbufsize(int);
|
|
||||||
void setverbose(int, char **);
|
|
||||||
void setxferbuf(int, char **);
|
|
||||||
void shell(int, char **);
|
|
||||||
void site(int, char **);
|
|
||||||
void sizecmd(int, char **);
|
|
||||||
char *slurpstring(void);
|
|
||||||
void status(int, char **);
|
|
||||||
int strsuftoi(const char *);
|
|
||||||
void syst(int, char **);
|
|
||||||
int togglevar(int, char **, int *, const char *);
|
|
||||||
void unsetoption(int, char **);
|
|
||||||
void updatelocalcwd(void);
|
|
||||||
void updateremotecwd(void);
|
|
||||||
void usage(void);
|
|
||||||
void user(int, char **);
|
|
||||||
int xconnect(int, const struct sockaddr *, socklen_t);
|
|
||||||
int xlisten(int, int);
|
|
||||||
int xpoll(struct pollfd *, int, int);
|
|
||||||
void *xmalloc(size_t);
|
|
||||||
StringList *xsl_init(void);
|
|
||||||
void xsl_add(StringList *, char *);
|
|
||||||
char *xstrdup(const char *);
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,337 +0,0 @@
|
|||||||
/* $NetBSD: ftp_var.h,v 1.71 2005/04/11 01:49:31 lukem Exp $ */
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 1996-2005 The NetBSD Foundation, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
|
||||||
* by Luke Mewburn.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
||||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 1985, 1989, 1993, 1994
|
|
||||||
* The Regents of the University of California. All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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. 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.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* @(#)ftp_var.h 8.4 (Berkeley) 10/9/94
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 1997 and 1998 WIDE Project.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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. Neither the name of the project nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* FTP global variables.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef SMALL
|
|
||||||
#undef NO_EDITCOMPLETE
|
|
||||||
#define NO_EDITCOMPLETE
|
|
||||||
#undef NO_PROGRESS
|
|
||||||
#define NO_PROGRESS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sys/param.h>
|
|
||||||
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
|
|
||||||
#include <poll.h>
|
|
||||||
|
|
||||||
#include <setjmp.h>
|
|
||||||
#include <stringlist.h>
|
|
||||||
|
|
||||||
#ifndef NO_EDITCOMPLETE
|
|
||||||
#include <histedit.h>
|
|
||||||
#endif /* !NO_EDITCOMPLETE */
|
|
||||||
|
|
||||||
#include "extern.h"
|
|
||||||
#include "progressbar.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Format of command table.
|
|
||||||
*/
|
|
||||||
struct cmd {
|
|
||||||
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
|
|
||||||
const char *c_complete; /* context sensitive completion list */
|
|
||||||
#endif /* !NO_EDITCOMPLETE */
|
|
||||||
void (*c_handler)(int, char **); /* function to call */
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Format of macro table
|
|
||||||
*/
|
|
||||||
struct macel {
|
|
||||||
char mac_name[9]; /* macro name */
|
|
||||||
char *mac_start; /* start of macro in macbuf */
|
|
||||||
char *mac_end; /* end of macro in macbuf */
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Format of option table
|
|
||||||
*/
|
|
||||||
struct option {
|
|
||||||
char *name;
|
|
||||||
char *value;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Indices to features[]; an array containing status of remote server
|
|
||||||
* features; -1 not known (FEAT failed), 0 absent, 1 present.
|
|
||||||
*/
|
|
||||||
enum {
|
|
||||||
FEAT_FEAT = 0, /* FEAT, OPTS */
|
|
||||||
FEAT_MDTM, /* MDTM */
|
|
||||||
FEAT_MLST, /* MLSD, MLST */
|
|
||||||
FEAT_REST_STREAM, /* RESTart STREAM */
|
|
||||||
FEAT_SIZE, /* SIZE */
|
|
||||||
FEAT_TVFS, /* TVFS (not used) */
|
|
||||||
FEAT_max
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Global defines
|
|
||||||
*/
|
|
||||||
#define FTPBUFLEN MAXPATHLEN + 200
|
|
||||||
#define MAX_IN_PORT_T 0xffffU
|
|
||||||
|
|
||||||
#define HASHBYTES 1024 /* default mark for `hash' command */
|
|
||||||
#define DEFAULTINCR 1024 /* default increment for `rate' command */
|
|
||||||
|
|
||||||
#define FTP_PORT 21 /* default if ! getservbyname("ftp/tcp") */
|
|
||||||
#define HTTP_PORT 80 /* default if ! getservbyname("http/tcp") */
|
|
||||||
#ifndef GATE_PORT
|
|
||||||
#define GATE_PORT 21 /* default if ! getservbyname("ftpgate/tcp") */
|
|
||||||
#endif
|
|
||||||
#ifndef GATE_SERVER
|
|
||||||
#define GATE_SERVER "" /* default server */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define DEFAULTPAGER "more" /* default pager if $PAGER isn't set */
|
|
||||||
#define DEFAULTPROMPT "ftp> " /* default prompt if `set prompt' is empty */
|
|
||||||
#define DEFAULTRPROMPT "" /* default rprompt if `set rprompt' is empty */
|
|
||||||
|
|
||||||
#define TMPFILE "ftpXXXXXXXXXX"
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef GLOBAL
|
|
||||||
#define GLOBAL extern
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Options and other state info.
|
|
||||||
*/
|
|
||||||
GLOBAL int trace; /* trace packets exchanged */
|
|
||||||
GLOBAL int hash; /* print # for each buffer transferred */
|
|
||||||
GLOBAL int mark; /* number of bytes between hashes */
|
|
||||||
GLOBAL int sendport; /* use PORT/LPRT cmd for each data connection */
|
|
||||||
GLOBAL int connected; /* 1 = connected to server, -1 = logged in */
|
|
||||||
GLOBAL int interactive; /* interactively prompt on m* cmds */
|
|
||||||
GLOBAL int confirmrest; /* confirm rest of current m* cmd */
|
|
||||||
GLOBAL int debug; /* debugging level */
|
|
||||||
GLOBAL int bell; /* ring bell on cmd completion */
|
|
||||||
GLOBAL int doglob; /* glob local file names */
|
|
||||||
GLOBAL int autologin; /* establish user account on connection */
|
|
||||||
GLOBAL int proxy; /* proxy server connection active */
|
|
||||||
GLOBAL int proxflag; /* proxy connection exists */
|
|
||||||
GLOBAL int gatemode; /* use gate-ftp */
|
|
||||||
GLOBAL char *gateserver; /* server to use for gate-ftp */
|
|
||||||
GLOBAL int sunique; /* store files on server with unique name */
|
|
||||||
GLOBAL int runique; /* store local files with unique name */
|
|
||||||
GLOBAL int mcase; /* map upper to lower case for mget names */
|
|
||||||
GLOBAL int ntflag; /* use ntin ntout tables for name translation */
|
|
||||||
GLOBAL int mapflag; /* use mapin mapout templates on file names */
|
|
||||||
GLOBAL int preserve; /* preserve modification time on files */
|
|
||||||
GLOBAL int code; /* return/reply code for ftp command */
|
|
||||||
GLOBAL int crflag; /* if 1, strip car. rets. on ascii gets */
|
|
||||||
GLOBAL int passivemode; /* passive mode enabled */
|
|
||||||
GLOBAL int activefallback; /* fall back to active mode if passive fails */
|
|
||||||
GLOBAL char *altarg; /* argv[1] with no shell-like preprocessing */
|
|
||||||
GLOBAL char ntin[17]; /* input translation table */
|
|
||||||
GLOBAL char ntout[17]; /* output translation table */
|
|
||||||
GLOBAL char mapin[MAXPATHLEN]; /* input map template */
|
|
||||||
GLOBAL char mapout[MAXPATHLEN]; /* output map template */
|
|
||||||
GLOBAL char typename[32]; /* name of file transfer type */
|
|
||||||
GLOBAL int type; /* requested file transfer type */
|
|
||||||
GLOBAL int curtype; /* current file transfer type */
|
|
||||||
GLOBAL char structname[32]; /* name of file transfer structure */
|
|
||||||
GLOBAL int stru; /* file transfer structure */
|
|
||||||
GLOBAL char formname[32]; /* name of file transfer format */
|
|
||||||
GLOBAL int form; /* file transfer format */
|
|
||||||
GLOBAL char modename[32]; /* name of file transfer mode */
|
|
||||||
GLOBAL int mode; /* file transfer mode */
|
|
||||||
GLOBAL char bytename[32]; /* local byte size in ascii */
|
|
||||||
GLOBAL int bytesize; /* local byte size in binary */
|
|
||||||
GLOBAL int anonftp; /* automatic anonymous login */
|
|
||||||
GLOBAL int dirchange; /* remote directory changed by cd command */
|
|
||||||
GLOBAL int flushcache; /* set HTTP cache flush headers with request */
|
|
||||||
GLOBAL int rate_get; /* maximum get xfer rate */
|
|
||||||
GLOBAL int rate_get_incr; /* increment for get xfer rate */
|
|
||||||
GLOBAL int rate_put; /* maximum put xfer rate */
|
|
||||||
GLOBAL int rate_put_incr; /* increment for put xfer rate */
|
|
||||||
GLOBAL int retry_connect; /* seconds between retrying connection */
|
|
||||||
GLOBAL char *tmpdir; /* temporary directory */
|
|
||||||
GLOBAL int epsv4; /* use EPSV/EPRT on IPv4 connections */
|
|
||||||
GLOBAL int epsv4bad; /* EPSV doesn't work on the current server */
|
|
||||||
GLOBAL int editing; /* command line editing enabled */
|
|
||||||
GLOBAL int features[FEAT_max]; /* remote FEATures supported */
|
|
||||||
|
|
||||||
#ifndef NO_EDITCOMPLETE
|
|
||||||
GLOBAL EditLine *el; /* editline(3) status structure */
|
|
||||||
GLOBAL History *hist; /* editline(3) history structure */
|
|
||||||
GLOBAL char *cursor_pos; /* cursor position we're looking for */
|
|
||||||
GLOBAL size_t cursor_argc; /* location of cursor in margv */
|
|
||||||
GLOBAL size_t cursor_argo; /* offset of cursor in margv[cursor_argc] */
|
|
||||||
#endif /* !NO_EDITCOMPLETE */
|
|
||||||
|
|
||||||
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 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 */
|
|
||||||
GLOBAL char *ftpport; /* port number to use for FTP connections */
|
|
||||||
GLOBAL char *httpport; /* port number to use for HTTP connections */
|
|
||||||
GLOBAL char *gateport; /* port number to use for gateftp connections */
|
|
||||||
|
|
||||||
GLOBAL char *outfile; /* filename to output URLs to */
|
|
||||||
GLOBAL int restartautofetch; /* restart auto-fetch */
|
|
||||||
|
|
||||||
GLOBAL char line[FTPBUFLEN]; /* input line buffer */
|
|
||||||
GLOBAL char *stringbase; /* current scan point in line buffer */
|
|
||||||
GLOBAL char argbuf[FTPBUFLEN]; /* argument storage buffer */
|
|
||||||
GLOBAL char *argbase; /* current storage point in arg buffer */
|
|
||||||
GLOBAL StringList *marg_sl; /* stringlist containing margv */
|
|
||||||
GLOBAL int margc; /* count of arguments on input line */
|
|
||||||
#define margv (marg_sl->sl_str) /* args parsed from input line */
|
|
||||||
GLOBAL int cpend; /* flag: if != 0, then pending server reply */
|
|
||||||
GLOBAL int mflag; /* flag: if != 0, then active multi command */
|
|
||||||
|
|
||||||
GLOBAL int options; /* used during socket creation */
|
|
||||||
|
|
||||||
GLOBAL int sndbuf_size; /* socket send buffer size */
|
|
||||||
GLOBAL int rcvbuf_size; /* socket receive buffer size */
|
|
||||||
|
|
||||||
GLOBAL int macnum; /* number of defined macros */
|
|
||||||
GLOBAL struct macel macros[16];
|
|
||||||
GLOBAL char macbuf[4096];
|
|
||||||
|
|
||||||
GLOBAL char *localhome; /* local home directory */
|
|
||||||
GLOBAL char *localname; /* local user name */
|
|
||||||
GLOBAL char netrc[MAXPATHLEN]; /* path to .netrc file */
|
|
||||||
GLOBAL char reply_string[BUFSIZ]; /* first line of previous reply */
|
|
||||||
GLOBAL void (*reply_callback)(const char *);
|
|
||||||
/*
|
|
||||||
* function to call for each line in
|
|
||||||
* the server's reply except for the
|
|
||||||
* first (`xxx-') and last (`xxx ')
|
|
||||||
*/
|
|
||||||
|
|
||||||
GLOBAL volatile sig_atomic_t sigint_raised;
|
|
||||||
|
|
||||||
GLOBAL FILE *cin;
|
|
||||||
GLOBAL FILE *cout;
|
|
||||||
GLOBAL int data;
|
|
||||||
|
|
||||||
extern struct cmd cmdtab[];
|
|
||||||
extern struct option optiontab[];
|
|
||||||
|
|
||||||
|
|
||||||
#define EMPTYSTRING(x) ((x) == NULL || (*(x) == '\0'))
|
|
||||||
#define FREEPTR(x) if ((x) != NULL) { free(x); (x) = NULL; }
|
|
||||||
|
|
||||||
#ifdef BSD4_4
|
|
||||||
# define HAVE_SOCKADDR_SA_LEN 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NO_LONG_LONG
|
|
||||||
# define STRTOLL(x,y,z) strtol(x,y,z)
|
|
||||||
#else
|
|
||||||
# define STRTOLL(x,y,z) strtoll(x,y,z)
|
|
||||||
#endif
|
|
File diff suppressed because it is too large
Load Diff
@ -1,464 +0,0 @@
|
|||||||
/* $NetBSD: progressbar.c,v 1.7 2005/04/11 01:49:31 lukem Exp $ */
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 1997-2003 The NetBSD Foundation, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
|
||||||
* by Luke Mewburn.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
||||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
|
||||||
#ifndef lint
|
|
||||||
__RCSID("$NetBSD: progressbar.c,v 1.7 2005/04/11 01:49:31 lukem Exp $");
|
|
||||||
#endif /* not lint */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* FTP User Program -- Misc support routines
|
|
||||||
*/
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
|
|
||||||
#include <err.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "progressbar.h"
|
|
||||||
|
|
||||||
#define SECSPERHOUR (60 * 60)
|
|
||||||
#define SECSPERDAY ((long)60 * 60 * 24)
|
|
||||||
|
|
||||||
#if !defined(NO_PROGRESS)
|
|
||||||
/*
|
|
||||||
* return non-zero if we're the current foreground process
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
foregroundproc(void)
|
|
||||||
{
|
|
||||||
static pid_t pgrp = -1;
|
|
||||||
|
|
||||||
if (pgrp == -1)
|
|
||||||
pgrp = getpgrp();
|
|
||||||
|
|
||||||
return (tcgetpgrp(fileno(ttyout)) == pgrp);
|
|
||||||
}
|
|
||||||
#endif /* !defined(NO_PROGRESS) */
|
|
||||||
|
|
||||||
|
|
||||||
static void updateprogressmeter(int);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SIGALRM handler to update the progress meter
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
updateprogressmeter(int dummy)
|
|
||||||
{
|
|
||||||
int oerrno = errno;
|
|
||||||
|
|
||||||
progressmeter(0);
|
|
||||||
errno = oerrno;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* List of order of magnitude prefixes.
|
|
||||||
* The last is `P', as 2^64 = 16384 Petabytes
|
|
||||||
*/
|
|
||||||
static const char prefixes[] = " KMGTP";
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Display a transfer progress bar if progress is non-zero.
|
|
||||||
* SIGALRM is hijacked for use by this function.
|
|
||||||
* - Before the transfer, set filesize to size of file (or -1 if unknown),
|
|
||||||
* and call with flag = -1. This starts the once per second timer,
|
|
||||||
* and a call to updateprogressmeter() upon SIGALRM.
|
|
||||||
* - During the transfer, updateprogressmeter will call progressmeter
|
|
||||||
* with flag = 0
|
|
||||||
* - After the transfer, call with flag = 1
|
|
||||||
*/
|
|
||||||
static struct timeval start;
|
|
||||||
static struct timeval lastupdate;
|
|
||||||
|
|
||||||
#define BUFLEFT (sizeof(buf) - len)
|
|
||||||
|
|
||||||
void
|
|
||||||
progressmeter(int flag)
|
|
||||||
{
|
|
||||||
static off_t lastsize;
|
|
||||||
off_t cursize;
|
|
||||||
struct timeval now, wait;
|
|
||||||
#ifndef NO_PROGRESS
|
|
||||||
struct timeval td;
|
|
||||||
off_t abbrevsize, bytespersec;
|
|
||||||
double elapsed;
|
|
||||||
int ratio, barlength, i, remaining;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Work variables for progress bar.
|
|
||||||
*
|
|
||||||
* XXX: if the format of the progress bar changes
|
|
||||||
* (especially the number of characters in the
|
|
||||||
* `static' portion of it), be sure to update
|
|
||||||
* these appropriately.
|
|
||||||
*/
|
|
||||||
#endif
|
|
||||||
int len;
|
|
||||||
char buf[256]; /* workspace for progress bar */
|
|
||||||
#ifndef NO_PROGRESS
|
|
||||||
#define BAROVERHEAD 43 /* non `*' portion of progress bar */
|
|
||||||
/*
|
|
||||||
* stars should contain at least
|
|
||||||
* sizeof(buf) - BAROVERHEAD entries
|
|
||||||
*/
|
|
||||||
static const char stars[] =
|
|
||||||
"*****************************************************************************"
|
|
||||||
"*****************************************************************************"
|
|
||||||
"*****************************************************************************";
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (flag == -1) {
|
|
||||||
(void)gettimeofday(&start, NULL);
|
|
||||||
lastupdate = start;
|
|
||||||
lastsize = restart_point;
|
|
||||||
}
|
|
||||||
|
|
||||||
(void)gettimeofday(&now, NULL);
|
|
||||||
cursize = bytes + restart_point;
|
|
||||||
timersub(&now, &lastupdate, &wait);
|
|
||||||
if (cursize > lastsize) {
|
|
||||||
lastupdate = now;
|
|
||||||
lastsize = cursize;
|
|
||||||
wait.tv_sec = 0;
|
|
||||||
} else {
|
|
||||||
#ifndef STANDALONE_PROGRESS
|
|
||||||
if (quit_time > 0 && wait.tv_sec > quit_time) {
|
|
||||||
len = snprintf(buf, sizeof(buf), "\r\n%s: "
|
|
||||||
"transfer aborted because stalled for %lu sec.\r\n",
|
|
||||||
getprogname(), (unsigned long)wait.tv_sec);
|
|
||||||
(void)write(fileno(ttyout), buf, len);
|
|
||||||
(void)xsignal(SIGALRM, SIG_DFL);
|
|
||||||
alarmtimer(0);
|
|
||||||
siglongjmp(toplevel, 1);
|
|
||||||
}
|
|
||||||
#endif /* !STANDALONE_PROGRESS */
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Always set the handler even if we are not the foreground process.
|
|
||||||
*/
|
|
||||||
#ifdef STANDALONE_PROGRESS
|
|
||||||
if (progress) {
|
|
||||||
#else
|
|
||||||
if (quit_time > 0 || progress) {
|
|
||||||
#endif /* !STANDALONE_PROGRESS */
|
|
||||||
if (flag == -1) {
|
|
||||||
(void)xsignal_restart(SIGALRM, updateprogressmeter, 1);
|
|
||||||
alarmtimer(1); /* set alarm timer for 1 Hz */
|
|
||||||
} else if (flag == 1) {
|
|
||||||
(void)xsignal(SIGALRM, SIG_DFL);
|
|
||||||
alarmtimer(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#ifndef NO_PROGRESS
|
|
||||||
if (!progress)
|
|
||||||
return;
|
|
||||||
len = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* print progress bar only if we are foreground process.
|
|
||||||
*/
|
|
||||||
if (! foregroundproc())
|
|
||||||
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);
|
|
||||||
ratio = MIN(ratio, 100);
|
|
||||||
len += snprintf(buf + len, BUFLEFT, "%3d%% ", ratio);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* calculate the length of the `*' bar, ensuring that
|
|
||||||
* 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,
|
|
||||||
"|%.*s%*s|", i, stars, barlength - i, "");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abbrevsize = cursize;
|
|
||||||
for (i = 0; abbrevsize >= 100000 && i < sizeof(prefixes); i++)
|
|
||||||
abbrevsize >>= 10;
|
|
||||||
len += snprintf(buf + len, BUFLEFT, " " LLFP("5") " %c%c ",
|
|
||||||
(LLT)abbrevsize,
|
|
||||||
prefixes[i],
|
|
||||||
i == 0 ? ' ' : 'B');
|
|
||||||
|
|
||||||
timersub(&now, &start, &td);
|
|
||||||
elapsed = td.tv_sec + (td.tv_usec / 1000000.0);
|
|
||||||
|
|
||||||
bytespersec = 0;
|
|
||||||
if (bytes > 0) {
|
|
||||||
bytespersec = bytes;
|
|
||||||
if (elapsed > 0.0)
|
|
||||||
bytespersec /= elapsed;
|
|
||||||
}
|
|
||||||
for (i = 1; bytespersec >= 1024000 && i < sizeof(prefixes); i++)
|
|
||||||
bytespersec >>= 10;
|
|
||||||
len += snprintf(buf + len, BUFLEFT,
|
|
||||||
" " LLFP("3") ".%02d %cB/s ",
|
|
||||||
(LLT)(bytespersec / 1024),
|
|
||||||
(int)((bytespersec % 1024) * 100 / 1024),
|
|
||||||
prefixes[i]);
|
|
||||||
|
|
||||||
if (filesize > 0) {
|
|
||||||
if (bytes <= 0 || elapsed <= 0.0 || cursize > filesize) {
|
|
||||||
len += snprintf(buf + len, BUFLEFT, " --:-- ETA");
|
|
||||||
} else if (wait.tv_sec >= STALLTIME) {
|
|
||||||
len += snprintf(buf + len, BUFLEFT, " - stalled -");
|
|
||||||
} else {
|
|
||||||
remaining = (int)
|
|
||||||
((filesize - restart_point) / (bytes / elapsed) -
|
|
||||||
elapsed);
|
|
||||||
if (remaining >= 100 * SECSPERHOUR)
|
|
||||||
len += snprintf(buf + len, BUFLEFT,
|
|
||||||
" --:-- ETA");
|
|
||||||
else {
|
|
||||||
i = remaining / SECSPERHOUR;
|
|
||||||
if (i)
|
|
||||||
len += snprintf(buf + len, BUFLEFT,
|
|
||||||
"%2d:", i);
|
|
||||||
else
|
|
||||||
len += snprintf(buf + len, BUFLEFT,
|
|
||||||
" ");
|
|
||||||
i = remaining % SECSPERHOUR;
|
|
||||||
len += snprintf(buf + len, BUFLEFT,
|
|
||||||
"%02d:%02d ETA", i / 60, i % 60);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (flag == 1)
|
|
||||||
len += snprintf(buf + len, BUFLEFT, "\n");
|
|
||||||
(void)write(fileno(ttyout), buf, len);
|
|
||||||
|
|
||||||
#endif /* !NO_PROGRESS */
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef STANDALONE_PROGRESS
|
|
||||||
/*
|
|
||||||
* Display transfer statistics.
|
|
||||||
* Requires start to be initialised by progressmeter(-1),
|
|
||||||
* direction to be defined by xfer routines, and filesize and bytes
|
|
||||||
* to be updated by xfer routines
|
|
||||||
* If siginfo is nonzero, an ETA is displayed, and the output goes to stderr
|
|
||||||
* instead of ttyout.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
ptransfer(int siginfo)
|
|
||||||
{
|
|
||||||
struct timeval now, td, wait;
|
|
||||||
double elapsed;
|
|
||||||
off_t bytespersec;
|
|
||||||
int remaining, hh, i, len;
|
|
||||||
|
|
||||||
char buf[256]; /* Work variable for transfer status. */
|
|
||||||
|
|
||||||
if (!verbose && !progress && !siginfo)
|
|
||||||
return;
|
|
||||||
|
|
||||||
(void)gettimeofday(&now, NULL);
|
|
||||||
timersub(&now, &start, &td);
|
|
||||||
elapsed = td.tv_sec + (td.tv_usec / 1000000.0);
|
|
||||||
bytespersec = 0;
|
|
||||||
if (bytes > 0) {
|
|
||||||
bytespersec = bytes;
|
|
||||||
if (elapsed > 0.0)
|
|
||||||
bytespersec /= elapsed;
|
|
||||||
}
|
|
||||||
len = 0;
|
|
||||||
len += snprintf(buf + len, BUFLEFT, LLF " byte%s %s in ",
|
|
||||||
(LLT)bytes, bytes == 1 ? "" : "s", direction);
|
|
||||||
remaining = (int)elapsed;
|
|
||||||
if (remaining > SECSPERDAY) {
|
|
||||||
int days;
|
|
||||||
|
|
||||||
days = remaining / SECSPERDAY;
|
|
||||||
remaining %= SECSPERDAY;
|
|
||||||
len += snprintf(buf + len, BUFLEFT,
|
|
||||||
"%d day%s ", days, days == 1 ? "" : "s");
|
|
||||||
}
|
|
||||||
hh = remaining / SECSPERHOUR;
|
|
||||||
remaining %= SECSPERHOUR;
|
|
||||||
if (hh)
|
|
||||||
len += snprintf(buf + len, BUFLEFT, "%2d:", hh);
|
|
||||||
len += snprintf(buf + len, BUFLEFT,
|
|
||||||
"%02d:%02d ", remaining / 60, remaining % 60);
|
|
||||||
|
|
||||||
for (i = 1; bytespersec >= 1024000 && i < sizeof(prefixes); i++)
|
|
||||||
bytespersec >>= 10;
|
|
||||||
len += snprintf(buf + len, BUFLEFT, "(" LLF ".%02d %cB/s)",
|
|
||||||
(LLT)(bytespersec / 1024),
|
|
||||||
(int)((bytespersec % 1024) * 100 / 1024),
|
|
||||||
prefixes[i]);
|
|
||||||
|
|
||||||
if (siginfo && bytes > 0 && elapsed > 0.0 && filesize >= 0
|
|
||||||
&& bytes + restart_point <= filesize) {
|
|
||||||
remaining = (int)((filesize - restart_point) /
|
|
||||||
(bytes / elapsed) - elapsed);
|
|
||||||
hh = remaining / SECSPERHOUR;
|
|
||||||
remaining %= SECSPERHOUR;
|
|
||||||
len += snprintf(buf + len, BUFLEFT, " ETA: ");
|
|
||||||
if (hh)
|
|
||||||
len += snprintf(buf + len, BUFLEFT, "%2d:", hh);
|
|
||||||
len += snprintf(buf + len, BUFLEFT, "%02d:%02d",
|
|
||||||
remaining / 60, remaining % 60);
|
|
||||||
timersub(&now, &lastupdate, &wait);
|
|
||||||
if (wait.tv_sec >= STALLTIME)
|
|
||||||
len += snprintf(buf + len, BUFLEFT, " (stalled)");
|
|
||||||
}
|
|
||||||
len += snprintf(buf + len, BUFLEFT, "\n");
|
|
||||||
(void)write(siginfo ? STDERR_FILENO : fileno(ttyout), buf, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SIG{INFO,QUIT} handler to print transfer stats if a transfer is in progress
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
psummary(int notused)
|
|
||||||
{
|
|
||||||
int oerrno = errno;
|
|
||||||
|
|
||||||
if (bytes > 0) {
|
|
||||||
if (fromatty)
|
|
||||||
write(fileno(ttyout), "\n", 1);
|
|
||||||
ptransfer(1);
|
|
||||||
}
|
|
||||||
errno = oerrno;
|
|
||||||
}
|
|
||||||
#endif /* !STANDALONE_PROGRESS */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Set the SIGALRM interval timer for wait seconds, 0 to disable.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
alarmtimer(int wait)
|
|
||||||
{
|
|
||||||
struct itimerval itv;
|
|
||||||
|
|
||||||
itv.it_value.tv_sec = wait;
|
|
||||||
itv.it_value.tv_usec = 0;
|
|
||||||
itv.it_interval = itv.it_value;
|
|
||||||
setitimer(ITIMER_REAL, &itv, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Install a POSIX signal handler, allowing the invoker to set whether
|
|
||||||
* the signal should be restartable or not
|
|
||||||
*/
|
|
||||||
sigfunc
|
|
||||||
xsignal_restart(int sig, sigfunc func, int restartable)
|
|
||||||
{
|
|
||||||
struct sigaction act, oact;
|
|
||||||
act.sa_handler = func;
|
|
||||||
|
|
||||||
sigemptyset(&act.sa_mask);
|
|
||||||
#if defined(SA_RESTART) /* 4.4BSD, Posix(?), SVR4 */
|
|
||||||
act.sa_flags = restartable ? SA_RESTART : 0;
|
|
||||||
#elif defined(SA_INTERRUPT) /* SunOS 4.x */
|
|
||||||
act.sa_flags = restartable ? 0 : SA_INTERRUPT;
|
|
||||||
#else
|
|
||||||
#error "system must have SA_RESTART or SA_INTERRUPT"
|
|
||||||
#endif
|
|
||||||
if (sigaction(sig, &act, &oact) < 0)
|
|
||||||
return (SIG_ERR);
|
|
||||||
return (oact.sa_handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Install a signal handler with the `restartable' flag set dependent upon
|
|
||||||
* which signal is being set. (This is a wrapper to xsignal_restart())
|
|
||||||
*/
|
|
||||||
sigfunc
|
|
||||||
xsignal(int sig, sigfunc func)
|
|
||||||
{
|
|
||||||
int restartable;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Some signals print output or change the state of the process.
|
|
||||||
* There should be restartable, so that reads and writes are
|
|
||||||
* not affected. Some signals should cause program flow to change;
|
|
||||||
* these signals should not be restartable, so that the system call
|
|
||||||
* will return with EINTR, and the program will go do something
|
|
||||||
* different. If the signal handler calls longjmp() or siglongjmp(),
|
|
||||||
* it doesn't matter if it's restartable.
|
|
||||||
*/
|
|
||||||
|
|
||||||
switch(sig) {
|
|
||||||
#ifdef SIGINFO
|
|
||||||
case SIGINFO:
|
|
||||||
#endif
|
|
||||||
case SIGQUIT:
|
|
||||||
case SIGUSR1:
|
|
||||||
case SIGUSR2:
|
|
||||||
case SIGWINCH:
|
|
||||||
restartable = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SIGALRM:
|
|
||||||
case SIGINT:
|
|
||||||
case SIGPIPE:
|
|
||||||
restartable = 0;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
/*
|
|
||||||
* This is unpleasant, but I don't know what would be better.
|
|
||||||
* Right now, this "can't happen"
|
|
||||||
*/
|
|
||||||
errx(1, "xsignal_restart called with signal %d", sig);
|
|
||||||
}
|
|
||||||
|
|
||||||
return(xsignal_restart(sig, func, restartable));
|
|
||||||
}
|
|
@ -1,99 +0,0 @@
|
|||||||
/* $NetBSD: progressbar.h,v 1.5 2005/02/10 16:00:38 jmc Exp $ */
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 1996-2003 The NetBSD Foundation, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
|
||||||
* by Luke Mewburn.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
||||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef STANDALONE_PROGRESS
|
|
||||||
#include <setjmp.h>
|
|
||||||
#endif /* !STANDALONE_PROGRESS */
|
|
||||||
|
|
||||||
#ifndef GLOBAL
|
|
||||||
#define GLOBAL extern
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#define STALLTIME 5 /* # of seconds of no xfer before "stalling" */
|
|
||||||
|
|
||||||
typedef void (*sigfunc)(int);
|
|
||||||
|
|
||||||
|
|
||||||
GLOBAL FILE *ttyout; /* stdout, or stderr if retrieving to stdout */
|
|
||||||
|
|
||||||
GLOBAL int progress; /* display transfer progress bar */
|
|
||||||
GLOBAL int ttywidth; /* width of tty */
|
|
||||||
|
|
||||||
GLOBAL off_t bytes; /* current # of bytes read */
|
|
||||||
GLOBAL off_t filesize; /* size of file being transferred */
|
|
||||||
GLOBAL off_t restart_point; /* offset to restart transfer */
|
|
||||||
GLOBAL char *prefix; /* Text written left of progress bar */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef STANDALONE_PROGRESS
|
|
||||||
GLOBAL int fromatty; /* input is from a terminal */
|
|
||||||
GLOBAL int verbose; /* print messages coming back from server */
|
|
||||||
GLOBAL int quit_time; /* maximum time to wait if stalled */
|
|
||||||
|
|
||||||
GLOBAL char *direction; /* direction transfer is occurring */
|
|
||||||
|
|
||||||
GLOBAL sigjmp_buf toplevel; /* non-local goto stuff for cmd scanner */
|
|
||||||
#endif /* !STANDALONE_PROGRESS */
|
|
||||||
|
|
||||||
int foregroundproc(void);
|
|
||||||
void alarmtimer(int);
|
|
||||||
void progressmeter(int);
|
|
||||||
sigfunc xsignal(int, sigfunc);
|
|
||||||
sigfunc xsignal_restart(int, sigfunc, int);
|
|
||||||
|
|
||||||
#ifndef STANDALONE_PROGRESS
|
|
||||||
void psummary(int);
|
|
||||||
void ptransfer(int);
|
|
||||||
#endif /* !STANDALONE_PROGRESS */
|
|
||||||
|
|
||||||
#ifdef NO_LONG_LONG
|
|
||||||
# define LLF "%ld"
|
|
||||||
# define LLFP(x) "%" x "ld"
|
|
||||||
# define LLT long
|
|
||||||
# define ULLF "%lu"
|
|
||||||
# define ULLFP(x) "%" x "lu"
|
|
||||||
# define ULLT unsigned long
|
|
||||||
#else
|
|
||||||
# define LLF "%lld"
|
|
||||||
# define LLFP(x) "%" x "lld"
|
|
||||||
# define LLT long long
|
|
||||||
# define ULLF "%llu"
|
|
||||||
# define ULLFP(x) "%" x "llu"
|
|
||||||
# define ULLT unsigned long long
|
|
||||||
#endif
|
|
@ -1,293 +0,0 @@
|
|||||||
/* $NetBSD: ruserpass.c,v 1.29 2003/08/07 11:13:57 agc Exp $ */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 1985, 1993, 1994
|
|
||||||
* The Regents of the University of California. All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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. 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.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
|
||||||
#ifndef lint
|
|
||||||
#if 0
|
|
||||||
static char sccsid[] = "@(#)ruserpass.c 8.4 (Berkeley) 4/27/95";
|
|
||||||
#else
|
|
||||||
__RCSID("$NetBSD: ruserpass.c,v 1.29 2003/08/07 11:13:57 agc Exp $");
|
|
||||||
#endif
|
|
||||||
#endif /* not lint */
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <err.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "ftp_var.h"
|
|
||||||
|
|
||||||
static int token(void);
|
|
||||||
static FILE *cfile;
|
|
||||||
|
|
||||||
#define DEFAULT 1
|
|
||||||
#define LOGIN 2
|
|
||||||
#define PASSWD 3
|
|
||||||
#define ACCOUNT 4
|
|
||||||
#define MACDEF 5
|
|
||||||
#define ID 10
|
|
||||||
#define MACH 11
|
|
||||||
|
|
||||||
static char tokval[100];
|
|
||||||
|
|
||||||
static struct toktab {
|
|
||||||
char *tokstr;
|
|
||||||
int tval;
|
|
||||||
} toktab[] = {
|
|
||||||
{ "default", DEFAULT },
|
|
||||||
{ "login", LOGIN },
|
|
||||||
{ "password", PASSWD },
|
|
||||||
{ "passwd", PASSWD },
|
|
||||||
{ "account", ACCOUNT },
|
|
||||||
{ "machine", MACH },
|
|
||||||
{ "macdef", MACDEF },
|
|
||||||
{ NULL, 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
int
|
|
||||||
ruserpass(const char *host, const char **aname, const char **apass,
|
|
||||||
const char **aacct)
|
|
||||||
{
|
|
||||||
char *tmp;
|
|
||||||
char myname[MAXHOSTNAMELEN + 1], *mydomain;
|
|
||||||
int t, i, c, usedefault = 0;
|
|
||||||
struct stat stb;
|
|
||||||
|
|
||||||
if (netrc[0] == '\0')
|
|
||||||
return (0);
|
|
||||||
cfile = fopen(netrc, "r");
|
|
||||||
if (cfile == NULL) {
|
|
||||||
if (errno != ENOENT)
|
|
||||||
warn("%s", netrc);
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
if (gethostname(myname, sizeof(myname)) < 0)
|
|
||||||
myname[0] = '\0';
|
|
||||||
myname[sizeof(myname) - 1] = '\0';
|
|
||||||
if ((mydomain = strchr(myname, '.')) == NULL)
|
|
||||||
mydomain = "";
|
|
||||||
next:
|
|
||||||
while ((t = token())) switch(t) {
|
|
||||||
|
|
||||||
case DEFAULT:
|
|
||||||
usedefault = 1;
|
|
||||||
/* FALL THROUGH */
|
|
||||||
|
|
||||||
case MACH:
|
|
||||||
if (!usedefault) {
|
|
||||||
if (token() != ID)
|
|
||||||
continue;
|
|
||||||
/*
|
|
||||||
* Allow match either for user's input host name
|
|
||||||
* or official hostname. Also allow match of
|
|
||||||
* incompletely-specified host in local domain.
|
|
||||||
*/
|
|
||||||
if (strcasecmp(host, tokval) == 0)
|
|
||||||
goto match;
|
|
||||||
if (strcasecmp(hostname, tokval) == 0)
|
|
||||||
goto match;
|
|
||||||
if ((tmp = strchr(hostname, '.')) != NULL &&
|
|
||||||
strcasecmp(tmp, mydomain) == 0 &&
|
|
||||||
strncasecmp(hostname, tokval, tmp-hostname) == 0 &&
|
|
||||||
tokval[tmp - hostname] == '\0')
|
|
||||||
goto match;
|
|
||||||
if ((tmp = strchr(host, '.')) != NULL &&
|
|
||||||
strcasecmp(tmp, mydomain) == 0 &&
|
|
||||||
strncasecmp(host, tokval, tmp - host) == 0 &&
|
|
||||||
tokval[tmp - host] == '\0')
|
|
||||||
goto match;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
match:
|
|
||||||
while ((t = token()) && t != MACH && t != DEFAULT) switch(t) {
|
|
||||||
|
|
||||||
case LOGIN:
|
|
||||||
if (token()) {
|
|
||||||
if (*aname == NULL)
|
|
||||||
*aname = xstrdup(tokval);
|
|
||||||
else {
|
|
||||||
if (strcmp(*aname, tokval))
|
|
||||||
goto next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PASSWD:
|
|
||||||
if ((*aname == NULL || strcmp(*aname, "anonymous")) &&
|
|
||||||
fstat(fileno(cfile), &stb) >= 0 &&
|
|
||||||
(stb.st_mode & 077) != 0) {
|
|
||||||
warnx("Error: .netrc file is readable by others.");
|
|
||||||
warnx("Remove password or make file unreadable by others.");
|
|
||||||
goto bad;
|
|
||||||
}
|
|
||||||
if (token() && *apass == NULL)
|
|
||||||
*apass = xstrdup(tokval);
|
|
||||||
break;
|
|
||||||
case ACCOUNT:
|
|
||||||
if (fstat(fileno(cfile), &stb) >= 0
|
|
||||||
&& (stb.st_mode & 077) != 0) {
|
|
||||||
warnx("Error: .netrc file is readable by others.");
|
|
||||||
warnx("Remove account or make file unreadable by others.");
|
|
||||||
goto bad;
|
|
||||||
}
|
|
||||||
if (token() && *aacct == NULL)
|
|
||||||
*aacct = xstrdup(tokval);
|
|
||||||
break;
|
|
||||||
case MACDEF:
|
|
||||||
if (proxy) {
|
|
||||||
(void)fclose(cfile);
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
while ((c = getc(cfile)) != EOF)
|
|
||||||
if (c != ' ' && c != '\t')
|
|
||||||
break;
|
|
||||||
if (c == EOF || c == '\n') {
|
|
||||||
fputs("Missing macdef name argument.\n",
|
|
||||||
ttyout);
|
|
||||||
goto bad;
|
|
||||||
}
|
|
||||||
if (macnum == 16) {
|
|
||||||
fputs(
|
|
||||||
"Limit of 16 macros have already been defined.\n",
|
|
||||||
ttyout);
|
|
||||||
goto bad;
|
|
||||||
}
|
|
||||||
tmp = macros[macnum].mac_name;
|
|
||||||
*tmp++ = c;
|
|
||||||
for (i = 0; i < 8 && (c = getc(cfile)) != EOF &&
|
|
||||||
!isspace(c); ++i) {
|
|
||||||
*tmp++ = c;
|
|
||||||
}
|
|
||||||
if (c == EOF) {
|
|
||||||
fputs(
|
|
||||||
"Macro definition missing null line terminator.\n",
|
|
||||||
ttyout);
|
|
||||||
goto bad;
|
|
||||||
}
|
|
||||||
*tmp = '\0';
|
|
||||||
if (c != '\n') {
|
|
||||||
while ((c = getc(cfile)) != EOF && c != '\n');
|
|
||||||
}
|
|
||||||
if (c == EOF) {
|
|
||||||
fputs(
|
|
||||||
"Macro definition missing null line terminator.\n",
|
|
||||||
ttyout);
|
|
||||||
goto bad;
|
|
||||||
}
|
|
||||||
if (macnum == 0) {
|
|
||||||
macros[macnum].mac_start = macbuf;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
macros[macnum].mac_start =
|
|
||||||
macros[macnum-1].mac_end + 1;
|
|
||||||
}
|
|
||||||
tmp = macros[macnum].mac_start;
|
|
||||||
while (tmp != macbuf + 4096) {
|
|
||||||
if ((c = getc(cfile)) == EOF) {
|
|
||||||
fputs(
|
|
||||||
"Macro definition missing null line terminator.\n",
|
|
||||||
ttyout);
|
|
||||||
goto bad;
|
|
||||||
}
|
|
||||||
*tmp = c;
|
|
||||||
if (*tmp == '\n') {
|
|
||||||
if (*(tmp-1) == '\0') {
|
|
||||||
macros[macnum++].mac_end = tmp - 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
*tmp = '\0';
|
|
||||||
}
|
|
||||||
tmp++;
|
|
||||||
}
|
|
||||||
if (tmp == macbuf + 4096) {
|
|
||||||
fputs("4K macro buffer exceeded.\n",
|
|
||||||
ttyout);
|
|
||||||
goto bad;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
warnx("Unknown .netrc keyword %s", tokval);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
done:
|
|
||||||
(void)fclose(cfile);
|
|
||||||
return (0);
|
|
||||||
bad:
|
|
||||||
(void)fclose(cfile);
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
token(void)
|
|
||||||
{
|
|
||||||
char *cp;
|
|
||||||
int c;
|
|
||||||
struct toktab *t;
|
|
||||||
|
|
||||||
if (feof(cfile) || ferror(cfile))
|
|
||||||
return (0);
|
|
||||||
while ((c = getc(cfile)) != EOF &&
|
|
||||||
(c == '\n' || c == '\t' || c == ' ' || c == ','))
|
|
||||||
continue;
|
|
||||||
if (c == EOF)
|
|
||||||
return (0);
|
|
||||||
cp = tokval;
|
|
||||||
if (c == '"') {
|
|
||||||
while ((c = getc(cfile)) != EOF && c != '"') {
|
|
||||||
if (c == '\\')
|
|
||||||
c = getc(cfile);
|
|
||||||
*cp++ = c;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
*cp++ = c;
|
|
||||||
while ((c = getc(cfile)) != EOF
|
|
||||||
&& c != '\n' && c != '\t' && c != ' ' && c != ',') {
|
|
||||||
if (c == '\\')
|
|
||||||
c = getc(cfile);
|
|
||||||
*cp++ = c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*cp = 0;
|
|
||||||
if (tokval[0] == 0)
|
|
||||||
return (0);
|
|
||||||
for (t = toktab; t->tokstr; t++)
|
|
||||||
if (!strcmp(t->tokstr, tokval))
|
|
||||||
return (t->tval);
|
|
||||||
return (ID);
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
@ -1,44 +0,0 @@
|
|||||||
/* $NetBSD: version.h,v 1.50 2005/05/14 15:26:43 lukem Exp $ */
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 1999-2005 The NetBSD Foundation, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
|
||||||
* by Luke Mewburn.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
||||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef FTP_PRODUCT
|
|
||||||
#define FTP_PRODUCT "NetBSD-ftp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef FTP_VERSION
|
|
||||||
#define FTP_VERSION "20050514"
|
|
||||||
#endif
|
|
@ -1,25 +0,0 @@
|
|||||||
$Id: todo,v 1.30 2002/06/10 08:08:53 lukem Exp $
|
|
||||||
|
|
||||||
update NEWS, README, ...
|
|
||||||
|
|
||||||
at end of configure, show summary of options used and features found
|
|
||||||
|
|
||||||
if socks is defined, disable ipv6 and use own getaddrinfo()/getnameinfo()
|
|
||||||
(for tron)
|
|
||||||
|
|
||||||
add locale autoconf checks
|
|
||||||
|
|
||||||
AC_CHECK_SIZEOF(off_t, 0) doesn't work on FreeBSD 4.0 because the
|
|
||||||
test doesn't include <sys/types.h>. fix autoconf?
|
|
||||||
|
|
||||||
in configure, check for ansi c compiler and barf if it fails
|
|
||||||
|
|
||||||
check if we need #defines for memcpy() et al
|
|
||||||
|
|
||||||
check for utimes() decls [which system?]
|
|
||||||
|
|
||||||
possibly install editline.3 and editrc.5
|
|
||||||
|
|
||||||
system specific tests (to remove need for manual intervention):
|
|
||||||
- sunos4
|
|
||||||
LIBS+= -lresolv
|
|
@ -1,4 +1,10 @@
|
|||||||
Copyright 1999, 2000 Luke Mewburn <lukem@netbsd.org>. All rights reserved.
|
$NetBSD: COPYING,v 1.7 2010/01/12 07:01:01 lukem Exp $
|
||||||
|
|
||||||
|
Copyright (c) 2001-2010 The NetBSD Foundation, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
by Simon Burge, Luke Mewburn, and Christos Zoulas.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions
|
modification, are permitted provided that the following conditions
|
||||||
@ -10,20 +16,24 @@ are met:
|
|||||||
documentation and/or other materials provided with the distribution.
|
documentation and/or other materials provided with the distribution.
|
||||||
3. All advertising materials mentioning features or use of this software
|
3. All advertising materials mentioning features or use of this software
|
||||||
must display the following acknowledgement:
|
must display the following acknowledgement:
|
||||||
This product includes software developed by Luke Mewburn.
|
This product includes software developed by the NetBSD
|
||||||
4. The name of the author may not be used to endorse or promote products
|
Foundation, Inc. and its contributors.
|
||||||
derived from this software without specific prior written permission.
|
4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
||||||
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
|
||||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
|
||||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
This product also contains software developed by other people, and you
|
This product also contains software developed by other people, and you
|
||||||
are advised to read the various source files to read the full details
|
are advised to read the various source files to read the full details
|
||||||
@ -32,11 +42,13 @@ acknowledgements:
|
|||||||
|
|
||||||
This product includes software developed by the NetBSD Foundation,
|
This product includes software developed by the NetBSD Foundation,
|
||||||
Inc. and its contributors. Those contributors include:
|
Inc. and its contributors. Those contributors include:
|
||||||
|
- Simon Burge
|
||||||
- Jaromir Dolecek
|
- Jaromir Dolecek
|
||||||
- Klaus Klein
|
- Klaus Klein
|
||||||
- Luke Mewburn
|
- Luke Mewburn
|
||||||
- Jason R. Thorpe of the Numerical Aerospace Simulation
|
- Jason R. Thorpe of the Numerical Aerospace Simulation
|
||||||
Facility, NASA Ames Research Center.
|
Facility, NASA Ames Research Center.
|
||||||
|
- Christos Zoulas
|
||||||
|
|
||||||
This product includes software developed by the University of
|
This product includes software developed by the University of
|
||||||
California, Berkeley and its contributors. Those contributors include:
|
California, Berkeley and its contributors. Those contributors include:
|
||||||
|
@ -1,3 +1,713 @@
|
|||||||
|
$NetBSD: ChangeLog,v 1.58 2010/01/12 06:58:57 lukem Exp $
|
||||||
|
|
||||||
|
Tue Jan 12 06:58:15 UTC 2010 lukem
|
||||||
|
|
||||||
|
* Release as "tnftp 20100108"
|
||||||
|
|
||||||
|
* Rename onoff() argument "bool" to "val".
|
||||||
|
|
||||||
|
Tue Jan 5 09:12:01 UTC 2010 lukem
|
||||||
|
|
||||||
|
* If ARG_MAX isn't defined, use the result from sysconf(_SC_ARG_MAX).
|
||||||
|
Fixes build when using newer glibc.
|
||||||
|
|
||||||
|
* Add libnetbsd.la to the LIBADD for libedit.
|
||||||
|
Fix provided by Adam Sampson.
|
||||||
|
|
||||||
|
Mon Jan 4 06:28:07 UTC 2010 lukem
|
||||||
|
|
||||||
|
* Distribute various files not shipped by default automake rules,
|
||||||
|
to use 'make dist' instead of 'cvs export'.
|
||||||
|
|
||||||
|
Wed Dec 30 00:12:47 UTC 2009 lukem
|
||||||
|
|
||||||
|
* Release as "tnftp 20091122"
|
||||||
|
|
||||||
|
Sun Nov 15 10:14:44 UTC 2009 lukem
|
||||||
|
|
||||||
|
* Merge NetBSD ftp from 20090520 to 20090915. Change:
|
||||||
|
- Rename internal getline() to get_line() to avoid
|
||||||
|
conflict with libc with former.
|
||||||
|
- Avoid a NULL dereference in an error message.
|
||||||
|
|
||||||
|
Sat Nov 14 09:21:19 UTC 2009 lukem
|
||||||
|
|
||||||
|
* Convert to automake & libtool.
|
||||||
|
|
||||||
|
Sat Jun 6 07:17:38 UTC 2009 lukem
|
||||||
|
|
||||||
|
* Release as "tnftp 20090606"
|
||||||
|
|
||||||
|
Fri May 22 01:11:15 UTC 2009 lukem
|
||||||
|
|
||||||
|
* configure fixes:
|
||||||
|
- Add the time.h headers to accheck_includes, for the strptime check.
|
||||||
|
- Remove the check for el_init in libedit; we're always replacing
|
||||||
|
the library and the presence of strvis() in some versions
|
||||||
|
confuses other checks.
|
||||||
|
|
||||||
|
Wed May 20 13:47:43 UTC 2009 lukem
|
||||||
|
|
||||||
|
* Release as "tnftp 20090520"
|
||||||
|
|
||||||
|
* Merge NetBSD ftp from 20070722 to 20090520. Changes:
|
||||||
|
- Only attempt to el_parse() a command unknown by the default
|
||||||
|
parser if editing is enabled.
|
||||||
|
Fixes PR 38589.
|
||||||
|
- Turn off the alarmtimer before resetting the SIGALRM handler
|
||||||
|
back to SIG_DFL.
|
||||||
|
Fixes PR 35630.
|
||||||
|
- Add epsv6 and epsv to disable extended passive mode for ipv6 or
|
||||||
|
both ipv4 and ipv6 respectively. This hack is due to our
|
||||||
|
friends a Juniper Networks who break epsv in ipv6.
|
||||||
|
Should be fixed in ScreenOS 6.2.X.
|
||||||
|
- Improve parsing of chunked transfer chunks per RFC2616:
|
||||||
|
- more stringent chunk-size parsing
|
||||||
|
- ignore optional trailing ';chunk-ext' stuff, instead of barfing
|
||||||
|
- detect EOF before final \r\n.
|
||||||
|
- Use the service name to getaddrinfo() (along with the host
|
||||||
|
name), so that features such as DNS Service Discovery have a
|
||||||
|
better chance of working.
|
||||||
|
Display the service name in various status & error messages.
|
||||||
|
- Don't getservbyname() the :port component of a URL; RFC 3986
|
||||||
|
says it's just an unsigned number, not a service name.
|
||||||
|
- Fix numerous WARNS=4 issues (-Wcast-qual -Wsign-compare).
|
||||||
|
- Fix -Wshadow issues
|
||||||
|
- Update copyrights
|
||||||
|
- Remove clause 3 and 4 from TNF licenses
|
||||||
|
- Rename HAVE_STRUCT_SOCKADDR_SA_LEN to
|
||||||
|
HAVE_STRUCT_SOCKADDR_IN_SIN_LEN to accurately reflect the
|
||||||
|
structure member being used.
|
||||||
|
- Use AF_INET instead of AF_UNSPEC as the default family if
|
||||||
|
!defined(INET6).
|
||||||
|
|
||||||
|
* configure improvements:
|
||||||
|
- Style tweaks.
|
||||||
|
- Use AC_LANG_PROGRAM() instead of AC_LANG_SOURCE()
|
||||||
|
- Add a check for strptime() requiring separators between
|
||||||
|
conversions, and use our replacement one if it does.
|
||||||
|
|
||||||
|
Sat Dec 20 15:28:24 UTC 2008 lukem
|
||||||
|
|
||||||
|
* configure improvements:
|
||||||
|
- Move IPv6 check from tnftp.h to configure.ac (as per tnftpd).
|
||||||
|
- Rework option descriptions.
|
||||||
|
- Highlight when tests are for a specific option.
|
||||||
|
- Move configuration results to the end of the file.
|
||||||
|
- Display $prefix in configure results.
|
||||||
|
|
||||||
|
Fri Aug 15 03:03:36 UTC 2008 lukem
|
||||||
|
|
||||||
|
* Add a "Configuration results" display at the end of configure.
|
||||||
|
Cosmetic tweaks.
|
||||||
|
|
||||||
|
Fri Feb 29 09:45:56 UTC 2008 lukem
|
||||||
|
|
||||||
|
* Support @EXEEXT@ for Cygwin (etc).
|
||||||
|
|
||||||
|
Mon Aug 6 04:55:19 UTC 2007 lukem
|
||||||
|
|
||||||
|
* Release as "tnftp 20070806"
|
||||||
|
|
||||||
|
* Add a NEWS file.
|
||||||
|
|
||||||
|
* Reduce differences between NetBSD-ftp and local copy.
|
||||||
|
|
||||||
|
* Merge NetBSD ftp from 20070605 to 20070722.
|
||||||
|
Changes:
|
||||||
|
- Document about:ftp and about:version.
|
||||||
|
|
||||||
|
* Add autoconf check for (Dante) SOCKS5.
|
||||||
|
(Needs run-time testing and more portability testing.)
|
||||||
|
|
||||||
|
Mon Jul 23 11:44:42 UTC 2007 lukem
|
||||||
|
|
||||||
|
* Don't use non-standard: u_char u_short u_int.
|
||||||
|
Use uint32_t instead of u_int32_t.
|
||||||
|
|
||||||
|
* Consistently use AS_CASE() and AS_IF() in configure.ac.
|
||||||
|
|
||||||
|
* Don't use defined() with HAVE_DECL_xxx.
|
||||||
|
Use `LL' instead of `L' suffix for fallback
|
||||||
|
defines of LLONG_MIN and LLONG_MAX.
|
||||||
|
|
||||||
|
Sun Jul 22 12:00:17 UTC 2007 lukem
|
||||||
|
|
||||||
|
* Include <arpa/nameser.h> if available, and provide fallback #defines.
|
||||||
|
|
||||||
|
* Sync with lib/libc/inet/inet_pton.c 1.3:
|
||||||
|
* Sync to bind 9.3.x version
|
||||||
|
* Update ISC copyright
|
||||||
|
* Fix some lint
|
||||||
|
|
||||||
|
* Sync with lib/libc/inet/inet_ntop.c 1.3:
|
||||||
|
* Sync to bind 9.3.x version
|
||||||
|
* Update ISC copyright
|
||||||
|
* Use socklen_t instead of size_t
|
||||||
|
* Use snprintf() instead of SPRINTF()
|
||||||
|
* Improve detection of various boundary conditions
|
||||||
|
|
||||||
|
* Sync to NetBSD glob.h 1.21, glob.c 1.16:
|
||||||
|
* Standards compliance fix
|
||||||
|
* De-lint
|
||||||
|
* Don't overflow when DEBUG is defined.
|
||||||
|
|
||||||
|
* Sync fgetln.c to tools/compat/fgetln.c 1.7:
|
||||||
|
* Clause 3 removal.
|
||||||
|
|
||||||
|
* Sync to config.guess 2007-07-22, config.sub 2007-06-28.
|
||||||
|
|
||||||
|
* Consistency tweaks in configure help strings.
|
||||||
|
|
||||||
|
* Add check for struct sockaddr.sa_len.
|
||||||
|
Change tests for HAVE_foo to defined(HAVE_foo).
|
||||||
|
Replace HAVE_SOCKADDR_SA_LEN with HAVE_STRUCT_SOCKADDR_SA_LEN.
|
||||||
|
|
||||||
|
* Remove pretence of supporting SOCKS for now;
|
||||||
|
no test system is available, and the old
|
||||||
|
autoconf 2.13 support wasn't upgraded to 2.61.
|
||||||
|
|
||||||
|
* configure.ac style consistency tweaks.
|
||||||
|
Move autoconf aux files from ./ to build-aux/
|
||||||
|
|
||||||
|
* Remove duplicate HAVE_STRERROR replacement in tnftp.h.
|
||||||
|
|
||||||
|
Thu Jun 7 04:47:47 UTC 2007 lukem
|
||||||
|
|
||||||
|
* Merge NetBSD ftp from 20070510 to 20070605. Changes:
|
||||||
|
- Enforce restriction that (http) proxied URL fetchs don't
|
||||||
|
support being restarted at this time.
|
||||||
|
Addresses NetBSD Problem Report 28697.
|
||||||
|
- Display times in RFC2822 form rather than using ctime(3),
|
||||||
|
since the former is more explicit about the timezone offset.
|
||||||
|
- main: call tzset() to ensure TZ is setup for other <time.h>
|
||||||
|
functions.
|
||||||
|
- remotemodtime(): use strptime() to parse the reply.
|
||||||
|
- fetch_url(): ensure struct tm is zeroed before calling
|
||||||
|
strptime().
|
||||||
|
- Modify parse_url() to consistently strip the leading `/'
|
||||||
|
off ftp URLs.
|
||||||
|
Fixes NetBSD Problem Report 17617.
|
||||||
|
- Use 'RFCnnnn' (with leading 0) instead of 'RFC nnnn', to be
|
||||||
|
consistent with the style in the RFC index.
|
||||||
|
- Refer to RFC3916 instead of 1738 or 2732.
|
||||||
|
- Expand the list of supported RFCs in ftp(1) to contain the
|
||||||
|
document name as well.
|
||||||
|
|
||||||
|
Fri May 11 04:39:55 UTC 2007 lukem
|
||||||
|
|
||||||
|
* Update INSTALL and COPYING.
|
||||||
|
|
||||||
|
* Rename HAVE_QUAD_SUPPORT to HAVE_PRINTF_LONG_LONG, and only
|
||||||
|
require support for 'long long' in that check rather than
|
||||||
|
needing sizeof(off_t)>=8, as some systems have a separate
|
||||||
|
off64_t when Large File Support is enabled.
|
||||||
|
|
||||||
|
* config.guess: treat 'i86xen:SunOS:5.*' as 'i86pc:SunOS:5.*'
|
||||||
|
|
||||||
|
Thu May 10 15:23:33 UTC 2007 lukem
|
||||||
|
|
||||||
|
* Remove checks for util.h and libutil.h, and replacement for
|
||||||
|
fparseln(), since fparseln() isn't used any more.
|
||||||
|
|
||||||
|
* Merge NetBSD ftp from 20070418 to 20070510. Changes:
|
||||||
|
- Switch from fparseln() to the internal getline() when
|
||||||
|
parsing HTTP headers. Makes ftp a bit more portable
|
||||||
|
(not needing fparseln()) at the expense of not supporting
|
||||||
|
arbitrary long header lines, which I'm not concerned about
|
||||||
|
because we don't support header line continuation either...
|
||||||
|
- Replace references from draft-ietf-ftpext-mlst-NN to RFC 3659.
|
||||||
|
- Fix misplaced const.
|
||||||
|
- Implement copy_bytes() to copy bytes from one fd to another
|
||||||
|
via the provided buffer, with optional rate-limiting and
|
||||||
|
hash-mark printing, using one loop and handle short writes.
|
||||||
|
Refactor sendrequest() and recvrequest() to use copy_data().
|
||||||
|
Addresses NetBSD Problem Report 15943.
|
||||||
|
|
||||||
|
Wed May 9 05:24:55 UTC 2007 lukem
|
||||||
|
|
||||||
|
* Fix typo in poll()-based implementation of usleep() replacement.
|
||||||
|
|
||||||
|
Wed May 9 04:58:50 UTC 2007 lukem
|
||||||
|
|
||||||
|
* Rename configure.in to configure.ac, as the latter is the
|
||||||
|
preferred name in autoconf 2.61.
|
||||||
|
|
||||||
|
* Convert from autoconf 2.13 to 2.61:
|
||||||
|
* Use a consistent quoting mechanism.
|
||||||
|
* Use modern autoconf macros, #define names, etc.
|
||||||
|
* Search for more header files, and only #include if found.
|
||||||
|
* Remove old-style config.h.in generation.
|
||||||
|
This may fix various tests on platforms such as FreeBSD and OS X.
|
||||||
|
|
||||||
|
* Add -Wl,-search_paths_first to LDFLAGS on OS X (Darwin) if the
|
||||||
|
linker supports it. This is needed so we use our libedit
|
||||||
|
rather than the system one.
|
||||||
|
|
||||||
|
XXX: SOCKS support is currently disabled until I update the
|
||||||
|
autoconf support.
|
||||||
|
|
||||||
|
Mon Apr 23 06:04:26 UTC 2007 lukem
|
||||||
|
|
||||||
|
* Merge NetBSD ftp from 20050610 to 20070418. Changes:
|
||||||
|
- Add '-s srcaddr'.
|
||||||
|
- Use IEC 60027-2 2^N based "KiB", "MiB" (etc) instead of
|
||||||
|
10^n "KB", "MB", ...
|
||||||
|
- Recognize 307 redirect code.
|
||||||
|
- Suppress printing non-COMPLETE reply strings when EPSV/EPRT
|
||||||
|
fails and we fall-back to PASV/PORT. Should fix a problem
|
||||||
|
with the emacs ftp wrapper.
|
||||||
|
- Fix display of 'Continue with <cmd>' messages.
|
||||||
|
- Prevent segfaults in .netrc parsing.
|
||||||
|
- Flush stdout before each command; ftp as slave process on
|
||||||
|
a pipe should work.
|
||||||
|
- getpass() can return NULL in some implementations; cope.
|
||||||
|
- Support '-q quittime' when waiting for server replies.
|
||||||
|
- Various spelling & grammatical fixes in the manual.
|
||||||
|
- Plug some memory leaks.
|
||||||
|
- If a file upload (via -u) fails, return an non-zero exit
|
||||||
|
value based on the index of the file that caused the
|
||||||
|
problem (a la auto-fetch retrieval).
|
||||||
|
- Coverity fixes for CIDs: 873 874 875 1447 1448 2194 2195 3610
|
||||||
|
- Don't remove trailing character during auth_url()
|
||||||
|
- Fix progressbar display on narrow terminals (<43 columns)
|
||||||
|
|
||||||
|
Fri Mar 16 06:00:14 UTC 2007 lukem
|
||||||
|
|
||||||
|
* Change the return value of the replacement gai_strerror()
|
||||||
|
from "char *" to "const char *", to match the current
|
||||||
|
standards.
|
||||||
|
Problem noted by Thomas Klausner.
|
||||||
|
|
||||||
|
Thu Oct 26 07:24:22 UTC 2006 lukem
|
||||||
|
|
||||||
|
* Correctly parse "AM" and "PM" in the replacement strptime().
|
||||||
|
Problem noted by Kathryn Hogg.
|
||||||
|
|
||||||
|
Sat Jun 25 06:27:00 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Release as "tnftp 20050625"
|
||||||
|
|
||||||
|
* Simplify the detection & replacement of dirname() and fparseln()
|
||||||
|
and just use AC_REPLACE_FUNCS.
|
||||||
|
(We don't care if the vendor has a working version in -lgen or -lutil
|
||||||
|
instead of -lc; they'll get our replacement version in that case).
|
||||||
|
Fixes build issue on older Darwin where the previous autoconf check
|
||||||
|
wouldn't find dirname() in the default system libraries.
|
||||||
|
|
||||||
|
* Only provide a prototype for dirname() if we can't find one in
|
||||||
|
<libgen.h>
|
||||||
|
|
||||||
|
* Search for NS_IN6ADDRSZ instead of IN6ADDRSZ, since we use the
|
||||||
|
former and not the latter and older Darwin has the former.
|
||||||
|
(This allows INET6 support to be enabled on Darwin 7.9.0)
|
||||||
|
|
||||||
|
Mon Jun 13 09:22:13 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Tweak SOCKS5 support:
|
||||||
|
acconfig.h:
|
||||||
|
- fix a comment
|
||||||
|
- ensure close() is replaced
|
||||||
|
- list entries in the same order as aclocal.m4
|
||||||
|
(and the SOCKS5 FAQ)
|
||||||
|
aclocal.m4:
|
||||||
|
- ensure getpeername() is replaced
|
||||||
|
- don't replace listen() twice
|
||||||
|
|
||||||
|
Fri Jun 10 04:39:33 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Release as "tnftp 20050610"
|
||||||
|
|
||||||
|
* Add dependencies on ${srcdir}/../tnftp.h and ../config.h
|
||||||
|
|
||||||
|
* Merge NetBSD ftp from 20050609 to 20050610. Changes:
|
||||||
|
- Implement getline() to read a line into a buffer.
|
||||||
|
- Convert to use getline() instead of fgets() whenever reading
|
||||||
|
user input to ensure that an overly long input line doesn't
|
||||||
|
leave excess characters for the next input operation to
|
||||||
|
accidentally use as input.
|
||||||
|
- Zero out the password & account after we've finished with it.
|
||||||
|
- Consistently use getpass(3) (i.e, character echo suppressed)
|
||||||
|
when reading the account data. For some reason, historically
|
||||||
|
the "login" code suppressed echo for Account: yet the "user"
|
||||||
|
command did not!
|
||||||
|
- Display the hostname in the "getaddrinfo failed" warning.
|
||||||
|
- Appease some -Wcast-qual warnings. Fixing all of these
|
||||||
|
requires significant code refactoring. (mmm, legacy code).
|
||||||
|
|
||||||
|
Thu Jun 9 16:49:05 UTC 2005 lukem
|
||||||
|
|
||||||
|
* src, libnetbsd: Excise RCSID block, rather than using
|
||||||
|
#if 0 ... #endif. The point was to minimise RCSID
|
||||||
|
conflicts, and the latter isn't helping there.
|
||||||
|
|
||||||
|
* Merge NetBSD ftp from 20050531 to 20050609. Changes:
|
||||||
|
- Only print the "Trying <address>..." message if verbose
|
||||||
|
and there's more than one struct addrinfo in the
|
||||||
|
getaddrinfo() result.
|
||||||
|
- Don't use non-standard "u_int".
|
||||||
|
|
||||||
|
Wed Jun 1 15:08:01 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Look for dirname(3), which may be in -lgen on IRIX, and
|
||||||
|
replace it if not found..
|
||||||
|
|
||||||
|
Wed Jun 1 11:48:58 UTC 2005 lukem
|
||||||
|
|
||||||
|
* libnetbsd:
|
||||||
|
- Don't use non-standard: u_char u_short u_int.
|
||||||
|
- Use uint32_t instead of u_int32_t.
|
||||||
|
- Don't use register.
|
||||||
|
|
||||||
|
* libedit: Don't use non-standard uint or u_int.
|
||||||
|
|
||||||
|
Tue May 31 02:23:08 UTC 2005 lukem
|
||||||
|
|
||||||
|
* tnftp.h: need <libgen.h> for dirname(3)
|
||||||
|
|
||||||
|
* Merge ftp from 20050513 to 20050531. Changes:
|
||||||
|
- Helps if the definition of xconnect() matches its
|
||||||
|
declaration....
|
||||||
|
- Fix some cast issues highlighted by Scott Reynolds using
|
||||||
|
gcc 4 on OSX.4
|
||||||
|
- Use size_t instead of int where appropriate.
|
||||||
|
- Make this compile on sparc64 (size_t != int).
|
||||||
|
- Printf field widths and size_t don't always mix well, so
|
||||||
|
cast to int. Fixes build problem for alpha.
|
||||||
|
- Some const cleanups.
|
||||||
|
- tab cleanup
|
||||||
|
- Improve method used in fileindir() to determine if `file'
|
||||||
|
is in or under `dir': realpath(3) on non-NetBSD systems may
|
||||||
|
fail if the target filename doesn't exist, so instead use
|
||||||
|
realpath(3) on the parent directory of `file'.
|
||||||
|
Per discussion with Todd Eigenschink.
|
||||||
|
- formatbuf(): fix %m and %M to use the hostname, not the
|
||||||
|
username.
|
||||||
|
- fetch_ftp(): preserve 'anonftp' across a disconnect() so
|
||||||
|
that multiple ftp auto-fetches on the same command line
|
||||||
|
login automatically.
|
||||||
|
- auto_fetch(): use an initialized volatile int to appease
|
||||||
|
IRIX cc.
|
||||||
|
|
||||||
|
* Merge libedit from NetBSD 20050105 to 20050531. Changes include:
|
||||||
|
- Rui Paulo: Incorrect tok_line and tok_str declarations.
|
||||||
|
- Remove clause 3 from the UCB license.
|
||||||
|
- Luke Mewburn: Don't abuse unconstify'ing a string
|
||||||
|
and writing to it, because you'll core dump. Also remove
|
||||||
|
extra const that gives pain to the irix compiler.
|
||||||
|
- Make sure we flush after we prepare when we are unbuffered
|
||||||
|
otherwise the prompt will not appear immediately.
|
||||||
|
- Terminate the arglist with a NULL instead of 0.
|
||||||
|
(Shuts up gcc4.x)
|
||||||
|
|
||||||
|
Sat May 28 13:19:38 UTC 2005 lukem
|
||||||
|
|
||||||
|
* libnetbsd/strvis.c:
|
||||||
|
- Sync to NetBSD's vis.c 1.33:
|
||||||
|
Use malloc(3) instead of alloca(3).
|
||||||
|
- Remove extraenous #endif
|
||||||
|
|
||||||
|
Fri May 27 05:46:58 UTC 2005 lukem
|
||||||
|
|
||||||
|
* libnetbsd/strvis.c: Sync to NetBSD's vis.c 1.30:
|
||||||
|
Use a more standard TNF license.
|
||||||
|
|
||||||
|
* libedit/sig.c: Include "src/progressbar.h" for xsignal_restart()
|
||||||
|
prototype.
|
||||||
|
|
||||||
|
* Ensure that fallback #define of __attribute__ is available.
|
||||||
|
Fixes build problem on HP-UX with cc.
|
||||||
|
|
||||||
|
Thu May 26 14:21:08 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Extend xpoll()'s HAVE_SELECT implementation to support POLLRDNORM,
|
||||||
|
POLLWRNORM, and POLLRDBAND - the latter using exceptfds.
|
||||||
|
Per discussion with Christos Zoulas.
|
||||||
|
|
||||||
|
Mon May 16 13:33:27 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Pull in <poll.h> or <sys/poll.h> if they exist even if we're
|
||||||
|
not using poll, as struct pollfd might exist in those.
|
||||||
|
Fixes build problem on OSX.3.
|
||||||
|
|
||||||
|
* Separate CPPFLAGS from CFLAGS.
|
||||||
|
|
||||||
|
* Sync various files in libnetbsd with the original versions
|
||||||
|
in NetBSD. Notable changes
|
||||||
|
- Convert 4 clause UCB license to 3 clause.
|
||||||
|
- Use strlcpy instead of strcpy.
|
||||||
|
- Update ISC copyright.
|
||||||
|
- Use NS_INADDRSZ, NS_IN6ADDRSZ and NS_INT16SZ instead of
|
||||||
|
equivalents without NS_ prefix.
|
||||||
|
- Use socklen_t instead of size_t where appropriate.
|
||||||
|
- Improve bounds checking.
|
||||||
|
- Don't update the size of allocated storage until
|
||||||
|
realloc succeeds.
|
||||||
|
- Fix comment about return value.
|
||||||
|
- Reverse the order of two loop invariant to make
|
||||||
|
'strlcat(0, "foo", 0)' not get a SEGV.
|
||||||
|
- Use Todd C. Miller's latest copyright notice (more loose).
|
||||||
|
- Use "long long" instead of "quad" in various
|
||||||
|
comments & constants.
|
||||||
|
- Support VIS_HTTPSTYLE.
|
||||||
|
- Implement svis(), strsvis(), strsvisx(), strunvisx().
|
||||||
|
|
||||||
|
* Prefer poll over select when implementing replacement usleep().
|
||||||
|
|
||||||
|
Sat May 14 04:44:35 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Release "tnftp 20050514"
|
||||||
|
|
||||||
|
* Fail if we can't find a library with tgetent (needed for libedit).
|
||||||
|
NetBSD PR pkg/28925.
|
||||||
|
* Improve quoting when using various autoconf macros.
|
||||||
|
|
||||||
|
* Merge NetBSD-ftp 20050513:
|
||||||
|
- Correct the "optlen" argument passed to getsockopt(3) and
|
||||||
|
setsockopt(3) in various places. Fixes a problem noted by
|
||||||
|
Allen Briggs.
|
||||||
|
- Improve warning printed when connect(2) for the data
|
||||||
|
channel fails.
|
||||||
|
|
||||||
|
Wed May 11 04:19:43 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Release "tnftp 20050511"
|
||||||
|
|
||||||
|
Wed May 11 04:10:01 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Update the THANKS file.
|
||||||
|
|
||||||
|
* Only use poll() to implement xpoll() if it's available,
|
||||||
|
otherwise attempt to use select() if that's available,
|
||||||
|
otherwise #error.
|
||||||
|
|
||||||
|
* Detect if struct pollfd is available in <poll.h> or <sys/poll.h>.
|
||||||
|
Improve consistency in use of autoconf macros.
|
||||||
|
|
||||||
|
Wed May 11 02:42:08 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Merge NetBSD-ftp 20050511:
|
||||||
|
- Use socklen_t instead of int as the 5th argument to
|
||||||
|
getsockopt(). Improve invocation of setsockopt() and
|
||||||
|
associated failure messages.
|
||||||
|
|
||||||
|
Wed May 11 01:46:29 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Clean up RCSID usage in vendor-derived code, restoring original
|
||||||
|
IDs where possible.
|
||||||
|
|
||||||
|
Wed May 11 00:08:16 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Merge NetBSD-ftp 20050510:
|
||||||
|
- Prevent an overly-long input line causing a core dump when
|
||||||
|
editing is enabled.
|
||||||
|
Issue noted by Ryoji Kanai in FreeBSD Problem Report # 77158.
|
||||||
|
- Implement a timeout on the accept(2) in dataconn() and the
|
||||||
|
connect(2) in xconnect() by temporarily setting O_NONBLOCK
|
||||||
|
on the socket and using xpoll() to wait for the operation
|
||||||
|
to succeed. The timeout used is the '-q quittime' argument
|
||||||
|
(defaults to 60s for accept(2), and the system default for
|
||||||
|
connect(2)). Idea inspired by discussion with Chuck Cranor.
|
||||||
|
This may (indirectly) fix various problems with timeouts in
|
||||||
|
active mode through broken firewalls.
|
||||||
|
- Implement xpoll() as a wrapper around poll(2), to make it
|
||||||
|
easier to replace on systems without a functional poll(2).
|
||||||
|
Unconditionally use xpoll() instead of conditionally using
|
||||||
|
select(2) or poll(2).
|
||||||
|
- In fetch_url(), don't call freeaddrinfo(res0) too early, as
|
||||||
|
we use pointers to its contents later in the function.
|
||||||
|
Problem found by Onno van der Linden.
|
||||||
|
- Fix ftp url reget when globs are being used.
|
||||||
|
Provided by Mathieu Arnold <mat@FreeBSD.org>.
|
||||||
|
- Factor out common string processing code eliminating static
|
||||||
|
buffers, making functions that should be static be static,
|
||||||
|
and cleaning up const usage. Added a guard against buffer
|
||||||
|
overflow, but the domap function is a bit too complicated
|
||||||
|
to tackle right now.
|
||||||
|
- Clean up whitespace.
|
||||||
|
- Expand description of http_proxy by suggesting the use of
|
||||||
|
RFC 1738 '%xx' encoding for "unsafe URL" characters in
|
||||||
|
usernames and passwords.
|
||||||
|
|
||||||
|
Wed Jan 5 05:53:59 UTC 2005 lukem
|
||||||
|
|
||||||
|
* For now, assume libedit is not up-to-date and use our own version.
|
||||||
|
|
||||||
|
* Merge libedit from NetBSD 20020605 to 20050105. Changes include:
|
||||||
|
- Improve vi-mode.
|
||||||
|
- Delete-previous-char and delete-next-char without an
|
||||||
|
argument are not supposed to modify the yank buffer in
|
||||||
|
emacs-mode.
|
||||||
|
- Improve incremental searching.
|
||||||
|
- Improve memory allocation & usage.
|
||||||
|
- Move UCB-licensed code from 4-clause to 3-clause.
|
||||||
|
- Make the tokenization functions publically available.
|
||||||
|
- Various tty access bug-fixes.
|
||||||
|
- Improve readline emulation.
|
||||||
|
|
||||||
|
Tue Jan 4 13:33:40 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Unixware 7.1.1 implements RFC 2133 (Basic Socket Interface
|
||||||
|
Extensions for IPv6) but not the successor RFC 2553. The configure
|
||||||
|
script detects this and decides that tnftp needs to compile its own
|
||||||
|
version of getaddrinfo(). This produces the error message
|
||||||
|
/usr/include/netdb.h:248: `getaddrinfo' previously defined here
|
||||||
|
because Unixware provides an implementation of getaddrinfo() in
|
||||||
|
netdb.h instead of a prototype declaration :-/. Since netdb.h
|
||||||
|
cannot be omitted, we will always get this definition and tnftp's
|
||||||
|
version of getaddrinfo will always create a conflict. This ugly
|
||||||
|
preprocessor hack works around the problem. Hints for a better
|
||||||
|
solution welcome. Fix from pkgsrc/net/tnftp.
|
||||||
|
|
||||||
|
* Workaround poll() being a compatibility function on Darwin 7
|
||||||
|
(MacOSX 10.3) by adding a custom test for _POLL_EMUL_H_ which
|
||||||
|
is defined in poll.h on some MacOSX 10.3 systems. Not all 10.3
|
||||||
|
systems have poll.h, so only do the poll() test if at least one
|
||||||
|
of the header files is found. Fix from pkgsrc/net/tnftp.
|
||||||
|
|
||||||
|
* Add a utimes() replacement (using utime()) for Interix.
|
||||||
|
From pkgsrc/net/tnftp.
|
||||||
|
|
||||||
|
Mon Jan 3 10:21:57 UTC 2005 lukem
|
||||||
|
|
||||||
|
* Release "tnftp 20050103"
|
||||||
|
|
||||||
|
* Merge NetBSD-ftp 20050103:
|
||||||
|
- Forbid filenames returned from mget that aren't in (or below)
|
||||||
|
the current directory. The previous behaviour (of trusting
|
||||||
|
the remote server's response when retrieving the list of
|
||||||
|
files to mget with prompting disabled) has been in ftp
|
||||||
|
~forever, and has been a "known issue" for a long time.
|
||||||
|
Recently an advisory was published by D.J. Bernstein on
|
||||||
|
behalf of Yosef Klein warning of the problems with the
|
||||||
|
previous behaviour, so to alleviate concern I've fixed
|
||||||
|
this with a sledgehammer.
|
||||||
|
- Remember the local cwd after any operation which may
|
||||||
|
change it.
|
||||||
|
- Use "remotecwd" instead of "remotepwd".
|
||||||
|
- Add (unsigned char) cast to ctype functions
|
||||||
|
- Ensure that "mname" is set in ls() and mls() so that an
|
||||||
|
aborted confirm() prints the correct name.
|
||||||
|
Problem highlighted & suggested fix from PR [bin/17766]
|
||||||
|
by Steve McClellan.
|
||||||
|
- If an ftp auto-fetch transfer is interrupted by SIGINT
|
||||||
|
(usually ^C), exit with 130 instead of 1 (or rarely, 0).
|
||||||
|
This allows an ftp auto-fetch in a shell loop to correctly
|
||||||
|
terminate the loop.
|
||||||
|
Should fix PR [pkg/26351], and possibly others.
|
||||||
|
- Save approximately 8K by not including http authentication,
|
||||||
|
extended status messages and help strings when the
|
||||||
|
appropriate options are set.
|
||||||
|
- Move UCB-licensed code from 4-clause to 3-clause licence.
|
||||||
|
Patches provided by Joel Baker in PR 22365, verified by
|
||||||
|
Alistair Crooks.
|
||||||
|
- Always decode %xx in a url's user & pass components.
|
||||||
|
- Only remember {WWW,Proxy}-Authenticate "Basic" challenges; no
|
||||||
|
point in tracking any others since ftp doesn't support them.
|
||||||
|
- Improve the parsing of HTTP responses.
|
||||||
|
- Don't base64 encode the trailing NUL in the HTTP basic auth
|
||||||
|
response. Problem noted by Eric Haszlakiewicz.
|
||||||
|
- Improve parsing of HTTP response headers to be more RFC2616
|
||||||
|
compliant, and skip LWS (linear white space; CR, LF, space,
|
||||||
|
tab) and the end of lines and between the field name and
|
||||||
|
the field value. This still isn't 100% compliant, since we
|
||||||
|
don't support "multi line" responses at this time.
|
||||||
|
This should fix PR [bin/22611] from TAMURA Kent (although I
|
||||||
|
can't easily find a http server to reproduce the problem
|
||||||
|
against.)
|
||||||
|
- Fix a minor memory leak when parsing HTTP response headers.
|
||||||
|
- Don't unnecessarily display a 401/407 error when running
|
||||||
|
with -V. Fix from PR [bin/18535] by Jeremy Reed.
|
||||||
|
- Don't warn about "ignored setsockopt" failures unless
|
||||||
|
debugging is enabled. Suggested by Todd Vierling.
|
||||||
|
- Allow empty passwords in ftp://user:@host/file auto-fetch
|
||||||
|
URLs, per RFC 1738. Requested by Simon Poole.
|
||||||
|
- correct URL syntax in comment
|
||||||
|
- Note potentially surprising file-saving behaviour in case
|
||||||
|
of HTTP redirects
|
||||||
|
- -n is ignored for auto-fetch transfers
|
||||||
|
- If connect(2) in xconnect() fails with EINTR, call select(2)
|
||||||
|
on the socket until it's writable or it fails with something
|
||||||
|
other than EINTR. This matches the behaviour in SUSv3, and
|
||||||
|
prevents the problem when pressing ^T (SIGINFO, which is
|
||||||
|
marked as restartable) during connection setup would cause
|
||||||
|
ftp to fail with EADDRINUSE or EALREADY when the second
|
||||||
|
connect(2) was attempted on the same socket. Problem found
|
||||||
|
and solution provided by Maxime Henrion <mux@freebsd.org>.
|
||||||
|
- Add -q to usage. From Kouichirou Hiratsuka in PR 26199.
|
||||||
|
- PR/25566: Anders Magnusson: ftp(1) do not like large TCP
|
||||||
|
windows. Limit it to 8M.
|
||||||
|
|
||||||
|
Mon Oct 6 01:23:03 UTC 2003 lukem
|
||||||
|
|
||||||
|
* configure.in improvements:
|
||||||
|
- When testing for IN6ADDRSZ in <arpa/nameser.h>, pull in
|
||||||
|
<sys/types.h> first. From Stoned Elipot <seb @ NetBSD>
|
||||||
|
- Whitespace cleanup
|
||||||
|
|
||||||
|
Mon Aug 25 11:45:45 UTC 2003 lukem
|
||||||
|
|
||||||
|
* Release "tnftp 20030825"
|
||||||
|
|
||||||
|
* Add autoconf test for <sys/syslimits.h>; Cygwin needs it for ARG_MAX.
|
||||||
|
Per discussion with Eugene Kotlyarov <ekot@protek36.esoo.ru>.
|
||||||
|
|
||||||
|
Thu Jul 31 07:30:00 UTC 2003 lukem
|
||||||
|
|
||||||
|
* release "tnftp 20030731"
|
||||||
|
|
||||||
|
* merge ftp from NetBSD 20030731 to 20030731b:
|
||||||
|
- Work around broken ftp servers (notably ProFTPd) that can't
|
||||||
|
even follow RFC 2389, and skip any amount of whitespace
|
||||||
|
before a FEATure response. The RFC says 'single space' yet
|
||||||
|
ProFTPd puts two. Noted by DervishD <raul@pleyades.net>.
|
||||||
|
- Improve formatting of features[] debug dump.
|
||||||
|
- Invalidate remote directory completion cache if any command
|
||||||
|
which may change the remote contents completes successfully,
|
||||||
|
including: del, mdel, ren, mkdir, rmdir, quote, and all
|
||||||
|
upload commands. Patch from Yar Tikhiy <yar@freebsd.org>.
|
||||||
|
|
||||||
|
* merge ftp from NetBSD 20030228 to 20030731:
|
||||||
|
- $FTPUSERAGENT overrides the HTTP User-Agent header.
|
||||||
|
Based on patch from Douwe Kiela <virtus@wanadoo.nl>.
|
||||||
|
- Add about:tnftp
|
||||||
|
- Fix URL in about:netbsd
|
||||||
|
- netbsd.org->NetBSD.org
|
||||||
|
- strlcpy fix in fetch.c
|
||||||
|
- Uppercase "URL"
|
||||||
|
- fix a bogus error message when given a HTTP URL with a
|
||||||
|
trailing slash
|
||||||
|
- groff fixes in man page
|
||||||
|
- tweak progressbar.c copyright; the stuff jason did in util.c
|
||||||
|
wasn't migrated to this file
|
||||||
|
- Don't coredump when printing '%n' in the prompt if there's
|
||||||
|
no username yet.
|
||||||
|
Fix from Maxim Konovalov <maxim@freebsd.org>
|
||||||
|
|
||||||
|
* Add test for HAVE_IN6ADDRSZ (which older Darwin is lacking),
|
||||||
|
and only enable INET6 if it exists.
|
||||||
|
Patch from Amitai Schlair <schmonz@schmonz.com>.
|
||||||
|
|
||||||
|
* Improve ipv6 check for older linux systems that don't provide
|
||||||
|
sin6_scope_id.
|
||||||
|
Patch from YAMANO Yuji <Yamano_Yuji@tk-bay.ogis-ri.co.jp>.
|
||||||
|
|
||||||
|
Fri Feb 28 10:57:30 UTC 2003 lukem
|
||||||
|
|
||||||
|
* tagged as "tnftp 2.0 beta1"
|
||||||
|
|
||||||
|
Fri Feb 28 10:07:07 UTC 2003 lukem
|
||||||
|
|
||||||
|
* renamed to `tnftp' (from `lukemftp')
|
||||||
|
|
||||||
|
* renamed `libukem' to `libnetbsd'
|
||||||
|
|
||||||
|
|
||||||
|
Mon Jun 17 06:50:13 UTC 2002 lukem
|
||||||
|
|
||||||
|
* #if USE_GLOB_H, use <glob.h> instead of "ftpglob.h".
|
||||||
|
Requested by Mike Heffner <mikeh@freebsd.org>
|
||||||
|
|
||||||
Mon Jun 10 08:12:35 UTC 2002 lukem
|
Mon Jun 10 08:12:35 UTC 2002 lukem
|
||||||
|
|
||||||
* crank FTP_VERSION from 1.6-beta1 to 1.6-beta2
|
* crank FTP_VERSION from 1.6-beta1 to 1.6-beta2
|
||||||
@ -406,7 +1116,7 @@ Wed Aug 2 23:43:50 EST 2000 lukem
|
|||||||
* update from NetBSD-current (20000802):
|
* update from NetBSD-current (20000802):
|
||||||
- rename NO_QUAD to NO_LONG_LONG, QUAD* -> LL* and add ULL*
|
- rename NO_QUAD to NO_LONG_LONG, QUAD* -> LL* and add ULL*
|
||||||
(unsigned) equivalents. name change suggested by Klaus
|
(unsigned) equivalents. name change suggested by Klaus
|
||||||
Klein <kjk@netbsd.org>
|
Klein <kjk@NetBSD.org>
|
||||||
- change defined(BSD4_4) || HAVE_SIN_LEN tests into
|
- change defined(BSD4_4) || HAVE_SIN_LEN tests into
|
||||||
HAVE_SOCKADDR_SA_LEN, and set the latter if BSD4_4 exists
|
HAVE_SOCKADDR_SA_LEN, and set the latter if BSD4_4 exists
|
||||||
|
|
||||||
@ -985,7 +1695,7 @@ Mon Oct 4 10:57:41 EST 1999 lukem
|
|||||||
|
|
||||||
* Add support for --{en,dis}able-editcomplete (defaults to enabled),
|
* Add support for --{en,dis}able-editcomplete (defaults to enabled),
|
||||||
which prevents libedit support from being compiled in.
|
which prevents libedit support from being compiled in.
|
||||||
From Chris G. Demetriou <cgd@netbsd.org>
|
From Chris G. Demetriou <cgd@NetBSD.org>
|
||||||
|
|
||||||
Sun Oct 3 16:49:01 EST 1999 lukem
|
Sun Oct 3 16:49:01 EST 1999 lukem
|
||||||
|
|
||||||
|
@ -1,64 +0,0 @@
|
|||||||
diff -ru src.orig/cmds.c src/cmds.c
|
|
||||||
--- src.orig/cmds.c Sun Jun 15 22:11:43 2003
|
|
||||||
+++ src/cmds.c Sun Jun 15 21:46:37 2003
|
|
||||||
@@ -131,6 +131,7 @@
|
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
+#include <libutil.h>
|
|
||||||
|
|
||||||
#include "ftp_var.h"
|
|
||||||
#include "version.h"
|
|
||||||
diff -ru src.orig/fetch.c src/fetch.c
|
|
||||||
--- src.orig/fetch.c Sun Jun 15 22:11:43 2003
|
|
||||||
+++ src/fetch.c Sun Jun 15 21:46:53 2003
|
|
||||||
@@ -69,6 +69,7 @@
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <time.h>
|
|
||||||
+#include <libutil.h>
|
|
||||||
|
|
||||||
#include "ftp_var.h"
|
|
||||||
#include "version.h"
|
|
||||||
Only in src: ftp.cat1
|
|
||||||
diff -ru src.orig/progressbar.c src/progressbar.c
|
|
||||||
--- src.orig/progressbar.c Sun Jun 15 22:11:43 2003
|
|
||||||
+++ src/progressbar.c Sun Jun 15 21:50:48 2003
|
|
||||||
@@ -50,6 +50,7 @@
|
|
||||||
*/
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/param.h>
|
|
||||||
+#include <sys/time.h>
|
|
||||||
|
|
||||||
#include <err.h>
|
|
||||||
#include <errno.h>
|
|
||||||
@@ -57,10 +58,12 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <time.h>
|
|
||||||
-#include <tzfile.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "progressbar.h"
|
|
||||||
+
|
|
||||||
+#define SECSPERHOUR (60 * 60)
|
|
||||||
+#define SECSPERDAY ((long)60 * 60 * 24)
|
|
||||||
|
|
||||||
#if !defined(NO_PROGRESS)
|
|
||||||
/*
|
|
||||||
diff -ru src.orig/util.c src/util.c
|
|
||||||
--- src.orig/util.c Sun Jun 15 22:11:44 2003
|
|
||||||
+++ src/util.c Sun Jun 15 21:51:31 2003
|
|
||||||
@@ -101,10 +101,11 @@
|
|
||||||
#include <string.h>
|
|
||||||
#include <termios.h>
|
|
||||||
#include <time.h>
|
|
||||||
-#include <tzfile.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "ftp_var.h"
|
|
||||||
+
|
|
||||||
+#define TM_YEAR_BASE 1900
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Connect to peer server and auto-login, if possible.
|
|
@ -1,8 +1,7 @@
|
|||||||
INSTALLATION INTRODUCTION
|
INSTALLATION INTRODUCTION
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
This file describes how to compile and install lukemftp on your
|
This file describes how to compile and install tnftp on your system.
|
||||||
system.
|
|
||||||
|
|
||||||
============================================
|
============================================
|
||||||
= =
|
= =
|
||||||
@ -11,24 +10,20 @@ system.
|
|||||||
============================================
|
============================================
|
||||||
|
|
||||||
|
|
||||||
For most systems, execute the following to compile and install
|
For most systems, execute the following to compile and install tnftp:
|
||||||
lukemftp:
|
|
||||||
./configure
|
./configure
|
||||||
make
|
make
|
||||||
make install
|
make install
|
||||||
|
|
||||||
A preformatted manual page (src/ftp.cat1) is also installed. If
|
A preformatted manual page (src/ftp.cat1) is also installed.
|
||||||
you wish to install the source (src/ftp.1), ensure that your system
|
If you wish to install the source (src/ftp.1), ensure that your system
|
||||||
has up-to-date mandoc macros. groff ships with this macro suite,
|
has up-to-date mandoc macros, such as those that are shipped with groff.
|
||||||
but it has bugs. Try:
|
|
||||||
ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/share/tmac/
|
|
||||||
for a more recent version.
|
|
||||||
|
|
||||||
|
|
||||||
CONFIGURATION OPTIONS
|
CONFIGURATION OPTIONS
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
lukemftp is configured using an `autoconf' generated `configure'
|
tnftp is configured using an `autoconf' generated `configure'
|
||||||
script. `configure' supports the following options:
|
script. `configure' supports the following options:
|
||||||
|
|
||||||
* The standard `autoconf configure' options, including:
|
* The standard `autoconf configure' options, including:
|
||||||
@ -41,14 +36,11 @@ script. `configure' supports the following options:
|
|||||||
|
|
||||||
* Specific options:
|
* Specific options:
|
||||||
--enable-editcomplete Turn on command line editing and completion.
|
--enable-editcomplete Turn on command line editing and completion.
|
||||||
--disable-editcomplete Turn off command line editing and completion
|
(default: enabled)
|
||||||
[default: enabled].
|
--enable-ipv6 Enable IPv6 support (if your OS supports it).
|
||||||
--enable-ipv6 Enable IPv6 support (if your OS supports it)
|
(default: enabled)
|
||||||
--disable-ipv6 Disable IPv6 support (even if your OS supports it.)
|
--disable-largefile omit support for large files
|
||||||
[default: enabled].
|
--with-socks enable support for (Dante) SOCKS5 proxy
|
||||||
--with-socks Compile with SOCKS firewall traversal support.
|
|
||||||
--with-socks5[=PATH] Compile with SOCKS5 firewall traversal support.
|
|
||||||
--with-socks4[=PATH] Compile with SOCKS4 firewall traversal support.
|
|
||||||
|
|
||||||
The following environment variables can be set to override various
|
The following environment variables can be set to override various
|
||||||
compiler related settings.
|
compiler related settings.
|
||||||
@ -66,146 +58,3 @@ This can be achieved with:
|
|||||||
= =
|
= =
|
||||||
============================================
|
============================================
|
||||||
|
|
||||||
|
|
||||||
PLATFORM SPECIFIC NOTES
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
The following platforms & compilers have been tested:
|
|
||||||
|
|
||||||
- AIX 4.1.5:
|
|
||||||
- AIX 4.2.1:
|
|
||||||
- AIX 4.3.3:
|
|
||||||
- Compiler: xlc -qlanglvl=ansi
|
|
||||||
version: xlC 3.1.4.10 -- C for AIX Compiler
|
|
||||||
version: ibmcxx.cmp 3.6.6.6 -- IBM C and C++ Compilers
|
|
||||||
|
|
||||||
Configure with:
|
|
||||||
env CC="xlc" CFLAGS="-qlanglvl=ansi" ./configure
|
|
||||||
|
|
||||||
- BSD/OS 4.0.1 (x86)
|
|
||||||
- BSD/OS 4.1 (x86)
|
|
||||||
- BSD/OS 4.1 (sparc)
|
|
||||||
- BSD/OS 4.2 (x86)
|
|
||||||
- Compiler: /bin/cc
|
|
||||||
version: gcc 2.7.2.1
|
|
||||||
version: gcc version 2.95.2 19991024
|
|
||||||
|
|
||||||
- Digital UNIX 4.0b
|
|
||||||
- Digital UNIX 4.0d
|
|
||||||
- Digital UNIX 4.0f
|
|
||||||
- Compiler: cc -std
|
|
||||||
version: DEC C V5.2-036 on Digital UNIX V4.0 (Rev. 564)
|
|
||||||
version: DEC C V5.9-005 on Digital UNIX V4.0 (Rev. 1229)
|
|
||||||
|
|
||||||
Configure with
|
|
||||||
env CC="cc -std" ./configure
|
|
||||||
|
|
||||||
- Compiler: gcc
|
|
||||||
version: 2.95.1
|
|
||||||
|
|
||||||
- Digital UNIX 5.0
|
|
||||||
- Compiler: cc
|
|
||||||
version: Compaq C V6.1-011 on Digital UNIX V5.0 (Rev. 910)
|
|
||||||
|
|
||||||
- FreeBSD 3.4 (i386):
|
|
||||||
- FreeBSD 3.5 (i386):
|
|
||||||
- FreeBSD 4.1 (i386):
|
|
||||||
- Compiler: cc
|
|
||||||
version: gcc version 2.7.2.3
|
|
||||||
version: gcc version 2.95.2 19991024
|
|
||||||
|
|
||||||
- HP/UX 10.20:
|
|
||||||
- HP/UX 11.00:
|
|
||||||
- Compiler: /opt/ansic/bin/cc -Ae
|
|
||||||
version: A.10.32.03
|
|
||||||
|
|
||||||
Configure with
|
|
||||||
env CC="cc -Ae" ./configure
|
|
||||||
|
|
||||||
To generate code that will run on old architectures you
|
|
||||||
may need to add "+DAportable" to CC.
|
|
||||||
|
|
||||||
|
|
||||||
- IRIX 6.5.4
|
|
||||||
- IRIX 6.5.8
|
|
||||||
Compiler: /bin/cc
|
|
||||||
version: MIPSpro Compilers: Version 7.2.1
|
|
||||||
Compiler:
|
|
||||||
version: gcc version 2.95.2
|
|
||||||
|
|
||||||
- HP/UX 11.00:
|
|
||||||
- HP/UX 11.00 64 bit:
|
|
||||||
- Compiler: /opt/ansic/bin/cc -Ae
|
|
||||||
version: A.11.01.00
|
|
||||||
|
|
||||||
Configure with
|
|
||||||
env CC="cc -Ae" ./configure
|
|
||||||
|
|
||||||
- NetBSD 1.3.3 (i386)
|
|
||||||
Compiler: /usr/bin/cc
|
|
||||||
Compiler: /usr/bin/cc
|
|
||||||
|
|
||||||
Ignore warnings about ``passing arg 3 of `tputs' from
|
|
||||||
incompatible pointer type''.
|
|
||||||
|
|
||||||
- RedHat Linux 5.1 (?? i386)
|
|
||||||
- RedHat Linux 5.2 (?? i386)
|
|
||||||
- RedHat Linux 6.0 (Linux 2.2.10 i686)
|
|
||||||
- RedHat Linux 6.1 (Linux 2.2.5-15 i686)
|
|
||||||
- RedHat Linux 6.2 (Linux 2.2.16-3smp i686)
|
|
||||||
- Compiler: cc
|
|
||||||
version: egcs-1.1.2
|
|
||||||
|
|
||||||
- Slackware (Linux 2.0.35 i686)
|
|
||||||
- Compiler: cc
|
|
||||||
version: 2.7.2.3
|
|
||||||
|
|
||||||
- Solaris 2.6 (sparc)
|
|
||||||
- Solaris 7 (sparc)
|
|
||||||
- Compiler: /opt/SUNWspro/bin/cc
|
|
||||||
version: WorkShop Compilers 5.0
|
|
||||||
|
|
||||||
- Compiler: gcc
|
|
||||||
version: egcs-1.1.2
|
|
||||||
|
|
||||||
=============
|
|
||||||
= OLD NOTES =
|
|
||||||
=============
|
|
||||||
|
|
||||||
XXX: clean up to match reality
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
- RedHat Linux 5.0 (i386)
|
|
||||||
Compiler: cc
|
|
||||||
|
|
||||||
- Solaris 2.5 (sparc)
|
|
||||||
- Solaris 7 (x86)
|
|
||||||
Compiler: /opt/SUNWspro/bin/cc
|
|
||||||
version: SC3.0 15 Dec 1993
|
|
||||||
version: WorkShop Compilers 5.0
|
|
||||||
Compiler: gcc
|
|
||||||
version: egcs-1.1.2
|
|
||||||
version: gcc 2.8.1
|
|
||||||
version: gcc 2.95.1
|
|
||||||
|
|
||||||
- Solaris 7 (sparc) 64 bit
|
|
||||||
Compiler: /opt/SUNWspro/bin/cc -xarch=v9
|
|
||||||
version: WorkShop Compilers 5.0
|
|
||||||
|
|
||||||
- SunOS 4
|
|
||||||
Compiler: gcc -lresolv
|
|
||||||
version:
|
|
||||||
|
|
||||||
- SuSE Linux
|
|
||||||
Compiler: gcc
|
|
||||||
version:
|
|
||||||
|
|
||||||
/usr/bin/ftp on SuSE Linux 6.4 is this ftp client.
|
|
||||||
|
|
||||||
May need `gcc -L/usr/lib/termcap' if tgetent() et al aren't found.
|
|
||||||
|
|
||||||
- Ultrix 4.5
|
|
||||||
Compiler: cc
|
|
||||||
version: MIPS C Compiler 3.0
|
|
||||||
Compiler: gcc
|
|
||||||
version: 2.7.2.2
|
|
||||||
|
13
contrib/tnftp/Makefile.am
Normal file
13
contrib/tnftp/Makefile.am
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
## $NetBSD: Makefile.am,v 1.2 2010/01/04 06:24:58 lukem Exp $
|
||||||
|
|
||||||
|
SUBDIRS = libnetbsd
|
||||||
|
|
||||||
|
if USE_LIBEDIT
|
||||||
|
SUBDIRS += libedit
|
||||||
|
endif
|
||||||
|
|
||||||
|
SUBDIRS += src
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
todo \
|
||||||
|
tnftp.h
|
@ -1,33 +1,726 @@
|
|||||||
# $Id: Makefile.in,v 1.6 1999/11/13 01:18:22 lukem Exp $
|
# Makefile.in generated by automake 1.11 from Makefile.am.
|
||||||
#
|
# @configure_input@
|
||||||
|
|
||||||
srcdir = @srcdir@
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
VPATH = @srcdir@
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||||
SHELL = /bin/sh
|
# Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
@USE_LIBEDIT_TRUE@am__append_1 = libedit
|
||||||
|
subdir = .
|
||||||
|
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||||
|
$(srcdir)/Makefile.in $(srcdir)/tnftp_config.h.in \
|
||||||
|
$(top_srcdir)/configure COPYING ChangeLog INSTALL NEWS THANKS \
|
||||||
|
buildaux/config.guess buildaux/config.sub buildaux/depcomp \
|
||||||
|
buildaux/install-sh buildaux/ltmain.sh buildaux/missing
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
|
configure.lineno config.status.lineno
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_HEADER = tnftp_config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
AM_V_GEN = $(am__v_GEN_$(V))
|
||||||
|
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
am__v_GEN_0 = @echo " GEN " $@;
|
||||||
|
AM_V_at = $(am__v_at_$(V))
|
||||||
|
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
am__v_at_0 = @
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||||
|
html-recursive info-recursive install-data-recursive \
|
||||||
|
install-dvi-recursive install-exec-recursive \
|
||||||
|
install-html-recursive install-info-recursive \
|
||||||
|
install-pdf-recursive install-ps-recursive install-recursive \
|
||||||
|
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||||
|
ps-recursive uninstall-recursive
|
||||||
|
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||||
|
distclean-recursive maintainer-clean-recursive
|
||||||
|
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||||
|
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||||
|
distdir dist dist-all distcheck
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DIST_SUBDIRS = libnetbsd libedit src
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
top_distdir = $(distdir)
|
||||||
|
am__remove_distdir = \
|
||||||
|
{ test ! -d "$(distdir)" \
|
||||||
|
|| { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||||
|
&& rm -fr "$(distdir)"; }; }
|
||||||
|
am__relativize = \
|
||||||
|
dir0=`pwd`; \
|
||||||
|
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||||
|
sed_rest='s,^[^/]*/*,,'; \
|
||||||
|
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||||
|
sed_butlast='s,/*[^/]*$$,,'; \
|
||||||
|
while test -n "$$dir1"; do \
|
||||||
|
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first" != "."; then \
|
||||||
|
if test "$$first" = ".."; then \
|
||||||
|
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||||
|
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||||
|
else \
|
||||||
|
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first2" = "$$first"; then \
|
||||||
|
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||||
|
else \
|
||||||
|
dir2="../$$dir2"; \
|
||||||
|
fi; \
|
||||||
|
dir0="$$dir0"/"$$first"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||||
|
done; \
|
||||||
|
reldir="$$dir2"
|
||||||
|
DIST_ARCHIVES = $(distdir).tar.gz
|
||||||
|
GZIP_ENV = --best
|
||||||
|
distuninstallcheck_listfiles = find . -type f -print
|
||||||
|
distcleancheck_listfiles = find . -type f -print
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
ALLOCA = @ALLOCA@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DSYMUTIL = @DSYMUTIL@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
NMEDIT = @NMEDIT@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
builddir = @builddir@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
SUBDIRS = libnetbsd $(am__append_1) src
|
||||||
|
EXTRA_DIST = \
|
||||||
|
todo \
|
||||||
|
tnftp.h
|
||||||
|
|
||||||
|
all: tnftp_config.h
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
SUBDIRS = libedit libukem src
|
.SUFFIXES:
|
||||||
|
am--refresh:
|
||||||
|
@:
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
|
||||||
|
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --foreign Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
echo ' $(SHELL) ./config.status'; \
|
||||||
|
$(SHELL) ./config.status;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
all: ftp
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
$(SHELL) ./config.status --recheck
|
||||||
|
|
||||||
ftp: @LIBEDIT@ @LIBUKEM@
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
( cd src; ${MAKE} )
|
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
libedit.a:
|
tnftp_config.h: stamp-h1
|
||||||
( cd libedit; ${MAKE} )
|
@if test ! -f $@; then \
|
||||||
|
rm -f stamp-h1; \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
|
||||||
|
else :; fi
|
||||||
|
|
||||||
libukem.a:
|
stamp-h1: $(srcdir)/tnftp_config.h.in $(top_builddir)/config.status
|
||||||
( cd libukem; ${MAKE} )
|
@rm -f stamp-h1
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status tnftp_config.h
|
||||||
|
$(srcdir)/tnftp_config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||||
|
rm -f stamp-h1
|
||||||
|
touch $@
|
||||||
|
|
||||||
install clean:
|
distclean-hdr:
|
||||||
@for i in ${SUBDIRS}; do \
|
-rm -f tnftp_config.h stamp-h1
|
||||||
( echo "$@ ===> $$i" ; cd $$i ; ${MAKE} $@ ); \
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool config.lt
|
||||||
|
|
||||||
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
|
# into them and run `make' without going through this Makefile.
|
||||||
|
# To change the values of `make' variables: instead of editing Makefiles,
|
||||||
|
# (1) if the variable is set in `config.status', edit `config.status'
|
||||||
|
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||||
|
# (2) otherwise, pass the desired values on the `make' command line.
|
||||||
|
$(RECURSIVE_TARGETS):
|
||||||
|
@failcom='exit 1'; \
|
||||||
|
for f in x $$MAKEFLAGS; do \
|
||||||
|
case $$f in \
|
||||||
|
*=* | --[!k]*);; \
|
||||||
|
*k*) failcom='fail=yes';; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
dot_seen=no; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
dot_seen=yes; \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done; \
|
||||||
|
if test "$$dot_seen" = "no"; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||||
|
fi; test -z "$$fail"
|
||||||
|
|
||||||
|
$(RECURSIVE_CLEAN_TARGETS):
|
||||||
|
@failcom='exit 1'; \
|
||||||
|
for f in x $$MAKEFLAGS; do \
|
||||||
|
case $$f in \
|
||||||
|
*=* | --[!k]*);; \
|
||||||
|
*k*) failcom='fail=yes';; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
dot_seen=no; \
|
||||||
|
case "$@" in \
|
||||||
|
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||||
|
*) list='$(SUBDIRS)' ;; \
|
||||||
|
esac; \
|
||||||
|
rev=''; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = "."; then :; else \
|
||||||
|
rev="$$subdir $$rev"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
rev="$$rev ."; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
for subdir in $$rev; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done && test -z "$$fail"
|
||||||
|
tags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||||
|
done
|
||||||
|
ctags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||||
done
|
done
|
||||||
|
|
||||||
distclean: clean
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
@for i in ${SUBDIRS}; do \
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
( echo "$@ ===> $$i" ; cd $$i ; ${MAKE} $@ ); \
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: tags-recursive $(HEADERS) $(SOURCES) tnftp_config.h.in $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
set x; \
|
||||||
|
here=`pwd`; \
|
||||||
|
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||||
|
include_option=--etags-include; \
|
||||||
|
empty_fix=.; \
|
||||||
|
else \
|
||||||
|
include_option=--include; \
|
||||||
|
empty_fix=; \
|
||||||
|
fi; \
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test ! -f $$subdir/TAGS || \
|
||||||
|
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
list='$(SOURCES) $(HEADERS) tnftp_config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
shift; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
if test $$# -gt 0; then \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) tnftp_config.h.in $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
list='$(SOURCES) $(HEADERS) tnftp_config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& $(am__cd) $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
$(am__remove_distdir)
|
||||||
|
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
list='$(DISTFILES)'; \
|
||||||
|
dist_files=`for file in $$list; do echo $$file; done | \
|
||||||
|
sed -e "s|^$$srcdirstrip/||;t" \
|
||||||
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||||
|
case $$dist_files in \
|
||||||
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||||
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||||
|
sort -u` ;; \
|
||||||
|
esac; \
|
||||||
|
for file in $$dist_files; do \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test -d "$(distdir)/$$file"; then \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f "$(distdir)/$$file" \
|
||||||
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
done
|
done
|
||||||
rm -f Makefile config.cache config.log config.status config.h
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test -d "$(distdir)/$$subdir" \
|
||||||
|
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_distdir=$$reldir; \
|
||||||
|
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_top_distdir=$$reldir; \
|
||||||
|
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||||
|
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||||
|
($(am__cd) $$subdir && \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="$$new_top_distdir" \
|
||||||
|
distdir="$$new_distdir" \
|
||||||
|
am__remove_distdir=: \
|
||||||
|
am__skip_length_check=: \
|
||||||
|
am__skip_mode_fix=: \
|
||||||
|
distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
-test -n "$(am__skip_mode_fix)" \
|
||||||
|
|| find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||||
|
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||||
|
|| chmod -R a+r "$(distdir)"
|
||||||
|
dist-gzip: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-bzip2: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-lzma: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-xz: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-tarZ: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-shar: distdir
|
||||||
|
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-zip: distdir
|
||||||
|
-rm -f $(distdir).zip
|
||||||
|
zip -rq $(distdir).zip $(distdir)
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist dist-all: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
# This target untars the dist file and tries a VPATH configuration. Then
|
||||||
|
# it guarantees that the distribution is self-contained by making another
|
||||||
|
# tarfile.
|
||||||
|
distcheck: dist
|
||||||
|
case '$(DIST_ARCHIVES)' in \
|
||||||
|
*.tar.gz*) \
|
||||||
|
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
|
||||||
|
*.tar.bz2*) \
|
||||||
|
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||||
|
*.tar.lzma*) \
|
||||||
|
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
|
||||||
|
*.tar.xz*) \
|
||||||
|
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||||
|
*.tar.Z*) \
|
||||||
|
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||||
|
*.shar.gz*) \
|
||||||
|
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
|
||||||
|
*.zip*) \
|
||||||
|
unzip $(distdir).zip ;;\
|
||||||
|
esac
|
||||||
|
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||||
|
mkdir $(distdir)/_build
|
||||||
|
mkdir $(distdir)/_inst
|
||||||
|
chmod a-w $(distdir)
|
||||||
|
test -d $(distdir)/_build || exit 0; \
|
||||||
|
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||||
|
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||||
|
&& am__cwd=`pwd` \
|
||||||
|
&& $(am__cd) $(distdir)/_build \
|
||||||
|
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||||
|
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||||
|
distuninstallcheck \
|
||||||
|
&& chmod -R a-w "$$dc_install_base" \
|
||||||
|
&& ({ \
|
||||||
|
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||||
|
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||||
|
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||||
|
&& rm -rf "$$dc_destdir" \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||||
|
&& rm -rf $(DIST_ARCHIVES) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||||
|
&& cd "$$am__cwd" \
|
||||||
|
|| exit 1
|
||||||
|
$(am__remove_distdir)
|
||||||
|
@(echo "$(distdir) archives ready for distribution: "; \
|
||||||
|
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||||
|
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||||
|
distuninstallcheck:
|
||||||
|
@$(am__cd) '$(distuninstallcheck_dir)' \
|
||||||
|
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||||
|
|| { echo "ERROR: files left after uninstall:" ; \
|
||||||
|
if test -n "$(DESTDIR)"; then \
|
||||||
|
echo " (check DESTDIR support)"; \
|
||||||
|
fi ; \
|
||||||
|
$(distuninstallcheck_listfiles) ; \
|
||||||
|
exit 1; } >&2
|
||||||
|
distcleancheck: distclean
|
||||||
|
@if test '$(srcdir)' = . ; then \
|
||||||
|
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||||
|
exit 1 ; \
|
||||||
|
fi
|
||||||
|
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||||
|
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||||
|
$(distcleancheck_listfiles) ; \
|
||||||
|
exit 1; } >&2
|
||||||
|
check-am: all-am
|
||||||
|
check: check-recursive
|
||||||
|
all-am: Makefile tnftp_config.h
|
||||||
|
installdirs: installdirs-recursive
|
||||||
|
installdirs-am:
|
||||||
|
install: install-recursive
|
||||||
|
install-exec: install-exec-recursive
|
||||||
|
install-data: install-data-recursive
|
||||||
|
uninstall: uninstall-recursive
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-recursive
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-recursive
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-recursive
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-recursive
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-recursive
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-dvi: install-dvi-recursive
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-html: install-html-recursive
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
|
install-info: install-info-recursive
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
install-pdf: install-pdf-recursive
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-recursive
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -rf $(top_srcdir)/autom4te.cache
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-recursive
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-recursive
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-recursive
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am:
|
||||||
|
|
||||||
|
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
|
||||||
|
ctags-recursive install-am install-strip tags-recursive
|
||||||
|
|
||||||
|
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||||
|
all all-am am--refresh check check-am clean clean-generic \
|
||||||
|
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
|
||||||
|
dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
|
||||||
|
distcheck distclean distclean-generic distclean-hdr \
|
||||||
|
distclean-libtool distclean-tags distcleancheck distdir \
|
||||||
|
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-dvi \
|
||||||
|
install-dvi-am install-exec install-exec-am install-html \
|
||||||
|
install-html-am install-info install-info-am install-man \
|
||||||
|
install-pdf install-pdf-am install-ps install-ps-am \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||||
|
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||||
|
ps ps-am tags tags-recursive uninstall uninstall-am
|
||||||
|
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
|
@ -1,84 +1,36 @@
|
|||||||
This is a brief description of the new features and fixes added to
|
This is tnftp version 20091122.
|
||||||
lukemftp-1.5 since the release of lukemftp-1.4. As always, the manual
|
|
||||||
page (src/ftp.cat1) is the place to look for complete descriptions.
|
|
||||||
|
|
||||||
* Add new commands:
|
Changes in tnftp from 20090606 to 20091122:
|
||||||
features list remote features supported by servers
|
|
||||||
mlsd machine parseable directory listing
|
|
||||||
mlst machine parseable file listing
|
|
||||||
remopts set options on remote features
|
|
||||||
|
|
||||||
These require support in the remote server for the ftp extensions
|
Portability fixes.
|
||||||
described in RFC 2389 and draft-ietf-ftpext-mlst-11.
|
|
||||||
|
|
||||||
* Fix support for the --program-prefix and --program-suffix configure
|
Changes in tnftp from 20090520 to 20090606:
|
||||||
options.
|
|
||||||
|
|
||||||
---
|
Portability fixes.
|
||||||
This is a brief description of the new features and fixes added to
|
|
||||||
lukemftp-1.4 since the release of lukemftp-1.3. As always, the manual
|
|
||||||
page (src/ftp.cat1) is the place to look for complete descriptions.
|
|
||||||
|
|
||||||
* Fix compilation problems on various non 4.4BSD derived platforms which
|
Changes in tnftp from 20070806 to 20090520:
|
||||||
support IPv6, and on Linux systems which have strdup() as a macro.
|
|
||||||
|
|
||||||
* During auto-fetch, don't attempt to autologin a second time if the first
|
Fix intermittent "Alarm clock" error.
|
||||||
time failed.
|
|
||||||
|
|
||||||
---
|
Add epsv6 and epsv to disable extended passive mode for IPv6 or
|
||||||
This is a brief description of the new features and fixes added to
|
both IPv4 and IPv6 respectively.
|
||||||
lukemftp-1.3 since the release of lukemftp-1.2. As always, the manual
|
|
||||||
page (src/ftp.cat1) is the place to look for complete descriptions.
|
|
||||||
|
|
||||||
* The `ls' command now uses the `LIST' directive instead of `NLST',
|
Improve parsing of HTTP chunked transfers per RFC2616.
|
||||||
in order to be compatible with RFC959.
|
|
||||||
|
|
||||||
* Add fget command, which reads a list of filenames to retrieve from
|
Use the service name to getaddrinfo() (along with the host name),
|
||||||
the given file.
|
so that features such as DNS Service Discovery will work.
|
||||||
|
|
||||||
* Add support for uploading files on the command-line with `ftp -u'.
|
Fix various compiler warnings.
|
||||||
|
|
||||||
* Various fixes to the IPv6 support.
|
|
||||||
|
|
||||||
---
|
Changes in tnftp from 20050625 to 20070806:
|
||||||
This is a brief description of the new features and fixes added to
|
|
||||||
lukemftp-1.2 since the release of lukemftp-1.1. As always, the manual
|
|
||||||
page (src/ftp.cat1) is the place to look for complete descriptions.
|
|
||||||
|
|
||||||
* During remote completion, only send ``NLST'' instead of ``NLST .''
|
Implement '-s srcaddr' to set the local IP address for
|
||||||
when reading the list of files from the remote server; some servers
|
all connections.
|
||||||
don't like the trailing `.'.
|
|
||||||
|
|
||||||
* Support a leading ``[user@]'' for ``[user@]host[:][path]'' auto-fetches
|
Support '-q quittime' when waiting for server replies.
|
||||||
and ``[user@]host'' connections.
|
|
||||||
|
|
||||||
* Always compile in support for setting the type of service on transfers.
|
Use IEC 60027-2 "KiB", "MiB" (etc) instead of "KB", "MB", ...
|
||||||
Should speed up transfers on Linux systems.
|
|
||||||
|
|
||||||
* Improve performance of non-rate-limited transfers.
|
Portability fixes, including for FreeBSD, Mac OS X, and Solaris.
|
||||||
|
|
||||||
* Work around ftp servers that aren't Y2K compliant in returning the
|
|
||||||
modification time of a file.
|
|
||||||
|
|
||||||
* Update the libedit library to support automatic and magic margins,
|
|
||||||
allowing ftp's rprompt to move an extra character to the right.
|
|
||||||
|
|
||||||
---
|
|
||||||
This is a brief description of the new features and fixes added to
|
|
||||||
lukemftp-1.1 since the release of lukemftp-1.0. As always, the manual
|
|
||||||
page (src/ftp.cat1) is the place to look for complete descriptions.
|
|
||||||
|
|
||||||
* Implemented `set prompt' and `set rprompt', which allow you to
|
|
||||||
configure the prompt and right side prompt (respectively).
|
|
||||||
Some tcsh(1) style `%' escapes are supported, including
|
|
||||||
%. %c %/ %m %M %n
|
|
||||||
|
|
||||||
* Implemented restarting of file:/// and non-proxied http:// URLs
|
|
||||||
(using -R)
|
|
||||||
|
|
||||||
* Correctly parse remote ports given as numbers that don't appear in
|
|
||||||
the services(5) database.
|
|
||||||
|
|
||||||
* Prevent a couple of minor memory leaks
|
|
||||||
|
|
||||||
* Add missing compilation setting for SOCKS
|
|
||||||
|
@ -1,61 +1,68 @@
|
|||||||
WHAT IS LUKEMFTP?
|
WHAT IS TNFTP?
|
||||||
-----------------
|
--------------
|
||||||
|
|
||||||
`lukemftp' is what many users affectionately call the enhanced ftp
|
`tnftp' is a `port' of the NetBSD FTP client to other systems.
|
||||||
client in NetBSD (http://www.netbsd.org). The `lukem' comes from
|
See http://www.NetBSD.org/ for more details about NetBSD.
|
||||||
the account name of the NetBSD developer who wrote most of the
|
|
||||||
enhancements: Luke Mewburn <lukem@netbsd.org>.
|
|
||||||
|
|
||||||
This package is a `port' of the NetBSD ftp client to other systems.
|
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
|
The enhancements over the standard ftp client in 4.4BSD (and
|
||||||
derivatives) include:
|
derivatives) include:
|
||||||
* command-line editing within ftp
|
* command-line editing within ftp
|
||||||
* command-line fetching of URLS, including support for:
|
* command-line fetching of URLS, including support for:
|
||||||
- http proxies (c.f: $http_proxy, $ftp_proxy)
|
- http proxies (see $http_proxy, $ftp_proxy)
|
||||||
- authentication
|
- authentication
|
||||||
* configurable prompt
|
* configurable prompt
|
||||||
* context sensitive command and filename completion
|
* context sensitive command and filename completion
|
||||||
* dynamic progress bar
|
* dynamic progress bar
|
||||||
* feature negotiation extensions from RFC 2389
|
* feature negotiation extensions from RFC 2389
|
||||||
(c.f: `feat' and `remopts')
|
(see `feat' and `remopts')
|
||||||
* extensions to ftp from the IETF ftpext working group
|
* extensions to ftp from the IETF ftpext working group
|
||||||
(c.f: `mlsd' and `mlst')
|
(see `mlsd' and `mlst')
|
||||||
* IPv6 support (from the WIDE project)
|
* IPv6 support (from the WIDE project)
|
||||||
* modification time preservation
|
* modification time preservation
|
||||||
* paging of local and remote files, and of directory listings
|
* paging of local and remote files, and of directory listings
|
||||||
(c.f: `lpage', `page', `pdir')
|
(see `lpage', `page', `pdir')
|
||||||
* passive mode support, with fallback to active mode
|
* passive mode support, with fallback to active mode
|
||||||
* retrieval of filenames listed in a given file (c.f: `fget')
|
* retrieval of filenames listed in a given file (see `fget')
|
||||||
* `set option' override of ftp environment variables
|
* `set option' override of ftp environment variables
|
||||||
* socks4/socks5 support
|
* TIS Firewall Toolkit gate ftp proxy support (see `gate')
|
||||||
* TIS Firewall Toolkit gate ftp proxy support (c.f: `gate')
|
* transfer-rate throttling (see `-T', `rate')
|
||||||
* transfer-rate throttling (c.f: `-T', `rate')
|
* uploading of files on the command line (see `-u')
|
||||||
* uploading of files on the command line (c.f: `-u')
|
* (Dante) SOCKS5 support
|
||||||
|
|
||||||
|
Previous features, currently disabled until a test system is available:
|
||||||
|
* SOCKS4 support
|
||||||
|
|
||||||
|
|
||||||
INSTALLATION
|
INSTALLATION
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Refer to `INSTALL' for more information on how to compile and install
|
Refer to `INSTALL' for more information on how to compile and install tnftp.
|
||||||
lukemftp.
|
|
||||||
|
|
||||||
|
|
||||||
FEEDBACK / BUG REPORTS
|
FEEDBACK / BUG REPORTS
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
Please email feedback back to the maintainer: <lukem@netbsd.org>.
|
Please email feedback back to the maintainer:
|
||||||
|
Luke Mewburn <lukem@NetBSD.org>.
|
||||||
|
|
||||||
|
|
||||||
COPYRIGHT
|
COPYRIGHT
|
||||||
---------
|
---------
|
||||||
|
|
||||||
lukemftp is covered by a BSD-style copyright notice. Please refer to
|
tnftp is covered by a BSD-style copyright notice.
|
||||||
the file `COPYING' for more information.
|
Please refer to the file `COPYING' for more information.
|
||||||
|
|
||||||
|
|
||||||
AVAILABILITY
|
AVAILABILITY
|
||||||
------------
|
------------
|
||||||
|
|
||||||
The primary ftp site for lukemftp is:
|
The primary ftp site for tnftp is:
|
||||||
ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/
|
ftp://ftp.NetBSD.org/pub/NetBSD/misc/tnftp/
|
||||||
|
|
||||||
|
|
||||||
|
DOCUMENT REFERENCE
|
||||||
|
------------------
|
||||||
|
$NetBSD: README,v 1.10 2007/08/06 01:58:57 lukem Exp $
|
||||||
|
@ -1,30 +1,53 @@
|
|||||||
Whilst a lot of the work in lukemftp (both the original sources in NetBSD
|
Whilst a lot of the work in tnftp (both the original sources in NetBSD
|
||||||
and this port) was done by me (Luke Mewburn), it would not be as useable
|
and this port) was done by Luke Mewburn, it would not be as usable
|
||||||
without the enhancements, fixes, or input from the following people:
|
without the enhancements, bug fixes, or input from the following people:
|
||||||
|
|
||||||
|
Amitai Schlair <schmonz@schmonz.com>
|
||||||
|
Anders Dinsen <anders@dinsen.net>
|
||||||
|
Anders Magnusson <ragge@ltu.se>
|
||||||
|
Arkadiusz Miskiewicz <misiek@pld.org.pl>
|
||||||
Brian Stark <bstark1990@netscape.net>
|
Brian Stark <bstark1990@netscape.net>
|
||||||
Chris G. Demetriou <cgd@netbsd.org>
|
Chris G. Demetriou <cgd@NetBSD.org>
|
||||||
Christos Zoulas <christos@netbsd.org>
|
Christos Zoulas <christos@NetBSD.org>
|
||||||
Dan Winship <danw@mit.edu>
|
Dan Winship <danw@mit.edu>
|
||||||
Darren Reed <darrenr@pobox.com>
|
Darren Reed <darrenr@pobox.com>
|
||||||
David Carrel <carrel@netbsd.org>
|
David Brownlee <abs@mono.org>
|
||||||
|
David Carrel <carrel@NetBSD.org>
|
||||||
|
DervishD <raul@pleyades.net>
|
||||||
|
Douwe Kiela <virtus@wanadoo.nl>
|
||||||
|
Eugene Kotlyarov <ekot@protek36.esoo.ru>
|
||||||
|
Geoff Wing <mason@primenet.com.au>
|
||||||
Giles Lean <giles@nemeton.com.au>
|
Giles Lean <giles@nemeton.com.au>
|
||||||
Havard Eidnes <Havard.Eidnes@runit.sintef.no>
|
Havard Eidnes <Havard.Eidnes@runit.sintef.no>
|
||||||
ITOH Yasufumi <itohy@netbsd.org>
|
Hubert Feyrer <hubert@feyrer.de>
|
||||||
Jason R. Thorpe <thorpej@netbsd.org>
|
ITOH Yasufumi <itohy@NetBSD.org>
|
||||||
|
Jason R. Thorpe <thorpej@NetBSD.org>
|
||||||
John Hawkinson <jhawk@mit.edu>
|
John Hawkinson <jhawk@mit.edu>
|
||||||
Joseph S. Myers <jsm28@cam.ac.uk>
|
Joseph S. Myers <jsm28@cam.ac.uk>
|
||||||
Jun-ichiro itojun Hagino <itojun@netbsd.org>
|
Jun-ichiro itojun Hagino <itojun@NetBSD.org>
|
||||||
Kimmo Suominen <kim@tac.nyc.ny.us>
|
Kimmo Suominen <kim@tac.nyc.ny.us>
|
||||||
Klaus Klein <kleink@netbsd.org>
|
Klaus Klein <kleink@NetBSD.org>
|
||||||
Luke Mewburn <lukem@netbsd.org>
|
Launey Thomas <ljt@alum.mit.edu>
|
||||||
|
Luke Mewburn <lukem@NetBSD.org>
|
||||||
Marc Horowitz <marc@mit.edu>
|
Marc Horowitz <marc@mit.edu>
|
||||||
|
Mathieu Arnold <mat@FreeBSD.org>
|
||||||
Matthew R. Green <mrg@eterna.com.au>
|
Matthew R. Green <mrg@eterna.com.au>
|
||||||
Matthias Pfaller <leo@dachau.marco.de>
|
Matthias Pfaller <leo@dachau.marco.de>
|
||||||
Matthias Scheler <tron@zhadum.de>
|
Matthias Scheler <tron@zhadum.de>
|
||||||
|
Maxim Konovalov <maxim@FreeBSD.org>
|
||||||
|
Maxime Henrion <mux@FreeBSD.org>
|
||||||
Michael L. Hitch <osymh@terra.oscs.montana.edu>
|
Michael L. Hitch <osymh@terra.oscs.montana.edu>
|
||||||
|
Mike Heffner <mikeh@FreeBSD.org>
|
||||||
|
Onno van der Linden <o.vd.linden@quicknet.nl>
|
||||||
|
Ruslan Ermilov <ru@FreeBSD.org>
|
||||||
|
Ryoji Kanai <rkanai@eeye.com>
|
||||||
Scott Aaron Bamford <sab@ansic.net>
|
Scott Aaron Bamford <sab@ansic.net>
|
||||||
Simon Burge <simonb@thistledown.com.au>
|
Simon Burge <simonb@thistledown.com.au>
|
||||||
|
Steve McClellan <steve.mcclellan@radisys.com>
|
||||||
|
TAMURA Kent <kent@NetBSD.org>
|
||||||
|
Stoned Elipot <seb@NetBSD.org>
|
||||||
Todd C. Miller <Todd.Miller@courtesan.com>
|
Todd C. Miller <Todd.Miller@courtesan.com>
|
||||||
|
YAMANO Yuji <yyamano@NetBSD.org>
|
||||||
|
Yar Tikhiy <yar@FreeBSD.org>
|
||||||
|
|
||||||
Apologies to anyone I've missed.
|
Apologies to anyone missed.
|
||||||
|
@ -1,92 +0,0 @@
|
|||||||
/* $Id: acconfig.h,v 1.9 2002/06/10 01:27:13 lukem Exp $ */
|
|
||||||
|
|
||||||
@TOP@
|
|
||||||
@BOTTOM@
|
|
||||||
|
|
||||||
/* Define if your compiler supports `long long' */
|
|
||||||
#undef HAVE_LONG_LONG
|
|
||||||
|
|
||||||
/* Define if *printf() uses %qd to print `long long' (otherwise uses %lld) */
|
|
||||||
#undef HAVE_PRINTF_QD
|
|
||||||
|
|
||||||
/* Define if in_port_t exists */
|
|
||||||
#undef HAVE_IN_PORT_T
|
|
||||||
|
|
||||||
/* Define if sa_family_t exists in <sys/socket.h> */
|
|
||||||
#undef HAVE_SA_FAMILY_T
|
|
||||||
|
|
||||||
/* Define if struct sockaddr.sa_len exists (implies sockaddr_in.sin_len, etc) */
|
|
||||||
#undef HAVE_SOCKADDR_SA_LEN
|
|
||||||
|
|
||||||
/* Define if socklen_t exists */
|
|
||||||
#undef HAVE_SOCKLEN_T
|
|
||||||
|
|
||||||
/* Define if AF_INET6 exists in <sys/socket.h> */
|
|
||||||
#undef HAVE_AF_INET6
|
|
||||||
|
|
||||||
/* Define if `struct sockaddr_in6' exists in <netinet/in.h> */
|
|
||||||
#undef HAVE_SOCKADDR_IN6
|
|
||||||
|
|
||||||
/* Define if `struct addrinfo' exists in <netdb.h> */
|
|
||||||
#undef HAVE_ADDRINFO
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define if <netdb.h> contains AI_NUMERICHOST et al.
|
|
||||||
* Systems which only implement RFC2133 will need this.
|
|
||||||
*/
|
|
||||||
#undef HAVE_RFC2553_NETDB
|
|
||||||
|
|
||||||
/* Define if `struct direct' has a d_namlen element */
|
|
||||||
#undef HAVE_D_NAMLEN
|
|
||||||
|
|
||||||
/* Define if h_errno exists in <netdb.h> */
|
|
||||||
#undef HAVE_H_ERRNO_D
|
|
||||||
|
|
||||||
/* Define if fclose() is declared in <stdio.h> */
|
|
||||||
#undef HAVE_FCLOSE_D
|
|
||||||
|
|
||||||
/* Define if getpass() is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_GETPASS_D
|
|
||||||
|
|
||||||
/* Define if optarg is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_OPTARG_D
|
|
||||||
|
|
||||||
/* Define if optind is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_OPTIND_D
|
|
||||||
|
|
||||||
/* Define if pclose() is declared in <stdio.h> */
|
|
||||||
#undef HAVE_PCLOSE_D
|
|
||||||
|
|
||||||
/* Define if `long long' is supported and sizeof(off_t) >= 8 */
|
|
||||||
#undef HAVE_QUAD_SUPPORT
|
|
||||||
|
|
||||||
/* Define if strptime() is declared in <time.h> */
|
|
||||||
#undef HAVE_STRPTIME_D
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define this if compiling with SOCKS (the firewall traversal library).
|
|
||||||
* Also, you must define connect, getsockname, bind, accept, listen, and
|
|
||||||
* select to their R-versions.
|
|
||||||
*/
|
|
||||||
#undef SOCKS
|
|
||||||
#undef SOCKS4
|
|
||||||
#undef SOCKS5
|
|
||||||
#undef connect
|
|
||||||
#undef getsockname
|
|
||||||
#undef bind
|
|
||||||
#undef accept
|
|
||||||
#undef listen
|
|
||||||
#undef select
|
|
||||||
#undef dup
|
|
||||||
#undef dup2
|
|
||||||
#undef fclose
|
|
||||||
#undef gethostbyname
|
|
||||||
#undef getpeername
|
|
||||||
#undef read
|
|
||||||
#undef recv
|
|
||||||
#undef recvfrom
|
|
||||||
#undef rresvport
|
|
||||||
#undef send
|
|
||||||
#undef sendto
|
|
||||||
#undef shutdown
|
|
||||||
#undef write
|
|
257
contrib/tnftp/aclocal.m4
vendored
257
contrib/tnftp/aclocal.m4
vendored
@ -1,257 +0,0 @@
|
|||||||
dnl $Id: aclocal.m4,v 1.5 1999/11/13 10:50:39 lukem Exp $
|
|
||||||
dnl
|
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl AC_MSG_TRY_COMPILE
|
|
||||||
dnl
|
|
||||||
dnl Written by Luke Mewburn <lukem@netbsd.org>
|
|
||||||
dnl
|
|
||||||
dnl Usage:
|
|
||||||
dnl AC_MSG_TRY_COMPILE(Message, CacheVar, Includes, Code,
|
|
||||||
dnl ActionPass [,ActionFail] )
|
|
||||||
dnl
|
|
||||||
dnl effectively does:
|
|
||||||
dnl AC_CACHE_CHECK(Message, CacheVar,
|
|
||||||
dnl AC_TRY_COMPILE(Includes, Code, CacheVar = yes, CacheVar = no)
|
|
||||||
dnl if CacheVar == yes
|
|
||||||
dnl AC_MESSAGE_RESULT(yes)
|
|
||||||
dnl ActionPass
|
|
||||||
dnl else
|
|
||||||
dnl AC_MESSAGE_RESULT(no)
|
|
||||||
dnl ActionFail
|
|
||||||
dnl )
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(AC_MSG_TRY_COMPILE, [
|
|
||||||
AC_CACHE_CHECK($1, $2, [
|
|
||||||
AC_TRY_COMPILE([ $3 ], [ $4; ], [ $2=yes ], [ $2=no ])
|
|
||||||
])
|
|
||||||
if test "x[$]$2" = "xyes"; then
|
|
||||||
$5
|
|
||||||
else
|
|
||||||
$6
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl AC_MSG_TRY_LINK
|
|
||||||
dnl
|
|
||||||
dnl Usage:
|
|
||||||
dnl AC_MSG_TRY_LINK(Message, CacheVar, Includes, Code,
|
|
||||||
dnl ActionPass [,ActionFail] )
|
|
||||||
dnl
|
|
||||||
dnl as AC_MSG_TRY_COMPILE, but uses AC_TRY_LINK instead of AC_TRY_COMPILE
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(AC_MSG_TRY_LINK, [
|
|
||||||
AC_CACHE_CHECK($1, $2, [
|
|
||||||
AC_TRY_LINK([ $3 ], [ $4; ], [ $2=yes ], [ $2=no ])
|
|
||||||
])
|
|
||||||
if test "x[$]$2" = "xyes"; then
|
|
||||||
$5
|
|
||||||
else
|
|
||||||
$6
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl AC_LIBRARY_NET: #Id: net.m4,v 1.5 1997/11/09 21:36:54 jhawk Exp #
|
|
||||||
dnl
|
|
||||||
dnl Written by John Hawkinson <jhawk@mit.edu>. This code is in the Public
|
|
||||||
dnl Domain.
|
|
||||||
dnl
|
|
||||||
dnl This test is for network applications that need socket() and
|
|
||||||
dnl gethostbyname() -ish functions. Under Solaris, those applications need to
|
|
||||||
dnl link with "-lsocket -lnsl". Under IRIX, they should *not* link with
|
|
||||||
dnl "-lsocket" because libsocket.a breaks a number of things (for instance:
|
|
||||||
dnl gethostbyname() under IRIX 5.2, and snoop sockets under most versions of
|
|
||||||
dnl IRIX).
|
|
||||||
dnl
|
|
||||||
dnl Unfortunately, many application developers are not aware of this, and
|
|
||||||
dnl mistakenly write tests that cause -lsocket to be used under IRIX. It is
|
|
||||||
dnl also easy to write tests that cause -lnsl to be used under operating
|
|
||||||
dnl systems where neither are necessary (or useful), such as SunOS 4.1.4, which
|
|
||||||
dnl uses -lnsl for TLI.
|
|
||||||
dnl
|
|
||||||
dnl This test exists so that every application developer does not test this in
|
|
||||||
dnl a different, and subtly broken fashion.
|
|
||||||
dnl
|
|
||||||
dnl It has been argued that this test should be broken up into two seperate
|
|
||||||
dnl tests, one for the resolver libraries, and one for the libraries necessary
|
|
||||||
dnl for using Sockets API. Unfortunately, the two are carefully intertwined and
|
|
||||||
dnl allowing the autoconf user to use them independantly potentially results in
|
|
||||||
dnl unfortunate ordering dependancies -- as such, such component macros would
|
|
||||||
dnl have to carefully use indirection and be aware if the other components were
|
|
||||||
dnl executed. Since other autoconf macros do not go to this trouble, and almost
|
|
||||||
dnl no applications use sockets without the resolver, this complexity has not
|
|
||||||
dnl been implemented.
|
|
||||||
dnl
|
|
||||||
dnl The check for libresolv is in case you are attempting to link statically
|
|
||||||
dnl and happen to have a libresolv.a lying around (and no libnsl.a).
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(AC_LIBRARY_NET, [
|
|
||||||
# Most operating systems have gethostbyname() in the default searched
|
|
||||||
# libraries (i.e. libc):
|
|
||||||
AC_CHECK_FUNC(gethostbyname, ,
|
|
||||||
# Some OSes (eg. Solaris) place it in libnsl:
|
|
||||||
AC_CHECK_LIB(nsl, gethostbyname, ,
|
|
||||||
# Some strange OSes (SINIX) have it in libsocket:
|
|
||||||
AC_CHECK_LIB(socket, gethostbyname, ,
|
|
||||||
# Unfortunately libsocket sometimes depends on libnsl.
|
|
||||||
# AC_CHECK_LIB's API is essentially broken so the following
|
|
||||||
# ugliness is necessary:
|
|
||||||
AC_CHECK_LIB(socket, gethostbyname,
|
|
||||||
LIBS="-lsocket -lnsl $LIBS",
|
|
||||||
AC_CHECK_LIB(resolv, gethostbyname),
|
|
||||||
-lnsl)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
|
|
||||||
AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)))
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for SOCKS firewall support.
|
|
||||||
dnl
|
|
||||||
dnl Written by Matthew R. Green <mrg@eterna.com.au>
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(AC_LIBRARY_SOCKS, [
|
|
||||||
AC_MSG_CHECKING(whether to support SOCKS)
|
|
||||||
AC_ARG_WITH(socks,
|
|
||||||
[ --with-socks Compile with SOCKS firewall traversal support.],
|
|
||||||
[
|
|
||||||
case "$withval" in
|
|
||||||
no)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
;;
|
|
||||||
yes)
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
AC_CHECK_LIB(socks5, SOCKSconnect, [
|
|
||||||
socks=5
|
|
||||||
LIBS="-lsocks5 $LIBS"], [
|
|
||||||
AC_CHECK_LIB(socks, Rconnect, [
|
|
||||||
socks=4
|
|
||||||
LIBS="-lsocks $LIBS"], [
|
|
||||||
AC_MSG_ERROR(Could not find socks library. You must first install socks.) ] ) ] )
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
],
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
)
|
|
||||||
|
|
||||||
if test "x$socks" = "x"; then
|
|
||||||
AC_MSG_CHECKING(whether to support SOCKS5)
|
|
||||||
AC_ARG_WITH(socks5,
|
|
||||||
[ --with-socks5[=PATH] Compile with SOCKS5 firewall traversal support.],
|
|
||||||
[
|
|
||||||
case "$withval" in
|
|
||||||
no)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
socks=5
|
|
||||||
if test "x$withval" = "xyes"; then
|
|
||||||
withval="-lsocks5"
|
|
||||||
else
|
|
||||||
if test -d "$withval"; then
|
|
||||||
if test -d "$withval/include"; then
|
|
||||||
CFLAGS="$CFLAGS -I$withval/include"
|
|
||||||
else
|
|
||||||
CFLAGS="$CFLAGS -I$withval"
|
|
||||||
fi
|
|
||||||
if test -d "$withval/lib"; then
|
|
||||||
withval="-L$withval/lib -lsocks5"
|
|
||||||
else
|
|
||||||
withval="-L$withval -lsocks5"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
LIBS="$withval $LIBS"
|
|
||||||
# If Socks was compiled with Kerberos support, we will need
|
|
||||||
# to link against kerberos libraries. Temporarily append
|
|
||||||
# to LIBS. This is harmless if there is no kerberos support.
|
|
||||||
TMPLIBS="$LIBS"
|
|
||||||
LIBS="$LIBS $KERBEROS_LIBS"
|
|
||||||
AC_TRY_LINK([],
|
|
||||||
[ SOCKSconnect(); ],
|
|
||||||
[],
|
|
||||||
[ AC_MSG_ERROR(Could not find the $withval library. You must first install socks5.) ])
|
|
||||||
LIBS="$TMPLIBS"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
],
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$socks" = "x"; then
|
|
||||||
AC_MSG_CHECKING(whether to support SOCKS4)
|
|
||||||
AC_ARG_WITH(socks4,
|
|
||||||
[ --with-socks4[=PATH] Compile with SOCKS4 firewall traversal support.],
|
|
||||||
[
|
|
||||||
case "$withval" in
|
|
||||||
no)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
socks=4
|
|
||||||
if test "x$withval" = "xyes"; then
|
|
||||||
withval="-lsocks"
|
|
||||||
else
|
|
||||||
if test -d "$withval"; then
|
|
||||||
withval="-L$withval -lsocks"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
LIBS="$withval $LIBS"
|
|
||||||
AC_TRY_LINK([],
|
|
||||||
[ Rconnect(); ],
|
|
||||||
[],
|
|
||||||
[ AC_MSG_ERROR(Could not find the $withval library. You must first install socks.) ])
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
],
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$socks" = "x4"; then
|
|
||||||
AC_DEFINE(SOCKS)
|
|
||||||
AC_DEFINE(SOCKS4)
|
|
||||||
AC_DEFINE(connect, Rconnect)
|
|
||||||
AC_DEFINE(getsockname, Rgetsockname)
|
|
||||||
AC_DEFINE(bind, Rbind)
|
|
||||||
AC_DEFINE(accept, Raccept)
|
|
||||||
AC_DEFINE(listen, Rlisten)
|
|
||||||
AC_DEFINE(select, Rselect)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$socks" = "x5"; then
|
|
||||||
AC_DEFINE(SOCKS)
|
|
||||||
AC_DEFINE(SOCKS5)
|
|
||||||
AC_DEFINE(connect,SOCKSconnect)
|
|
||||||
AC_DEFINE(getsockname,SOCKSgetsockname)
|
|
||||||
AC_DEFINE(getpeername,SOCKSgetpeername)
|
|
||||||
AC_DEFINE(bind,SOCKSbind)
|
|
||||||
AC_DEFINE(accept,SOCKSaccept)
|
|
||||||
AC_DEFINE(listen,SOCKSlisten)
|
|
||||||
AC_DEFINE(select,SOCKSselect)
|
|
||||||
AC_DEFINE(recvfrom,SOCKSrecvfrom)
|
|
||||||
AC_DEFINE(sendto,SOCKSsendto)
|
|
||||||
AC_DEFINE(recv,SOCKSrecv)
|
|
||||||
AC_DEFINE(send,SOCKSsend)
|
|
||||||
AC_DEFINE(read,SOCKSread)
|
|
||||||
AC_DEFINE(write,SOCKSwrite)
|
|
||||||
AC_DEFINE(rresvport,SOCKSrresvport)
|
|
||||||
AC_DEFINE(shutdown,SOCKSshutdown)
|
|
||||||
AC_DEFINE(listen,SOCKSlisten)
|
|
||||||
AC_DEFINE(close,SOCKSclose)
|
|
||||||
AC_DEFINE(dup,SOCKSdup)
|
|
||||||
AC_DEFINE(dup2,SOCKSdup2)
|
|
||||||
AC_DEFINE(fclose,SOCKSfclose)
|
|
||||||
AC_DEFINE(gethostbyname,SOCKSgethostbyname)
|
|
||||||
fi
|
|
||||||
])
|
|
@ -1,275 +0,0 @@
|
|||||||
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
|
||||||
/* $Id: config.h.in,v 1.28 2002/06/10 08:10:33 lukem Exp $ */
|
|
||||||
|
|
||||||
|
|
||||||
/* Define if on AIX 3.
|
|
||||||
System headers sometimes define this.
|
|
||||||
We just want to avoid a redefinition error message. */
|
|
||||||
#ifndef _ALL_SOURCE
|
|
||||||
#undef _ALL_SOURCE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if the closedir function returns void instead of int. */
|
|
||||||
#undef CLOSEDIR_VOID
|
|
||||||
|
|
||||||
/* Define if the `getpgrp' function takes no argument. */
|
|
||||||
#undef GETPGRP_VOID
|
|
||||||
|
|
||||||
/* Define if your C compiler doesn't accept -c and -o together. */
|
|
||||||
#undef NO_MINUS_C_MINUS_O
|
|
||||||
|
|
||||||
/* Define if your Fortran 77 compiler doesn't accept -c and -o together. */
|
|
||||||
#undef F77_NO_MINUS_C_MINUS_O
|
|
||||||
|
|
||||||
/* Define to `long' if <sys/types.h> doesn't define. */
|
|
||||||
#undef off_t
|
|
||||||
|
|
||||||
/* Define to the type of arg1 for select(). */
|
|
||||||
#undef SELECT_TYPE_ARG1
|
|
||||||
|
|
||||||
/* Define to the type of args 2, 3 and 4 for select(). */
|
|
||||||
#undef SELECT_TYPE_ARG234
|
|
||||||
|
|
||||||
/* Define to the type of arg5 for select(). */
|
|
||||||
#undef SELECT_TYPE_ARG5
|
|
||||||
|
|
||||||
/* Define if you have the ANSI C header files. */
|
|
||||||
#undef STDC_HEADERS
|
|
||||||
|
|
||||||
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
|
||||||
#undef TIME_WITH_SYS_TIME
|
|
||||||
|
|
||||||
/* Define if the closedir function returns void instead of int. */
|
|
||||||
#undef VOID_CLOSEDIR
|
|
||||||
|
|
||||||
/* The number of bytes in a off_t. */
|
|
||||||
#undef SIZEOF_OFF_T
|
|
||||||
|
|
||||||
/* Define if you have the err function. */
|
|
||||||
#undef HAVE_ERR
|
|
||||||
|
|
||||||
/* Define if you have the fgetln function. */
|
|
||||||
#undef HAVE_FGETLN
|
|
||||||
|
|
||||||
/* Define if you have the fparseln function. */
|
|
||||||
#undef HAVE_FPARSELN
|
|
||||||
|
|
||||||
/* Define if you have the fseeko function. */
|
|
||||||
#undef HAVE_FSEEKO
|
|
||||||
|
|
||||||
/* Define if you have the getaddrinfo function. */
|
|
||||||
#undef HAVE_GETADDRINFO
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyname2 function. */
|
|
||||||
#undef HAVE_GETHOSTBYNAME2
|
|
||||||
|
|
||||||
/* Define if you have the getnameinfo function. */
|
|
||||||
#undef HAVE_GETNAMEINFO
|
|
||||||
|
|
||||||
/* Define if you have the getpassphrase function. */
|
|
||||||
#undef HAVE_GETPASSPHRASE
|
|
||||||
|
|
||||||
/* Define if you have the getpgrp function. */
|
|
||||||
#undef HAVE_GETPGRP
|
|
||||||
|
|
||||||
/* Define if you have the inet_ntop function. */
|
|
||||||
#undef HAVE_INET_NTOP
|
|
||||||
|
|
||||||
/* Define if you have the inet_pton function. */
|
|
||||||
#undef HAVE_INET_PTON
|
|
||||||
|
|
||||||
/* Define if you have the memmove function. */
|
|
||||||
#undef HAVE_MEMMOVE
|
|
||||||
|
|
||||||
/* Define if you have the mkstemp function. */
|
|
||||||
#undef HAVE_MKSTEMP
|
|
||||||
|
|
||||||
/* Define if you have the poll function. */
|
|
||||||
#undef HAVE_POLL
|
|
||||||
|
|
||||||
/* Define if you have the select function. */
|
|
||||||
#undef HAVE_SELECT
|
|
||||||
|
|
||||||
/* Define if you have the setprogname function. */
|
|
||||||
#undef HAVE_SETPROGNAME
|
|
||||||
|
|
||||||
/* Define if you have the sl_init function. */
|
|
||||||
#undef HAVE_SL_INIT
|
|
||||||
|
|
||||||
/* Define if you have the snprintf function. */
|
|
||||||
#undef HAVE_SNPRINTF
|
|
||||||
|
|
||||||
/* Define if you have the strdup function. */
|
|
||||||
#undef HAVE_STRDUP
|
|
||||||
|
|
||||||
/* Define if you have the strerror function. */
|
|
||||||
#undef HAVE_STRERROR
|
|
||||||
|
|
||||||
/* Define if you have the strlcat function. */
|
|
||||||
#undef HAVE_STRLCAT
|
|
||||||
|
|
||||||
/* Define if you have the strlcpy function. */
|
|
||||||
#undef HAVE_STRLCPY
|
|
||||||
|
|
||||||
/* Define if you have the strptime function. */
|
|
||||||
#undef HAVE_STRPTIME
|
|
||||||
|
|
||||||
/* Define if you have the strsep function. */
|
|
||||||
#undef HAVE_STRSEP
|
|
||||||
|
|
||||||
/* Define if you have the strtoll function. */
|
|
||||||
#undef HAVE_STRTOLL
|
|
||||||
|
|
||||||
/* Define if you have the strunvis function. */
|
|
||||||
#undef HAVE_STRUNVIS
|
|
||||||
|
|
||||||
/* Define if you have the strvis function. */
|
|
||||||
#undef HAVE_STRVIS
|
|
||||||
|
|
||||||
/* Define if you have the timegm function. */
|
|
||||||
#undef HAVE_TIMEGM
|
|
||||||
|
|
||||||
/* Define if you have the usleep function. */
|
|
||||||
#undef HAVE_USLEEP
|
|
||||||
|
|
||||||
/* Define if you have the <arpa/nameser.h> header file. */
|
|
||||||
#undef HAVE_ARPA_NAMESER_H
|
|
||||||
|
|
||||||
/* Define if you have the <dirent.h> header file. */
|
|
||||||
#undef HAVE_DIRENT_H
|
|
||||||
|
|
||||||
/* Define if you have the <err.h> header file. */
|
|
||||||
#undef HAVE_ERR_H
|
|
||||||
|
|
||||||
/* Define if you have the <libutil.h> header file. */
|
|
||||||
#undef HAVE_LIBUTIL_H
|
|
||||||
|
|
||||||
/* Define if you have the <ndir.h> header file. */
|
|
||||||
#undef HAVE_NDIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <paths.h> header file. */
|
|
||||||
#undef HAVE_PATHS_H
|
|
||||||
|
|
||||||
/* Define if you have the <poll.h> header file. */
|
|
||||||
#undef HAVE_POLL_H
|
|
||||||
|
|
||||||
/* Define if you have the <regex.h> header file. */
|
|
||||||
#undef HAVE_REGEX_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/dir.h> header file. */
|
|
||||||
#undef HAVE_SYS_DIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/ndir.h> header file. */
|
|
||||||
#undef HAVE_SYS_NDIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/poll.h> header file. */
|
|
||||||
#undef HAVE_SYS_POLL_H
|
|
||||||
|
|
||||||
/* Define if you have the <termcap.h> header file. */
|
|
||||||
#undef HAVE_TERMCAP_H
|
|
||||||
|
|
||||||
/* Define if you have the <util.h> header file. */
|
|
||||||
#undef HAVE_UTIL_H
|
|
||||||
|
|
||||||
/* Define if you have the <vis.h> header file. */
|
|
||||||
#undef HAVE_VIS_H
|
|
||||||
|
|
||||||
/* Define if you have the nsl library (-lnsl). */
|
|
||||||
#undef HAVE_LIBNSL
|
|
||||||
|
|
||||||
/* Define if you have the socket library (-lsocket). */
|
|
||||||
#undef HAVE_LIBSOCKET
|
|
||||||
|
|
||||||
/* Define if you have the tinfo library (-ltinfo). */
|
|
||||||
#undef HAVE_LIBTINFO
|
|
||||||
|
|
||||||
/* Define if you have the util library (-lutil). */
|
|
||||||
#undef HAVE_LIBUTIL
|
|
||||||
|
|
||||||
/* Define if your compiler supports `long long' */
|
|
||||||
#undef HAVE_LONG_LONG
|
|
||||||
|
|
||||||
/* Define if *printf() uses %qd to print `long long' (otherwise uses %lld) */
|
|
||||||
#undef HAVE_PRINTF_QD
|
|
||||||
|
|
||||||
/* Define if in_port_t exists */
|
|
||||||
#undef HAVE_IN_PORT_T
|
|
||||||
|
|
||||||
/* Define if sa_family_t exists in <sys/socket.h> */
|
|
||||||
#undef HAVE_SA_FAMILY_T
|
|
||||||
|
|
||||||
/* Define if struct sockaddr.sa_len exists (implies sockaddr_in.sin_len, etc) */
|
|
||||||
#undef HAVE_SOCKADDR_SA_LEN
|
|
||||||
|
|
||||||
/* Define if socklen_t exists */
|
|
||||||
#undef HAVE_SOCKLEN_T
|
|
||||||
|
|
||||||
/* Define if AF_INET6 exists in <sys/socket.h> */
|
|
||||||
#undef HAVE_AF_INET6
|
|
||||||
|
|
||||||
/* Define if `struct sockaddr_in6' exists in <netinet/in.h> */
|
|
||||||
#undef HAVE_SOCKADDR_IN6
|
|
||||||
|
|
||||||
/* Define if `struct addrinfo' exists in <netdb.h> */
|
|
||||||
#undef HAVE_ADDRINFO
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define if <netdb.h> contains AI_NUMERICHOST et al.
|
|
||||||
* Systems which only implement RFC2133 will need this.
|
|
||||||
*/
|
|
||||||
#undef HAVE_RFC2553_NETDB
|
|
||||||
|
|
||||||
/* Define if `struct direct' has a d_namlen element */
|
|
||||||
#undef HAVE_D_NAMLEN
|
|
||||||
|
|
||||||
/* Define if h_errno exists in <netdb.h> */
|
|
||||||
#undef HAVE_H_ERRNO_D
|
|
||||||
|
|
||||||
/* Define if fclose() is declared in <stdio.h> */
|
|
||||||
#undef HAVE_FCLOSE_D
|
|
||||||
|
|
||||||
/* Define if getpass() is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_GETPASS_D
|
|
||||||
|
|
||||||
/* Define if optarg is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_OPTARG_D
|
|
||||||
|
|
||||||
/* Define if optind is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#undef HAVE_OPTIND_D
|
|
||||||
|
|
||||||
/* Define if pclose() is declared in <stdio.h> */
|
|
||||||
#undef HAVE_PCLOSE_D
|
|
||||||
|
|
||||||
/* Define if `long long' is supported and sizeof(off_t) >= 8 */
|
|
||||||
#undef HAVE_QUAD_SUPPORT
|
|
||||||
|
|
||||||
/* Define if strptime() is declared in <time.h> */
|
|
||||||
#undef HAVE_STRPTIME_D
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define this if compiling with SOCKS (the firewall traversal library).
|
|
||||||
* Also, you must define connect, getsockname, bind, accept, listen, and
|
|
||||||
* select to their R-versions.
|
|
||||||
*/
|
|
||||||
#undef SOCKS
|
|
||||||
#undef SOCKS4
|
|
||||||
#undef SOCKS5
|
|
||||||
#undef connect
|
|
||||||
#undef getsockname
|
|
||||||
#undef bind
|
|
||||||
#undef accept
|
|
||||||
#undef listen
|
|
||||||
#undef select
|
|
||||||
#undef dup
|
|
||||||
#undef dup2
|
|
||||||
#undef fclose
|
|
||||||
#undef gethostbyname
|
|
||||||
#undef getpeername
|
|
||||||
#undef read
|
|
||||||
#undef recv
|
|
||||||
#undef recvfrom
|
|
||||||
#undef rresvport
|
|
||||||
#undef send
|
|
||||||
#undef sendto
|
|
||||||
#undef shutdown
|
|
||||||
#undef write
|
|
4229
contrib/tnftp/configure
vendored
4229
contrib/tnftp/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -1,307 +0,0 @@
|
|||||||
dnl $Id: configure.in,v 1.37 2002/06/10 08:08:53 lukem Exp $
|
|
||||||
dnl
|
|
||||||
dnl configure.in --
|
|
||||||
dnl process this file with autoconf to produce a configure script.
|
|
||||||
dnl
|
|
||||||
|
|
||||||
AC_REVISION($Revision: 1.37 $)dnl
|
|
||||||
|
|
||||||
AC_INIT(lukemftp.h)
|
|
||||||
|
|
||||||
dnl Arguments for which features are included
|
|
||||||
dnl
|
|
||||||
AC_ARG_PROGRAM
|
|
||||||
AC_ARG_ENABLE(editcomplete, [\
|
|
||||||
--enable-editcomplete Turn on command line editing and completion.
|
|
||||||
--disable-editcomplete Turn off command line editing and completion
|
|
||||||
[default: enabled].],
|
|
||||||
opt_editcomplete=$enableval,
|
|
||||||
opt_editcomplete=yes)
|
|
||||||
AC_ARG_ENABLE(ipv6, [\
|
|
||||||
--enable-ipv6 Enable IPv6 support (if your OS supports it).
|
|
||||||
--disable-ipv6 Disable IPv6 support (even if your OS supports it)
|
|
||||||
[default: enabled].],
|
|
||||||
opt_ipv6=$enableval,
|
|
||||||
opt_ipv6=yes)
|
|
||||||
|
|
||||||
dnl Checks for programs.
|
|
||||||
dnl
|
|
||||||
AC_PROG_MAKE_SET
|
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_AWK
|
|
||||||
AC_PROG_INSTALL
|
|
||||||
AC_PROG_RANLIB
|
|
||||||
AC_CHECK_PROGS(AR, ar)
|
|
||||||
AC_AIX
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for libraries.
|
|
||||||
dnl
|
|
||||||
AC_CHECK_LIB(util, fparseln)
|
|
||||||
if test $opt_editcomplete = yes; then
|
|
||||||
AC_CHECK_LIB(tinfo, tgetent, ,
|
|
||||||
AC_CHECK_LIB(termcap, tgetent, ,
|
|
||||||
AC_CHECK_LIB(curses, tgetent, ,
|
|
||||||
AC_CHECK_LIB(ncurses, tgetent))))
|
|
||||||
AC_SEARCH_LIBS(el_init, edit, have_libedit=yes, have_libedit=no)
|
|
||||||
fi
|
|
||||||
AC_LIBRARY_NET
|
|
||||||
AC_LIBRARY_SOCKS
|
|
||||||
if test -n "$socks"; then
|
|
||||||
if test $opt_ipv6 = yes; then
|
|
||||||
echo "IPv6 is incompatible with socks, disabling IPv6 support"
|
|
||||||
opt_ipv6=no
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for header files.
|
|
||||||
dnl
|
|
||||||
AC_CONFIG_HEADER(config.h)
|
|
||||||
AC_HEADER_DIRENT
|
|
||||||
AC_HEADER_STDC
|
|
||||||
AC_CHECK_HEADERS(arpa/nameser.h err.h regex.h paths.h poll.h sys/poll.h \
|
|
||||||
termcap.h util.h libutil.h vis.h)
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
||||||
dnl
|
|
||||||
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])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
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> ], [
|
|
||||||
struct sockaddr_in sin;
|
|
||||||
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)])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
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 ], [AC_DEFINE(HAVE_SOCKADDR_IN6, 1)])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
AC_MSG_TRY_COMPILE(for d_namlen in struct dirent, ftp_cv_HAVE_D_NAMLEN, [
|
|
||||||
#if HAVE_DIRENT_H
|
|
||||||
# include <dirent.h>
|
|
||||||
#else
|
|
||||||
# define dirent direct
|
|
||||||
# if HAVE_SYS_NDIR_H
|
|
||||||
# include <sys/ndir.h>
|
|
||||||
# endif
|
|
||||||
# if HAVE_SYS_DIR_H
|
|
||||||
# include <sys/dir.h>
|
|
||||||
# endif
|
|
||||||
# if HAVE_NDIR_H
|
|
||||||
# include <ndir.h>
|
|
||||||
# endif
|
|
||||||
#endif ], [
|
|
||||||
struct dirent dp;
|
|
||||||
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)])
|
|
||||||
|
|
||||||
AC_MSG_TRY_COMPILE(for fclose() declaration, ftp_cv_HAVE_FCLOSE_D, [
|
|
||||||
#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)])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
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)])
|
|
||||||
|
|
||||||
AC_MSG_TRY_COMPILE(for pclose() declaration, ftp_cv_HAVE_PCLOSE_D, [
|
|
||||||
#include <stdio.h> ], [ int (*X)() = pclose ], [AC_DEFINE(HAVE_PCLOSE_D, 1)])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for library functions.
|
|
||||||
dnl
|
|
||||||
AC_REPLACE_FUNCS(err fgetln fseeko getaddrinfo getnameinfo inet_ntop inet_pton \
|
|
||||||
mkstemp setprogname sl_init snprintf strdup strerror strlcat \
|
|
||||||
strlcpy strptime strsep strunvis strvis timegm usleep)
|
|
||||||
AC_CHECK_FUNCS(gethostbyname2 getpassphrase getpgrp memmove poll select)
|
|
||||||
if test $ac_cv_func_getpgrp = yes; then
|
|
||||||
AC_FUNC_GETPGRP
|
|
||||||
fi
|
|
||||||
if test $ac_cv_lib_util_fparseln != yes; then
|
|
||||||
AC_REPLACE_FUNCS(fparseln)
|
|
||||||
fi
|
|
||||||
|
|
||||||
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)])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $have_long_long = yes -a $ac_cv_sizeof_off_t -ge 8; then
|
|
||||||
|
|
||||||
dnl We assume that if sprintf() supports %lld or %qd,
|
|
||||||
dnl then all of *printf() does. If not, disable long long
|
|
||||||
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"));
|
|
||||||
}
|
|
||||||
], [
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
can_printf_longlong=yes
|
|
||||||
], [
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
], [ : ])
|
|
||||||
|
|
||||||
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"));
|
|
||||||
}
|
|
||||||
], [
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
can_printf_longlong=yes
|
|
||||||
AC_DEFINE(HAVE_PRINTF_QD, 1)
|
|
||||||
], [
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
], [ : ])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $can_printf_longlong = yes; then
|
|
||||||
AC_DEFINE(HAVE_QUAD_SUPPORT, 1)
|
|
||||||
AC_REPLACE_FUNCS(strtoll)
|
|
||||||
fi
|
|
||||||
|
|
||||||
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 ], [:],
|
|
||||||
have_libedit=no )
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(for working libedit)
|
|
||||||
if test $have_libedit = no; then
|
|
||||||
AC_MSG_RESULT(no - using my own)
|
|
||||||
INCLUDES="-I\${srcdir}/../libedit $INCLUDES"
|
|
||||||
LDFLAGS="-L../libedit $LDFLAGS"
|
|
||||||
LIBS="-ledit $LIBS"
|
|
||||||
LIBEDIT=libedit.a
|
|
||||||
LIBDEPENDS="$LIBDEPENDS ../libedit/libedit.a"
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
CFLAGS="-DNO_EDITCOMPLETE $CFLAGS"
|
|
||||||
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"])
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
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 ])
|
|
||||||
fi
|
|
||||||
AC_MSG_CHECKING(for working getaddrinfo())
|
|
||||||
if test $have_rfc2553_netdb = yes; then
|
|
||||||
AC_DEFINE(HAVE_RFC2553_NETDB, 1)
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
else
|
|
||||||
if test $ac_cv_func_getaddrinfo = yes; then
|
|
||||||
LIBOBJS="$LIBOBJS getaddrinfo.o"
|
|
||||||
AC_MSG_RESULT(no - using local version)
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(using local version)
|
|
||||||
fi
|
|
||||||
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 )
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if test -n "$LIBOBJS"; then
|
|
||||||
INCLUDES="$INCLUDES -I\${srcdir}/../libukem"
|
|
||||||
LDFLAGS="$LDFLAGS -L../libukem"
|
|
||||||
LIBS="$LIBS -lukem"
|
|
||||||
LIBUKEM=libukem.a
|
|
||||||
LIBDEPENDS="$LIBDEPENDS ../libukem/libukem.a"
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl Create the Makefiles
|
|
||||||
dnl
|
|
||||||
|
|
||||||
AC_SUBST(INCLUDES)
|
|
||||||
AC_SUBST(LIBEDIT)
|
|
||||||
AC_SUBST(LIBUKEM)
|
|
||||||
AC_SUBST(LIBDEPENDS)
|
|
||||||
|
|
||||||
AC_OUTPUT(Makefile libedit/Makefile libedit/makelist libukem/Makefile \
|
|
||||||
src/Makefile)
|
|
File diff suppressed because it is too large
Load Diff
@ -1,251 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# install - install a program, script, or datafile
|
|
||||||
# This comes from X11R5 (mit/util/scripts/install.sh).
|
|
||||||
#
|
|
||||||
# Copyright 1991 by the Massachusetts Institute of Technology
|
|
||||||
#
|
|
||||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
# documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
# the above copyright notice appear in all copies and that both that
|
|
||||||
# copyright notice and this permission notice appear in supporting
|
|
||||||
# documentation, and that the name of M.I.T. not be used in advertising or
|
|
||||||
# publicity pertaining to distribution of the software without specific,
|
|
||||||
# written prior permission. M.I.T. makes no representations about the
|
|
||||||
# suitability of this software for any purpose. It is provided "as is"
|
|
||||||
# without express or implied warranty.
|
|
||||||
#
|
|
||||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
|
||||||
# `make' implicit rules from creating a file called install from it
|
|
||||||
# when there is no Makefile.
|
|
||||||
#
|
|
||||||
# This script is compatible with the BSD install script, but was written
|
|
||||||
# from scratch. It can only install one file at a time, a restriction
|
|
||||||
# shared with many OS's install programs.
|
|
||||||
|
|
||||||
|
|
||||||
# set DOITPROG to echo to test this script
|
|
||||||
|
|
||||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
|
||||||
doit="${DOITPROG-}"
|
|
||||||
|
|
||||||
|
|
||||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
|
||||||
|
|
||||||
mvprog="${MVPROG-mv}"
|
|
||||||
cpprog="${CPPROG-cp}"
|
|
||||||
chmodprog="${CHMODPROG-chmod}"
|
|
||||||
chownprog="${CHOWNPROG-chown}"
|
|
||||||
chgrpprog="${CHGRPPROG-chgrp}"
|
|
||||||
stripprog="${STRIPPROG-strip}"
|
|
||||||
rmprog="${RMPROG-rm}"
|
|
||||||
mkdirprog="${MKDIRPROG-mkdir}"
|
|
||||||
|
|
||||||
transformbasename=""
|
|
||||||
transform_arg=""
|
|
||||||
instcmd="$mvprog"
|
|
||||||
chmodcmd="$chmodprog 0755"
|
|
||||||
chowncmd=""
|
|
||||||
chgrpcmd=""
|
|
||||||
stripcmd=""
|
|
||||||
rmcmd="$rmprog -f"
|
|
||||||
mvcmd="$mvprog"
|
|
||||||
src=""
|
|
||||||
dst=""
|
|
||||||
dir_arg=""
|
|
||||||
|
|
||||||
while [ x"$1" != x ]; do
|
|
||||||
case $1 in
|
|
||||||
-c) instcmd="$cpprog"
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-d) dir_arg=true
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-m) chmodcmd="$chmodprog $2"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-o) chowncmd="$chownprog $2"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-g) chgrpcmd="$chgrpprog $2"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-s) stripcmd="$stripprog"
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
*) if [ x"$src" = x ]
|
|
||||||
then
|
|
||||||
src=$1
|
|
||||||
else
|
|
||||||
# this colon is to work around a 386BSD /bin/sh bug
|
|
||||||
:
|
|
||||||
dst=$1
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ x"$src" = x ]
|
|
||||||
then
|
|
||||||
echo "install: no input file specified"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ x"$dir_arg" != x ]; then
|
|
||||||
dst=$src
|
|
||||||
src=""
|
|
||||||
|
|
||||||
if [ -d $dst ]; then
|
|
||||||
instcmd=:
|
|
||||||
chmodcmd=""
|
|
||||||
else
|
|
||||||
instcmd=mkdir
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
|
|
||||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
|
||||||
# might cause directories to be created, which would be especially bad
|
|
||||||
# if $src (and thus $dsttmp) contains '*'.
|
|
||||||
|
|
||||||
if [ -f $src -o -d $src ]
|
|
||||||
then
|
|
||||||
true
|
|
||||||
else
|
|
||||||
echo "install: $src does not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ x"$dst" = x ]
|
|
||||||
then
|
|
||||||
echo "install: no destination specified"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If destination is a directory, append the input filename; if your system
|
|
||||||
# does not like double slashes in filenames, you may need to add some logic
|
|
||||||
|
|
||||||
if [ -d $dst ]
|
|
||||||
then
|
|
||||||
dst="$dst"/`basename $src`
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
## this sed command emulates the dirname command
|
|
||||||
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
|
||||||
|
|
||||||
# Make sure that the destination directory exists.
|
|
||||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
|
||||||
|
|
||||||
# Skip lots of stat calls in the usual case.
|
|
||||||
if [ ! -d "$dstdir" ]; then
|
|
||||||
defaultIFS='
|
|
||||||
'
|
|
||||||
IFS="${IFS-${defaultIFS}}"
|
|
||||||
|
|
||||||
oIFS="${IFS}"
|
|
||||||
# Some sh's can't handle IFS=/ for some reason.
|
|
||||||
IFS='%'
|
|
||||||
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
|
||||||
IFS="${oIFS}"
|
|
||||||
|
|
||||||
pathcomp=''
|
|
||||||
|
|
||||||
while [ $# -ne 0 ] ; do
|
|
||||||
pathcomp="${pathcomp}${1}"
|
|
||||||
shift
|
|
||||||
|
|
||||||
if [ ! -d "${pathcomp}" ] ;
|
|
||||||
then
|
|
||||||
$mkdirprog "${pathcomp}"
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
|
|
||||||
pathcomp="${pathcomp}/"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ x"$dir_arg" != x ]
|
|
||||||
then
|
|
||||||
$doit $instcmd $dst &&
|
|
||||||
|
|
||||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
|
||||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
|
||||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
|
||||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
|
||||||
else
|
|
||||||
|
|
||||||
# If we're going to rename the final executable, determine the name now.
|
|
||||||
|
|
||||||
if [ x"$transformarg" = x ]
|
|
||||||
then
|
|
||||||
dstfile=`basename $dst`
|
|
||||||
else
|
|
||||||
dstfile=`basename $dst $transformbasename |
|
|
||||||
sed $transformarg`$transformbasename
|
|
||||||
fi
|
|
||||||
|
|
||||||
# don't allow the sed command to completely eliminate the filename
|
|
||||||
|
|
||||||
if [ x"$dstfile" = x ]
|
|
||||||
then
|
|
||||||
dstfile=`basename $dst`
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make a temp file name in the proper directory.
|
|
||||||
|
|
||||||
dsttmp=$dstdir/#inst.$$#
|
|
||||||
|
|
||||||
# Move or copy the file name to the temp name
|
|
||||||
|
|
||||||
$doit $instcmd $src $dsttmp &&
|
|
||||||
|
|
||||||
trap "rm -f ${dsttmp}" 0 &&
|
|
||||||
|
|
||||||
# and set any options; do chmod last to preserve setuid bits
|
|
||||||
|
|
||||||
# If any of these fail, we abort the whole thing. If we want to
|
|
||||||
# ignore errors from any of these, just make sure not to ignore
|
|
||||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
|
||||||
|
|
||||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
|
||||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
|
||||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
|
||||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
|
||||||
|
|
||||||
# Now rename the file to the real destination.
|
|
||||||
|
|
||||||
$doit $rmcmd -f $dstdir/$dstfile &&
|
|
||||||
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
|
||||||
|
|
||||||
fi &&
|
|
||||||
|
|
||||||
|
|
||||||
exit 0
|
|
@ -1,403 +0,0 @@
|
|||||||
/* $Id: lukemftp.h,v 1.43 2002/06/10 08:13:01 lukem Exp $ */
|
|
||||||
|
|
||||||
#define FTP_PRODUCT "lukemftp"
|
|
||||||
#define FTP_VERSION "1.6-beta2"
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <netinet/in_systm.h>
|
|
||||||
#include <netinet/ip.h>
|
|
||||||
|
|
||||||
#include <arpa/ftp.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <pwd.h>
|
|
||||||
#include <setjmp.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <termios.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#if HAVE_POLL
|
|
||||||
# if HAVE_POLL_H
|
|
||||||
# include <poll.h>
|
|
||||||
# elif HAVE_SYS_POLL_H
|
|
||||||
# include <sys/poll.h>
|
|
||||||
# endif
|
|
||||||
#elif HAVE_SELECT
|
|
||||||
# define USE_SELECT
|
|
||||||
#else
|
|
||||||
# error "no poll() or select() found"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_DIRENT_H
|
|
||||||
# include <dirent.h>
|
|
||||||
#else
|
|
||||||
# define dirent direct
|
|
||||||
# if HAVE_SYS_NDIR_H
|
|
||||||
# include <sys/ndir.h>
|
|
||||||
# endif
|
|
||||||
# if HAVE_SYS_DIR_H
|
|
||||||
# include <sys/dir.h>
|
|
||||||
# endif
|
|
||||||
# if HAVE_NDIR_H
|
|
||||||
# include <ndir.h>
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TIME_WITH_SYS_TIME
|
|
||||||
# include <sys/time.h>
|
|
||||||
# include <time.h>
|
|
||||||
#else
|
|
||||||
# if HAVE_SYS_TIME_H
|
|
||||||
# include <sys/time.h>
|
|
||||||
# else
|
|
||||||
# include <time.h>
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_ERR_H
|
|
||||||
# include <err.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if USE_GLOB_H /* not set by configure; used by other build systems */
|
|
||||||
# include <glob.h>
|
|
||||||
#else
|
|
||||||
# include "ftpglob.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_PATHS_H
|
|
||||||
# include <paths.h>
|
|
||||||
#endif
|
|
||||||
#ifndef _PATH_BSHELL
|
|
||||||
#define _PATH_BSHELL "/bin/sh"
|
|
||||||
#endif
|
|
||||||
#ifndef _PATH_TMP
|
|
||||||
#define _PATH_TMP "/tmp/"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct _stringlist {
|
|
||||||
char **sl_str;
|
|
||||||
size_t sl_max;
|
|
||||||
size_t sl_cur;
|
|
||||||
} StringList;
|
|
||||||
|
|
||||||
StringList *sl_init(void);
|
|
||||||
int sl_add(StringList *, char *);
|
|
||||||
void sl_free(StringList *, int);
|
|
||||||
char *sl_find(StringList *, char *);
|
|
||||||
|
|
||||||
#if HAVE_TERMCAP_H
|
|
||||||
# include <termcap.h>
|
|
||||||
#else
|
|
||||||
int tgetent(char *, const char *);
|
|
||||||
char *tgetstr(const char *, char **);
|
|
||||||
int tgetflag(const char *);
|
|
||||||
int tgetnum(const char *);
|
|
||||||
char *tgoto(const char *, int, int);
|
|
||||||
void tputs(const char *, int, int (*)(int));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_UTIL_H
|
|
||||||
# include <util.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_LIBUTIL_H
|
|
||||||
# include <libutil.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_VIS_H
|
|
||||||
# include <vis.h>
|
|
||||||
#else
|
|
||||||
# include "ftpvis.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_IN_PORT_T
|
|
||||||
typedef unsigned short in_port_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_SA_FAMILY_T
|
|
||||||
typedef unsigned short sa_family_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_SOCKLEN_T
|
|
||||||
typedef unsigned int socklen_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_AF_INET6 && HAVE_SOCKADDR_IN6
|
|
||||||
# define INET6
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if ! HAVE_RFC2553_NETDB
|
|
||||||
|
|
||||||
/* RFC 2553 */
|
|
||||||
#undef EAI_ADDRFAMILY
|
|
||||||
#define EAI_ADDRFAMILY 1 /* address family for hostname not supported */
|
|
||||||
#undef EAI_AGAIN
|
|
||||||
#define EAI_AGAIN 2 /* temporary failure in name resolution */
|
|
||||||
#undef EAI_BADFLAGS
|
|
||||||
#define EAI_BADFLAGS 3 /* invalid value for ai_flags */
|
|
||||||
#undef EAI_FAIL
|
|
||||||
#define EAI_FAIL 4 /* non-recoverable failure in name resolution */
|
|
||||||
#undef EAI_FAMILY
|
|
||||||
#define EAI_FAMILY 5 /* ai_family not supported */
|
|
||||||
#undef EAI_MEMORY
|
|
||||||
#define EAI_MEMORY 6 /* memory allocation failure */
|
|
||||||
#undef EAI_NODATA
|
|
||||||
#define EAI_NODATA 7 /* no address associated with hostname */
|
|
||||||
#undef EAI_NONAME
|
|
||||||
#define EAI_NONAME 8 /* hostname nor servname provided, or not known */
|
|
||||||
#undef EAI_SERVICE
|
|
||||||
#define EAI_SERVICE 9 /* servname not supported for ai_socktype */
|
|
||||||
#undef EAI_SOCKTYPE
|
|
||||||
#define EAI_SOCKTYPE 10 /* ai_socktype not supported */
|
|
||||||
#undef EAI_SYSTEM
|
|
||||||
#define EAI_SYSTEM 11 /* system error returned in errno */
|
|
||||||
|
|
||||||
/* KAME extensions? */
|
|
||||||
#undef EAI_BADHINTS
|
|
||||||
#define EAI_BADHINTS 12
|
|
||||||
#undef EAI_PROTOCOL
|
|
||||||
#define EAI_PROTOCOL 13
|
|
||||||
#undef EAI_MAX
|
|
||||||
#define EAI_MAX 14
|
|
||||||
|
|
||||||
/* RFC 2553 */
|
|
||||||
#undef NI_MAXHOST
|
|
||||||
#define NI_MAXHOST 1025
|
|
||||||
#undef NI_MAXSERV
|
|
||||||
#define NI_MAXSERV 32
|
|
||||||
|
|
||||||
#undef NI_NOFQDN
|
|
||||||
#define NI_NOFQDN 0x00000001
|
|
||||||
#undef NI_NUMERICHOST
|
|
||||||
#define NI_NUMERICHOST 0x00000002
|
|
||||||
#undef NI_NAMEREQD
|
|
||||||
#define NI_NAMEREQD 0x00000004
|
|
||||||
#undef NI_NUMERICSERV
|
|
||||||
#define NI_NUMERICSERV 0x00000008
|
|
||||||
#undef NI_DGRAM
|
|
||||||
#define NI_DGRAM 0x00000010
|
|
||||||
|
|
||||||
/* RFC 2553 */
|
|
||||||
#undef AI_PASSIVE
|
|
||||||
#define AI_PASSIVE 0x00000001 /* get address to use bind() */
|
|
||||||
#undef AI_CANONNAME
|
|
||||||
#define AI_CANONNAME 0x00000002 /* fill ai_canonname */
|
|
||||||
|
|
||||||
/* KAME extensions ? */
|
|
||||||
#undef AI_NUMERICHOST
|
|
||||||
#define AI_NUMERICHOST 0x00000004 /* prevent name resolution */
|
|
||||||
#undef AI_MASK
|
|
||||||
#define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST)
|
|
||||||
|
|
||||||
/* RFC 2553 */
|
|
||||||
#undef AI_ALL
|
|
||||||
#define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
|
|
||||||
#undef AI_V4MAPPED_CFG
|
|
||||||
#define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */
|
|
||||||
#undef AI_ADDRCONFIG
|
|
||||||
#define AI_ADDRCONFIG 0x00000400 /* only if any address is assigned */
|
|
||||||
#undef AI_V4MAPPED
|
|
||||||
#define AI_V4MAPPED 0x00000800 /* accept IPv4-mapped IPv6 address */
|
|
||||||
|
|
||||||
#endif /* ! HAVE_RFC2553_NETDB */
|
|
||||||
|
|
||||||
|
|
||||||
#if ! HAVE_RFC2553_NETDB && ! HAVE_ADDRINFO
|
|
||||||
|
|
||||||
struct addrinfo {
|
|
||||||
int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
|
|
||||||
int ai_family; /* PF_xxx */
|
|
||||||
int ai_socktype; /* SOCK_xxx */
|
|
||||||
int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
|
|
||||||
size_t ai_addrlen; /* length of ai_addr */
|
|
||||||
char *ai_canonname; /* canonical name for hostname */
|
|
||||||
struct sockaddr *ai_addr; /* binary address */
|
|
||||||
struct addrinfo *ai_next; /* next structure in linked list */
|
|
||||||
};
|
|
||||||
|
|
||||||
int getaddrinfo(const char *, const char *,
|
|
||||||
const struct addrinfo *, struct addrinfo **);
|
|
||||||
int getnameinfo(const struct sockaddr *, socklen_t, char *,
|
|
||||||
size_t, char *, size_t, int);
|
|
||||||
void freeaddrinfo(struct addrinfo *);
|
|
||||||
char *gai_strerror(int);
|
|
||||||
|
|
||||||
#endif /* ! HAVE_RFC2553_NETDB && ! HAVE_ADDRINFO */
|
|
||||||
|
|
||||||
|
|
||||||
#if ! HAVE_D_NAMLEN
|
|
||||||
# define DIRENT_MISSING_D_NAMLEN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_H_ERRNO_D
|
|
||||||
extern int h_errno;
|
|
||||||
#endif
|
|
||||||
#define HAVE_H_ERRNO 1 /* XXX: an assumption for now... */
|
|
||||||
|
|
||||||
#if ! HAVE_FCLOSE_D
|
|
||||||
int fclose(FILE *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_GETPASS_D
|
|
||||||
char *getpass(const char *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_OPTARG_D
|
|
||||||
extern char *optarg;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_OPTIND_D
|
|
||||||
extern int optind;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_PCLOSE_D
|
|
||||||
int pclose(FILE *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_ERR
|
|
||||||
void err(int, const char *, ...);
|
|
||||||
void errx(int, const char *, ...);
|
|
||||||
void warn(const char *, ...);
|
|
||||||
void warnx(const char *, ...);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_FGETLN
|
|
||||||
char *fgetln(FILE *, size_t *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_FSEEKO
|
|
||||||
int fseeko(FILE *, off_t, int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_FPARSELN
|
|
||||||
# define FPARSELN_UNESCESC 0x01
|
|
||||||
# define FPARSELN_UNESCCONT 0x02
|
|
||||||
# define FPARSELN_UNESCCOMM 0x04
|
|
||||||
# define FPARSELN_UNESCREST 0x08
|
|
||||||
# define FPARSELN_UNESCALL 0x0f
|
|
||||||
char *fparseln(FILE *, size_t *, size_t *, const char[3], int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_INET_NTOP
|
|
||||||
const char *inet_ntop(int, const void *, char *, size_t);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_INET_PTON
|
|
||||||
int inet_pton(int, const char *, void *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_MKSTEMP
|
|
||||||
int mkstemp(char *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_SETPROGNAME
|
|
||||||
const char *getprogname(void);
|
|
||||||
void setprogname(const char *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_SNPRINTF
|
|
||||||
int snprintf(char *, size_t, const char *, ...);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRDUP
|
|
||||||
char *strdup(const char *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRERROR
|
|
||||||
char *strerror(int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRPTIME || ! HAVE_STRPTIME_D
|
|
||||||
char *strptime(const char *, const char *, struct tm *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_QUAD_SUPPORT
|
|
||||||
# if ! HAVE_STRTOLL && HAVE_LONG_LONG
|
|
||||||
long long strtoll(const char *, char **, int);
|
|
||||||
# if ! defined(QUAD_MIN)
|
|
||||||
# define QUAD_MIN (-0x7fffffffffffffffL-1)
|
|
||||||
# endif
|
|
||||||
# if ! defined(QUAD_MAX)
|
|
||||||
# define QUAD_MAX (0x7fffffffffffffffL)
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#else /* ! HAVE_QUAD_SUPPORT */
|
|
||||||
# define NO_LONG_LONG 1
|
|
||||||
#endif /* ! HAVE_QUAD_SUPPORT */
|
|
||||||
|
|
||||||
#if ! HAVE_TIMEGM
|
|
||||||
time_t timegm(struct tm *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_HSTRERROR
|
|
||||||
char *strerror(int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRLCAT
|
|
||||||
size_t strlcat(char *, const char *, size_t);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRLCPY
|
|
||||||
size_t strlcpy(char *, const char *, size_t);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_STRSEP
|
|
||||||
char *strsep(char **stringp, const char *delim);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! HAVE_MEMMOVE
|
|
||||||
# define memmove(a,b,c) bcopy((b),(a),(c))
|
|
||||||
/* XXX: add others #defines for borken systems? */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_GETPASSPHRASE
|
|
||||||
# define getpass getpassphrase
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! defined(MIN)
|
|
||||||
# define MIN(a, b) ((a) < (b) ? (a) : (b))
|
|
||||||
#endif
|
|
||||||
#if ! defined(MAX)
|
|
||||||
# define MAX(a, b) ((a) < (b) ? (b) : (a))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! defined(timersub)
|
|
||||||
# define timersub(tvp, uvp, vvp) \
|
|
||||||
do { \
|
|
||||||
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
|
|
||||||
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
|
|
||||||
if ((vvp)->tv_usec < 0) { \
|
|
||||||
(vvp)->tv_sec--; \
|
|
||||||
(vvp)->tv_usec += 1000000; \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! defined(S_ISLNK)
|
|
||||||
# define S_ISLNK(m) ((m & S_IFMT) == S_IFLNK)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define EPOCH_YEAR 1970
|
|
||||||
#define SECSPERHOUR 3600
|
|
||||||
#define SECSPERDAY 86400
|
|
||||||
#define TM_YEAR_BASE 1900
|
|
@ -1,28 +0,0 @@
|
|||||||
# $NetBSD: Makefile,v 1.30 2005/02/11 15:13:28 jmc Exp $
|
|
||||||
# from: @(#)Makefile 8.2 (Berkeley) 4/3/94
|
|
||||||
|
|
||||||
.include <bsd.own.mk>
|
|
||||||
|
|
||||||
PROG= ftp
|
|
||||||
SRCS= cmds.c cmdtab.c complete.c domacro.c fetch.c ftp.c main.c \
|
|
||||||
progressbar.c ruserpass.c util.c
|
|
||||||
|
|
||||||
# Uncomment the following to provide defaults for gate-ftp operation
|
|
||||||
#
|
|
||||||
#CPPFLAGS+=-DGATE_SERVER=\"ftp-gw.host\" # -DGATE_PORT=21
|
|
||||||
|
|
||||||
.if defined(SMALLPROG)
|
|
||||||
CPPFLAGS+=-DNO_EDITCOMPLETE -DNO_ABOUT -DNO_AUTH -DNO_HELP -DNO_STATUS
|
|
||||||
.else
|
|
||||||
LDADD+= -ledit -ltermcap
|
|
||||||
DPADD+= ${LIBEDIT} ${LIBTERMCAP}
|
|
||||||
.endif
|
|
||||||
|
|
||||||
.if (!defined(SMALLPROG) || defined(SMALLPROG_INET6)) && (${USE_INET6} != "no")
|
|
||||||
CPPFLAGS+= -DINET6
|
|
||||||
.endif
|
|
||||||
|
|
||||||
cmds.o fetch.o: version.h
|
|
||||||
main.o: ftp_var.h
|
|
||||||
|
|
||||||
.include <bsd.prog.mk>
|
|
52
contrib/tnftp/src/Makefile.am
Normal file
52
contrib/tnftp/src/Makefile.am
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
## $NetBSD: Makefile.am,v 1.2 2010/01/04 06:24:20 lukem Exp $
|
||||||
|
|
||||||
|
bin_PROGRAMS = tnftp
|
||||||
|
|
||||||
|
tnftp_SOURCES = \
|
||||||
|
cmds.c \
|
||||||
|
cmdtab.c \
|
||||||
|
complete.c \
|
||||||
|
domacro.c \
|
||||||
|
fetch.c \
|
||||||
|
ftp.c \
|
||||||
|
main.c \
|
||||||
|
progressbar.c \
|
||||||
|
ruserpass.c \
|
||||||
|
util.c
|
||||||
|
|
||||||
|
tnftp_CPPFLAGS = \
|
||||||
|
-DHAVE_TNFTPD_H=1 \
|
||||||
|
-D_DEFAULT_CONFDIR=\"${sysconfdir}\" \
|
||||||
|
-I$(srcdir) \
|
||||||
|
-I$(top_srcdir)/libnetbsd \
|
||||||
|
-I$(top_srcdir) \
|
||||||
|
-I$(top_builddir)
|
||||||
|
|
||||||
|
tnftp_LDADD = \
|
||||||
|
../libnetbsd/libnetbsd.la
|
||||||
|
|
||||||
|
|
||||||
|
if USE_LIBEDIT
|
||||||
|
tnftp_CPPFLAGS += \
|
||||||
|
-I$(top_srcdir)/libedit
|
||||||
|
|
||||||
|
tnftp_LDADD += \
|
||||||
|
../libedit/libedit.la
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
man1_MANS = \
|
||||||
|
tnftp.1
|
||||||
|
|
||||||
|
tnftp.1: ftp.1
|
||||||
|
cp $(srcdir)/ftp.1 tnftp.1
|
||||||
|
|
||||||
|
CLEANFILES = \
|
||||||
|
tnftp.1
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
extern.h \
|
||||||
|
ftp.1 \
|
||||||
|
ftp_var.h \
|
||||||
|
progressbar.h \
|
||||||
|
version.h
|
@ -1,43 +1,809 @@
|
|||||||
#
|
# Makefile.in generated by automake 1.11 from Makefile.am.
|
||||||
# $Id: Makefile.in,v 1.8 2000/08/08 07:04:27 lukem Exp $
|
# @configure_input@
|
||||||
#
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
VPATH = @srcdir@
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||||
SHELL = /bin/sh
|
# Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
prefix = @prefix@
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
bin_PROGRAMS = tnftp$(EXEEXT)
|
||||||
|
@USE_LIBEDIT_TRUE@am__append_1 = \
|
||||||
|
@USE_LIBEDIT_TRUE@ -I$(top_srcdir)/libedit
|
||||||
|
|
||||||
|
@USE_LIBEDIT_TRUE@am__append_2 = \
|
||||||
|
@USE_LIBEDIT_TRUE@ ../libedit/libedit.la
|
||||||
|
|
||||||
|
subdir = src
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_HEADER = $(top_builddir)/tnftp_config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
|
||||||
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
|
am_tnftp_OBJECTS = tnftp-cmds.$(OBJEXT) tnftp-cmdtab.$(OBJEXT) \
|
||||||
|
tnftp-complete.$(OBJEXT) tnftp-domacro.$(OBJEXT) \
|
||||||
|
tnftp-fetch.$(OBJEXT) tnftp-ftp.$(OBJEXT) tnftp-main.$(OBJEXT) \
|
||||||
|
tnftp-progressbar.$(OBJEXT) tnftp-ruserpass.$(OBJEXT) \
|
||||||
|
tnftp-util.$(OBJEXT)
|
||||||
|
tnftp_OBJECTS = $(am_tnftp_OBJECTS)
|
||||||
|
tnftp_DEPENDENCIES = ../libnetbsd/libnetbsd.la $(am__append_2)
|
||||||
|
AM_V_lt = $(am__v_lt_$(V))
|
||||||
|
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
am__v_lt_0 = --silent
|
||||||
|
DEFAULT_INCLUDES =
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/buildaux/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
am__mv = mv -f
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS)
|
||||||
|
AM_V_CC = $(am__v_CC_$(V))
|
||||||
|
am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
am__v_CC_0 = @echo " CC " $@;
|
||||||
|
AM_V_at = $(am__v_at_$(V))
|
||||||
|
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
am__v_at_0 = @
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
AM_V_CCLD = $(am__v_CCLD_$(V))
|
||||||
|
am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||||
|
AM_V_GEN = $(am__v_GEN_$(V))
|
||||||
|
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
am__v_GEN_0 = @echo " GEN " $@;
|
||||||
|
SOURCES = $(tnftp_SOURCES)
|
||||||
|
DIST_SOURCES = $(tnftp_SOURCES)
|
||||||
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
am__vpath_adj = case $$p in \
|
||||||
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
*) f=$$p;; \
|
||||||
|
esac;
|
||||||
|
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__install_max = 40
|
||||||
|
am__nobase_strip_setup = \
|
||||||
|
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||||
|
am__nobase_strip = \
|
||||||
|
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||||
|
am__nobase_list = $(am__nobase_strip_setup); \
|
||||||
|
for p in $$list; do echo "$$p $$p"; done | \
|
||||||
|
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||||
|
if (++n[$$2] == $(am__install_max)) \
|
||||||
|
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||||
|
END { for (dir in files) print dir, files[dir] }'
|
||||||
|
am__base_list = \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||||
|
man1dir = $(mandir)/man1
|
||||||
|
NROFF = nroff
|
||||||
|
MANS = $(man1_MANS)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
ALLOCA = @ALLOCA@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DSYMUTIL = @DSYMUTIL@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
NMEDIT = @NMEDIT@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
builddir = @builddir@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
exec_prefix = @exec_prefix@
|
exec_prefix = @exec_prefix@
|
||||||
bindir = @bindir@
|
host = @host@
|
||||||
mandir = @mandir@
|
host_alias = @host_alias@
|
||||||
transform = @program_transform_name@
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
tnftp_SOURCES = \
|
||||||
|
cmds.c \
|
||||||
|
cmdtab.c \
|
||||||
|
complete.c \
|
||||||
|
domacro.c \
|
||||||
|
fetch.c \
|
||||||
|
ftp.c \
|
||||||
|
main.c \
|
||||||
|
progressbar.c \
|
||||||
|
ruserpass.c \
|
||||||
|
util.c
|
||||||
|
|
||||||
mandircat1 = ${mandir}/cat1
|
tnftp_CPPFLAGS = -DHAVE_TNFTPD_H=1 \
|
||||||
|
-D_DEFAULT_CONFDIR=\"${sysconfdir}\" -I$(srcdir) \
|
||||||
|
-I$(top_srcdir)/libnetbsd -I$(top_srcdir) -I$(top_builddir) \
|
||||||
|
$(am__append_1)
|
||||||
|
tnftp_LDADD = ../libnetbsd/libnetbsd.la $(am__append_2)
|
||||||
|
man1_MANS = \
|
||||||
|
tnftp.1
|
||||||
|
|
||||||
CC = @CC@
|
CLEANFILES = \
|
||||||
CFLAGS = -I${srcdir} -I${srcdir}/.. -I. -I.. @INCLUDES@ @CFLAGS@
|
tnftp.1
|
||||||
LIBS = @LIBS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
|
|
||||||
INSTALL = @INSTALL@
|
EXTRA_DIST = \
|
||||||
|
extern.h \
|
||||||
|
ftp.1 \
|
||||||
|
ftp_var.h \
|
||||||
|
progressbar.h \
|
||||||
|
version.h
|
||||||
|
|
||||||
PROG = ftp
|
all: all-am
|
||||||
OBJS = cmds.o cmdtab.o complete.o domacro.o fetch.o ftp.o main.o \
|
|
||||||
ruserpass.o util.o
|
|
||||||
|
|
||||||
all: ${PROG}
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .lo .o .obj
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --foreign src/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
install: all
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
-mkdir -p ${bindir}
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
${INSTALL} -m 555 ${PROG} ${bindir}/`echo ${PROG}|sed '$(transform)'`
|
|
||||||
-mkdir -p ${mandircat1}
|
|
||||||
${INSTALL} -m 444 ${srcdir}/${PROG}.cat1 ${mandircat1}/`echo ${PROG}|sed '$(transform)'`.1
|
|
||||||
|
|
||||||
${PROG}: ${OBJS} @LIBDEPENDS@
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
${CC} ${CFLAGS} ${LDFLAGS} -o ${PROG} ${OBJS} ${LIBS}
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
|
||||||
|
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||||
|
for p in $$list; do echo "$$p $$p"; done | \
|
||||||
|
sed 's/$(EXEEXT)$$//' | \
|
||||||
|
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||||
|
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||||
|
done | \
|
||||||
|
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||||
|
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||||
|
sed 'N;N;N;s,\n, ,g' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||||
|
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
|
||||||
|
if ($$2 == $$4) files[d] = files[d] " " $$1; \
|
||||||
|
else { print "f", $$3 "/" $$4, $$1; } } \
|
||||||
|
END { for (d in files) print "f", d, files[d] }' | \
|
||||||
|
while read type dir files; do \
|
||||||
|
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
|
||||||
|
test -z "$$files" || { \
|
||||||
|
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
|
||||||
|
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
|
||||||
|
} \
|
||||||
|
; done
|
||||||
|
|
||||||
clean:
|
uninstall-binPROGRAMS:
|
||||||
rm -f core ${PROG} ${OBJS}
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||||
|
files=`for p in $$list; do echo "$$p"; done | \
|
||||||
|
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||||
|
-e 's/$$/$(EXEEXT)/' `; \
|
||||||
|
test -n "$$list" || exit 0; \
|
||||||
|
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
|
||||||
|
cd "$(DESTDIR)$(bindir)" && rm -f $$files
|
||||||
|
|
||||||
distclean: clean
|
clean-binPROGRAMS:
|
||||||
rm -f Makefile
|
@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
|
||||||
|
echo " rm -f" $$list; \
|
||||||
|
rm -f $$list || exit $$?; \
|
||||||
|
test -n "$(EXEEXT)" || exit 0; \
|
||||||
|
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
|
||||||
|
echo " rm -f" $$list; \
|
||||||
|
rm -f $$list
|
||||||
|
tnftp$(EXEEXT): $(tnftp_OBJECTS) $(tnftp_DEPENDENCIES)
|
||||||
|
@rm -f tnftp$(EXEEXT)
|
||||||
|
$(AM_V_CCLD)$(LINK) $(tnftp_OBJECTS) $(tnftp_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tnftp-cmds.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tnftp-cmdtab.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tnftp-complete.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tnftp-domacro.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tnftp-fetch.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tnftp-ftp.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tnftp-main.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tnftp-progressbar.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tnftp-ruserpass.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tnftp-util.Po@am__quote@
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||||
|
|
||||||
|
.c.obj:
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
tnftp-cmds.o: cmds.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-cmds.o -MD -MP -MF $(DEPDIR)/tnftp-cmds.Tpo -c -o tnftp-cmds.o `test -f 'cmds.c' || echo '$(srcdir)/'`cmds.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-cmds.Tpo $(DEPDIR)/tnftp-cmds.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmds.c' object='tnftp-cmds.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-cmds.o `test -f 'cmds.c' || echo '$(srcdir)/'`cmds.c
|
||||||
|
|
||||||
|
tnftp-cmds.obj: cmds.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-cmds.obj -MD -MP -MF $(DEPDIR)/tnftp-cmds.Tpo -c -o tnftp-cmds.obj `if test -f 'cmds.c'; then $(CYGPATH_W) 'cmds.c'; else $(CYGPATH_W) '$(srcdir)/cmds.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-cmds.Tpo $(DEPDIR)/tnftp-cmds.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmds.c' object='tnftp-cmds.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-cmds.obj `if test -f 'cmds.c'; then $(CYGPATH_W) 'cmds.c'; else $(CYGPATH_W) '$(srcdir)/cmds.c'; fi`
|
||||||
|
|
||||||
|
tnftp-cmdtab.o: cmdtab.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-cmdtab.o -MD -MP -MF $(DEPDIR)/tnftp-cmdtab.Tpo -c -o tnftp-cmdtab.o `test -f 'cmdtab.c' || echo '$(srcdir)/'`cmdtab.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-cmdtab.Tpo $(DEPDIR)/tnftp-cmdtab.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdtab.c' object='tnftp-cmdtab.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-cmdtab.o `test -f 'cmdtab.c' || echo '$(srcdir)/'`cmdtab.c
|
||||||
|
|
||||||
|
tnftp-cmdtab.obj: cmdtab.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-cmdtab.obj -MD -MP -MF $(DEPDIR)/tnftp-cmdtab.Tpo -c -o tnftp-cmdtab.obj `if test -f 'cmdtab.c'; then $(CYGPATH_W) 'cmdtab.c'; else $(CYGPATH_W) '$(srcdir)/cmdtab.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-cmdtab.Tpo $(DEPDIR)/tnftp-cmdtab.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdtab.c' object='tnftp-cmdtab.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-cmdtab.obj `if test -f 'cmdtab.c'; then $(CYGPATH_W) 'cmdtab.c'; else $(CYGPATH_W) '$(srcdir)/cmdtab.c'; fi`
|
||||||
|
|
||||||
|
tnftp-complete.o: complete.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-complete.o -MD -MP -MF $(DEPDIR)/tnftp-complete.Tpo -c -o tnftp-complete.o `test -f 'complete.c' || echo '$(srcdir)/'`complete.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-complete.Tpo $(DEPDIR)/tnftp-complete.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='complete.c' object='tnftp-complete.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-complete.o `test -f 'complete.c' || echo '$(srcdir)/'`complete.c
|
||||||
|
|
||||||
|
tnftp-complete.obj: complete.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-complete.obj -MD -MP -MF $(DEPDIR)/tnftp-complete.Tpo -c -o tnftp-complete.obj `if test -f 'complete.c'; then $(CYGPATH_W) 'complete.c'; else $(CYGPATH_W) '$(srcdir)/complete.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-complete.Tpo $(DEPDIR)/tnftp-complete.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='complete.c' object='tnftp-complete.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-complete.obj `if test -f 'complete.c'; then $(CYGPATH_W) 'complete.c'; else $(CYGPATH_W) '$(srcdir)/complete.c'; fi`
|
||||||
|
|
||||||
|
tnftp-domacro.o: domacro.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-domacro.o -MD -MP -MF $(DEPDIR)/tnftp-domacro.Tpo -c -o tnftp-domacro.o `test -f 'domacro.c' || echo '$(srcdir)/'`domacro.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-domacro.Tpo $(DEPDIR)/tnftp-domacro.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='domacro.c' object='tnftp-domacro.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-domacro.o `test -f 'domacro.c' || echo '$(srcdir)/'`domacro.c
|
||||||
|
|
||||||
|
tnftp-domacro.obj: domacro.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-domacro.obj -MD -MP -MF $(DEPDIR)/tnftp-domacro.Tpo -c -o tnftp-domacro.obj `if test -f 'domacro.c'; then $(CYGPATH_W) 'domacro.c'; else $(CYGPATH_W) '$(srcdir)/domacro.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-domacro.Tpo $(DEPDIR)/tnftp-domacro.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='domacro.c' object='tnftp-domacro.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-domacro.obj `if test -f 'domacro.c'; then $(CYGPATH_W) 'domacro.c'; else $(CYGPATH_W) '$(srcdir)/domacro.c'; fi`
|
||||||
|
|
||||||
|
tnftp-fetch.o: fetch.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-fetch.o -MD -MP -MF $(DEPDIR)/tnftp-fetch.Tpo -c -o tnftp-fetch.o `test -f 'fetch.c' || echo '$(srcdir)/'`fetch.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-fetch.Tpo $(DEPDIR)/tnftp-fetch.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fetch.c' object='tnftp-fetch.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-fetch.o `test -f 'fetch.c' || echo '$(srcdir)/'`fetch.c
|
||||||
|
|
||||||
|
tnftp-fetch.obj: fetch.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-fetch.obj -MD -MP -MF $(DEPDIR)/tnftp-fetch.Tpo -c -o tnftp-fetch.obj `if test -f 'fetch.c'; then $(CYGPATH_W) 'fetch.c'; else $(CYGPATH_W) '$(srcdir)/fetch.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-fetch.Tpo $(DEPDIR)/tnftp-fetch.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fetch.c' object='tnftp-fetch.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-fetch.obj `if test -f 'fetch.c'; then $(CYGPATH_W) 'fetch.c'; else $(CYGPATH_W) '$(srcdir)/fetch.c'; fi`
|
||||||
|
|
||||||
|
tnftp-ftp.o: ftp.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-ftp.o -MD -MP -MF $(DEPDIR)/tnftp-ftp.Tpo -c -o tnftp-ftp.o `test -f 'ftp.c' || echo '$(srcdir)/'`ftp.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-ftp.Tpo $(DEPDIR)/tnftp-ftp.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ftp.c' object='tnftp-ftp.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-ftp.o `test -f 'ftp.c' || echo '$(srcdir)/'`ftp.c
|
||||||
|
|
||||||
|
tnftp-ftp.obj: ftp.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-ftp.obj -MD -MP -MF $(DEPDIR)/tnftp-ftp.Tpo -c -o tnftp-ftp.obj `if test -f 'ftp.c'; then $(CYGPATH_W) 'ftp.c'; else $(CYGPATH_W) '$(srcdir)/ftp.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-ftp.Tpo $(DEPDIR)/tnftp-ftp.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ftp.c' object='tnftp-ftp.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-ftp.obj `if test -f 'ftp.c'; then $(CYGPATH_W) 'ftp.c'; else $(CYGPATH_W) '$(srcdir)/ftp.c'; fi`
|
||||||
|
|
||||||
|
tnftp-main.o: main.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-main.o -MD -MP -MF $(DEPDIR)/tnftp-main.Tpo -c -o tnftp-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-main.Tpo $(DEPDIR)/tnftp-main.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='tnftp-main.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
|
||||||
|
|
||||||
|
tnftp-main.obj: main.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-main.obj -MD -MP -MF $(DEPDIR)/tnftp-main.Tpo -c -o tnftp-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-main.Tpo $(DEPDIR)/tnftp-main.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='tnftp-main.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
|
||||||
|
|
||||||
|
tnftp-progressbar.o: progressbar.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-progressbar.o -MD -MP -MF $(DEPDIR)/tnftp-progressbar.Tpo -c -o tnftp-progressbar.o `test -f 'progressbar.c' || echo '$(srcdir)/'`progressbar.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-progressbar.Tpo $(DEPDIR)/tnftp-progressbar.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='progressbar.c' object='tnftp-progressbar.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-progressbar.o `test -f 'progressbar.c' || echo '$(srcdir)/'`progressbar.c
|
||||||
|
|
||||||
|
tnftp-progressbar.obj: progressbar.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-progressbar.obj -MD -MP -MF $(DEPDIR)/tnftp-progressbar.Tpo -c -o tnftp-progressbar.obj `if test -f 'progressbar.c'; then $(CYGPATH_W) 'progressbar.c'; else $(CYGPATH_W) '$(srcdir)/progressbar.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-progressbar.Tpo $(DEPDIR)/tnftp-progressbar.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='progressbar.c' object='tnftp-progressbar.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-progressbar.obj `if test -f 'progressbar.c'; then $(CYGPATH_W) 'progressbar.c'; else $(CYGPATH_W) '$(srcdir)/progressbar.c'; fi`
|
||||||
|
|
||||||
|
tnftp-ruserpass.o: ruserpass.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-ruserpass.o -MD -MP -MF $(DEPDIR)/tnftp-ruserpass.Tpo -c -o tnftp-ruserpass.o `test -f 'ruserpass.c' || echo '$(srcdir)/'`ruserpass.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-ruserpass.Tpo $(DEPDIR)/tnftp-ruserpass.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ruserpass.c' object='tnftp-ruserpass.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-ruserpass.o `test -f 'ruserpass.c' || echo '$(srcdir)/'`ruserpass.c
|
||||||
|
|
||||||
|
tnftp-ruserpass.obj: ruserpass.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-ruserpass.obj -MD -MP -MF $(DEPDIR)/tnftp-ruserpass.Tpo -c -o tnftp-ruserpass.obj `if test -f 'ruserpass.c'; then $(CYGPATH_W) 'ruserpass.c'; else $(CYGPATH_W) '$(srcdir)/ruserpass.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-ruserpass.Tpo $(DEPDIR)/tnftp-ruserpass.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ruserpass.c' object='tnftp-ruserpass.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-ruserpass.obj `if test -f 'ruserpass.c'; then $(CYGPATH_W) 'ruserpass.c'; else $(CYGPATH_W) '$(srcdir)/ruserpass.c'; fi`
|
||||||
|
|
||||||
|
tnftp-util.o: util.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-util.o -MD -MP -MF $(DEPDIR)/tnftp-util.Tpo -c -o tnftp-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-util.Tpo $(DEPDIR)/tnftp-util.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='util.c' object='tnftp-util.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
|
||||||
|
|
||||||
|
tnftp-util.obj: util.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tnftp-util.obj -MD -MP -MF $(DEPDIR)/tnftp-util.Tpo -c -o tnftp-util.obj `if test -f 'util.c'; then $(CYGPATH_W) 'util.c'; else $(CYGPATH_W) '$(srcdir)/util.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tnftp-util.Tpo $(DEPDIR)/tnftp-util.Po
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='util.c' object='tnftp-util.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tnftp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tnftp-util.obj `if test -f 'util.c'; then $(CYGPATH_W) 'util.c'; else $(CYGPATH_W) '$(srcdir)/util.c'; fi`
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
install-man1: $(man1_MANS)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
|
||||||
|
@list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
|
||||||
|
{ for i in $$list; do echo "$$i"; done; \
|
||||||
|
} | while read p; do \
|
||||||
|
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
echo "$$d$$p"; echo "$$p"; \
|
||||||
|
done | \
|
||||||
|
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
|
||||||
|
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
||||||
|
sed 'N;N;s,\n, ,g' | { \
|
||||||
|
list=; while read file base inst; do \
|
||||||
|
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
||||||
|
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
|
||||||
|
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
||||||
|
while read files; do \
|
||||||
|
test -z "$$files" || { \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
|
||||||
|
done; }
|
||||||
|
|
||||||
|
uninstall-man1:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
|
||||||
|
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||||
|
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
|
||||||
|
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||||
|
test -z "$$files" || { \
|
||||||
|
echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
|
||||||
|
cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
set x; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
shift; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
if test $$# -gt 0; then \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& $(am__cd) $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@list='$(MANS)'; if test -n "$$list"; then \
|
||||||
|
list=`for p in $$list; do \
|
||||||
|
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
|
||||||
|
if test -n "$$list" && \
|
||||||
|
grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
|
||||||
|
echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
|
||||||
|
grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
|
||||||
|
echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
|
||||||
|
echo " typically \`make maintainer-clean' will remove them" >&2; \
|
||||||
|
exit 1; \
|
||||||
|
else :; fi; \
|
||||||
|
else :; fi
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
list='$(DISTFILES)'; \
|
||||||
|
dist_files=`for file in $$list; do echo $$file; done | \
|
||||||
|
sed -e "s|^$$srcdirstrip/||;t" \
|
||||||
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||||
|
case $$dist_files in \
|
||||||
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||||
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||||
|
sort -u` ;; \
|
||||||
|
esac; \
|
||||||
|
for file in $$dist_files; do \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test -d "$(distdir)/$$file"; then \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f "$(distdir)/$$file" \
|
||||||
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(PROGRAMS) $(MANS)
|
||||||
|
installdirs:
|
||||||
|
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
|
||||||
|
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am: install-man
|
||||||
|
|
||||||
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am: install-binPROGRAMS
|
||||||
|
|
||||||
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
|
install-man: install-man1
|
||||||
|
|
||||||
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-binPROGRAMS uninstall-man
|
||||||
|
|
||||||
|
uninstall-man: uninstall-man1
|
||||||
|
|
||||||
|
.MAKE: install-am install-strip
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||||
|
clean-generic clean-libtool ctags distclean distclean-compile \
|
||||||
|
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||||
|
dvi-am html html-am info info-am install install-am \
|
||||||
|
install-binPROGRAMS install-data install-data-am install-dvi \
|
||||||
|
install-dvi-am install-exec install-exec-am install-html \
|
||||||
|
install-html-am install-info install-info-am install-man \
|
||||||
|
install-man1 install-pdf install-pdf-am install-ps \
|
||||||
|
install-ps-am install-strip installcheck installcheck-am \
|
||||||
|
installdirs maintainer-clean maintainer-clean-generic \
|
||||||
|
mostlyclean mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
|
||||||
|
uninstall-am uninstall-binPROGRAMS uninstall-man \
|
||||||
|
uninstall-man1
|
||||||
|
|
||||||
|
|
||||||
|
tnftp.1: ftp.1
|
||||||
|
cp $(srcdir)/ftp.1 tnftp.1
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,8 @@
|
|||||||
/* $NetBSD: cmdtab.c,v 1.44 2005/04/11 01:49:31 lukem Exp $ */
|
/* $NetBSD: cmdtab.c,v 1.11 2009/05/20 12:53:47 lukem Exp $ */
|
||||||
|
/* from NetBSD: cmdtab.c,v 1.51 2009/04/12 10:18:52 lukem Exp */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1996-2000 The NetBSD Foundation, Inc.
|
* Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
* This code is derived from software contributed to The NetBSD Foundation
|
||||||
@ -15,13 +16,6 @@
|
|||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
@ -65,16 +59,23 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "tnftp.h"
|
||||||
|
|
||||||
|
#if 0 /* tnftp */
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)cmdtab.c 8.4 (Berkeley) 10/9/94";
|
static char sccsid[] = "@(#)cmdtab.c 8.4 (Berkeley) 10/9/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: cmdtab.c,v 1.44 2005/04/11 01:49:31 lukem Exp $");
|
__RCSID(" NetBSD: cmdtab.c,v 1.51 2009/04/12 10:18:52 lukem Exp ");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#endif /* tnftp */
|
||||||
|
|
||||||
#include "ftp_var.h"
|
#include "ftp_var.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -100,7 +101,9 @@ HSTR deletehelp[] = "delete remote file";
|
|||||||
HSTR disconhelp[] = "terminate ftp session";
|
HSTR disconhelp[] = "terminate ftp session";
|
||||||
HSTR domachelp[] = "execute macro";
|
HSTR domachelp[] = "execute macro";
|
||||||
HSTR edithelp[] = "toggle command line editing";
|
HSTR edithelp[] = "toggle command line editing";
|
||||||
|
HSTR epsvhelp[] = "toggle use of EPSV/EPRT on both IPv4 and IPV6 ftp";
|
||||||
HSTR epsv4help[] = "toggle use of EPSV/EPRT on IPv4 ftp";
|
HSTR epsv4help[] = "toggle use of EPSV/EPRT on IPv4 ftp";
|
||||||
|
HSTR epsv6help[] = "toggle use of EPSV/EPRT on IPv6 ftp";
|
||||||
HSTR feathelp[] = "show FEATures supported by remote system";
|
HSTR feathelp[] = "show FEATures supported by remote system";
|
||||||
HSTR formhelp[] = "set file transfer format";
|
HSTR formhelp[] = "set file transfer format";
|
||||||
HSTR gatehelp[] = "toggle gate-ftp; specify host[:port] to change proxy";
|
HSTR gatehelp[] = "toggle gate-ftp; specify host[:port] to change proxy";
|
||||||
@ -211,7 +214,9 @@ struct cmd cmdtab[] = {
|
|||||||
{ "dir", H(lshelp), 1, 1, 1, CMPL(rl) ls },
|
{ "dir", H(lshelp), 1, 1, 1, CMPL(rl) ls },
|
||||||
{ "disconnect", H(disconhelp), 0, 1, 1, CMPL0 disconnect },
|
{ "disconnect", H(disconhelp), 0, 1, 1, CMPL0 disconnect },
|
||||||
{ "edit", H(edithelp), 0, 0, 0, CMPL0 setedit },
|
{ "edit", H(edithelp), 0, 0, 0, CMPL0 setedit },
|
||||||
|
{ "epsv", H(epsvhelp), 0, 0, 0, CMPL0 setepsv },
|
||||||
{ "epsv4", H(epsv4help), 0, 0, 0, CMPL0 setepsv4 },
|
{ "epsv4", H(epsv4help), 0, 0, 0, CMPL0 setepsv4 },
|
||||||
|
{ "epsv6", H(epsv6help), 0, 0, 0, CMPL0 setepsv6 },
|
||||||
{ "exit", H(quithelp), 0, 0, 0, CMPL0 quit },
|
{ "exit", H(quithelp), 0, 0, 0, CMPL0 quit },
|
||||||
{ "features", H(feathelp), 0, 1, 1, CMPL0 feat },
|
{ "features", H(feathelp), 0, 1, 1, CMPL0 feat },
|
||||||
{ "fget", H(fgethelp), 1, 1, 1, CMPL(l) fget },
|
{ "fget", H(fgethelp), 1, 1, 1, CMPL(l) fget },
|
||||||
@ -294,7 +299,7 @@ struct cmd cmdtab[] = {
|
|||||||
{ "verbose", H(verbosehelp), 0, 0, 0, CMPL0 setverbose },
|
{ "verbose", H(verbosehelp), 0, 0, 0, CMPL0 setverbose },
|
||||||
{ "xferbuf", H(xferbufhelp), 0, 0, 0, CMPL0 setxferbuf },
|
{ "xferbuf", H(xferbufhelp), 0, 0, 0, CMPL0 setxferbuf },
|
||||||
{ "?", H(helphelp), 0, 0, 1, CMPL(C) help },
|
{ "?", H(helphelp), 0, 0, 1, CMPL(C) help },
|
||||||
{ 0 },
|
{ NULL, NULL, 0, 0, 0, CMPL0 NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
struct option optiontab[] = {
|
struct option optiontab[] = {
|
||||||
@ -305,5 +310,5 @@ struct option optiontab[] = {
|
|||||||
{ "pager", NULL },
|
{ "pager", NULL },
|
||||||
{ "prompt", NULL },
|
{ "prompt", NULL },
|
||||||
{ "rprompt", NULL },
|
{ "rprompt", NULL },
|
||||||
{ 0 },
|
{ NULL, NULL },
|
||||||
};
|
};
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
/* $NetBSD: complete.c,v 1.38 2000/05/01 10:35:17 lukem Exp $ */
|
/* $NetBSD: complete.c,v 1.10 2009/05/20 12:53:47 lukem Exp $ */
|
||||||
|
/* from NetBSD: complete.c,v 1.46 2009/04/12 10:18:52 lukem Exp */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1997-2000 The NetBSD Foundation, Inc.
|
* Copyright (c) 1997-2009 The NetBSD Foundation, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
* This code is derived from software contributed to The NetBSD Foundation
|
||||||
@ -15,13 +16,6 @@
|
|||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
@ -36,9 +30,13 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "tnftp.h"
|
||||||
|
|
||||||
|
#if 0 /* tnftp */
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
__RCSID("$NetBSD: complete.c,v 1.38 2000/05/01 10:35:17 lukem Exp $");
|
__RCSID(" NetBSD: complete.c,v 1.46 2009/04/12 10:18:52 lukem Exp ");
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -54,6 +52,8 @@ __RCSID("$NetBSD: complete.c,v 1.38 2000/05/01 10:35:17 lukem Exp $");
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#endif /* tnftp */
|
||||||
|
|
||||||
#include "ftp_var.h"
|
#include "ftp_var.h"
|
||||||
|
|
||||||
#ifndef NO_EDITCOMPLETE
|
#ifndef NO_EDITCOMPLETE
|
||||||
@ -68,7 +68,7 @@ static unsigned char complete_remote (char *, int);
|
|||||||
static int
|
static int
|
||||||
comparstr(const void *a, const void *b)
|
comparstr(const void *a, const void *b)
|
||||||
{
|
{
|
||||||
return (strcmp(*(const char **)a, *(const char **)b));
|
return (strcmp(*(const char * const *)a, *(const char * const *)b));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -87,7 +87,7 @@ complete_ambiguous(char *word, int list, StringList *words)
|
|||||||
{
|
{
|
||||||
char insertstr[MAXPATHLEN];
|
char insertstr[MAXPATHLEN];
|
||||||
char *lastmatch, *p;
|
char *lastmatch, *p;
|
||||||
int i, j;
|
size_t i, j;
|
||||||
size_t matchlen, wordlen;
|
size_t matchlen, wordlen;
|
||||||
|
|
||||||
wordlen = strlen(word);
|
wordlen = strlen(word);
|
||||||
@ -143,14 +143,14 @@ complete_command(char *word, int list)
|
|||||||
size_t wordlen;
|
size_t wordlen;
|
||||||
unsigned char rv;
|
unsigned char rv;
|
||||||
|
|
||||||
words = xsl_init();
|
words = ftp_sl_init();
|
||||||
wordlen = strlen(word);
|
wordlen = strlen(word);
|
||||||
|
|
||||||
for (c = cmdtab; c->c_name != NULL; c++) {
|
for (c = cmdtab; c->c_name != NULL; c++) {
|
||||||
if (wordlen > strlen(c->c_name))
|
if (wordlen > strlen(c->c_name))
|
||||||
continue;
|
continue;
|
||||||
if (strncmp(word, c->c_name, wordlen) == 0)
|
if (strncmp(word, c->c_name, wordlen) == 0)
|
||||||
xsl_add(words, c->c_name);
|
ftp_sl_add(words, ftp_strdup(c->c_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
rv = complete_ambiguous(word, list, words);
|
rv = complete_ambiguous(word, list, words);
|
||||||
@ -158,7 +158,7 @@ complete_command(char *word, int list)
|
|||||||
if (el_insertstr(el, " ") == -1)
|
if (el_insertstr(el, " ") == -1)
|
||||||
rv = CC_ERROR;
|
rv = CC_ERROR;
|
||||||
}
|
}
|
||||||
sl_free(words, 0);
|
sl_free(words, 1);
|
||||||
return (rv);
|
return (rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,7 +200,7 @@ complete_local(char *word, int list)
|
|||||||
if ((dd = opendir(dir)) == NULL)
|
if ((dd = opendir(dir)) == NULL)
|
||||||
return (CC_ERROR);
|
return (CC_ERROR);
|
||||||
|
|
||||||
words = xsl_init();
|
words = ftp_sl_init();
|
||||||
len = strlen(file);
|
len = strlen(file);
|
||||||
|
|
||||||
for (dp = readdir(dd); dp != NULL; dp = readdir(dd)) {
|
for (dp = readdir(dd); dp != NULL; dp = readdir(dd)) {
|
||||||
@ -217,8 +217,8 @@ complete_local(char *word, int list)
|
|||||||
if (strncmp(file, dp->d_name, len) == 0) {
|
if (strncmp(file, dp->d_name, len) == 0) {
|
||||||
char *tcp;
|
char *tcp;
|
||||||
|
|
||||||
tcp = xstrdup(dp->d_name);
|
tcp = ftp_strdup(dp->d_name);
|
||||||
xsl_add(words, tcp);
|
ftp_sl_add(words, tcp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
closedir(dd);
|
closedir(dd);
|
||||||
@ -255,14 +255,14 @@ complete_option(char *word, int list)
|
|||||||
size_t wordlen;
|
size_t wordlen;
|
||||||
unsigned char rv;
|
unsigned char rv;
|
||||||
|
|
||||||
words = xsl_init();
|
words = ftp_sl_init();
|
||||||
wordlen = strlen(word);
|
wordlen = strlen(word);
|
||||||
|
|
||||||
for (o = optiontab; o->name != NULL; o++) {
|
for (o = optiontab; o->name != NULL; o++) {
|
||||||
if (wordlen > strlen(o->name))
|
if (wordlen > strlen(o->name))
|
||||||
continue;
|
continue;
|
||||||
if (strncmp(word, o->name, wordlen) == 0)
|
if (strncmp(word, o->name, wordlen) == 0)
|
||||||
xsl_add(words, o->name);
|
ftp_sl_add(words, ftp_strdup(o->name));
|
||||||
}
|
}
|
||||||
|
|
||||||
rv = complete_ambiguous(word, list, words);
|
rv = complete_ambiguous(word, list, words);
|
||||||
@ -270,7 +270,7 @@ complete_option(char *word, int list)
|
|||||||
if (el_insertstr(el, " ") == -1)
|
if (el_insertstr(el, " ") == -1)
|
||||||
rv = CC_ERROR;
|
rv = CC_ERROR;
|
||||||
}
|
}
|
||||||
sl_free(words, 0);
|
sl_free(words, 1);
|
||||||
return (rv);
|
return (rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -285,10 +285,13 @@ complete_remote(char *word, int list)
|
|||||||
StringList *words;
|
StringList *words;
|
||||||
char dir[MAXPATHLEN];
|
char dir[MAXPATHLEN];
|
||||||
char *file, *cp;
|
char *file, *cp;
|
||||||
int i;
|
size_t i;
|
||||||
unsigned char rv;
|
unsigned char rv;
|
||||||
|
char cmdbuf[MAX_C_NAME];
|
||||||
|
char *dummyargv[3] = { NULL, NULL, NULL };
|
||||||
|
|
||||||
char *dummyargv[] = { "complete", NULL, NULL };
|
(void)strlcpy(cmdbuf, "complete", sizeof(cmdbuf));
|
||||||
|
dummyargv[0] = cmdbuf;
|
||||||
dummyargv[1] = dir;
|
dummyargv[1] = dir;
|
||||||
|
|
||||||
if ((file = strrchr(word, '/')) == NULL) {
|
if ((file = strrchr(word, '/')) == NULL) {
|
||||||
@ -304,11 +307,11 @@ complete_remote(char *word, int list)
|
|||||||
|
|
||||||
if (dirchange || dirlist == NULL ||
|
if (dirchange || dirlist == NULL ||
|
||||||
strcmp(dir, lastdir) != 0) { /* dir not cached */
|
strcmp(dir, lastdir) != 0) { /* dir not cached */
|
||||||
char *emesg;
|
const char *emesg;
|
||||||
|
|
||||||
if (dirlist != NULL)
|
if (dirlist != NULL)
|
||||||
sl_free(dirlist, 1);
|
sl_free(dirlist, 1);
|
||||||
dirlist = xsl_init();
|
dirlist = ftp_sl_init();
|
||||||
|
|
||||||
mflag = 1;
|
mflag = 1;
|
||||||
emesg = NULL;
|
emesg = NULL;
|
||||||
@ -326,8 +329,8 @@ complete_remote(char *word, int list)
|
|||||||
tcp++;
|
tcp++;
|
||||||
else
|
else
|
||||||
tcp = cp;
|
tcp = cp;
|
||||||
tcp = xstrdup(tcp);
|
tcp = ftp_strdup(tcp);
|
||||||
xsl_add(dirlist, tcp);
|
ftp_sl_add(dirlist, tcp);
|
||||||
}
|
}
|
||||||
if (emesg != NULL) {
|
if (emesg != NULL) {
|
||||||
fprintf(ttyout, "\n%s\n", emesg);
|
fprintf(ttyout, "\n%s\n", emesg);
|
||||||
@ -337,13 +340,13 @@ complete_remote(char *word, int list)
|
|||||||
dirchange = 0;
|
dirchange = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
words = xsl_init();
|
words = ftp_sl_init();
|
||||||
for (i = 0; i < dirlist->sl_cur; i++) {
|
for (i = 0; i < dirlist->sl_cur; i++) {
|
||||||
cp = dirlist->sl_str[i];
|
cp = dirlist->sl_str[i];
|
||||||
if (strlen(file) > strlen(cp))
|
if (strlen(file) > strlen(cp))
|
||||||
continue;
|
continue;
|
||||||
if (strncmp(file, cp, strlen(file)) == 0)
|
if (strncmp(file, cp, strlen(file)) == 0)
|
||||||
xsl_add(words, cp);
|
ftp_sl_add(words, cp);
|
||||||
}
|
}
|
||||||
rv = complete_ambiguous(file, list, words);
|
rv = complete_ambiguous(file, list, words);
|
||||||
sl_free(words, 0);
|
sl_free(words, 0);
|
||||||
@ -354,17 +357,17 @@ complete_remote(char *word, int list)
|
|||||||
* Generic complete routine
|
* Generic complete routine
|
||||||
*/
|
*/
|
||||||
unsigned char
|
unsigned char
|
||||||
complete(EditLine *el, int ch)
|
complete(EditLine *cel, int ch)
|
||||||
{
|
{
|
||||||
static char word[FTPBUFLEN];
|
static char word[FTPBUFLEN];
|
||||||
static int lastc_argc, lastc_argo;
|
static size_t lastc_argc, lastc_argo;
|
||||||
|
|
||||||
struct cmd *c;
|
struct cmd *c;
|
||||||
const LineInfo *lf;
|
const LineInfo *lf;
|
||||||
int celems, dolist, cmpltype;
|
int dolist, cmpltype;
|
||||||
size_t len;
|
size_t celems, len;
|
||||||
|
|
||||||
lf = el_line(el);
|
lf = el_line(cel);
|
||||||
len = lf->lastchar - lf->buffer;
|
len = lf->lastchar - lf->buffer;
|
||||||
if (len >= sizeof(line))
|
if (len >= sizeof(line))
|
||||||
return (CC_ERROR);
|
return (CC_ERROR);
|
||||||
@ -383,7 +386,7 @@ complete(EditLine *el, int ch)
|
|||||||
&& strncmp(word, margv[cursor_argc] ? margv[cursor_argc] : "",
|
&& strncmp(word, margv[cursor_argc] ? margv[cursor_argc] : "",
|
||||||
cursor_argo) == 0)
|
cursor_argo) == 0)
|
||||||
dolist = 1;
|
dolist = 1;
|
||||||
else if (cursor_argc < margc)
|
else if (cursor_argc < (size_t)margc)
|
||||||
(void)strlcpy(word, margv[cursor_argc], cursor_argo + 1);
|
(void)strlcpy(word, margv[cursor_argc], cursor_argo + 1);
|
||||||
word[cursor_argo] = '\0';
|
word[cursor_argo] = '\0';
|
||||||
|
|
||||||
@ -426,7 +429,8 @@ complete(EditLine *el, int ch)
|
|||||||
}
|
}
|
||||||
return (complete_remote(word, dolist));
|
return (complete_remote(word, dolist));
|
||||||
default:
|
default:
|
||||||
errx(1, "unknown complete type `%c'", cmpltype);
|
errx(1, "complete: unknown complete type `%c'",
|
||||||
|
cmpltype);
|
||||||
return (CC_ERROR);
|
return (CC_ERROR);
|
||||||
}
|
}
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/* $NetBSD: domacro.c,v 1.20 2003/08/07 11:13:53 agc Exp $ */
|
/* $NetBSD: domacro.c,v 1.8 2009/05/20 12:53:47 lukem Exp $ */
|
||||||
|
/* from NetBSD: domacro.c,v 1.22 2009/04/12 10:18:52 lukem Exp */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1985, 1993, 1994
|
* Copyright (c) 1985, 1993, 1994
|
||||||
@ -29,12 +30,16 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "tnftp.h"
|
||||||
|
|
||||||
|
#if 0 /* tnftp */
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)domacro.c 8.3 (Berkeley) 4/2/94";
|
static char sccsid[] = "@(#)domacro.c 8.3 (Berkeley) 4/2/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: domacro.c,v 1.20 2003/08/07 11:13:53 agc Exp $");
|
__RCSID(" NetBSD: domacro.c,v 1.22 2009/04/12 10:18:52 lukem Exp ");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
@ -42,6 +47,8 @@ __RCSID("$NetBSD: domacro.c,v 1.20 2003/08/07 11:13:53 agc Exp $");
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#endif /* tnftp */
|
||||||
|
|
||||||
#include "ftp_var.h"
|
#include "ftp_var.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -50,10 +57,11 @@ domacro(int argc, char *argv[])
|
|||||||
int i, j, count = 2, loopflg = 0;
|
int i, j, count = 2, loopflg = 0;
|
||||||
char *cp1, *cp2, line2[FTPBUFLEN];
|
char *cp1, *cp2, line2[FTPBUFLEN];
|
||||||
struct cmd *c;
|
struct cmd *c;
|
||||||
|
char cmdbuf[MAX_C_NAME];
|
||||||
|
|
||||||
if ((argc == 0 && argv != NULL) ||
|
if ((argc == 0 && argv != NULL) ||
|
||||||
(argc < 2 && !another(&argc, &argv, "macro name"))) {
|
(argc < 2 && !another(&argc, &argv, "macro name"))) {
|
||||||
fprintf(ttyout, "usage: %s macro_name [args]\n", argv[0]);
|
UPRINTF("usage: %s macro_name [args]\n", argv[0]);
|
||||||
code = -1;
|
code = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -126,7 +134,8 @@ domacro(int argc, char *argv[])
|
|||||||
fputs(line, ttyout);
|
fputs(line, ttyout);
|
||||||
putc('\n', ttyout);
|
putc('\n', ttyout);
|
||||||
}
|
}
|
||||||
margv[0] = c->c_name;
|
(void)strlcpy(cmdbuf, c->c_name, sizeof(cmdbuf));
|
||||||
|
margv[0] = cmdbuf;
|
||||||
(*c->c_handler)(margc, margv);
|
(*c->c_handler)(margc, margv);
|
||||||
if (bell && c->c_bell)
|
if (bell && c->c_bell)
|
||||||
(void)putc('\007', ttyout);
|
(void)putc('\007', ttyout);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
/* $NetBSD: extern.h,v 1.67 2005/05/14 15:26:43 lukem Exp $ */
|
/* $NetBSD: extern.h,v 1.12 2009/11/15 10:12:37 lukem Exp $ */
|
||||||
|
/* from NetBSD: extern.h,v 1.77 2009/07/13 19:05:41 roy Exp */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1996-2005 The NetBSD Foundation, Inc.
|
* Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
* This code is derived from software contributed to The NetBSD Foundation
|
||||||
@ -15,13 +16,6 @@
|
|||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
@ -118,7 +112,7 @@ void cmdabort(int);
|
|||||||
void cmdtimeout(int);
|
void cmdtimeout(int);
|
||||||
void cmdscanner(void);
|
void cmdscanner(void);
|
||||||
int command(const char *, ...)
|
int command(const char *, ...)
|
||||||
__attribute__((__format__(__printf__, 1, 2)));
|
;
|
||||||
#ifndef NO_EDITCOMPLETE
|
#ifndef NO_EDITCOMPLETE
|
||||||
unsigned char complete(EditLine *, int);
|
unsigned char complete(EditLine *, int);
|
||||||
void controlediting(void);
|
void controlediting(void);
|
||||||
@ -141,6 +135,7 @@ int ftp_login(const char *, const char *, const char *);
|
|||||||
void get(int, char **);
|
void get(int, char **);
|
||||||
struct cmd *getcmd(const char *);
|
struct cmd *getcmd(const char *);
|
||||||
int getit(int, char **, int, const char *);
|
int getit(int, char **, int, const char *);
|
||||||
|
int get_line(FILE *, char *, size_t, const char **);
|
||||||
struct option *getoption(const char *);
|
struct option *getoption(const char *);
|
||||||
char *getoptionvalue(const char *);
|
char *getoptionvalue(const char *);
|
||||||
void getremoteinfo(void);
|
void getremoteinfo(void);
|
||||||
@ -148,7 +143,7 @@ int getreply(int);
|
|||||||
char *globulize(const char *);
|
char *globulize(const char *);
|
||||||
char *gunique(const char *);
|
char *gunique(const char *);
|
||||||
void help(int, char **);
|
void help(int, char **);
|
||||||
char *hookup(char *, char *);
|
char *hookup(const char *, const char *);
|
||||||
void idlecmd(int, char **);
|
void idlecmd(int, char **);
|
||||||
int initconn(void);
|
int initconn(void);
|
||||||
void intr(int);
|
void intr(int);
|
||||||
@ -159,22 +154,19 @@ void lostpeer(int);
|
|||||||
void lpage(int, char **);
|
void lpage(int, char **);
|
||||||
void lpwd(int, char **);
|
void lpwd(int, char **);
|
||||||
void ls(int, char **);
|
void ls(int, char **);
|
||||||
void mabort(void);
|
|
||||||
void macdef(int, char **);
|
void macdef(int, char **);
|
||||||
void makeargv(void);
|
void makeargv(void);
|
||||||
void makedir(int, char **);
|
void makedir(int, char **);
|
||||||
void mdelete(int, char **);
|
void mdelete(int, char **);
|
||||||
void mget(int, char **);
|
void mget(int, char **);
|
||||||
void mintr(int);
|
|
||||||
void mls(int, char **);
|
void mls(int, char **);
|
||||||
void mlst(int, char **);
|
void mlst(int, char **);
|
||||||
void modtime(int, char **);
|
void modtime(int, char **);
|
||||||
void mput(int, char **);
|
void mput(int, char **);
|
||||||
char *onoff(int);
|
const char *onoff(int);
|
||||||
void opts(int, char **);
|
void opts(int, char **);
|
||||||
void newer(int, char **);
|
void newer(int, char **);
|
||||||
void page(int, char **);
|
void page(int, char **);
|
||||||
int parseport(const char *, int);
|
|
||||||
int parserate(int, char **, int);
|
int parserate(int, char **, int);
|
||||||
char *prompt(void);
|
char *prompt(void);
|
||||||
void proxabort(int);
|
void proxabort(int);
|
||||||
@ -189,18 +181,18 @@ void quote1(const char *, int, char **);
|
|||||||
void recvrequest(const char *, const char *, const char *,
|
void recvrequest(const char *, const char *, const char *,
|
||||||
const char *, int, int);
|
const char *, int, int);
|
||||||
void reget(int, char **);
|
void reget(int, char **);
|
||||||
char *remglob(char **, int, char **);
|
char *remglob(char **, int, const char **);
|
||||||
time_t remotemodtime(const char *, int);
|
time_t remotemodtime(const char *, int);
|
||||||
off_t remotesize(const char *, int);
|
off_t remotesize(const char *, int);
|
||||||
void removedir(int, char **);
|
void removedir(int, char **);
|
||||||
void renamefile(int, char **);
|
void renamefile(int, char **);
|
||||||
void reset(int, char **);
|
void reset(int, char **);
|
||||||
void restart(int, char **);
|
void restart(int, char **);
|
||||||
|
const char *rfc2822time(const struct tm *);
|
||||||
void rmthelp(int, char **);
|
void rmthelp(int, char **);
|
||||||
void rmtstatus(int, char **);
|
void rmtstatus(int, char **);
|
||||||
char *rprompt(void);
|
char *rprompt(void);
|
||||||
int ruserpass(const char *, const char **, const char **,
|
int ruserpass(const char *, char **, char **, char **);
|
||||||
const char **);
|
|
||||||
void sendrequest(const char *, const char *, const char *, int);
|
void sendrequest(const char *, const char *, const char *, int);
|
||||||
void setascii(int, char **);
|
void setascii(int, char **);
|
||||||
void setbell(int, char **);
|
void setbell(int, char **);
|
||||||
@ -210,6 +202,8 @@ void setcr(int, char **);
|
|||||||
void setdebug(int, char **);
|
void setdebug(int, char **);
|
||||||
void setedit(int, char **);
|
void setedit(int, char **);
|
||||||
void setepsv4(int, char **);
|
void setepsv4(int, char **);
|
||||||
|
void setepsv6(int, char **);
|
||||||
|
void setepsv(int, char **);
|
||||||
void setform(int, char **);
|
void setform(int, char **);
|
||||||
void setftmode(int, char **);
|
void setftmode(int, char **);
|
||||||
void setgate(int, char **);
|
void setgate(int, char **);
|
||||||
@ -235,6 +229,7 @@ void settype(int, char **);
|
|||||||
void setupsockbufsize(int);
|
void setupsockbufsize(int);
|
||||||
void setverbose(int, char **);
|
void setverbose(int, char **);
|
||||||
void setxferbuf(int, char **);
|
void setxferbuf(int, char **);
|
||||||
|
void set_option(const char *, const char *, int);
|
||||||
void shell(int, char **);
|
void shell(int, char **);
|
||||||
void site(int, char **);
|
void site(int, char **);
|
||||||
void sizecmd(int, char **);
|
void sizecmd(int, char **);
|
||||||
@ -248,10 +243,10 @@ void updatelocalcwd(void);
|
|||||||
void updateremotecwd(void);
|
void updateremotecwd(void);
|
||||||
void usage(void);
|
void usage(void);
|
||||||
void user(int, char **);
|
void user(int, char **);
|
||||||
int xconnect(int, const struct sockaddr *, socklen_t);
|
int ftp_connect(int, const struct sockaddr *, socklen_t);
|
||||||
int xlisten(int, int);
|
int ftp_listen(int, int);
|
||||||
int xpoll(struct pollfd *, int, int);
|
int ftp_poll(struct pollfd *, int, int);
|
||||||
void *xmalloc(size_t);
|
void *ftp_malloc(size_t);
|
||||||
StringList *xsl_init(void);
|
StringList *ftp_sl_init(void);
|
||||||
void xsl_add(StringList *, char *);
|
void ftp_sl_add(StringList *, char *);
|
||||||
char *xstrdup(const char *);
|
char *ftp_strdup(const char *);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,7 @@
|
|||||||
.\" $NetBSD: ftp.1,v 1.109 2005/02/20 20:54:01 wiz Exp $
|
.\" $NetBSD: ftp.1,v 1.13 2009/11/15 10:12:37 lukem Exp $
|
||||||
|
.\" from NetBSD: ftp.1,v 1.130 2009/07/11 18:35:48 joerg Exp
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 1996-2004 The NetBSD Foundation, Inc.
|
.\" Copyright (c) 1996-2008 The NetBSD Foundation, Inc.
|
||||||
.\" All rights reserved.
|
.\" All rights reserved.
|
||||||
.\"
|
.\"
|
||||||
.\" This code is derived from software contributed to The NetBSD Foundation
|
.\" This code is derived from software contributed to The NetBSD Foundation
|
||||||
@ -14,13 +15,6 @@
|
|||||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||||
.\" notice, this list of conditions and the following disclaimer in the
|
.\" notice, this list of conditions and the following disclaimer in the
|
||||||
.\" documentation and/or other materials provided with the distribution.
|
.\" 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 NetBSD
|
|
||||||
.\" Foundation, Inc. and its contributors.
|
|
||||||
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
.\" contributors may be used to endorse or promote products derived
|
|
||||||
.\" from this software without specific prior written permission.
|
|
||||||
.\"
|
.\"
|
||||||
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
@ -64,16 +58,15 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" @(#)ftp.1 8.3 (Berkeley) 10/9/94
|
.\" @(#)ftp.1 8.3 (Berkeley) 10/9/94
|
||||||
.\"
|
.\"
|
||||||
.Dd January 15, 2005
|
.Dd May 10, 2008
|
||||||
.Dt FTP 1
|
.Dt FTP 1
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
.Nm ftp
|
.Nm ftp
|
||||||
.Nd
|
.Nd Internet file transfer program
|
||||||
Internet file transfer program
|
|
||||||
.Sh SYNOPSIS
|
.Sh SYNOPSIS
|
||||||
.Nm
|
.Nm
|
||||||
.Op Fl 46AadefginpRtvV
|
.Op Fl 46AadefginpRtVv
|
||||||
.Bk -words
|
.Bk -words
|
||||||
.Op Fl N Ar netrc
|
.Op Fl N Ar netrc
|
||||||
.Ek
|
.Ek
|
||||||
@ -89,6 +82,7 @@ Internet file transfer program
|
|||||||
.Bk -words
|
.Bk -words
|
||||||
.Op Fl r Ar retry
|
.Op Fl r Ar retry
|
||||||
.Ek
|
.Ek
|
||||||
|
.Op Fl s Ar srcaddr
|
||||||
.Bk -words
|
.Bk -words
|
||||||
.\" [-T dir,max[,inc]]
|
.\" [-T dir,max[,inc]]
|
||||||
.Oo
|
.Oo
|
||||||
@ -179,7 +173,7 @@ below for more information.
|
|||||||
.Pp
|
.Pp
|
||||||
Options may be specified at the command line, or to the
|
Options may be specified at the command line, or to the
|
||||||
command interpreter.
|
command interpreter.
|
||||||
.Bl -tag -width "port "
|
.Bl -tag -width Fl
|
||||||
.It Fl 4
|
.It Fl 4
|
||||||
Forces
|
Forces
|
||||||
.Nm
|
.Nm
|
||||||
@ -219,6 +213,14 @@ Disables file name globbing.
|
|||||||
.It Fl i
|
.It Fl i
|
||||||
Turns off interactive prompting during
|
Turns off interactive prompting during
|
||||||
multiple file transfers.
|
multiple file transfers.
|
||||||
|
.It Fl N Ar netrc
|
||||||
|
Use
|
||||||
|
.Ar netrc
|
||||||
|
instead of
|
||||||
|
.Pa ~/.netrc .
|
||||||
|
Refer to
|
||||||
|
.Sx THE .netrc FILE
|
||||||
|
for more information.
|
||||||
.It Fl n
|
.It Fl n
|
||||||
Restrains
|
Restrains
|
||||||
.Nm
|
.Nm
|
||||||
@ -238,14 +240,6 @@ identity on the local machine), and, if necessary, prompt for a password
|
|||||||
and an account with which to login.
|
and an account with which to login.
|
||||||
To override the auto-login for auto-fetch transfers, specify the
|
To override the auto-login for auto-fetch transfers, specify the
|
||||||
username (and optionally, password) as appropriate.
|
username (and optionally, password) as appropriate.
|
||||||
.It Fl N Ar netrc
|
|
||||||
Use
|
|
||||||
.Ar netrc
|
|
||||||
instead of
|
|
||||||
.Pa ~/.netrc .
|
|
||||||
Refer to
|
|
||||||
.Sx THE .netrc FILE
|
|
||||||
for more information.
|
|
||||||
.It Fl o Ar output
|
.It Fl o Ar output
|
||||||
When auto-fetching files, save the contents in
|
When auto-fetching files, save the contents in
|
||||||
.Ar output .
|
.Ar output .
|
||||||
@ -263,35 +257,32 @@ then only the first file specified will be retrieved into
|
|||||||
.Ar output ;
|
.Ar output ;
|
||||||
all other files will be retrieved into the basename of their
|
all other files will be retrieved into the basename of their
|
||||||
remote name.
|
remote name.
|
||||||
|
.It Fl P Ar port
|
||||||
|
Sets the port number to
|
||||||
|
.Ar port .
|
||||||
.It Fl p
|
.It Fl p
|
||||||
Enable passive mode operation for use behind connection filtering firewalls.
|
Enable passive mode operation for use behind connection filtering firewalls.
|
||||||
This option has been deprecated as
|
This option has been deprecated as
|
||||||
.Nm
|
.Nm
|
||||||
now tries to use passive mode by default, falling back to active mode
|
now tries to use passive mode by default, falling back to active mode
|
||||||
if the server does not support passive connections.
|
if the server does not support passive connections.
|
||||||
.It Fl P Ar port
|
|
||||||
Sets the port number to
|
|
||||||
.Ar port .
|
|
||||||
.It Fl r Ar wait
|
|
||||||
Retry the connection attempt if it failed, pausing for
|
|
||||||
.Ar wait
|
|
||||||
seconds.
|
|
||||||
.It Fl q Ar quittime
|
.It Fl q Ar quittime
|
||||||
Quit if the connection has stalled for
|
Quit if the connection has stalled for
|
||||||
.Ar quittime
|
.Ar quittime
|
||||||
seconds.
|
seconds.
|
||||||
.It Fl R
|
.It Fl R
|
||||||
Restart all non-proxied auto-fetches.
|
Restart all non-proxied auto-fetches.
|
||||||
|
.It Fl r Ar wait
|
||||||
|
Retry the connection attempt if it failed, pausing for
|
||||||
|
.Ar wait
|
||||||
|
seconds.
|
||||||
|
.It Fl s Ar srcaddr
|
||||||
|
Uses
|
||||||
|
.Ar srcaddr
|
||||||
|
as the local IP address for all connections.
|
||||||
.It Fl t
|
.It Fl t
|
||||||
Enables packet tracing.
|
Enables packet tracing.
|
||||||
.It Xo
|
.It Fl T Ar direction Ns , Ns Ar maximum Ns Oo , Ns Ar increment Oc
|
||||||
.Fl T
|
|
||||||
.Sm off
|
|
||||||
.Ar direction ,
|
|
||||||
.Ar maximum
|
|
||||||
.Op , Ar increment
|
|
||||||
.Sm on
|
|
||||||
.Xc
|
|
||||||
Set the maximum transfer rate for
|
Set the maximum transfer rate for
|
||||||
.Ar direction
|
.Ar direction
|
||||||
to
|
to
|
||||||
@ -312,6 +303,12 @@ is one of the ftp URL types as supported by auto-fetch
|
|||||||
(with an optional target filename for single file uploads), and
|
(with an optional target filename for single file uploads), and
|
||||||
.Ar file
|
.Ar file
|
||||||
is one or more local files to be uploaded.
|
is one or more local files to be uploaded.
|
||||||
|
.It Fl V
|
||||||
|
Disable
|
||||||
|
.Ic verbose
|
||||||
|
and
|
||||||
|
.Ic progress ,
|
||||||
|
overriding the default of enabled when output is to a terminal.
|
||||||
.It Fl v
|
.It Fl v
|
||||||
Enable
|
Enable
|
||||||
.Ic verbose
|
.Ic verbose
|
||||||
@ -325,12 +322,6 @@ Forces
|
|||||||
.Nm
|
.Nm
|
||||||
to show all responses from the remote server, as well
|
to show all responses from the remote server, as well
|
||||||
as report on data transfer statistics.
|
as report on data transfer statistics.
|
||||||
.It Fl V
|
|
||||||
Disable
|
|
||||||
.Ic verbose
|
|
||||||
and
|
|
||||||
.Ic progress ,
|
|
||||||
overriding the default of enabled when output is to a terminal.
|
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
The client host with which
|
The client host with which
|
||||||
@ -351,8 +342,8 @@ is awaiting commands from the user the prompt
|
|||||||
is provided to the user.
|
is provided to the user.
|
||||||
The following commands are recognized
|
The following commands are recognized
|
||||||
by
|
by
|
||||||
.Nm ftp :
|
.Nm ftp :
|
||||||
.Bl -tag -width Fl
|
.Bl -tag -width Ic
|
||||||
.It Ic \&! Op Ar command Op Ar args
|
.It Ic \&! Op Ar command Op Ar args
|
||||||
Invoke an interactive shell on the local machine.
|
Invoke an interactive shell on the local machine.
|
||||||
If there are arguments, the first is taken to be a command to execute
|
If there are arguments, the first is taken to be a command to execute
|
||||||
@ -455,16 +446,6 @@ when an ascii type transfer is made, these linefeeds may be
|
|||||||
distinguished from a record delimiter only when
|
distinguished from a record delimiter only when
|
||||||
.Ic \&cr
|
.Ic \&cr
|
||||||
is off.
|
is off.
|
||||||
.It Ic debug Op Ar debug-value
|
|
||||||
Toggle debugging mode.
|
|
||||||
If an optional
|
|
||||||
.Ar debug-value
|
|
||||||
is specified it is used to set the debugging level.
|
|
||||||
When debugging is on,
|
|
||||||
.Nm
|
|
||||||
prints each command sent to the remote machine, preceded
|
|
||||||
by the string
|
|
||||||
.Ql \-\-\*[Gt]
|
|
||||||
.It Ic delete Ar remote-file
|
.It Ic delete Ar remote-file
|
||||||
Delete the file
|
Delete the file
|
||||||
.Ar remote-file
|
.Ar remote-file
|
||||||
@ -500,12 +481,13 @@ Toggle command line editing, and context sensitive command and file
|
|||||||
completion.
|
completion.
|
||||||
This is automatically enabled if input is from a terminal, and
|
This is automatically enabled if input is from a terminal, and
|
||||||
disabled otherwise.
|
disabled otherwise.
|
||||||
.It Ic epsv4
|
.It Ic epsv epsv4 epsv6
|
||||||
Toggle the use of the extended
|
Toggle the use of the extended
|
||||||
.Dv EPSV
|
.Dv EPSV
|
||||||
and
|
and
|
||||||
.Dv EPRT
|
.Dv EPRT
|
||||||
commands on IPv4 connections; first try
|
commands on all IP, IPv4, and IPv6 connections respectively.
|
||||||
|
First try
|
||||||
.Dv EPSV /
|
.Dv EPSV /
|
||||||
.Dv EPRT ,
|
.Dv EPRT ,
|
||||||
and then
|
and then
|
||||||
@ -514,7 +496,10 @@ and then
|
|||||||
This is enabled by default.
|
This is enabled by default.
|
||||||
If an extended command fails then this option will be temporarily
|
If an extended command fails then this option will be temporarily
|
||||||
disabled for the duration of the current connection, or until
|
disabled for the duration of the current connection, or until
|
||||||
.Ic epsv4
|
.Ic epsv ,
|
||||||
|
.Ic epsv4 ,
|
||||||
|
or
|
||||||
|
.Ic epsv6
|
||||||
is executed again.
|
is executed again.
|
||||||
.It Ic exit
|
.It Ic exit
|
||||||
A synonym for
|
A synonym for
|
||||||
@ -538,6 +523,16 @@ format is
|
|||||||
.It Ic ftp Ar host Op Ar port
|
.It Ic ftp Ar host Op Ar port
|
||||||
A synonym for
|
A synonym for
|
||||||
.Ic open .
|
.Ic open .
|
||||||
|
.It Ic ftp_debug Op Ar ftp_debug-value
|
||||||
|
Toggle debugging mode.
|
||||||
|
If an optional
|
||||||
|
.Ar ftp_debug-value
|
||||||
|
is specified it is used to set the debugging level.
|
||||||
|
When debugging is on,
|
||||||
|
.Nm
|
||||||
|
prints each command sent to the remote machine, preceded
|
||||||
|
by the string
|
||||||
|
.Ql \-\-\*[Gt] .
|
||||||
.It Ic gate Op Ar host Op Ar port
|
.It Ic gate Op Ar host Op Ar port
|
||||||
Toggle gate-ftp mode, which used to connect through the
|
Toggle gate-ftp mode, which used to connect through the
|
||||||
TIS FWTK and Gauntlet ftp proxies.
|
TIS FWTK and Gauntlet ftp proxies.
|
||||||
@ -613,8 +608,9 @@ transferring a
|
|||||||
.Xr tar 1
|
.Xr tar 1
|
||||||
archive of the subtree (in binary mode).
|
archive of the subtree (in binary mode).
|
||||||
.It Ic hash Op Ar size
|
.It Ic hash Op Ar size
|
||||||
Toggle hash-sign (``#'') printing for each data block
|
Toggle hash-sign
|
||||||
transferred.
|
.Pq Sq #
|
||||||
|
printing for each data block transferred.
|
||||||
The size of a data block defaults to 1024 bytes.
|
The size of a data block defaults to 1024 bytes.
|
||||||
This can be changed by specifying
|
This can be changed by specifying
|
||||||
.Ar size
|
.Ar size
|
||||||
@ -663,24 +659,49 @@ A synonym for
|
|||||||
Define a macro.
|
Define a macro.
|
||||||
Subsequent lines are stored as the macro
|
Subsequent lines are stored as the macro
|
||||||
.Ar macro-name ;
|
.Ar macro-name ;
|
||||||
a null line (consecutive newline characters
|
a null line (consecutive newline characters in a file or carriage
|
||||||
in a file or
|
returns from the terminal) terminates macro input mode.
|
||||||
carriage returns from the terminal) terminates macro input mode.
|
|
||||||
There is a limit of 16 macros and 4096 total characters in all
|
There is a limit of 16 macros and 4096 total characters in all
|
||||||
defined macros.
|
defined macros.
|
||||||
Macros remain defined until a
|
Macro names can be a maximum of 8 characters.
|
||||||
|
Macros are only applicable to the current session they are
|
||||||
|
defined within (or if defined outside a session, to the session
|
||||||
|
invoked with the next
|
||||||
|
.Ic open
|
||||||
|
command), and remain defined until a
|
||||||
.Ic close
|
.Ic close
|
||||||
command is executed.
|
command is executed.
|
||||||
The macro processor interprets `$' and `\e' as special characters.
|
To invoke a macro, use the
|
||||||
A `$' followed by a number (or numbers) is replaced by the
|
.Ic $
|
||||||
|
command (see above).
|
||||||
|
.Pp
|
||||||
|
The macro processor interprets
|
||||||
|
.Sq $
|
||||||
|
and
|
||||||
|
.Sq \e
|
||||||
|
as special characters.
|
||||||
|
A
|
||||||
|
.Sq $
|
||||||
|
followed by a number (or numbers) is replaced by the
|
||||||
corresponding argument on the macro invocation command line.
|
corresponding argument on the macro invocation command line.
|
||||||
A `$' followed by an `i' signals that macro processor that the
|
A
|
||||||
executing macro is to be looped.
|
.Sq $
|
||||||
On the first pass `$i' is
|
followed by an
|
||||||
replaced by the first argument on the macro invocation command line,
|
.Sq i
|
||||||
on the second pass it is replaced by the second argument, and so on.
|
signals the macro processor that the executing macro is to be
|
||||||
A `\e' followed by any character is replaced by that character.
|
looped.
|
||||||
Use the `\e' to prevent special treatment of the `$'.
|
On the first pass
|
||||||
|
.Dq $i
|
||||||
|
is replaced by the first argument on the macro invocation command
|
||||||
|
line, on the second pass it is replaced by the second argument,
|
||||||
|
and so on.
|
||||||
|
A
|
||||||
|
.Sq \e
|
||||||
|
followed by any character is replaced by that character.
|
||||||
|
Use the
|
||||||
|
.Sq \e
|
||||||
|
to prevent special treatment of the
|
||||||
|
.Sq $ .
|
||||||
.It Ic mdelete Op Ar remote-files
|
.It Ic mdelete Op Ar remote-files
|
||||||
Delete the
|
Delete the
|
||||||
.Ar remote-files
|
.Ar remote-files
|
||||||
@ -756,7 +777,9 @@ The default (and only supported)
|
|||||||
mode is
|
mode is
|
||||||
.Dq stream .
|
.Dq stream .
|
||||||
.It Ic modtime Ar remote-file
|
.It Ic modtime Ar remote-file
|
||||||
Show the last modification time of the file on the remote machine.
|
Show the last modification time of the file on the remote machine, in
|
||||||
|
.Li RFC2822
|
||||||
|
format.
|
||||||
.It Ic more Ar file
|
.It Ic more Ar file
|
||||||
A synonym for
|
A synonym for
|
||||||
.Ic page .
|
.Ic page .
|
||||||
@ -823,9 +846,18 @@ and
|
|||||||
.Ic case
|
.Ic case
|
||||||
settings).
|
settings).
|
||||||
Variable templating is accomplished by including the
|
Variable templating is accomplished by including the
|
||||||
sequences `$1', `$2', ..., `$9' in
|
sequences
|
||||||
|
.Dq $1 ,
|
||||||
|
.Dq $2 ,
|
||||||
|
\&...
|
||||||
|
.Dq $9
|
||||||
|
in
|
||||||
.Ar inpattern .
|
.Ar inpattern .
|
||||||
Use `\\' to prevent this special treatment of the `$' character.
|
Use
|
||||||
|
.Sq \e
|
||||||
|
to prevent this special treatment of the
|
||||||
|
.Sq $
|
||||||
|
character.
|
||||||
All other characters are treated literally, and are used to determine the
|
All other characters are treated literally, and are used to determine the
|
||||||
.Ic nmap
|
.Ic nmap
|
||||||
.Op Ar inpattern
|
.Op Ar inpattern
|
||||||
@ -837,13 +869,19 @@ $1.$2 and the remote file name "mydata.data", $1 would have the value
|
|||||||
The
|
The
|
||||||
.Ar outpattern
|
.Ar outpattern
|
||||||
determines the resulting mapped filename.
|
determines the resulting mapped filename.
|
||||||
The sequences `$1', `$2', ...., `$9' are replaced by any value resulting
|
The sequences
|
||||||
from the
|
.Dq $1 ,
|
||||||
|
.Dq $2 ,
|
||||||
|
\&...
|
||||||
|
.Dq $9
|
||||||
|
are replaced by any value resulting from the
|
||||||
.Ar inpattern
|
.Ar inpattern
|
||||||
template.
|
template.
|
||||||
The sequence `$0' is replace by the original filename.
|
The sequence
|
||||||
|
.Dq $0
|
||||||
|
is replaced by the original filename.
|
||||||
Additionally, the sequence
|
Additionally, the sequence
|
||||||
.Ql Op Ar seq1 , Ar seq2
|
.Dq Op Ar seq1 , Ar seq2
|
||||||
is replaced by
|
is replaced by
|
||||||
.Op Ar seq1
|
.Op Ar seq1
|
||||||
if
|
if
|
||||||
@ -862,9 +900,18 @@ the output filename "myfile.data" for input filenames "myfile.data" and
|
|||||||
"myfile.myfile" for the input filename ".myfile".
|
"myfile.myfile" for the input filename ".myfile".
|
||||||
Spaces may be included in
|
Spaces may be included in
|
||||||
.Ar outpattern ,
|
.Ar outpattern ,
|
||||||
as in the example: `nmap $1 sed "s/ *$//" \*[Gt] $1' .
|
as in the example:
|
||||||
Use the `\e' character to prevent special treatment
|
.Dl nmap $1 sed "s/ *$//" \*[Gt] $1
|
||||||
of the `$','[',']', and `,' characters.
|
Use the
|
||||||
|
.Sq \e
|
||||||
|
character to prevent special treatment
|
||||||
|
of the
|
||||||
|
.Sq $ ,
|
||||||
|
.Sq \&[ ,
|
||||||
|
.Sq \&] ,
|
||||||
|
and
|
||||||
|
.Sq \&,
|
||||||
|
characters.
|
||||||
.It Ic ntrans Op Ar inchars Op Ar outchars
|
.It Ic ntrans Op Ar inchars Op Ar outchars
|
||||||
Set or unset the filename character translation mechanism.
|
Set or unset the filename character translation mechanism.
|
||||||
If no arguments are specified, the filename character
|
If no arguments are specified, the filename character
|
||||||
@ -952,7 +999,7 @@ traffic.
|
|||||||
servers are required to support the
|
servers are required to support the
|
||||||
.Dv PASV
|
.Dv PASV
|
||||||
command by
|
command by
|
||||||
.Li RFC 1123 ,
|
.Li RFC1123 ,
|
||||||
some do not.)
|
some do not.)
|
||||||
.It Ic pdir Op Ar remote-path
|
.It Ic pdir Op Ar remote-path
|
||||||
Perform
|
Perform
|
||||||
@ -1100,10 +1147,7 @@ A synonym for
|
|||||||
The arguments specified are sent, verbatim, to the remote
|
The arguments specified are sent, verbatim, to the remote
|
||||||
.Tn FTP
|
.Tn FTP
|
||||||
server.
|
server.
|
||||||
.It Xo
|
.It Ic rate Ar direction Oo Ar maximum Oo Ar increment Oc Oc
|
||||||
.Ic rate Ar direction
|
|
||||||
.Op Ar maximum Op Ar increment
|
|
||||||
.Xc
|
|
||||||
Throttle the maximum transfer rate to
|
Throttle the maximum transfer rate to
|
||||||
.Ar maximum
|
.Ar maximum
|
||||||
bytes/second.
|
bytes/second.
|
||||||
@ -1126,7 +1170,6 @@ Outgoing transfers.
|
|||||||
can be modified on the fly by
|
can be modified on the fly by
|
||||||
.Ar increment
|
.Ar increment
|
||||||
bytes (default: 1024) each time a given signal is received:
|
bytes (default: 1024) each time a given signal is received:
|
||||||
.B
|
|
||||||
.Bl -tag -width "SIGUSR1" -offset indent
|
.Bl -tag -width "SIGUSR1" -offset indent
|
||||||
.It Dv SIGUSR1
|
.It Dv SIGUSR1
|
||||||
Increment
|
Increment
|
||||||
@ -1388,10 +1431,7 @@ for more information.
|
|||||||
.It Ic usage Ar command
|
.It Ic usage Ar command
|
||||||
Print the usage message for
|
Print the usage message for
|
||||||
.Ar command .
|
.Ar command .
|
||||||
.It Xo
|
.It Ic user Ar user-name Oo Ar password Oo Ar account Oc Oc
|
||||||
.Ic user Ar user-name
|
|
||||||
.Op Ar password Op Ar account
|
|
||||||
.Xc
|
|
||||||
Identify yourself to the remote
|
Identify yourself to the remote
|
||||||
.Tn FTP
|
.Tn FTP
|
||||||
server.
|
server.
|
||||||
@ -1439,7 +1479,9 @@ A synonym for
|
|||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
Command arguments which have embedded spaces may be quoted with
|
Command arguments which have embedded spaces may be quoted with
|
||||||
quote `"' marks.
|
quote
|
||||||
|
.Sq \&"
|
||||||
|
marks.
|
||||||
.Pp
|
.Pp
|
||||||
Commands which toggle settings can take an explicit
|
Commands which toggle settings can take an explicit
|
||||||
.Ic on
|
.Ic on
|
||||||
@ -1491,14 +1533,8 @@ on the command line.
|
|||||||
The following formats are valid syntax for an auto-fetch element:
|
The following formats are valid syntax for an auto-fetch element:
|
||||||
.Bl -tag -width "FOO "
|
.Bl -tag -width "FOO "
|
||||||
.\" [user@]host:[path][/]
|
.\" [user@]host:[path][/]
|
||||||
.It Xo
|
.It Oo Ar user Ns Li \&@ Oc Ns Ar host Ns Li \&: Ns Oo Ar path Oc \
|
||||||
.Sm off
|
Ns Oo Li / Oc
|
||||||
.Op Ar user Li \&@
|
|
||||||
.Ar host Li \&:
|
|
||||||
.Op Ar path
|
|
||||||
.Op Li /
|
|
||||||
.Sm on
|
|
||||||
.Xc
|
|
||||||
.Dq Classic
|
.Dq Classic
|
||||||
.Tn FTP
|
.Tn FTP
|
||||||
format.
|
format.
|
||||||
@ -1523,18 +1559,9 @@ in the current directory.
|
|||||||
Otherwise, the full remote name is used as the local name,
|
Otherwise, the full remote name is used as the local name,
|
||||||
relative to the local root directory.
|
relative to the local root directory.
|
||||||
.\" ftp://[user[:password]@]host[:port]/path[/][;type=X]
|
.\" ftp://[user[:password]@]host[:port]/path[/][;type=X]
|
||||||
.It Xo
|
.It Li ftp:// Ns Oo Ar user Ns Oo Ns Li \&: Ns Ar password Oc Ns Li \&@ Oc \
|
||||||
.Sm off
|
Ns Ar host Ns Oo Li \&: Ns Ar port Oc Ns Li / Ns Ar path Ns Oo Li / Oc \
|
||||||
.Li ftp://
|
Ns Oo Li ;type= Ns Ar X Oc
|
||||||
.Oo Ar user
|
|
||||||
.Op Li \&: Ar password
|
|
||||||
.Li \&@ Oc
|
|
||||||
.Ar host Oo Li \&: Ar port Oc
|
|
||||||
.Li / Ar path
|
|
||||||
.Op Li /
|
|
||||||
.Op Li ;type= Ar X
|
|
||||||
.Sm on
|
|
||||||
.Xc
|
|
||||||
An
|
An
|
||||||
.Tn FTP
|
.Tn FTP
|
||||||
URL, retrieved using the
|
URL, retrieved using the
|
||||||
@ -1565,7 +1592,7 @@ ascii or binary (respectively).
|
|||||||
The default transfer type is binary.
|
The default transfer type is binary.
|
||||||
.Pp
|
.Pp
|
||||||
In order to be compliant with
|
In order to be compliant with
|
||||||
.Li RFC 1738 ,
|
.Li RFC3986 ,
|
||||||
.Nm
|
.Nm
|
||||||
interprets the
|
interprets the
|
||||||
.Ar path
|
.Ar path
|
||||||
@ -1618,7 +1645,7 @@ Any
|
|||||||
.Sq Li \&% Ns Ar XX
|
.Sq Li \&% Ns Ar XX
|
||||||
codes
|
codes
|
||||||
(per
|
(per
|
||||||
.Li RFC 1738 )
|
.Li RFC3986 )
|
||||||
within the path components are decoded, with
|
within the path components are decoded, with
|
||||||
.Ar XX
|
.Ar XX
|
||||||
representing a character code in hexadecimal.
|
representing a character code in hexadecimal.
|
||||||
@ -1705,16 +1732,8 @@ intermediate directories that is used in the equivalent of a
|
|||||||
command.
|
command.
|
||||||
.El
|
.El
|
||||||
.\" http://[user[:password]@]host[:port]/path
|
.\" http://[user[:password]@]host[:port]/path
|
||||||
.It Xo
|
.It Li http:// Ns Oo Ar user Ns Oo Li \&: Ns Ar password Oc Ns Li \&@ Oc \
|
||||||
.Sm off
|
Ns Ar host Ns Oo Li \&: Ns Ar port Oc Ns Li / Ns Ar path
|
||||||
.Li http://
|
|
||||||
.Oo Ar user
|
|
||||||
.Op Li \&: Ar password
|
|
||||||
.Li \&@ Oc
|
|
||||||
.Ar host Oo Li \&: Ar port Oc
|
|
||||||
.Li / Ar path
|
|
||||||
.Sm on
|
|
||||||
.Xc
|
|
||||||
An
|
An
|
||||||
.Tn HTTP
|
.Tn HTTP
|
||||||
URL, retrieved using the
|
URL, retrieved using the
|
||||||
@ -1735,14 +1754,25 @@ and
|
|||||||
.Sq password )
|
.Sq password )
|
||||||
is in the URL, use them for the first attempt to authenticate.
|
is in the URL, use them for the first attempt to authenticate.
|
||||||
.\" file:///path
|
.\" file:///path
|
||||||
.It Xo
|
.It Li file:/// Ns Ar path
|
||||||
.Sm off
|
|
||||||
.Li file:/// Ar path
|
|
||||||
.Sm on
|
|
||||||
.Xc
|
|
||||||
A local URL, copied from
|
A local URL, copied from
|
||||||
.Pa / Ns Ar path
|
.Pa / Ns Ar path
|
||||||
on the local host.
|
on the local host.
|
||||||
|
.\" about:
|
||||||
|
.It Li about: Ns Ar topic
|
||||||
|
Display information regarding
|
||||||
|
.Ar topic ;
|
||||||
|
no file is retrieved for this auto-fetched element.
|
||||||
|
Supported values include:
|
||||||
|
.Bl -tag -width "about:version"
|
||||||
|
.It Li about:ftp
|
||||||
|
Information about
|
||||||
|
.Nm ftp .
|
||||||
|
.It Li about:version
|
||||||
|
The version of
|
||||||
|
.Nm ftp .
|
||||||
|
Useful to provide when reporting problems.
|
||||||
|
.El
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
Unless noted otherwise above, and
|
Unless noted otherwise above, and
|
||||||
@ -1868,11 +1898,12 @@ A particularly
|
|||||||
useful example of this mechanism is:
|
useful example of this mechanism is:
|
||||||
.Dq Li dir \&"\&" \&|more .
|
.Dq Li dir \&"\&" \&|more .
|
||||||
.It
|
.It
|
||||||
Failing the above checks, if ``globbing'' is enabled,
|
Failing the above checks, if
|
||||||
local file names are expanded
|
.Dq globbing
|
||||||
according to the rules used in the
|
is enabled, local file names are expanded according to the rules
|
||||||
|
used in the
|
||||||
.Xr csh 1 ;
|
.Xr csh 1 ;
|
||||||
c.f. the
|
see the
|
||||||
.Ic glob
|
.Ic glob
|
||||||
command.
|
command.
|
||||||
If the
|
If the
|
||||||
@ -2038,6 +2069,20 @@ next
|
|||||||
.Pa .netrc
|
.Pa .netrc
|
||||||
line and continue until a blank line (consecutive new-line
|
line and continue until a blank line (consecutive new-line
|
||||||
characters) is encountered.
|
characters) is encountered.
|
||||||
|
Like the other tokens in the
|
||||||
|
.Pa .netrc
|
||||||
|
file, a
|
||||||
|
.Ic macdef
|
||||||
|
is applicable only to the
|
||||||
|
.Ic machine
|
||||||
|
definition preceding it.
|
||||||
|
A
|
||||||
|
.Ic macdef
|
||||||
|
entry cannot be used by multiple
|
||||||
|
.Ic machine
|
||||||
|
definitions; rather, it must be defined following each
|
||||||
|
.Ic machine
|
||||||
|
it is intended to be used with.
|
||||||
If a macro named
|
If a macro named
|
||||||
.Ic init
|
.Ic init
|
||||||
is defined, it is automatically executed as the last step in the
|
is defined, it is automatically executed as the last step in the
|
||||||
@ -2100,14 +2145,7 @@ information:
|
|||||||
.It Li \&%/
|
.It Li \&%/
|
||||||
The current remote working directory.
|
The current remote working directory.
|
||||||
.\" %c[[0]n], %.[[0]n]
|
.\" %c[[0]n], %.[[0]n]
|
||||||
.It Xo
|
.It \&%c Ns Oo Oo Li 0 Oc Ns Ar n Oc , Ns Li \&%. Ns Oo Oo Li 0 Oc Ns Ar n Oc
|
||||||
.Sm off
|
|
||||||
.Li \&%c
|
|
||||||
.Op Oo Li 0 Oc Ar n Ns ,
|
|
||||||
.Li \&%.
|
|
||||||
.Op Oo Li 0 Oc Ar n
|
|
||||||
.Sm on
|
|
||||||
.Xc
|
|
||||||
The trailing component of the current remote working directory, or
|
The trailing component of the current remote working directory, or
|
||||||
.Em n
|
.Em n
|
||||||
trailing components if a digit
|
trailing components if a digit
|
||||||
@ -2248,7 +2286,7 @@ URL characters are required in the username or password
|
|||||||
or
|
or
|
||||||
.Sq / ) ,
|
.Sq / ) ,
|
||||||
encode them with
|
encode them with
|
||||||
.Li RFC 1738
|
.Li RFC3986
|
||||||
.Sq Li \&% Ns Ar XX
|
.Sq Li \&% Ns Ar XX
|
||||||
encoding.
|
encoding.
|
||||||
.Pp
|
.Pp
|
||||||
@ -2291,16 +2329,27 @@ for an example of how to make this automatic.
|
|||||||
.Xr ftpd 8
|
.Xr ftpd 8
|
||||||
.Sh STANDARDS
|
.Sh STANDARDS
|
||||||
.Nm
|
.Nm
|
||||||
attempts to be compliant with
|
attempts to be compliant with:
|
||||||
.Li RFC 959 ,
|
.Bl -tag -offset indent -width 8n
|
||||||
.Li RFC 1123 ,
|
.It Li RFC0959
|
||||||
.Li RFC 1738 ,
|
.Em File Transfer Protocol
|
||||||
.Li RFC 2068 ,
|
.It Li RFC1123
|
||||||
.Li RFC 2389 ,
|
.Em Requirements for Internet Hosts - Application and Support
|
||||||
.Li RFC 2428 ,
|
.It Li RFC1635
|
||||||
.Li RFC 2732 ,
|
.Em How to Use Anonymous FTP
|
||||||
and
|
.It Li RFC2389
|
||||||
.Cm draft-ietf-ftpext-mlst-11 .
|
.Em Feature negotiation mechanism for the File Transfer Protocol
|
||||||
|
.It Li RFC2428
|
||||||
|
.Em FTP Extensions for IPv6 and NATs
|
||||||
|
.It Li RFC2616
|
||||||
|
.Em Hypertext Transfer Protocol -- HTTP/1.1
|
||||||
|
.It Li RFC2822
|
||||||
|
.Em Internet Message Format
|
||||||
|
.It Li RFC3659
|
||||||
|
.Em Extensions to FTP
|
||||||
|
.It Li RFC3986
|
||||||
|
.Em Uniform Resource Identifier (URI)
|
||||||
|
.El
|
||||||
.Sh HISTORY
|
.Sh HISTORY
|
||||||
The
|
The
|
||||||
.Nm
|
.Nm
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,8 @@
|
|||||||
/* $NetBSD: ftp_var.h,v 1.71 2005/04/11 01:49:31 lukem Exp $ */
|
/* $NetBSD: ftp_var.h,v 1.10 2009/05/20 12:53:47 lukem Exp $ */
|
||||||
|
/* from NetBSD: ftp_var.h,v 1.81 2009/04/12 10:18:52 lukem Exp */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1996-2005 The NetBSD Foundation, Inc.
|
* Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
* This code is derived from software contributed to The NetBSD Foundation
|
||||||
@ -15,13 +16,6 @@
|
|||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
@ -107,6 +101,8 @@
|
|||||||
#define NO_PROGRESS
|
#define NO_PROGRESS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 0 /* tnftp */
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
@ -117,6 +113,8 @@
|
|||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
#include <stringlist.h>
|
#include <stringlist.h>
|
||||||
|
|
||||||
|
#endif /* tnftp */
|
||||||
|
|
||||||
#ifndef NO_EDITCOMPLETE
|
#ifndef NO_EDITCOMPLETE
|
||||||
#include <histedit.h>
|
#include <histedit.h>
|
||||||
#endif /* !NO_EDITCOMPLETE */
|
#endif /* !NO_EDITCOMPLETE */
|
||||||
@ -128,7 +126,7 @@
|
|||||||
* Format of command table.
|
* Format of command table.
|
||||||
*/
|
*/
|
||||||
struct cmd {
|
struct cmd {
|
||||||
char *c_name; /* name of command */
|
const char *c_name; /* name of command */
|
||||||
const char *c_help; /* help string */
|
const char *c_help; /* help string */
|
||||||
char c_bell; /* give bell when command completes */
|
char c_bell; /* give bell when command completes */
|
||||||
char c_conn; /* must be connected to use command */
|
char c_conn; /* must be connected to use command */
|
||||||
@ -139,6 +137,8 @@ struct cmd {
|
|||||||
void (*c_handler)(int, char **); /* function to call */
|
void (*c_handler)(int, char **); /* function to call */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define MAX_C_NAME 12 /* maximum length of cmd.c_name */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Format of macro table
|
* Format of macro table
|
||||||
*/
|
*/
|
||||||
@ -152,8 +152,8 @@ struct macel {
|
|||||||
* Format of option table
|
* Format of option table
|
||||||
*/
|
*/
|
||||||
struct option {
|
struct option {
|
||||||
char *name;
|
const char *name;
|
||||||
char *value;
|
char *value;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -210,14 +210,14 @@ GLOBAL int sendport; /* use PORT/LPRT cmd for each data connection */
|
|||||||
GLOBAL int connected; /* 1 = connected to server, -1 = logged in */
|
GLOBAL int connected; /* 1 = connected to server, -1 = logged in */
|
||||||
GLOBAL int interactive; /* interactively prompt on m* cmds */
|
GLOBAL int interactive; /* interactively prompt on m* cmds */
|
||||||
GLOBAL int confirmrest; /* confirm rest of current m* cmd */
|
GLOBAL int confirmrest; /* confirm rest of current m* cmd */
|
||||||
GLOBAL int debug; /* debugging level */
|
GLOBAL int ftp_debug; /* debugging level */
|
||||||
GLOBAL int bell; /* ring bell on cmd completion */
|
GLOBAL int bell; /* ring bell on cmd completion */
|
||||||
GLOBAL int doglob; /* glob local file names */
|
GLOBAL int doglob; /* glob local file names */
|
||||||
GLOBAL int autologin; /* establish user account on connection */
|
GLOBAL int autologin; /* establish user account on connection */
|
||||||
GLOBAL int proxy; /* proxy server connection active */
|
GLOBAL int proxy; /* proxy server connection active */
|
||||||
GLOBAL int proxflag; /* proxy connection exists */
|
GLOBAL int proxflag; /* proxy connection exists */
|
||||||
GLOBAL int gatemode; /* use gate-ftp */
|
GLOBAL int gatemode; /* use gate-ftp */
|
||||||
GLOBAL char *gateserver; /* server to use for gate-ftp */
|
GLOBAL const char *gateserver; /* server to use for gate-ftp */
|
||||||
GLOBAL int sunique; /* store files on server with unique name */
|
GLOBAL int sunique; /* store files on server with unique name */
|
||||||
GLOBAL int runique; /* store local files with unique name */
|
GLOBAL int runique; /* store local files with unique name */
|
||||||
GLOBAL int mcase; /* map upper to lower case for mget names */
|
GLOBAL int mcase; /* map upper to lower case for mget names */
|
||||||
@ -252,9 +252,11 @@ GLOBAL int rate_get_incr; /* increment for get xfer rate */
|
|||||||
GLOBAL int rate_put; /* maximum put xfer rate */
|
GLOBAL int rate_put; /* maximum put xfer rate */
|
||||||
GLOBAL int rate_put_incr; /* increment for put xfer rate */
|
GLOBAL int rate_put_incr; /* increment for put xfer rate */
|
||||||
GLOBAL int retry_connect; /* seconds between retrying connection */
|
GLOBAL int retry_connect; /* seconds between retrying connection */
|
||||||
GLOBAL char *tmpdir; /* temporary directory */
|
GLOBAL const char *tmpdir; /* temporary directory */
|
||||||
GLOBAL int epsv4; /* use EPSV/EPRT on IPv4 connections */
|
GLOBAL int epsv4; /* use EPSV/EPRT on IPv4 connections */
|
||||||
GLOBAL int epsv4bad; /* EPSV doesn't work on the current server */
|
GLOBAL int epsv4bad; /* EPSV doesn't work on the current server */
|
||||||
|
GLOBAL int epsv6; /* use EPSV/EPRT on IPv6 connections */
|
||||||
|
GLOBAL int epsv6bad; /* EPSV doesn't work on the current server */
|
||||||
GLOBAL int editing; /* command line editing enabled */
|
GLOBAL int editing; /* command line editing enabled */
|
||||||
GLOBAL int features[FEAT_max]; /* remote FEATures supported */
|
GLOBAL int features[FEAT_max]; /* remote FEATures supported */
|
||||||
|
|
||||||
@ -266,8 +268,6 @@ GLOBAL size_t cursor_argc; /* location of cursor in margv */
|
|||||||
GLOBAL size_t cursor_argo; /* offset of cursor in margv[cursor_argc] */
|
GLOBAL size_t cursor_argo; /* offset of cursor in margv[cursor_argc] */
|
||||||
#endif /* !NO_EDITCOMPLETE */
|
#endif /* !NO_EDITCOMPLETE */
|
||||||
|
|
||||||
GLOBAL char *direction; /* direction transfer is occurring */
|
|
||||||
|
|
||||||
GLOBAL char *hostname; /* name of host connected to */
|
GLOBAL char *hostname; /* name of host connected to */
|
||||||
GLOBAL int unix_server; /* server is unix, can use binary for ascii */
|
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 int unix_proxy; /* proxy is unix, can use binary for ascii */
|
||||||
@ -276,9 +276,10 @@ GLOBAL char remotecwd[MAXPATHLEN]; /* remote dir */
|
|||||||
GLOBAL char *username; /* name of user logged in as. (dynamic) */
|
GLOBAL char *username; /* name of user logged in as. (dynamic) */
|
||||||
|
|
||||||
GLOBAL sa_family_t family; /* address family to use for connections */
|
GLOBAL sa_family_t family; /* address family to use for connections */
|
||||||
GLOBAL char *ftpport; /* port number to use for FTP connections */
|
GLOBAL const char *ftpport; /* port number to use for FTP connections */
|
||||||
GLOBAL char *httpport; /* port number to use for HTTP connections */
|
GLOBAL const char *httpport; /* port number to use for HTTP connections */
|
||||||
GLOBAL char *gateport; /* port number to use for gateftp connections */
|
GLOBAL const char *gateport; /* port number to use for gateftp connections */
|
||||||
|
GLOBAL struct addrinfo *bindai; /* local address to bind as */
|
||||||
|
|
||||||
GLOBAL char *outfile; /* filename to output URLs to */
|
GLOBAL char *outfile; /* filename to output URLs to */
|
||||||
GLOBAL int restartautofetch; /* restart auto-fetch */
|
GLOBAL int restartautofetch; /* restart auto-fetch */
|
||||||
@ -327,7 +328,7 @@ extern struct option optiontab[];
|
|||||||
#define FREEPTR(x) if ((x) != NULL) { free(x); (x) = NULL; }
|
#define FREEPTR(x) if ((x) != NULL) { free(x); (x) = NULL; }
|
||||||
|
|
||||||
#ifdef BSD4_4
|
#ifdef BSD4_4
|
||||||
# define HAVE_SOCKADDR_SA_LEN 1
|
# define HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NO_LONG_LONG
|
#ifdef NO_LONG_LONG
|
||||||
@ -335,3 +336,20 @@ extern struct option optiontab[];
|
|||||||
#else
|
#else
|
||||||
# define STRTOLL(x,y,z) strtoll(x,y,z)
|
# define STRTOLL(x,y,z) strtoll(x,y,z)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef NO_DEBUG
|
||||||
|
#define DPRINTF(...)
|
||||||
|
#define DWARN(...)
|
||||||
|
#else
|
||||||
|
#define DPRINTF(...) if (ftp_debug) (void)fprintf(ttyout, __VA_ARGS__)
|
||||||
|
#define DWARN(...) if (ftp_debug) warn(__VA_ARGS__)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define STRorNULL(s) ((s) ? (s) : "<null>")
|
||||||
|
|
||||||
|
#ifdef NO_USAGE
|
||||||
|
void xusage(void);
|
||||||
|
#define UPRINTF(...) xusage()
|
||||||
|
#else
|
||||||
|
#define UPRINTF(...) (void)fprintf(ttyout, __VA_ARGS__)
|
||||||
|
#endif
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
/* $NetBSD: main.c,v 1.94 2005/05/13 05:03:49 lukem Exp $ */
|
/* $NetBSD: main.c,v 1.17 2009/11/15 10:12:37 lukem Exp $ */
|
||||||
|
/* from NetBSD: main.c,v 1.117 2009/07/13 19:05:41 roy Exp */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1996-2004 The NetBSD Foundation, Inc.
|
* Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
* This code is derived from software contributed to The NetBSD Foundation
|
||||||
@ -15,13 +16,6 @@
|
|||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
@ -94,17 +88,22 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "tnftp.h"
|
||||||
|
|
||||||
|
#if 0 /* tnftp */
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
__COPYRIGHT("@(#) Copyright (c) 1985, 1989, 1993, 1994\n\
|
__COPYRIGHT("@(#) Copyright (c) 1985, 1989, 1993, 1994\
|
||||||
The Regents of the University of California. All rights reserved.\n");
|
The Regents of the University of California. All rights reserved.\
|
||||||
|
Copyright 1996-2008 The NetBSD Foundation, Inc. All rights reserved");
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)main.c 8.6 (Berkeley) 10/9/94";
|
static char sccsid[] = "@(#)main.c 8.6 (Berkeley) 10/9/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: main.c,v 1.94 2005/05/13 05:03:49 lukem Exp $");
|
__RCSID(" NetBSD: main.c,v 1.117 2009/07/13 19:05:41 roy Exp ");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
@ -123,9 +122,12 @@ __RCSID("$NetBSD: main.c,v 1.94 2005/05/13 05:03:49 lukem Exp $");
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
|
||||||
|
#endif /* tnftp */
|
||||||
|
|
||||||
#define GLOBAL /* force GLOBAL decls in ftp_var.h to be declared */
|
#define GLOBAL /* force GLOBAL decls in ftp_var.h to be declared */
|
||||||
#include "ftp_var.h"
|
#include "ftp_var.h"
|
||||||
|
|
||||||
@ -134,19 +136,24 @@ __RCSID("$NetBSD: main.c,v 1.94 2005/05/13 05:03:49 lukem Exp $");
|
|||||||
#define NO_PROXY "no_proxy" /* env var with list of non-proxied
|
#define NO_PROXY "no_proxy" /* env var with list of non-proxied
|
||||||
* hosts, comma or space separated */
|
* hosts, comma or space separated */
|
||||||
|
|
||||||
static void setupoption(char *, char *, char *);
|
static void setupoption(const char *, const char *, const char *);
|
||||||
int main(int, char *[]);
|
int main(int, char *[]);
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int volatile argc, char **volatile argv)
|
||||||
{
|
{
|
||||||
int ch, rval;
|
int ch, rval;
|
||||||
struct passwd *pw;
|
struct passwd *pw;
|
||||||
char *cp, *ep, *anonuser, *anonpass, *upload_path;
|
char *cp, *ep, *anonpass, *upload_path, *src_addr;
|
||||||
int dumbterm, s, len, isupload;
|
const char *anonuser;
|
||||||
|
int dumbterm, s, isupload;
|
||||||
|
size_t len;
|
||||||
socklen_t slen;
|
socklen_t slen;
|
||||||
|
|
||||||
|
tzset();
|
||||||
|
#if 0 /* tnftp */ /* XXX */
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
|
#endif /* tnftp */
|
||||||
setprogname(argv[0]);
|
setprogname(argv[0]);
|
||||||
|
|
||||||
sigint_raised = 0;
|
sigint_raised = 0;
|
||||||
@ -184,14 +191,22 @@ main(int argc, char *argv[])
|
|||||||
rate_put_incr = DEFAULTINCR;
|
rate_put_incr = DEFAULTINCR;
|
||||||
#ifdef INET6
|
#ifdef INET6
|
||||||
epsv4 = 1;
|
epsv4 = 1;
|
||||||
|
epsv6 = 1;
|
||||||
#else
|
#else
|
||||||
epsv4 = 0;
|
epsv4 = 0;
|
||||||
|
epsv6 = 0;
|
||||||
#endif
|
#endif
|
||||||
epsv4bad = 0;
|
epsv4bad = 0;
|
||||||
|
epsv6bad = 0;
|
||||||
|
src_addr = NULL;
|
||||||
upload_path = NULL;
|
upload_path = NULL;
|
||||||
isupload = 0;
|
isupload = 0;
|
||||||
reply_callback = NULL;
|
reply_callback = NULL;
|
||||||
|
#ifdef INET6
|
||||||
family = AF_UNSPEC;
|
family = AF_UNSPEC;
|
||||||
|
#else
|
||||||
|
family = AF_INET; /* force AF_INET if no INET6 support */
|
||||||
|
#endif
|
||||||
|
|
||||||
netrc[0] = '\0';
|
netrc[0] = '\0';
|
||||||
cp = getenv("NETRC");
|
cp = getenv("NETRC");
|
||||||
@ -206,15 +221,15 @@ main(int argc, char *argv[])
|
|||||||
*/
|
*/
|
||||||
s = socket(AF_INET, SOCK_STREAM, 0);
|
s = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
if (s == -1)
|
if (s == -1)
|
||||||
err(1, "can't create socket");
|
err(1, "Can't create socket to determine default socket sizes");
|
||||||
slen = sizeof(rcvbuf_size);
|
slen = sizeof(rcvbuf_size);
|
||||||
if (getsockopt(s, SOL_SOCKET, SO_RCVBUF,
|
if (getsockopt(s, SOL_SOCKET, SO_RCVBUF,
|
||||||
(void *)&rcvbuf_size, &slen) == -1)
|
(void *)&rcvbuf_size, &slen) == -1)
|
||||||
err(1, "unable to get default rcvbuf size");
|
err(1, "Unable to get default rcvbuf size");
|
||||||
slen = sizeof(sndbuf_size);
|
slen = sizeof(sndbuf_size);
|
||||||
if (getsockopt(s, SOL_SOCKET, SO_SNDBUF,
|
if (getsockopt(s, SOL_SOCKET, SO_SNDBUF,
|
||||||
(void *)&sndbuf_size, &slen) == -1)
|
(void *)&sndbuf_size, &slen) == -1)
|
||||||
err(1, "unable to get default sndbuf size");
|
err(1, "Unable to get default sndbuf size");
|
||||||
(void)close(s);
|
(void)close(s);
|
||||||
/* sanity check returned buffer sizes */
|
/* sanity check returned buffer sizes */
|
||||||
if (rcvbuf_size <= 0)
|
if (rcvbuf_size <= 0)
|
||||||
@ -227,7 +242,7 @@ main(int argc, char *argv[])
|
|||||||
if (rcvbuf_size > 8 * 1024 * 1024)
|
if (rcvbuf_size > 8 * 1024 * 1024)
|
||||||
rcvbuf_size = 8 * 1024 * 1024;
|
rcvbuf_size = 8 * 1024 * 1024;
|
||||||
|
|
||||||
marg_sl = xsl_init();
|
marg_sl = ftp_sl_init();
|
||||||
if ((tmpdir = getenv("TMPDIR")) == NULL)
|
if ((tmpdir = getenv("TMPDIR")) == NULL)
|
||||||
tmpdir = _PATH_TMP;
|
tmpdir = _PATH_TMP;
|
||||||
|
|
||||||
@ -245,7 +260,7 @@ main(int argc, char *argv[])
|
|||||||
passivemode = 1;
|
passivemode = 1;
|
||||||
activefallback = 1;
|
activefallback = 1;
|
||||||
} else
|
} else
|
||||||
warnx("unknown $FTPMODE '%s'; using defaults", cp);
|
warnx("Unknown $FTPMODE `%s'; using defaults", cp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(getprogname(), "pftp") == 0) {
|
if (strcmp(getprogname(), "pftp") == 0) {
|
||||||
@ -286,7 +301,7 @@ main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((ch = getopt(argc, argv, "46AadefginN:o:pP:q:r:RtT:u:vV")) != -1) {
|
while ((ch = getopt(argc, argv, "46AadefginN:o:pP:q:r:Rs:tT:u:vV")) != -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case '4':
|
case '4':
|
||||||
family = AF_INET;
|
family = AF_INET;
|
||||||
@ -311,7 +326,7 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
case 'd':
|
case 'd':
|
||||||
options |= SO_DEBUG;
|
options |= SO_DEBUG;
|
||||||
debug++;
|
ftp_debug++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'e':
|
case 'e':
|
||||||
@ -361,19 +376,23 @@ main(int argc, char *argv[])
|
|||||||
case 'q':
|
case 'q':
|
||||||
quit_time = strtol(optarg, &ep, 10);
|
quit_time = strtol(optarg, &ep, 10);
|
||||||
if (quit_time < 1 || *ep != '\0')
|
if (quit_time < 1 || *ep != '\0')
|
||||||
errx(1, "bad quit value: %s", optarg);
|
errx(1, "Bad quit value: %s", optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'r':
|
case 'r':
|
||||||
retry_connect = strtol(optarg, &ep, 10);
|
retry_connect = strtol(optarg, &ep, 10);
|
||||||
if (retry_connect < 1 || *ep != '\0')
|
if (retry_connect < 1 || *ep != '\0')
|
||||||
errx(1, "bad retry value: %s", optarg);
|
errx(1, "Bad retry value: %s", optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'R':
|
case 'R':
|
||||||
restartautofetch = 1;
|
restartautofetch = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 's':
|
||||||
|
src_addr = optarg;
|
||||||
|
break;
|
||||||
|
|
||||||
case 't':
|
case 't':
|
||||||
trace = 1;
|
trace = 1;
|
||||||
break;
|
break;
|
||||||
@ -382,15 +401,18 @@ main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
int targc;
|
int targc;
|
||||||
char *targv[6], *oac;
|
char *targv[6], *oac;
|
||||||
|
char cmdbuf[MAX_C_NAME];
|
||||||
|
|
||||||
/* look for `dir,max[,incr]' */
|
/* look for `dir,max[,incr]' */
|
||||||
targc = 0;
|
targc = 0;
|
||||||
targv[targc++] = "-T";
|
(void)strlcpy(cmdbuf, "-T", sizeof(cmdbuf));
|
||||||
oac = xstrdup(optarg);
|
targv[targc++] = cmdbuf;
|
||||||
|
oac = ftp_strdup(optarg);
|
||||||
|
|
||||||
while ((cp = strsep(&oac, ",")) != NULL) {
|
while ((cp = strsep(&oac, ",")) != NULL) {
|
||||||
if (*cp == '\0') {
|
if (*cp == '\0') {
|
||||||
warnx("bad throttle value: %s", optarg);
|
warnx("Bad throttle value `%s'",
|
||||||
|
optarg);
|
||||||
usage();
|
usage();
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
}
|
}
|
||||||
@ -408,7 +430,7 @@ main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
isupload = 1;
|
isupload = 1;
|
||||||
interactive = 0;
|
interactive = 0;
|
||||||
upload_path = xstrdup(optarg);
|
upload_path = ftp_strdup(optarg);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -435,6 +457,22 @@ main(int argc, char *argv[])
|
|||||||
crflag = 1; /* strip c.r. on ascii gets */
|
crflag = 1; /* strip c.r. on ascii gets */
|
||||||
sendport = -1; /* not using ports */
|
sendport = -1; /* not using ports */
|
||||||
|
|
||||||
|
if (src_addr != NULL) {
|
||||||
|
struct addrinfo hints;
|
||||||
|
int error;
|
||||||
|
|
||||||
|
memset(&hints, 0, sizeof(hints));
|
||||||
|
hints.ai_family = family;
|
||||||
|
hints.ai_socktype = SOCK_STREAM;
|
||||||
|
hints.ai_flags = AI_PASSIVE;
|
||||||
|
error = getaddrinfo(src_addr, NULL, &hints, &bindai);
|
||||||
|
if (error) {
|
||||||
|
errx(1, "Can't lookup `%s': %s", src_addr,
|
||||||
|
(error == EAI_SYSTEM) ? strerror(errno)
|
||||||
|
: gai_strerror(error));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cache the user name and home directory.
|
* Cache the user name and home directory.
|
||||||
*/
|
*/
|
||||||
@ -443,7 +481,7 @@ main(int argc, char *argv[])
|
|||||||
anonuser = "anonymous";
|
anonuser = "anonymous";
|
||||||
cp = getenv("HOME");
|
cp = getenv("HOME");
|
||||||
if (! EMPTYSTRING(cp))
|
if (! EMPTYSTRING(cp))
|
||||||
localhome = xstrdup(cp);
|
localhome = ftp_strdup(cp);
|
||||||
pw = NULL;
|
pw = NULL;
|
||||||
cp = getlogin();
|
cp = getlogin();
|
||||||
if (cp != NULL)
|
if (cp != NULL)
|
||||||
@ -452,8 +490,8 @@ main(int argc, char *argv[])
|
|||||||
pw = getpwuid(getuid());
|
pw = getpwuid(getuid());
|
||||||
if (pw != NULL) {
|
if (pw != NULL) {
|
||||||
if (localhome == NULL && !EMPTYSTRING(pw->pw_dir))
|
if (localhome == NULL && !EMPTYSTRING(pw->pw_dir))
|
||||||
localhome = xstrdup(pw->pw_dir);
|
localhome = ftp_strdup(pw->pw_dir);
|
||||||
localname = xstrdup(pw->pw_name);
|
localname = ftp_strdup(pw->pw_name);
|
||||||
anonuser = localname;
|
anonuser = localname;
|
||||||
}
|
}
|
||||||
if (netrc[0] == '\0' && localhome != NULL) {
|
if (netrc[0] == '\0' && localhome != NULL) {
|
||||||
@ -465,7 +503,7 @@ main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (localhome == NULL)
|
if (localhome == NULL)
|
||||||
localhome = xstrdup("/");
|
localhome = ftp_strdup("/");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Every anonymous FTP server I've encountered will accept the
|
* Every anonymous FTP server I've encountered will accept the
|
||||||
@ -475,7 +513,7 @@ main(int argc, char *argv[])
|
|||||||
* - thorpej@NetBSD.org
|
* - thorpej@NetBSD.org
|
||||||
*/
|
*/
|
||||||
len = strlen(anonuser) + 2;
|
len = strlen(anonuser) + 2;
|
||||||
anonpass = xmalloc(len);
|
anonpass = ftp_malloc(len);
|
||||||
(void)strlcpy(anonpass, anonuser, len);
|
(void)strlcpy(anonpass, anonuser, len);
|
||||||
(void)strlcat(anonpass, "@", len);
|
(void)strlcat(anonpass, "@", len);
|
||||||
|
|
||||||
@ -502,11 +540,6 @@ main(int argc, char *argv[])
|
|||||||
(void)xsignal(SIGUSR2, crankrate);
|
(void)xsignal(SIGUSR2, crankrate);
|
||||||
(void)xsignal(SIGWINCH, setttywidth);
|
(void)xsignal(SIGWINCH, setttywidth);
|
||||||
|
|
||||||
#ifdef __GNUC__ /* to shut up gcc warnings */
|
|
||||||
(void)&argc;
|
|
||||||
(void)&argv;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (argc > 0) {
|
if (argc > 0) {
|
||||||
if (isupload) {
|
if (isupload) {
|
||||||
rval = auto_put(argc, argv, upload_path);
|
rval = auto_put(argc, argv, upload_path);
|
||||||
@ -522,22 +555,23 @@ main(int argc, char *argv[])
|
|||||||
if (rval >= 0) /* -1 == connected and cd-ed */
|
if (rval >= 0) /* -1 == connected and cd-ed */
|
||||||
goto sigint_or_rval_exit;
|
goto sigint_or_rval_exit;
|
||||||
} else {
|
} else {
|
||||||
char *xargv[4], *user, *host;
|
char *xargv[4], *uuser, *host;
|
||||||
|
char cmdbuf[MAXPATHLEN];
|
||||||
|
|
||||||
if ((rval = sigsetjmp(toplevel, 1)))
|
if ((rval = sigsetjmp(toplevel, 1)))
|
||||||
goto sigint_or_rval_exit;
|
goto sigint_or_rval_exit;
|
||||||
(void)xsignal(SIGINT, intr);
|
(void)xsignal(SIGINT, intr);
|
||||||
(void)xsignal(SIGPIPE, lostpeer);
|
(void)xsignal(SIGPIPE, lostpeer);
|
||||||
user = NULL;
|
uuser = NULL;
|
||||||
host = argv[0];
|
host = argv[0];
|
||||||
cp = strchr(host, '@');
|
cp = strchr(host, '@');
|
||||||
if (cp) {
|
if (cp) {
|
||||||
*cp = '\0';
|
*cp = '\0';
|
||||||
user = host;
|
uuser = host;
|
||||||
host = cp + 1;
|
host = cp + 1;
|
||||||
}
|
}
|
||||||
/* XXX discards const */
|
(void)strlcpy(cmdbuf, getprogname(), sizeof(cmdbuf));
|
||||||
xargv[0] = (char *)getprogname();
|
xargv[0] = cmdbuf;
|
||||||
xargv[1] = host;
|
xargv[1] = host;
|
||||||
xargv[2] = argv[1];
|
xargv[2] = argv[1];
|
||||||
xargv[3] = NULL;
|
xargv[3] = NULL;
|
||||||
@ -545,14 +579,14 @@ main(int argc, char *argv[])
|
|||||||
int oautologin;
|
int oautologin;
|
||||||
|
|
||||||
oautologin = autologin;
|
oautologin = autologin;
|
||||||
if (user != NULL) {
|
if (uuser != NULL) {
|
||||||
anonftp = 0;
|
anonftp = 0;
|
||||||
autologin = 0;
|
autologin = 0;
|
||||||
}
|
}
|
||||||
setpeer(argc+1, xargv);
|
setpeer(argc+1, xargv);
|
||||||
autologin = oautologin;
|
autologin = oautologin;
|
||||||
if (connected == 1 && user != NULL)
|
if (connected == 1 && uuser != NULL)
|
||||||
(void)ftp_login(host, user, NULL);
|
(void)ftp_login(host, uuser, NULL);
|
||||||
if (!retry_connect)
|
if (!retry_connect)
|
||||||
break;
|
break;
|
||||||
if (!connected) {
|
if (!connected) {
|
||||||
@ -586,18 +620,18 @@ main(int argc, char *argv[])
|
|||||||
char *
|
char *
|
||||||
prompt(void)
|
prompt(void)
|
||||||
{
|
{
|
||||||
static char **prompt;
|
static char **promptopt;
|
||||||
static char buf[MAXPATHLEN];
|
static char buf[MAXPATHLEN];
|
||||||
|
|
||||||
if (prompt == NULL) {
|
if (promptopt == NULL) {
|
||||||
struct option *o;
|
struct option *o;
|
||||||
|
|
||||||
o = getoption("prompt");
|
o = getoption("prompt");
|
||||||
if (o == NULL)
|
if (o == NULL)
|
||||||
errx(1, "no such option `prompt'");
|
errx(1, "prompt: no such option `prompt'");
|
||||||
prompt = &(o->value);
|
promptopt = &(o->value);
|
||||||
}
|
}
|
||||||
formatbuf(buf, sizeof(buf), *prompt ? *prompt : DEFAULTPROMPT);
|
formatbuf(buf, sizeof(buf), *promptopt ? *promptopt : DEFAULTPROMPT);
|
||||||
return (buf);
|
return (buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -607,18 +641,18 @@ prompt(void)
|
|||||||
char *
|
char *
|
||||||
rprompt(void)
|
rprompt(void)
|
||||||
{
|
{
|
||||||
static char **rprompt;
|
static char **rpromptopt;
|
||||||
static char buf[MAXPATHLEN];
|
static char buf[MAXPATHLEN];
|
||||||
|
|
||||||
if (rprompt == NULL) {
|
if (rpromptopt == NULL) {
|
||||||
struct option *o;
|
struct option *o;
|
||||||
|
|
||||||
o = getoption("rprompt");
|
o = getoption("rprompt");
|
||||||
if (o == NULL)
|
if (o == NULL)
|
||||||
errx(1, "no such option `rprompt'");
|
errx(1, "rprompt: no such option `rprompt'");
|
||||||
rprompt = &(o->value);
|
rpromptopt = &(o->value);
|
||||||
}
|
}
|
||||||
formatbuf(buf, sizeof(buf), *rprompt ? *rprompt : DEFAULTRPROMPT);
|
formatbuf(buf, sizeof(buf), *rpromptopt ? *rpromptopt : DEFAULTRPROMPT);
|
||||||
return (buf);
|
return (buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -630,7 +664,12 @@ cmdscanner(void)
|
|||||||
{
|
{
|
||||||
struct cmd *c;
|
struct cmd *c;
|
||||||
char *p;
|
char *p;
|
||||||
int num;
|
#ifndef NO_EDITCOMPLETE
|
||||||
|
int ch;
|
||||||
|
size_t num;
|
||||||
|
#endif
|
||||||
|
int len;
|
||||||
|
char cmdbuf[MAX_C_NAME];
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
#ifndef NO_EDITCOMPLETE
|
#ifndef NO_EDITCOMPLETE
|
||||||
@ -641,34 +680,33 @@ cmdscanner(void)
|
|||||||
p = rprompt();
|
p = rprompt();
|
||||||
if (*p)
|
if (*p)
|
||||||
fprintf(ttyout, "%s ", p);
|
fprintf(ttyout, "%s ", p);
|
||||||
(void)fflush(ttyout);
|
|
||||||
}
|
}
|
||||||
if (fgets(line, sizeof(line), stdin) == NULL) {
|
(void)fflush(ttyout);
|
||||||
|
len = get_line(stdin, line, sizeof(line), NULL);
|
||||||
|
switch (len) {
|
||||||
|
case -1: /* EOF */
|
||||||
|
case -2: /* error */
|
||||||
if (fromatty)
|
if (fromatty)
|
||||||
putc('\n', ttyout);
|
putc('\n', ttyout);
|
||||||
quit(0, NULL);
|
quit(0, NULL);
|
||||||
}
|
/* NOTREACHED */
|
||||||
num = strlen(line);
|
case -3: /* too long; try again */
|
||||||
if (num == 0)
|
|
||||||
break;
|
|
||||||
if (line[--num] == '\n') {
|
|
||||||
if (num == 0)
|
|
||||||
break;
|
|
||||||
line[num] = '\0';
|
|
||||||
} else if (num == sizeof(line) - 2) {
|
|
||||||
fputs("Sorry, input line is too long.\n",
|
fputs("Sorry, input line is too long.\n",
|
||||||
ttyout);
|
ttyout);
|
||||||
while ((num = getchar()) != '\n' && num != EOF)
|
continue;
|
||||||
/* void */;
|
case 0: /* empty; try again */
|
||||||
|
continue;
|
||||||
|
default: /* all ok */
|
||||||
break;
|
break;
|
||||||
} /* else it was a line without a newline */
|
}
|
||||||
#ifndef NO_EDITCOMPLETE
|
#ifndef NO_EDITCOMPLETE
|
||||||
} else {
|
} else {
|
||||||
const char *buf;
|
const char *buf;
|
||||||
HistEvent ev;
|
HistEvent ev;
|
||||||
cursor_pos = NULL;
|
cursor_pos = NULL;
|
||||||
|
|
||||||
buf = el_gets(el, &num);
|
buf = el_gets(el, &ch);
|
||||||
|
num = ch;
|
||||||
if (buf == NULL || num == 0) {
|
if (buf == NULL || num == 0) {
|
||||||
if (fromatty)
|
if (fromatty)
|
||||||
putc('\n', ttyout);
|
putc('\n', ttyout);
|
||||||
@ -718,7 +756,8 @@ cmdscanner(void)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
confirmrest = 0;
|
confirmrest = 0;
|
||||||
margv[0] = c->c_name;
|
(void)strlcpy(cmdbuf, c->c_name, sizeof(cmdbuf));
|
||||||
|
margv[0] = cmdbuf;
|
||||||
(*c->c_handler)(margc, margv);
|
(*c->c_handler)(margc, margv);
|
||||||
if (bell && c->c_bell)
|
if (bell && c->c_bell)
|
||||||
(void)putc('\007', ttyout);
|
(void)putc('\007', ttyout);
|
||||||
@ -777,7 +816,7 @@ makeargv(void)
|
|||||||
marg_sl->sl_cur = 0; /* reset to start of marg_sl */
|
marg_sl->sl_cur = 0; /* reset to start of marg_sl */
|
||||||
for (margc = 0; ; margc++) {
|
for (margc = 0; ; margc++) {
|
||||||
argp = slurpstring();
|
argp = slurpstring();
|
||||||
xsl_add(marg_sl, argp);
|
ftp_sl_add(marg_sl, argp);
|
||||||
if (argp == NULL)
|
if (argp == NULL)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -812,6 +851,8 @@ makeargv(void)
|
|||||||
char *
|
char *
|
||||||
slurpstring(void)
|
slurpstring(void)
|
||||||
{
|
{
|
||||||
|
static char bangstr[2] = { '!', '\0' };
|
||||||
|
static char dollarstr[2] = { '$', '\0' };
|
||||||
int got_one = 0;
|
int got_one = 0;
|
||||||
char *sb = stringbase;
|
char *sb = stringbase;
|
||||||
char *ap = argbase;
|
char *ap = argbase;
|
||||||
@ -822,7 +863,7 @@ slurpstring(void)
|
|||||||
case 0:
|
case 0:
|
||||||
slrflag++;
|
slrflag++;
|
||||||
INC_CHKCURSOR(stringbase);
|
INC_CHKCURSOR(stringbase);
|
||||||
return ((*sb == '!') ? "!" : "$");
|
return ((*sb == '!') ? bangstr : dollarstr);
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
case 1:
|
case 1:
|
||||||
slrflag++;
|
slrflag++;
|
||||||
@ -945,27 +986,28 @@ void
|
|||||||
help(int argc, char *argv[])
|
help(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
struct cmd *c;
|
struct cmd *c;
|
||||||
char *nargv[1], *p, *cmd;
|
char *nargv[1], *cmd;
|
||||||
|
const char *p;
|
||||||
int isusage;
|
int isusage;
|
||||||
|
|
||||||
cmd = argv[0];
|
cmd = argv[0];
|
||||||
isusage = (strcmp(cmd, "usage") == 0);
|
isusage = (strcmp(cmd, "usage") == 0);
|
||||||
if (argc == 0 || (isusage && argc == 1)) {
|
if (argc == 0 || (isusage && argc == 1)) {
|
||||||
fprintf(ttyout, "usage: %s [command [...]]\n", cmd);
|
UPRINTF("usage: %s [command [...]]\n", cmd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (argc == 1) {
|
if (argc == 1) {
|
||||||
StringList *buf;
|
StringList *buf;
|
||||||
|
|
||||||
buf = xsl_init();
|
buf = ftp_sl_init();
|
||||||
fprintf(ttyout,
|
fprintf(ttyout,
|
||||||
"%sommands may be abbreviated. Commands are:\n\n",
|
"%sommands may be abbreviated. Commands are:\n\n",
|
||||||
proxy ? "Proxy c" : "C");
|
proxy ? "Proxy c" : "C");
|
||||||
for (c = cmdtab; (p = c->c_name) != NULL; c++)
|
for (c = cmdtab; (p = c->c_name) != NULL; c++)
|
||||||
if (!proxy || c->c_proxy)
|
if (!proxy || c->c_proxy)
|
||||||
xsl_add(buf, p);
|
ftp_sl_add(buf, ftp_strdup(p));
|
||||||
list_vertical(buf);
|
list_vertical(buf);
|
||||||
sl_free(buf, 0);
|
sl_free(buf, 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -973,6 +1015,7 @@ help(int argc, char *argv[])
|
|||||||
|
|
||||||
while (--argc > 0) {
|
while (--argc > 0) {
|
||||||
char *arg;
|
char *arg;
|
||||||
|
char cmdbuf[MAX_C_NAME];
|
||||||
|
|
||||||
arg = *++argv;
|
arg = *++argv;
|
||||||
c = getcmd(arg);
|
c = getcmd(arg);
|
||||||
@ -984,7 +1027,8 @@ help(int argc, char *argv[])
|
|||||||
cmd, arg);
|
cmd, arg);
|
||||||
else {
|
else {
|
||||||
if (isusage) {
|
if (isusage) {
|
||||||
nargv[0] = c->c_name;
|
(void)strlcpy(cmdbuf, c->c_name, sizeof(cmdbuf));
|
||||||
|
nargv[0] = cmdbuf;
|
||||||
(*c->c_handler)(0, nargv);
|
(*c->c_handler)(0, nargv);
|
||||||
} else
|
} else
|
||||||
fprintf(ttyout, "%-*s\t%s\n", HELPINDENT,
|
fprintf(ttyout, "%-*s\t%s\n", HELPINDENT,
|
||||||
@ -1014,27 +1058,18 @@ getoptionvalue(const char *name)
|
|||||||
struct option *c;
|
struct option *c;
|
||||||
|
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
errx(1, "getoptionvalue() invoked with NULL name");
|
errx(1, "getoptionvalue: invoked with NULL name");
|
||||||
c = getoption(name);
|
c = getoption(name);
|
||||||
if (c != NULL)
|
if (c != NULL)
|
||||||
return (c->value);
|
return (c->value);
|
||||||
errx(1, "getoptionvalue() invoked with unknown option `%s'", name);
|
errx(1, "getoptionvalue: invoked with unknown option `%s'", name);
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
setupoption(char *name, char *value, char *defaultvalue)
|
setupoption(const char *name, const char *value, const char *defaultvalue)
|
||||||
{
|
{
|
||||||
char *nargv[3];
|
set_option(name, value ? value : defaultvalue, 0);
|
||||||
int overbose;
|
|
||||||
|
|
||||||
nargv[0] = "setupoption()";
|
|
||||||
nargv[1] = name;
|
|
||||||
nargv[2] = (value ? value : defaultvalue);
|
|
||||||
overbose = verbose;
|
|
||||||
verbose = 0;
|
|
||||||
setoption(3, nargv);
|
|
||||||
verbose = overbose;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1043,9 +1078,10 @@ usage(void)
|
|||||||
const char *progname = getprogname();
|
const char *progname = getprogname();
|
||||||
|
|
||||||
(void)fprintf(stderr,
|
(void)fprintf(stderr,
|
||||||
"usage: %s [-46AadefginpRtvV] [-N netrc] [-o outfile] [-P port] [-q quittime]\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"
|
" [-r retry] [-s srcaddr] [-T dir,max[,inc]]\n"
|
||||||
" [file:///file] [ftp://[user[:pass]@]host[:port]/path[/]]\n"
|
" [[user@]host [port]] [host:path[/]] [file:///file]\n"
|
||||||
|
" [ftp://[user[:pass]@]host[:port]/path[/]]\n"
|
||||||
" [http://[user[:pass]@]host[:port]/path] [...]\n"
|
" [http://[user[:pass]@]host[:port]/path] [...]\n"
|
||||||
" %s -u URL file [...]\n", progname, progname);
|
" %s -u URL file [...]\n", progname, progname);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
/* $NetBSD: progressbar.c,v 1.7 2005/04/11 01:49:31 lukem Exp $ */
|
/* $NetBSD: progressbar.c,v 1.14 2009/05/20 12:53:47 lukem Exp $ */
|
||||||
|
/* from NetBSD: progressbar.c,v 1.21 2009/04/12 10:18:52 lukem Exp */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1997-2003 The NetBSD Foundation, Inc.
|
* Copyright (c) 1997-2009 The NetBSD Foundation, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
* This code is derived from software contributed to The NetBSD Foundation
|
||||||
@ -15,13 +16,6 @@
|
|||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
@ -36,9 +30,13 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "tnftp.h"
|
||||||
|
|
||||||
|
#if 0 /* tnftp */
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
__RCSID("$NetBSD: progressbar.c,v 1.7 2005/04/11 01:49:31 lukem Exp $");
|
__RCSID(" NetBSD: progressbar.c,v 1.21 2009/04/12 10:18:52 lukem Exp ");
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -46,7 +44,6 @@ __RCSID("$NetBSD: progressbar.c,v 1.7 2005/04/11 01:49:31 lukem Exp $");
|
|||||||
*/
|
*/
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/time.h>
|
|
||||||
|
|
||||||
#include <err.h>
|
#include <err.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
@ -55,12 +52,12 @@ __RCSID("$NetBSD: progressbar.c,v 1.7 2005/04/11 01:49:31 lukem Exp $");
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <tzfile.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "progressbar.h"
|
#endif /* tnftp */
|
||||||
|
|
||||||
#define SECSPERHOUR (60 * 60)
|
#include "progressbar.h"
|
||||||
#define SECSPERDAY ((long)60 * 60 * 24)
|
|
||||||
|
|
||||||
#if !defined(NO_PROGRESS)
|
#if !defined(NO_PROGRESS)
|
||||||
/*
|
/*
|
||||||
@ -72,7 +69,11 @@ foregroundproc(void)
|
|||||||
static pid_t pgrp = -1;
|
static pid_t pgrp = -1;
|
||||||
|
|
||||||
if (pgrp == -1)
|
if (pgrp == -1)
|
||||||
|
#if GETPGRP_VOID
|
||||||
pgrp = getpgrp();
|
pgrp = getpgrp();
|
||||||
|
#else /* ! GETPGRP_VOID */
|
||||||
|
pgrp = getpgrp(0);
|
||||||
|
#endif /* ! GETPGRP_VOID */
|
||||||
|
|
||||||
return (tcgetpgrp(fileno(ttyout)) == pgrp);
|
return (tcgetpgrp(fileno(ttyout)) == pgrp);
|
||||||
}
|
}
|
||||||
@ -94,10 +95,23 @@ updateprogressmeter(int dummy)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* List of order of magnitude prefixes.
|
* List of order of magnitude suffixes, per IEC 60027-2.
|
||||||
* The last is `P', as 2^64 = 16384 Petabytes
|
|
||||||
*/
|
*/
|
||||||
static const char prefixes[] = " KMGTP";
|
static const char * const suffixes[] = {
|
||||||
|
"", /* 2^0 (byte) */
|
||||||
|
"KiB", /* 2^10 Kibibyte */
|
||||||
|
"MiB", /* 2^20 Mebibyte */
|
||||||
|
"GiB", /* 2^30 Gibibyte */
|
||||||
|
"TiB", /* 2^40 Tebibyte */
|
||||||
|
"PiB", /* 2^50 Pebibyte */
|
||||||
|
"EiB", /* 2^60 Exbibyte */
|
||||||
|
#if 0
|
||||||
|
/* The following are not necessary for signed 64-bit off_t */
|
||||||
|
"ZiB", /* 2^70 Zebibyte */
|
||||||
|
"YiB", /* 2^80 Yobibyte */
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
#define NSUFFIXES (int)(sizeof(suffixes) / sizeof(suffixes[0]))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Display a transfer progress bar if progress is non-zero.
|
* Display a transfer progress bar if progress is non-zero.
|
||||||
@ -124,7 +138,7 @@ progressmeter(int flag)
|
|||||||
struct timeval td;
|
struct timeval td;
|
||||||
off_t abbrevsize, bytespersec;
|
off_t abbrevsize, bytespersec;
|
||||||
double elapsed;
|
double elapsed;
|
||||||
int ratio, barlength, i, remaining;
|
int ratio, i, remaining, barlength;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Work variables for progress bar.
|
* Work variables for progress bar.
|
||||||
@ -135,10 +149,10 @@ progressmeter(int flag)
|
|||||||
* these appropriately.
|
* these appropriately.
|
||||||
*/
|
*/
|
||||||
#endif
|
#endif
|
||||||
int len;
|
size_t len;
|
||||||
char buf[256]; /* workspace for progress bar */
|
char buf[256]; /* workspace for progress bar */
|
||||||
#ifndef NO_PROGRESS
|
#ifndef NO_PROGRESS
|
||||||
#define BAROVERHEAD 43 /* non `*' portion of progress bar */
|
#define BAROVERHEAD 45 /* non `*' portion of progress bar */
|
||||||
/*
|
/*
|
||||||
* stars should contain at least
|
* stars should contain at least
|
||||||
* sizeof(buf) - BAROVERHEAD entries
|
* sizeof(buf) - BAROVERHEAD entries
|
||||||
@ -170,8 +184,8 @@ progressmeter(int flag)
|
|||||||
"transfer aborted because stalled for %lu sec.\r\n",
|
"transfer aborted because stalled for %lu sec.\r\n",
|
||||||
getprogname(), (unsigned long)wait.tv_sec);
|
getprogname(), (unsigned long)wait.tv_sec);
|
||||||
(void)write(fileno(ttyout), buf, len);
|
(void)write(fileno(ttyout), buf, len);
|
||||||
(void)xsignal(SIGALRM, SIG_DFL);
|
|
||||||
alarmtimer(0);
|
alarmtimer(0);
|
||||||
|
(void)xsignal(SIGALRM, SIG_DFL);
|
||||||
siglongjmp(toplevel, 1);
|
siglongjmp(toplevel, 1);
|
||||||
}
|
}
|
||||||
#endif /* !STANDALONE_PROGRESS */
|
#endif /* !STANDALONE_PROGRESS */
|
||||||
@ -188,8 +202,8 @@ progressmeter(int flag)
|
|||||||
(void)xsignal_restart(SIGALRM, updateprogressmeter, 1);
|
(void)xsignal_restart(SIGALRM, updateprogressmeter, 1);
|
||||||
alarmtimer(1); /* set alarm timer for 1 Hz */
|
alarmtimer(1); /* set alarm timer for 1 Hz */
|
||||||
} else if (flag == 1) {
|
} else if (flag == 1) {
|
||||||
(void)xsignal(SIGALRM, SIG_DFL);
|
|
||||||
alarmtimer(0);
|
alarmtimer(0);
|
||||||
|
(void)xsignal(SIGALRM, SIG_DFL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifndef NO_PROGRESS
|
#ifndef NO_PROGRESS
|
||||||
@ -216,23 +230,24 @@ progressmeter(int flag)
|
|||||||
* calculate the length of the `*' bar, ensuring that
|
* calculate the length of the `*' bar, ensuring that
|
||||||
* the number of stars won't exceed the buffer size
|
* the number of stars won't exceed the buffer size
|
||||||
*/
|
*/
|
||||||
barlength = MIN(sizeof(buf) - 1, ttywidth) - BAROVERHEAD;
|
barlength = MIN((int)(sizeof(buf) - 1), ttywidth) - BAROVERHEAD;
|
||||||
if (prefix)
|
if (prefix)
|
||||||
barlength -= strlen(prefix);
|
barlength -= (int)strlen(prefix);
|
||||||
if (barlength > 0) {
|
if (barlength > 0) {
|
||||||
i = barlength * ratio / 100;
|
i = barlength * ratio / 100;
|
||||||
len += snprintf(buf + len, BUFLEFT,
|
len += snprintf(buf + len, BUFLEFT,
|
||||||
"|%.*s%*s|", i, stars, barlength - i, "");
|
"|%.*s%*s|", i, stars, (int)(barlength - i), "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abbrevsize = cursize;
|
abbrevsize = cursize;
|
||||||
for (i = 0; abbrevsize >= 100000 && i < sizeof(prefixes); i++)
|
for (i = 0; abbrevsize >= 100000 && i < NSUFFIXES; i++)
|
||||||
abbrevsize >>= 10;
|
abbrevsize >>= 10;
|
||||||
len += snprintf(buf + len, BUFLEFT, " " LLFP("5") " %c%c ",
|
if (i == NSUFFIXES)
|
||||||
|
i--;
|
||||||
|
len += snprintf(buf + len, BUFLEFT, " " LLFP("5") " %-3s ",
|
||||||
(LLT)abbrevsize,
|
(LLT)abbrevsize,
|
||||||
prefixes[i],
|
suffixes[i]);
|
||||||
i == 0 ? ' ' : 'B');
|
|
||||||
|
|
||||||
timersub(&now, &start, &td);
|
timersub(&now, &start, &td);
|
||||||
elapsed = td.tv_sec + (td.tv_usec / 1000000.0);
|
elapsed = td.tv_sec + (td.tv_usec / 1000000.0);
|
||||||
@ -243,13 +258,13 @@ progressmeter(int flag)
|
|||||||
if (elapsed > 0.0)
|
if (elapsed > 0.0)
|
||||||
bytespersec /= elapsed;
|
bytespersec /= elapsed;
|
||||||
}
|
}
|
||||||
for (i = 1; bytespersec >= 1024000 && i < sizeof(prefixes); i++)
|
for (i = 1; bytespersec >= 1024000 && i < NSUFFIXES; i++)
|
||||||
bytespersec >>= 10;
|
bytespersec >>= 10;
|
||||||
len += snprintf(buf + len, BUFLEFT,
|
len += snprintf(buf + len, BUFLEFT,
|
||||||
" " LLFP("3") ".%02d %cB/s ",
|
" " LLFP("3") ".%02d %.2sB/s ",
|
||||||
(LLT)(bytespersec / 1024),
|
(LLT)(bytespersec / 1024),
|
||||||
(int)((bytespersec % 1024) * 100 / 1024),
|
(int)((bytespersec % 1024) * 100 / 1024),
|
||||||
prefixes[i]);
|
suffixes[i]);
|
||||||
|
|
||||||
if (filesize > 0) {
|
if (filesize > 0) {
|
||||||
if (bytes <= 0 || elapsed <= 0.0 || cursize > filesize) {
|
if (bytes <= 0 || elapsed <= 0.0 || cursize > filesize) {
|
||||||
@ -299,7 +314,8 @@ ptransfer(int siginfo)
|
|||||||
struct timeval now, td, wait;
|
struct timeval now, td, wait;
|
||||||
double elapsed;
|
double elapsed;
|
||||||
off_t bytespersec;
|
off_t bytespersec;
|
||||||
int remaining, hh, i, len;
|
int remaining, hh, i;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
char buf[256]; /* Work variable for transfer status. */
|
char buf[256]; /* Work variable for transfer status. */
|
||||||
|
|
||||||
@ -334,12 +350,14 @@ ptransfer(int siginfo)
|
|||||||
len += snprintf(buf + len, BUFLEFT,
|
len += snprintf(buf + len, BUFLEFT,
|
||||||
"%02d:%02d ", remaining / 60, remaining % 60);
|
"%02d:%02d ", remaining / 60, remaining % 60);
|
||||||
|
|
||||||
for (i = 1; bytespersec >= 1024000 && i < sizeof(prefixes); i++)
|
for (i = 1; bytespersec >= 1024000 && i < NSUFFIXES; i++)
|
||||||
bytespersec >>= 10;
|
bytespersec >>= 10;
|
||||||
len += snprintf(buf + len, BUFLEFT, "(" LLF ".%02d %cB/s)",
|
if (i == NSUFFIXES)
|
||||||
|
i--;
|
||||||
|
len += snprintf(buf + len, BUFLEFT, "(" LLF ".%02d %.2sB/s)",
|
||||||
(LLT)(bytespersec / 1024),
|
(LLT)(bytespersec / 1024),
|
||||||
(int)((bytespersec % 1024) * 100 / 1024),
|
(int)((bytespersec % 1024) * 100 / 1024),
|
||||||
prefixes[i]);
|
suffixes[i]);
|
||||||
|
|
||||||
if (siginfo && bytes > 0 && elapsed > 0.0 && filesize >= 0
|
if (siginfo && bytes > 0 && elapsed > 0.0 && filesize >= 0
|
||||||
&& bytes + restart_point <= filesize) {
|
&& bytes + restart_point <= filesize) {
|
||||||
@ -400,6 +418,16 @@ alarmtimer(int wait)
|
|||||||
sigfunc
|
sigfunc
|
||||||
xsignal_restart(int sig, sigfunc func, int restartable)
|
xsignal_restart(int sig, sigfunc func, int restartable)
|
||||||
{
|
{
|
||||||
|
#ifdef ultrix /* XXX: this is lame - how do we test sigvec vs. sigaction? */
|
||||||
|
struct sigvec vec, ovec;
|
||||||
|
|
||||||
|
vec.sv_handler = func;
|
||||||
|
sigemptyset(&vec.sv_mask);
|
||||||
|
vec.sv_flags = 0;
|
||||||
|
if (sigvec(sig, &vec, &ovec) < 0)
|
||||||
|
return (SIG_ERR);
|
||||||
|
return (ovec.sv_handler);
|
||||||
|
#else /* ! ultrix */
|
||||||
struct sigaction act, oact;
|
struct sigaction act, oact;
|
||||||
act.sa_handler = func;
|
act.sa_handler = func;
|
||||||
|
|
||||||
@ -414,6 +442,7 @@ xsignal_restart(int sig, sigfunc func, int restartable)
|
|||||||
if (sigaction(sig, &act, &oact) < 0)
|
if (sigaction(sig, &act, &oact) < 0)
|
||||||
return (SIG_ERR);
|
return (SIG_ERR);
|
||||||
return (oact.sa_handler);
|
return (oact.sa_handler);
|
||||||
|
#endif /* ! ultrix */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -457,7 +486,7 @@ xsignal(int sig, sigfunc func)
|
|||||||
* This is unpleasant, but I don't know what would be better.
|
* This is unpleasant, but I don't know what would be better.
|
||||||
* Right now, this "can't happen"
|
* Right now, this "can't happen"
|
||||||
*/
|
*/
|
||||||
errx(1, "xsignal_restart called with signal %d", sig);
|
errx(1, "xsignal_restart: called with signal %d", sig);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(xsignal_restart(sig, func, restartable));
|
return(xsignal_restart(sig, func, restartable));
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
/* $NetBSD: progressbar.h,v 1.5 2005/02/10 16:00:38 jmc Exp $ */
|
/* $NetBSD: progressbar.h,v 1.9 2009/05/20 12:53:47 lukem Exp $ */
|
||||||
|
/* from NetBSD: progressbar.h,v 1.8 2009/04/12 10:18:52 lukem Exp */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1996-2003 The NetBSD Foundation, Inc.
|
* Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
* This code is derived from software contributed to The NetBSD Foundation
|
||||||
@ -15,13 +16,6 @@
|
|||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
@ -66,7 +60,7 @@ GLOBAL int fromatty; /* input is from a terminal */
|
|||||||
GLOBAL int verbose; /* print messages coming back from server */
|
GLOBAL int verbose; /* print messages coming back from server */
|
||||||
GLOBAL int quit_time; /* maximum time to wait if stalled */
|
GLOBAL int quit_time; /* maximum time to wait if stalled */
|
||||||
|
|
||||||
GLOBAL char *direction; /* direction transfer is occurring */
|
GLOBAL const char *direction; /* direction transfer is occurring */
|
||||||
|
|
||||||
GLOBAL sigjmp_buf toplevel; /* non-local goto stuff for cmd scanner */
|
GLOBAL sigjmp_buf toplevel; /* non-local goto stuff for cmd scanner */
|
||||||
#endif /* !STANDALONE_PROGRESS */
|
#endif /* !STANDALONE_PROGRESS */
|
||||||
@ -90,10 +84,19 @@ void ptransfer(int);
|
|||||||
# define ULLFP(x) "%" x "lu"
|
# define ULLFP(x) "%" x "lu"
|
||||||
# define ULLT unsigned long
|
# define ULLT unsigned long
|
||||||
#else
|
#else
|
||||||
|
#if defined(HAVE_PRINTF_QD)
|
||||||
|
# define LLF "%qd"
|
||||||
|
# define LLFP(x) "%" x "qd"
|
||||||
|
# define LLT long long
|
||||||
|
# define ULLF "%qu"
|
||||||
|
# define ULLFP(x) "%" x "qu"
|
||||||
|
# define ULLT unsigned long long
|
||||||
|
#else /* !defined(HAVE_PRINTF_QD) */
|
||||||
# define LLF "%lld"
|
# define LLF "%lld"
|
||||||
# define LLFP(x) "%" x "lld"
|
# define LLFP(x) "%" x "lld"
|
||||||
# define LLT long long
|
# define LLT long long
|
||||||
# define ULLF "%llu"
|
# define ULLF "%llu"
|
||||||
# define ULLFP(x) "%" x "llu"
|
# define ULLFP(x) "%" x "llu"
|
||||||
# define ULLT unsigned long long
|
# define ULLT unsigned long long
|
||||||
|
#endif /* !defined(HAVE_PRINTF_QD) */
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/* $NetBSD: ruserpass.c,v 1.29 2003/08/07 11:13:57 agc Exp $ */
|
/* $NetBSD: ruserpass.c,v 1.8 2007/08/06 04:33:24 lukem Exp $ */
|
||||||
|
/* from NetBSD: ruserpass.c,v 1.33 2007/04/17 05:52:04 lukem Exp */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1985, 1993, 1994
|
* Copyright (c) 1985, 1993, 1994
|
||||||
@ -29,12 +30,16 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "tnftp.h"
|
||||||
|
|
||||||
|
#if 0 /* tnftp */
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)ruserpass.c 8.4 (Berkeley) 4/27/95";
|
static char sccsid[] = "@(#)ruserpass.c 8.4 (Berkeley) 4/27/95";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: ruserpass.c,v 1.29 2003/08/07 11:13:57 agc Exp $");
|
__RCSID(" NetBSD: ruserpass.c,v 1.33 2007/04/17 05:52:04 lukem Exp ");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
@ -50,6 +55,8 @@ __RCSID("$NetBSD: ruserpass.c,v 1.29 2003/08/07 11:13:57 agc Exp $");
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#endif /* tnftp */
|
||||||
|
|
||||||
#include "ftp_var.h"
|
#include "ftp_var.h"
|
||||||
|
|
||||||
static int token(void);
|
static int token(void);
|
||||||
@ -66,7 +73,7 @@ static FILE *cfile;
|
|||||||
static char tokval[100];
|
static char tokval[100];
|
||||||
|
|
||||||
static struct toktab {
|
static struct toktab {
|
||||||
char *tokstr;
|
const char *tokstr;
|
||||||
int tval;
|
int tval;
|
||||||
} toktab[] = {
|
} toktab[] = {
|
||||||
{ "default", DEFAULT },
|
{ "default", DEFAULT },
|
||||||
@ -80,11 +87,11 @@ static struct toktab {
|
|||||||
};
|
};
|
||||||
|
|
||||||
int
|
int
|
||||||
ruserpass(const char *host, const char **aname, const char **apass,
|
ruserpass(const char *host, char **aname, char **apass, char **aacct)
|
||||||
const char **aacct)
|
|
||||||
{
|
{
|
||||||
char *tmp;
|
char *tmp;
|
||||||
char myname[MAXHOSTNAMELEN + 1], *mydomain;
|
const char *mydomain;
|
||||||
|
char myname[MAXHOSTNAMELEN + 1];
|
||||||
int t, i, c, usedefault = 0;
|
int t, i, c, usedefault = 0;
|
||||||
struct stat stb;
|
struct stat stb;
|
||||||
|
|
||||||
@ -93,7 +100,7 @@ ruserpass(const char *host, const char **aname, const char **apass,
|
|||||||
cfile = fopen(netrc, "r");
|
cfile = fopen(netrc, "r");
|
||||||
if (cfile == NULL) {
|
if (cfile == NULL) {
|
||||||
if (errno != ENOENT)
|
if (errno != ENOENT)
|
||||||
warn("%s", netrc);
|
warn("Can't read `%s'", netrc);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
if (gethostname(myname, sizeof(myname)) < 0)
|
if (gethostname(myname, sizeof(myname)) < 0)
|
||||||
@ -102,7 +109,7 @@ ruserpass(const char *host, const char **aname, const char **apass,
|
|||||||
if ((mydomain = strchr(myname, '.')) == NULL)
|
if ((mydomain = strchr(myname, '.')) == NULL)
|
||||||
mydomain = "";
|
mydomain = "";
|
||||||
next:
|
next:
|
||||||
while ((t = token())) switch(t) {
|
while ((t = token()) > 0) switch(t) {
|
||||||
|
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
usedefault = 1;
|
usedefault = 1;
|
||||||
@ -110,7 +117,9 @@ ruserpass(const char *host, const char **aname, const char **apass,
|
|||||||
|
|
||||||
case MACH:
|
case MACH:
|
||||||
if (!usedefault) {
|
if (!usedefault) {
|
||||||
if (token() != ID)
|
if ((t = token()) == -1)
|
||||||
|
goto bad;
|
||||||
|
if (t != ID)
|
||||||
continue;
|
continue;
|
||||||
/*
|
/*
|
||||||
* Allow match either for user's input host name
|
* Allow match either for user's input host name
|
||||||
@ -134,12 +143,15 @@ ruserpass(const char *host, const char **aname, const char **apass,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
match:
|
match:
|
||||||
while ((t = token()) && t != MACH && t != DEFAULT) switch(t) {
|
while ((t = token()) > 0 &&
|
||||||
|
t != MACH && t != DEFAULT) switch(t) {
|
||||||
|
|
||||||
case LOGIN:
|
case LOGIN:
|
||||||
if (token()) {
|
if ((t = token()) == -1)
|
||||||
|
goto bad;
|
||||||
|
if (t) {
|
||||||
if (*aname == NULL)
|
if (*aname == NULL)
|
||||||
*aname = xstrdup(tokval);
|
*aname = ftp_strdup(tokval);
|
||||||
else {
|
else {
|
||||||
if (strcmp(*aname, tokval))
|
if (strcmp(*aname, tokval))
|
||||||
goto next;
|
goto next;
|
||||||
@ -150,22 +162,26 @@ ruserpass(const char *host, const char **aname, const char **apass,
|
|||||||
if ((*aname == NULL || strcmp(*aname, "anonymous")) &&
|
if ((*aname == NULL || strcmp(*aname, "anonymous")) &&
|
||||||
fstat(fileno(cfile), &stb) >= 0 &&
|
fstat(fileno(cfile), &stb) >= 0 &&
|
||||||
(stb.st_mode & 077) != 0) {
|
(stb.st_mode & 077) != 0) {
|
||||||
warnx("Error: .netrc file is readable by others.");
|
warnx("Error: .netrc file is readable by others");
|
||||||
warnx("Remove password or make file unreadable by others.");
|
warnx("Remove password or make file unreadable by others");
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
if (token() && *apass == NULL)
|
if ((t = token()) == -1)
|
||||||
*apass = xstrdup(tokval);
|
goto bad;
|
||||||
|
if (t && *apass == NULL)
|
||||||
|
*apass = ftp_strdup(tokval);
|
||||||
break;
|
break;
|
||||||
case ACCOUNT:
|
case ACCOUNT:
|
||||||
if (fstat(fileno(cfile), &stb) >= 0
|
if (fstat(fileno(cfile), &stb) >= 0
|
||||||
&& (stb.st_mode & 077) != 0) {
|
&& (stb.st_mode & 077) != 0) {
|
||||||
warnx("Error: .netrc file is readable by others.");
|
warnx("Error: .netrc file is readable by others");
|
||||||
warnx("Remove account or make file unreadable by others.");
|
warnx("Remove account or make file unreadable by others");
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
if (token() && *aacct == NULL)
|
if ((t = token()) == -1)
|
||||||
*aacct = xstrdup(tokval);
|
goto bad;
|
||||||
|
if (t && *aacct == NULL)
|
||||||
|
*aacct = ftp_strdup(tokval);
|
||||||
break;
|
break;
|
||||||
case MACDEF:
|
case MACDEF:
|
||||||
if (proxy) {
|
if (proxy) {
|
||||||
@ -225,9 +241,13 @@ ruserpass(const char *host, const char **aname, const char **apass,
|
|||||||
}
|
}
|
||||||
*tmp = c;
|
*tmp = c;
|
||||||
if (*tmp == '\n') {
|
if (*tmp == '\n') {
|
||||||
if (*(tmp-1) == '\0') {
|
if (tmp == macros[macnum].mac_start) {
|
||||||
macros[macnum++].mac_end = tmp - 1;
|
macros[macnum++].mac_end = tmp;
|
||||||
break;
|
break;
|
||||||
|
} else if (*(tmp - 1) == '\0') {
|
||||||
|
macros[macnum++].mac_end =
|
||||||
|
tmp - 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
*tmp = '\0';
|
*tmp = '\0';
|
||||||
}
|
}
|
||||||
@ -240,12 +260,14 @@ ruserpass(const char *host, const char **aname, const char **apass,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
warnx("Unknown .netrc keyword %s", tokval);
|
warnx("Unknown .netrc keyword `%s'", tokval);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
done:
|
done:
|
||||||
|
if (t == -1)
|
||||||
|
goto bad;
|
||||||
(void)fclose(cfile);
|
(void)fclose(cfile);
|
||||||
return (0);
|
return (0);
|
||||||
bad:
|
bad:
|
||||||
@ -271,16 +293,26 @@ token(void)
|
|||||||
if (c == '"') {
|
if (c == '"') {
|
||||||
while ((c = getc(cfile)) != EOF && c != '"') {
|
while ((c = getc(cfile)) != EOF && c != '"') {
|
||||||
if (c == '\\')
|
if (c == '\\')
|
||||||
c = getc(cfile);
|
if ((c = getc(cfile)) == EOF)
|
||||||
|
break;
|
||||||
*cp++ = c;
|
*cp++ = c;
|
||||||
|
if (cp == tokval + sizeof(tokval)) {
|
||||||
|
warnx("Token in .netrc too long");
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
*cp++ = c;
|
*cp++ = c;
|
||||||
while ((c = getc(cfile)) != EOF
|
while ((c = getc(cfile)) != EOF
|
||||||
&& c != '\n' && c != '\t' && c != ' ' && c != ',') {
|
&& c != '\n' && c != '\t' && c != ' ' && c != ',') {
|
||||||
if (c == '\\')
|
if (c == '\\')
|
||||||
c = getc(cfile);
|
if ((c = getc(cfile)) == EOF)
|
||||||
|
break;
|
||||||
*cp++ = c;
|
*cp++ = c;
|
||||||
|
if (cp == tokval + sizeof(tokval)) {
|
||||||
|
warnx("Token in .netrc too long");
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*cp = 0;
|
*cp = 0;
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,8 @@
|
|||||||
/* $NetBSD: version.h,v 1.50 2005/05/14 15:26:43 lukem Exp $ */
|
/* $NetBSD: version.h,v 1.4 2009/11/15 10:12:37 lukem Exp $ */
|
||||||
|
/* from NetBSD: version.h,v 1.80 2009/11/15 10:03:16 lukem Exp */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1999-2005 The NetBSD Foundation, Inc.
|
* Copyright (c) 1999-2009 The NetBSD Foundation, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
* This code is derived from software contributed to The NetBSD Foundation
|
||||||
@ -14,13 +16,6 @@
|
|||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* 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 NetBSD
|
|
||||||
* Foundation, Inc. and its contributors.
|
|
||||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
@ -40,5 +35,5 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef FTP_VERSION
|
#ifndef FTP_VERSION
|
||||||
#define FTP_VERSION "20050514"
|
#define FTP_VERSION "20090915"
|
||||||
#endif
|
#endif
|
||||||
|
495
contrib/tnftp/tnftp.h
Normal file
495
contrib/tnftp/tnftp.h
Normal file
@ -0,0 +1,495 @@
|
|||||||
|
/* $NetBSD: tnftp.h,v 1.33 2009/11/14 08:32:42 lukem Exp $ */
|
||||||
|
|
||||||
|
#define FTP_PRODUCT PACKAGE_NAME
|
||||||
|
#define FTP_VERSION PACKAGE_VERSION
|
||||||
|
|
||||||
|
#include "tnftp_config.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#if defined(HAVE_SYS_TYPES_H)
|
||||||
|
# include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#if defined(STDC_HEADERS)
|
||||||
|
# include <stdarg.h>
|
||||||
|
# include <stdlib.h>
|
||||||
|
# include <string.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_LIBGEN_H)
|
||||||
|
# include <libgen.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_UNISTD_H)
|
||||||
|
# include <unistd.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_POLL_H)
|
||||||
|
# include <poll.h>
|
||||||
|
#elif defined(HAVE_SYS_POLL_H)
|
||||||
|
# include <sys/poll.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_SYS_SOCKET_H)
|
||||||
|
# include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_NETINET_IN_H)
|
||||||
|
# include <netinet/in.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_NETINET_IN_SYSTM_H)
|
||||||
|
# include <netinet/in_systm.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_NETINET_IP_H)
|
||||||
|
# include <netinet/ip.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_NETDB_H)
|
||||||
|
# if HAVE_DECL_AI_NUMERICHOST
|
||||||
|
# include <netdb.h>
|
||||||
|
# else /* !HAVE_DECL_AI_NUMERICHOST */
|
||||||
|
# define getaddrinfo non_rfc2553_getaddrinfo
|
||||||
|
# include <netdb.h>
|
||||||
|
# undef getaddrinfo
|
||||||
|
# endif /* !HAVE_DECL_AI_NUMERICHOST */
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_ARPA_INET_H)
|
||||||
|
# include <arpa/inet.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_DIRENT_H)
|
||||||
|
# include <dirent.h>
|
||||||
|
#else
|
||||||
|
# define dirent direct
|
||||||
|
# if defined(HAVE_SYS_NDIR_H)
|
||||||
|
# include <sys/ndir.h>
|
||||||
|
# endif
|
||||||
|
# if defined(HAVE_SYS_DIR_H)
|
||||||
|
# include <sys/dir.h>
|
||||||
|
# endif
|
||||||
|
# if defined(HAVE_NDIR_H)
|
||||||
|
# include <ndir.h>
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_SYS_IOCTL_H)
|
||||||
|
# include <sys/ioctl.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_SYS_PARAM_H)
|
||||||
|
# include <sys/param.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_SYS_STAT_H)
|
||||||
|
# include <sys/stat.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_SYS_SYSLIMITS_H)
|
||||||
|
# include <sys/syslimits.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_SYS_WAIT_H)
|
||||||
|
# include <sys/wait.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_ARPA_FTP_H)
|
||||||
|
# include <arpa/ftp.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_FCNTL_H)
|
||||||
|
# include <fcntl.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_LIMITS_H)
|
||||||
|
# include <limits.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_PWD_H)
|
||||||
|
# include <pwd.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_SETJMP_H)
|
||||||
|
# include <setjmp.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_SIGNAL_H)
|
||||||
|
# include <signal.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_STDDEF_H)
|
||||||
|
# include <stddef.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_TERMIOS_H)
|
||||||
|
# include <termios.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_POLL)
|
||||||
|
/* we use poll */
|
||||||
|
#elif defined(HAVE_SELECT)
|
||||||
|
/* we use select */
|
||||||
|
#else /* !defined(HAVE_POLL) && !defined(HAVE_SELECT) */
|
||||||
|
# error "no poll() or select() found"
|
||||||
|
#endif
|
||||||
|
#if !defined(POLLIN)
|
||||||
|
# define POLLIN 0x0001
|
||||||
|
#endif
|
||||||
|
#if !defined(POLLOUT)
|
||||||
|
# define POLLOUT 0x0004
|
||||||
|
#endif
|
||||||
|
#if !defined(POLLRDNORM)
|
||||||
|
# define POLLRDNORM 0x0040
|
||||||
|
#endif
|
||||||
|
#if !defined(POLLWRNORM)
|
||||||
|
# define POLLWRNORM POLLOUT
|
||||||
|
#endif
|
||||||
|
#if !defined(POLLRDBAND)
|
||||||
|
# define POLLRDBAND 0x0080
|
||||||
|
#endif
|
||||||
|
#if !defined(INFTIM)
|
||||||
|
# define INFTIM -1
|
||||||
|
#endif
|
||||||
|
#if !defined(HAVE_STRUCT_POLLFD)
|
||||||
|
struct pollfd {
|
||||||
|
int fd;
|
||||||
|
short events;
|
||||||
|
short revents;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(TIME_WITH_SYS_TIME)
|
||||||
|
# include <sys/time.h>
|
||||||
|
# include <time.h>
|
||||||
|
#else
|
||||||
|
# if defined(HAVE_SYS_TIME_H)
|
||||||
|
# include <sys/time.h>
|
||||||
|
# else
|
||||||
|
# include <time.h>
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_ERR_H)
|
||||||
|
# include <err.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(USE_GLOB_H) /* not set by configure; used by other build systems */
|
||||||
|
# include <glob.h>
|
||||||
|
#else
|
||||||
|
# include "ftpglob.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_PATHS_H)
|
||||||
|
# include <paths.h>
|
||||||
|
#endif
|
||||||
|
#if !defined(_PATH_BSHELL)
|
||||||
|
# define _PATH_BSHELL "/bin/sh"
|
||||||
|
#endif
|
||||||
|
#if !defined(_PATH_TMP)
|
||||||
|
# define _PATH_TMP "/tmp/"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct _stringlist {
|
||||||
|
char **sl_str;
|
||||||
|
size_t sl_max;
|
||||||
|
size_t sl_cur;
|
||||||
|
} StringList;
|
||||||
|
|
||||||
|
StringList *sl_init(void);
|
||||||
|
int sl_add(StringList *, char *);
|
||||||
|
void sl_free(StringList *, int);
|
||||||
|
char *sl_find(StringList *, char *);
|
||||||
|
|
||||||
|
#if defined(HAVE_TERMCAP_H)
|
||||||
|
# include <termcap.h>
|
||||||
|
#else
|
||||||
|
int tgetent(char *, const char *);
|
||||||
|
char *tgetstr(const char *, char **);
|
||||||
|
int tgetflag(const char *);
|
||||||
|
int tgetnum(const char *);
|
||||||
|
char *tgoto(const char *, int, int);
|
||||||
|
void tputs(const char *, int, int (*)(int));
|
||||||
|
#endif /* !HAVE_TERMCAP_H */
|
||||||
|
|
||||||
|
#if defined(HAVE_VIS_H) && defined(HAVE_STRVIS) && defined(HAVE_STRUNVIS)
|
||||||
|
# include <vis.h>
|
||||||
|
#else
|
||||||
|
# include "ftpvis.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_IN_PORT_T)
|
||||||
|
typedef unsigned short in_port_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_SA_FAMILY_T)
|
||||||
|
typedef unsigned short sa_family_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_SOCKLEN_T)
|
||||||
|
typedef unsigned int socklen_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(USE_INET6)
|
||||||
|
# define INET6
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !HAVE_DECL_AI_NUMERICHOST
|
||||||
|
|
||||||
|
/* RFC 2553 */
|
||||||
|
#undef EAI_ADDRFAMILY
|
||||||
|
#define EAI_ADDRFAMILY 1 /* address family for hostname not supported */
|
||||||
|
#undef EAI_AGAIN
|
||||||
|
#define EAI_AGAIN 2 /* temporary failure in name resolution */
|
||||||
|
#undef EAI_BADFLAGS
|
||||||
|
#define EAI_BADFLAGS 3 /* invalid value for ai_flags */
|
||||||
|
#undef EAI_FAIL
|
||||||
|
#define EAI_FAIL 4 /* non-recoverable failure in name resolution */
|
||||||
|
#undef EAI_FAMILY
|
||||||
|
#define EAI_FAMILY 5 /* ai_family not supported */
|
||||||
|
#undef EAI_MEMORY
|
||||||
|
#define EAI_MEMORY 6 /* memory allocation failure */
|
||||||
|
#undef EAI_NODATA
|
||||||
|
#define EAI_NODATA 7 /* no address associated with hostname */
|
||||||
|
#undef EAI_NONAME
|
||||||
|
#define EAI_NONAME 8 /* hostname nor servname provided, or not known */
|
||||||
|
#undef EAI_SERVICE
|
||||||
|
#define EAI_SERVICE 9 /* servname not supported for ai_socktype */
|
||||||
|
#undef EAI_SOCKTYPE
|
||||||
|
#define EAI_SOCKTYPE 10 /* ai_socktype not supported */
|
||||||
|
#undef EAI_SYSTEM
|
||||||
|
#define EAI_SYSTEM 11 /* system error returned in errno */
|
||||||
|
|
||||||
|
/* KAME extensions? */
|
||||||
|
#undef EAI_BADHINTS
|
||||||
|
#define EAI_BADHINTS 12
|
||||||
|
#undef EAI_PROTOCOL
|
||||||
|
#define EAI_PROTOCOL 13
|
||||||
|
#undef EAI_MAX
|
||||||
|
#define EAI_MAX 14
|
||||||
|
|
||||||
|
/* RFC 2553 */
|
||||||
|
#undef NI_MAXHOST
|
||||||
|
#define NI_MAXHOST 1025
|
||||||
|
#undef NI_MAXSERV
|
||||||
|
#define NI_MAXSERV 32
|
||||||
|
|
||||||
|
#undef NI_NOFQDN
|
||||||
|
#define NI_NOFQDN 0x00000001
|
||||||
|
#undef NI_NUMERICHOST
|
||||||
|
#define NI_NUMERICHOST 0x00000002
|
||||||
|
#undef NI_NAMEREQD
|
||||||
|
#define NI_NAMEREQD 0x00000004
|
||||||
|
#undef NI_NUMERICSERV
|
||||||
|
#define NI_NUMERICSERV 0x00000008
|
||||||
|
#undef NI_DGRAM
|
||||||
|
#define NI_DGRAM 0x00000010
|
||||||
|
|
||||||
|
/* RFC 2553 */
|
||||||
|
#undef AI_PASSIVE
|
||||||
|
#define AI_PASSIVE 0x00000001 /* get address to use bind() */
|
||||||
|
#undef AI_CANONNAME
|
||||||
|
#define AI_CANONNAME 0x00000002 /* fill ai_canonname */
|
||||||
|
|
||||||
|
/* KAME extensions ? */
|
||||||
|
#undef AI_NUMERICHOST
|
||||||
|
#define AI_NUMERICHOST 0x00000004 /* prevent name resolution */
|
||||||
|
#undef AI_MASK
|
||||||
|
#define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST)
|
||||||
|
|
||||||
|
/* RFC 2553 */
|
||||||
|
#undef AI_ALL
|
||||||
|
#define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
|
||||||
|
#undef AI_V4MAPPED_CFG
|
||||||
|
#define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */
|
||||||
|
#undef AI_ADDRCONFIG
|
||||||
|
#define AI_ADDRCONFIG 0x00000400 /* only if any address is assigned */
|
||||||
|
#undef AI_V4MAPPED
|
||||||
|
#define AI_V4MAPPED 0x00000800 /* accept IPv4-mapped IPv6 address */
|
||||||
|
|
||||||
|
#endif /* !HAVE_DECL_AI_NUMERICHOST */
|
||||||
|
|
||||||
|
|
||||||
|
#if !HAVE_DECL_AI_NUMERICHOST && !defined(HAVE_STRUCT_ADDRINFO) \
|
||||||
|
&& !defined(USE_SOCKS)
|
||||||
|
|
||||||
|
struct addrinfo {
|
||||||
|
int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
|
||||||
|
int ai_family; /* PF_xxx */
|
||||||
|
int ai_socktype; /* SOCK_xxx */
|
||||||
|
int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
|
||||||
|
socklen_t ai_addrlen; /* length of ai_addr */
|
||||||
|
char *ai_canonname; /* canonical name for hostname */
|
||||||
|
struct sockaddr *ai_addr; /* binary address */
|
||||||
|
struct addrinfo *ai_next; /* next structure in linked list */
|
||||||
|
};
|
||||||
|
|
||||||
|
int getaddrinfo(const char *, const char *,
|
||||||
|
const struct addrinfo *, struct addrinfo **);
|
||||||
|
int getnameinfo(const struct sockaddr *, socklen_t,
|
||||||
|
char *, size_t, char *, size_t, int);
|
||||||
|
void freeaddrinfo(struct addrinfo *);
|
||||||
|
const char *gai_strerror(int);
|
||||||
|
|
||||||
|
#endif /* !HAVE_DECL_AI_NUMERICHOST && !defined(HAVE_STRUCT_ADDRINFO) \
|
||||||
|
&& !defined(USE_SOCKS) */
|
||||||
|
|
||||||
|
#if !defined(HAVE_STRUCT_DIRENT_D_NAMLEN)
|
||||||
|
# define DIRENT_MISSING_D_NAMLEN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !HAVE_DECL_H_ERRNO
|
||||||
|
extern int h_errno;
|
||||||
|
#endif
|
||||||
|
#define HAVE_H_ERRNO 1 /* XXX: an assumption for now... */
|
||||||
|
|
||||||
|
#if !HAVE_DECL_FCLOSE
|
||||||
|
int fclose(FILE *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !HAVE_DECL_GETPASS
|
||||||
|
char *getpass(const char *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !HAVE_DECL_OPTARG
|
||||||
|
extern char *optarg;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !HAVE_DECL_OPTIND
|
||||||
|
extern int optind;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !HAVE_DECL_PCLOSE
|
||||||
|
int pclose(FILE *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !HAVE_DECL_DIRNAME
|
||||||
|
char *dirname(char *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_ERR)
|
||||||
|
void err(int, const char *, ...);
|
||||||
|
void errx(int, const char *, ...);
|
||||||
|
void warn(const char *, ...);
|
||||||
|
void warnx(const char *, ...);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_FGETLN)
|
||||||
|
char *fgetln(FILE *, size_t *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_FSEEKO)
|
||||||
|
int fseeko(FILE *, off_t, int);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_INET_NTOP)
|
||||||
|
const char *inet_ntop(int, const void *, char *, socklen_t);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_INET_PTON)
|
||||||
|
int inet_pton(int, const char *, void *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_MKSTEMP)
|
||||||
|
int mkstemp(char *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_SETPROGNAME)
|
||||||
|
const char *getprogname(void);
|
||||||
|
void setprogname(const char *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_SNPRINTF)
|
||||||
|
int snprintf(char *, size_t, const char *, ...);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_STRDUP)
|
||||||
|
char *strdup(const char *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_STRERROR)
|
||||||
|
char *strerror(int);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_STRPTIME) || !HAVE_DECL_STRPTIME
|
||||||
|
char *strptime(const char *, const char *, struct tm *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_PRINTF_LONG_LONG) && defined(HAVE_LONG_LONG_INT)
|
||||||
|
# if !defined(HAVE_STRTOLL)
|
||||||
|
long long strtoll(const char *, char **, int);
|
||||||
|
# endif
|
||||||
|
# if !defined(LLONG_MIN)
|
||||||
|
# define LLONG_MIN (-0x7fffffffffffffffLL-1)
|
||||||
|
# endif
|
||||||
|
# if !defined(LLONG_MAX)
|
||||||
|
# define LLONG_MAX (0x7fffffffffffffffLL)
|
||||||
|
# endif
|
||||||
|
#else /* !(defined(HAVE_PRINTF_LONG_LONG) && defined(HAVE_LONG_LONG_INT)) */
|
||||||
|
# define NO_LONG_LONG 1
|
||||||
|
#endif /* !(defined(HAVE_PRINTF_LONG_LONG) && defined(HAVE_LONG_LONG_INT)) */
|
||||||
|
|
||||||
|
#if !defined(HAVE_TIMEGM)
|
||||||
|
time_t timegm(struct tm *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_STRLCAT)
|
||||||
|
size_t strlcat(char *, const char *, size_t);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_STRLCPY)
|
||||||
|
size_t strlcpy(char *, const char *, size_t);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_STRSEP)
|
||||||
|
char *strsep(char **stringp, const char *delim);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_UTIMES)
|
||||||
|
int utimes(const char *, const struct timeval *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAVE_MEMMOVE)
|
||||||
|
# define memmove(a,b,c) bcopy((b),(a),(c))
|
||||||
|
/* XXX: add others #defines for borken systems? */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_GETPASSPHRASE)
|
||||||
|
# define getpass getpassphrase
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(MIN)
|
||||||
|
# define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||||
|
#endif
|
||||||
|
#if !defined(MAX)
|
||||||
|
# define MAX(a, b) ((a) < (b) ? (b) : (a))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(timersub)
|
||||||
|
# define timersub(tvp, uvp, vvp) \
|
||||||
|
do { \
|
||||||
|
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
|
||||||
|
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
|
||||||
|
if ((vvp)->tv_usec < 0) { \
|
||||||
|
(vvp)->tv_sec--; \
|
||||||
|
(vvp)->tv_usec += 1000000; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(S_ISLNK)
|
||||||
|
# define S_ISLNK(m) ((m & S_IFMT) == S_IFLNK)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define EPOCH_YEAR 1970
|
||||||
|
#define SECSPERHOUR 3600
|
||||||
|
#define SECSPERDAY 86400
|
||||||
|
#define TM_YEAR_BASE 1900
|
||||||
|
|
||||||
|
#if defined(USE_SOCKS) /* (Dante) SOCKS5 */
|
||||||
|
#define connect Rconnect
|
||||||
|
#define bind Rbind
|
||||||
|
#define getsockname Rgetsockname
|
||||||
|
#define getpeername Rgetpeername
|
||||||
|
#define accept Raccept
|
||||||
|
#define rresvport Rrresvport
|
||||||
|
#define bindresvport Rbindresvport
|
||||||
|
#define gethostbyname Rgethostbyname
|
||||||
|
#define gethostbyname2 Rgethostbyname2
|
||||||
|
#define sendto Rsendto
|
||||||
|
#define recvfrom Rrecvfrom
|
||||||
|
#define recvfrom Rrecvfrom
|
||||||
|
#define write Rwrite
|
||||||
|
#define writev Rwritev
|
||||||
|
#define send Rsend
|
||||||
|
#define sendmsg Rsendmsg
|
||||||
|
#define read Rread
|
||||||
|
#define readv Rreadv
|
||||||
|
#define recv Rrecv
|
||||||
|
#define recvmsg Rrecvmsg
|
||||||
|
#define getaddrinfo Rgetaddrinfo
|
||||||
|
#define getipnodebyname Rgetipnodebyname
|
||||||
|
#endif /* defined(USE_SOCKS) */
|
@ -1,23 +1,23 @@
|
|||||||
$Id: todo,v 1.30 2002/06/10 08:08:53 lukem Exp $
|
$NetBSD: todo,v 1.12 2008/12/20 15:17:58 lukem Exp $
|
||||||
|
|
||||||
update NEWS, README, ...
|
Current Items
|
||||||
|
-------------
|
||||||
|
|
||||||
at end of configure, show summary of options used and features found
|
autoconf test for HAVE_DECL_GETADDRINFO if providing getaddrinfo() override.
|
||||||
|
(required for UnixWare 7.1.1)
|
||||||
|
|
||||||
if socks is defined, disable ipv6 and use own getaddrinfo()/getnameinfo()
|
Interix may need hack to fix detection of getpgrp() void args.
|
||||||
(for tron)
|
(See pkgsrc/net/tnftp/files/src/progressbar.c 1.2)
|
||||||
|
|
||||||
|
Old Items
|
||||||
|
---------
|
||||||
|
|
||||||
add locale autoconf checks
|
add locale autoconf checks
|
||||||
|
|
||||||
AC_CHECK_SIZEOF(off_t, 0) doesn't work on FreeBSD 4.0 because the
|
|
||||||
test doesn't include <sys/types.h>. fix autoconf?
|
|
||||||
|
|
||||||
in configure, check for ansi c compiler and barf if it fails
|
in configure, check for ansi c compiler and barf if it fails
|
||||||
|
|
||||||
check if we need #defines for memcpy() et al
|
check if we need #defines for memcpy() et al
|
||||||
|
|
||||||
check for utimes() decls [which system?]
|
|
||||||
|
|
||||||
possibly install editline.3 and editrc.5
|
possibly install editline.3 and editrc.5
|
||||||
|
|
||||||
system specific tests (to remove need for manual intervention):
|
system specific tests (to remove need for manual intervention):
|
||||||
|
@ -8,18 +8,18 @@
|
|||||||
#
|
#
|
||||||
#CFLAGS+=-DGATE_SERVER=\"ftp-gw.host\" # -DGATE_PORT=21
|
#CFLAGS+=-DGATE_SERVER=\"ftp-gw.host\" # -DGATE_PORT=21
|
||||||
|
|
||||||
LUKEMFTP= ${.CURDIR}/../../contrib/lukemftp
|
TNFTP= ${.CURDIR}/../../contrib/tnftp
|
||||||
.PATH: ${LUKEMFTP}/src
|
.PATH: ${TNFTP}/src
|
||||||
|
|
||||||
PROG= ftp
|
PROG= ftp
|
||||||
SRCS= cmds.c cmdtab.c complete.c domacro.c fetch.c ftp.c main.c progressbar.c \
|
SRCS= cmds.c cmdtab.c complete.c domacro.c fetch.c ftp.c main.c \
|
||||||
ruserpass.c util.c
|
progressbar.c ruserpass.c util.c
|
||||||
|
|
||||||
.if ${MK_INET6_SUPPORT} != "no"
|
.if ${MK_INET6_SUPPORT} != "no"
|
||||||
CFLAGS+= -DINET6
|
CFLAGS+= -DINET6
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
CFLAGS+= -I${.CURDIR} -I${LUKEMFTP}
|
CFLAGS+= -I${.CURDIR} -I${TNFTP}
|
||||||
LDADD= -ledit -ltermcap -lutil
|
LDADD= -ledit -ltermcap -lutil
|
||||||
DPADD= ${LIBEDIT} ${LIBTERMCAP} ${LIBUTIL}
|
DPADD= ${LIBEDIT} ${LIBTERMCAP} ${LIBUTIL}
|
||||||
|
|
||||||
|
@ -1,285 +0,0 @@
|
|||||||
/* $FreeBSD$ */
|
|
||||||
|
|
||||||
|
|
||||||
/* config.h. Generated automatically by configure. */
|
|
||||||
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
|
||||||
/* $Id: config.h.in,v 1.24 2000/09/18 00:40:12 lukem Exp $ */
|
|
||||||
|
|
||||||
|
|
||||||
/* Define if on AIX 3.
|
|
||||||
System headers sometimes define this.
|
|
||||||
We just want to avoid a redefinition error message. */
|
|
||||||
#ifndef _ALL_SOURCE
|
|
||||||
/* #undef _ALL_SOURCE */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if the closedir function returns void instead of int. */
|
|
||||||
/* #undef CLOSEDIR_VOID */
|
|
||||||
|
|
||||||
/* Define if the `getpgrp' function takes no argument. */
|
|
||||||
#define GETPGRP_VOID 1
|
|
||||||
|
|
||||||
/* Define if your C compiler doesn't accept -c and -o together. */
|
|
||||||
/* #undef NO_MINUS_C_MINUS_O */
|
|
||||||
|
|
||||||
/* Define if your Fortran 77 compiler doesn't accept -c and -o together. */
|
|
||||||
/* #undef F77_NO_MINUS_C_MINUS_O */
|
|
||||||
|
|
||||||
/* Define to `long' if <sys/types.h> doesn't define. */
|
|
||||||
/* #undef off_t */
|
|
||||||
|
|
||||||
/* Define to the type of arg1 for select(). */
|
|
||||||
/* #undef SELECT_TYPE_ARG1 */
|
|
||||||
|
|
||||||
/* Define to the type of args 2, 3 and 4 for select(). */
|
|
||||||
/* #undef SELECT_TYPE_ARG234 */
|
|
||||||
|
|
||||||
/* Define to the type of arg5 for select(). */
|
|
||||||
/* #undef SELECT_TYPE_ARG5 */
|
|
||||||
|
|
||||||
/* Define if you have the ANSI C header files. */
|
|
||||||
#define STDC_HEADERS 1
|
|
||||||
|
|
||||||
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
|
||||||
#define TIME_WITH_SYS_TIME 1
|
|
||||||
|
|
||||||
/* Define if the closedir function returns void instead of int. */
|
|
||||||
/* #undef VOID_CLOSEDIR */
|
|
||||||
|
|
||||||
/* The number of bytes in a off_t. */
|
|
||||||
#define SIZEOF_OFF_T 0
|
|
||||||
|
|
||||||
/* Define if you have the err function. */
|
|
||||||
#define HAVE_ERR 1
|
|
||||||
|
|
||||||
/* Define if you have the fgetln function. */
|
|
||||||
#define HAVE_FGETLN 1
|
|
||||||
|
|
||||||
/* Define if you have the fparseln function. */
|
|
||||||
#define HAVE_FPARSELN 1
|
|
||||||
|
|
||||||
/* Define if you have the fseeko function. */
|
|
||||||
#define HAVE_FSEEKO 1
|
|
||||||
|
|
||||||
/* Define if you have the getaddrinfo function. */
|
|
||||||
#define HAVE_GETADDRINFO 1
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyname2 function. */
|
|
||||||
#define HAVE_GETHOSTBYNAME2 1
|
|
||||||
|
|
||||||
/* Define if you have the getnameinfo function. */
|
|
||||||
#define HAVE_GETNAMEINFO 1
|
|
||||||
|
|
||||||
/* Define if you have the getpassphrase function. */
|
|
||||||
/* #undef HAVE_GETPASSPHRASE */
|
|
||||||
|
|
||||||
/* Define if you have the getpgrp function. */
|
|
||||||
#define HAVE_GETPGRP 1
|
|
||||||
|
|
||||||
/* Define if you have the glob function. */
|
|
||||||
#define USE_GLOB_H 1
|
|
||||||
|
|
||||||
/* Define if you have the inet_ntop function. */
|
|
||||||
#define HAVE_INET_NTOP 1
|
|
||||||
|
|
||||||
/* Define if you have the inet_pton function. */
|
|
||||||
#define HAVE_INET_PTON 1
|
|
||||||
|
|
||||||
/* Define if you have the issetugid function. */
|
|
||||||
#define HAVE_ISSETUGID 1
|
|
||||||
|
|
||||||
/* Define if you have the memmove function. */
|
|
||||||
#define HAVE_MEMMOVE 1
|
|
||||||
|
|
||||||
/* Define if you have the mkstemp function. */
|
|
||||||
#define HAVE_MKSTEMP 1
|
|
||||||
|
|
||||||
/* Define if you have the poll function. */
|
|
||||||
#define HAVE_POLL 1
|
|
||||||
|
|
||||||
/* Define if you have the select function. */
|
|
||||||
#define HAVE_SELECT 1
|
|
||||||
|
|
||||||
/* Define if you have the setprogname function. */
|
|
||||||
#define HAVE_SETPROGNAME 1
|
|
||||||
|
|
||||||
/* Define if you have the sl_init function. */
|
|
||||||
#define HAVE_SL_INIT 1
|
|
||||||
|
|
||||||
/* Define if you have the snprintf function. */
|
|
||||||
#define HAVE_SNPRINTF 1
|
|
||||||
|
|
||||||
/* Define if you have the strdup function. */
|
|
||||||
#define HAVE_STRDUP 1
|
|
||||||
|
|
||||||
/* Define if you have the strerror function. */
|
|
||||||
#define HAVE_STRERROR 1
|
|
||||||
|
|
||||||
/* Define if you have the strlcat function. */
|
|
||||||
#define HAVE_STRLCAT 1
|
|
||||||
|
|
||||||
/* Define if you have the strlcpy function. */
|
|
||||||
#define HAVE_STRLCPY 1
|
|
||||||
|
|
||||||
/* Define if you have the strptime function. */
|
|
||||||
#define HAVE_STRPTIME 1
|
|
||||||
|
|
||||||
/* Define if you have the strsep function. */
|
|
||||||
#define HAVE_STRSEP 1
|
|
||||||
|
|
||||||
/* Define if you have the strtoll function. */
|
|
||||||
#define HAVE_STRTOLL 1
|
|
||||||
|
|
||||||
/* Define if you have the strunvis function. */
|
|
||||||
#define HAVE_STRUNVIS 1
|
|
||||||
|
|
||||||
/* Define if you have the strvis function. */
|
|
||||||
#define HAVE_STRVIS 1
|
|
||||||
|
|
||||||
/* Define if you have the timegm function. */
|
|
||||||
#define HAVE_TIMEGM 1
|
|
||||||
|
|
||||||
/* Define if you have the usleep function. */
|
|
||||||
#define HAVE_USLEEP 1
|
|
||||||
|
|
||||||
/* Define if you have the <arpa/nameser.h> header file. */
|
|
||||||
#define HAVE_ARPA_NAMESER_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <dirent.h> header file. */
|
|
||||||
#define HAVE_DIRENT_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <err.h> header file. */
|
|
||||||
#define HAVE_ERR_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <libutil.h> header file. */
|
|
||||||
#define HAVE_LIBUTIL_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <ndir.h> header file. */
|
|
||||||
/* #undef HAVE_NDIR_H */
|
|
||||||
|
|
||||||
/* Define if you have the <paths.h> header file. */
|
|
||||||
#define HAVE_PATHS_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <poll.h> header file. */
|
|
||||||
#define HAVE_POLL_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <regex.h> header file. */
|
|
||||||
#define HAVE_REGEX_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <sys/dir.h> header file. */
|
|
||||||
#define HAVE_SYS_DIR_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <sys/ndir.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_NDIR_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/poll.h> header file. */
|
|
||||||
#define HAVE_SYS_POLL_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <termcap.h> header file. */
|
|
||||||
#define HAVE_TERMCAP_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <util.h> header file. */
|
|
||||||
/* #undef HAVE_UTIL_H */
|
|
||||||
|
|
||||||
/* Define if you have the <vis.h> header file. */
|
|
||||||
#define HAVE_VIS_H 1
|
|
||||||
|
|
||||||
/* Define if you have the nsl library (-lnsl). */
|
|
||||||
/* #undef HAVE_LIBNSL */
|
|
||||||
|
|
||||||
/* Define if you have the socket library (-lsocket). */
|
|
||||||
/* #undef HAVE_LIBSOCKET */
|
|
||||||
|
|
||||||
/* Define if you have the tinfo library (-ltinfo). */
|
|
||||||
#define HAVE_LIBTINFO 1
|
|
||||||
|
|
||||||
/* Define if you have the util library (-lutil). */
|
|
||||||
#define HAVE_LIBUTIL 1
|
|
||||||
|
|
||||||
/* Define if your compiler supports `long long' */
|
|
||||||
#define HAVE_LONG_LONG 1
|
|
||||||
|
|
||||||
/* Define if in_port_t exists */
|
|
||||||
#define HAVE_IN_PORT_T 1
|
|
||||||
|
|
||||||
/* Define if sa_family_t exists in <sys/socket.h> */
|
|
||||||
#define HAVE_SA_FAMILY_T 1
|
|
||||||
|
|
||||||
/* Define if struct sockaddr.sa_len exists (implies sockaddr_in.sin_len, etc) */
|
|
||||||
#define HAVE_SOCKADDR_SA_LEN 1
|
|
||||||
|
|
||||||
/* Define if socklen_t exists */
|
|
||||||
#define HAVE_SOCKLEN_T 1
|
|
||||||
|
|
||||||
/* Define if AF_INET6 exists in <sys/socket.h> */
|
|
||||||
#define HAVE_AF_INET6 1
|
|
||||||
|
|
||||||
/* Define if `struct sockaddr_in6' exists in <netinet/in.h> */
|
|
||||||
#define HAVE_SOCKADDR_IN6 1
|
|
||||||
|
|
||||||
/* Define if `struct addrinfo' exists in <netdb.h> */
|
|
||||||
#define HAVE_ADDRINFO 1
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define if <netdb.h> contains AI_NUMERICHOST et al.
|
|
||||||
* Systems which only implement RFC2133 will need this.
|
|
||||||
*/
|
|
||||||
#define HAVE_RFC2553_NETDB 1
|
|
||||||
|
|
||||||
/* Define if `struct direct' has a d_namlen element */
|
|
||||||
#define HAVE_D_NAMLEN 1
|
|
||||||
|
|
||||||
/* Define if GLOB_BRACE exists in <glob.h> */
|
|
||||||
#define HAVE_GLOB_BRACE 1
|
|
||||||
|
|
||||||
/* Define if h_errno exists in <netdb.h> */
|
|
||||||
#define HAVE_H_ERRNO_D 1
|
|
||||||
|
|
||||||
/* Define if fclose() is declared in <stdio.h> */
|
|
||||||
#define HAVE_FCLOSE_D 1
|
|
||||||
|
|
||||||
/* Define if getpass() is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#define HAVE_GETPASS_D 1
|
|
||||||
|
|
||||||
/* Define if optarg is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#define HAVE_OPTARG_D 1
|
|
||||||
|
|
||||||
/* Define if optind is declared in <stdlib.h> or <unistd.h> */
|
|
||||||
#define HAVE_OPTIND_D 1
|
|
||||||
|
|
||||||
/* Define if pclose() is declared in <stdio.h> */
|
|
||||||
#define HAVE_PCLOSE_D 1
|
|
||||||
|
|
||||||
/* Define if `long long' is supported and sizeof(off_t) >= 8 */
|
|
||||||
#define HAVE_QUAD_SUPPORT 1
|
|
||||||
|
|
||||||
/* Define if strptime() is declared in <time.h> */
|
|
||||||
#define HAVE_STRPTIME_D 1
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define this if compiling with SOCKS (the firewall traversal library).
|
|
||||||
* Also, you must define connect, getsockname, bind, accept, listen, and
|
|
||||||
* select to their R-versions.
|
|
||||||
*/
|
|
||||||
/* #undef SOCKS */
|
|
||||||
/* #undef SOCKS4 */
|
|
||||||
/* #undef SOCKS5 */
|
|
||||||
/* #undef connect */
|
|
||||||
/* #undef getsockname */
|
|
||||||
/* #undef bind */
|
|
||||||
/* #undef accept */
|
|
||||||
/* #undef listen */
|
|
||||||
/* #undef select */
|
|
||||||
/* #undef dup */
|
|
||||||
/* #undef dup2 */
|
|
||||||
/* #undef fclose */
|
|
||||||
/* #undef gethostbyname */
|
|
||||||
/* #undef getpeername */
|
|
||||||
/* #undef read */
|
|
||||||
/* #undef recv */
|
|
||||||
/* #undef recvfrom */
|
|
||||||
/* #undef rresvport */
|
|
||||||
/* #undef send */
|
|
||||||
/* #undef sendto */
|
|
||||||
/* #undef shutdown */
|
|
||||||
/* #undef write */
|
|
514
usr.bin/ftp/tnftp_config.h
Normal file
514
usr.bin/ftp/tnftp_config.h
Normal file
@ -0,0 +1,514 @@
|
|||||||
|
/* $FreeBSD$ */
|
||||||
|
/* tnftp_config.h. Generated from tnftp_config.h.in by configure. */
|
||||||
|
/* tnftp_config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if the `closedir' function returns void instead of `int'. */
|
||||||
|
/* #undef CLOSEDIR_VOID */
|
||||||
|
|
||||||
|
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
||||||
|
systems. This function is required for `alloca.c' support on those systems.
|
||||||
|
*/
|
||||||
|
/* #undef CRAY_STACKSEG_END */
|
||||||
|
|
||||||
|
/* Define to 1 if using `alloca.c'. */
|
||||||
|
/* #undef C_ALLOCA */
|
||||||
|
|
||||||
|
/* Define to 1 if the `getpgrp' function requires zero arguments. */
|
||||||
|
#define GETPGRP_VOID 1
|
||||||
|
|
||||||
|
/* Define to 1 if `TIOCGWINSZ' requires <sys/ioctl.h>. */
|
||||||
|
/* #undef GWINSZ_IN_SYS_IOCTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have `alloca', as a function or macro. */
|
||||||
|
#define HAVE_ALLOCA 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_ALLOCA_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <arpa/ftp.h> header file. */
|
||||||
|
#define HAVE_ARPA_FTP_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
||||||
|
#define HAVE_ARPA_INET_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <arpa/nameser.h> header file. */
|
||||||
|
#define HAVE_ARPA_NAMESER_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `AF_INET6', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#define HAVE_DECL_AF_INET6 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `AI_NUMERICHOST', and to 0 if
|
||||||
|
you don't. */
|
||||||
|
#define HAVE_DECL_AI_NUMERICHOST 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `dirname', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#define HAVE_DECL_DIRNAME 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `fclose', and to 0 if you don't.
|
||||||
|
*/
|
||||||
|
#define HAVE_DECL_FCLOSE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `getpass', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#define HAVE_DECL_GETPASS 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `h_errno', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#define HAVE_DECL_H_ERRNO 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `NS_IN6ADDRSZ', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#define HAVE_DECL_NS_IN6ADDRSZ 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `optarg', and to 0 if you don't.
|
||||||
|
*/
|
||||||
|
#define HAVE_DECL_OPTARG 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `optind', and to 0 if you don't.
|
||||||
|
*/
|
||||||
|
#define HAVE_DECL_OPTIND 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `pclose', and to 0 if you don't.
|
||||||
|
*/
|
||||||
|
#define HAVE_DECL_PCLOSE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `strptime', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#define HAVE_DECL_STRPTIME 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
|
||||||
|
*/
|
||||||
|
#define HAVE_DIRENT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `dirname' function. */
|
||||||
|
#define HAVE_DIRNAME 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#define HAVE_DLFCN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `err' function. */
|
||||||
|
#define HAVE_ERR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <err.h> header file. */
|
||||||
|
#define HAVE_ERR_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||||
|
#define HAVE_FCNTL_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fgetln' function. */
|
||||||
|
#define HAVE_FGETLN 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fork' function. */
|
||||||
|
#define HAVE_FORK 1
|
||||||
|
|
||||||
|
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
|
||||||
|
#define HAVE_FSEEKO 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getaddrinfo' function. */
|
||||||
|
#define HAVE_GETADDRINFO 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getcwd' function. */
|
||||||
|
#define HAVE_GETCWD 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `gethostbyaddr' function. */
|
||||||
|
#define HAVE_GETHOSTBYADDR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `gethostbyname' function. */
|
||||||
|
#define HAVE_GETHOSTBYNAME 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `gethostbyname2' function. */
|
||||||
|
#define HAVE_GETHOSTBYNAME2 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `gethostname' function. */
|
||||||
|
#define HAVE_GETHOSTNAME 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getnameinfo' function. */
|
||||||
|
#define HAVE_GETNAMEINFO 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getpass' function. */
|
||||||
|
#define HAVE_GETPASS 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getpassphrase' function. */
|
||||||
|
/* #undef HAVE_GETPASSPHRASE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getpgrp' function. */
|
||||||
|
#define HAVE_GETPGRP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `gettimeofday' function. */
|
||||||
|
#define HAVE_GETTIMEOFDAY 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `inet_ntop' function. */
|
||||||
|
#define HAVE_INET_NTOP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `inet_pton' function. */
|
||||||
|
#define HAVE_INET_PTON 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#define HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `in_port_t'. */
|
||||||
|
#define HAVE_IN_PORT_T 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isascii' function. */
|
||||||
|
#define HAVE_ISASCII 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libgen.h> header file. */
|
||||||
|
#define HAVE_LIBGEN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <limits.h> header file. */
|
||||||
|
#define HAVE_LIMITS_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `long double'. */
|
||||||
|
#define HAVE_LONG_DOUBLE 1
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `long long int'. */
|
||||||
|
#define HAVE_LONG_LONG_INT 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <malloc.h> header file. */
|
||||||
|
/* #undef HAVE_MALLOC_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `memchr' function. */
|
||||||
|
#define HAVE_MEMCHR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `memmove' function. */
|
||||||
|
#define HAVE_MEMMOVE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#define HAVE_MEMORY_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `memset' function. */
|
||||||
|
#define HAVE_MEMSET 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `mkstemp' function. */
|
||||||
|
#define HAVE_MKSTEMP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
|
||||||
|
/* #undef HAVE_NDIR_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <netdb.h> header file. */
|
||||||
|
#define HAVE_NETDB_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <netinet/in.h> header file. */
|
||||||
|
#define HAVE_NETINET_IN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <netinet/in_systm.h> header file. */
|
||||||
|
#define HAVE_NETINET_IN_SYSTM_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <netinet/ip.h> header file. */
|
||||||
|
#define HAVE_NETINET_IP_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <paths.h> header file. */
|
||||||
|
#define HAVE_PATHS_H 1
|
||||||
|
|
||||||
|
/* Define if we have poll() and it is not emulated. */
|
||||||
|
#define HAVE_POLL 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <poll.h> header file. */
|
||||||
|
#define HAVE_POLL_H 1
|
||||||
|
|
||||||
|
/* Define if `long long' is supported and *printf() supports %lld or %qd to
|
||||||
|
print them. */
|
||||||
|
#define HAVE_PRINTF_LONG_LONG 1
|
||||||
|
|
||||||
|
/* Define if *printf() uses %qd to print `long long' (otherwise uses %lld). */
|
||||||
|
/* #undef HAVE_PRINTF_QD */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <pwd.h> header file. */
|
||||||
|
#define HAVE_PWD_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `realpath' function. */
|
||||||
|
#define HAVE_REALPATH 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `regcomp' function. */
|
||||||
|
#define HAVE_REGCOMP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <regex.h> header file. */
|
||||||
|
#define HAVE_REGEX_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <resolv.h> header file. */
|
||||||
|
#define HAVE_RESOLV_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `sa_family_t'. */
|
||||||
|
#define HAVE_SA_FAMILY_T 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `select' function. */
|
||||||
|
#define HAVE_SELECT 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <setjmp.h> header file. */
|
||||||
|
#define HAVE_SETJMP_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `setlocale' function. */
|
||||||
|
#define HAVE_SETLOCALE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `setprogname' function. */
|
||||||
|
#define HAVE_SETPROGNAME 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <signal.h> header file. */
|
||||||
|
#define HAVE_SIGNAL_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sl_init' function. */
|
||||||
|
#define HAVE_SL_INIT 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `snprintf' function. */
|
||||||
|
#define HAVE_SNPRINTF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `socket' function. */
|
||||||
|
#define HAVE_SOCKET 1
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `socklen_t'. */
|
||||||
|
#define HAVE_SOCKLEN_T 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stddef.h> header file. */
|
||||||
|
#define HAVE_STDDEF_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#define HAVE_STDINT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#define HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strcasecmp' function. */
|
||||||
|
#define HAVE_STRCASECMP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strchr' function. */
|
||||||
|
#define HAVE_STRCHR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strcoll' function and it is properly defined.
|
||||||
|
*/
|
||||||
|
#define HAVE_STRCOLL 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strcspn' function. */
|
||||||
|
#define HAVE_STRCSPN 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strdup' function. */
|
||||||
|
#define HAVE_STRDUP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strerror' function. */
|
||||||
|
#define HAVE_STRERROR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#define HAVE_STRINGS_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#define HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strlcat' function. */
|
||||||
|
#define HAVE_STRLCAT 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strlcpy' function. */
|
||||||
|
#define HAVE_STRLCPY 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strncasecmp' function. */
|
||||||
|
#define HAVE_STRNCASECMP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strpbrk' function. */
|
||||||
|
#define HAVE_STRPBRK 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strptime' function. */
|
||||||
|
#define HAVE_STRPTIME 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strrchr' function. */
|
||||||
|
#define HAVE_STRRCHR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strsep' function. */
|
||||||
|
#define HAVE_STRSEP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strstr' function. */
|
||||||
|
#define HAVE_STRSTR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtol' function. */
|
||||||
|
#define HAVE_STRTOL 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtoll' function. */
|
||||||
|
#define HAVE_STRTOLL 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtoul' function. */
|
||||||
|
#define HAVE_STRTOUL 1
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `struct addrinfo'. */
|
||||||
|
#define HAVE_STRUCT_ADDRINFO 1
|
||||||
|
|
||||||
|
/* Define to 1 if `struct dirent' is a member of `d_namlen'. */
|
||||||
|
#define HAVE_STRUCT_DIRENT_D_NAMLEN 1
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `struct pollfd'. */
|
||||||
|
#define HAVE_STRUCT_POLLFD 1
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `struct sockaddr_in6'. */
|
||||||
|
#define HAVE_STRUCT_SOCKADDR_IN6 1
|
||||||
|
|
||||||
|
/* Define to 1 if `struct sockaddr_in' is a member of `sin_len'. */
|
||||||
|
#define HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 1
|
||||||
|
|
||||||
|
/* Define to 1 if `struct sockaddr' is a member of `sa_len'. */
|
||||||
|
#define HAVE_STRUCT_SOCKADDR_SA_LEN 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strunvis' function. */
|
||||||
|
#define HAVE_STRUNVIS 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strvis' function. */
|
||||||
|
#define HAVE_STRVIS 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_SYS_DIR_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||||
|
#define HAVE_SYS_IOCTL_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_SYS_NDIR_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||||
|
#define HAVE_SYS_PARAM_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/poll.h> header file. */
|
||||||
|
#define HAVE_SYS_POLL_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||||
|
#define HAVE_SYS_SOCKET_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#define HAVE_SYS_STAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/syslimits.h> header file. */
|
||||||
|
#define HAVE_SYS_SYSLIMITS_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||||
|
#define HAVE_SYS_TIME_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/wait.h> header file. */
|
||||||
|
#define HAVE_SYS_WAIT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <termcap.h> header file. */
|
||||||
|
#define HAVE_TERMCAP_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <termios.h> header file. */
|
||||||
|
#define HAVE_TERMIOS_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `timegm' function. */
|
||||||
|
#define HAVE_TIMEGM 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#define HAVE_UNISTD_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `usleep' function. */
|
||||||
|
#define HAVE_USLEEP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `utime' function. */
|
||||||
|
#define HAVE_UTIME 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `utimes' function. */
|
||||||
|
#define HAVE_UTIMES 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <utime.h> header file. */
|
||||||
|
#define HAVE_UTIME_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `vfork' function. */
|
||||||
|
#define HAVE_VFORK 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <vfork.h> header file. */
|
||||||
|
/* #undef HAVE_VFORK_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <vis.h> header file. */
|
||||||
|
#define HAVE_VIS_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if `fork' works. */
|
||||||
|
#define HAVE_WORKING_FORK 1
|
||||||
|
|
||||||
|
/* Define to 1 if `vfork' works. */
|
||||||
|
#define HAVE_WORKING_VFORK 1
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
#define PACKAGE "tnftp"
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#define PACKAGE_BUGREPORT "lukem@NetBSD.org"
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#define PACKAGE_NAME "tnftp"
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#define PACKAGE_STRING "tnftp 20100108"
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#define PACKAGE_TARNAME "tnftp"
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#define PACKAGE_URL ""
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#define PACKAGE_VERSION "20100108"
|
||||||
|
|
||||||
|
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||||
|
#define RETSIGTYPE void
|
||||||
|
|
||||||
|
/* If using the C implementation of alloca, define if you know the
|
||||||
|
direction of stack growth for your system; otherwise it will be
|
||||||
|
automatically deduced at runtime.
|
||||||
|
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||||
|
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||||
|
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||||
|
/* #undef STACK_DIRECTION */
|
||||||
|
|
||||||
|
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
|
||||||
|
/* #undef STAT_MACROS_BROKEN */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#define STDC_HEADERS 1
|
||||||
|
|
||||||
|
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
|
#define TIME_WITH_SYS_TIME 1
|
||||||
|
|
||||||
|
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||||
|
/* #undef TM_IN_SYS_TIME */
|
||||||
|
|
||||||
|
/* Define if using (Dante) SOCKS5 proxy. */
|
||||||
|
/* #undef USE_SOCKS */
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#define VERSION "20100108"
|
||||||
|
|
||||||
|
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||||
|
/* #undef _FILE_OFFSET_BITS */
|
||||||
|
|
||||||
|
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
|
||||||
|
/* #undef _LARGEFILE_SOURCE */
|
||||||
|
|
||||||
|
/* Define for large files, on AIX-style hosts. */
|
||||||
|
/* #undef _LARGE_FILES */
|
||||||
|
|
||||||
|
/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
|
||||||
|
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
|
||||||
|
#define below would cause a syntax error. */
|
||||||
|
/* #undef _UINT32_T */
|
||||||
|
|
||||||
|
/* Define to `long int' if <sys/types.h> does not define. */
|
||||||
|
/* #undef off_t */
|
||||||
|
|
||||||
|
/* Define to `int' if <sys/types.h> does not define. */
|
||||||
|
/* #undef pid_t */
|
||||||
|
|
||||||
|
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||||
|
/* #undef size_t */
|
||||||
|
|
||||||
|
/* Define to the type of an unsigned integer type of width exactly 32 bits if
|
||||||
|
such a type exists and the standard includes do not define it. */
|
||||||
|
/* #undef uint32_t */
|
||||||
|
|
||||||
|
/* Define as `fork' if `vfork' does not work. */
|
||||||
|
/* #undef vfork */
|
||||||
|
|
||||||
|
|
||||||
|
/* Define if using IPv6 support. */
|
||||||
|
/* Commented out so this can be selected fromt he Makefile -gavin */
|
||||||
|
/* #define USE_INET6 1 */
|
||||||
|
|
||||||
|
#define USE_GLOB_H 1
|
Loading…
Reference in New Issue
Block a user