diff options
-rw-r--r-- | CHANGES | 7 | ||||
-rw-r--r-- | INSTALLATION | 57 | ||||
-rw-r--r-- | LYMessages_en.h | 7 | ||||
-rw-r--r-- | WWW/Library/Implementation/HTFWriter.c | 359 | ||||
-rw-r--r-- | lynx.cfg | 5 | ||||
-rw-r--r-- | lynx.rsp | 86 | ||||
-rw-r--r-- | src/LYGetFile.c | 4 | ||||
-rw-r--r-- | userdefs.h | 4 |
8 files changed, 486 insertions, 43 deletions
diff --git a/CHANGES b/CHANGES index eeccf3f6..b80bf9f2 100644 --- a/CHANGES +++ b/CHANGES @@ -1,9 +1,12 @@ --- $LynxId: CHANGES,v 1.518 2010/11/26 20:17:33 tom Exp $ +-- $LynxId: CHANGES,v 1.520 2010/12/08 01:30:25 tom Exp $ =============================================================================== Changes since Lynx 2.8 release =============================================================================== -2010-11-26 (2.8.8dev.7) +2010-12-07 (2.8.8dev.7) +* cleanup URLs in lynx documentation -DK +* add check in getfile() when handling a "mailto:" url, to prevent it when the + user has requested a dump (Debian #533308) -TD * improve configure check for IDNA library, which may depend upon intllib, e.g., building with mingw on cygwin -DK * modify autoconf macros which look for X libraries, e.g., for PDCurses, to diff --git a/INSTALLATION b/INSTALLATION index 000f8d6e..fafb96f9 100644 --- a/INSTALLATION +++ b/INSTALLATION @@ -915,10 +915,10 @@ Borland C: The original Win32 port was built with Borland C++ 4.52, but later versions reportedly can be used. Before compiling the Lynx sources, you need a curses library, and it is recommended that you have the zlib - library. Get pdcurses2.3 from "http://www.lightlink.com/hessling/". I + library. Get pdcurses2.3 from "http://pdcurses.sourceforge.net/". I have modified it so that mouse support is no longer broken for Lynx (see "http://www.fdisk.com/doslynx/"). You will want to get zlib from - "http://www.gzip.org/zlib/ ". Compile these libraries, and + "http://www.zlib.net/ ". Compile these libraries, and put them in a convenient place (pdcurses inside the Lynx directory). Unpack the latest Lynx source distribution, and make an obj directory @@ -938,6 +938,7 @@ Borland C: information can be found in "http://www.fdisk.com/doslynx/lynxport.htm". -- 1997/10/12 - W. Buttles <lynx-port@fdisk.com> +-- 2010/11/27 - URL's updated by Doug Kaufman <dkaufman@rahul.net> Cygwin: It is possible to compile under the cygwin system, which will allow you to @@ -1013,7 +1014,7 @@ V. Compile instructions -- 386 DOS If you wish to compile with "USE_ZLIB" (recommended), you must have the zlib library. Get the source from - http://www.gzip.org/zlib/ + http://www.zlib.net and compile it. Put libz.a in the lib subdirectory of DJGPP, and put zlib.h and zconf.h in the include subdirectory. @@ -1021,8 +1022,8 @@ V. Compile instructions -- 386 DOS package and a TCP package. You can use PDCurses (available at "http://pdcurses.sourceforge.net/") and the DJGPP port of WATTCP. The updated version of WATTCP is known as WATT-32, and is available at - "http://www.bgnett.no/~giva/". You can also use slang (available at - "http://www.s-lang.org/") as your screen library. You must + "http://home.broadpark.no/~gvanem/". You can also use slang (available at + "http://www.jedsoft.org/slang/") as your screen library. You must compile these before you go any further. If you wish to use PDCurses 2.6, you need to first apply the following patch: @@ -1154,13 +1155,13 @@ V. Compile instructions -- 386 DOS If you wish to compile with SSL enabled, you need to get and compile OpenSSL. The DJGPP port has been successfully compiled with the - 0.9.7 stable series of OpenSSL. DJGPP can compile OpenSSL from the + development version of OpenSSL. DJGPP can compile OpenSSL from the standard source distribution (http://www.openssl.org/). See the file "INSTALL.DJGPP" in the OpenSSL distribution. If you have trouble applying the patches, try using the "patch" program, - ("http://www.delorie.com/pub/djgpp/current/v2gnu/pat253b.zip"). + ("http://www.delorie.com/pub/djgpp/current/v2gnu/pat261b.zip"). To read the Unix man style documentation, use, for example, "less" ("http://www.delorie.com/pub/djgpp/current/v2gnu/lss374b.zip"). Compile or place your compiled PDCurses library in /djgpp/pdcur26, and @@ -1197,27 +1198,27 @@ V. Compile instructions -- 386 DOS If all goes well, you will have a lynx.exe file. If you have trouble, check to be sure djgpp.env is the way it came in the original package. - To test Lynx_386 you must have a packet driver installed. The simplest - method is to use a null packet driver that just allows Lynx to start up, - but doesn't do anything else. One such executable driver has been posted, - uuencoded, to the lynx-dev mailing list: - "http://www.flora.org/lynx-dev/html/month011998/msg00057.html". - Start the dummy packet driver with "nullpkt 0x60", and take it out of - memory with "nullpkt -u". You can also use slip8250.com. See the CRYNWR - package "ftp://ftp.simtel.net/pub/simtelnet/msdos/pktdrvr/pktd11.zip". - Usage is "slip8250 0x60", but you may have to invoke it as, for example, - "slip8250 0x60 6 3 0x2F8" so that it uses COM2 and IRQ 3, in order to - avoid an IRQ conflict with a mouse or some other device. Another packet + To test Lynx_386 you must have a packet driver installed. The simplest + method is to use a null packet driver that just allows Lynx to start + up, but doesn't do anything else. One such executable driver has been + posted, uuencoded, to the lynx-dev mailing list in January 1998, + but is corrupted in the mailing list archive. You can get this at + "http://www.ncf.ca/ncf/pda/computer/dos/net/nullpkt.zip". Start the + dummy packet driver with "nullpkt 0x60", and take it out of memory with + "nullpkt -u". You can also use slip8250.com. See the CRYNWR package + "ftp://ftp.simtel.net/pub/simtelnet/msdos/pktdrvr/pktd11.zip". Usage + is "slip8250 0x60", but you may have to invoke it as, for example, + "slip8250 0x60 6 3 0x2F8" so that it uses COM2 and IRQ 3, in order to + avoid an IRQ conflict with a mouse or some other device. Another packet driver is slipper.exe, which is available from many sites, including - "ftp://ftp.trumpet.com.au/slipper". To remove it from memory use - termin.com (usage "termin 0x60"), available in the CRYNWR package. To - connect over a dialup PPP connection you need dosppp or klos' pppshare. - (Find at: + "http://www.cavazza.it/file/bbs/intsoft/slippr15.zip". To remove it from + memory use termin.com (usage "termin 0x60"), available in the CRYNWR + package. To connect over a dialup PPP connection you need dosppp or klos' + pppshare. (Find at: "http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/net/dosppp/dosppp06.zip" "http://www.ncf.carleton.ca/ncf/pda/computer/dos/net/dosppp06.zip" - "http://mvmpc200.ciw.uni-karlsruhe.de/~mvmpc9/user/TONI/dosppp/dosppp06.zip" - "ftp://ftp.oldskool.org/pub/tvdog/internet/dosppp06.zip"; - "ftp://ftp.klos.com/pub/demo/pppshare.exe") + "http://www.cavazza.it/file/bbs/intsoft/dosppp06.zip" + "http://www.cavazza.it/file/bbs/intsoft/pppshare.exe") File access looks like this: @@ -1254,7 +1255,7 @@ V. Compile instructions -- 386 DOS lynx2-* directory. Place a copy of this batch file, named "djgpp.bat", in the lynx2-* directory, move to that directory and type "djgpp". A more complete batch file with error checking and annotation can be found at: - "http://www.flora.org/lynx-dev/html/month111997/msg00250.html". + "http://lists.nongnu.org/archive/html/lynx-dev/1997-11/msg00250.html". If you use the configure method, remember that if you configure with the option "--enable-nls", you also need to set LIBS="-liconv". A @@ -1285,7 +1286,7 @@ V. Compile instructions -- 386 DOS -- 1997/9/29 - D. Kaufman <dkaufman@rahul.net> -- 1997/10/3 - B. Schiavo <Wschiavo@concentric.net> --- Last update - 2004/01/19 +-- Last update - 2010/11/27 VI. General installation instructions @@ -1387,4 +1388,4 @@ VIII. Acknowledgment -- 1999/04/24 - H. Nelson <lynx-admin@irm.nara.kindai.ac.jp> -- vile:txtmode --- $LynxId: INSTALLATION,v 1.113 2010/09/19 18:40:53 tom Exp $ +-- $LynxId: INSTALLATION,v 1.114 2010/12/08 01:28:43 Doug.Kaufman Exp $ diff --git a/LYMessages_en.h b/LYMessages_en.h index 3ef4a112..87ff962e 100644 --- a/LYMessages_en.h +++ b/LYMessages_en.h @@ -1,5 +1,5 @@ /* - * $LynxId: LYMessages_en.h,v 1.70 2009/05/28 23:11:50 tom Exp $ + * $LynxId: LYMessages_en.h,v 1.71 2010/12/08 01:28:43 Doug.Kaufman Exp $ * * Lynx - Hypertext navigation system * @@ -20,11 +20,6 @@ * debugging (CTRACE) or (b) are constants used in interaction with * other programs. * - * Links to collections of alternate definitions, developed by the Lynx - * User Community, are maintained in Lynx links: - * - * http://www.subir.com/lynx.html - * * See ABOUT-NLS and po/readme for details and location of contributed * translations. When no translation is available, the English default is * used. diff --git a/WWW/Library/Implementation/HTFWriter.c b/WWW/Library/Implementation/HTFWriter.c new file mode 100644 index 00000000..1680b238 --- /dev/null +++ b/WWW/Library/Implementation/HTFWriter.c @@ -0,0 +1,359 @@ +/* FILE WRITER HTFWrite.h + * =========== + * + * This version of the stream object just writes to a C file. + * The file is assumed open and left open. + * + * Bugs: + * strings written must be less than buffer size. + */ + +#include <HTUtils.h> + +#include <HTFWriter.h> + +#include <HTFormat.h> +#include <HTAlert.h> +#include <HTFile.h> + +#include <LYUtils.h> +#include <LYLeaks.h> + +/* Stream Object + * ------------ + */ + +struct _HTStream { + const HTStreamClass *isa; + + FILE *fp; + char *end_command; + char *remove_command; + BOOL announce; +}; + +/*_________________________________________________________________________ + * + * B L A C K H O L E C L A S S + * + * There is only one black hole instance shared by anyone + * who wanst a black hole. These black holes don't radiate, + * they just absorb data. + */ +static void HTBlackHole_put_character(HTStream *me, char c) +{ +} +static void HTBlackHole_put_string(HTStream *me, const char *s) +{ +} +static void HTBlackHole_write(HTStream *me, const char *s, int l) +{ +} +static void HTBlackHole_free(HTStream *me) +{ +} +static void HTBlackHole_abort(HTStream *me, HTError e) +{ +} + +/* Black Hole stream + * ----------------- + */ +static const HTStreamClass HTBlackHoleClass = +{ + "BlackHole", + HTBlackHole_free, + HTBlackHole_abort, + HTBlackHole_put_character, HTBlackHole_put_string, + HTBlackHole_write +}; + +static HTStream HTBlackHoleInstance = +{ + &HTBlackHoleClass, + NULL, + NULL, + NULL, + NO +}; + +/* Black hole craetion +*/ +HTStream *HTBlackHole(void) +{ + return &HTBlackHoleInstance; +} + +/*_________________________________________________________________________ + * + * F I L E A C T I O N R O U T I N E S + * Bug: + * All errors are ignored. + */ + +/* Character handling + * ------------------ + */ + +static void HTFWriter_put_character(HTStream *me, char c) +{ + putc(c, me->fp); +} + +/* String handling + * --------------- + * + * Strings must be smaller than this buffer size. + */ +static void HTFWriter_put_string(HTStream *me, const char *s) +{ + fputs(s, me->fp); +} + +/* Buffer write. Buffers can (and should!) be big. + * ------------ + */ +static void HTFWriter_write(HTStream *me, const char *s, int l) +{ + fwrite(s, 1, l, me->fp); +} + +/* Free an HTML object + * ------------------- + * + * Note that the SGML parsing context is freed, but the created + * object is not, + * as it takes on an existence of its own unless explicitly freed. + */ +static void HTFWriter_free(HTStream *me) +{ + fclose(me->fp); + if (me->end_command) { /* Temp file */ + _HTProgress(me->end_command); /* Tell user what's happening */ + system(me->end_command); + FREE(me->end_command); + if (me->remove_command) { + system(me->remove_command); + FREE(me->remove_command); + } + } + + FREE(me); +} + +/* End writing +*/ + +static void HTFWriter_abort(HTStream *me, HTError e) +{ + fclose(me->fp); + if (me->end_command) { /* Temp file */ + CTRACE((tfp, "HTFWriter: Aborting: file not executed.\n")); + FREE(me->end_command); + if (me->remove_command) { + system(me->remove_command); + FREE(me->remove_command); + } + } + + FREE(me); +} + +/* Structured Object Class + * ----------------------- + */ +static const HTStreamClass HTFWriter = /* As opposed to print etc */ +{ + "FileWriter", + HTFWriter_free, + HTFWriter_abort, + HTFWriter_put_character, HTFWriter_put_string, + HTFWriter_write +}; + +/* Subclass-specific Methods + * ------------------------- + */ + +HTStream *HTFWriter_new(FILE *fp) +{ + HTStream *me; + + if (!fp) + return NULL; + + me = (HTStream *) malloc(sizeof(*me)); + if (me == NULL) + outofmem(__FILE__, "HTML_new"); + + assert(me != NULL); + + me->isa = &HTFWriter; + + me->fp = fp; + me->end_command = NULL; + me->remove_command = NULL; + me->announce = NO; + + return me; +} + +/* Make system command from template + * --------------------------------- + * + * See mailcap spec for description of template. + */ +/* @@ to be written. sprintfs will do for now. */ + +/* Take action using a system command + * ---------------------------------- + * + * originally from Ghostview handling by Marc Andreseen. + * Creates temporary file, writes to it, executes system command + * on end-document. The suffix of the temp file can be given + * in case the application is fussy, or so that a generic opener can + * be used. + */ +HTStream *HTSaveAndExecute(HTPresentation *pres, + HTParentAnchor *anchor, /* Not used */ + HTStream *sink) /* Not used */ + +#ifdef UNIX +#define REMOVE_COMMAND "/bin/rm -f %s\n" +#endif +#ifdef VMS +#define REMOVE_COMMAND "delete/noconfirm/nolog %s.." +#endif + +#ifdef REMOVE_COMMAND +{ + char *fnam; + const char *suffix; + + HTStream *me; + + if (HTClientHost) { + HTAlert(CANNOT_SAVE_REMOTE); + return HTBlackHole(); + } + + me = (HTStream *) malloc(sizeof(*me)); + if (me == NULL) + outofmem(__FILE__, "Save and execute"); + + assert(me != NULL); + + me->isa = &HTFWriter; + + /* Save the file under a suitably suffixed name */ + + suffix = HTFileSuffix(pres->rep, anchor->content_encoding); + + fnam = (char *) malloc(L_tmpnam + 16 + strlen(suffix)); + if (fnam == NULL) + outofmem(__FILE__, "HTSaveAndExecute"); + + assert(fnam != NULL); + + tmpnam(fnam); + strcat(fnam, suffix); + + me->fp = fopen(fnam, BIN_W); + if (!me->fp) { + HTAlert(CANNOT_OPEN_TEMP); + FREE(fnam); + FREE(me); + return NULL; + } + +/* Make command to process file +*/ + me->end_command = 0; + HTSprintf0(&(me->end_command), pres->command, fnam, fnam, fnam); + + me->remove_command = NULL; /* If needed, put into end_command */ +#ifdef NOPE +/* Make command to delete file +*/ + me->remove_command = 0; + HTSprintf0(&(me->remove_command), REMOVE_COMMAND, fnam); +#endif + + me->announce = NO; + FREE(fnam); + return me; +} + +#else /* can do remove */ +{ + return NULL; +} +#endif + +/* Save Locally + * ------------ + * + * Bugs: + * GUI Apps should open local Save panel here really. + * + */ +HTStream *HTSaveLocally(HTPresentation *pres, + HTParentAnchor *anchor, /* Not used */ + HTStream *sink) /* Not used */ + +{ + char *fnam; + char *answer; + const char *suffix; + + HTStream *me; + + if (HTClientHost) { + HTAlert(CANNOT_SAVE_REMOTE); + return HTBlackHole(); + } + + me = (HTStream *) malloc(sizeof(*me)); + if (me == NULL) + outofmem(__FILE__, "SaveLocally"); + + assert(me != NULL); + + me->isa = &HTFWriter; + me->end_command = NULL; + me->remove_command = NULL; /* If needed, put into end_command */ + me->announce = YES; + + /* Save the file under a suitably suffixed name */ + + suffix = HTFileSuffix(pres->rep, anchor->content_encoding); + + fnam = (char *) malloc(L_tmpnam + 16 + strlen(suffix)); + if (fnam == NULL) + outofmem(__FILE__, "HTSaveLocally"); + + assert(fnam != NULL); + + tmpnam(fnam); + strcat(fnam, suffix); + + /* Save Panel */ + answer = HTPrompt(GIVE_FILENAME, fnam); + + FREE(fnam); + + me->fp = fopen(answer, BIN_W); + if (!me->fp) { + HTAlert(CANNOT_OPEN_OUTPUT); + FREE(answer); + FREE(me); + return NULL; + } + + FREE(answer); + return me; +} + +/* Format Converter using system command + * ------------------------------------- + */ diff --git a/lynx.cfg b/lynx.cfg index 927802bb..24a17be8 100644 --- a/lynx.cfg +++ b/lynx.cfg @@ -1,4 +1,4 @@ -# $LynxId: lynx.cfg,v 1.197 2010/10/04 09:53:59 tom Exp $ +# $LynxId: lynx.cfg,v 1.198 2010/12/08 01:28:43 Doug.Kaufman Exp $ # lynx.cfg file. # The default placement for this file is /usr/local/lib/lynx.cfg (Unix) # or Lynx_Dir:lynx.cfg (VMS) @@ -129,8 +129,7 @@ HELPFILE:http://lynx.isc.org/release/lynx2-8-7/lynx_help/lynx_help_main.html # An index to your CWIS can be placed here or a document containing # pointers to lots of interesting places on the web. # -#DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html -DEFAULT_INDEX_FILE:http://lynx.isc.org/ +DEFAULT_INDEX_FILE:http://scout.wisc.edu/ .h1 Interaction diff --git a/lynx.rsp b/lynx.rsp new file mode 100644 index 00000000..dacdf393 --- /dev/null +++ b/lynx.rsp @@ -0,0 +1,86 @@ +../obj/DefaultStyle.obj +../obj/GridText.obj +../obj/HTAabrow.obj +../obj/HTAaprot.obj +../obj/HTAautil.obj +../obj/HTAccess.obj +../obj/HTAlert.obj +../obj/HTAnchor.obj +../obj/HTAssoc.obj +../obj/HTAtom.obj +../obj/HTBtree.obj +../obj/HTChunk.obj +../obj/HTDOS.obj +../obj/HTFile.obj +../obj/HTFinger.obj +../obj/HTFormat.obj +../obj/HTFtp.obj +../obj/HTFwriter.obj +../obj/HTGopher.obj +../obj/HTGroup.obj +../obj/HTInit.obj +../obj/HTLex.obj +../obj/HTList.obj +../obj/HTMIME.obj +../obj/HTML.obj +../obj/HTMLDTD.obj +../obj/HTMLGen.obj +../obj/HTNews.obj +../obj/HTParse.obj +../obj/HTPlain.obj +../obj/HTRules.obj +../obj/HTString.obj +../obj/HTStyle.obj +../obj/HTTP.obj +../obj/HTTcp.obj +../obj/HTTelnet.obj +../obj/HTUU.obj +../obj/HTWSRC.obj +../obj/LYBookmark.obj +../obj/LYCgi.obj +../obj/LYCharSets.obj +../obj/LYCharUtils.obj +../obj/LYClean.obj +../obj/LYCookie.obj +../obj/LYCurses.obj +../obj/LYDownload.obj +../obj/LYEdit.obj +../obj/LYEditmap.obj +../obj/LYExit.obj +../obj/LYExtern.obj +../obj/LYForms.obj +../obj/LYGetFile.obj +../obj/LYHistory.obj +../obj/LYJump.obj +../obj/LYKeymap.obj +../obj/LYLeaks.obj +../obj/LYList.obj +../obj/LYLocal.obj +../obj/LYMail.obj +../obj/LYMain.obj +../obj/LYMainLoop.obj +../obj/LYMap.obj +../obj/LYNews.obj +../obj/LYOptions.obj +../obj/LYPrint.obj +../obj/LYPrettySrc.obj +../obj/LYReadCFG.obj +../obj/LYSearch.obj +../obj/LYSession.obj +../obj/LYShowInfo.obj +../obj/LYStrings.obj +../obj/LYTraversal.obj +../obj/LYUpload.obj +../obj/LYmktime.obj +../obj/LYrcFile.obj +../obj/parsdate.obj +../obj/SGML.obj +../obj/TRSTable.obj +../obj/UCAuto.obj +../obj/UCAux.obj +../obj/UCdomap.obj +../obj/lyutils.obj +../obj/xsystem.obj +../curses/PDCURSES.LIB +../curses/ZLIB.LIB +../curses/iconv.lib diff --git a/src/LYGetFile.c b/src/LYGetFile.c index 7b312a4d..6138fbee 100644 --- a/src/LYGetFile.c +++ b/src/LYGetFile.c @@ -1,4 +1,4 @@ -/* $LynxId: LYGetFile.c,v 1.84 2010/09/25 11:19:25 tom Exp $ */ +/* $LynxId: LYGetFile.c,v 1.85 2010/12/07 20:59:41 tom Exp $ */ #include <HTUtils.h> #include <HTTP.h> #include <HTAnchor.h> /* Anchor class */ @@ -525,7 +525,7 @@ int getfile(DocInfo *doc, int *target) } else if (url_type == MAILTO_URL_TYPE) { if (no_mail) { HTUserMsg(MAIL_DISABLED); - } else { + } else if (!dump_output_immediately) { HTParentAnchor *tmpanchor = HTAnchor_findAddress(&WWWDoc); const char *title; char *tmptitle = NULL; diff --git a/userdefs.h b/userdefs.h index abaab7d7..46adb15d 100644 --- a/userdefs.h +++ b/userdefs.h @@ -1,5 +1,5 @@ /* - * $LynxId: userdefs.h,v 1.260 2010/11/06 13:34:13 tom Exp $ + * $LynxId: userdefs.h,v 1.261 2010/12/08 01:28:43 Doug.Kaufman Exp $ * * Lynx - Hypertext navigation system * @@ -506,7 +506,7 @@ * An index to your CWIS can be placed here or a document containing * pointers to lots of interesting places on the web. */ -#define DEFAULT_INDEX_FILE "http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html" +#define DEFAULT_INDEX_FILE "http://scout.wisc.edu/" /***************************** * If USE_TRACE_LOG is set FALSE, then when TRACE mode is invoked the |