Commit Graph

445 Commits

Author SHA1 Message Date
tv 063efa8267 Add the ability to work with HTTP-1.1-style virtual hosts, using the
HTTP/1.0 backwards compatible "Host:" field method.
1998-06-03 15:50:34 +00:00
lukem 881bf87781 * use CC_REFRESH_BEEP in an ambiguous complete (recently added to -ledit)
* in command completion, append a space to a definite match
* in local path completion, append a space or / to a definite match,
  depending if the path is a non-directory or directory respectively
(nothing added to remote path completion yet, until a simple sane method
 of determining if the path is a directory or not is available).
1998-06-01 14:46:11 +00:00
pk 44c785c1cd Restore `preserve' value when we no longer need the modified version. 1998-05-20 09:43:41 +00:00
christos fad7b63434 - add <signal.h> since we are using signals.
- cast arg to is*() to unsigned char.
- don't require quad_t to exist to compile.
- adapt to the new libedit version.
1998-05-20 00:55:52 +00:00
christos a0a2de671b - clarify dangling else 1998-05-20 00:55:16 +00:00
christos 9160dcee94 - add <signal.h> since we are using signals.
- add <sys/time.h> since we are using utimes
- don't require quad_t to exist to compile.
1998-05-20 00:54:52 +00:00
christos 2187d01f57 - cast arg to is*() to unsigned char. 1998-05-20 00:54:26 +00:00
christos da64e19c34 - cast arg to is*() to unsigned char.
- don't require d_namlen to exist
- don't recompute the length of the file everytime around the loop.
1998-05-20 00:53:57 +00:00
christos acb3ba5670 - add <signal.h> since we are using signals.
- cast arg to is*() to unsigned char.
- don't require quad_t to exist to compile.
1998-05-20 00:52:29 +00:00
msaitoh 8e57bce5a8 fix typo. 1998-05-20 00:38:46 +00:00
kleink 650b9ca681 Need <time.h> for asctime() and localtime() prototypes. 1998-04-01 21:07:03 +00:00
christos 9032c78379 Don't hardcode 1900 1998-02-04 15:23:54 +00:00
lukem 33a9f67f94 enable el_parse for unknown commands (so editrc(5) commands can be used directly 1998-01-21 11:14:34 +00:00
lukem fa21aaa9f5 cosmetic mods to ptransfer() (which displays transfer statistics for
SIGINFO and at the end of the transfer):
* display time taken as [[x days?] hh:]mm:ss
* display ETA as [hh:]mm:ss
* print ' (stalled)' if the transfer is stalled
1998-01-20 04:39:34 +00:00
lukem 6ab4bdf006 define MAX_IN_PORT_T and use instead of USHRT_MAX. suggested by cgd@netbsd.org 1998-01-18 22:09:39 +00:00
lukem 7ee412ebee * ensure buffer for username is initialised, so ^D on username prompt
doesn't use garbage for the username.  from "Soren S. Jorvang" <soren@t.dk>
  in [bin/4559]
* use in_port_t for ports, and USHRT_MAX instead of 0xffff
  (from millert@openbsd.org)
* use `NULL' instead of `(.... *)0' where appropriate.
1998-01-18 14:23:33 +00:00
gwr 61958ba2d9 Kill the "progress bar" stuff when compiled with -DSMALL
because progressmeter() uses floats which are unwanted
when this is built under src/distrib/utils/x_ftp
(Maybe -DNO_FLOAT would be better?)
1997-12-12 23:34:56 +00:00
lukem 699c57c48b correctly detect good vs bad hash mark values. (found by <enami@netbsd.org>) 1997-11-02 00:18:46 +00:00
lukem d067f3bbd2 * in recvrequest(), ignore restart_point unless "RETR"ieving. fixes problems
where a remote completion or `mget' would confuse the client a `restart'
  had been issued beforehand. now, `restart' is remembered until an operation
  that can actually use it is invoked.
* in sendrequest(), don't reset restart_point upon entry. fixes `restart'
  for `put' operations.
* if `restart' is invoked with no arguments, print current setting instead
  of displaying a usage
* consistently use printf("%qd", (long long)restart_point) when displaying
  restart_point
* use strto[lq]() instead of atol() when parsing `mark' and `restart' values
* remove unnecessary strlen()s when result of previous snprintf() will do
* replace a few malloc()/strcpy()s with strdup()s
* use SECSPERHOUR instead of '3600'
1997-11-01 14:36:49 +00:00
mycroft b66f8512e6 Use S_IS*(), not S_IF*. 1997-10-19 19:09:05 +00:00
lukem e74da31dcc don't define WARNS=1 here 1997-10-18 15:31:20 +00:00
christos 49e050d183 PR/4257: Jaromir Dolecek: Compensate for the libedit changes. 1997-10-14 16:31:22 +00:00
christos 73d7366361 Change CFLAGS to CPPFLAGS 1997-10-14 15:09:22 +00:00
mycroft 088478fe61 If the ETA is too large to fit on the display (i.e. 100 hours or more), don't
try to display it.
Also, eliminate many extra calls to strlen().
1997-10-11 12:05:15 +00:00
lukem a09466a728 add a space to restart message. from geoff wing in [bin/4161] 1997-09-26 15:22:46 +00:00
lukem 8732be2e09 More cleanups from Todd Miller <Todd.Miller@courtesan.com>:
* Use an int, not "union wait".
* Move the "parsed_url" label so that the next statement is not an "else" --
  some ansi C compilers don't like it the old way (SGI's for example).
* Deal with the possibility of getlogin(2) failing.
* Don't error out if the remote server doesn't support the "MDTM" command.
1997-09-21 01:06:30 +00:00
lukem 87453d32bd Fixes from Todd Miller <Todd.Miller@courtesan.com>:
* use size_t instead of int in places
* use symbolic constants when using access()
1997-09-13 09:05:52 +00:00
lukem 64c651fb96 support $TMPDIR 1997-08-23 07:32:50 +00:00
lukem 2fec2a28f5 bugs fixed:
* don't interpret '-' or '|' when a local filename is determined from
  the remote name (i.e, in mget, and in get with only one argument).
  This is implemented using an extra argument to recvrequest().
  Fixes a major security hole.
* clean up memory leak when using globulize()
* clean up a couple of comments
* fix wording in TNF copyright

features added:
* support for TIS fwtk gate-ftp servers:
	* read defaults from $FTPSERVER && $FTPSERVERPORT
	* start in gate-ftp mode if invoked as 'gate-ftp'
	* toggle or set with 'gate [host [port]]'
1997-08-18 10:20:13 +00:00
lukem 609496986e fix compile on alpha:
* cast all %qd printfs to (long long) [inspired by billc@warped.net]
* replace sscanf %qd with strtoq() et al
1997-07-21 14:03:48 +00:00
lukem 076ac8bdc3 Send \r with \n in http requests. Allow "content-length" to be missing.
From [bin/3891] by Krister Walfridsson <cato@ulysses.df.lth.se>
1997-07-20 12:49:26 +00:00
lukem b9d5554d5d * use RCSID() && COPYRIGHT() macros
* cleanup for WARNS=1 (including some ugly '(void)&var' bits wrapped in
  #ifdef __GNUC__ to shut up gcc warnings WRT setjmp/longjmp)
* use strtol() instead of atoi(), and more extensively check result of
  conversion
* use u_int16_t instead of short or int for TCP port addresses
1997-07-20 09:45:35 +00:00
lukem 4a8077f211 Provide a different error message than `invalid url' when an
auto-login ftp URL is used when $ftp_proxy is defined. It now prints:
	Auto-login using ftp URLs isn't supported when using $ftp_proxy
Should solve rest of [bin/3643].

Whilst this is inconsistant with the behaviour when $ftp_proxy isn't
defined, the following constraints apply:
* it's not possible to support ftp URL auto-login when $ftp_proxy is
  defined, since it uses http not ftp, and you can't `login' to http
  servers; fudging this would require a major rewrite of ftp anyway)
* silently ignoring $ftp_proxy and not using it if an ftp auto-login
  URL is given is bad user interface design)
* mrg & others will harrass me if I remove support for autologin ftp URLs
  when $ftp_proxy isn't defined, even though it made the behaviour
  consistant whether $ftp_proxy was set or not.
1997-06-29 06:34:50 +00:00
lukem 3e92284533 * Only print the progress bar when ftp(1) is the foreground progress.
Patch from enami tsugutomo <enami@ba2.so-net.or.jp> in [bin/3735].
* Fix punctuation.
1997-06-10 21:59:58 +00:00
lukem a95a28e4d8 Don't use editing or progress bar if $TERM isn't set or is "dumb". Fixes
emacs ange-ftp. Suggested by Todd Miller <Todd.Miller@courtesan.com>,
tested by matt green <mrg@eterna.com.au>
1997-06-10 07:04:43 +00:00
lukem 8b0030a6fc Simplify NLST parsing code in complete_remote(); just basename each of
the returned names! Fixes parsing problems caused by the differences
between NLST output on BSD, Solaris, and Windows NT.
1997-05-24 16:34:30 +00:00
lukem c04e79d154 url_get(): use origline in some messages, simplifying them, and free up copy
of origline before returning. also, previous commit (fix for [bin/3643]) was
inspired by suggested fix in said PR by Alan Barrett <apb@iafrica.com>.
1997-05-23 18:54:18 +00:00
lukem 7cb8cd9611 Actually report why certain URLs are invalid, rather than just exit
with a non-zero exit code. fixes most of [bin/3643].
1997-05-23 18:42:36 +00:00
pk f6d87734a6 NULL => 0 (Arne Juul; PR#3629) 1997-05-17 19:40:47 +00:00
lukem 808ec252ad don't print -ve ETA if file size has grown. noticed by hpeyerl@netbsd.org 1997-05-12 11:41:13 +00:00
lukem 4ecb9a5a20 * cleanup parser of ftp://[user:pass@]host[:port]/[dir/][file]. should
be more robust now. fixes [bin/3520]. (missed this in previous commit msg)
* rename bad_url: to bad_ftp_url:
1997-04-21 18:45:47 +00:00
lukem d0e2ef4d67 i 1997-04-21 18:41:03 +00:00
lukem a9a78ba448 More enhancements/bugfixes (when will it end?)
* differentiate between being connected, and being logged in
* cleanup some text messages
* support username & password ftp URLs (ftp://user:pass@host/) in non-proxy
  situations; assume proxy supports it for proxy situations.
* cd to / before performing any autofetch transfers
* use strncasecmp in URL parsing. fix from <Todd.Miller@courtesan.com>
1997-04-14 09:09:15 +00:00
lukem d473547d56 * support $ftp_proxy for ftp:// transfers [bin/3245]
* add "more" & "less" as synonyms for "page"
* move editline setup code into controlediting(), and call appropriately.
  only setup setup terminal if going into interactive mode. inspired
  by Todd Miller <todd.miller@courtesan.com>
1997-04-05 03:27:32 +00:00
mrg b5b1013d11 fix buffer overrun; from bostic (via perry (via freebsd)) 1997-04-01 14:20:34 +00:00
christos 3917c3179d - Makefile cleanups 1997-03-24 21:57:01 +00:00
lukem ae07641250 Fixes from <Todd.Miller@cs.colorado.edu>, with some cleanup and reworks by me:
* only echo "Passive mode" in verbose mode; scripts that use ftp
  may get unwanted output otherwise
* disable progress bar and modification time preservation when
  retreiving to a non-regular files. fixes progress bar getting in
  way of "get file /dev/tty"
* setup el_init() et al if editing is set, not if fromatty.
  TODO: migrate this to a function, and call if editing is turned on later
	in the session. also implement edit_cleanup if editing is turned off
* call el_set() after setting SIGWINCH handler. This fixes the problem
  when suspending in a non-cbreak shell (e.g, csh) would trash your tty mode.
* reset interactive mode correctly in auto_fetch() mget mode
1997-03-16 14:24:14 +00:00
christos 067f3f2db4 SMALLFTP->SMALL; remove SMALL from Makefile 1997-03-14 01:39:31 +00:00
christos 49258416ec Deal with SMALLFTP a bit differently [by compiling complete.c] 1997-03-13 22:38:39 +00:00
lukem 3b5054739d Features:
* support remglobbing of auto_fetch arguments
* new flag - '-e'; disable editing
* "page file" == "get file |${PAGER-less}"

Bugfixes/cleanup:
* consistently use a trailing '.' on messages
* code cleanup, including buffer overrun fixes, use puts
  and putchar in places, etc (inspired by OpenBSD mods)
* disable progress bar when local-file is a pipe or '-'
* skip \r in http headers
* fix remote ftpd slash bug more elegantly (so it works with ////)
* abort_remote(): check if cout==NULL before using it. should fix [bin/3273]
* fixed up cosmetic problems when complete_remote() generated errors from the
  remote server (such as "no files found", "login with user and pass", ...)
  done by adding extra argument to remglob(), which is a pointer to an error
  buffer to put messages in rather than printing to stdout.
1997-03-13 06:23:11 +00:00
lukem 4c7551e4f0 don't display negative ETA upon SIGINFO because filesize isn't known 1997-02-01 11:26:34 +00:00
lukem 3a50014d60 [Yet Another Huge Ftp Commit - hopefully the last for a while,
barring any more little things people want added ...]

New features:
* progressmeter is now asynchronous, so "stalled" transfers can be
  detected. "- stalled -" is displayed instead of the ETA in this case.
  When the xfer resumes, the time that the xfer was stalled for is
  factored out of the ETA. It is debatable whether this is better than
  not factoring it out, but I like it this way (I.e, if it stalls for 8
  seconds and the ETA was 30 seconds, when it resumes the ETA will still
  be 30 seconds).
* verbosity can be disabled on the command line (-V), so that in auto-fetch
  mode the only lines displayed will be a description of the file, and
  the progress bar (if possible)
* if the screen is resized (and detected via the SIGWINCH signal), the
  progress bar will rescale automatically.

Bugs fixed:
* progress bar will not use the last character on the line, as this can
  cause problems on some terminals
* screen dimensions (via ioctl(TIOCWINSZ)) should use stdout not stdin
* progressmeter() used some vars before initialising them
* ^D will quit now. [fixes bin/3162]
* use hstrerror() to generate error message for host name lookup failure.
* use getcwd instead of getwd (it should have been OK, but why tempt fate?)
* auto-fetch transfers will always return a positive exit value upon failure
  or interruption, relative to the file's position in argv[].
* remote completion of / will work, without putting a leading "///".
  This is actually a bug in ftpd(1), where "NLST /" prefixes all names
  with "//", but fixing every ftpd(1) is not an option...
1997-02-01 10:44:54 +00:00
thorpej e911ec0bfe Don't try to divide by zero in progressmeter().
From Thorsten Frueauf <frueauf@ira.uka.de>, PR #3160.
1997-01-30 03:36:26 +00:00
veego 13c790f77f Add missing ; 1997-01-19 20:17:37 +00:00
lukem 7a7fa80740 New features:
* Command line editing via editline(3) library.
* Context sensitive command and file completion, including remote files.

Enhancements to auto-fetch feature:
* Support for http:// URLs using the http protocol, including proxy HTTP
  support via $htty_proxy if it's defined.
* The connection is kept open between successive files on the same host.
  (obviously, this does not count for http requests.)
* Return value of ftp is 0 on no error, or the offset in argv[] of the file
  which failed (i.e., argv[x] failed, ftp returns x).
* If the path in an ftp URL or classic format line has a trailing '/',
  cd to the path and enter interactive mode. Fixes [bin/3011], albiet
  requiring the user to help ftp in determining the operation.

Other changes:
* '-P port' works for normal ftp, and is the default for all classic style
  auto-fetch transfers and for ftp URLs that don't specify the port.
  (previously it would just work for the first xfer.)
* Some code moved into separated files along logical divisions.
* Editing and completion can be compiled out with -DSMALLFTP.
1997-01-19 14:19:02 +00:00
tls 9d225a1783 RCS ID police 1997-01-09 20:18:21 +00:00
lukem 53b51b68ea doproxy(): remove leading "proxy " from input buffer so if another() is called
and line[] is reparsed to build margc/margv, commands don't get confused.
1997-01-03 02:55:59 +00:00
lukem e699917c51 * preserve modtime if size is 0 [bin/3040, Enami Tsugutomo]
* in autofetch mode, don't retry a file if the connection failed - skip it
  and move to the next file. [bin/3051, Matt Green]
* only print error messages from SIZE or MDTM if the user used 'size' or
  'modt' (respectively). prevents extraneous warnings during normal transfers
  when connected to a site which doesn't support these (behaviour prior to
  last commit), but still allows error feedback to specific user requests
  for this info (which the last commit broke).
* 'account': only accept one optional argument
* if invoked as pftp, default to passive mode on (from FreeBSD)
* remove leading '0 ' in progress bar - looked ugly
* use warn instead of perror
* use strncpy when src isn't known to have safe length
* remglob(): use mkstemp() to prevent symlink games, and don't override
  _PATH_TMP, use it as the prefix to the temp file
1996-12-29 04:05:29 +00:00
christos 764c65979e - make sure that the reply string is null-terminated, and copy only up to
the initialized copy of the source string, since the source string is not
  null terminated at this point.
1996-12-25 16:02:06 +00:00
christos 942194d9f4 - Don't print the '500 command not understood' reply for the SIZE and
MDTM commands which are not supported by all ftp servers, unless we
  are in debugging mode.
1996-12-25 16:00:38 +00:00
lukem dd6f8f2061 'b' == bits not bytes. for all prefixes >= 'K', explicitly specify 'B'
afterwards. don't print anything for a pure byte count. rework ETA display
as well.
1996-12-06 04:33:45 +00:00
lukem 2bee2a678e * note that nlist and ls and equivalent
* fix up optional argument descriptions for dir, ls, nlist, and user.
1996-12-06 02:28:13 +00:00
lukem b6df1b3d2d functionality mods:
* implement 'progress bar/meter' (inspired by ncftp). use 'progress' to
  toggle on. it will display current file size to 5 digits, automatically
  determining suffix (up to 16384 P (petabytes) == 2^64).
* 'ls' now uses NLST (unadorned listing), a la older ftp clients. 'dir'
  still does LIST (long listing). idea from John Nemeth <jnemeth@cue.bc.ca>

bug fixes:
* return first line of reply in reply_string[] from getreply(), instead
  of last line. This fixes [bin/741] (parsing of SYST), and also means
  that SIZE and MDTM messages will be parsed correctly if they're longer
  than 1 line.
* parse URL-style auto-ftps that have no filename correctly
  (e.g, ftp://host, ftp://host/, ftp://host/dir/). pointed out by
  Jaromir Dolecek <dolecek@saruman.ics.muni.cz>
* pass the correct size array in 2nd arg of utimes() when setting the
  modification time
1996-12-06 02:06:46 +00:00
lukem 8ef5f80460 More features, some of which were inspired by changes that
friedman@gnu.ai.mit.edu (Noah Friedman) made to his modified ftp:
- implement "lpwd" - local pwd
- implement "preserve" - toggle preserving of file modification
  times on retrieved files
- allow for explicit "on" or "off" arg to toggle commands
- "exit" synonym for "quit", "msend" synonym for "mput"
- in confirmation mode, allow 'a' (yes to rest of current command),
  and 'p' (turn off prompt mode, as if 'prompt off' was done,
  effective immediately)
- "modtime" returns time formatted as localtime, not GMT

Bug fixes:
- check for extraneous args on commands
- cleanup const usage, line formatting
- create 0 length temporary file in remglob() to prevent symlink games
  (from OpenBSD)
- check length of filename of ~/.netrc (from OpenBSD)
1996-11-28 03:12:28 +00:00
fvdl 7970a0483a Correct the connecthelp info. This is really ftp, not tftp. 1996-11-25 09:53:50 +00:00
lukem 36d3d1fd0f cleanups/bugfixes:
- don't echo 'ACCT' parameter when debugging (a la 'PASS')
- Fix checking of directory access for "/foo", the parent
  directory is "/", not "" (from FreeBSD)
- remove trailing whitespace on lines
- add any missing NetBSD tags
- cleanups to man page, includinging sorting options description

feature additions:
- variable sized hash marks (from [bin/683], but done in the hash command
  as an optional arg)
- more user-friendly transfer time printing (from FreeBSD, with mods)
- '-p' command line option to jump into PASV mode (closes [bin/2857],
  but with an option rather than checking argv[0])
- SIGINFO support for printing xfer stats when sending/receiving requests
- '-P port' for changing the port to connect to (from thorpej@netbsd.org)
- '-a': bypass normal login, and try anonymous login (from OpenBSD
  via thorpej)
- autofetch files via url (ftp://...) or "classic" (host:/file)
  (from OpenBSD via thorpej)
- 'ftp' synonymous with 'open' (from FreeBSD)
1996-11-25 05:13:18 +00:00
pk a5d6cd101b Fence off NULL args in getcmd() (fixes/works around PR#824). 1996-05-07 00:16:55 +00:00
cgd 0cfde2b269 add -Dunix to CFLAGS 1995-11-22 21:52:48 +00:00
pk 6a4e77edfb Correct timersub() argument order (from Thomas Eberhardt; PR#1470). 1995-09-16 22:32:59 +00:00
pk 7b44b2859d Avoid falling off the end of a fixed-length array (from John F. Woods; PR#1431). 1995-09-15 00:32:33 +00:00
cgd 456a083153 needs string.h for protos. 1995-09-14 01:39:52 +00:00
tls 917ef72d79 Sync with 4.4lite2 1995-09-08 01:05:59 +00:00
mycroft 800709ce22 Use inet_aton(), not inet_addr(). 1995-05-21 15:50:45 +00:00
mycroft e60255f2bc Update to use timer{add,sub}(). 1995-03-21 14:16:23 +00:00
jtc db9433b832 Describe -t (enable packet tracing) command line flag (PR #713).
Alphabetize description of command line flags.

Packet tracing is an unimplemented feature, I've decided to keep it's
documentation since ever other UN*X vendor I checked still does.  Not
a particularly useful reason.
1995-01-13 00:09:41 +00:00
cgd 06da9a1040 needs string.h 1994-12-24 16:42:19 +00:00
jtc f9ffa0ef02 Null terminate case-mapped filenames (PR #640). 1994-12-15 08:58:44 +00:00
mycroft 8e14ac7b00 Fix null pointer dereference. 1994-09-17 00:51:10 +00:00
mycroft 46d22e0d6a Fix option parsing bug reported by Uwe Arndt, and another related bogon. 1994-08-31 21:32:33 +00:00
mycroft 8126499a9d Add RCS ids. 1994-08-29 03:09:05 +00:00
cgd 7e8f5e6f63 passive mode support, from David Carrel <carrel@cisco.com>, and cleaned
up for the new ftp sources by me.
1994-08-25 04:27:41 +00:00
cgd 17f8e276eb the previous local changes 1994-08-25 03:49:46 +00:00
mycroft 1955443aa9 Clean up deleted files. 1994-08-25 03:48:12 +00:00
cgd dea9ded20c clean up import, no local changes. 1994-08-25 03:47:50 +00:00
cgd dd93b648c8 Initial revision 1994-08-25 03:27:56 +00:00
cgd 9e9d953286 kill typo 1994-03-28 07:11:18 +00:00
cgd ab97926575 off_t foo 1994-03-27 10:05:14 +00:00
jtc 41954280cb spelling mistakes 1994-02-03 17:47:18 +00:00
jtc 7e06b2a1e2 Fix spelling errors. 1994-01-11 02:21:43 +00:00
mycroft 1749f47c4a Display bytes/second rather than kbytes/sec, and use 3 digits of
precision for transfer time.
1993-09-23 23:15:42 +00:00
mycroft e9d867ef50 Add RCS identifiers. 1993-08-01 17:54:45 +00:00
mycroft c3e42d1c64 Add RCS indentifiers. 1993-08-01 07:22:47 +00:00
mycroft 690cae8181 Add RCS indentifiers. 1993-07-31 15:17:49 +00:00
mycroft 1b67cec37d Fix various bugs in man pages (from 386BSD patch 130). 1993-04-22 03:27:28 +00:00
cgd 61f282557f initial import of 386bsd-0.1 sources 1993-03-21 09:45:37 +00:00