1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
|
Mon Jun 10 08:12:35 UTC 2002 lukem
* crank FTP_VERSION from 1.6-beta1 to 1.6-beta2
* replace missing fseeko(), with a wrapper to fseek() which
checks that the offset isn't > LONG_MAX
* #include <regex.h> #if HAVE_REGEX_H
Mon Jun 10 01:27:46 UTC 2002 lukem
* check for and replace sa_family_t definition
* don't bother checking for issetugid(); it was only used in the
internal libedit to prevent $HOME/.editrc from being used if
running set-id, and the newer libedit code wouldn't even read
$HOME/.editrc if issetugid() wasn't available. as many target
operating systems don't have issetugid(), and lukemftp isn't
likely to be run set-id (and $HOME/.netrc is used in any case),
the issetugid() check has been disabled in libedit.
* add back cpp code which #defines REGEX #if HAVE_REGEX_H
Wed Jun 5 14:39:11 UTC 2002 lukem
* crank FTP_VERSION from 1.6alpha1 to 1.6-beta1
* implement replacement setprogname()
* use getprogname() instead of __progname
* convert to christos' replacement fgetln(), as it's better than mine
* merge ftp from NetBSD 20020605 to 20020606:
- use setprogname()
- only support -6 if INET6 is defined
Wed Jun 5 13:08:25 UTC 2002 lukem
* don't bother checking if <glob.h> is usable (see below).
* always compile in local glob; it's the best way to ensure that
various security issues are fixed
* update libukem/glob.c from NetBSD's __glob13.c rev 1.22 and rev 1.23
* merge libedit from NetBSD 20010413 to 20020606:
- constify; passes all gcc and lint strict checks.
- add config.h [Jason Evans], to create a portable version of
libedit that can be easily compiled on other OS's.
- PR/12963:Jason Waterman: Fix signed cast problems.
- Fixed an __P remnant
- Close quoting.
- Generate <>& symbolically.
- Punctuation and whitespace nits, fix a typo.
- PR/14188: Anthony Mallet: Provide an opaque data
pointer to client programs.
- a couple of minor fixes. originally by Ruslan Ermilov
<ru@FreeBSD.org>, highlighted to me by way of Mike Barcroft
<mike@FreeBSD.org> (thanks!)
- PR/14067: Anthony Mallet: Provide a programmatic way
to set the read_char function via a new el_set() operation.
Thanks, nicely done :-)
- `existent', not `existant'
- Don't use HAVE_ yet.
- Fix a warning.
- Remove an unused variable.
- If term_init() fails, cleanup and return NULL. This
avoids other lossage. Pointed by charles.
- va_{start,end} audit: Make sure that each va_start has one
and only one matching va_end, especially in error cases.
If the va_list is used multiple times, do multiple
va_starts/va_ends. If a function gets va_list as argument,
don't let it use va_end (since it's the callers
responsibility). Improved by comments from enami and
christos -- thanks!
- history_def_enter: fix off-by-one mistake in delete
condition (the behaviour to keep at least one entry on the
history list is retained). This fixes lib/9704 by Phil Nelson.
* merge ftp from NetBSD 20020524 to 20020605:
- when showing the final progress bar, replace "00:00 ETA"
with the elapsed time. (suggested by simonb)
- actually display transfer stats after a URL fetch.
(bug introduced a *long* time ago)
- update copyright & version
* merge ftp from NetBSD 20001127 to 20020524:
- Use "r+" instead of "r+w", since the latter is not standard.
Noted by <Steve.McClellan@radisys.com> in private email.
- Only send port number in HTTP/1.1 Host: request if port !=
80. Fixes [bin/15415] from Takahiro Kambe
<taca@sky.yamashina.kyoto.jp>
- Fix bad mode passed by mls() to recvrequest(). Fixes
[bin/16642] from <steve.mcclellan@radisys.com>
- update copyrights
- minor knf
- invoke cmdtab.c_handler()s with argv[0] == c_name instead
of the supplied name. that way the full (unambiguous) name
is displayed in error messages and usage strings.
- line2 may overrun if line is too long (> 200). be more
careful on strcpy.
- Handle URLs without files correctly (e.g, when using '-o -').
Fix from Anders Dinsen <anders@dinsen.net> in [bin/13768]
- portnum is unsigned, use %u instead of %d
- Add -4 to force IPv4 and -6 to force IPv6 address usage.
From Hajimu UMEMOTO, via Mike Heffner of FreeBSD.
- use u_char instead of char in base64_encode().
problem noticed by Jorgen Lundman in private mail.
- don't make broken file with -R option.
- handle "*" in Content-Range properly.
- If no_proxy condition is true && urltype == FTP_URL_T,
use fetch_ftp to retrieve
- convert to use getprogname()
- Fix description for "form", "mode", and "struct" commands.
Inspired by [bin/16736] from Steve McClellan
<steve.mcclellan@radisys.com>
- Generate <>& symbolically. I'm avoiding .../dist/...
directories for now.
- Punctuation nits.
- Whitespace cleanup.
- put "site" in alphabetical order. noted by Mike Barcroft
in private email
- avoid buffer overrun on PASV from malicious server.
- Large file ASCII mode support by using fseeko()
instead of fseek(). From Andrey A. Chernov of FreeBSD,
via Mike Heffner.
- Deal with const'ification if el_parse().
- call setlocale() on startup
- display a limited progress bar (containing bytes xferred
and xfer rate) when the file size is unknown
- disable progress bar during remglob()
Thu Mar 14 05:41:49 UTC 2002 lukem
* ensure all AF_INET6 use is protected with #ifdef INET6
* remove unnecessary __attribute__ goop
* libukem/snprintf.c: fix compile errors with gcc 3.x
Tue Apr 17 08:07:29 UTC 2001 lukem
* autoconf check for %q long long support in *printf()
(instead of %ll), define and use HAVE_PRINTF_QD if so
* ipv6 isn't compatible with socks, so disable the former
* look for <libutil.h> (instead of <util.h>) and <arpa/nameser.h>
* don't check for fparseln() twice
* fix getaddrinfo() checks
* crank FTP_VERSION from 1.5 to 1.6alpha1
* always ensure _PATH_BSHELL and _PATH_TMP are defined
* prototype inet_pton() if its missing
* don't bother trying to use if_indextoname() in ip6_sa2str()
(fixes problems on MacOS X)
* in inet_pton(), pull in <arpa/nameser.h> for IN6ADDRSZ and INT16SZ,
and define if missing
Fri Apr 13 15:24:44 UTC 2001 lukem
* only include <arpa/nameser.h> if we have it
* update glob(3) to netbsd-current (20010329), adding support
for GLOB_LIMIT and fixing various buffer overflows.
* update editline from NetBSD 20000915 -> NetBSD 20010413
- Enlarge editline buffers as needed to support arbitrary
length lines. This also addresses lib/9712 by Phil Nelson.
- consistently check for allocation failures and return -1,
if we could not get more memory.
- add support for home and end keys.
- improve debugging support
- el_line_t: make 'limit' const
Mon Nov 27 23:23:40 EST 2000 lukem
* merge ftp from NetBSD-current (20001127):
- implement "mreget"; as per "mget" but uses "reget" instead
of "get"
- add -N netrc and $NETRC, as methods to select an alternative
.netrc file
- cache local user name and home directory for further use
- in mget(), use docase() instead of a local version to do
the case conversion.
- format string cleanups
- be more explicit that $ftp_proxy and $http_proxy are not
supported for interactive sessions
- cope with 2553bis getnameinfo (always attach scope id)
getnameinfo error check.
- use NI_MAXHOST with getnameinfo. we can assume presence of
getnameinfo.
Tue Nov 7 00:16:23 EST 2000 lukem
* libukem/snprintf.c had a non-functional `%s' due to a
function declaration mismatch. problem found and fixed
by Hubert Feyrer <hubert@feyrer.de>
Wed Oct 11 14:06:19 EST 2000 lukem
* released version 1.5
Tue Oct 3 10:22:36 EST 2000 lukem
* crank to version 1.5 beta6
* merge ftp from NetBSD-current (20001003)
- explicitly use SOCK_STREAM with socket() instead of
res->ai_socktype, because it appears that linux with glibc
doesn't set the latter correctly after one of getaddrinfo()
or getnameinfo().
- clarify that $ftp_proxy only works for full URLs and can't
be used for interactive connections.
Mon Sep 25 21:52:12 EST 2000 lukem
* crank to version 1.5 beta5
Sun Sep 24 13:31:19 EST 2000 lukem
* merge ftp from NetBSD-current (20000924)
- since everything else here uses ANSI C, we might as well
replace __STRING() with the ANSI C stringization stuff...
- base64_encode should be static. picked up by hp/ux(!)
compiler
- It appears that whilst Apache 1.3.9 incorrectly puts a
trailing space after the chunksize (before the \r\n),
Apache 1.3.11 puts *multiple* trailing spaces after the
chunksize. I 'm fairly certain that this is contrary to
RFC 2068 section 3.6, but whatever...
Found by David Brownlee <abs@mono.org>
- always include <netdb.h>, not just when INET6 is defined.
resolves PR [bin/10970] by Richard Earnshaw
<rearnsha@cambridge.arm.com>>
- in progressmeter() perform the check for foregroundproc() a
little earlier
- removed unused variable `items' in list_vertical()
Sat Sep 23 15:43:34 EST 2000 lukem
* remove unused sverrno in warnx() and errx()
* remove unused h_error in getnameinfo()
* in getaddrinfo(), don't bother declaring in6_addrany[] and
in6_loopback #ifndef INET6
Thu Sep 21 11:26:35 EST 2000 lukem
* in getaddrinfo.c::str_isnumber(), use strtol() and check the
result, instead of using strtoul() and not checking the result.
* define INADDRSZ if it's not found (e.g, HP/UX doesn't seem to have
it in <arpa/nameser.h>)
Wed Sep 20 09:23:59 EST 2000 lukem
* crank to version 1.5 beta4
Mon Sep 18 18:19:54 EST 2000 lukem
* add AC_AIX test, which defines _ALL_SOURCE under AIX
* use ANSI # stringization instead of __STRING()
* define HAVE_RFC2553_NETDB if <netdb.h> defines AI_NUMERICHOST
(et al) and has getaddrinfo(). (some systems only implement RFC2133)
* don't bother with AC_C_CONST as we depend upon ANSI C elsewhere
* when HAVE_RFC2553_NETDB isn't set, and we're #defining various EAI_,
AI_, and NI_ items, #undef first incase a system partially implements
these in <netdb.h>
* look for tgetent() in -ltinfo before -lncurses, because ncurses 5.0
has been split up into multiple libraries.
from Arkadiusz Miskiewicz <misiek@pld.org.pl>
Fri Sep 15 01:09:10 EST 2000 lukem
* don't bother defining __P() or __STRING() based on whether
__STDC__ is available or not, since these aren't used any more
* fix mkstemp() prototype
* declare getpass() if necessary
* we don't need the readline xxgdb hack in libedit...
* convert to ansi declarations
* use ansi prototypes instead of __P()
* merge in changes from makelist 1.4 -> 1.6:
- generate ansi prototypes instead of using __P(). noted by
christos
- fix a couple of comments
- add -m option to makelist, which generates an mdoc table
with the key bindings and their descriptions
- manually add the output of 'sh ./makelist -m vi.c ed.c
common.c' to a new section in editrc(5) called
`EDITOR COMMANDS'
* merge libedit from NetBSD-current (20000915)
* convert to new style guide, which includes:
- ansi prototypes & features (such as stdargs)
- 8 space indents
* history_def_set has a `const int' as a third arg, not an
`int'. picked up by the ultrix compiler, reported by
simonb@ ...
* generate ansi prototypes instead of using __P(). noted by
christos. fix a couple of comments
* make xxgdb and a gdb linked with libedit's readline emulation
work properly together. xxgdb communicates with a gdb
running on a pty that it sets to -echo,-onlcr prior to
forking the gdb process. GNU readline preserves the -echo
setting while libedit was undoing it (setting the tty to a
sane state and totally confusing xxgdb's parser).
this diff simply disables libedit if both readline emulation
and "stty -echo" are used/set. that is enough to make
xxgdb work once again, but (XXX) this is not how GNU readline
handles stty -echo (it does not echo anything, but editing
commands like ^A,^K, etc. still work), so the readline
emulation isn't perfect.
Tue Aug 29 18:00:08 EST 2000 lukem
* don't bother testing for #if __STDC__; just assume we have it...
Mon Aug 28 22:45:08 EST 2000 lukem
* refine tests for IPv6 #defines (EAI_, AI_, NI_, ...).
should improve portability on systems which implement
RFC 2133 but not RFC 2553.
Wed Aug 9 02:12:51 EST 2000 lukem
* use #if __STDC__ instead of #ifdef __STDC__
* only test 'case NETDB_INTERNAL:' if it's defined
* fix support for --program-prefix et al
* only include <arpa/nameser.h> in the files that need it, because
the DELETE define in some system's implementations causes name
collisions in libedit.
Mon Aug 7 08:17:37 EST 2000 lukem
* merge ftp from NetBSD-current (20000807)
* implement parseport(), which takes a string and attempts to
convert it to a numeric port number
* use parseport() in parse_url() and hookup()
* don't try and lookup the port number using getaddrinfo(),
as it's too hard to separate a failed host name lookup from
a failed service name lookup. this was causing lossage on
systems that don't have `http' in services(5) (such as
solaris), but only crept in when we started using
getaddrinfo() unconditionally.
Wed Aug 2 23:43:50 EST 2000 lukem
* crank to version 1.5 beta3
* define NO_LONG_LONG not NO_QUAD
* detect if struct sockaddr.sa_len exists (rather than relying upon
#ifdef BSD4_4)
* detect if socklen_t exists, and if not, typedef as unsigned int
* detect if struct addrinfo exists, and if not declare it and #define
associated EAI_, AI_, and NI_ defines.
* look for & replace: getaddrinfo(), getnameinfo(), inet_ntop(),
inet_pton()
* look for gethostbyname2()
* don't bother looking for hstrerror() or inet_aton() anymore
* include <arpa/nameser.h> and <stddef.h>
* define USE_SELECT instead of __USE_SELECT
* always define HAVE_H_ERRNO
* add Brian Stark to THANKS, for lots of AIX porting feedback
* improve detection of sin_len for AIX (now part of sa_len test)
* add functions needed by recent ftp import:
getaddrinfo(), getnameinfo(), inet_ntop(), inet_pton()
remove functions not needed anymore:
hstrerror(), inet_aton()
* use #if HAVE_ISSETUGID not #ifdef
* update from NetBSD-current (20000802):
- rename NO_QUAD to NO_LONG_LONG, QUAD* -> LL* and add ULL*
(unsigned) equivalents. name change suggested by Klaus
Klein <kjk@netbsd.org>
- change defined(BSD4_4) || HAVE_SIN_LEN tests into
HAVE_SOCKADDR_SA_LEN, and set the latter if BSD4_4 exists
Mon Jul 31 10:59:10 EST 2000 lukem
* merge ftp from NetBSD-current (20000731)
- we can't just rename BSD4_4 -> HAVE_SIN_LEN, since bsd
systems define BSD4_4; change tests to test for either
defined(BSD4_4) or HAVE_SIN_LEN
- more KNF
Sun Jul 30 16:55:09 EST 2000 lukem
* merge ftp from NetBSD-current (20000730):
- clean up NO_QUAD support: create helper #defines and use as
appropriate:
#define NOQUAD ! NOQUAD
------- ------ - ------
QUADF "%ld" "%lld"
QUADFP(x) "%" x "ld" "%" x "lld"
QUADT long long long
STRTOL(x,y,z) strtol(x,y,z) strtoll(x,y,z)
- always use getaddrinfo() and getnameinfo() instead of
maintaining two code paths.
- rename __USE_SELECT to USE_SELECT
- rename BSD4_4 to HAVE_SIN_LEN
- replace union sockunion {} with struct sockinet {}, and
modify the code accordingly. this is possibly more portable,
as it doesn't rely upon the structure alignment within the
union for our own stuff.
Fri Jul 28 22:11:17 EST 2000 lukem
* merge ftp from NetBSD-current (20000728):
- no trailing , on last item (FEAT_max) in enum
- rename "opts" to "remopts", so people used to "o host"
don't get bitten
Wed Jul 26 18:59:19 EST 2000 lukem
* merge ftp from NetBSD-current (20000726):
- add support for FEAT and OPTS commands with `features' and
`opts'. (from RFC 2389).
- add support for MLST & MLSD (machine parseble listings)
with 'mlst', 'mlsd' and 'pmlsd' (mlsd |$PAGER) commands.
(from draft-ietf-ftpext-mlst-11)
- rename remotesyst() to getremoteinfo(), and modify to parse
the result from FEAT (if supported), and take into account
the support for the various extensions such as MDTM, SIZE,
REST (STREAM), MLSD, and FEAT/OPTS.
- put each feature into one of the following categories:
- known to work (explicit FEAT)
- unknown but assume works until explicit failure,
when it's then tagged as `known not to work'.
- known not to work (FEAT succeeded but didn't return
anything, or was unknown and then explicit failure)
assign results into features[] matrix.
- add support to getreply() so that an optional callback will
be called for each line received from the server except for
the first and last. this is used in FEAT (and MLST) parsing.
- modify various commands to check if REST (STREAM), MDTM and
SIZE are explicitly or implicitly supported before using.
- fix `syst' when verbose is off.
- minor knf (indent goto labels by one space, etc).
- simply various command usage handlers by assuming that
argv != NULL except for quit() and disconnect().
- errx?/warnx? audit. do not pass variable alone, use %s.
* check for issetugid() and don't use in libedit if it doesn't exist.
* merge libedit from NetBSD-current (20000726):
* Only look in home directory for .editrc. (Discussed
with Christos.)
* in glob.c #undef TILDE before redefining, because some AIX systems
#define TILDE in <sys/ioctl.h>
Mon Jul 10 00:28:51 EST 2000 lukem
* released lukemftp 1.4
Thu Jun 15 23:28:49 EST 2000 lukem
* merge ftp from NetBSD-current (20000615):
* migrate the SYST parsing from setpeer() into a separate
remotesyst(). call remotesyst() only when login has been
successful some servers don't let you run SYST until you've
successfully logged in.
* in fetch_ftp(), always call setpeer() with autologin
disabled, and use the following ftp_login() to DTRT. this
prevents ftp from trying to login a second time if the
first autologin fails when connecting to a remote site
anonymously using autofetch.
* reset unix_proxy and unix_server in cleanuppeer()
* missed a function conversion in the KNF sweep...
Mon Jun 12 01:16:12 EST 2000 lukem
* change lukemftp.h to check !HAVE_STRDUP instead of !HAVE_STRSUP.
fixes compile problem on systems which have strdup() as a macro.
* merge ftp from NetBSD-current (20000612):
from itojun: better fix for previous (doesn't need
in_addr_t or u_int32_t)
Sun Jun 11 12:19:52 EST 2000 lukem
* merge ftp from NetBSD-current (20000611):
portability fixes for lukemftp:
* initconn(): use in_addr_t instead of u_int32_t when
manipulating IPv6 addresses (and assume anything with ipv6
has in_addr_t; if not, i'll add an autoconf test for it)
* ai_unmapped(): not all systems have sin_len; so only set
#ifdef BSD4_4
* fix some lint
Mon Jun 5 21:10:31 EST 2000 lukem
* released lukemftp 1.3
Mon Jun 5 19:53:49 EST 2000 lukem
* convert various support files to ANSI C
* look for strtoll() instead of strtoq()
* update COPYRIGHT, THANKS, NEWS
* merge ftp from NetBSD-current (20000605):
- fix ai_unmapped() to be a no-op in the !def INET6 case
- display `(-INET6)' at the end of the version string if
!def INET6
- clarify in the man page that IPv6 support may not be present
(for lukemftp :)
* ensure <vis.h> has VIS_WHITE et al
Sun Jun 4 18:00:07 EST 2000 lukem
* merge ftp from NetBSD-current (20000604):
- Change `ls' to use the `LIST' and not `NLST' FTP protocol
command. Now that after many years on not caring we find
certain popular ftp servers are starting to obey RFC959 to
the letter of the law and will only return a list of
filenames (not directories or other filetypes) in the
output of `NLST', then `LIST' is more useful in this case.
(Note that the aforementioned pedanticness means that
filename completion isn't as useful as it could be...)
Fixes [bin/8937] by David A. Gatwood
<dgatwood@deepspace.mklinux.org>
- convert to ANSI KNF
- Add support for `fget localfile', which reads a list of
filenames to retrieve from localfile. Based on work by
Darren Reed.
- Update copyright dates.
- s/strtoq/strtoll/ (the latter is standardised)
- Add support for 'ftp -u url file ...', to upload a list of
files to given url. Mostly based on [bin/10019] by Scott
Aaron Bamford <sab@ansic.net>
- convert IPv4 mapped address (::ffff:10.1.1.1) into real IPv4
address before touching it. IPv4 mapped address complicates
too many things in FTP protocol handling.
- do not pass scoped IPv6 address notation on Host: directive,
since scope identifier is local to the originating node.
do not allow scoped IPv6 address notation in URL, if it is
via proxy.
- fixes from cgd:
* sanity check a length (otherwise certain bogus responses
can crash ftp)
* allow a transfer encoding type of `binary'; certain
firewall vendors return this bogus type...
- make debugging output unambiguous on IPv6 numeric addrs
(don't use host:port)
- http://[::1]:8080/ is legal.
- send Host: directive with RFC2732 bracket notation for IPv6
numeric, otherwise "host:port" is ambiguous to servers
(clarification will be submitted as update to RFC2732).
- only use getaddrinfo() et al if both NI_NUMERICHOST *and*
INET6 are defined... (allows --disable-ipv6 in lukemftp's
configure script to disable this as well, which is good for
testing when it appears getaddrinfo() is borken)
- updated comment on IPv4 mapped address. sync with kame.
- Fix examples on using pipes in local filenames. AFAICT,
ftp has always required `dir . |more' not as `dir |more'
treats `|more' as the remote filename. Resolves [bin/9922]
by Geoff Wing <mason@primenet.com.au>
- ftp(1): treats IPv4 mapped destination as IPv4 peer, not
native IPv6 peer. this does not support network with SIIT
translator.
- inhibit too-noisy message for scoped address data transfer
(will be enabled in "debug" mode).
- only use IPTOS_ setsockopt()s if they're defined (e.g, SunOS
doesn't). from Havard.Eidnes@runit.sintef.no
- allow IPv6 extended numeric address in host part.
(draft-ietf-ipngwg-scopedaddr-format-01.txt). fixes PR 9616.
* merge libedit from NetBSD-current (20000604):
- use strtol() (instead of atoi()) for sane error detection
Wed May 31 19:24:53 EST 2000 lukem
* merge libedit from NetBSD-current (20000531):
- Fix refresh glitches when using auto-margin.
- Don't dump core on empty .editrc files.
- el_insertstr takes a "const char *" not "char *" now as it
doesn't modify the argument.
Thu Feb 3 20:19:40 EST 2000 lukem
* released lukemftp 1.2
Tue Feb 1 09:47:51 EST 2000 lukem
* add --enable-ipv6 and --disable-ipv6 to configure
* modify libedit/sig.? to use sigfunc instead of sig_t, and
deprecate autoconf tests for retsigtype and sig_t.
This fixes portability problems with Digital UNIX 5.0.
* merge ftp from NetBSD-current (20000201):
- define private type `sigfunc' as
typedef void (*sigfunc) __P((int));
and replace use of sig_t and void (*)(int).
certain other OSes define sig_t differently to that (they
add extra arguments), and it causes problems due to
function mismatches, etc...
Wed Jan 26 22:54:38 EST 2000 lukem
* search for tgetent() in -ltermcap then -lcurses and -lncurses
* merge ftp from NetBSD-current (20000126):
- roll back to using sscanf() instead of strptime() to parse
`yyyymmddhhmmss' strings, since the latter technically can't
parse dates without non alphanumerics between the elements
(even though NetBSD's strptime() copes).
Tue Jan 25 19:09:37 EST 2000 lukem
* merge ftp from NetBSD-current (20000125):
- complete_ambiguous(): be consistent about completing
unambiguous matches; if the word is already complete then
return CC_REFRESH so that the higher layer may append a
suffix if necessary. Fix from Launey Thomas <ljt@alum.mit.edu>
- change references from draft-ietf-ipngwg-url-literal-01.txt
to RFC2732
- work around bug in apache 1.3.9 which incorrectly puts a
trailing space after the chunksize. noted by Jun-ichiro
itojun Hagino <itojun@itojun.org> in [bin/9096]
- work around lame ftpd's that don't return a correct post-Y2K
date in the output of `MDTM'. obviously the programmer of
aforementioned lame ftpd's did something like
"19%02d", tm->tm_year
instead of
"%04d", tm->tm_year + TM_YEAR_BASE
fixes [bin/9289] by jbernard@mines.edu
* merge libedit from NetBSD-current (20000125):
- PR/9244: Kevin Schoedel: libedit dumps bindings
inconsistently
- PR/9243: Kevin Schoedel: libedit ignores repeat count
- Add support for automatic and magic margins (from tcsh)
This makes the rightmost column usable on all programs
that use editline.
Tue Dec 21 08:59:22 EST 1999 lukem
* update INSTALL notes for some systems
* if sl_init() exists, check return value of sl_add() is int and
compile in a replacement copy if it's not the case
* don't look for <stringlist.h> - always use local prototypes; older
NetBSD systems may have conflicting prototypes
Mon Dec 20 11:21:28 EST 1999 lukem
* merge ftp from NetBSD-current (19991220):
- Move version from ftp_var.h to version.h
- Fix chunked support; probably broke after rate limiting was added.
Problem noticed/debugging assisted by giles lean
<giles@nemeton.com.au>.
- remove unnecessary freeaddrinfo(res), since res0 was changed to be
freed earlier in itojun's last commit. fixes [bin/8948].
- remove `const char *reason'; it was being assigned but not used.
- fix memory leak in fetch_url (no freeaddrinfo was there).
sync with recent KAME.
- separate out the main `data pump' loop into two: one that supports
rate limiting and one that doesn't. simplifies the code, and speeds
up the latter case a bit, at the expense of duplicating a few
lines...
Sun Nov 28 18:20:41 EST 1999 lukem
* merge ftp from NetBSD-current (19991128):
- implement xsl_init() and xsl_add(); error checking forms of
sl_{init,add}()
- fix bug where the second press of <TAB> on an empty word (i.e, list
all options) may have resulted in an strncmp() against NULL.
(detected by _DIAGASSERT())
- in cleanuppeer(), reset username to NULL after free()ing it.
fixes [bin/8870] by Wolfgang Rupprecht <wolfgang@wsrcc.com>
- complete_remote(): use remglob("", ...) instead of remglob(".", ...),
for listings of the current working directory; some ftp servers don't
like `NLST .'.
[noted by Giles Lean <giles@nemeton.com.au>]
- recvrequest(): treat remote=="" as remote==NULL when calling
command(). (to support the above change)
- support `[user@]' in `[user@]host' and `[user@]host[:][path]'.
[based on idea (and initial code) from David Maxwell <david@fundy.ca>]
- `idle' may be invoked without any args
- reformat some comments
- reformat usage string in program and man page
- call updateremotepwd() after successful login, not after successful
connect
- always call setsockopt(, IPPROTO_IP, IP_TOS, ) (et al); using #if
defined(IPPROTO_IP) doesn't work on certain foreign systems where
enums instead of #defines are used...
[noted by Matthias Pfaller <leo@dachau.marco.de>]
Mon Nov 15 23:01:58 EST 1999 lukem
* released lukemftp 1.1
Mon Nov 15 09:07:01 EST 1999 lukem
* merge libedit from NetBSD-current (19991115):
- instead of using a private coord_t global variable to store
the size of the rprompt, use the previously unused coord_t
el->el_rprompt.p_pos
Sat Nov 13 14:42:22 EST 1999 lukem
* support caching of results in AC_MSG_TRY_{COMPILE,LINK}
autoconf tests
* add NEWS file
* clarify copyright statement in COPYING
* merge ftp from NetBSD-current (19991113):
- implement `set rprompt'; right side version of `set prompt'.
depends on EL_RPROMPT support i added to editline(3).
- allow $FTPPROMPT and $FTPRPROMPT to override defaults for
the relevant prompts
- move `%' formatting code from prompt() to expandbuf().
- implement `%.' and `%c', similar to the same % codes in
tcsh(1) (functionality I added to tcsh nearly 6 years ago),
except that `%.' always does `...trailing' and `%c' always
does `/<x>trailing'.
- unknown `%foo' codes get printed as `%foo'
- implement updateremotepwd(); update the global variable
`remotepwd' to contain the remote working directory.
- add `set prompt', a user configurable prompt. (defaults to
`ftp> '). the following escape characters a la tcsh(1) are
supported: %/, %m, %M, and %n.
- add global var `username'; used by prompt code
- fix a couple of minor memory leaks
- bump version
- prevent minor memory leak (unnecessary strdup)
- implement restarting file:/// non-proxied http:// URLs
(with -R).
- fix a semicolono which stopped file:/// from working
- split the version string into product and version
- be consistent about reporting the version between:
+ status command
+ about:version URL fetch
+ User-agent sent in http requests
- hookup(): when using getservbyname() (when getaddrinfo()
isn't available), if the provided port is a valid number
use that rather than trying to do getservbyname() against
it. fixes a problem on foreign systems noted by Chuck
Silvers <chuq@chuq.com>
- support `about:version'. also display the version in the
output of `status'.
* merge libedit from NetBSD-current (19991113):
- implement printing a right-side prompt. code derived from
similar work I wrote for tcsh(1) three years ago.
- implement EL_RPROMPT, which allows a setting/getting of a
function which returns a string to be used as the
right-side prompt.
* replace manually managed config.h.in with acconfig.h and use
autoheader to generate the former.
* add missing entry for `#undef write' in acconfig.h (for SOCKS)
* configure.in:
- use `LL' suffix on long long constant used to test
snprintf("%lld")
- test for EL_RPROMPT instead of EL_EDITMODE, since the
former is is a newer required feature
* in makelist, set LC_ALL="C", in case the locale confuses awk.
problem noted by Peter Seebach <seebs@plethora.net>
Wed Oct 27 07:00:00 UTC 1999 lukem
* released 1.0
* removed libedit/TEST/test.c; no need to distribute it
Mon Oct 25 21:59:54 EST 1999 lukem
* released 1.0b7
* put VERSION string into lukemftp.h, and display with the `status'
command
Mon Oct 25 11:36:59 EST 1999 lukem
* merge ftp from NetBSD-current (19991025):
- fix up confirm() (broke `a' and `p' in last commit)
- simplify main loop (don't need `top' variable any more)
- use a struct sockaddr_in6.sin6_addr for the result from inet_pton(),
rather than u_char buf[16]
- add a few more comments
new features:
- add `usage'; displays the usage of a command.
implemented by calling the c_handler() with argc = 0, argv =
"funcname".
- add `passive auto'; does the same as $FTPMODE=auto.
- add `set [option value]'; display all options, or set an option to
a value.
- add `unset option'; unset an option.
- add getoptionvalue() to retrieve an option's value, and replace a few
global variables with calls to this.
- implement cleanuppeer(), which resets various bits of state back to
`disconnected'. call in disconnect() and lostpeer().
- support completing on `options'.
- improve recovery after a SIGINT may have closed the connection.
XXX: there's still a couple to fix
other stuff:
- various consistency fixes in the man page.
- ensure that the command usage strings in the code and man page
match reality.
- mput/mget: check that the connection still exists before each xfer.
- minor cosmetic changes in confirm().
- set code correctly in sizecmd() and modtime()
- don't need \n in err() strings.
- change lostpeer to take an argument (rather than casting
(sig_t)lostpeer in signal handlers)
- knf and whitespace police.
Sun Oct 24 17:02:59 EST 1999 lukem
* merge libedit from NetBSD-current (19991024):
- don't assume locales are not working - it may not be
the case
- re_refresh(): cast the character passed to re_addc() to
unsigned char, so we don't end up calling isprint() with
negative value when chars are signed and character value
is >= 128
- Fix pointer arithmatic (caused problems on LP64, including
ftp dumping core when `edit' was turned off then on).
Problem solved by David Huggins-Daines <dhd@eradicator.org>
Tue Oct 12 18:05:21 EST 1999 lukem
* install man page from ${srcdir} not from .
Tue Oct 12 17:00:41 EST 1999 lukem
* released 1.0b6
* merge from NetBSD-current (19991012):
a few user interface and cosmetic tweaks:
- confirm(): move from util.c to cmds.c. display mnemonic
string in its prompt. add support for `q' (terminate
current xfer), `?' (show help list)
- in various signal handlers, output a linefeed only if
fromatty.
- if fgets(stdin) returned NULL (i.e, EOF), clearerr(stdin)
because you don't want future fgets to fail. this is not
done for the fgets() in the main command loop, since ftp
will quit at that point.
- unless ftp is invoked with -a, don't retain the anonftp
setting between hosts (`ftp somehost:' sets anonftp, but
you don't want that to `stick' if you close that connection
and open a new one).
Mon Oct 11 23:06:38 EST 1999 lukem
* check for working const
* reorganise addition of -lukem to LIBS (was being added twice)
* merge from netbsd-current:
- use sigjmp_buf instead of jmp_buf for sigsetjmp() buffer
* libedit: don't bother generating & compiling editline.c, since
its component parts are compiled anyway.
Sun Oct 10 12:08:39 EST 1999 lukem
* released 1.0b5
* in libedit, use xsignal_restart() (from src/util.c) instead of
signal(); the isn't guaranteed to work on some foreign systems
(e.g, IRIX) if sigaction() is used in the same program.
* merge from netbsd-current:
- use sigsetjmp()/siglongjump() instead of setjmp()/longjmp();
the latter don't save the signal mask on some foreign systems.
- ensure signal handlers don't use stdio and do reset errno
if they don't exit with siglongjmp()
- use a common SIGINT handler for {send,recv}request()
- allow a second SIGINT during the "xfer aborted. waiting for
remote to finish abort." stage. if this occurs, just call
lostpeer() to close the connection. whilst this might be
considered brutal, it's also extremely handy if you're
impatient or there's lossage at the remote end.
* add preformatted manual page
* fix --enable-editline
Wed Oct 6 10:19:00 EST 1999 lukem
* released 1.0b4
* don't defining SIGINFO to SIGQUIT if the former doesn't exist; the
code now supports both as a method of getting the transfer stats
* rototill signal handling in the actual data xfer routines, and
specifically set SIGQUIT to psummary in each one, to override
editline's handler
Tue Oct 5 23:48:29 EST 1999 lukem
* factor out SIGINFO setting into a handler that is always active
(but only prints out info if bytes > 0). only set the handler if
SIGINFO is defined
* hijack SIGQUIT to be the same as SIGINFO
* in {recv,send}request(), factor a lot of duplicated code out into
a `cleanup' section at the end
* rework shell() a bit
* enhancments from Marc Horowitz <marc@mit.edu> to improve
connection timeouts:
- implement xsignal_restart(), which only sets the SA_RESTART
flag if specifically requested
- xsignal() is now a wrapper to xsignal_restart(). INFO,
USR1, USR2 and WINCH are restartable, ALRM, INT, PIPE and
QUIT are not
- improve getreply()'s timeout code to take advantage of the
above
* improve wording of how globbing works for `classic' URLs (host:path)
suggested by John Refling <johnr@imageworks.com> in relation to PRs
[bin/8519] and [bin/8520]
* always compile in the `edit' command even if NO_EDITCOMPLETE defined
it's just a no-op in the latter case, which is more consistent to
the users
* always compile in about: support (i.e, remove NO_ABOUT). i'm
entitled to some vanity in this program...
* update copyrights
Mon Oct 4 10:57:41 EST 1999 lukem
* Invoke ar with `cr' not `cq'
* Use AC_PROG_RANLIB to find ranlib, and use it on the libraries
* Remove `makelist' from dependency list for libedit files; re-running
configure shouldn't result in rebuilding libedit
* Add support for --{en,dis}able-editcomplete (defaults to enabled),
which prevents libedit support from being compiled in.
From Chris G. Demetriou <cgd@netbsd.org>
Sun Oct 3 16:49:01 EST 1999 lukem
* touch up the README
* add COPYING, INSTALL, THANKS
* whitespace consistency
* in config.h, replace NO_QUAD with HAVE_QUAD_SUPPORT, and in
lukemftp.h define the former if the latter is non zero
* change test against GETPGRP_VOID from #ifdef to #if
* snprintf(): in the truncation case, ensure that the length
returned is the actual length, not the needed length
Sat Oct 2 00:41:34 EST 1999 lukem
* fix more lossage with $(srcdir) / $(VPATH) stuff; seems to work now
when configured in a separate directory
* actually test the correct variable when determining whether to run
AC_FUNC_GETPGRP
Fri Oct 1 19:32:22 EST 1999 lukem
* released 1.0b3
* use AC_PROG_MAKE_SET
* determine setting of NO_QUAD with configure not lukemftp.h
* if have long long and have snprintf, test that snprintf
supports %lld. if it doesn't use private version
* change strtoq from returning off_t to returning long long
* updates from NetBSD mainline:
- only try epsv once per connection (i.e, don't bother again
if it fails)
- improve description of rate command
- fix up global vars; they're now externed in ftp_var.h
except when main.c includes it
- remove "pathnames.h"
Fri Oct 1 10:08:43 EST 1999 lukem
* updates from NetBSD mainline:
- fix determining of homedir
- parse_url(): fix checking of portnum
- move kame copyrights after bsd/tnfi ones
* released 1.0b2
* add %lld and %qd support to snprintf() for displaying long long's
* support VPATH and srcdir
Thu Sep 30 17:19:35 EST 1999 lukem
* released 1.0b1
* fix from NetBSD mainline: in empty() FD_ZERO the correct variable
Wed Sep 29 23:34:33 EST 1999 lukem
* major rework; reimport code from NetBSD-current 1999/09/29 into
separate subdirectories and build from there. organisation is now:
libedit replacement libedit
libukem replacements for missing functions
src main ftp source
Mon Sep 27 00:43:12 EST 1999 lukem
* released 1.0 a6
Sun Sep 26 17:17:05 EST 1999 lukem
* released 1.0 a5
Sat Sep 25 00:58:28 EST 1999 lukem
* released 1.0 a4
Fri Sep 24 17:07:07 EST 1999 lukem
* released 1.0 a3
Fri Sep 24 16:18:29 EST 1999 lukem
* released 1.0 a2
Tue Sep 21 11:38:49 EST 1999 lukem
* import usr.src/bin/ftp and usr.src/lib/libedit sources from NetBSD
|