|author||Andrey A. Chernov <ache@FreeBSD.org>||1994-09-22 23:45:37 +0000|
|committer||Andrey A. Chernov <ache@FreeBSD.org>||1994-09-22 23:45:37 +0000|
Notes: svn path=/vendor/ncftp/dist/; revision=3004 svn path=/vendor/ncftp/1.8.5/; revision=3006; tag=vendor/ncftp/1.8.5
Diffstat (limited to 'usr.bin/ncftp/README')
1 files changed, 359 insertions, 0 deletions
diff --git a/usr.bin/ncftp/README b/usr.bin/ncftp/README
new file mode 100644
@@ -0,0 +1,359 @@
+If you are a novice user, and don't know how to compile things, try
+contacting your local guru first (get them to do it for you :-). Please
+understand that I don't have time to walk newbies through the whole
+One of these months, I will write a Configure script that does all this for
+you. I just don't have time to learn another language (dist-3.0) just to
+write the script! Perhaps for 2.0.
+1. READ this entire file. Part A, below, tells what to do if you want to
+ use NcFTP with a command-line editor. Part B tells you how to configure
+ the Makefile to compile the program for your system. Part C tells you
+ how to configure NcFTP's optional features. Part D tells you how to
+ contact me if you want to report a bug or submit new code to the
+2. EDIT the Makefile, making any necessary changes described in parts
+ A, B, or C. Don't forget to read the directions in the Makefile,
+ so you don't forget any needed libraries, etcetera.
+3. You can also change the program's default behavior by editing defaults.h.
+ 99% of the time you don't need to do this, so you can skip this step.
+If you have problems, you can mail me, but please try your best to install
+it without my help. I'm quite tired of responding to lazy SunOS users
+because they didn't bother reading the directions so that they would have
+known that they needed to use GCC.
+I _do_ want to hear from you if you have comments or bug reports/fixes. I
+would also like to hear from you if you had a system that wasn't covered
+in sys.h, so I can add an entry for other users of your system.
+The latest version of ncftp is available in the directory:
+This machine is heavily used by students and faculty alike, so please
+do not call during working hours (9AM - 5PM American Central time). In fact,
+I have a cron entry that changes all the file permissions to public
+unreadable during that period, so you won't be able to download anyway.
+I am grateful to Shari Deiana and the University of Nebraska for making this
+Part A. Installing with a command line editor:
+As of this release, GNU Readline and Chris Thewalt's Getline command-line
+editing and history facilities are supported. Neither are included with the
+ncftp sources. You can find Getline at:
+ ce.berkeley.edu:/pub/thewalt/getline.tar.Z (note: use 'ls', not 'dir!')
+and Readline is in the directory:
+To install Readline, you will need to know where libreadline.a and the
+header <readline/readline.h> are. You will need to link libreadline.a and
+libcurses.a (or libtermcap.a) with ncftp (see the Makefile). Good luck on
+trying to compile it. It is not an easy thing to do! In the Makefile, you
+will need to add -DREADLINE to PDEFS, add -lreadline -lcurses to LIBS, and
+edit the HDRDIRS and LIBDIRS lines. This stuff is already in the Makefile,
+so you can just uncomment it.
+To install Getline, you need to know where libgetline.a and it's header
+(getline.h) are. In the Makefile, you'll need to add -lgetline to LIBS and
+edit the HDRDIRS and LIBDIRS lines. This stuff is already in the Makefile,
+so you can just uncomment it.
+DO NOT bug me if you can't figure out how to compile Getline or Readline.
+Contact their respective authors instead. It is not essential that you use
+Part B. System Dependencies:
+NcFTP may need work-arounds for some things due to the differences
+in implementations of unix. The following systems are taken care
+of automatically. For these systems, you should just be able to type
+'make' (but proceed to part C):
+ Silicon Graphics IRIX
+ IBM's AIX
+ DEC's Ultrix (well, might need to use -lcursesX instead of -lcurses)
+ Pyramid OSx
+ Berkley Software Design, Inc.'s BSDi
+Otherwise you will have to configure ncftp manually.
+Important for "Yellow Pages" users: Don't forget to link the library
+that includes the YP/NIS version of getpwuid(), etc. Otherwise the program
+won't be able to expand ~username/path/name type pathnames, and maybe even
+~/path/name types of pathnames. If you're wondering why the program isn't
+opening your rc file, this could be the cause.
+You will need to add these things to the SDEFS line in the Makefile
+as applicable. As an example, if I say 'add -DFoobar to SDEFS,' find
+the line in the Makefile that reads 'SDEFS=' (or 'SDEFS=-DFoo2') and
+change it to 'SDEFS=-DFoobar' (or 'SDEFS=-DFoo2 -DFoobar). If your
+system is listed below, follow the directions and then you ready to
+go to part C, below.
+ Sun Microsystems' SunOS/Solaris: Use an ANSI compiler such as
+ gcc (set CC=gcc in the Makefile), or acc (set CC=acc).
+ The regular 'cc' is not an ANSI compiler. You could also run
+ something like 'ansi2knr' on the sources and hope it works.
+ You will probably need to link both the curses and termcap
+ libraries if you use -DCURSES (see below). If you're running
+ Solaris (SunOS 5.x or greater) add -DSolaris to SDEFS.
+ I also needed to add -lnsl -lsocket to LIBS.
+ Hewlett-Packard HP-UX: If you have 7.0, you'll need to find
+ a copy of <ftp.h> from somewhere (8.0 has it though). Then
+ set CFLAGS= -Aa. You may also need to use gcc if your
+ compiler is non-ANSI. Note that for HP-UX, the default
+ terminal escape codes are for HP terminals, so you should
+ probably link termcap/curses in so it will get the ANSI
+ sequences if you're on a vt100, etc., terminal connected
+ to your HP-UX machine.
+ Linux: For 'term' support, from what I can tell just add
+ the path of 'client.a' to LIBS, and add -DTERM_FTP to SDEFS,
+ to turn on the term specific ftp code. May need to link
+ -lcurses and -ltermcap.
+ SCO Unix: Add -DSCO324 or -DSCO322 (as appropriate) to SDEFS,
+ and -lsocket to LIBS.
+ SCO Xenix 2.3.4: Add -DSCOXNX to SDEFS;
+ Try adding -DLINGER if puts don't work.
+ Add "-lsocket -ldir" to LIBS.
+ Bull DPX/2: Add -DBULL to SDEFS, add -linet to LIBS, and
+ use gcc.
+ Sequent's DYNIX: Use gcc and add -DDYNIX (if necessary) to SDEFS.
+ You may also be short several string functions which you will
+ have to get elsewhere, and perhaps mktime and strftime.
+ You can get all that stuff from the BSD sources (like ftp.uu.net).
+ Please bug Sequent to update their libc library!
+ Sequent's Dynix/PTX: Add -DDYNIXPTX to SDEFS.
+ Add -lsocket -linet -lnsl -lseq to LIBS.
+ DEC OSF1/1.3: Use gcc, Add -DGETCWDSIZET to SDEFS. cc might work,
+ though. Try cc if gcc chokes.
+If your system doesn't fit any of those, things will be trickier. Answer
+all these questions and add to the SDEFS line. You may want to try
+each option one at a time until everything works.
+* Is your system closer to System V or BSD? Your SDEFS line should have
+either -DBSD or -DSYSV. If you don't know, try leaving it blank first;
+some compilers automatically define it for you.
+* Add -DNO_CONST if your compiler chokes on the const directive. You
+will know if you need to add this if the compiler spits out errors saying
+it doesn't know what 'const' is.
+* As I said above, you will need to link special libraries if your system
+is running Yellow Pages.
+* Add -DSYSSELECTH if you need <sys/select.h> included for definitions
+of fd_set, etc.
+* Add -DNO_UNISTDH if you don't have <unistd.h>. If the compiler complains
+about not being able to open <unistd.h> add this.
+* Add -DNO_STDLIBH if you don't have <stdlib.h>. If the compiler complains
+about not being able to open <stdlib.h> add this.
+* Add -DNO_UTIMEH if you don't have <utime.h>. If the compiler complains
+about not being able to open <utime.h> add this.
+* Add -DNO_MKTIME if you don't have the mktime() system call, and don't
+feel like getting the source for it and compiling it in with the program.
+If you define this, the program will not set the file modification times
+to match the ones on the remote host (no big deal).
+* Add -DGETPASS if you would rather use the standard getpass() system
+call, instead of our version, Getpass(), which takes more than 8
+characters. You may want to define this if you are having problems
+If you haven't given up on our Getpass(), you can try adding -DSGTTYB
+if you want to use a struct sgttyb instead of a struct termio. By default,
+BSD systems define SGTTYB automatically. You can also try adding -DTERMIOS
+to use a POSIX compliant struct termios instead. Don't pull your hair out
+trying to get the Getpass code to compile; if it gives you problems just
+define -DGETPASS and hope your system's getpass can handle passwords
+longer than 8 characters.
+* Add -DBAD_INETADDR if your inet_addr() function returns a struct in_addr
+instead of a u_long, as it should (in DG/UX 5.4.1).
+* Add -DBROKEN_MEMCPY if ncftp mysteriously dumps core when trying to open
+a remote host. I'm told that this happens because of some problem in System
+V's sockets don't like fprintf (and memcpy).
+* Add -DPTRTYPE=char if your pre-ANSI compiler complains about the
+way malloc() or free() are used, and in general does not like (void *)
+as a generic pointer type.
+* Add -DNO_STRFTIME if your system does not have strftime(). If you do,
+we won't try to use it. This means, however, you cannot use ``%'' values
+in your prompt.
+* Add -DNO_RENAME if your system does not have rename() (or the one it
+has is broken). If you do, we will use our own.
+* Add -DNO_STRSTR if your system does not have strstr(). If you do, we
+will use our own.
+* Add -DLINGER if puts to the remote system are incomplete.
+* Add -DNET_ERRNO_H if you need to include <net/errno.h> for definitions
+ of ECONNREFUSED, etcetera.
+* (Optional) Add -DGETCWDSIZET if your system's getcwd() takes a size_t
+as the second parameter instead of an int.
+* (Optional) Add -DHERROR if you know you have the herror() system
+* (Optional) Add -DU_WAIT if you know your wait system call takes
+a pointer to a 'union wait.' Defined automatically if you define
+* (Optional) Add -DHOSTNAME=\"machine.domain.nam\" if your system
+doesn't generate it's own hostname. To check this, compile ncftp
+then run it and type 'set.' Look at the variable anon-password.
+If the hostname is wrong, or if it is in the form of 'yourlogin' or
+'yourlogin@machine' instead of 'firstname.lastname@example.org,'
+re-compile it with HOSTNAME set to your machine's address, in the
+form of 'machine.xxx.yyy.'
+* (Optional) Add -DHAS_DOMAINNAME if you have the getdomainname()
+* (Optional) If you're having problems with your hostname not being
+full (i.e you have 'yourlogin@machine') all is not lost. First of all,
+define HAS_DOMAINNAME if you can. But sometimes getdomainname() doesn't
+work -- instead of giving you the domain name, it returns an empty
+string. So you can hardcode the domain name by defining DOMAIN_NAME to
+be the domain (i.e. add -DDOMAIN_NAME=\"domain.nam\"). That way, if
+getdomainname doesn't work, the program will have something to fall back
+on. This problem is common on SunOS/Solaris.
+* (Optional) Add -DSTRICT_PROTOS if your compiler wants function prototypes
+for all functions, not just non-int-returning ones. This is really just
+handy for debugging during development, so this is not recommended.
+Part C. Program Options:
+Add these as applicable to the PDEFS line in the Makefile.
+* -DGZCAT=\"path\": If you have the GNU gzip package installed on your system,
+ the program can try paging remote files compressed with gzip _and_
+ compress (instead of just compress). Add -DGZCAT=\"/full/path/to/zcat\"
+ with GZCAT set to the path name of GNU's zcat/gzcat.
+* -DCURSES: Uses curses library to display boldface, underline, etc.
+ By default ncftp uses hard-coded ANSI escapes (^[[1m etc.) to
+ save the 100k or so the curses library adds. You will also need
+ to edit the LIBS line in the Makefile to add -lcurses. You may
+ need to add -ltermcap instead, or both -lcurses and -ltermcap.
+ If you choose to use the termcap library, you may want to also add
+ -DNO_CURSES_H so it does not try to include <curses.h>.
+* -DSYSLOG: Define this to have ncftp log connections and transfers
+ to the syslog.
+* -DNO_TIPS: Define if you want to cut a little fat at the expense of
+ novice users.
+* -DGETLINE: If you want to use Chris Thewalt's getline input line editor
+ and history facility, add this (and see below).
+* -DREADLINE: If you want to use GNU's readline input line editor and
+ history facility, add this (and see the Makefile). If you do this, you
+ also need to add -DCURSES (see above).
+* -DSOCKS: NcFTP is now compatible with the Socks library by David Koblas,
+ at email@example.com. This lets you use NcFTP with a "firewall" gateway
+ for enhanced site security. You can get the latest version from
+ netcom.com:/pub/koblas. After you have compiled it, compile NcFTP
+ with -DSOCKS added to PDEFS, and the pathname of the Rconnect.o file
+ added to LIBS.
+* -DTRY_ABOR: Define if you want to try the 'ABOR' command from ncftp;
+ The aborting code has had some problems, so by default the program
+ 'aborts' by continuing to read input but not echoing output.
+* -DDB_ERRS: Define this if you want my Perror() function to be more
+ verbose. You may want to do this if you are a programmer examining this
+ code, and want to know where in the source the Perror's are coming
+Part D. Sending me patches:
+I apologize in advance for problems that my coding style may cause. The code
+itself is formatted such that each indent-level is a tab (intended to be
+equivalent to 4 spaces), and not spaces nor a combination of tabs and spaces.
+The reason for this, besides being more logical to me, is that I use a
+Macintosh editor to compose the code and I prefer it's indenting method.
+Another problem in my coding-style is that I write C-code intended for ANSI
+C compilers. This means that I will use the new-style function declarations
+and function prototypes, like:
+ long Foobar(long, long, char *);
+ long Foobar(long t0, long t1, char *str)
+as opposed to:
+ long Foobar();
+ long Foobar(t0, t1, str)
+ long t0, t1;
+ char *str;
+Another thing may annoy you is that I always use function prototypes for any
+function I call, including functions that return an int. This is a good
+practice that I learned from the Macintosh programming world.
+So if you send me patches, please conform to my coding style so that 'patch'
+won't screw up, and also that some continuity will be preserved.
+Before you make your patch, you should be sure that you are using the most
+current version of the program. This is especially important if you are
+reporting a bug; I may have already fixed it! See the above info to get it
+via ftp. Major versions are always posted to comp.sources.misc. Bug reports
+are posted to comp.sources.bugs. Patches that need to be posted ASAP are
+posted to this group first, so it is advisable that you check this group.
+If you make changes to the code, surround your code in #ifdef/#endif blocks.
+Instead of doing things like #ifdef SunOS, use a name that describes the
+bug fix or feature, and not your system type, like #ifdef NO_UNISTDH,
+or #ifdef GETLINE. That way in case another system has the same problem,
+it can be added to sys.h without cluttering up the source code. Then, add
+the symbol you used to the end of cmds.c, in the 'CPP Hell' part of the
+version() command. You'll see a list of CPP symbols, so just add yours in
+a similar fashion, like #ifdef GETLINE/DStrs[nDStrs++] = "GETLINE";/#endif.
+If you don't know how to make a patch, here's how to do it. Things are easy
+if you've only changed one file. Then all you need to do pipe the output of
+diff -c into a file and send it to me, i.e. "diff -c cmds.c cmds.c.hack >pch."
+If you've hacked several files, the way I do it is to keep the originals in
+one directory (you did make a copy of everything first didn't you?) and the
+revisions in another directory. Then you change directory to the one with the
+originals and do "diff -c . ../revisions > ../pch."