home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / infoserv / gopher / Unix / gopher2.0-patches / patch15.Z / patch15
Encoding:
Text File  |  1994-05-26  |  266.2 KB  |  9,891 lines

  1. diff -c gopher+/Makefile.config.dist:3.12 gopher+/Makefile.config.dist:3.13
  2. *** gopher+/Makefile.config.dist:3.12    Fri May 27 00:08:36 1994
  3. --- gopher+/Makefile.config.dist    Fri May 27 00:08:36 1994
  4. ***************
  5. *** 5,12 ****
  6.   
  7.   #********************************************************************
  8.   # $Author: lindner $
  9. ! # $Revision: 3.12 $
  10. ! # $Date: 1994/03/08 15:54:06 $
  11.   # $Source: /export/arcwelder/GopherSrc/CVS/gopher+/Makefile.config.dist,v $
  12.   # $State: Exp $
  13.   #
  14. --- 5,12 ----
  15.   
  16.   #********************************************************************
  17.   # $Author: lindner $
  18. ! # $Revision: 3.13 $
  19. ! # $Date: 1994/05/27 04:56:29 $
  20.   # $Source: /export/arcwelder/GopherSrc/CVS/gopher+/Makefile.config.dist,v $
  21.   # $State: Exp $
  22.   #
  23. ***************
  24. *** 20,25 ****
  25. --- 20,28 ----
  26.   #*********************************************************************
  27.   # Revision History:
  28.   # $Log: Makefile.config.dist,v $
  29. + # Revision 3.13  1994/05/27  04:56:29  lindner
  30. + # Use -O
  31. + #
  32.   # Revision 3.12  1994/03/08  15:54:06  lindner
  33.   # Add item for VFORK
  34.   #
  35. ***************
  36. *** 101,108 ****
  37.   # Optimization level.
  38.   #
  39.   
  40. ! OPT=-g
  41. ! #OPT=-O
  42.   
  43.   #------------------------------------------------
  44.   # System Selection,  note that you won't have to edit
  45. --- 104,111 ----
  46.   # Optimization level.
  47.   #
  48.   
  49. ! #OPT=-g
  50. ! OPT=-O
  51.   
  52.   #------------------------------------------------
  53.   # System Selection,  note that you won't have to edit
  54. diff -c gopher+/conf.h:3.16 gopher+/conf.h:3.17
  55. *** gopher+/conf.h:3.16    Fri May 27 00:08:37 1994
  56. --- gopher+/conf.h    Fri May 27 00:08:37 1994
  57. ***************
  58. *** 1,7 ****
  59.   /********************************************************************
  60.    * $Author: lindner $
  61. !  * $Revision: 3.16 $
  62. !  * $Date: 1994/04/14 17:03:02 $
  63.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/conf.h,v $
  64.    * $State: Exp $
  65.    *
  66. --- 1,7 ----
  67.   /********************************************************************
  68.    * $Author: lindner $
  69. !  * $Revision: 3.17 $
  70. !  * $Date: 1994/05/11 02:48:16 $
  71.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/conf.h,v $
  72.    * $State: Exp $
  73.    *
  74. ***************
  75. *** 15,20 ****
  76. --- 15,23 ----
  77.    *********************************************************************
  78.    * Revision History:
  79.    * $Log: conf.h,v $
  80. +  * Revision 3.17  1994/05/11  02:48:16  lindner
  81. +  * fix for VMS gopherprint defines
  82. +  *
  83.    * Revision 3.16  1994/04/14  17:03:02  lindner
  84.    * fix for html command
  85.    *
  86. ***************
  87. *** 209,216 ****
  88.    *   default queue name or form type eg DEFINE/JOB GOPHERQUEUE "/queue=que1")
  89.    * and then define the Printer Command appropriately
  90.    */
  91. ! #define PRINTER_COMMAND "print" /* */
  92. ! /* #define PRINTER_COMMAND "@GopherP_Dir:GOPHERPRINT" /* */
  93.   
  94.   /*
  95.    * Sounds are not implemented on VMS.
  96. --- 212,219 ----
  97.    *   default queue name or form type eg DEFINE/JOB GOPHERQUEUE "/queue=que1")
  98.    * and then define the Printer Command appropriately
  99.    */
  100. ! #define PRINTER_COMMAND "print %s" /* */
  101. ! /* #define PRINTER_COMMAND "@GopherP_Dir:GOPHERPRINT %s" /* */
  102.   
  103.   /*
  104.    * Sounds are not implemented on VMS.
  105. diff -c gopher+/patchlevel.h:3.16 gopher+/patchlevel.h:3.17
  106. *** gopher+/patchlevel.h:3.16    Fri May 27 00:08:37 1994
  107. --- gopher+/patchlevel.h    Fri May 27 00:08:37 1994
  108. ***************
  109. *** 5,8 ****
  110.   #define GOPHER_MAJOR_VERSION "2"
  111.   #define GOPHER_MINOR_VERSION "0"
  112.   
  113. ! #define PATCHLEVEL 14
  114. --- 5,8 ----
  115.   #define GOPHER_MAJOR_VERSION "2"
  116.   #define GOPHER_MINOR_VERSION "0"
  117.   
  118. ! #define PATCHLEVEL 15
  119. diff -c gopher+/doc/client.changes:3.20 gopher+/doc/client.changes:3.21
  120. *** gopher+/doc/client.changes:3.20    Fri May 27 00:08:38 1994
  121. --- gopher+/doc/client.changes    Fri May 27 00:08:38 1994
  122. ***************
  123. *** 1,6 ****
  124. ! $Id: client.changes,v 3.20 1994/04/22 07:44:04 lindner Exp $
  125.   
  126. ! Gopher+2.0 patchlevel 13
  127.   ------------------------
  128.   
  129.    * Fix for the problem of vanishing bookmarks
  130. --- 1,65 ----
  131. ! $Id: client.changes,v 3.21 1994/05/27 02:18:44 lindner Exp $
  132.   
  133. ! Gopher+2.0 patchlevel 15
  134. ! ------------------------
  135. !  * Many modifications for internationalization.  Gopher can now use
  136. !    message catalogs for French and Spanish.  Adding other languages is
  137. !    fairly easy.
  138. !  * Fix for Forms with multiple AskL items, or AskL items not as the
  139. !    last item.
  140. !  * Don't allow users with rsh to specify a shell as an display or
  141. !    print application.
  142. !  * Added documentation on the new URL= option in .link file from Alan
  143. !    Coopersmith
  144. !  * New manual page for gopherrc.
  145. !  * Fix for bad free() in CURrequest()
  146. !  * Fixed ^_ mislabel of the ^- help command.
  147. !  * Added prompt for RETURN in VMSExit(), to enable reading of ACCVIO
  148. !    tracebacks
  149. !  * Changed return values of DCLSystem() to be compatible with the
  150. !    for-Unix code.
  151. !  * Fixed spawns to work with OpenVMS/AXP v6.1 (still doesn't have the
  152. !    TRUSTED flag).
  153. !  * Modifications for Debug() and mismatched NULL arguments, added
  154. !    Debugmsg
  155. !  * Fix for last line without newline
  156. !  * Mods for TCPWARE on VMS
  157. !  * Use fast malloc routines on VMS VAXC.
  158. !  * Fix for binhex downloads on vms and use dump command for binary files
  159. !  * Fix for bad free() in SetOptions()
  160. !  * Added code for mapping telnet and/or tn3270 commands to "- none -" for
  161. !    disabling them and having the client issue "Sorry, not implemented"
  162. !    messages on efforts to use Type 8 or T tuples.
  163. !  * Added FIOsystem() failure messages for both VMS and Unix. (all from
  164. !    F.Macrides)
  165. !  * Allow VMS environment variable reading routines to be used on Unix
  166. !    systems.
  167. !  * eliminate redefinition of open to open_vmsopt() for ALPHA (Macrides)
  168. !  * Fixed break of open() for Alpha.  (all From F.Macrides)
  169. ! Gopher+2.0 patchlevel 14
  170.   ------------------------
  171.   
  172.    * Fix for the problem of vanishing bookmarks
  173. diff -c gopher+/doc/gopher.1:3.2 gopher+/doc/gopher.1:3.4
  174. *** gopher+/doc/gopher.1:3.2    Fri May 27 00:08:38 1994
  175. --- gopher+/doc/gopher.1    Fri May 27 00:08:39 1994
  176. ***************
  177. *** 4,21 ****
  178.   .SH SYNOPSIS
  179.   .B gopher
  180.   .RI [ -sSbDr ]
  181. ! .RI [ -t
  182. ! .IR title]
  183. ! .RI [ -p 
  184. ! .IR path]
  185. ! .RI [ -T
  186. ! .IR type]
  187. ! .RI [ -i
  188. ! .IR search term]
  189. ! .RI [ hostname
  190. ! .IR port ]
  191.   .SH DESCRIPTION
  192. ! The gopher client is used to talk to gopher servers.
  193.   .PP
  194.   The Internet Gopher is a distributed document delivery service.  It
  195.   allows a neophyte user to access various types of data residing on
  196. --- 4,20 ----
  197.   .SH SYNOPSIS
  198.   .B gopher
  199.   .RI [ -sSbDr ]
  200. ! .RI [ "-t title" ]
  201. ! .RI [ "-p path" ]
  202. ! .RI [ "-T type" ]
  203. ! .RI [ "-i search term" ]
  204. ! .RI [ hostname ]
  205. ! .RI [ port ]
  206.   .SH DESCRIPTION
  207. ! The gopher client is used to talk to gopher servers.  Once you have started
  208. ! the gopher client, help on using it is available by pressing the 
  209. ! .B "?"
  210. ! key.
  211.   .PP
  212.   The Internet Gopher is a distributed document delivery service.  It
  213.   allows a neophyte user to access various types of data residing on
  214. ***************
  215. *** 25,89 ****
  216.   Server accepts simple queries, and responds by sending the client a
  217.   document.
  218.   .PP
  219. ! -b starts the client on the bookmark page.
  220.   .PP
  221.   The next few options are for more advanced users who want to start at
  222.   a location other than the default, or to set up special aliases or
  223.   shell-scripts to point the gopher client to seperate places.
  224.   
  225.   .PP
  226. ! Use the -p option to specify a specific selector string to send to the
  227. ! root level server on startup.
  228. ! .PP
  229. ! Use the -T option to let the client know what type of object the -p option
  230. ! is pointing at.
  231. ! .PP
  232. ! Use the -i option to tell the client what to search for in the object
  233. ! defined by the -p and -T 7 options
  234. ! .PP
  235. ! Use the -t option to set the title of the initial screen for the gopher
  236. ! client.
  237. ! .PP
  238. ! The last few options aren't really of interest to regulat users, but are
  239.   provided for system administrators who waht to provide a secure client, or
  240.   who need to debug a client.
  241.   
  242. ! .PP
  243. ! -s and -S means "secure mode" which means that you can't save or print the
  244. ! files that you browse.  -s is for users without an account, while -S assumes
  245. ! the user has an account on this machine.
  246.   
  247. ! .PP
  248. ! -r tells the client that its user is remote.
  249.   
  250. ! .PP
  251. ! -D turns on the copius debugging output
  252.   
  253. ! .SH ENVIRONMENT VARIABLES
  254.   
  255. ! .PP
  256. ! The client checks for environment variables for its configuration
  257. ! information.  The following variables can be used:
  258.   
  259. ! .RS 3
  260. !   GOPHER_MAIL:
  261. !     The program to send mail with (must understand -s option)
  262.   
  263. !   GOPHER_TELNET:
  264. !     The program to contact telnet services with.
  265.   
  266. !   GOPHER_PLAY:
  267. !     The program to play sound from a pipe.
  268.   
  269. !   GOPHER_PRINTER:
  270. !      The program to print from a pipe.
  271. ! .RE
  272.   
  273.   .SH FILES
  274.   
  275. - ~/.gopherrc  bookmarks, and configuration information...
  276. --- 24,166 ----
  277.   Server accepts simple queries, and responds by sending the client a
  278.   document.
  279.   .PP
  280. ! .SH OPTIONS
  281. ! .TP
  282. ! -b
  283. ! starts the client on the bookmark page.
  284.   .PP
  285.   The next few options are for more advanced users who want to start at
  286.   a location other than the default, or to set up special aliases or
  287.   shell-scripts to point the gopher client to seperate places.
  288. + .TP
  289. + .BI -p " path"
  290. + specify a specific selector string to send to the gopher server on startup.
  291. + .TP
  292. + .BI -T " type"
  293. + let the client know what type of object the
  294. + .I -p
  295. + option is pointing at.
  296. + .TP
  297. + .BI -i " search term"
  298. + tell the client what to search for in the object defined by the
  299. + .IR "-p " and " -T 7"
  300. + options.
  301. + .TP
  302. + .BI -t " title"
  303. + set the title of the initial screen for the gopher client.
  304.   
  305.   .PP
  306. ! The last few options aren't really of interest to regular users, but are
  307.   provided for system administrators who waht to provide a secure client, or
  308.   who need to debug a client.
  309.   
  310. ! .TP
  311. ! .BR -s " or " -S
  312. ! "secure mode" which means that you can't save or print the files that you
  313. ! browse.  -s is for users without an account, while -S assumes 
  314. ! the user has an account on this machine.  One security feature is
  315. ! forced on, regardless of the state of these options, if the name of
  316. ! the user's shell ends in rsh; the 'O' (options) command is disabled so
  317. ! the user cannot select a shell as an application.
  318. ! .TP
  319. ! .B -r
  320. ! tells the client that its user is remote.
  321. ! .TP
  322. ! .B -D 
  323. ! turns on the copius debugging output
  324.   
  325. ! .SH EXAMPLES
  326.   
  327. ! .TP
  328. ! gopher gopher.tc.umn.edu
  329. ! Connect to the gopher server running on the computer 
  330. ! .I gopher.tc.umn.edu
  331.   
  332. ! .TP
  333. ! gopher -p "1/Information About Gopher" gopher.tc.umn.edu 70
  334. ! Connect to the gopher server running on port 70 of the computer 
  335. ! .I gopher.tc.umn.edu
  336. ! and start at the menu retrieved with the selector string
  337. ! .I "1/Information About Gopher"
  338.   
  339. ! .TP
  340. ! gopher -p 7/indexes/Gopher-index/index -T 7 -i FAQ mudhoney.micro.umn.edu
  341. ! Connect to the gopher server running on the computer
  342. ! .I mudhoney.micro.umn.edu                                           
  343. ! and start at the menu of items matching the string
  344. ! .I FAQ
  345. ! in the index specified by the selector string
  346. ! .I "7/indexes/Gopher-index/index"
  347.   
  348. ! .SH CONFIGURATION FILE FORMAT
  349. ! The client gets configuration data from the system gopher.rc file and the
  350. ! user's .gopherrc files.  The options in these files may be set by using the
  351. ! .B O
  352. ! key in the client.
  353.   
  354. ! The entries in this file are:
  355. ! .TP
  356. ! .BI map: " file type,viewer,printer"
  357. ! This tells the client how to deal with various types of files.
  358. ! .I file type
  359. ! is the Gopher+ or Internet Media Type (formerly called MIME Content Type)
  360. ! to process with this line.  The
  361. ! .I viewer
  362. ! is the program to display the file to the user.  The
  363. ! .I printer
  364. ! is used to send a file to the printer.
  365.   
  366. ! If the viewer or printer begins with a
  367. ! .B "|"
  368. ! the file is piped into the program's standard input.  The string
  369. ! .B "%s"
  370. ! is replaced with the name of a temporary file containing the document to
  371. ! be printed or viewed.
  372.   
  373. ! .TP
  374. ! .BI Searchbolding: (yes|no)
  375. ! Sets whether or not the built-in pager highlights the words it finds when
  376. ! searching.
  377.   
  378. + .TP
  379. + .BI Bookmarks:
  380. + A list of bookmarks the user has added with the clients 'a' and 'A'
  381. + commands.  Viewed by starting the client with the '-b' option or using
  382. + the 'v' command inside the client.
  383. + .SH ENVIRONMENT VARIABLES
  384. + The client also checks for environment variables for its configuration
  385. + information.  The following variables can be used:
  386. + .TP
  387. + GOPHER_TELNET:
  388. + The program used to connect to telnet services
  389. + .TP
  390. + GOPHER_TN3270:
  391. + The program used to connect to TN3270 services
  392. + .TP
  393. + GOPHER_HTML:
  394. + The program used to read HyperText Markup Language documents.
  395. + .TP
  396. + GOPHER_PRINTER:
  397. + The program used to print from a pipe.
  398.   .SH FILES
  399. + .TP
  400. + $HOME/.gopherrc
  401. + user bookmarks and configuration information
  402. + .TP
  403. + /usr/local/lib/gopher.rc
  404. + system default configuration information (default location - may be
  405. + somewhere else on your system)
  406. + .TP
  407. + /usr/local/lib/gopher.hlp
  408. + client help file displayed by the '?' command (default location - may be
  409. + somewhere else on your system)
  410. +  
  411. + .SH COPYRIGHT
  412. + .PP
  413. + The Internet Gopher(tm) software and documentation is copyright (c) 1991,
  414. + 1992, 1993, 1994 by the University of Minnesota.  Gopher has limitations on
  415. + its use and comes without a warranty.  Please refer to the file 'Copyright'
  416. + included in the distribution.
  417.   
  418. diff -c gopher+/doc/gopherd.8:3.4 gopher+/doc/gopherd.8:3.5
  419. *** gopher+/doc/gopherd.8:3.4    Fri May 27 00:08:39 1994
  420. --- gopher+/doc/gopherd.8    Fri May 27 00:08:39 1994
  421. ***************
  422. *** 1,4 ****
  423. ! .Id $Id: gopherd.8,v 3.4 1993/09/22 04:33:08 lindner Exp $
  424.   .TH GOPHERD/GOPHERLS/GINDEXD 8 Local
  425.   .SH NAME
  426.   gopherd, gopherls, gindexd - serve data using the gopher protocol.
  427. --- 1,4 ----
  428. ! .Id $Id: gopherd.8,v 3.5 1994/05/17 17:33:46 lindner Exp $
  429.   .TH GOPHERD/GOPHERLS/GINDEXD 8 Local
  430.   .SH NAME
  431.   gopherd, gopherls, gindexd - serve data using the gopher protocol.
  432. ***************
  433. *** 364,376 ****
  434.   
  435.   This kind of trick may be necessary in some cases, when gopherd.conf's
  436.   "ignore:" tags don't, or can't cover something specific, and thus for
  437. ! object "fred", the overriding .cap/fred -file should be:
  438.   
  439.   .RS 3
  440. !  Type=-
  441.   .RE
  442.   
  443. ! by overriding default type to be "-".
  444.   This kind of hideouts may be usefull, when for some reason there are
  445.   symlinks (or whatever) in the directory at which the Gopherd looks at,
  446.   and those entries are not desired to be shown at all.
  447. --- 364,377 ----
  448.   
  449.   This kind of trick may be necessary in some cases, when gopherd.conf's
  450.   "ignore:" tags don't, or can't cover something specific, and thus for
  451. ! object "fred", the overriding .names file entry would be:
  452.   
  453.   .RS 3
  454. !  Type=X
  455. !  Path=./fred
  456.   .RE
  457.   
  458. ! by overriding default type to be "X".
  459.   This kind of hideouts may be usefull, when for some reason there are
  460.   symlinks (or whatever) in the directory at which the Gopherd looks at,
  461.   and those entries are not desired to be shown at all.
  462. ***************
  463. *** 531,545 ****
  464.   
  465.   .SH WWW and HTML support.
  466.   
  467. ! Gopherd can be queried by WWW clients in the hypertext mode.  The
  468. ! server caches the HTML pages it makes.  You can include HTML stuff
  469. ! that will appear above the directory by making a file 
  470. ! called \*(lq.about.html\*(rq The gopher server will send this before the
  471. ! menu.
  472.   
  473.   References to Gopherd-WWW pages are as follows:
  474.   
  475. !   http://hostname.domainname:port/gopherpath/
  476.   
  477.   
  478.   .SH EXAMPLES
  479. --- 532,545 ----
  480.   
  481.   .SH WWW and HTML support.
  482.   
  483. ! Gopherd can be queried by WWW clients in the hypertext mode.  The server
  484. ! does not currently cache the HTML pages it makes.  You can include HTML stuff
  485. ! that will appear above the directory by making a file called
  486. ! \*(lq.about.html\*(rq The gopher server will send this before the menu.
  487.   
  488.   References to Gopherd-WWW pages are as follows:
  489.   
  490. ! .RI "gopher://" "hostname.domainname" ":" "port" "/hh/" "gopherpath"
  491.   
  492.   
  493.   .SH EXAMPLES
  494. ***************
  495. *** 746,750 ****
  496.   
  497.   .LP
  498.   .SH "SEE ALSO"
  499. ! .BR gopher (1),
  500. ! .BR gopherd.conf (5)
  501. --- 746,751 ----
  502.   
  503.   .LP
  504.   .SH "SEE ALSO"
  505. ! .BR gopher (1);
  506. ! .BR gopherd.conf (5);
  507. ! .IR "The Internet Gopher Protocol" ", March 1993, RFC 1436"
  508. diff -c gopher+/doc/gopherd.conf.5:3.6 gopher+/doc/gopherd.conf.5:3.7
  509. *** gopher+/doc/gopherd.conf.5:3.6    Fri May 27 00:08:39 1994
  510. --- gopher+/doc/gopherd.conf.5    Fri May 27 00:08:39 1994
  511. ***************
  512. *** 16,45 ****
  513.   token.  A pound sign ("#") at the beginning of a line signifies a comment line.
  514.   
  515.   .I
  516. ! Quick pseudo grammer
  517.   
  518.   .IP
  519. ! Admin:\ <Administrator\ Name/Info>
  520. ! AdminEmail:\ <Email\ address\ of\ Administrator\ of\ the\ server>
  521. ! Hostalias:\ <DNS\ alias\ name>
  522. ! Site:\ <Name\ of\ site>
  523. ! Org:\ <Organization\ or\ group\ owning\ the\ site>
  524. ! Loc:\ <city,\ state,\ country>
  525. ! Logfile:\  <filename>
  526. ! Geog:\ <latitude>\ <longitude>
  527. ! Language:\ <default\ language>
  528. ! ViewExt:\ <extension>\ <Gophertype>\ <Prefix>\ <Gopher+Type>\ [Langauge]
  529. ! BlockExt:\ <extension>\ <Blockname>
  530. ! BlockRefExt:
  531. ! Ignore:\ <extension>
  532.   Decoder: <extension> <decoderprogram>
  533.   SecureUsers: <tix-filename>
  534. ! Access:\ <domain\ name|ip\ fragment|"default">\ <[!](browse|read|search)+> <maxsessions>
  535. ! Bummermsg:\ <message>
  536. ! VeronicaIndex:\ <yes/no>
  537. ! Cachetime:\ <time in seconds>
  538.   auxconf: <gopher-selector> <auxilliary-config-file>
  539. ! pid_directory: <directory to store pid files>
  540.   .LP
  541.   
  542.   The following tokens are recognized
  543. --- 16,48 ----
  544.   token.  A pound sign ("#") at the beginning of a line signifies a comment line.
  545.   
  546.   .I
  547. ! Quick pseudo grammar
  548.   
  549.   .IP
  550. ! .nf
  551. ! Admin: <Administrator Name/Info>
  552. ! AdminEmail: <Email address of Administrator of the server>
  553. ! Hostalias: <DNS alias name>
  554. ! Site: <Name of site>
  555. ! Org: <Organization or group owning the site>
  556. ! Loc: <city, state, country>
  557. ! Logfile:  <filename>
  558. ! Geog: <latitude> <longitude>
  559. ! Language: <default language>
  560. ! ViewExt: <extension> <Gophertype> <Prefix> <Gopher+Type> [Langauge]
  561. ! BlockExt: <extension> <Blockname>
  562. ! BlockRefExt: <extension> <Blockname>
  563. ! Ignore: <extension>
  564. ! Ignore_patt: <regular expression>
  565.   Decoder: <extension> <decoderprogram>
  566.   SecureUsers: <tix-filename>
  567. ! Access: <domain name|ip fragment|"default"> <[!](browse|read|search)+> <maxsessions>
  568. ! Bummermsg: <message>
  569. ! VeronicaIndex: <yes/no>
  570. ! Cachetime: <time in seconds>
  571.   auxconf: <gopher-selector> <auxilliary-config-file>
  572. ! Pids_directory: <directory to store pid files>
  573. ! .fi
  574.   .LP
  575.   
  576.   The following tokens are recognized
  577. ***************
  578. *** 107,114 ****
  579.   .B .gif.
  580.   The next parameter is the single character gopher type (1,0,I,etc...)
  581.   The third parameter is a prefix that will be appended to the normal
  582. ! filename path.  The fourth parameter is the gopher+ view attribute, such
  583. ! as
  584.   .B image/gif
  585.   The optional fifth parameter is a language to use for the file instead
  586.   of the default language.
  587. --- 110,117 ----
  588.   .B .gif.
  589.   The next parameter is the single character gopher type (1,0,I,etc...)
  590.   The third parameter is a prefix that will be appended to the normal
  591. ! filename path.  The fourth parameter is the gopher+ view attribute or
  592. ! Internet Media Type (formerly called MIME Content Types), such as
  593.   .B image/gif
  594.   The optional fifth parameter is a language to use for the file instead
  595.   of the default language.
  596. ***************
  597. *** 118,123 ****
  598. --- 121,131 ----
  599.   the ignore criteria are never presented to the gopher user.  However,
  600.   ignoring files does not protect them from prying eyes.
  601.   .TP
  602. + .I Ignore_patt:
  603. + specifies a regular expression for filenames to not include in directory
  604. + listings presented to clients. Ignoring files does not protect them
  605. + from prying eyes.
  606. + .TP
  607.   .I BlockExt:
  608.   specifies that a file with a particular extension is to be mapped to a
  609.   specific gopher+ attribute block.  For instance the line:
  610. ***************
  611. *** 125,131 ****
  612.   would map all files with the extension .abstract into an abstract for
  613.   the file without the abstract extension.
  614.   .TP
  615. ! .I BlockExtRef Alias of
  616.   .IR BlockExt .
  617.   .TP
  618.   .I Decoder:
  619. --- 133,140 ----
  620.   would map all files with the extension .abstract into an abstract for
  621.   the file without the abstract extension.
  622.   .TP
  623. ! .I BlockExtRef:
  624. ! Alias of
  625.   .IR BlockExt .
  626.   .TP
  627.   .I Decoder:
  628. ***************
  629. *** 132,144 ****
  630.   specifies that the given program will be run on the given extension when
  631.   the file is retrieved.  This is most often used for compressed files.
  632.   .TP
  633. ! .I SecureUsers
  634.   specifies account file for AUTH1 access protocol.
  635.   .TP
  636. ! .I VeronicaIndex
  637. ! defines a crude control of wether or not
  638.   .I Veronica
  639. ! servers should index this tree or not.
  640.   Valid values: "no" to forbid, anything else to allow.
  641.   .TP
  642.   .I BummerMsg: 
  643. --- 141,157 ----
  644.   specifies that the given program will be run on the given extension when
  645.   the file is retrieved.  This is most often used for compressed files.
  646.   .TP
  647. ! .I Pids_Directory:
  648. ! a scratch directory for concurrent session load limiting.  Needs to be
  649. ! inside your gopher-data directory if running chrooted.
  650. ! .TP
  651. ! .I SecureUsers:
  652.   specifies account file for AUTH1 access protocol.
  653.   .TP
  654. ! .I VeronicaIndex:
  655. ! defines a crude control of whether or not
  656.   .I Veronica
  657. ! servers should index this tree.
  658.   Valid values: "no" to forbid, anything else to allow.
  659.   .TP
  660.   .I BummerMsg: 
  661. ***************
  662. *** 174,179 ****
  663. --- 187,195 ----
  664.    #
  665.    hostalias: gopher.turnip.com
  666.   
  667. +  # How long a .cache or .cache+ file is valid (in seconds)
  668. +  Cachetime: 180
  669.    # Administrator
  670.   
  671.    Admin: Bob Bagel, Turnip Postmaster and Gopher support 1-800-555-1212 
  672. ***************
  673. *** 193,198 ****
  674. --- 209,218 ----
  675.    # Extension mapping
  676.    #
  677.   
  678. +  # Files the server needs to decode before sending
  679. +  decoder: .Z /usr/ucb/zcat
  680. +  decoder: .gz /usr/gnu/bin/zcat
  681.    # Different Languages
  682.    viewext: .txt.spanish 0 0 Text/plain Es_ES
  683.    viewext: .txt.german 0 0 Text/plain De_DE
  684. ***************
  685. *** 201,275 ****
  686.    viewext: .hqx 4 0 application/mac-binhex40
  687.   
  688.    #
  689. -  # Telnet file formats
  690. -  #
  691. -  viewext: .telnet 8 0 terminal/telnet
  692. -  viewext: .tn3270 T 0 terminal/tn3270
  693. -  #
  694.    # Graphics file formats
  695.    #
  696.    viewext: .gif I 9 image/gif
  697. -  viewext: .pcx I 9 image/pcx
  698. -  viewext: .pict I 9 image/PICT
  699.    viewext: .tiff I 9 image/TIFF
  700.    viewext: .jpg I 9 image/JPEG
  701. -  viewext: .ppm I 9 image/ppm
  702. -  viewext: .pgm I 9 image/pgm
  703. -  viewext: .pbm I 9 image/pgm
  704.   
  705.    #
  706.    # Sounds
  707.    #
  708. !  viewext: .au s s audio/mulaw
  709. !  viewext: .snd s s audio/mulaw
  710. !  viewext: .wav s s audio/wave
  711.   
  712.    #
  713.    # Movies
  714.    #
  715. !  viewext: .quicktime 9 9 video/quicktime
  716. !  viewext: .mpg 9 9 video/mpeg
  717.   
  718.    #
  719.    # Binary files
  720.    #
  721. !  viewext: .tar.Z 9 9 file/tar.Z
  722. !  viewext: .tar 9 9 file/tar
  723. !  viewext: .zip 5 9 file/PKzip
  724. !  viewext: .zoo 5 9 file/Zoo
  725. !  viewext: .arc 5 9 file/Arc
  726. !  viewext: .lzh 5 9 file/Lharc
  727. !  viewext: .exe 5 9 file/PCEXE
  728. !  viewext: .mcb 9 9 file/MacBinary
  729. !  viewext: .uu 9 9 file/uuencode
  730.   
  731.   
  732.    #
  733.    # Various forms of text
  734.    #
  735. !  viewext: .ps 0 0 Text/postscript
  736. !  viewext: .tex 0 0 Text/tex
  737. !  viewext: .dvi 0 9 Text/dvi
  738. !  viewext: .troff 0 0 Text/troff
  739. !  viewext: .unicode 0 0 Text/unicode
  740. !  viewext: .sjis 0 0 Text/sjis
  741. !  viewext: .jis 0 0 Text/jis
  742. !  viewext: .euc 0 0 Text/jis
  743. !  viewext: .big5 0 0 Text/big-5
  744. !  viewext: .rtf 0 0 Text/rtf
  745. !  viewext: .word5 0 0 Text/MSWord5
  746. !  viewext: .word4 0 0 Text/MSWord4
  747. !  viewext: .mw 0 0 Text/MacWrite
  748. !  viewext: .wp 0 0 Text/WordPerfect51
  749.   
  750.    viewext: .smell 9 9 smell/funky
  751.   
  752.    #
  753.    #
  754. !  viewext: .mindex 7 mindex: Directory
  755.    viewext: .src 7 waissrc: Directory
  756. !  viewext: .html h GET /h application/WWW
  757.   
  758.    #
  759.    # Map files to certain blocks
  760. --- 221,278 ----
  761.    viewext: .hqx 4 0 application/mac-binhex40
  762.   
  763.    #
  764.    # Graphics file formats
  765.    #
  766.    viewext: .gif I 9 image/gif
  767.    viewext: .tiff I 9 image/TIFF
  768.    viewext: .jpg I 9 image/JPEG
  769.   
  770.    #
  771.    # Sounds
  772.    #
  773. !  viewext: .au s s audio/basic
  774. !  viewext: .snd s s audio/basic
  775. !  viewext: .wav s s audio/microsoft-wave
  776.   
  777.    #
  778.    # Movies
  779.    #
  780. !  viewext: .mov ; 9 video/quicktime
  781. !  viewext: .mpg ; 9 video/mpeg
  782.   
  783.    #
  784.    # Binary files
  785.    #
  786. !  viewext: .zip 5 9 application/zip
  787. !  viewext: .arj 5 9 application/x-arj
  788.   
  789.   
  790.    #
  791.    # Various forms of text
  792.    #
  793. !  viewext: .ps 0 0 application/postscript
  794. !  viewext: .tex 0 0 application/x-tex
  795. !  viewext: .dvi 0 9 application/x-dvi
  796. !  viewext: .troff 0 0 Text/x-troff
  797.   
  798. +  #
  799. +  # These are defined by IANA..
  800. +  #
  801. +  viewext: .rtf 0 0 application/rtf
  802. +  viewext: .word 0 0 application/MSWord
  803. +  viewext: .mw 0 0 application/MacWriteII
  804. +  viewext: .wp 0 0 application/dca-rft
  805. +  viewext: .rch 0 0 Text/richtext
  806. +  viewext: .wri 9 9 application/Microsoft-write
  807.    viewext: .smell 9 9 smell/funky
  808.   
  809.    #
  810.    #
  811. !  viewext: .mindex 7 mindex: application/gopher-menu
  812.    viewext: .src 7 waissrc: Directory
  813. !  viewext: .html h 0 text/html
  814.   
  815.    #
  816.    # Map files to certain blocks
  817. ***************
  818. *** 284,289 ****
  819. --- 287,297 ----
  820.    #
  821.    Bummermsg: Sorry no access for non turnipheads.
  822.   
  823. +  # scratch directory for concurrent session load limiting.
  824. +  # Needs to be inside your gopher-data directory if running chrooted.
  825. +  #
  826. +  PIDS_Directory: /pids
  827.    # Don't allow anyone to read or browse, nor ftp via us, 
  828.    # anyone can search though.
  829.    access: default         !browse,!read,!ftp,search
  830. ***************
  831. *** 309,311 ****
  832. --- 317,322 ----
  833.    access: bozo.org    !search
  834.   
  835.   .
  836. + .SH "SEE ALSO"
  837. + .IR "Media Type Registration Procedure" ", March 1994, RFC 1590"
  838. diff -c /dev/null gopher+/doc/gopherrc.5:3.2
  839. *** /dev/null    Fri May 27 00:08:40 1994
  840. --- gopher+/doc/gopherrc.5    Fri May 27 00:08:40 1994
  841. ***************
  842. *** 0 ****
  843. --- 1,105 ----
  844. + .TH GOPHERRC 5
  845. + .SH NAME
  846. + gopherrc \- configuration file for gopher(1)
  847. + .SH DESCRIPTION
  848. + .LP
  849. + The
  850. + .B gopherrc
  851. + file contains a list of directives that alter the behaviour of the
  852. + .BR gopher(1)
  853. + client.  It is composed of lines of the form:
  854. + .IP
  855. + .I
  856. + Token:\ Value
  857. + .LP
  858. + Tokens are case insensitive and the value field will change, depending on the
  859. + token.  A pound sign ("#") at the beginning of a line signifies a
  860. + comment line.
  861. + Gopherrc files are used in a number of places.  There is a global
  862. + gopherrc file (called gopherrc).  This is usually placed in a
  863. + systemwide directory.  A file with the same format called
  864. + remotegopher.rc is also used by the gopher client when using the -r
  865. + switch. 
  866. + Also, an individual has their own customized version of this file in
  867. + their home directory in the file .gopherrc. On VMS this file is called
  868. + GOPHERRC.
  869. + All of these files use the format described below.
  870. + Most people will set the values in this file by pressing the 'O' key
  871. + to set options in the curses gopher client, rather than editing this
  872. + file directly.  People considering editing this file on VMS should
  873. + make sure their editor preserves the Stream_LF format of the file.
  874. + .I
  875. + Quick pseudo grammar
  876. + .IP
  877. + .nf
  878. + map: <content type>,<display command>,<print command>
  879. + SearchBolding: <yes|no>
  880. + Bookmarks:
  881. + <bookmarks>
  882. + .fi
  883. + .LP
  884. + The following tokens are recognized
  885. + .TP 12
  886. + .I map:
  887. + .LP
  888. + maps a content type (such as text/plain, or image/gif) to commands to
  889. + execute for displaying the document or printing the document, i.e.
  890. + 'more -d %s' or 'lpr %s'.
  891. + The content type, display command, and printing command are separated
  892. + by commas.
  893. + The sequence of %s is replaced with the filename of the item that's
  894. + downloaded. 
  895. + If the command starts with the vertical bar (|) the command will be
  896. + executed immediately and the document will be sent to the commands
  897. + standard input.  Note this feature does not work on VMS.
  898. + If the display command is set to 'builtin', then the text file pager
  899. + inside the gopher client will be used to display the item.
  900. + .TP 12
  901. + .I SearchBolding:
  902. + .LP
  903. + controls the clients display of search terms.  If the value is 'yes',
  904. + then search words will be bolded.  Otherwise they'll be left alone.
  905. + .TP 12
  906. + .I Bookmarks:
  907. + .LP
  908. + The bookmarks in .link format follow.  For more information on the
  909. + format of a .link file, consult the gopherd(8) manual page.
  910. + .I
  911. + Sample gopherrc file:
  912. +   
  913. +  map: text/plain,builtin,lpr %s
  914. +  map: image/gif,xv %s,
  915. +  Bookmarks:
  916. +  Type=1
  917. +  Name=Bookmark #1
  918. +  Host=gopher.tc.umn.edu
  919. +  Port=70
  920. +  Path=
  921. +  #
  922. +  Type=0+
  923. +  Name=textfile
  924. +  Host=foo.com
  925. +  Path=0/readme
  926. +  Port=70
  927. + .
  928. + .SH "SEE ALSO"
  929. + .IR "Media Type Registration Procedure" ", March 1994, RFC 1590"
  930. + .IR gopher(1), gopherd(8)
  931. diff -c gopher+/doc/server.changes:3.21 gopher+/doc/server.changes:3.22
  932. *** gopher+/doc/server.changes:3.21    Fri May 27 00:08:40 1994
  933. --- gopher+/doc/server.changes    Fri May 27 00:08:40 1994
  934. ***************
  935. *** 1,4 ****
  936. ! $Id: server.changes,v 3.21 1994/04/22 07:44:05 lindner Exp $
  937.   
  938.   Gopher+2.0 patchlevel 14
  939.   ------------------------
  940. --- 1,31 ----
  941. ! $Id: server.changes,v 3.22 1994/05/27 02:18:46 lindner Exp $
  942. ! Gopher+2.0 patchlevel 15
  943. ! ------------------------
  944. !  * Add NO_FREEWAIS option for older WAIS libraries to Makefile.config
  945. !  * Fix for spinning ftp processes from R.S. Jones, plus many other
  946. !    fixes for the ftp gateway from Jonzy.
  947. !  * Add port# to waiting for connection message that 'ps' generates.
  948. !  * Fix for sending text files with really long lines.
  949. !  * Default gopherd.conf has been reorganized, Added soundtracker type
  950. !  * Fix for mindex file processing..
  951. !  * Modifications for Debug() and mismatched NULL arguments, added Debugmsg
  952. !  * Fix from Robert Beckett for binhex files
  953. !  * Fix for url problems
  954. !  * Fix for svr4.2 on unisys
  955. !  * Automagically define NO_VFORK for SCO
  956.   
  957.   Gopher+2.0 patchlevel 14
  958.   ------------------------
  959. diff -c gopher+/gopher/CURcurses.c:3.42 gopher+/gopher/CURcurses.c:3.46
  960. *** gopher+/gopher/CURcurses.c:3.42    Fri May 27 00:08:42 1994
  961. --- gopher+/gopher/CURcurses.c    Fri May 27 00:08:42 1994
  962. ***************
  963. *** 1,7 ****
  964.   /********************************************************************
  965.    * $Author: lindner $
  966. !  * $Revision: 3.42 $
  967. !  * $Date: 1994/04/13 19:13:20 $
  968.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/CURcurses.c,v $
  969.    * $State: Exp $
  970.    *
  971. --- 1,7 ----
  972.   /********************************************************************
  973.    * $Author: lindner $
  974. !  * $Revision: 3.46 $
  975. !  * $Date: 1994/05/24 05:49:54 $
  976.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/CURcurses.c,v $
  977.    * $State: Exp $
  978.    *
  979. ***************
  980. *** 15,20 ****
  981. --- 15,40 ----
  982.    *********************************************************************
  983.    * Revision History:
  984.    * $Log: CURcurses.c,v $
  985. +  * Revision 3.46  1994/05/24  05:49:54  lindner
  986. +  * Fix for bad free() in CURrequest()
  987. +  *
  988. +  * Revision 3.45  1994/04/25  20:43:29  lindner
  989. +  * Remove ugly pointer debug statement
  990. +  *
  991. +  * Revision 3.44  1994/04/25  03:49:41  lindner
  992. +  * Fixed ^_ mislabel of the ^- help command.
  993. +  *
  994. +  * Added prompt for RETURN in VMSExit(), to enable reading of ACCVIO tracebacks.
  995. +  *
  996. +  * Changed return values of DCLSystem() to be compatible with the
  997. +  * for-Unix code.
  998. +  *
  999. +  * Fixed spawns to work with OpenVMS/AXP v6.1 (still doesn't have the
  1000. +  * TRUSTED flag).
  1001. +  *
  1002. +  * Revision 3.43  1994/04/25  03:37:35  lindner
  1003. +  * Modifications for Debug() and mismatched NULL arguments, added Debugmsg
  1004. +  *
  1005.    * Revision 3.42  1994/04/13  19:13:20  lindner
  1006.    * AskL modifications
  1007.    *
  1008. ***************
  1009. *** 685,691 ****
  1010.   
  1011.         default:
  1012.              if (ch < 256 && isprint(ch) && curpointer == maxlength) {
  1013. -             Debug("CURwgetstr Beep %d\r\n",cur);
  1014.               CURBeep(cur);
  1015.              }
  1016.              else if (ch < 256 && isprint(ch)) {
  1017. --- 705,710 ----
  1018. ***************
  1019. *** 945,951 ****
  1020.         }
  1021.   #endif
  1022.         else {
  1023. !            Debug("CURgetYesorNo beep\r\n",NULL)
  1024.              CURBeep(cur);
  1025.         }
  1026.        }
  1027. --- 964,970 ----
  1028.         }
  1029.   #endif
  1030.         else {
  1031. !            Debugmsg("CURgetYesorNo beep\r\n")
  1032.              CURBeep(cur);
  1033.         }
  1034.        }
  1035. ***************
  1036. *** 955,961 ****
  1037.   CURBeep(cur)
  1038.     CursesObj *cur;
  1039.   {
  1040. !     Debug("CURBeep\r\n",NULL)
  1041.   #ifdef SYSVCURSES
  1042.        beep();
  1043.   #else
  1044. --- 974,980 ----
  1045.   CURBeep(cur)
  1046.     CursesObj *cur;
  1047.   {
  1048. !     Debugmsg("CURBeep\r\n")
  1049.   #ifdef SYSVCURSES
  1050.        beep();
  1051.   #else
  1052. ***************
  1053. *** 1118,1124 ****
  1054.   
  1055.        /** Free memory **/
  1056.        for (i=0; i <= numprompts; i++)
  1057. !       free(items[i]);
  1058.        free(items);
  1059.   
  1060.        return(choice);
  1061. --- 1137,1144 ----
  1062.   
  1063.        /** Free memory **/
  1064.        for (i=0; i <= numprompts; i++)
  1065. !       if (items[i])
  1066. !            free(items[i]);
  1067.        free(items);
  1068.   
  1069.        return(choice);
  1070. ***************
  1071. *** 1135,1141 ****
  1072.        "^P      : Move to previous field",
  1073.        "^F      : Display next page",
  1074.        "^B      : Display previous page",
  1075. !      "^_      : Help (^/ or ^7 may work)",
  1076.        "Enter   : Accept",
  1077.        NULL
  1078.   };
  1079. --- 1155,1161 ----
  1080.        "^P      : Move to previous field",
  1081.        "^F      : Display next page",
  1082.        "^B      : Display previous page",
  1083. !      "^-      : Help (^/ or ^7 may work)",
  1084.        "Enter   : Accept",
  1085.        NULL
  1086.   };
  1087. ***************
  1088. *** 1207,1213 ****
  1089.        while (1) {
  1090.             /*** Add the labels ***/
  1091.             wmove(tempwin, WinLines - 2, 2);
  1092. !           waddstr(tempwin, "[Help: ^_]  [Cancel: ^G]");
  1093.             if (items[currentfield]->thing == CUR_CHOICE)
  1094.                  waddstr(tempwin, "  [Cycle Values: Space]  [List Values: l]");
  1095.             else
  1096. --- 1227,1233 ----
  1097.        while (1) {
  1098.             /*** Add the labels ***/
  1099.             wmove(tempwin, WinLines - 2, 2);
  1100. !           waddstr(tempwin, "[Help: ^-]  [Cancel: ^G]");
  1101.             if (items[currentfield]->thing == CUR_CHOICE)
  1102.                  waddstr(tempwin, "  [Cycle Values: Space]  [List Values: l]");
  1103.             else
  1104. ***************
  1105. *** 2121,2126 ****
  1106. --- 2141,2148 ----
  1107.        *  then attempt a cleanup.
  1108.        */
  1109.        if (!DidCleanup) {
  1110. +           fprintf(stderr,"\nPress RETURN to clean up and exit: ");
  1111. +       (void) getchar();
  1112.             resetterm();
  1113.             CleanupandExit(-1);
  1114.        }
  1115. ***************
  1116. *** 2178,2184 ****
  1117.        VMSsignal(SIGINT, SIG_IGN);
  1118.        status = spawn_DCLprocess(command);
  1119.        VMSsignal(SIGINT, controlc);
  1120. !      return(status&1);
  1121.   }
  1122.   
  1123.   int
  1124. --- 2200,2209 ----
  1125.        VMSsignal(SIGINT, SIG_IGN);
  1126.        status = spawn_DCLprocess(command);
  1127.        VMSsignal(SIGINT, controlc);
  1128. !      if ((status&1) != 1)
  1129. !          return(-1);
  1130. !      else
  1131. !           return(0);
  1132.   }
  1133.   
  1134.   int
  1135. ***************
  1136. *** 2198,2207 ****
  1137. --- 2223,2234 ----
  1138.        if (command == "")
  1139.             status = lib$spawn(0);
  1140.        else {
  1141. + #ifndef __ALPHA /* OpenVMS/AXP v6.1 still doesn't have the TRUSTED flag ;( */
  1142.         if(VersionVMS[1] >= '6')
  1143.              /** Include TRUSTED flag **/
  1144.                  status = lib$spawn(&command_desc,0,0,&CLI$M_TRUSTED);
  1145.         else
  1146. + #endif
  1147.              status = lib$spawn(&command_desc);
  1148.        }
  1149.   
  1150. diff -c gopher+/gopher/CURcurses.h:3.17 gopher+/gopher/CURcurses.h:3.18
  1151. *** gopher+/gopher/CURcurses.h:3.17    Fri May 27 00:08:43 1994
  1152. --- gopher+/gopher/CURcurses.h    Fri May 27 00:08:43 1994
  1153. ***************
  1154. *** 1,7 ****
  1155.   /********************************************************************
  1156.    * $Author: lindner $
  1157. !  * $Revision: 3.17 $
  1158. !  * $Date: 1994/04/13 19:14:31 $
  1159.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/CURcurses.h,v $
  1160.    * $State: Exp $
  1161.    *
  1162. --- 1,7 ----
  1163.   /********************************************************************
  1164.    * $Author: lindner $
  1165. !  * $Revision: 3.18 $
  1166. !  * $Date: 1994/05/02 07:40:16 $
  1167.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/CURcurses.h,v $
  1168.    * $State: Exp $
  1169.    *
  1170. ***************
  1171. *** 15,20 ****
  1172. --- 15,23 ----
  1173.    *********************************************************************
  1174.    * Revision History:
  1175.    * $Log: CURcurses.h,v $
  1176. +  * Revision 3.18  1994/05/02  07:40:16  lindner
  1177. +  * Mods to use setlocale()
  1178. +  *
  1179.    * Revision 3.17  1994/04/13  19:14:31  lindner
  1180.    * AskL modifications
  1181.    *
  1182. ***************
  1183. *** 83,88 ****
  1184. --- 86,92 ----
  1185.   #ifndef CURCURSES_H
  1186.   #define CURCURSES_H
  1187.   
  1188. + #include "Locale.h"
  1189.   #include <ctype.h>
  1190.   
  1191.   #ifdef __svr4__
  1192. diff -c gopher+/gopher/HTML.c:3.4 gopher+/gopher/HTML.c:removed
  1193. *** gopher+/gopher/HTML.c:3.4    Fri May 27 00:08:43 1994
  1194. --- gopher+/gopher/HTML.c    Fri May 27 00:08:43 1994
  1195. ***************
  1196. *** 1,143 ****
  1197. - /********************************************************************
  1198. -  * $Author: lindner $
  1199. -  * $Revision: 3.4 $
  1200. -  * $Date: 1994/03/04 23:32:17 $
  1201. -  * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/Attic/HTML.c,v $
  1202. -  * $Status: $
  1203. -  *
  1204. -  * Paul Lindner, University of Minnesota CIS.
  1205. -  *
  1206. -  * Copyright 1991, 1992 by the Regents of the University of Minnesota
  1207. -  * see the file "Copyright" in the distribution for conditions of use.
  1208. -  *********************************************************************
  1209. -  * MODULE: HTML.c
  1210. -  * A lame attempt at doing HTML
  1211. -  *********************************************************************
  1212. -  * Revision History:
  1213. -  * $Log: HTML.c,v $
  1214. -  * Revision 3.4  1994/03/04  23:32:17  lindner
  1215. -  * mem fix
  1216. -  *
  1217. -  * Revision 3.3  1994/01/07  20:52:17  lindner
  1218. -  * pl11
  1219. -  *
  1220. -  * Revision 3.2  1993/12/30  04:16:30  lindner
  1221. -  * Fix params for HTMLgrow (thanks protoize)
  1222. -  *
  1223. -  * Revision 3.1.1.1  1993/02/11  18:02:57  lindner
  1224. -  * Gopher+1.2beta release
  1225. -  *
  1226. -  * Revision 1.1  1992/12/10  23:32:16  lindner
  1227. -  * gopher 1.1 release
  1228. -  *
  1229. -  * Revision 1.1  1992/12/10  23:31:26  lindner
  1230. -  * gopher 1.1 release
  1231. -  *
  1232. -  * Revision 1.1  1992/12/10  06:16:51  lindner
  1233. -  * Initial revision
  1234. -  *
  1235. -  *
  1236. -  *********************************************************************/
  1237. - #include "HTML.h"
  1238. - #include <string.h>
  1239. - #include <stdio.h>
  1240. - HTMLObj *
  1241. - HTMLnew(size)
  1242. -   int size;
  1243. - {
  1244. -      HTMLObj *temp;
  1245. -      temp               = (HTMLObj*) malloc(sizeof(HTMLObj));
  1246. -      
  1247. -      temp->Linkmaxsize  = size;
  1248. -      temp->Linklinenum  = (int *) malloc(size * sizeof(int));
  1249. -      temp->Linklinepos  = (int *) malloc(size * sizeof(int));
  1250. -      
  1251. -      temp->Links        = GDnew(size);
  1252. -      temp->Title        = STRnew();
  1253. -      
  1254. -      return(temp);
  1255. - }
  1256. - void
  1257. - HTMLInit(html)
  1258. -   HTMLObj *html;
  1259. - {
  1260. -      GDinit(html->Links);
  1261. -      STRinit(html->Title);
  1262. - }
  1263. - void
  1264. - HTMLDestroy(html)
  1265. -   HTMLObj *html;
  1266. - {
  1267. -      GDdestroy(html->Links);
  1268. -      STRdestroy(html->Title);
  1269. -      STRdestroy(html->Filehtmlname);
  1270. -      STRdestroy(html->Filetxtname);
  1271. -      free(html->Linklinenum);
  1272. -      free(html->Linklinepos);
  1273. -      free(html);
  1274. - }
  1275. - void
  1276. - HTMLgrow(html, size)
  1277. -   HTMLObj *html;
  1278. - {
  1279. -      int *temp;
  1280. -      if (size < html->Linkmaxsize) 
  1281. -       return;
  1282. -      temp = (int *) realloc(html->Linklinenum, size);
  1283. -      if (temp == NULL)
  1284. -       fprintf(stderr, "Out of memory!!!\n"), CleanupandExit(-1);
  1285. -      if (temp != html->Linklinenum)
  1286. -       html->Linklinenum = temp;
  1287. -      temp = (int *) realloc(html->Linklinepos, size);
  1288. -      if (temp == NULL)
  1289. -       fprintf(stderr, "Out of memory!!!\n"), CleanupandExit(-1);
  1290. -      if (temp != html->Linklinepos)
  1291. -       html->Linklinepos = temp;
  1292. - }
  1293. -      
  1294. - void
  1295. - HTMLaddLink(html, gs, linenum, offset)
  1296. -   HTMLObj   *html;
  1297. -   GopherObj *gs;
  1298. -   int       linenum;
  1299. -   int       offset;
  1300. - {
  1301. -      int top;
  1302. -      if (html->Linkmaxsize == GDgetNumitems(html->Links)) {
  1303. -       html->Linkmaxsize *=2;
  1304. -       HTMLgrow(html->Linkmaxsize, html->Linkmaxsize);
  1305. -      }
  1306. -      
  1307. -      GDaddGS(html->Links, gs);
  1308. -      top = GDgetNumitems(html->Links);
  1309. -      HTMLSetLinepos(html, top-1, offset);
  1310. -      HTMLSetLinenum(html, top-1, linenum);     
  1311. - }
  1312. -      
  1313. --- 0 ----
  1314. diff -c gopher+/gopher/HTML.h:3.1.1.1 gopher+/gopher/HTML.h:removed
  1315. *** gopher+/gopher/HTML.h:3.1.1.1    Fri May 27 00:08:43 1994
  1316. --- gopher+/gopher/HTML.h    Fri May 27 00:08:43 1994
  1317. ***************
  1318. *** 1,67 ****
  1319. - /********************************************************************
  1320. -  * $Author: lindner $
  1321. -  * $Revision: 3.1.1.1 $
  1322. -  * $Date: 1993/02/11 18:02:57 $
  1323. -  * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/Attic/HTML.h,v $
  1324. -  * $Status: $
  1325. -  *
  1326. -  * Paul Lindner, University of Minnesota CIS.
  1327. -  *
  1328. -  * Copyright 1991, 1992 by the Regents of the University of Minnesota
  1329. -  * see the file "Copyright" in the distribution for conditions of use.
  1330. -  *********************************************************************
  1331. -  * MODULE: HTML.h
  1332. -  * Header file for lame attempt at HTML
  1333. -  *********************************************************************
  1334. -  * Revision History:
  1335. -  * $Log: HTML.h,v $
  1336. -  * Revision 3.1.1.1  1993/02/11  18:02:57  lindner
  1337. -  * Gopher+1.2beta release
  1338. -  *
  1339. -  * Revision 1.1  1992/12/10  23:32:16  lindner
  1340. -  * gopher 1.1 release
  1341. -  *
  1342. -  * Revision 1.1  1992/12/10  06:16:51  lindner
  1343. -  * Initial revision
  1344. -  *
  1345. -  *
  1346. -  *********************************************************************/
  1347. - #include "GDgopherdir.h"
  1348. - #include <stdio.h>
  1349. - struct HTMLstruct {
  1350. -      GopherDirObj *Links;
  1351. -      int          *Linklinenum;      /** Line # of the link **/
  1352. -      int          *Linklinepos;      /** line position of the link **/
  1353. -      int          Linkmaxsize;       /** Size of Links arrays **/
  1354. -      FILE         *Filehtml;
  1355. -      FILE         *Filetxt;
  1356. -      String       *Filehtmlname;
  1357. -      String       *Filetxtname;
  1358. -      String       *Title;
  1359. - };
  1360. - typedef struct HTMLstruct HTMLObj;
  1361. - #define HTMLGetLink(a,b)  (GDgetEntry(((a)->Links),(b)))  /** Returns a GopherObj**/
  1362. - #define HTMLGetLinepos(a,b)    ((a)->Linklinepos[(b)])
  1363. - #define HTMLGetNumLinks(a)     (GDgetNumitems((a)->Links))
  1364. - #define HTMLGetLinenum(a,b)    ((a)->Linklinenum[(b)])
  1365. - #define HTMLGetLinkMax(a)      ((a)->Linkmaxsize)
  1366. - #define HTMLSetLinepos(a,b,c)  ((a)->Linklinepos[(b)] = (c))
  1367. - #define HTMLSetLinenum(a,b,c)  ((a)->Linklinenum[(b)] = (c))
  1368. - /** procedures defined in HTML.c **/
  1369. - HTMLObj *HTMLnew( /*size*/);
  1370. - void     HTMLInit();
  1371. - void     HTMLDestroy();
  1372. - void     HTMLgrow();
  1373. - void     HTMLaddLink();
  1374. --- 0 ----
  1375. diff -c gopher+/gopher/Makefile:3.7 gopher+/gopher/Makefile:3.10
  1376. *** gopher+/gopher/Makefile:3.7    Fri May 27 00:08:43 1994
  1377. --- gopher+/gopher/Makefile    Fri May 27 00:08:44 1994
  1378. ***************
  1379. *** 1,7 ****
  1380.   #********************************************************************
  1381.   # $Author: lindner $
  1382. ! # $Revision: 3.7 $
  1383. ! # $Date: 1994/02/20 16:17:43 $
  1384.   # $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/Makefile,v $
  1385.   # $State: Exp $
  1386.   #
  1387. --- 1,7 ----
  1388.   #********************************************************************
  1389.   # $Author: lindner $
  1390. ! # $Revision: 3.10 $
  1391. ! # $Date: 1994/05/26 19:41:14 $
  1392.   # $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/Makefile,v $
  1393.   # $State: Exp $
  1394.   #
  1395. ***************
  1396. *** 15,20 ****
  1397. --- 15,29 ----
  1398.   #*********************************************************************
  1399.   # Revision History:
  1400.   # $Log: Makefile,v $
  1401. + # Revision 3.10  1994/05/26  19:41:14  lindner
  1402. + # Add yet another definition
  1403. + #
  1404. + # Revision 3.9  1994/04/25  20:47:22  lindner
  1405. + # Remove html stuff from menu
  1406. + #
  1407. + # Revision 3.8  1994/04/25  02:16:50  lindner
  1408. + # Fix for last line without newline
  1409. + #
  1410.   # Revision 3.7  1994/02/20  16:17:43  lindner
  1411.   # Add form object file
  1412.   #
  1413. ***************
  1414. *** 54,63 ****
  1415.   include ../Makefile.config
  1416.   
  1417.   OBJS    = manager.o gopher.o globals.o ourutils.o cso.o \
  1418. !     subprocs.o html2.o HTML.o CURcurses.o hymoo.o gopherrc.o \
  1419.           download.o pager.o form.o
  1420.   
  1421. ! CCFLAGS    = $(OPT) $(DEBUGGING) $(GSYSTYPE) $(INCLUDES) $(CLIENTOPTS) -DGOPHERHELP=\"$(CLIENTLIB)/gopher.hlp\" -DGLOBALRC=\"$(CLIENTLIB)/gopher.rc\" -DREMOTERC=\"$(CLIENTLIB)/gopherremote.rc\"
  1422.   
  1423.   TARGET    = gopher
  1424.   
  1425. --- 63,72 ----
  1426.   include ../Makefile.config
  1427.   
  1428.   OBJS    = manager.o gopher.o globals.o ourutils.o cso.o \
  1429. !     subprocs.o html2.o CURcurses.o gopherrc.o \
  1430.           download.o pager.o form.o
  1431.   
  1432. ! CCFLAGS    = $(OPT) $(DEBUGGING) $(GSYSTYPE) $(INCLUDES) $(CLIENTOPTS)  -DGOPHERLIB=\"$(CLIENTLIB)\" -DGOPHERHELP=\"$(CLIENTLIB)/gopher.hlp\" -DGLOBALRC=\"$(CLIENTLIB)/gopher.rc\" -DREMOTERC=\"$(CLIENTLIB)/gopherremote.rc\"
  1433.   
  1434.   TARGET    = gopher
  1435.   
  1436. ***************
  1437. *** 87,90 ****
  1438.   $(OBJS): gopher.h ../conf.h
  1439.   globals.o: globals.h
  1440.   gopherrc.o: ../patchlevel.h
  1441. ! manager.o: ../patchlevel.h
  1442. --- 96,99 ----
  1443.   $(OBJS): gopher.h ../conf.h
  1444.   globals.o: globals.h
  1445.   gopherrc.o: ../patchlevel.h
  1446. ! manager.o: ../patchlevel.h
  1447. diff -c gopher+/gopher/compile.com:3.12 gopher+/gopher/compile.com:3.14
  1448. *** gopher+/gopher/compile.com:3.12    Fri May 27 00:08:44 1994
  1449. --- gopher+/gopher/compile.com    Fri May 27 00:08:44 1994
  1450. ***************
  1451. *** 61,66 ****
  1452. --- 61,67 ----
  1453.           @compile MULTINET
  1454.           @compile CMUIP
  1455.           @compile NETLIB
  1456. +         @compile TCPWARE
  1457.   $    exit
  1458.   $ ENDIF
  1459.   $!
  1460. ***************
  1461. *** 67,72 ****
  1462. --- 68,81 ----
  1463.   $ ON CONTROL_Y THEN GOTO CLEANUP
  1464.   $ ON ERROR THEN GOTO CLEANUP
  1465.   $!
  1466. + $ IF P1 .eqs. "TCPWARE"
  1467. + $ THEN
  1468. + $    write sys$output "Compiling client with UCX emulation..."
  1469. + $    transport := "UCX"
  1470. + $ ELSE
  1471. + $    transport := "''P1'"
  1472. + $ ENDIF
  1473. + $!
  1474.   $ IF f$trnlnm("VAXCMSG") .eqs. "DECC$MSG"
  1475.   $ THEN
  1476.   $ vg1 = f$verify(1)
  1477. ***************
  1478. *** 74,85 ****
  1479.   $    define/nolog C$USER_INCLUDE [-],[-.object]
  1480.   $    define/nolog DECC$USER_INCLUDE [-],[-.object]
  1481.   $ vg1 = 'f$verify(0)'
  1482. ! $  IF P1 .eqs. "UCX"
  1483.   $  THEN
  1484.   $ vg1 = f$verify(1)
  1485.   $    cc := cc/prefix=(all)-
  1486.                /warning=(disable=implicitfunc)-
  1487. !              /define=('P1'=1,__VMS_CURSES)
  1488.   $ vg1 = 'f$verify(0)'
  1489.   $  ELSE
  1490.   $ vg1 = f$verify(1)
  1491. --- 83,94 ----
  1492.   $    define/nolog C$USER_INCLUDE [-],[-.object]
  1493.   $    define/nolog DECC$USER_INCLUDE [-],[-.object]
  1494.   $ vg1 = 'f$verify(0)'
  1495. ! $  IF transport .eqs. "UCX"
  1496.   $  THEN
  1497.   $ vg1 = f$verify(1)
  1498.   $    cc := cc/prefix=(all)-
  1499.                /warning=(disable=implicitfunc)-
  1500. !              /define=('transport'=1,__VMS_CURSES)
  1501.   $ vg1 = 'f$verify(0)'
  1502.   $  ELSE
  1503.   $ vg1 = f$verify(1)
  1504. ***************
  1505. *** 86,92 ****
  1506.        cc := cc/prefix=(all,except=(connect,gethostbyname,htons,inet_addr,-
  1507.                                     setsockopt,socket))-
  1508.                /warning=(disable=implicitfunc)-
  1509. !              /define=('P1'=1,__VMS_CURSES)
  1510.   $ vg1 = 'f$verify(0)'
  1511.   $  ENDIF
  1512.   $ ELSE
  1513. --- 95,101 ----
  1514.        cc := cc/prefix=(all,except=(connect,gethostbyname,htons,inet_addr,-
  1515.                                     setsockopt,socket))-
  1516.                /warning=(disable=implicitfunc)-
  1517. !              /define=('transport'=1,__VMS_CURSES)
  1518.   $ vg1 = 'f$verify(0)'
  1519.   $  ENDIF
  1520.   $ ELSE
  1521. ***************
  1522. *** 93,99 ****
  1523.   $ vg1 = f$verify(1)
  1524.   $! VAXC:
  1525.   $    cc := cc/include=([-],[-.object])-
  1526. !          /define=('P1'=1)
  1527.   $ vg1 = 'f$verify(0)'
  1528.   $ ENDIF
  1529.   $ vg1 = f$verify(1)
  1530. --- 102,108 ----
  1531.   $ vg1 = f$verify(1)
  1532.   $! VAXC:
  1533.   $    cc := cc/include=([-],[-.object])-
  1534. !          /define=('transport'=1)
  1535.   $ vg1 = 'f$verify(0)'
  1536.   $ ENDIF
  1537.   $ vg1 = f$verify(1)
  1538. ***************
  1539. *** 103,109 ****
  1540.   $ cc globals.c
  1541.   $ cc gopher.c
  1542.   $ cc gopherrc.c
  1543. - $ cc html.c
  1544.   $ cc html2.c
  1545.   $ cc hymoo.c
  1546.   $ cc manager.c
  1547. --- 112,117 ----
  1548. ***************
  1549. *** 117,120 ****
  1550.   $ CLEANUP:
  1551.   $    vg1 = f$verify(vg)
  1552.   $exit
  1553. --- 125,127 ----
  1554. diff -c gopher+/gopher/cso.c:3.10 gopher+/gopher/cso.c:3.13
  1555. *** gopher+/gopher/cso.c:3.10    Fri May 27 00:08:44 1994
  1556. --- gopher+/gopher/cso.c    Fri May 27 00:08:44 1994
  1557. ***************
  1558. *** 1,7 ****
  1559.   /********************************************************************
  1560.    * $Author: lindner $
  1561. !  * $Revision: 3.10 $
  1562. !  * $Date: 1994/03/04 23:35:17 $
  1563.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/cso.c,v $
  1564.    * $State: Exp $
  1565.    *
  1566. --- 1,7 ----
  1567.   /********************************************************************
  1568.    * $Author: lindner $
  1569. !  * $Revision: 3.13 $
  1570. !  * $Date: 1994/05/19 14:07:22 $
  1571.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/cso.c,v $
  1572.    * $State: Exp $
  1573.    *
  1574. ***************
  1575. *** 15,20 ****
  1576. --- 15,29 ----
  1577.    *********************************************************************
  1578.    * Revision History:
  1579.    * $Log: cso.c,v $
  1580. +  * Revision 3.13  1994/05/19  14:07:22  lindner
  1581. +  * use fast malloc on VMS VAXC
  1582. +  *
  1583. +  * Revision 3.12  1994/05/17  05:47:53  lindner
  1584. +  * Massive internationalization change
  1585. +  *
  1586. +  * Revision 3.11  1994/05/14  04:13:38  lindner
  1587. +  * Internationalization...
  1588. +  *
  1589.    * Revision 3.10  1994/03/04  23:35:17  lindner
  1590.    * fix cso requester to be nice and big
  1591.    *
  1592. ***************
  1593. *** 64,69 ****
  1594. --- 73,79 ----
  1595.    
  1596.   #include "gopher.h"
  1597.   #include "fileio.h"
  1598. + #include "Malloc.h"
  1599.   
  1600.   void 
  1601.   do_cso(ZeGopher)
  1602. ***************
  1603. *** 77,83 ****
  1604.        int i;
  1605.        FileIO *sock;
  1606.   
  1607. !      Draw_Status("Fetching Fields...");
  1608.        refresh();
  1609.   
  1610.        /*** Fetch the indexed fields from the server ***/
  1611. --- 87,93 ----
  1612.        int i;
  1613.        FileIO *sock;
  1614.   
  1615. !      Draw_Status(Gtxt("Fetching Fields...",87));
  1616.        refresh();
  1617.   
  1618.        /*** Fetch the indexed fields from the server ***/
  1619. ***************
  1620. *** 144,150 ****
  1621.              return;
  1622.         }
  1623.        
  1624. !       Draw_Status("Searching...");
  1625.         refresh();
  1626.         strcpy(query, "query ");
  1627.         
  1628. --- 154,160 ----
  1629.              return;
  1630.         }
  1631.        
  1632. !       Draw_Status(Gtxt("Searching...",143));
  1633.         refresh();
  1634.         strcpy(query, "query ");
  1635.         
  1636. diff -c gopher+/gopher/download.c:3.15 gopher+/gopher/download.c:3.19
  1637. *** gopher+/gopher/download.c:3.15    Fri May 27 00:08:45 1994
  1638. --- gopher+/gopher/download.c    Fri May 27 00:08:45 1994
  1639. ***************
  1640. *** 1,7 ****
  1641.   /********************************************************************
  1642.    * $Author: lindner $
  1643. !  * $Revision: 3.15 $
  1644. !  * $Date: 1994/04/01 04:48:10 $
  1645.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/download.c,v $
  1646.    * $State: Exp $
  1647.    *
  1648. --- 1,7 ----
  1649.   /********************************************************************
  1650.    * $Author: lindner $
  1651. !  * $Revision: 3.19 $
  1652. !  * $Date: 1994/05/17 05:47:54 $
  1653.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/download.c,v $
  1654.    * $State: Exp $
  1655.    *
  1656. ***************
  1657. *** 15,20 ****
  1658. --- 15,32 ----
  1659.    *********************************************************************
  1660.    * Revision History:
  1661.    * $Log: download.c,v $
  1662. +  * Revision 3.19  1994/05/17  05:47:54  lindner
  1663. +  * Massive internationalization change
  1664. +  *
  1665. +  * Revision 3.18  1994/05/14  04:13:39  lindner
  1666. +  * Internationalization...
  1667. +  *
  1668. +  * Revision 3.17  1994/05/06  02:26:31  lindner
  1669. +  * Fix for binhex downloads on vms and use dump command for binary files
  1670. +  *
  1671. +  * Revision 3.16  1994/04/25  20:48:19  lindner
  1672. +  * Proper casts
  1673. +  *
  1674.    * Revision 3.15  1994/04/01  04:48:10  lindner
  1675.    * Use FIOsystem() for downloading
  1676.    *
  1677. ***************
  1678. *** 123,129 ****
  1679.        "sx ",
  1680.        "kermit -q -i -s ",
  1681.   #ifdef VMS
  1682. !      "type ",
  1683.   #else
  1684.        "cat -v ",
  1685.   #endif
  1686. --- 135,141 ----
  1687.        "sx ",
  1688.        "kermit -q -i -s ",
  1689.   #ifdef VMS
  1690. !      "dump ",
  1691.   #else
  1692.        "cat -v ",
  1693.   #endif
  1694. ***************
  1695. *** 149,160 ****
  1696.        case A_TELNET:
  1697.        case A_TN3270:
  1698.        case A_INFO:
  1699. !       CursesErrorMsg("Sorry, can't download that!");
  1700.         return;
  1701.        }
  1702.   
  1703.        choice = CURChoice(CursesScreen, GSgetTitle(gs), DLnames, 
  1704. !             "Choose a download method", -1);
  1705.        
  1706.        if (choice == -1)
  1707.         return;
  1708. --- 161,172 ----
  1709.        case A_TELNET:
  1710.        case A_TN3270:
  1711.        case A_INFO:
  1712. !       CursesErrorMsg(Gtxt("Sorry, can't download that!",150));
  1713.         return;
  1714.        }
  1715.   
  1716.        choice = CURChoice(CursesScreen, GSgetTitle(gs), DLnames, 
  1717. !             Gtxt("Choose a download method",74), -1);
  1718.        
  1719.        if (choice == -1)
  1720.         return;
  1721. ***************
  1722. *** 190,201 ****
  1723.        getwd(curcwd);
  1724.   #ifdef VMS
  1725.        if (chdir("SYS$SCRATCH")!=0) {
  1726. !       CursesErrorMsg("Can't write to SYS$SCRATCH!");
  1727.         return;
  1728.        }
  1729.   #else
  1730.        if (chdir("/tmp")!=0) {
  1731. !       CursesErrorMsg("Can't write to the /tmp directory!");
  1732.         return;
  1733.        }
  1734.   #endif
  1735. --- 202,213 ----
  1736.        getwd(curcwd);
  1737.   #ifdef VMS
  1738.        if (chdir("SYS$SCRATCH")!=0) {
  1739. !       CursesErrorMsg(Gtxt("Can't write to SYS$SCRATCH!",69));
  1740.         return;
  1741.        }
  1742.   #else
  1743.        if (chdir("/tmp")!=0) {
  1744. !       CursesErrorMsg(Gtxt("Can't write to the /tmp directory!",70));
  1745.         return;
  1746.        }
  1747.   #endif
  1748. ***************
  1749. *** 216,244 ****
  1750.        /*** Check to see which method they're using to download ***/
  1751.        
  1752.        if (stat(tmpfilename, &buf) < 0) {
  1753. !       CursesErrorMsg("File didn't transfer successfully");
  1754.         return;
  1755.        }
  1756.   
  1757.        /*** Now start the download ... ***/
  1758. !      switch (GSgetType(gs)) {
  1759. !      case A_FILE:
  1760.         strcpy(command, DLcmds[choice]);
  1761. !       break;
  1762. !      default:
  1763.         strcpy(command, DLcmdB[choice]);
  1764. !      }
  1765.        strcat(command, tmpfilename);
  1766.        
  1767.        CURexit(CursesScreen);
  1768.   
  1769.        if (choice == 5) {
  1770. !       printf("Start your capture now...\n\n");
  1771. !       printf("Press <RETURN> when you're ready\n");
  1772.         fflush(stdout);
  1773.         getchar();
  1774.        } else {
  1775. !       printf("Start your download now...\n");
  1776.         fflush(stdout);
  1777.        }
  1778.   
  1779. --- 228,254 ----
  1780.        /*** Check to see which method they're using to download ***/
  1781.        
  1782.        if (stat(tmpfilename, &buf) < 0) {
  1783. !       CursesErrorMsg(Gtxt("File didn't transfer successfully",88));
  1784.         return;
  1785.        }
  1786.   
  1787.        /*** Now start the download ... ***/
  1788. !      if (GSisText(gs, NULL))
  1789.         strcpy(command, DLcmds[choice]);
  1790. !      else
  1791.         strcpy(command, DLcmdB[choice]);
  1792.        strcat(command, tmpfilename);
  1793.        
  1794.        CURexit(CursesScreen);
  1795.   
  1796.        if (choice == 5) {
  1797. !       printf(Gtxt("Start your capture now...\n\n",171));
  1798. !       printf(Gtxt("Press <RETURN> when you're ready\n",121));
  1799.         fflush(stdout);
  1800.         getchar();
  1801.        } else {
  1802. !       printf(Gtxt("Start your download now...\n",172));
  1803.         fflush(stdout);
  1804.        }
  1805.   
  1806. ***************
  1807. *** 245,263 ****
  1808.        start = time(NULL);
  1809.   
  1810.        if (FIOsystem(command))
  1811. !       printf("\nDownload could not be completed, sorry... \n");
  1812.        else {
  1813.         end = time(NULL);
  1814.         if (end == start)
  1815.              end++;
  1816.        
  1817. !       printf("\nDownload Complete. %d total bytes, %d bytes/sec\n",
  1818. !          buf.st_size, buf.st_size/(end-start));
  1819.        }
  1820.   
  1821.        unlink(tmpfilename);
  1822.        chdir(curcwd);
  1823. !      printf("Press <RETURN> to continue");
  1824.        fflush(stdout);
  1825.        getchar();
  1826.        CURenter(CursesScreen);
  1827. --- 255,273 ----
  1828.        start = time(NULL);
  1829.   
  1830.        if (FIOsystem(command))
  1831. !       printf(Gtxt("\nDownload could not be completed, sorry... \n",183));
  1832.        else {
  1833.         end = time(NULL);
  1834.         if (end == start)
  1835.              end++;
  1836.        
  1837. !       printf(Gtxt("\nDownload Complete. %d total bytes, %d bytes/sec\n",182),
  1838. !          (int)buf.st_size, ((int)buf.st_size)/(end-start));
  1839.        }
  1840.   
  1841.        unlink(tmpfilename);
  1842.        chdir(curcwd);
  1843. !      printf(Gtxt("Press <RETURN> to continue",121));
  1844.        fflush(stdout);
  1845.        getchar();
  1846.        CURenter(CursesScreen);
  1847. diff -c gopher+/gopher/form.c:3.5 gopher+/gopher/form.c:3.6
  1848. *** gopher+/gopher/form.c:3.5    Fri May 27 00:08:45 1994
  1849. --- gopher+/gopher/form.c    Fri May 27 00:08:45 1994
  1850. ***************
  1851. *** 1,7 ****
  1852.   /********************************************************************
  1853.    * $Author: lindner $
  1854. !  * $Revision: 3.5 $
  1855. !  * $Date: 1994/04/01 02:24:56 $
  1856.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/form.c,v $
  1857.    * $State: Exp $
  1858.    *
  1859. --- 1,7 ----
  1860.   /********************************************************************
  1861.    * $Author: lindner $
  1862. !  * $Revision: 3.6 $
  1863. !  * $Date: 1994/05/19 14:07:24 $
  1864.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/form.c,v $
  1865.    * $State: Exp $
  1866.    *
  1867. ***************
  1868. *** 15,20 ****
  1869. --- 15,23 ----
  1870.    *********************************************************************
  1871.    * Revision History:
  1872.    * $Log: form.c,v $
  1873. +  * Revision 3.6  1994/05/19  14:07:24  lindner
  1874. +  * use fast malloc on VMS VAXC
  1875. +  *
  1876.    * Revision 3.5  1994/04/01  02:24:56  lindner
  1877.    * Fix return types
  1878.    *
  1879. ***************
  1880. *** 39,44 ****
  1881. --- 42,48 ----
  1882.   #include "String.h"
  1883.   #include "GSgopherobj.h"
  1884.   #include "BLblock.h"
  1885. + #include "Malloc.h"
  1886.   
  1887.   /** Make a new item... **/
  1888.   
  1889. diff -c gopher+/gopher/forms.h:3.1.1.1 gopher+/gopher/forms.h:removed
  1890. *** gopher+/gopher/forms.h:3.1.1.1    Fri May 27 00:08:46 1994
  1891. --- gopher+/gopher/forms.h    Fri May 27 00:08:46 1994
  1892. ***************
  1893. *** 1,22 ****
  1894. - /*
  1895. -  * This defines the form type.
  1896. -  */
  1897. - struct form_struct {
  1898. -      int  numfields;
  1899. -      char *Title;
  1900. -      char **tags;
  1901. -      char **values;
  1902. -      int  *lengths;
  1903. -      int  *xloc;
  1904. -      int  *yloc;
  1905. - };
  1906. - typedef struct form_struct Form;
  1907. - /** Operations on Forms ***/
  1908. - BOOLEAN NewForm(/* Form* */);
  1909. - void ModifyForm(/* Form* */);
  1910. - void DisplayForm(/* Form* */);
  1911. - void PrintForm(/* Form * */);
  1912. --- 0 ----
  1913. diff -c gopher+/gopher/globals.h:3.13 gopher+/gopher/globals.h:3.14
  1914. *** gopher+/gopher/globals.h:3.13    Fri May 27 00:08:46 1994
  1915. --- gopher+/gopher/globals.h    Fri May 27 00:08:46 1994
  1916. ***************
  1917. *** 1,7 ****
  1918.   /********************************************************************
  1919.    * $Author: lindner $
  1920. !  * $Revision: 3.13 $
  1921. !  * $Date: 1994/03/04 23:36:33 $
  1922.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/globals.h,v $
  1923.    * $State: Exp $
  1924.    *
  1925. --- 1,7 ----
  1926.   /********************************************************************
  1927.    * $Author: lindner $
  1928. !  * $Revision: 3.14 $
  1929. !  * $Date: 1994/05/17 05:47:55 $
  1930.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/globals.h,v $
  1931.    * $State: Exp $
  1932.    *
  1933. ***************
  1934. *** 15,20 ****
  1935. --- 15,23 ----
  1936.    *********************************************************************
  1937.    * Revision History:
  1938.    * $Log: globals.h,v $
  1939. +  * Revision 3.14  1994/05/17  05:47:55  lindner
  1940. +  * Massive internationalization change
  1941. +  *
  1942.    * Revision 3.13  1994/03/04  23:36:33  lindner
  1943.    * remove MAXRESP define
  1944.    *
  1945. ***************
  1946. *** 113,118 ****
  1947. --- 116,125 ----
  1948.   EXTERN char *Gopenfile INIT(NULL);
  1949.   
  1950.   EXTERN jmp_buf Jmpenv;
  1951. + #ifdef GINTERNATIONAL
  1952. + nl_catd Gcatd;
  1953. + #endif
  1954.   
  1955.   #ifndef VMS
  1956.   extern int errno;
  1957. diff -c gopher+/gopher/gopher.c:3.70 gopher+/gopher/gopher.c:3.85
  1958. *** gopher+/gopher/gopher.c:3.70    Fri May 27 00:08:47 1994
  1959. --- gopher+/gopher/gopher.c    Fri May 27 00:08:47 1994
  1960. ***************
  1961. *** 1,7 ****
  1962.   /********************************************************************
  1963.    * $Author: lindner $
  1964. !  * $Revision: 3.70 $
  1965. !  * $Date: 1994/04/13 19:12:50 $
  1966.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/gopher.c,v $
  1967.    * $State: Exp $
  1968.    *
  1969. --- 1,7 ----
  1970.   /********************************************************************
  1971.    * $Author: lindner $
  1972. !  * $Revision: 3.85 $
  1973. !  * $Date: 1994/05/27 02:22:23 $
  1974.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/gopher.c,v $
  1975.    * $State: Exp $
  1976.    *
  1977. ***************
  1978. *** 15,20 ****
  1979. --- 15,72 ----
  1980.    *********************************************************************
  1981.    * Revision History:
  1982.    * $Log: gopher.c,v $
  1983. +  * Revision 3.85  1994/05/27  02:22:23  lindner
  1984. +  * One more fix for International defs
  1985. +  *
  1986. +  * Revision 3.84  1994/05/26  19:36:45  lindner
  1987. +  * Fix bugs for ginternational
  1988. +  *
  1989. +  * Revision 3.83  1994/05/26  19:15:22  lindner
  1990. +  * Add GINTERNATIONAL stuff
  1991. +  *
  1992. +  * Revision 3.82  1994/05/25  21:46:35  lindner
  1993. +  * Fix for suck_sound
  1994. +  *
  1995. +  * Revision 3.81  1994/05/25  21:38:17  lindner
  1996. +  * Fix for mem prob..
  1997. +  *
  1998. +  * Revision 3.80  1994/05/25  20:59:42  lindner
  1999. +  * Fix for play command forking
  2000. +  *
  2001. +  * Revision 3.79  1994/05/24  07:00:38  lindner
  2002. +  * Don't allow users with rsh to specify a shell as an app..
  2003. +  *
  2004. +  * Revision 3.78  1994/05/24  05:50:10  lindner
  2005. +  * Fix for bad free() in SetOptions()
  2006. +  *
  2007. +  * Revision 3.77  1994/05/19  15:53:34  lindner
  2008. +  * Fix for vms
  2009. +  *
  2010. +  * Revision 3.76  1994/05/19  14:07:25  lindner
  2011. +  * use fast malloc on VMS VAXC
  2012. +  *
  2013. +  * Revision 3.75  1994/05/18  03:59:25  lindner
  2014. +  * Change to FIOsystem() for VMS
  2015. +  *
  2016. +  * Revision 3.74  1994/05/17  05:47:57  lindner
  2017. +  * Massive internationalization change
  2018. +  *
  2019. +  * Revision 3.73  1994/05/14  04:13:41  lindner
  2020. +  * Internationalization...
  2021. +  *
  2022. +  * Revision 3.72  1994/04/25  04:05:24  lindner
  2023. +  * FIOsystem() return values were reversed for VMS.
  2024. +  *
  2025. +  * Added code for mapping telnet and/or tn3270 commands to "- none -" for
  2026. +  * disabling them and having the client issue "Sorry, not implemented"
  2027. +  * messages on efforts to use Type 8 or T tuples.
  2028. +  *
  2029. +  * Added FIOsystem() failure messages for both VMS and Unix. (all from
  2030. +  * F.Macrides)
  2031. +  *
  2032. +  * Revision 3.71  1994/04/25  03:37:38  lindner
  2033. +  * Modifications for Debug() and mismatched NULL arguments, added Debugmsg
  2034. +  *
  2035.    * Revision 3.70  1994/04/13  19:12:50  lindner
  2036.    * Fix for ASK block bug
  2037.    *
  2038. ***************
  2039. *** 330,335 ****
  2040. --- 382,388 ----
  2041.   
  2042.   #include <errno.h>
  2043.   #include "fileio.h"
  2044. + #include "Malloc.h"
  2045.   
  2046.   void describe_gopher();
  2047.   extern int  twirl();
  2048. ***************
  2049. *** 358,379 ****
  2050.   #ifdef VMS
  2051.        refresh();
  2052.   #endif
  2053. !      Dialogmess[0] = "Warning!!!!!, you are about to leave the Internet";
  2054. !      Dialogmess[1] = "Gopher program and connect to another host. If";
  2055. !      Dialogmess[2] = "you get stuck press the control key and the";
  2056.   #if defined(VMS) && defined(MULTINET)
  2057. !      Dialogmess[3] = "^ key, and then type q.";
  2058.   #else
  2059. !      Dialogmess[3] = "] key, and then type quit";
  2060.   #endif
  2061.        Dialogmess[4] = "";
  2062.        
  2063.        if (GSgetPort(ZeGopher) != 0)
  2064. !       sprintf(sMessage1,"Connecting to %.40s, port %d using %s.", 
  2065.             GSgetHost(ZeGopher),GSgetPort(ZeGopher), 
  2066.             (GSgetType(ZeGopher) == A_TN3270) ? "tn3270" : "telnet");
  2067.        else
  2068. !       sprintf(sMessage1, "Connecting to %.40s using %s.",
  2069.             GSgetHost(ZeGopher),
  2070.             (GSgetType(ZeGopher) == A_TN3270) ? "tn3270" : "telnet");
  2071.   
  2072. --- 411,432 ----
  2073.   #ifdef VMS
  2074.        refresh();
  2075.   #endif
  2076. !      Dialogmess[0] = Gtxt("Warning!!!!!, you are about to leave the Internet",34);
  2077. !      Dialogmess[1] = Gtxt("Gopher program and connect to another host. If",35);
  2078. !      Dialogmess[2] = Gtxt("you get stuck press the control key and the",36);
  2079.   #if defined(VMS) && defined(MULTINET)
  2080. !      Dialogmess[3] = Gtxt("^ key, and then type q.",38);
  2081.   #else
  2082. !      Dialogmess[3] = Gtxt("] key, and then type quit",37);
  2083.   #endif
  2084.        Dialogmess[4] = "";
  2085.        
  2086.        if (GSgetPort(ZeGopher) != 0)
  2087. !       sprintf(sMessage1,Gtxt("Connecting to %.40s, port %d using %s.",39), 
  2088.             GSgetHost(ZeGopher),GSgetPort(ZeGopher), 
  2089.             (GSgetType(ZeGopher) == A_TN3270) ? "tn3270" : "telnet");
  2090.        else
  2091. !       sprintf(sMessage1, Gtxt("Connecting to %.40s using %s.",40),
  2092.             GSgetHost(ZeGopher),
  2093.             (GSgetType(ZeGopher) == A_TN3270) ? "tn3270" : "telnet");
  2094.   
  2095. ***************
  2096. *** 381,387 ****
  2097.   
  2098.        cp = GSgetPath(ZeGopher);
  2099.        if (*cp != '\0')
  2100. !       sprintf(sMessage2,"Use the account name \"%.40s\" to log in",
  2101.             GSgetPath(ZeGopher));
  2102.        else
  2103.         sMessage2[0] = '\0';
  2104. --- 434,441 ----
  2105.   
  2106.        cp = GSgetPath(ZeGopher);
  2107.        if (*cp != '\0')
  2108. !       sprintf(sMessage2,
  2109. !           Gtxt("Use the account name \"%.40s\" to log in",41),
  2110.             GSgetPath(ZeGopher));
  2111.        else
  2112.         sMessage2[0] = '\0';
  2113. ***************
  2114. *** 441,447 ****
  2115.        GSgetginfo(gs, TRUE);
  2116.   
  2117.        if (!GSisGplus(gs) || GSgetAdmin(gs) == NULL) {
  2118. !       CursesErrorMsg("Can't find an administrator for this item, sorry!");
  2119.         return;
  2120.        }
  2121.   
  2122. --- 495,502 ----
  2123.        GSgetginfo(gs, TRUE);
  2124.   
  2125.        if (!GSisGplus(gs) || GSgetAdmin(gs) == NULL) {
  2126. !       CursesErrorMsg(
  2127. !          Gtxt("Can't find an administrator for this item, sorry!",48));
  2128.         return;
  2129.        }
  2130.   
  2131. ***************
  2132. *** 466,476 ****
  2133.        for (i=0; i < 3; i++)
  2134.         gripemess[i] = NULL;
  2135.   
  2136. !      gripeprompt[0] = "Hit the Tab key at the end of each line you type.";
  2137. !      gripeprompt[1] = "Hit the Enter key to send your message.";
  2138.        gripeprompt[2] = "";
  2139. !      gripeprompt[3] = "Subject";
  2140. !      gripeprompt[4] = "Problem";
  2141.        gripeprompt[14] = NULL;
  2142.   
  2143.        if (CURRequest(CursesScreen, GSgetAdmin(gs), gripeprompt, gripemess)!=0) {
  2144. --- 521,531 ----
  2145.        for (i=0; i < 3; i++)
  2146.         gripemess[i] = NULL;
  2147.   
  2148. !      gripeprompt[0] = Gtxt("Hit the Tab key at the end of each line you type.",49);
  2149. !      gripeprompt[1] = Gtxt("Hit the Enter key to send your message.",50);
  2150.        gripeprompt[2] = "";
  2151. !      gripeprompt[3] = Gtxt("Subject",51);
  2152. !      gripeprompt[4] = Gtxt("Problem",52);
  2153.        gripeprompt[14] = NULL;
  2154.   
  2155.        if (CURRequest(CursesScreen, GSgetAdmin(gs), gripeprompt, gripemess)!=0) {
  2156. ***************
  2157. *** 486,492 ****
  2158.        tmpfilename = tempnam(NULL,NULL);
  2159.   
  2160.        if ((f = fopen(tmpfilename, "w")) == NULL) {
  2161. !       CursesErrorMsg("Cannot send mail...");
  2162.         return;
  2163.        }
  2164.   
  2165. --- 541,547 ----
  2166.        tmpfilename = tempnam(NULL,NULL);
  2167.   
  2168.        if ((f = fopen(tmpfilename, "w")) == NULL) {
  2169. !       CursesErrorMsg(Gtxt("Cannot send mail...",53));
  2170.         return;
  2171.        }
  2172.   
  2173. ***************
  2174. *** 500,507 ****
  2175.        fclose(f);
  2176.   
  2177.        CURexit(CursesScreen);
  2178. !      printf("Mailing gripe to %s...", MailAddress);
  2179. !      system(mailcmd);
  2180.        unlink(tmpfilename);
  2181.        free(tmpfilename);
  2182.        CURenter(CursesScreen);
  2183. --- 555,562 ----
  2184.        fclose(f);
  2185.   
  2186.        CURexit(CursesScreen);
  2187. !      printf(Gtxt("Mailing gripe to %s...",54), MailAddress);
  2188. !      FIOsystem(mailcmd);
  2189.        unlink(tmpfilename);
  2190.        free(tmpfilename);
  2191.        CURenter(CursesScreen);
  2192. ***************
  2193. *** 514,520 ****
  2194.        fio = FIOopenProcess(mailargv[0], mailargv, "w");
  2195.   
  2196.        if (fio == NULL) {
  2197. !       CursesErrorMsg("Cannot send mail...");
  2198.         return;
  2199.        }
  2200.   
  2201. --- 569,575 ----
  2202.        fio = FIOopenProcess(mailargv[0], mailargv, "w");
  2203.   
  2204.        if (fio == NULL) {
  2205. !       CursesErrorMsg(Gtxt("Cannot send mail...",53));
  2206.         return;
  2207.        }
  2208.   
  2209. ***************
  2210. *** 554,560 ****
  2211.         *inputline = '\0';
  2212.        }
  2213.   
  2214. !      prompt[0] = "Words to search for";
  2215.        prompt[1] = NULL;
  2216.   
  2217.        response[0] = inputline;
  2218. --- 609,615 ----
  2219.         *inputline = '\0';
  2220.        }
  2221.   
  2222. !      prompt[0] = Gtxt("Words to search for",55);
  2223.        prompt[1] = NULL;
  2224.   
  2225.        response[0] = inputline;
  2226. ***************
  2227. *** 591,603 ****
  2228.            !strncasecmp(playCmd, "- none -", 8) ||
  2229.        playCmd == NULL || playCmd[0] == '\0') {
  2230.         /*** Hey! no play command, bummer ***/
  2231. !       CursesErrorMsg("Sorry, this machine doesn't support sounds");
  2232.   
  2233.         return;
  2234.        }
  2235.        Play = FIOopenCmdline(playCmd, "w");
  2236. !       
  2237.        
  2238.        while(1) {
  2239.             j = read(sockfd, buf, BUFSIZE);
  2240. --- 646,659 ----
  2241.            !strncasecmp(playCmd, "- none -", 8) ||
  2242.        playCmd == NULL || playCmd[0] == '\0') {
  2243.         /*** Hey! no play command, bummer ***/
  2244. !       /** We're forked at this point, and we can't display anything.. **/
  2245. !       /*      CursesErrorMsg(Gtxt("Sorry, this machine doesn't support sounds",159));*/
  2246.   
  2247.         return;
  2248.        }
  2249. !      
  2250.        Play = FIOopenCmdline(playCmd, "w");
  2251.        
  2252.        while(1) {
  2253.             j = read(sockfd, buf, BUFSIZE);
  2254. ***************
  2255. *** 620,626 ****
  2256.     GopherStruct *ZeGopher;
  2257.   {
  2258.   #ifdef VMS
  2259. !      CursesErrorMsg("Sorry, this machine doesn't support sounds");
  2260.   #else
  2261.        int sockfd;
  2262.        BOOLEAN Waitforchld = FALSE;
  2263. --- 676,682 ----
  2264.     GopherStruct *ZeGopher;
  2265.   {
  2266.   #ifdef VMS
  2267. !      CursesErrorMsg(Gtxt("Sorry, this machine doesn't support sounds",159));
  2268.   #else
  2269.        int sockfd;
  2270.        BOOLEAN Waitforchld = FALSE;
  2271. ***************
  2272. *** 665,671 ****
  2273.   do_movie(ZeGopher)
  2274.     GopherStruct *ZeGopher;
  2275.   {
  2276. !      CursesErrorMsg("Movie viewing not yet implemented");
  2277.   }
  2278.   
  2279.   
  2280. --- 721,727 ----
  2281.   do_movie(ZeGopher)
  2282.     GopherStruct *ZeGopher;
  2283.   {
  2284. !      CursesErrorMsg(Gtxt("Movie viewing not yet implemented",108));
  2285.   }
  2286.   
  2287.   
  2288. ***************
  2289. *** 699,705 ****
  2290.        if (!RCdisplayCommand(GlobalRC, view, "", inputline) ||
  2291.            !strncasecmp(inputline, "- none -", 8) ||
  2292.        inputline == NULL || inputline[0] == '\0') {
  2293. !           CursesErrorMsg("No display command is mapped to this view!");
  2294.         return;
  2295.        }
  2296.        Debug("showfile:inputline=%s\n",inputline);
  2297. --- 755,761 ----
  2298.        if (!RCdisplayCommand(GlobalRC, view, "", inputline) ||
  2299.            !strncasecmp(inputline, "- none -", 8) ||
  2300.        inputline == NULL || inputline[0] == '\0') {
  2301. !           CursesErrorMsg(Gtxt("No display command is mapped to this view!",113));
  2302.         return;
  2303.        }
  2304.        Debug("showfile:inputline=%s\n",inputline);
  2305. ***************
  2306. *** 711,721 ****
  2307.   
  2308.         if (*inputline == '|') {
  2309.   #ifdef VMS
  2310. !            CursesErrorMsg("Unix piping requested.  Check your configuration!");
  2311.              return;
  2312.   #endif
  2313.              if ((tmpfile = popen(inputline+1, "w")) == NULL)
  2314. !             fprintf(stderr, "Couldn't execute %s\n",inputline), CleanupandExit(-1);
  2315.              WritePipe = TRUE;
  2316.              CURexit(CursesScreen);
  2317.         } else {
  2318. --- 767,778 ----
  2319.   
  2320.         if (*inputline == '|') {
  2321.   #ifdef VMS
  2322. !            CursesErrorMsg(Gtxt("Unix piping requested.  Check your configuration!",176));
  2323.              return;
  2324.   #endif
  2325.              if ((tmpfile = popen(inputline+1, "w")) == NULL)
  2326. !             fprintf(stderr, Gtxt("Couldn't execute %s\n",81)
  2327. !                 ,inputline), CleanupandExit(-1);
  2328.              WritePipe = TRUE;
  2329.              CURexit(CursesScreen);
  2330.         } else {
  2331. ***************
  2332. *** 741,747 ****
  2333.              if ((tmpfile = fopen(tmpfilename, "w")) == NULL) {
  2334.   #endif
  2335.               CURexit(CursesScreen);
  2336. !             fprintf(stderr, "Couldn't make a tmp file!\n"), 
  2337.               CleanupandExit(-1);
  2338.              }
  2339.              if (GSgetLocalFile(ZeGopher) != NULL &&
  2340. --- 798,804 ----
  2341.              if ((tmpfile = fopen(tmpfilename, "w")) == NULL) {
  2342.   #endif
  2343.               CURexit(CursesScreen);
  2344. !             fprintf(stderr, Gtxt("Couldn't make a tmp file!\n",83)), 
  2345.               CleanupandExit(-1);
  2346.              }
  2347.              if (GSgetLocalFile(ZeGopher) != NULL &&
  2348. ***************
  2349. *** 877,889 ****
  2350.        DispStrings[3] = NULL;
  2351.   
  2352.        if (sockfd <0) {
  2353. !       sprintf(DispString, "Cannot connect to host %.40s, port %d.", host, port);
  2354.         switch (sockfd) {
  2355.         case -2:
  2356. !            DispStrings[2] = "Hostname is unknown.";
  2357.              break;
  2358.         case -3:
  2359. !            DispStrings[2] = "Unable to allocate a socket.";
  2360.              break;
  2361.         case -4:
  2362.   #if defined(VMS) && defined(MULTINET)
  2363. --- 934,949 ----
  2364.        DispStrings[3] = NULL;
  2365.   
  2366.        if (sockfd <0) {
  2367. !       sprintf(DispString, 
  2368. !           Gtxt("Cannot connect to host %.40s, port %d.",72), 
  2369. !           host, port);
  2370.         switch (sockfd) {
  2371.         case -2:
  2372. !            DispStrings[2] = Gtxt("Hostname is unknown.",100);
  2373.              break;
  2374.         case -3:
  2375. !            DispStrings[2] = Gtxt("Unable to allocate a socket.",175);
  2376.              break;
  2377.         case -4:
  2378.   #if defined(VMS) && defined(MULTINET)
  2379. ***************
  2380. *** 891,897 ****
  2381.              DispStrings[2] = DispString2;
  2382.   #else
  2383.              if (errno > 0 && errno <= sys_nerr) {
  2384. !             sprintf(DispString2, "Connection failed: %s.",
  2385.   #ifdef VMS
  2386.                   strerror(errno));
  2387.   #else
  2388. --- 951,957 ----
  2389.              DispStrings[2] = DispString2;
  2390.   #else
  2391.              if (errno > 0 && errno <= sys_nerr) {
  2392. !             sprintf(DispString2, Gtxt("Connection failed: %s.",78),
  2393.   #ifdef VMS
  2394.                   strerror(errno));
  2395.   #else
  2396. ***************
  2397. *** 899,909 ****
  2398.   #endif
  2399.                   DispStrings[2] = DispString2;
  2400.              } else
  2401. !             DispStrings[2] = "Connection to remote host failed.";
  2402.   #endif
  2403.              break;
  2404.         default:
  2405. !            DispStrings[2] = "Unknown error.";
  2406.         }
  2407.         DispStrings[0] = DispString;
  2408.         DispStrings[1] = "";
  2409. --- 959,970 ----
  2410.   #endif
  2411.                   DispStrings[2] = DispString2;
  2412.              } else
  2413. !             DispStrings[2] = 
  2414. !              Gtxt("Connection to remote host failed.",79);
  2415.   #endif
  2416.              break;
  2417.         default:
  2418. !            DispStrings[2] = Gtxt("Unknown error.",177);
  2419.         }
  2420.         DispStrings[0] = DispString;
  2421.         DispStrings[1] = "";
  2422. ***************
  2423. *** 911,917 ****
  2424.         
  2425.             CURBeep(CursesScreen);
  2426.   
  2427. !       CURDialog(CursesScreen, "Network Error", DispStrings);
  2428.        }
  2429.   }
  2430.   
  2431. --- 972,978 ----
  2432.         
  2433.             CURBeep(CursesScreen);
  2434.   
  2435. !       CURDialog(CursesScreen, Gtxt("Network Error",110), DispStrings);
  2436.        }
  2437.   }
  2438.   
  2439. ***************
  2440. *** 924,930 ****
  2441.        yesno[0] = 'y';
  2442.        yesno[1] = '\0';
  2443.        
  2444. !      CURgetYesorNo(CursesScreen, "Really quit (y/n) ?", yesno);
  2445.        if (*yesno == 'y') {
  2446.         return(TRUE);
  2447.        }
  2448. --- 985,991 ----
  2449.        yesno[0] = 'y';
  2450.        yesno[1] = '\0';
  2451.        
  2452. !      CURgetYesorNo(CursesScreen, Gtxt("Really quit (y/n) ?",124), yesno);
  2453.        if (*yesno == 'y') {
  2454.         return(TRUE);
  2455.        }
  2456. ***************
  2457. *** 988,995 ****
  2458.   
  2459.        if (CurrentDir == NULL || GDgetNumitems(CurrentDir) <= 0) {
  2460.             CURexit(CursesScreen);
  2461. !       fprintf(stderr,
  2462. !           "gopher: Nothing received for main menu, can't continue\n");
  2463.         CleanupandExit(1);
  2464.        }
  2465.   
  2466. --- 1049,1055 ----
  2467.   
  2468.        if (CurrentDir == NULL || GDgetNumitems(CurrentDir) <= 0) {
  2469.             CURexit(CursesScreen);
  2470. !       fprintf(stderr,Gtxt("gopher: Nothing received for main menu, can't continue\n",60));
  2471.         CleanupandExit(1);
  2472.        }
  2473.   
  2474. ***************
  2475. *** 1074,1080 ****
  2476.   Initialize()
  2477.   {
  2478.   
  2479. !      Debug("Initialize\n",NULL)
  2480.        GlobalRC        = RCnew();
  2481.   
  2482.        /** get defaults from the rc file **/
  2483. --- 1134,1140 ----
  2484.   Initialize()
  2485.   {
  2486.   
  2487. !      Debugmsg("Initialize\n")
  2488.        GlobalRC        = RCnew();
  2489.   
  2490.        /** get defaults from the rc file **/
  2491. ***************
  2492. *** 1087,1093 ****
  2493.        CursesScreen = CURnew();
  2494.   
  2495.        if (strcmp(CURgetTerm(CursesScreen), "unknown")==0)
  2496. !       fprintf(stderr, "I don't understand your terminal type\n"), 
  2497.         CleanupandExit(-1);
  2498.   
  2499.   
  2500. --- 1147,1153 ----
  2501.        CursesScreen = CURnew();
  2502.   
  2503.        if (strcmp(CURgetTerm(CursesScreen), "unknown")==0)
  2504. !       fprintf(stderr, Gtxt("I don't understand your terminal type\n",101)), 
  2505.         CleanupandExit(-1);
  2506.   
  2507.   
  2508. ***************
  2509. *** 1121,1130 ****
  2510.         perror("signal died:\n"),
  2511.         CleanupandExit(-1);
  2512.   
  2513. -      /*** Initialize international languages ***/
  2514. - #ifdef LC_ALL
  2515. -      setlocale(LC_ALL, "");
  2516. - #endif
  2517.          
  2518.   
  2519.        /*** Init MainWindow ****/
  2520. --- 1181,1186 ----
  2521. ***************
  2522. *** 1137,1172 ****
  2523.    * This stuff will set the options in a nice way...
  2524.    */
  2525.   
  2526. - static char *OptionMenu[] =
  2527. - {"General Options",
  2528. -  "Configure Display Applications",
  2529. -  "Configure Printing Applications",
  2530. -  "Define New Content-Type",
  2531. -   NULL
  2532. - };
  2533. - static char *OptionNewApp[] = 
  2534. - {"Content-Type Name",
  2535. -  "Display Application",
  2536. -  "Printing Application",
  2537. -  NULL
  2538. -  };
  2539. - static char *noyes[] = {"No", "Yes", NULL};
  2540.   void
  2541.   SetOptions()
  2542.   {
  2543. !      int choice;
  2544.   
  2545. !      if (SecureMode || NoShellMode) {
  2546. !       CursesErrorMsg("Sorry, you are not allowed to set options in secure mode.");
  2547.         return;
  2548.        }
  2549.   
  2550.        /** Display Configuration Menu and allow user to choose **/
  2551. !      choice = CURChoice(CursesScreen, "Gopher Options", OptionMenu,
  2552. !             "Your Choice", -1);
  2553.   
  2554.        if (choice == -1)
  2555.         return;
  2556. --- 1193,1250 ----
  2557.    * This stuff will set the options in a nice way...
  2558.    */
  2559.   
  2560.   void
  2561.   SetOptions()
  2562.   {
  2563. !      int choice, restricted;
  2564. !      char     *shell;
  2565.   
  2566. !      static char **OptionNewApp = NULL, **OptionsMenu = NULL;
  2567. !      static char **noyes = NULL;
  2568. !      if (OptionNewApp == NULL) {
  2569. !       OptionNewApp = (char**) malloc(sizeof(char*) * 4);
  2570. !       OptionNewApp[0] = Gtxt("Content-Type Name",27);
  2571. !       OptionNewApp[1] = Gtxt("Display Application",28);
  2572. !       OptionNewApp[2] = Gtxt("Printing Application",29),
  2573. !       OptionNewApp[3] = NULL;
  2574. !      }
  2575. !      if (OptionsMenu == NULL) {
  2576. !       OptionsMenu = (char **) malloc(sizeof(char*) * 5);
  2577. !       OptionsMenu[0] = Gtxt("General Options",30);
  2578. !       OptionsMenu[1] = Gtxt("Configure Display Applications",31);
  2579. !       OptionsMenu[2] = Gtxt("Configure Printing Applications",32);
  2580. !       OptionsMenu[3] = Gtxt("Define New Content-Type",33);
  2581. !       OptionsMenu[4] = NULL;
  2582. !      }
  2583. !      if (noyes == NULL) {
  2584. !       noyes = (char**) malloc(sizeof(char*) * 3);
  2585. !       noyes[0] = Gtxt("No",111);
  2586. !       noyes[1] = Gtxt("Yes",180);
  2587. !       noyes[2] = NULL;
  2588. !      }
  2589. !      /*
  2590. !       * If the user is running a restricted shell, don't allow him/her to
  2591. !       * set applications, because he/she can specify a shell.  This is
  2592. !       * independent of -s and -S because rsh users may have a shell.
  2593. !       */
  2594. ! #ifndef VMS
  2595. !      restricted = (shell = getenv("SHELL")) == NULL
  2596. !       || strcmp(shell+strlen(shell) - 3, "rsh") == 0;
  2597. !      
  2598. ! #endif
  2599. !      if (SecureMode || NoShellMode || restricted) {
  2600. !       CursesErrorMsg(Gtxt("Sorry, you are not allowed to set options in secure mode.",163));
  2601.         return;
  2602.        }
  2603.   
  2604.        /** Display Configuration Menu and allow user to choose **/
  2605. !      choice = CURChoice(CursesScreen, Gtxt("Gopher Options",94), OptionsMenu,
  2606. !             Gtxt("Your Choice",181), -1);
  2607.   
  2608.        if (choice == -1)
  2609.         return;
  2610. ***************
  2611. *** 1180,1186 ****
  2612.         Requestitem *items[2];
  2613.         Requestitem item;
  2614.         
  2615. !       item.prompt  = "Bold Search words in Builtin Pager";
  2616.         item.thing   = CUR_CHOICE;
  2617.         item.choices = noyes;
  2618.         item.chooseitem = RCsearchBolding(GlobalRC);
  2619. --- 1258,1264 ----
  2620.         Requestitem *items[2];
  2621.         Requestitem item;
  2622.         
  2623. !       item.prompt  = Gtxt("Bold Search words in Builtin Pager",66);
  2624.         item.thing   = CUR_CHOICE;
  2625.         item.choices = noyes;
  2626.         item.chooseitem = RCsearchBolding(GlobalRC);
  2627. ***************
  2628. *** 1225,1233 ****
  2629.         Responses[i] = NULL;
  2630.   
  2631.         if (choice == 1)
  2632. !            zetitle = "Configure Display Applications";
  2633.         else
  2634. !            zetitle = "Configure Printing Applications";
  2635.   
  2636.         if (CURRequest(CursesScreen, zetitle, gplusviews, 
  2637.                Responses) == 0) {
  2638. --- 1303,1311 ----
  2639.         Responses[i] = NULL;
  2640.   
  2641.         if (choice == 1)
  2642. !            zetitle = Gtxt("Configure Display Applications",31);
  2643.         else
  2644. !            zetitle = Gtxt("Configure Printing Applications",32);
  2645.   
  2646.         if (CURRequest(CursesScreen, zetitle, gplusviews, 
  2647.                Responses) == 0) {
  2648. ***************
  2649. *** 1250,1256 ****
  2650.         }
  2651.   
  2652.         for (i = 0 ; i <= numoptions; i++)
  2653. !           free(Responses[i]);
  2654.         free(Responses);
  2655.         free(gplusviews);
  2656.   
  2657. --- 1328,1335 ----
  2658.         }
  2659.   
  2660.         for (i = 0 ; i <= numoptions; i++)
  2661. !            if (Responses[i])
  2662. !             free(Responses[i]);
  2663.         free(Responses);
  2664.         free(gplusviews);
  2665.   
  2666. ***************
  2667. *** 1271,1277 ****
  2668.         }
  2669.         Responses[3] = NULL;
  2670.         
  2671. !       if ((CURRequest(CursesScreen, "Define New Content-Type", 
  2672.              OptionNewApp, Responses) == 0) && (*Responses[0] != '\0')) {
  2673.              char tmpstr[512];
  2674.              
  2675. --- 1350,1356 ----
  2676.         }
  2677.         Responses[3] = NULL;
  2678.         
  2679. !       if ((CURRequest(CursesScreen, Gtxt("Define New Content-Type",33), 
  2680.              OptionNewApp, Responses) == 0) && (*Responses[0] != '\0')) {
  2681.              char tmpstr[512];
  2682.              
  2683. ***************
  2684. *** 1313,1324 ****
  2685.        boolean Bkmarksfirst = FALSE;
  2686.        
  2687.   
  2688.   #ifdef VMS
  2689. !       argv[0] = "gopher";
  2690.   #endif
  2691.   
  2692. -     /* DEBUG=TRUE; */
  2693. -      Debug("main:A\r\n",NULL)
  2694.        for (i=0; i<2; i++) {
  2695.         RootGophers[i] = GSnew();
  2696.         GSsetType (RootGophers[i], A_DIRECTORY);   
  2697. --- 1392,1415 ----
  2698.        boolean Bkmarksfirst = FALSE;
  2699.        
  2700.   
  2701. +      /*** Initialize international languages ***/
  2702. +      setlocale(LC_ALL, "");
  2703. + #if defined(GINTERNATIONAL)
  2704. +      Gtxtopen(Gcatd,"gopher.cat", 0);
  2705. +      if (Gcatd == (nl_catd) -1) {
  2706. +       /** Try finding it elsewhere.. **/
  2707. +       char fname[256];
  2708. +       if (getenv("LANG") != NULL) {
  2709. +            sprintf(fname, "%s/gophernls/%s.cat", GOPHERLIB, getenv("LANG"));
  2710. +            Gtxtopen(Gcatd, fname,0);
  2711. +       }
  2712. +      }
  2713. + #endif
  2714.   #ifdef VMS
  2715. !      argv[0] = "gopher";
  2716.   #endif
  2717.   
  2718.        for (i=0; i<2; i++) {
  2719.         RootGophers[i] = GSnew();
  2720.         GSsetType (RootGophers[i], A_DIRECTORY);   
  2721. ***************
  2722. *** 1325,1331 ****
  2723.         GSsetPath (RootGophers[i],"");
  2724.        }
  2725.        
  2726. -      Debug("main:B\r\n",NULL)
  2727.        /** Should generalize this to >2 hosts .... Sigh... ***/
  2728.        GSsetHost (RootGophers[0], CLIENT1_HOST);
  2729.        GSsetPort (RootGophers[0], CLIENT1_PORT);
  2730. --- 1416,1421 ----
  2731. ***************
  2732. *** 1338,1343 ****
  2733. --- 1428,1434 ----
  2734.   
  2735.        sTmp[0] = '\0';
  2736.   
  2737.        while ((c = getopt(argc, argv, "DsSbrp:t:T:i:")) != -1)
  2738.         switch (c) {
  2739.         case 's':
  2740. ***************
  2741. *** 1365,1371 ****
  2742.              break;
  2743.         case 'D':
  2744.              DEBUG = TRUE;
  2745. !            Debug("gopher starting - debug on\n",NULL)
  2746.              break;
  2747.         case 'r':
  2748.              RemoteUser = TRUE;
  2749. --- 1456,1462 ----
  2750.              break;
  2751.         case 'D':
  2752.              DEBUG = TRUE;
  2753. !            Debugmsg("gopher starting - debug on\n")
  2754.              break;
  2755.         case 'r':
  2756.              RemoteUser = TRUE;
  2757. ***************
  2758. *** 1380,1394 ****
  2759.   
  2760.        if (errflag) {
  2761.         
  2762. !       fprintf(stderr, "Usage: %s [-sSbDr] [-T type] [-p path] [-t title] [hostname port]+\n", argv[0]);
  2763. !       fprintf(stderr, "     -s      secure mode, users without own account\n");
  2764. !       fprintf(stderr, "     -S      secure mode, users with own account\n");
  2765. !       fprintf(stderr, "     -p path specify path to initial item\n");
  2766. !       fprintf(stderr, "     -T type Type of initial item\n");
  2767. !       fprintf(stderr, "     -i      Search argument (for -T 7)\n");
  2768. !       fprintf(stderr, "     -b      Bookmarks first\n");
  2769. !       fprintf(stderr, "     -r      Remote user\n");
  2770. !       fprintf(stderr, "     -D      Debug mode\n");
  2771.         CleanupandExit(-1);
  2772.        }
  2773.   
  2774. --- 1471,1493 ----
  2775.   
  2776.        if (errflag) {
  2777.         
  2778. !       fprintf(stderr, Gtxt("Usage: %s [-sSbDr] [-T type] [-p path] [-t title] [hostname port]+\n",9), argv[0]);
  2779. !       fprintf(stderr, 
  2780. !         Gtxt("     -s      secure mode, users without own account\n",10));
  2781. !       fprintf(stderr,
  2782. !         Gtxt("     -S      secure mode, users with own account\n",11));
  2783. !       fprintf(stderr,
  2784. !         Gtxt("     -p path specify path to initial item\n",12));
  2785. !       fprintf(stderr,
  2786. !             Gtxt("     -T type Type of initial item\n",13));
  2787. !       fprintf(stderr,
  2788. !             Gtxt("     -i      Search argument (for -T 7)\n",14));
  2789. !       fprintf(stderr, 
  2790. !         Gtxt("     -b      Bookmarks first\n",15));
  2791. !       fprintf(stderr,
  2792. !             Gtxt("     -r      Remote user\n",16));
  2793. !       fprintf(stderr, 
  2794. !         Gtxt("     -D      Debug mode\n",17));
  2795.         CleanupandExit(-1);
  2796.        }
  2797.   
  2798. ***************
  2799. *** 1419,1427 ****
  2800.   
  2801.        /*** If the title hasn't been set, then add a default title **/
  2802.        if (GSgetTitle(RootGophers[0]) == NULL) {
  2803. !       sprintf(sTmp, "Root gopher server: %.59s", GSgetHost(RootGophers[0]));
  2804.         GSsetTitle(RootGophers[0], sTmp);
  2805. !       sprintf(sTmp, "Root gopher server: %.59s", GSgetHost(RootGophers[1]));
  2806.         GSsetTitle(RootGophers[1], sTmp);
  2807.        }
  2808.   
  2809. --- 1518,1528 ----
  2810.   
  2811.        /*** If the title hasn't been set, then add a default title **/
  2812.        if (GSgetTitle(RootGophers[0]) == NULL) {
  2813. !       sprintf(sTmp, Gtxt("Home Gopher server: %.59s",97),
  2814. !           GSgetHost(RootGophers[0]));
  2815.         GSsetTitle(RootGophers[0], sTmp);
  2816. !       sprintf(sTmp, Gtxt("Home Gopher server: %.59s",97),
  2817. !           GSgetHost(RootGophers[1]));
  2818.         GSsetTitle(RootGophers[1], sTmp);
  2819.        }
  2820.   
  2821. ***************
  2822. *** 1451,1461 ****
  2823.   
  2824.   #ifdef DEBUGGING
  2825.       if (CurrentDir == NULL)  {
  2826. !          Debug("CurrentDir=NULL\n",NULL);
  2827.       }
  2828.       else
  2829.            if (GDgetNumitems(CurrentDir) <=0) {
  2830. !           Debug("GDgetNumitems<=0\n", NULL);
  2831.            }
  2832.   #endif
  2833.   
  2834. --- 1552,1562 ----
  2835.   
  2836.   #ifdef DEBUGGING
  2837.       if (CurrentDir == NULL)  {
  2838. !          Debugmsg("CurrentDir=NULL\n");
  2839.       }
  2840.       else
  2841.            if (GDgetNumitems(CurrentDir) <=0) {
  2842. !           Debugmsg("GDgetNumitems<=0\n");
  2843.            }
  2844.   #endif
  2845.   
  2846. ***************
  2847. *** 1469,1475 ****
  2848.          */
  2849.   
  2850.         while (optind < argc && CurrentDir == NULL) {
  2851. !            Debug("Trying alternate site\n",0);
  2852.              GSsetHost(RootGophers[0], argv[optind]);
  2853.              optind++;
  2854.              GSsetPort(RootGophers[0], atoi(argv[optind]));
  2855. --- 1570,1576 ----
  2856.          */
  2857.   
  2858.         while (optind < argc && CurrentDir == NULL) {
  2859. !            Debugmsg("Trying alternate site\n");
  2860.              GSsetHost(RootGophers[0], argv[optind]);
  2861.              optind++;
  2862.              GSsetPort(RootGophers[0], atoi(argv[optind]));
  2863. ***************
  2864. *** 1481,1496 ****
  2865.        if (CurrentDir == NULL || GDgetNumitems(CurrentDir) <= 0) {
  2866.   #ifdef DEBUGGING
  2867.       if (CurrentDir == NULL)  {
  2868. !          Debug("B: CurrentDir=NULL\n",0);
  2869.       }
  2870.       else if (GDgetNumitems(CurrentDir) <=0) {
  2871. !          Debug("B: GDgetNumitems<=0\n",0);
  2872.       }
  2873.   #endif    
  2874.   
  2875.       CURexit(CursesScreen);
  2876.       fprintf(stderr,
  2877. !         "%s: Nothing received for main menu, can't continue\n", argv[0]);
  2878.       CleanupandExit(1);
  2879.      }
  2880.   
  2881. --- 1582,1598 ----
  2882.        if (CurrentDir == NULL || GDgetNumitems(CurrentDir) <= 0) {
  2883.   #ifdef DEBUGGING
  2884.       if (CurrentDir == NULL)  {
  2885. !          Debugmsg("B: CurrentDir=NULL\n");
  2886.       }
  2887.       else if (GDgetNumitems(CurrentDir) <=0) {
  2888. !          Debugmsg("B: GDgetNumitems<=0\n");
  2889.       }
  2890.   #endif    
  2891.   
  2892.       CURexit(CursesScreen);
  2893.       fprintf(stderr,
  2894. !         Gtxt("%s: Nothing received for main menu, can't continue\n",188)
  2895. !         , argv[0]);
  2896.       CleanupandExit(1);
  2897.      }
  2898.   
  2899. ***************
  2900. *** 1555,1561 ****
  2901.   
  2902.         case 's':  /*** Save a file directly ***/
  2903.              if (SecureMode || NoShellMode) {
  2904. !             CursesErrorMsg("Sorry, can't save files in securemode");
  2905.               break;
  2906.              }
  2907.              Save_file(GDgetEntry(CurrentDir,GDgetCurrentItem(CurrentDir)-1), NULL, NULL);
  2908. --- 1657,1663 ----
  2909.   
  2910.         case 's':  /*** Save a file directly ***/
  2911.              if (SecureMode || NoShellMode) {
  2912. !             CursesErrorMsg(Gtxt("Sorry, can't save files with this account",152));
  2913.               break;
  2914.              }
  2915.              Save_file(GDgetEntry(CurrentDir,GDgetCurrentItem(CurrentDir)-1), NULL, NULL);
  2916. ***************
  2917. *** 1563,1569 ****
  2918.              
  2919.             case 'S':   /*** Save list of menu items (objects) to a file ***/
  2920.              if (SecureMode || NoShellMode) {
  2921. !             CursesErrorMsg("Sorry, can't save files in securemode");
  2922.               break;
  2923.              }
  2924.              Save_list(CurrentDir);
  2925. --- 1665,1671 ----
  2926.              
  2927.             case 'S':   /*** Save list of menu items (objects) to a file ***/
  2928.              if (SecureMode || NoShellMode) {
  2929. !             CursesErrorMsg(Gtxt("Sorry, can't save files with this account",152));
  2930.               break;
  2931.              }
  2932.              Save_list(CurrentDir);
  2933. ***************
  2934. *** 1581,1593 ****
  2935.              int i;
  2936.   
  2937.              if (SecureMode) {
  2938. !             CursesErrorMsg("Sorry, you're not allowed to do this");
  2939.               break;
  2940.              }
  2941.   
  2942. !            prompts[0]="Hostname";
  2943. !            prompts[1]="Port";
  2944. !            prompts[2]="Selector (Optional)";
  2945.              prompts[3]=NULL;
  2946.              
  2947.              for (i=0; i<3; i++) {
  2948. --- 1683,1695 ----
  2949.              int i;
  2950.   
  2951.              if (SecureMode) {
  2952. !             CursesErrorMsg(Gtxt("Sorry, you're not allowed to do this",164));
  2953.               break;
  2954.              }
  2955.   
  2956. !            prompts[0]=Gtxt("Hostname",99);
  2957. !            prompts[1]=Gtxt("Port",118);
  2958. !            prompts[2]=Gtxt("Selector (Optional)",144);
  2959.              prompts[3]=NULL;
  2960.              
  2961.              for (i=0; i<3; i++) {
  2962. ***************
  2963. *** 1598,1605 ****
  2964.               
  2965.              responses[3] = NULL;
  2966.              
  2967. !            if ((CURRequest(CursesScreen, "Connect to a new Gopher Server",
  2968. !               prompts, responses) != -1) && *responses[0]!='\0') {
  2969.               
  2970.               GSsetType(tempgs, A_DIRECTORY);
  2971.               GSsetTitle(tempgs, responses[0]);
  2972. --- 1700,1709 ----
  2973.               
  2974.              responses[3] = NULL;
  2975.              
  2976. !            if ((CURRequest(CursesScreen, 
  2977. !                    Gtxt("Connect to a new Gopher Server",75),
  2978. !                    prompts, responses) != -1) 
  2979. !            && *responses[0]!='\0') {
  2980.               
  2981.               GSsetType(tempgs, A_DIRECTORY);
  2982.               GSsetTitle(tempgs, responses[0]);
  2983. ***************
  2984. *** 1625,1636 ****
  2985.              int i;
  2986.   
  2987.              if (SecureMode) {
  2988. !             CursesErrorMsg("Sorry, you're not allowed to do this");
  2989.               break;
  2990.              }
  2991.   
  2992. !            prompts[0]="anonymous FTP Host";
  2993. !            prompts[1]="Selector (Optional)";
  2994.              prompts[2]=NULL;
  2995.              
  2996.              for (i=0; i<2; i++) {
  2997. --- 1729,1740 ----
  2998.              int i;
  2999.   
  3000.              if (SecureMode) {
  3001. !             CursesErrorMsg(Gtxt("Sorry, you're not allowed to do this",164));
  3002.               break;
  3003.              }
  3004.   
  3005. !            prompts[0]=Gtxt("anonymous FTP Host",187);
  3006. !            prompts[1]=Gtxt("Selector (Optional)",144);
  3007.              prompts[2]=NULL;
  3008.              
  3009.              for (i=0; i<2; i++) {
  3010. ***************
  3011. *** 1641,1647 ****
  3012.              responses[2] = NULL;
  3013.              
  3014.              if ((CURRequest(CursesScreen,
  3015. !            "Connect to an anonymous FTP Server via the Gopher gateway",
  3016.                  prompts, responses) == -1) || *responses[0] == '\0')
  3017.               break;
  3018.   
  3019. --- 1745,1751 ----
  3020.              responses[2] = NULL;
  3021.              
  3022.              if ((CURRequest(CursesScreen,
  3023. !            Gtxt("Connect to an anonymous FTP Server via the Gopher gateway",76),
  3024.                  prompts, responses) == -1) || *responses[0] == '\0')
  3025.               break;
  3026.   
  3027. ***************
  3028. *** 1669,1675 ****
  3029.              GopherObj *tempgs;
  3030.   
  3031.              if (SecureMode) {
  3032. !             CursesErrorMsg("Sorry, you're not allowed to do this");
  3033.               break;
  3034.              }
  3035.   
  3036. --- 1773,1779 ----
  3037.              GopherObj *tempgs;
  3038.   
  3039.              if (SecureMode) {
  3040. !             CursesErrorMsg(Gtxt("Sorry, you're not allowed to do this",164));
  3041.               break;
  3042.              }
  3043.   
  3044. ***************
  3045. *** 1691,1697 ****
  3046.                 GDgetCurrentItem(CurrentDir)-1));
  3047.   
  3048.              GSsetType(tempgs, A_DIRECTORY);
  3049. !            GSsetTitle(tempgs, "Root menu: ");
  3050.              STRcat(tempgs->Title, GSgetHost(tempgs));
  3051.              GSsetPath(tempgs, NULL);
  3052.   
  3053. --- 1795,1801 ----
  3054.                 GDgetCurrentItem(CurrentDir)-1));
  3055.   
  3056.              GSsetType(tempgs, A_DIRECTORY);
  3057. !            GSsetTitle(tempgs, Gtxt("Root menu: ",135));
  3058.              STRcat(tempgs->Title, GSgetHost(tempgs));
  3059.              GSsetPath(tempgs, NULL);
  3060.   
  3061. ***************
  3062. *** 1705,1711 ****
  3063.              GopherObj *tempgs;
  3064.   
  3065.              if (SecureMode) {
  3066. !             CursesErrorMsg("Sorry, you're not allowed to do this");
  3067.               break;
  3068.              }
  3069.   
  3070. --- 1809,1815 ----
  3071.              GopherObj *tempgs;
  3072.   
  3073.              if (SecureMode) {
  3074. !             CursesErrorMsg(Gtxt("Sorry, you're not allowed to do this",164));
  3075.               break;
  3076.              }
  3077.   
  3078. ***************
  3079. *** 1720,1726 ****
  3080.                GDgetCurrentItem(OldDirs[iLevel-1])-1));
  3081.   
  3082.              GSsetType(tempgs, A_DIRECTORY);
  3083. !            GSsetTitle(tempgs, "Root menu: ");
  3084.              STRcat(tempgs->Title, GSgetHost(tempgs));
  3085.              GSsetPath(tempgs, NULL);
  3086.   
  3087. --- 1824,1830 ----
  3088.                GDgetCurrentItem(OldDirs[iLevel-1])-1));
  3089.   
  3090.              GSsetType(tempgs, A_DIRECTORY);
  3091. !            GSsetTitle(tempgs, Gtxt("Root menu: ",135));
  3092.              STRcat(tempgs->Title, GSgetHost(tempgs));
  3093.              GSsetPath(tempgs, NULL);
  3094.   
  3095. ***************
  3096. *** 1734,1740 ****
  3097.              logrequest("VIEW BOOKMARKS", NULL);
  3098.   
  3099.              if (RCgetBookmarkDir(GlobalRC) == NULL) {
  3100. !             CursesErrorMsg("No bookmarks are defined");
  3101.               break;
  3102.              }
  3103.   
  3104. --- 1838,1844 ----
  3105.              logrequest("VIEW BOOKMARKS", NULL);
  3106.   
  3107.              if (RCgetBookmarkDir(GlobalRC) == NULL) {
  3108. !             CursesErrorMsg(Gtxt("No bookmarks are defined",112));
  3109.               break;
  3110.              }
  3111.   
  3112. ***************
  3113. *** 1760,1766 ****
  3114.              
  3115.              if (RCgetBookmarkDir(GlobalRC) == NULL) {
  3116.                RCsetBookmarkDir(GlobalRC,GDnew(32));
  3117. !             GDsetTitle(RCgetBookmarkDir(GlobalRC), "Bookmarks");
  3118.              }
  3119.   
  3120.              tmpgs = GSnew();
  3121. --- 1864,1870 ----
  3122.              
  3123.              if (RCgetBookmarkDir(GlobalRC) == NULL) {
  3124.                RCsetBookmarkDir(GlobalRC,GDnew(32));
  3125. !             GDsetTitle(RCgetBookmarkDir(GlobalRC), Gtxt("Bookmarks",67));
  3126.              }
  3127.   
  3128.              tmpgs = GSnew();
  3129. ***************
  3130. *** 1768,1774 ****
  3131.              
  3132.              strcpy(newtitle, GSgetTitle(tmpgs));
  3133.              if (CURGetOneOption(CursesScreen, newtitle,
  3134. !                           "Name for this bookmark:", newtitle)==0) {
  3135.               if (*newtitle != '\0') {
  3136.                GSsetTitle(tmpgs, newtitle);
  3137.                GDaddGS(RCgetBookmarkDir(GlobalRC), tmpgs);
  3138. --- 1872,1878 ----
  3139.              
  3140.              strcpy(newtitle, GSgetTitle(tmpgs));
  3141.              if (CURGetOneOption(CursesScreen, newtitle,
  3142. !                       Gtxt("Name for this bookmark:",109), newtitle)==0) {
  3143.               if (*newtitle != '\0') {
  3144.                GSsetTitle(tmpgs, newtitle);
  3145.                GDaddGS(RCgetBookmarkDir(GlobalRC), tmpgs);
  3146. ***************
  3147. *** 1790,1800 ****
  3148.   
  3149.              if (RCgetBookmarkDir(GlobalRC) == NULL) {
  3150.               RCsetBookmarkDir(GlobalRC,GDnew(32));
  3151. !             GDsetTitle(RCgetBookmarkDir(GlobalRC), "Bookmarks");
  3152.              }
  3153.   
  3154.              if (CurrentDir == RCgetBookmarkDir(GlobalRC)) {
  3155. !             CursesErrorMsg("Sorry, can't make a bookmark of bookmarks");
  3156.               break;
  3157.              }
  3158.              
  3159. --- 1894,1904 ----
  3160.   
  3161.              if (RCgetBookmarkDir(GlobalRC) == NULL) {
  3162.               RCsetBookmarkDir(GlobalRC,GDnew(32));
  3163. !             GDsetTitle(RCgetBookmarkDir(GlobalRC), Gtxt("Bookmarks",67));
  3164.              }
  3165.   
  3166.              if (CurrentDir == RCgetBookmarkDir(GlobalRC)) {
  3167. !             CursesErrorMsg(Gtxt("Sorry, can't make a bookmark of bookmarks",151));
  3168.               break;
  3169.              }
  3170.              
  3171. ***************
  3172. *** 1807,1813 ****
  3173.              
  3174.              strcpy(newtitle, GDgetTitle(CurrentDir));
  3175.              if (CURGetOneOption(CursesScreen, newtitle,
  3176. !                           "Name for this bookmark:", newtitle)==0) {
  3177.   
  3178.               if (*newtitle != '\0') {
  3179.                GSsetTitle(tmpgs, newtitle);
  3180. --- 1911,1917 ----
  3181.              
  3182.              strcpy(newtitle, GDgetTitle(CurrentDir));
  3183.              if (CURGetOneOption(CursesScreen, newtitle,
  3184. !                    Gtxt("Name for this bookmark:",109), newtitle)==0) {
  3185.   
  3186.               if (*newtitle != '\0') {
  3187.                GSsetTitle(tmpgs, newtitle);
  3188. ***************
  3189. *** 1847,1858 ****
  3190.               RCsetBookmarkDir(GlobalRC, tempgd);
  3191.   
  3192.           if (tempgd == NULL) {
  3193. !             Debug("Last item - pip up a directory",NULL)
  3194.               tempgd = CurrentDir;
  3195.               if (popgopher(&CurrentDir)==0 && tempgd != CurrentDir)
  3196.                GDdestroy(tempgd);
  3197.               else {
  3198. !              CursesErrorMsg("Sorry, can't delete top level directory.");
  3199.                scline(-1, 1, CurrentDir);
  3200.               }
  3201.               ChangedDefs = TRUE;
  3202. --- 1951,1962 ----
  3203.               RCsetBookmarkDir(GlobalRC, tempgd);
  3204.   
  3205.           if (tempgd == NULL) {
  3206. !             Debugmsg("Last item - pip up a directory")
  3207.               tempgd = CurrentDir;
  3208.               if (popgopher(&CurrentDir)==0 && tempgd != CurrentDir)
  3209.                GDdestroy(tempgd);
  3210.               else {
  3211. !              CursesErrorMsg(Gtxt("Sorry, can't delete top level directory.",149));
  3212.                scline(-1, 1, CurrentDir);
  3213.               }
  3214.               ChangedDefs = TRUE;
  3215. ***************
  3216. *** 1867,1891 ****
  3217.         case '$':
  3218.         case '!':
  3219.              if (SecureMode || NoShellMode) {
  3220. !             CursesErrorMsg("Sorry, can't spawn in securemode");
  3221.               break;
  3222.              }
  3223.              /*** Spawn to shell or DCL ***/
  3224.              CURexit(CursesScreen);
  3225.   #ifdef VMS
  3226. !            printf("Spawning DCL subprocess.  Logout to return to Gopher.\n");
  3227.              fflush(stdout);
  3228.              i = FIOsystem("");
  3229.   #else
  3230. !            printf("Spawning your default shell.  Type 'exit' to return to Gopher.\n\n");
  3231.              fflush(stdout);
  3232. !            FIOsystem(getenv("SHELL"));
  3233.   #endif
  3234.              CURenter(CursesScreen);
  3235.   #ifdef VMS
  3236. !            if (i != SS$_NORMAL)
  3237. !             CursesErrorMsg("Spawn to DCL failed!");
  3238.   #endif
  3239.              break;
  3240.              
  3241. --- 1971,1996 ----
  3242.         case '$':
  3243.         case '!':
  3244.              if (SecureMode || NoShellMode) {
  3245. !             CursesErrorMsg(Gtxt("Sorry, can't spawn in with this account",153));
  3246.               break;
  3247.              }
  3248.              /*** Spawn to shell or DCL ***/
  3249.              CURexit(CursesScreen);
  3250.   #ifdef VMS
  3251. !            printf(Gtxt("Spawning DCL subprocess.  Logout to return to Gopher.\n",169));
  3252.              fflush(stdout);
  3253.              i = FIOsystem("");
  3254.   #else
  3255. !            printf(Gtxt("Spawning your default shell.  Type 'exit' to return to Gopher.\n\n",170));
  3256.              fflush(stdout);
  3257. !            i = FIOsystem(getenv("SHELL"));
  3258.   #endif
  3259.              CURenter(CursesScreen);
  3260. !            if (i < 0)
  3261.   #ifdef VMS
  3262. !             CursesErrorMsg(Gtxt("Spawn to DCL failed!",167));
  3263. ! #else
  3264. !             CursesErrorMsg(Gtxt("Spawn to default shell failed!",168));
  3265.   #endif
  3266.              break;
  3267.              
  3268. ***************
  3269. *** 1933,1939 ****
  3270.              break;
  3271.                 
  3272.         case '=':
  3273. !            describe_gopher("Gopher Item Information", 
  3274.                      GDgetEntry(CurrentDir, GDgetCurrentItem(CurrentDir)-1));
  3275.              break;
  3276.   
  3277. --- 2038,2044 ----
  3278.              break;
  3279.                 
  3280.         case '=':
  3281. !            describe_gopher(Gtxt("Gopher Item Information",93), 
  3282.                      GDgetEntry(CurrentDir, GDgetCurrentItem(CurrentDir)-1));
  3283.              break;
  3284.   
  3285. ***************
  3286. *** 1940,1949 ****
  3287.         case '^':
  3288.         {
  3289.              if (iLevel == 0)
  3290. !             describe_gopher("Gopher Directory Information",
  3291.                       RootGophers[0]);
  3292.              else
  3293. !             describe_gopher("Gopher Directory Information",
  3294.                       GDgetEntry(OldDirs[iLevel-1],
  3295.                              GDgetCurrentItem(OldDirs[iLevel-1])-1));
  3296.              break;
  3297. --- 2045,2054 ----
  3298.         case '^':
  3299.         {
  3300.              if (iLevel == 0)
  3301. !             describe_gopher(Gtxt("Gopher Directory Information",89),
  3302.                       RootGophers[0]);
  3303.              else
  3304. !             describe_gopher(Gtxt("Gopher Directory Information",89),
  3305.                       GDgetEntry(OldDirs[iLevel-1],
  3306.                              GDgetCurrentItem(OldDirs[iLevel-1])-1));
  3307.              break;
  3308. ***************
  3309. *** 1955,1964 ****
  3310.         {
  3311.              /*** Display help file ***/
  3312.              GopherObj *tmpgs;
  3313.              tmpgs = GSnew();
  3314.              GSsetType(tmpgs, A_FILE);
  3315. !            GSsetTitle(tmpgs, "Gopher Help File");
  3316.              GSsetLocalFile(tmpgs, GOPHERHELP);
  3317.              GSsetLocalView(tmpgs, "text/plain");
  3318.              
  3319. --- 2060,2070 ----
  3320.         {
  3321.              /*** Display help file ***/
  3322.              GopherObj *tmpgs;
  3323. !            
  3324.              tmpgs = GSnew();
  3325.              GSsetType(tmpgs, A_FILE);
  3326. !            GSsetTitle(tmpgs, Gtxt("Gopher Help File",92));
  3327. !            
  3328.              GSsetLocalFile(tmpgs, GOPHERHELP);
  3329.              GSsetLocalView(tmpgs, "text/plain");
  3330.              
  3331. ***************
  3332. *** 1976,1982 ****
  3333.              char *prompts[2];
  3334.              char *responses[2];
  3335.   
  3336. !            prompts[0]="Host to query:";
  3337.              prompts[1]=NULL;
  3338.              
  3339.              /*** Offer current gopher host as default ***/
  3340. --- 2082,2088 ----
  3341.              char *prompts[2];
  3342.              char *responses[2];
  3343.   
  3344. !            prompts[0]=Gtxt("Host to query:",98);
  3345.              prompts[1]=NULL;
  3346.              
  3347.              /*** Offer current gopher host as default ***/
  3348. ***************
  3349. *** 1990,2001 ****
  3350.              responses[1] = NULL;
  3351.              
  3352.              if ((CURRequest(CursesScreen,
  3353. !            "Show host's local date and time",
  3354.                  prompts, responses) == -1) || *responses[0] == '\0')
  3355.               break;
  3356.   
  3357.              GSsetType(tempgs, A_FILE);
  3358. !            GSsetTitle(tempgs, "Local Date and Time");
  3359.              GSsetHost(tempgs, responses[0]);
  3360.              GSsetPort(tempgs, 13);
  3361.              GSsetPath(tempgs, NULL);
  3362. --- 2096,2107 ----
  3363.              responses[1] = NULL;
  3364.              
  3365.              if ((CURRequest(CursesScreen,
  3366. !                    Gtxt("Show host's local date and time",145),
  3367.                  prompts, responses) == -1) || *responses[0] == '\0')
  3368.               break;
  3369.   
  3370.              GSsetType(tempgs, A_FILE);
  3371. !            GSsetTitle(tempgs, Gtxt("Local Date and Time",104));
  3372.              GSsetHost(tempgs, responses[0]);
  3373.              GSsetPort(tempgs, 13);
  3374.              GSsetPath(tempgs, NULL);
  3375. ***************
  3376. *** 2026,2032 ****
  3377.   Load_Index(ZeGopher)
  3378.     GopherObj *ZeGopher;
  3379.   {
  3380. !      Draw_Status("Searching Text...");
  3381.        refresh();
  3382.   
  3383.        return(Load_Index_or_Dir(ZeGopher, Searchstring));
  3384. --- 2132,2138 ----
  3385.   Load_Index(ZeGopher)
  3386.     GopherObj *ZeGopher;
  3387.   {
  3388. !      Draw_Status(Gtxt("Searching...",143));
  3389.        refresh();
  3390.   
  3391.        return(Load_Index_or_Dir(ZeGopher, Searchstring));
  3392. ***************
  3393. *** 2056,2062 ****
  3394.        NewDir = GDnew(32);
  3395.   
  3396.   
  3397. !      Draw_Status("Connecting..."); refresh();
  3398.   
  3399.        if ((sockfd = GSconnect(ZeGopher)) <0) {
  3400.         check_sock(sockfd, GSgetHost(ZeGopher), GSgetPort(ZeGopher));
  3401. --- 2162,2168 ----
  3402.        NewDir = GDnew(32);
  3403.   
  3404.   
  3405. !      Draw_Status(Gtxt("Connecting...",77)); refresh();
  3406.   
  3407.        if ((sockfd = GSconnect(ZeGopher)) <0) {
  3408.         check_sock(sockfd, GSgetHost(ZeGopher), GSgetPort(ZeGopher));
  3409. ***************
  3410. *** 2064,2074 ****
  3411.        }
  3412.        else {
  3413.         if (GSgetType(ZeGopher) == A_DIRECTORY) {
  3414. !            Draw_Status("Retrieving Directory..."); refresh();
  3415.              GStransmit(ZeGopher, sockfd, NULL, "$", NULL);
  3416.         }
  3417.         else if (GSgetType(ZeGopher) == A_INDEX) {
  3418. !            Draw_Status("Searching..."); refresh();
  3419.              GStransmit(ZeGopher, sockfd, Searchmungestr, "$", NULL);
  3420.         }
  3421.   
  3422. --- 2170,2180 ----
  3423.        }
  3424.        else {
  3425.         if (GSgetType(ZeGopher) == A_DIRECTORY) {
  3426. !            Draw_Status(Gtxt("Retrieving Directory...",133)); refresh();
  3427.              GStransmit(ZeGopher, sockfd, NULL, "$", NULL);
  3428.         }
  3429.         else if (GSgetType(ZeGopher) == A_INDEX) {
  3430. !            Draw_Status(Gtxt("Searching...",143)); refresh();
  3431.              GStransmit(ZeGopher, sockfd, Searchmungestr, "$", NULL);
  3432.         }
  3433.   
  3434. ***************
  3435. *** 2149,2155 ****
  3436.         break;
  3437.   
  3438.        case A_FILE:
  3439. !       Draw_Status("Receiving Information...");
  3440.         refresh();
  3441.         showfile(ZeGopher);
  3442.         break;
  3443. --- 2255,2261 ----
  3444.         break;
  3445.   
  3446.        case A_FILE:
  3447. !       Draw_Status(Gtxt("Receiving Information...",128));
  3448.         refresh();
  3449.         showfile(ZeGopher);
  3450.         break;
  3451. ***************
  3452. *** 2159,2168 ****
  3453.             if (!RCdisplayCommand(GlobalRC, "Image", "", ImageCmd) ||
  3454.             !strncasecmp(ImageCmd, "- none -", 8) ||
  3455.             ImageCmd == NULL || ImageCmd == '\0') {
  3456. !            CursesErrorMsg("Sorry, this machine doesn't support images");
  3457.              break;
  3458.         }
  3459. !       Draw_Status("Receiving Image...");
  3460.         refresh();
  3461.         if (RemoteUser)
  3462.           Download_file(ZeGopher);
  3463. --- 2265,2274 ----
  3464.             if (!RCdisplayCommand(GlobalRC, "Image", "", ImageCmd) ||
  3465.             !strncasecmp(ImageCmd, "- none -", 8) ||
  3466.             ImageCmd == NULL || ImageCmd == '\0') {
  3467. !            CursesErrorMsg(Gtxt("Sorry, this machine doesn't support images",158));
  3468.              break;
  3469.         }
  3470. !       Draw_Status(Gtxt("Receiving Image...",132));
  3471.         refresh();
  3472.         if (RemoteUser)
  3473.           Download_file(ZeGopher);
  3474. ***************
  3475. *** 2172,2183 ****
  3476.   
  3477.        case A_MIME:
  3478.         if (!SecureMode) {
  3479. !            Draw_Status("Receiving MIME File...");
  3480.              refresh();
  3481.              showfile(ZeGopher);
  3482.         }
  3483.         else
  3484. !            CursesErrorMsg("Sorry Cannot display this file anonymously");
  3485.         break;
  3486.   
  3487.        case A_MACHEX:
  3488. --- 2278,2289 ----
  3489.   
  3490.        case A_MIME:
  3491.         if (!SecureMode) {
  3492. !            Draw_Status(Gtxt("Receiving MIME File...",129));
  3493.              refresh();
  3494.              showfile(ZeGopher);
  3495.         }
  3496.         else
  3497. !            CursesErrorMsg(Gtxt("Sorry, cannot display this file",148));
  3498.         break;
  3499.   
  3500.        case A_MACHEX:
  3501. ***************
  3502. *** 2184,2190 ****
  3503.        case A_PCBIN:
  3504.        case A_UNIXBIN:
  3505.       if (RemoteUser) {
  3506. !         Draw_Status("Receiving File...");
  3507.           refresh();
  3508.           Download_file(ZeGopher);
  3509.       }
  3510. --- 2290,2296 ----
  3511.        case A_PCBIN:
  3512.        case A_UNIXBIN:
  3513.       if (RemoteUser) {
  3514. !         Draw_Status(Gtxt("Receiving File...",126));
  3515.           refresh();
  3516.           Download_file(ZeGopher);
  3517.       }
  3518. ***************
  3519. *** 2192,2202 ****
  3520.         if (!SecureMode || NoShellMode)
  3521.              Save_file(ZeGopher, NULL, NULL);
  3522.         else
  3523. !            CursesErrorMsg("Sorry, you are not allowed to save files");
  3524.         break;
  3525.         
  3526.        case A_DIRECTORY:
  3527. !       Draw_Status("Receiving Directory...");
  3528.         refresh();
  3529.         failed = Load_Dir(ZeGopher);
  3530.         break;
  3531. --- 2298,2308 ----
  3532.         if (!SecureMode || NoShellMode)
  3533.              Save_file(ZeGopher, NULL, NULL);
  3534.         else
  3535. !            CursesErrorMsg(Gtxt("Sorry, you are not allowed to save files",162));
  3536.         break;
  3537.         
  3538.        case A_DIRECTORY:
  3539. !       Draw_Status(Gtxt("Receiving Directory...",125));
  3540.         refresh();
  3541.         failed = Load_Dir(ZeGopher);
  3542.         break;
  3543. ***************
  3544. *** 2203,2209 ****
  3545.               
  3546.        case A_TELNET:
  3547.        case A_TN3270:
  3548. !       do_tel_3270(ZeGopher);
  3549.         break;
  3550.   
  3551.        case A_INDEX:
  3552. --- 2309,2334 ----
  3553.               
  3554.        case A_TELNET:
  3555.        case A_TN3270:
  3556. !           {
  3557. !           char type, buf[512];
  3558. !           if ((type=GSgetType(ZeGopher)) == A_TELNET &&
  3559. !               (!RCdisplayCommand(GlobalRC, "Terminal/telnet", "", buf) ||
  3560. !            !strncasecmp(buf, "- none -", 8) ||
  3561. !             buf == NULL || buf[0] == '\0')) {
  3562. !               CursesErrorMsg(Gtxt("Sorry, telnet is not available.",157));
  3563. !           break;
  3564. !           }
  3565. !           else if (type == A_TN3270 &&
  3566. !               (!RCdisplayCommand(GlobalRC, "Terminal/tn3270", "", buf) ||
  3567. !            !strncasecmp(buf, "- none -", 8) ||
  3568. !             buf == NULL || buf[0] == '\0')) {
  3569. !               CursesErrorMsg(Gtxt("Sorry, tn3270 is not available.",160));
  3570. !           break;
  3571. !           }
  3572. !           else
  3573. !               do_tel_3270(ZeGopher);
  3574. !       }
  3575.         break;
  3576.   
  3577.        case A_INDEX:
  3578. ***************
  3579. *** 2214,2220 ****
  3580.         } else
  3581.              Searchstring = do_index(ZeGopher);
  3582.   
  3583. !       Draw_Status("Searching Text...");
  3584.         if (Searchstring != NULL)
  3585.              failed=Load_Index(ZeGopher);
  3586.         else
  3587. --- 2339,2345 ----
  3588.         } else
  3589.              Searchstring = do_index(ZeGopher);
  3590.   
  3591. !       Draw_Status(Gtxt("Searching Text...",142));
  3592.         if (Searchstring != NULL)
  3593.              failed=Load_Index(ZeGopher);
  3594.         else
  3595. ***************
  3596. *** 2226,2232 ****
  3597.         break;
  3598.   
  3599.        case A_SOUND:
  3600. !       Draw_Status("Receiving Sound...");
  3601.         refresh();
  3602.         do_sound(ZeGopher);
  3603.         break;
  3604. --- 2351,2357 ----
  3605.         break;
  3606.   
  3607.        case A_SOUND:
  3608. !       Draw_Status(Gtxt("Receiving Sound...",131));
  3609.         refresh();
  3610.         do_sound(ZeGopher);
  3611.         break;
  3612. ***************
  3613. *** 2235,2244 ****
  3614.         if (!RCdisplayCommand(GlobalRC, "video", "", MovieCmd) ||
  3615.             !strncasecmp(MovieCmd, "- none -", 8) ||
  3616.             MovieCmd == NULL || MovieCmd == '\0') {
  3617. !         CursesErrorMsg("Sorry, this machine doesn't support movies");
  3618.           break;
  3619.         }
  3620. !       Draw_Status("Receiving Movie...");
  3621.         refresh();
  3622.         if (RemoteUser)
  3623.               Download_file(ZeGopher);
  3624. --- 2360,2369 ----
  3625.         if (!RCdisplayCommand(GlobalRC, "video", "", MovieCmd) ||
  3626.             !strncasecmp(MovieCmd, "- none -", 8) ||
  3627.             MovieCmd == NULL || MovieCmd == '\0') {
  3628. !         CursesErrorMsg(Gtxt("Sorry, this machine doesn't support movies",165));
  3629.           break;
  3630.         }
  3631. !       Draw_Status(Gtxt("Receiving Movie...",130));
  3632.         refresh();
  3633.         if (RemoteUser)
  3634.               Download_file(ZeGopher);
  3635. ***************
  3636. *** 2247,2253 ****
  3637.         break;
  3638.   
  3639.        case A_HTML:
  3640. !       Draw_Status("Receiving HTML page...");
  3641.         refresh();
  3642.         do_html(ZeGopher);
  3643.         break;
  3644. --- 2372,2378 ----
  3645.         break;
  3646.   
  3647.        case A_HTML:
  3648. !       Draw_Status(Gtxt("Receiving HTML page...",127));
  3649.         refresh();
  3650.         do_html(ZeGopher);
  3651.         break;
  3652. ***************
  3653. *** 2279,2285 ****
  3654.   
  3655.        infogs = GSnew();
  3656.        GSsetType(infogs, A_FILE);
  3657. !      GSsetTitle(infogs, "Link Info");
  3658.   
  3659.        GSgetginfo(ZeGopher, TRUE);
  3660.   
  3661. --- 2404,2410 ----
  3662.   
  3663.        infogs = GSnew();
  3664.        GSsetType(infogs, A_FILE);
  3665. !      GSsetTitle(infogs, Gtxt("Link Info",103));
  3666.   
  3667.        GSgetginfo(ZeGopher, TRUE);
  3668.   
  3669. ***************
  3670. *** 2292,2298 ****
  3671.        GSsetLocalView(infogs, "text/plain");
  3672.        if ((tmpfile = fopen(tmpfilename, "w")) == NULL) {
  3673.         CURexit(CursesScreen);
  3674. !       fprintf(stderr, "Couldn't make a tmp file!\n"), 
  3675.         CleanupandExit(-1);
  3676.        }
  3677.   
  3678. --- 2417,2423 ----
  3679.        GSsetLocalView(infogs, "text/plain");
  3680.        if ((tmpfile = fopen(tmpfilename, "w")) == NULL) {
  3681.         CURexit(CursesScreen);
  3682. !       fprintf(stderr, Gtxt("Couldn't make a tmp file!\n",83)), 
  3683.         CleanupandExit(-1);
  3684.        }
  3685.   
  3686. ***************
  3687. *** 2324,2331 ****
  3688.              }
  3689.         }
  3690.   
  3691. !       fprintf(tmpfile, "Size       Language      Document Type\n");
  3692. !       fprintf(tmpfile, "---------- ------------- ----------------------------\n");
  3693.         
  3694.         for (views=0; views< GSgetNumViews(ZeGopher); views++) {
  3695.              char *cp; 
  3696. --- 2449,2456 ----
  3697.              }
  3698.         }
  3699.   
  3700. !       fprintf(tmpfile, Gtxt("Size       Language      Document Type\n",146));
  3701. !       fprintf(tmpfile, Gtxt("---------- ------------- ----------------------------\n",147));
  3702.         
  3703.         for (views=0; views< GSgetNumViews(ZeGopher); views++) {
  3704.              char *cp; 
  3705. ***************
  3706. *** 2352,2358 ****
  3707.              fprintf(tmpfile, "%s\n", cp);
  3708.         }
  3709.   
  3710. !       fprintf(tmpfile, "\n\nServer Information\n");
  3711.         GSdestroy(server);
  3712.        }
  3713.   
  3714. --- 2477,2483 ----
  3715.              fprintf(tmpfile, "%s\n", cp);
  3716.         }
  3717.   
  3718. !       fprintf(tmpfile, Gtxt("\n\nServer Information\n",186));
  3719.         GSdestroy(server);
  3720.        }
  3721.   
  3722. diff -c gopher+/gopher/gopher.h:3.2 gopher+/gopher/gopher.h:3.4
  3723. *** gopher+/gopher/gopher.h:3.2    Fri May 27 00:08:48 1994
  3724. --- gopher+/gopher/gopher.h    Fri May 27 00:08:48 1994
  3725. ***************
  3726. *** 1,7 ****
  3727.   /********************************************************************
  3728.    * $Author: lindner $
  3729. !  * $Revision: 3.2 $
  3730. !  * $Date: 1993/09/29 20:52:08 $
  3731.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/gopher.h,v $
  3732.    * $State: Exp $
  3733.    *
  3734. --- 1,7 ----
  3735.   /********************************************************************
  3736.    * $Author: lindner $
  3737. !  * $Revision: 3.4 $
  3738. !  * $Date: 1994/05/02 07:40:17 $
  3739.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/gopher.h,v $
  3740.    * $State: Exp $
  3741.    *
  3742. ***************
  3743. *** 15,20 ****
  3744. --- 15,26 ----
  3745.    *********************************************************************
  3746.    * Revision History:
  3747.    * $Log: gopher.h,v $
  3748. +  * Revision 3.4  1994/05/02  07:40:17  lindner
  3749. +  * Mods to use setlocale()
  3750. +  *
  3751. +  * Revision 3.3  1994/04/25  03:37:40  lindner
  3752. +  * Modifications for Debug() and mismatched NULL arguments, added Debugmsg
  3753. +  *
  3754.    * Revision 3.2  1993/09/29  20:52:08  lindner
  3755.    * remove dead code
  3756.    *
  3757. ***************
  3758. *** 34,40 ****
  3759.   
  3760.   
  3761.   /*** All our mongo include files ***/
  3762.   #include <stdio.h>
  3763.   
  3764.   /*** Set global configuration options early ***/
  3765. --- 40,45 ----
  3766. ***************
  3767. *** 49,54 ****
  3768. --- 54,60 ----
  3769.   #include <netdb.h>
  3770.   #include <signal.h>
  3771.   #include "String.h"
  3772. + #include "Locale.h"
  3773.   #include <ctype.h>
  3774.   #include <errno.h>
  3775.   
  3776. diff -c gopher+/gopher/gopherrc.c:3.27 gopher+/gopher/gopherrc.c:3.30
  3777. *** gopher+/gopher/gopherrc.c:3.27    Fri May 27 00:08:48 1994
  3778. --- gopher+/gopher/gopherrc.c    Fri May 27 00:08:48 1994
  3779. ***************
  3780. *** 1,7 ****
  3781.   /********************************************************************
  3782.    * $Author: lindner $
  3783. !  * $Revision: 3.27 $
  3784. !  * $Date: 1994/04/19 14:31:36 $
  3785.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/gopherrc.c,v $
  3786.    * $State: Exp $
  3787.    *
  3788. --- 1,7 ----
  3789.   /********************************************************************
  3790.    * $Author: lindner $
  3791. !  * $Revision: 3.30 $
  3792. !  * $Date: 1994/05/17 05:47:59 $
  3793.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/gopherrc.c,v $
  3794.    * $State: Exp $
  3795.    *
  3796. ***************
  3797. *** 15,20 ****
  3798. --- 15,29 ----
  3799.    *********************************************************************
  3800.    * Revision History:
  3801.    * $Log: gopherrc.c,v $
  3802. +  * Revision 3.30  1994/05/17  05:47:59  lindner
  3803. +  * Massive internationalization change
  3804. +  *
  3805. +  * Revision 3.29  1994/05/14  04:13:42  lindner
  3806. +  * Internationalization...
  3807. +  *
  3808. +  * Revision 3.28  1994/05/06  02:28:53  lindner
  3809. +  * Allow getenv code to be used on Unix systems
  3810. +  *
  3811.    * Revision 3.27  1994/04/19  14:31:36  lindner
  3812.    * Fix for the problem of vanishing bookmarks
  3813.    *
  3814. ***************
  3815. *** 147,152 ****
  3816. --- 156,162 ----
  3817.   #include "fileio.h"
  3818.   
  3819.   #include <stdio.h>
  3820. + #include "Locale.h"
  3821.   
  3822.   #ifdef VMS
  3823.   #include <unixlib.h>
  3824. ***************
  3825. *** 468,474 ****
  3826.              
  3827.              GDfromLink(RCgetBookmarkDir(rc), rcfio, "localhost", 70, "","localhost");
  3828.              
  3829. !            GDsetTitle(RCgetBookmarkDir(rc), "Bookmarks");
  3830.         } else if (strncasecmp(inputline, "searchbolding: ",15)==0) {
  3831.              if (strcasecmp(inputline+15, "yes")==0)
  3832.               RCsetSearchBolding(rc, TRUE);
  3833. --- 478,484 ----
  3834.              
  3835.              GDfromLink(RCgetBookmarkDir(rc), rcfio, "localhost", 70, "","localhost");
  3836.              
  3837. !            GDsetTitle(RCgetBookmarkDir(rc), Gtxt("Bookmarks",67));
  3838.         } else if (strncasecmp(inputline, "searchbolding: ",15)==0) {
  3839.              if (strcasecmp(inputline+15, "yes")==0)
  3840.               RCsetSearchBolding(rc, TRUE);
  3841. ***************
  3842. *** 503,509 ****
  3843.   RCfromENV(rc)
  3844.     RCobj *rc;
  3845.   {
  3846. - #ifdef VMS
  3847.        char tmpstr[512], Printer[128], PrinterP[128], Pager[128], PagerP[128];
  3848.        boolean PrinterFlag = FALSE;
  3849.   
  3850. --- 513,518 ----
  3851. ***************
  3852. *** 577,585 ****
  3853.             sprintf(tmpstr, "text/html,%s,", getenv("GOPHER_HTML"));
  3854.             RCMAfromLine(rc->commands, tmpstr);
  3855.        }
  3856. - #else
  3857. -      ;
  3858. - #endif
  3859.   }
  3860.   
  3861.   
  3862. --- 586,591 ----
  3863. ***************
  3864. *** 608,621 ****
  3865.                   about a file they cant get at! */
  3866.              rcfile = rcopen(O_CREAT);
  3867.              FIOclose(rcfile);
  3868. !            printf("Welcome to the wonderful world of Gopher!\n\n");
  3869. !            printf("Gopher has limitations on its use and comes without\n");
  3870. !            printf("a warranty.  Please refer to the file 'Copyright' included\n");
  3871. !            printf("in the distribution.\n\n");
  3872. !            printf("Internet Gopher Information Client %s.%s patch%d\n",
  3873.                 GOPHER_MAJOR_VERSION, GOPHER_MINOR_VERSION, PATCHLEVEL);
  3874. !            printf("Copyright 1991,92,93,94 by the Regents of the University of Minnesota\n\n");
  3875. !            printf("Press RETURN to continue\n");
  3876.              while ('\n' != getchar())
  3877.               ;
  3878.         } /*NoShellMode*/
  3879. --- 614,627 ----
  3880.                   about a file they cant get at! */
  3881.              rcfile = rcopen(O_CREAT);
  3882.              FIOclose(rcfile);
  3883. !            printf(Gtxt("Welcome to the wonderful world of Gopher!\n\n",1));
  3884. !            printf(Gtxt("Gopher has limitations on its use and comes without\n",2));
  3885. !            printf(Gtxt("a warranty.  Please refer to the file 'Copyright' included\n",3));
  3886. !            printf(Gtxt("in the distribution.\n\n",4));
  3887. !            printf(Gtxt("Internet Gopher Information Client %s.%s patch%d\n",6),
  3888.                 GOPHER_MAJOR_VERSION, GOPHER_MINOR_VERSION, PATCHLEVEL);
  3889. !            printf(Gtxt("Copyright 1991,92,93,94 by the Regents of the University of Minnesota\n\n",5));
  3890. !            printf(Gtxt("Press RETURN to continue\n",7));
  3891.              while ('\n' != getchar())
  3892.               ;
  3893.         } /*NoShellMode*/
  3894. ***************
  3895. *** 726,734 ****
  3896.   
  3897.        if (rcfile ==NULL) {
  3898.   #ifdef VMS
  3899. !           fprintf(stderr,"Can't write gopher configuration file!!");
  3900.   #else
  3901. !       CursesErrorMsg("Can't write gopher configuration file!!");
  3902.   #endif
  3903.         return;    
  3904.        }
  3905. --- 732,740 ----
  3906.   
  3907.        if (rcfile ==NULL) {
  3908.   #ifdef VMS
  3909. !           fprintf(stderr,Gtxt("Can't write gopher configuration file!!",8));
  3910.   #else
  3911. !       CursesErrorMsg(Gtxt("Can't write gopher configuration file!!",8));
  3912.   #endif
  3913.         return;    
  3914.        }
  3915. diff -c gopher+/gopher/html2.c:3.12 gopher+/gopher/html2.c:3.15
  3916. *** gopher+/gopher/html2.c:3.12    Fri May 27 00:08:49 1994
  3917. --- gopher+/gopher/html2.c    Fri May 27 00:08:49 1994
  3918. ***************
  3919. *** 1,7 ****
  3920.   /********************************************************************
  3921.    * $Author: lindner $
  3922. !  * $Revision: 3.12 $
  3923. !  * $Date: 1994/04/14 02:56:55 $
  3924.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/html2.c,v $
  3925.    * $State: Exp $
  3926.    *
  3927. --- 1,7 ----
  3928.   /********************************************************************
  3929.    * $Author: lindner $
  3930. !  * $Revision: 3.15 $
  3931. !  * $Date: 1994/05/17 05:48:00 $
  3932.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/html2.c,v $
  3933.    * $State: Exp $
  3934.    *
  3935. ***************
  3936. *** 15,20 ****
  3937. --- 15,29 ----
  3938.    *********************************************************************
  3939.    * Revision History:
  3940.    * $Log: html2.c,v $
  3941. +  * Revision 3.15  1994/05/17  05:48:00  lindner
  3942. +  * Massive internationalization change
  3943. +  *
  3944. +  * Revision 3.14  1994/05/14  04:13:43  lindner
  3945. +  * Internationalization...
  3946. +  *
  3947. +  * Revision 3.13  1994/04/25  20:47:34  lindner
  3948. +  * Remove html stuff from menu
  3949. +  *
  3950.    * Revision 3.12  1994/04/14  02:56:55  lindner
  3951.    * Replace yet another system call
  3952.    *
  3953. ***************
  3954. *** 66,424 ****
  3955.   
  3956.   #include "gopher.h"
  3957.   #include "Malloc.h"
  3958. - #include "HTML.h"
  3959.   #include "Debug.h"
  3960.   
  3961. - Ourpager(){ ;}
  3962.   char *process_tag();
  3963.   static char *parastorage = NULL;
  3964.   static int  parasize=0;
  3965.   static int  paraptr=0;
  3966.   
  3967. - static int  HeadingLevel=1;
  3968. - static int  Linknum =0;
  3969. - /*** State information for the HTML parser, ick  ***/
  3970. - boolean     inANCHOR  = FALSE;
  3971. - boolean     inXMP     = FALSE;
  3972. - boolean     inLISTING = FALSE;
  3973. - boolean     inADDRESS = FALSE;
  3974. - boolean     inDL      = FALSE;
  3975. - boolean     inDT      = FALSE;
  3976. - boolean     inMENU    = FALSE;
  3977. - boolean     inPLAINTXT= FALSE;
  3978. - boolean     inLIST    = FALSE;
  3979. - boolean     inPAREN   = FALSE;
  3980. - boolean     inH1      = FALSE;
  3981. - boolean     inHeading = FALSE;
  3982. - boolean     isIndex   = FALSE;
  3983. - /*** Different Types of justification ***/
  3984. - #define JUSTIFY_LEFT 1
  3985. - #define JUSTIFY_CENTER 2
  3986. - #define JUSTIFY_RIGHT 3
  3987. - /*** Different types of text styles ***/
  3988. - #define STYLE_NL 1 /** Normal **/
  3989. - #define STYLE_UL 2 /** Underline **/
  3990. - /** Link delimiters **/
  3991. - #define START_LINK '\177'
  3992. - #define END_LINK   '\013'
  3993. - int CurrentLine = 0;
  3994. - int CurrentLinepos = 0;
  3995. - extern int COLS;
  3996. - HTMLObj *CurrentHTML;
  3997. - int anchoroffset = -1;
  3998. - int HTMLfilenum =0;
  3999.   /*
  4000. -  * Add a character to the paragraph buffer
  4001. -  */
  4002. - static buffer_ch(ch)
  4003. -   char ch;
  4004. - {
  4005. -      /** check for overflow **/
  4006. -      if (inANCHOR==FALSE)
  4007. -       anchoroffset = -1;
  4008. -      if ((inANCHOR == TRUE) && (anchoroffset == -1))
  4009. -       anchoroffset = paraptr;
  4010. -      if (paraptr == parasize-1) {
  4011. -       char *temp;
  4012. -       parasize *=2;
  4013. -       temp = (char*) realloc(parastorage, parasize);
  4014. -       if (temp != parastorage)
  4015. -            parastorage = temp;
  4016. -      }
  4017. -      *(parastorage + paraptr++) = ch;
  4018. -      *(parastorage + paraptr) = '\0';
  4019. - }
  4020. - /*
  4021. -  * addch outputs a character to the file
  4022. -  * It also notes the location of links in the file
  4023. -  */
  4024. - static add_ch(ch, zefile)
  4025. -   char ch;
  4026. -   FILE *zefile;
  4027. - {
  4028. -      if (ch == '\t') {
  4029. -       fprintf(zefile, "        ");
  4030. -       CurrentLinepos += 8;
  4031. -      }
  4032. -      else if (ch == '\n') {
  4033. -       CurrentLine++;
  4034. -       CurrentLinepos = 0;
  4035. -       fputc('\n', zefile);
  4036. -      }
  4037. -      else if (ch == START_LINK) {
  4038. -       HTMLSetLinepos(CurrentHTML, Linknum, CurrentLinepos+1);
  4039. -       HTMLSetLinenum(CurrentHTML, Linknum, CurrentLine);      
  4040. -       Linknum++;
  4041. -       
  4042. -       CurrentLinepos++;
  4043. -       fputc('[', zefile);
  4044. -      }
  4045. -      else if (ch == END_LINK) {
  4046. -       CurrentLinepos++;
  4047. -       fputc(']', zefile);
  4048. -      }
  4049. -      else {
  4050. -       CurrentLinepos++;
  4051. -       fputc(ch, zefile);
  4052. -      }
  4053. - }
  4054. - /*
  4055. -  * This is the same as add_ch, except it underlines
  4056. -  */
  4057. - static addul_ch(ch, zefile)
  4058. -   char ch;
  4059. -   FILE *zefile;
  4060. - {
  4061. -      fputc('_', zefile);
  4062. -      fputc('\b', zefile);
  4063. -      add_ch(ch, zefile);
  4064. - }
  4065. - /*
  4066. -  * Add a string to the file using add_ch
  4067. -  */
  4068. - static add_string(cp, zefile)
  4069. -   FILE *zefile;
  4070. -   char *cp;
  4071. - {
  4072. -      
  4073. -      while (*cp != '\0')
  4074. -       add_ch(*cp++, zefile);
  4075. - }
  4076. - /*
  4077. -  * Add an underlined string
  4078. -  */
  4079. - static addul_string(cp, zefile)
  4080. -   FILE *zefile;
  4081. -   char *cp;
  4082. - {
  4083. -      
  4084. -      while (*cp != '\0')
  4085. -       addul_ch(*cp++, zefile);
  4086. - }
  4087. - /*
  4088. -  * Flush the paragraph buffer
  4089. -  */
  4090. - flush_null(zefile)
  4091. -   FILE *zefile;
  4092. - {
  4093. -      paraptr = 0;
  4094. - }
  4095. - /*
  4096. -  * Output the buffer as is
  4097. -  */
  4098. - flush_raw(zefile)
  4099. -   FILE *zefile;
  4100. - {
  4101. -      if (paraptr == 0)
  4102. -       return;
  4103. -      *(parastorage +paraptr) = '\0';
  4104. -      if (inXMP == TRUE || inLISTING==TRUE) {
  4105. -       add_string(parastorage, zefile);
  4106. -       paraptr = 0;
  4107. -       return;
  4108. -      }
  4109. -      add_ch('\n', zefile);
  4110. -      
  4111. - }
  4112. - char *
  4113. - strip_crap_begin(cp)
  4114. -   char *cp;
  4115. - {
  4116. -      while (*cp == ' ' || *cp == '\n') {
  4117. -       cp++;
  4118. -      }
  4119. -      return(cp);
  4120. - }
  4121. - /*
  4122. -  * Add a generalized paragraph.  Does word wrapping, justification,
  4123. -  * leading space, total indentation level, bullets, and underlining
  4124. -  */
  4125. - static flush_it(zefile, leading, indent, bullet, justify, style)
  4126. -   FILE *zefile;
  4127. -   int leading;
  4128. -   int indent;
  4129. -   char *bullet;
  4130. -   int justify;
  4131. -   int style;
  4132. - {
  4133. -      char *lastspace = NULL;
  4134. -      register char *cp;
  4135. -      char *beginline = parastorage;
  4136. -      int i;
  4137. -      int testlinepos=0;
  4138. -      
  4139. -      while (CurrentLinepos < indent) {
  4140. -       add_ch(' ', zefile);
  4141. -      }            
  4142. -      
  4143. -      /** Add leading space **/
  4144. -      while (leading-- != 0)
  4145. -       add_ch(' ', zefile);
  4146. -      
  4147. -      /** Add bullet space **/
  4148. -      if (bullet != NULL)
  4149. -       add_string(bullet, zefile);
  4150. -      testlinepos = CurrentLinepos;
  4151. -      cp = beginline = strip_crap_begin(parastorage);
  4152. -      for (; cp < parastorage+paraptr; cp++, testlinepos++) {
  4153. -       if (*cp == '\n')
  4154. -            *cp = ' ';
  4155. -       if (*cp == ' ')
  4156. -            lastspace = cp;
  4157. -       
  4158. -       if (testlinepos == COLS-1) {
  4159. -            if (lastspace == NULL)  {  /** Big long line, chop it. **/
  4160. -             char tempch = *cp;
  4161. -             *cp = '\0';
  4162. -             if (style == STYLE_UL)
  4163. -              addul_string(beginline, zefile);
  4164. -             else
  4165. -              add_string(beginline, zefile);
  4166. -             add_ch('\n', zefile);
  4167. -             *cp = tempch;
  4168. -             cp = strip_crap_begin(cp);
  4169. -             beginline = cp;
  4170. -            } else {
  4171. -             *lastspace = '\0';
  4172. -             
  4173. -             /** Justify here **/
  4174. -             if (justify == JUSTIFY_RIGHT) {
  4175. -              for (i=CurrentLinepos; i<(COLS -(lastspace-beginline)); i++)
  4176. -                   add_ch(' ', zefile);
  4177. -             }
  4178. -             if (style == STYLE_UL)
  4179. -              addul_string(beginline, zefile);
  4180. -             else
  4181. -              add_string(beginline, zefile);
  4182. -              add_ch('\n', zefile);
  4183. -             cp = strip_crap_begin(lastspace+1);
  4184. -             beginline = cp;
  4185. -            }
  4186. -            lastspace = NULL;
  4187. -            
  4188. -            while (CurrentLinepos < indent) {
  4189. -             add_ch(' ', zefile);
  4190. -            }
  4191. -            if (bullet != NULL) {
  4192. -             for (i=0; i <strlen(bullet); i++)
  4193. -              add_ch(' ', zefile);
  4194. -            }
  4195. -            
  4196. -            testlinepos = CurrentLinepos;
  4197. -       }
  4198. -      }
  4199. -      if (justify == JUSTIFY_RIGHT) {
  4200. -       while (CurrentLinepos < (COLS-strlen(beginline)-1))
  4201. -            add_ch(' ', zefile);
  4202. -      } else if (justify == JUSTIFY_CENTER) {
  4203. -       while (CurrentLinepos < ((COLS-strlen(beginline)-1)/2))
  4204. -            add_ch(' ', zefile);
  4205. -      }
  4206. -      if (style == STYLE_UL)
  4207. -       addul_string(beginline, zefile);
  4208. -      else
  4209. -       add_string(beginline, zefile);
  4210. -      if (inDT == FALSE) {
  4211. -       add_ch('\n', zefile);
  4212. -       if (inADDRESS == FALSE)
  4213. -            add_ch('\n', zefile);
  4214. -      }
  4215. -      paraptr = 0;
  4216. - }
  4217. - /*
  4218. -  * Output the paragraph  take note of our state and add different styles.
  4219. -  */
  4220. - static flush_paragraph(zefile)
  4221. -   FILE *zefile;
  4222. - {
  4223. -      char *cp;
  4224. -      if (paraptr == 0)
  4225. -       return;
  4226. -      
  4227. -      /*** If it's a bunch of '\n''s skip it... ***/
  4228. -      for (cp = parastorage; (*cp == '\n'); cp++)
  4229. -       ;
  4230. -      if (*cp == '\0')
  4231. -       return;
  4232. -      if (inADDRESS==TRUE)
  4233. -       flush_it(zefile, 0, HeadingLevel*3, NULL, JUSTIFY_RIGHT, STYLE_NL);
  4234. -      else if (inDL==TRUE) {
  4235. -       if (inDT)
  4236. -            flush_it(zefile, 0, HeadingLevel*3, NULL, JUSTIFY_LEFT, STYLE_UL);
  4237. -       else
  4238. -            flush_it(zefile, 1, (HeadingLevel+1)*3, NULL, JUSTIFY_LEFT, STYLE_NL);
  4239. -      }
  4240. -      else if (inLIST==TRUE) {
  4241. -       flush_it(zefile, 0, HeadingLevel*3, "* ", JUSTIFY_LEFT,STYLE_NL);
  4242. -      }
  4243. -      else if (inH1 == TRUE)
  4244. -       flush_it(zefile, 0, 0, NULL, JUSTIFY_CENTER, STYLE_UL);
  4245. -      else if (inHeading == TRUE)
  4246. -       flush_it(zefile, 0, (HeadingLevel-1)*3, NULL, JUSTIFY_LEFT, STYLE_UL);
  4247. -      else {
  4248. -       flush_it(zefile, 3, HeadingLevel*3, NULL, JUSTIFY_LEFT, STYLE_NL);
  4249. -      }
  4250. - }
  4251. - HTMLfromNet(html, sockfd)
  4252. -   HTMLObj *html;
  4253. -   int sockfd;
  4254. - {
  4255. -      ;
  4256. - }
  4257. - /*
  4258.    * Enable use of an external HTML browser until the
  4259.    * builtin HTML pager is functional (if ever 8-).
  4260.    */
  4261. --- 75,88 ----
  4262. ***************
  4263. *** 435,441 ****
  4264.        if (!RCdisplayCommand(GlobalRC, "text/html", "", HTMLcmd) ||
  4265.            !strncasecmp(HTMLcmd, "- none -", 8) ||
  4266.        HTMLcmd == NULL || HTMLcmd[0] == '\0') {
  4267. !       CursesErrorMsg("Sorry, this client does not support HTML");
  4268.             return;
  4269.        }
  4270.        else
  4271. --- 99,105 ----
  4272.        if (!RCdisplayCommand(GlobalRC, "text/html", "", HTMLcmd) ||
  4273.            !strncasecmp(HTMLcmd, "- none -", 8) ||
  4274.        HTMLcmd == NULL || HTMLcmd[0] == '\0') {
  4275. !       CursesErrorMsg(Gtxt("Sorry, this client does not support HTML",47));
  4276.             return;
  4277.        }
  4278.        else
  4279. ***************
  4280. *** 448,459 ****
  4281.   #ifdef VMS
  4282.        refresh();
  4283.   #endif
  4284. !      Dialogmess[0] = "Warning!!!!!, you are about to leave the Internet Gopher";
  4285. !      Dialogmess[1] = "Client and connect to an HTML Browser.  Use the Browser";
  4286. !      Dialogmess[2] = "Help if you are not familiar with its commands.";
  4287.        Dialogmess[3] = "";
  4288. !      Dialogmess[4] = "Upon quitting from the Browser, you will be returned to";
  4289. !      Dialogmess[5] = "the Internet Gopher Client.";
  4290.        Dialogmess[6] = NULL;
  4291.        
  4292.        if (CURDialog(CursesScreen, GSgetTitle(ZeGopher), Dialogmess) <0)
  4293. --- 112,123 ----
  4294.   #ifdef VMS
  4295.        refresh();
  4296.   #endif
  4297. !      Dialogmess[0] = Gtxt("Warning!!!!!, you are about to leave the Internet Gopher",42);
  4298. !      Dialogmess[1] = Gtxt("Client and connect to an HTML Browser.  Use the Browser",43);
  4299. !      Dialogmess[2] = Gtxt("Help if you are not familiar with its commands.",44);
  4300.        Dialogmess[3] = "";
  4301. !      Dialogmess[4] = Gtxt("Upon quitting from the Browser, you will be returned to",45);
  4302. !      Dialogmess[5] = Gtxt("the Internet Gopher Client.",46);
  4303.        Dialogmess[6] = NULL;
  4304.        
  4305.        if (CURDialog(CursesScreen, GSgetTitle(ZeGopher), Dialogmess) <0)
  4306. ***************
  4307. *** 463,733 ****
  4308.        FIOsystem(command);
  4309.        CURenter(CursesScreen);
  4310.   
  4311. - }
  4312. - #ifdef NOTDEFINED /* Builtin HTML pager doesn't work */
  4313. - do_html(ZeGopher)
  4314. -   GopherObj *ZeGopher;
  4315. - {
  4316. -      FILE *tmpfile;
  4317. -      char tmpfilename[256];
  4318. -      char inputline[512];
  4319. -      char outputline[512];
  4320. -      char *cp;
  4321. -      int sockfd, iLength;
  4322. -      DebugGSplusPrint(ZeGopher,"do_html start");
  4323. -      if (parastorage == NULL) {
  4324. -       parasize = 4096;
  4325. -       paraptr = 0;
  4326. -       parastorage = (char *) malloc(parasize);
  4327. -       bzero(parastorage, 4096);
  4328. -      }
  4329. -      CurrentHTML = HTMLnew(32);
  4330. -      if ((sockfd = GSconnect(ZeGopher)) <0) {
  4331. -       check_sock(sockfd, GSgetHost(ZeGopher), GSgetPort(ZeGopher));
  4332. -       return;
  4333. -      }
  4334. -      /** Send out the request **/
  4335. -      writestring(sockfd, GSgetPath(ZeGopher));
  4336. -      writestring(sockfd, "\r\n");
  4337. -      /** Open a temporary file **/
  4338. -      sprintf(tmpfilename, "/tmp/gopherhtml.%d.%d",getpid(),HTMLfilenum++);
  4339. -      if ((tmpfile = fopen(tmpfilename, "w")) == NULL)
  4340. -       fprintf(stderr, "Couldn't make a tmp file!\n"), exit(-1);
  4341. -      for(;;) {
  4342. -       iLength = readline(sockfd, inputline, 512);
  4343. -       outputline[0] = '\0';
  4344. -       if (iLength == 0)
  4345. -            break;
  4346. -       ZapCRLF(inputline);
  4347. -       for (cp=inputline; *cp != '\0'; cp++) {
  4348. -            if (*cp == '<') { /** Start of tag? **/
  4349. -             cp = process_tag(cp, tmpfile);
  4350. -            } 
  4351. -            else
  4352. -             buffer_ch(*cp);
  4353. -       } 
  4354. -       buffer_ch('\n');
  4355. -      }
  4356. -      flush_paragraph(tmpfile);
  4357. -      if (isIndex)
  4358. -       ;/*     add_index_entry(zefile);*/
  4359. -      (void)fclose(tmpfile);
  4360. -      
  4361. - /*     display_file(tmpfilename, GSgetTitle(ZeGopher));*/
  4362. -      CURexit(CursesScreen);
  4363. -      HTML_pager(tmpfilename, CurrentHTML);
  4364. -      /** Good little clients clean up after themselves..**/
  4365. -      if (unlink(tmpfilename)!=0)
  4366. -       fprintf(stderr, "Couldn't unlink!!!\n"), exit(-1);
  4367. -      CURenter(CursesScreen);
  4368. - }
  4369. - #endif /* NOTDEFINED */
  4370. - char *
  4371. - process_tag(cp, tmpfile)
  4372. -   char *cp;
  4373. -   FILE *tmpfile;
  4374. - {
  4375. -      char *cp2;
  4376. -      char *endtag;
  4377. -      static GopherObj *Anchorgs=NULL;
  4378. -      
  4379. -      for (cp2 = cp+1;
  4380. -       *cp2 != '>' && *cp2 != '<' && *cp2 != '\0';
  4381. -       cp2++)
  4382. -       if (*cp2 == ' ')
  4383. -            endtag = cp2;
  4384. -      
  4385. -      if (endtag==NULL) endtag=cp2;
  4386. -      if (*cp2 != '>')   /** Not a tag **/
  4387. -       return(cp);
  4388. -      /** It's a tag.. */
  4389. -      /*** Check for these cases first, they're weird ***/
  4390. -      if (inXMP == TRUE) {
  4391. -       if (strncasecmp(cp, "</XMP",5)==0) {
  4392. -            flush_raw(tmpfile);
  4393. -            inXMP = FALSE;
  4394. -            return(cp2);
  4395. -       }
  4396. -       inPAREN = TRUE;
  4397. -       buffer_ch(*cp);
  4398. -       return(cp);
  4399. -      }
  4400. -      else if (inLISTING == TRUE) {
  4401. -       if (strncasecmp(cp, "</LISTING",5)==0) {
  4402. -            flush_raw(tmpfile);
  4403. -            inLISTING = FALSE;
  4404. -             return(cp2);
  4405. -       }
  4406. -       inPAREN = TRUE;
  4407. -       buffer_ch(*cp);
  4408. -       return(cp);
  4409. -      }
  4410. -      /** Check for tags that are embedded in paragraphs **/
  4411. -      if (strncasecmp(cp, "<A ", 3)==0) {
  4412. -       char *href;
  4413. -       href = strstr(cp, "HREF=");
  4414. -       if (href == NULL)
  4415. -            return(cp2);
  4416. -            
  4417. -       href += 5;
  4418. -       if (Anchorgs == NULL)
  4419. -            Anchorgs = GSnew();
  4420. -       else
  4421. -            GSinit(Anchorgs);
  4422. -       *cp2 = '\0';
  4423. -       GSfromURL(Anchorgs, href, NULL, 0);
  4424. -       /** An anchor link **/
  4425. -       buffer_ch(START_LINK);
  4426. -            
  4427. -       inANCHOR = TRUE;
  4428. -       return(cp2);
  4429. -      }
  4430. -      else if (strncasecmp(cp, "</A>", 4)==0) {
  4431. -       if (inANCHOR == TRUE) {
  4432. -            GSsetTitle(Anchorgs, parastorage+anchoroffset); /** Ick **/
  4433. -            buffer_ch(END_LINK);
  4434. -            buffer_ch(' ');
  4435. -            inANCHOR = FALSE;
  4436. -       }
  4437. -       HTMLaddLink(CurrentHTML, Anchorgs, 42,42);
  4438. -       return(cp2);
  4439. -      }
  4440. -      /** Okay, anything else ends a paragraph, if we're in it... **/
  4441. -      if (inPAREN == TRUE) {
  4442. -       flush_paragraph(tmpfile);
  4443. -       inPAREN = FALSE;
  4444. -      }
  4445. -      /*** Assume that we're in a paragraph ***/
  4446. -      inPAREN = TRUE;
  4447. -      /** Any other tag is the start of something new **/
  4448. -      
  4449. -      if (strncasecmp(cp, "<P", 2)==0) {
  4450. -       inPAREN = TRUE;
  4451. -      }
  4452. -      else if (strncasecmp(cp, "<ADDRESS", 8)==0) {
  4453. -       inADDRESS =TRUE;
  4454. -       add_ch('\n', tmpfile);
  4455. -      }
  4456. -      else if (strncasecmp(cp, "</ADDRESS",9)==0) {
  4457. -       inADDRESS = FALSE;
  4458. -      }
  4459. -      
  4460. -      else if (strncasecmp(cp, "<TITLE",6)==0) {
  4461. -       inPAREN = FALSE;
  4462. -      }
  4463. -      else if (strncasecmp(cp, "</TITLE",7)==0) {
  4464. -       flush_null(tmpfile);
  4465. -      }
  4466. -      else if (strncasecmp(cp, "<H1", 3) ==0) {
  4467. -       inH1 = TRUE;
  4468. -      }
  4469. -      else if (strncasecmp(cp, "<H",2) ==0) {
  4470. -       HeadingLevel = *(cp+2) - '0' - 1;
  4471. -       inHeading = TRUE;
  4472. -      }
  4473. -      else if (strncasecmp(cp, "</H1", 4) ==0) {
  4474. -       inH1=FALSE;
  4475. -      }
  4476. -      else if (strncasecmp(cp, "</H", 3) ==0) {
  4477. -       inHeading = FALSE;
  4478. -      }
  4479. -      else if (strncasecmp(cp, "<XMP", 4)==0) {
  4480. -       add_ch('\n',tmpfile);
  4481. -       inXMP = TRUE;
  4482. -       inPAREN = FALSE;
  4483. -      }
  4484. -      else if (strncasecmp(cp, "<LISTING",7)==0) {
  4485. -       add_ch('\n',tmpfile);
  4486. -       inLISTING = TRUE;
  4487. -       inPAREN = FALSE;
  4488. -      }
  4489. -      else if (strncasecmp(cp, "<DL",3)==0) {
  4490. -       inDL = TRUE;
  4491. -       inPAREN = FALSE;
  4492. -      }
  4493. -      else if (strncasecmp(cp, "<DD", 3)==0) {
  4494. -       inPAREN = TRUE;
  4495. -       inDT = FALSE;
  4496. -       /*flush_term(tmpfile);*/
  4497. -      }
  4498. -      else if (strncasecmp(cp, "<DT", 3)==0) {
  4499. -       inDT = TRUE;
  4500. -      }
  4501. -      
  4502. -      else if ( strncasecmp(cp, "</DL",4)==0) {
  4503. -       inDL = FALSE;
  4504. -      }
  4505. -      
  4506. -      else if (strncasecmp(cp, "<UL",3)==0) {
  4507. -       inLIST = TRUE;
  4508. -      }
  4509. -      else if (strncasecmp(cp, "<MENU",5)==0) {
  4510. -       inMENU =TRUE;
  4511. -      }
  4512. -      else if (strncasecmp(cp, "</MENU",6)==0) {
  4513. -       inMENU=FALSE;
  4514. -      }
  4515. -      else if (strncasecmp(cp, "<LI", 3)==0) {
  4516. -       ;
  4517. -      }
  4518. -      else if (strncasecmp(cp, "</UL", 4)==0) {
  4519. -       inLIST = FALSE;
  4520. -      }
  4521. -      else if (strncasecmp(cp, "</ISINDEX", 9)==0) {
  4522. -       isIndex = TRUE;
  4523. -      }
  4524. -      
  4525. -      else if (strncasecmp(cp, "<PLAINTEXT", 10)==0) {
  4526. -       inPLAINTXT = TRUE;
  4527. -      }
  4528. -      return(cp2);
  4529.   }
  4530. --- 127,130 ----
  4531. diff -c gopher+/gopher/hymoo.c:3.5 gopher+/gopher/hymoo.c:removed
  4532. *** gopher+/gopher/hymoo.c:3.5    Fri May 27 00:08:49 1994
  4533. --- gopher+/gopher/hymoo.c    Fri May 27 00:08:49 1994
  4534. ***************
  4535. *** 1,429 ****
  4536. - /********************************************************************
  4537. -  * $Author: lindner $
  4538. -  * $Revision: 3.5 $
  4539. -  * $Date: 1993/08/19 20:22:51 $
  4540. -  * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/Attic/hymoo.c,v $
  4541. -  * $State: Exp $
  4542. -  *
  4543. -  * Paul Lindner, University of Minnesota CIS.
  4544. -  *
  4545. -  * Copyright 1991, 1992 by the Regents of the University of Minnesota
  4546. -  * see the file "Copyright" in the distribution for conditions of use.
  4547. -  *********************************************************************
  4548. -  * MODULE: hymoo.c
  4549. -  * More stuff to do html.
  4550. -  *********************************************************************
  4551. -  * Revision History:
  4552. -  * $Log: hymoo.c,v $
  4553. -  * Revision 3.5  1993/08/19  20:22:51  lindner
  4554. -  * Mitra's Debug patch
  4555. -  *
  4556. -  * Revision 3.4  1993/08/16  18:49:17  lindner
  4557. -  * Alpha and DECC mods
  4558. -  *
  4559. -  * Revision 3.3  1993/07/29  17:21:22  lindner
  4560. -  * eliminate non-used variables
  4561. -  *
  4562. -  * Revision 3.2  1993/07/27  05:28:54  lindner
  4563. -  * Mondo Debug overhaul from Mitra
  4564. -  *
  4565. -  * Revision 3.1.1.1  1993/02/11  18:03:00  lindner
  4566. -  * Gopher+1.2beta release
  4567. -  *
  4568. -  * Revision 2.1  1993/02/09  22:36:38  lindner
  4569. -  * Fixes for new rc stuff
  4570. -  *
  4571. -  * Revision 1.1  1992/12/10  23:32:16  lindner
  4572. -  * gopher 1.1 release
  4573. -  *
  4574. -  * Revision 1.1  1992/12/10  06:16:51  lindner
  4575. -  * Initial revision
  4576. -  *
  4577. -  *
  4578. -  *********************************************************************/
  4579. - #include <stdio.h>
  4580. - #include <ctype.h>
  4581. - #include <signal.h>
  4582. - #include "String.h"
  4583. - #include "CURcurses.h"
  4584. - #include "HTML.h"
  4585. - #include "gopherrc.h"
  4586. - #include "globals.h"
  4587. - #include "Debug.h"
  4588. - #define HELP "Commands: Use arrow keys to move, '?' for help, 'q' to quit"
  4589. - #define MOREHELP \
  4590. -   "-- press space for more, use arrow keys to move, '?' for help, 'q' to quit"
  4591. - #define MORE "-- press space for more --"
  4592. - #define STREQ(a,b) (strcmp(a,b) == 0)
  4593. - #define STRNEQ(a,b,c) (strncmp(a,b,c) == 0)
  4594. - #define printable(c) (((c)>31 && (c)<=127) || (c)==9 || (c)==10)
  4595. - boolean more = FALSE;
  4596. - char *interaddr(), *nextword(), *pop(), *mystrncpy();
  4597. - #ifdef VMS
  4598. - #   define strncasecmp strncmp   /* vms doesn't have strncasecmp */
  4599. - #endif
  4600. - cleanup()
  4601. - {
  4602. -     int lastx=1, lasty=1;
  4603. -     move(LINES-1, 0);
  4604. -     mvcur(lasty, lastx, LINES-1, 0);
  4605. -     clrtoeol();
  4606. -     refresh();
  4607. -     CURexit(CursesScreen);
  4608. - }
  4609. - /*
  4610. -  * Returns the page number of a given line number
  4611. -  */
  4612. - int
  4613. - Pagenum(linenum)
  4614. -   int linenum;
  4615. - {
  4616. -      return(linenum/LINES);
  4617. - }
  4618. - /*
  4619. -  * here's where we do all the work
  4620. -  */
  4621. - void
  4622. - HTML_pager(filename, html)
  4623. -   char *filename;
  4624. -   HTMLObj *html;
  4625. - {
  4626. -      int     ch;
  4627. -      FILE    *fp;
  4628. -      int     OldPage=1, CurrentPage=1;
  4629. -      int     Currentlink = 0;
  4630. -      CURenter(CursesScreen);
  4631. -      if ((fp=fopen(filename, "r")) != NULL) {
  4632. -       /*** Show the first page ***/
  4633. -       showpage(fp, 1, 0, html);
  4634. -       if (HTMLGetNumLinks(html) != 0)
  4635. -            highlight(TRUE, Currentlink, CurrentPage, html);
  4636. -      } else {
  4637. -       return;
  4638. -      }
  4639. -      while (TRUE) {
  4640. -       if (CurrentPage != OldPage) {
  4641. -            showpage(fp, CurrentPage, OldPage, html);
  4642. -            OldPage = CurrentPage;
  4643. -       }
  4644. -       ch = CURgetch(CursesScreen);
  4645. -       switch (ch) {
  4646. -       case '\n':        /* Traverse the link */
  4647. -            do_html(HTMLGetLink(html, Currentlink));
  4648. -            break;
  4649. -       case 'u':        /** Exit from this page **/
  4650. -       case 'h':
  4651. -       case KEY_LEFT:
  4652. -            CURexit(CursesScreen);
  4653. -            return;
  4654. -            break;
  4655. -            
  4656. -       case '\t':        /* Next Link */
  4657. -            if (Currentlink == HTMLGetNumLinks(html) || HTMLGetNumLinks(html)==0) {
  4658. -             Debug("CURBeep HTML_Pager\r\n",NULL)
  4659. -             CURBeep(CursesScreen);
  4660. -             break;
  4661. -            }
  4662. -            OldPage = CurrentPage;
  4663. -            /*** Move down, if necessary ***/
  4664. -            while (Pagenum(HTMLGetLinenum(html, Currentlink+1)) != CurrentPage) {
  4665. -             CurrentPage++;
  4666. -            }
  4667. -             
  4668. -            highlight(FALSE, Currentlink++, CurrentPage, html);
  4669. -            highlight(TRUE,  Currentlink, CurrentPage, html);
  4670. -            break;
  4671. -       case ' ':        /* Next screenful */
  4672. -       case KEY_NPAGE:
  4673. -            OldPage = CurrentPage;
  4674. -            CurrentPage++;
  4675. -            break;
  4676. -       case KEY_PPAGE:
  4677. -       case 'b':
  4678. -            OldPage = CurrentPage;
  4679. -            CurrentPage--;
  4680. -            break;
  4681. -       }
  4682. -      }
  4683. - }
  4684. - HTMLMoo_pager(filename, html)
  4685. -   char *filename;
  4686. -   HTMLObj *html;
  4687. - {
  4688. -     int  c, arrowup=FALSE, show_help=FALSE;
  4689. -     int  cur = 0, savcur = 0;
  4690. -     int  oldpage = 0, newpage = 1;
  4691. -     FILE *fp = NULL;
  4692. -     while (TRUE) {
  4693. -     if (oldpage != newpage) {
  4694. -         if (showpage(fp, newpage, oldpage, html) > 0) {
  4695. -         if (arrowup) {
  4696. -             cur = HTMLGetLinkMax(html) - 1;
  4697. -             arrowup = FALSE;
  4698. -         } else
  4699. -             cur = savcur;
  4700. -         savcur = 0;
  4701. -         oldpage = newpage;
  4702. -         } else {
  4703. -         newpage = oldpage;
  4704. -         }
  4705. -     }
  4706. -     if (!show_help) {
  4707. -         if (more)
  4708. -         statusline(MORE);
  4709. -         else
  4710. -         statusline((char *) NULL);
  4711. -     }
  4712. -     c=CURgetch(CursesScreen);
  4713. -     highlight(TRUE, cur, newpage, html);    /* highlight current link */
  4714. -     if (show_help) {
  4715. -         if (more)
  4716. -         statusline(MORE);
  4717. -         else
  4718. -         statusline((char *) NULL);
  4719. -         show_help = FALSE;
  4720. -     }
  4721. -     switch(c) {
  4722. -     case 'q':    /* quit */
  4723. -     case 'Q':
  4724. -     case 4:
  4725. -             cleanup();
  4726. -         return;
  4727. -     case ' ':    /* next page */
  4728. -     case '+':
  4729. -         newpage++;
  4730. -         break;
  4731. -     case 'b':    /* prev page */
  4732. -     case '-':
  4733. -         newpage--;
  4734. -         break;
  4735. -     case KEY_UP:
  4736. -     case 'k':
  4737. -         if (cur>0) {        /* previous link */
  4738. -         highlight(FALSE, cur, newpage, html);
  4739. -         cur--;
  4740. -         } else if (oldpage > 1) {    /* previous page */
  4741. -         newpage--;
  4742. -         arrowup = TRUE;
  4743. -         }
  4744. -         break;
  4745. -     case KEY_DOWN:
  4746. -     case 'j':
  4747. -         if (HTMLGetLinenum(html, cur+1) < (newpage+1)*LINES)  {
  4748. -         highlight(FALSE, cur, newpage, html);     /** Next link **/
  4749. -         cur++;
  4750. -         } else {            /* next page */
  4751. -         newpage++;
  4752. -         }
  4753. -         break;
  4754. -     case KEY_LEFT:            /* back up a level */
  4755. -     case 'h':            /* i.e. quit */
  4756. -             cleanup();
  4757. -             return;
  4758. -         break;
  4759. -     case KEY_RIGHT:            /* follow a link */
  4760. -     case 'l':
  4761. -     case '\n':
  4762. -     case '\r':
  4763. -         if (HTMLGetLinkMax(html) > 0) {
  4764. -          /** Traverse link here **/
  4765. -             statusline((char *) NULL);
  4766. -         }
  4767. -         break;
  4768. -     default:
  4769. -         if (more)
  4770. -         statusline(MOREHELP);
  4771. -         else
  4772. -         statusline(HELP);
  4773. -         show_help = TRUE;
  4774. - #ifdef DEBUGGING
  4775. -         printw("%d", c);
  4776. - #endif
  4777. -         break;
  4778. -     }
  4779. -     }
  4780. - }
  4781. - /*
  4782. -  * display one screen of text
  4783. -  *
  4784. -  * Read & display one screenfull of text.
  4785. -  *
  4786. -  * Pre-reads one line from the next page, to ensure that the "- more -"
  4787. -  * message is only displayed when there really is more.
  4788. -  */
  4789. - int
  4790. - showpage(fp, page, oldpage, html)
  4791. -   FILE *fp;
  4792. -   int page, oldpage;
  4793. -   HTMLObj *html;
  4794. - {
  4795. -      int col, lineno;
  4796. -      static char line[512];
  4797. -      char *cp;
  4798. -      
  4799. -      if (page < 1)
  4800. -       page = 1;
  4801. -      
  4802. -      if (page == oldpage) {        /* nothing to do */
  4803. -       return(0);
  4804. -      } else if (page < oldpage) {    /* have to back up */
  4805. -       rewind(fp);
  4806. -       oldpage = 0;
  4807. -      }
  4808. -      
  4809. -      if (page == 1 || page != oldpage+1) {
  4810. -       more = FALSE;
  4811. -       lineno = oldpage*(LINES-1);
  4812. -       while (lineno<(page-1)*(LINES-1) && fgets(line, COLS, fp) != NULL) {
  4813. -            lineno++;
  4814. -       }
  4815. -      }
  4816. -      
  4817. -      lineno = 0;
  4818. -      clear();
  4819. - #ifdef VMS
  4820. -      refresh();
  4821. - #endif
  4822. -      while (lineno<(LINES-1) && (more || fgets(line, 512, fp) != NULL)) {
  4823. -       more = FALSE;
  4824. -       ZapCRLF(line);
  4825. -       
  4826. -       for (cp = line; *cp != '\0'; cp++) {
  4827. -            if ((*cp == '_') && (*(cp +1) == '\b')) {
  4828. -             cp +=2;
  4829. - #ifdef A_BOLD
  4830. -             addch(A_BOLD | *cp);
  4831. - #else
  4832. -             addch(*cp);
  4833. - #endif
  4834. -       } else
  4835. -            addch(*cp);
  4836. -       }
  4837. -       addch('\n');
  4838. -       lineno++;
  4839. -      }
  4840. -      
  4841. -      if (lineno==(LINES-1) && fgets(line,512, fp) != NULL)
  4842. -       more = TRUE;
  4843. -      standout();
  4844. -      addstr("<Space> for next page");
  4845. -      standend();
  4846. -      refresh();
  4847. -      return(lineno);
  4848. - }
  4849. - /*
  4850. -  * Return pointer to the second word in a string
  4851. -  */
  4852. - char *
  4853. - nextword(cp)
  4854. - char *cp;
  4855. - {
  4856. -     while (*cp != ' ' && *cp != '\0') cp++;    /* skip non-spaces */
  4857. -     while (*cp == ' ') cp++;            /* skip spaces */
  4858. -     return(cp);
  4859. - }
  4860. - /*
  4861. -  * my strncpy() terminates strings with a null byte.
  4862. -  * Writes a null byte into the n+1 byte of dst.
  4863. -  */
  4864. - char *
  4865. - mystrncpy(dst, src, n)
  4866. - char *dst, *src;
  4867. - int n;
  4868. - {
  4869. -     char *val;
  4870. -     val = strncpy(dst, src, n);
  4871. -     *(dst+n) = '\0';
  4872. -     return val;
  4873. - }
  4874. - /*
  4875. -  * highlight (or unhighlight) a given link
  4876. -  */
  4877. - highlight(flag, cur, curpage, html)
  4878. -   boolean flag;
  4879. -   int cur;
  4880. -   int curpage;
  4881. -   HTMLObj *html;
  4882. - {
  4883. -      /*** Assume that the link is on this page **/
  4884. -      
  4885. -      if (HTMLGetLinkMax(html) > 0) {
  4886. -       move(HTMLGetLinenum(html, cur) - (curpage-1) * LINES,
  4887. -            HTMLGetLinepos(html, cur));
  4888. -     if (flag) standout();
  4889. -     addstr(GSgetTitle(HTMLGetLink(html, cur)));
  4890. -     if (flag) standend();
  4891. -     refresh();
  4892. -     }
  4893. - }
  4894. - /*
  4895. -  * display (or hide) the status line
  4896. -  */
  4897. - statusline(text)
  4898. - char *text;
  4899. - {
  4900. -     move(LINES-1,0);
  4901. -     clrtoeol();
  4902. -     if (text != NULL) {
  4903. -     standout();
  4904. -     addstr(text);
  4905. -     standend();
  4906. -     }
  4907. -     refresh();
  4908. - }
  4909. --- 0 ----
  4910. diff -c gopher+/gopher/link.com:3.7 gopher+/gopher/link.com:3.8
  4911. *** gopher+/gopher/link.com:3.7    Fri May 27 00:08:49 1994
  4912. --- gopher+/gopher/link.com    Fri May 27 00:08:50 1994
  4913. ***************
  4914. *** 1,8 ****
  4915.   $ vg = 'f$verify(0)'
  4916.   $!********************************************************************
  4917.   $! $Author: lindner $
  4918. ! $! $Revision: 3.7 $
  4919. ! $! $Date: 1994/02/20 16:17:40 $
  4920.   $! $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/link.com,v $
  4921.   $! $State: Exp $
  4922.   $!
  4923. --- 1,8 ----
  4924.   $ vg = 'f$verify(0)'
  4925.   $!********************************************************************
  4926.   $! $Author: lindner $
  4927. ! $! $Revision: 3.8 $
  4928. ! $! $Date: 1994/05/06 02:21:31 $
  4929.   $! $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/link.com,v $
  4930.   $! $State: Exp $
  4931.   $!
  4932. ***************
  4933. *** 16,21 ****
  4934. --- 16,24 ----
  4935.   $!*********************************************************************
  4936.   $! Revision History:
  4937.   $! $Log: link.com,v $
  4938. + $! Revision 3.8  1994/05/06  02:21:31  lindner
  4939. + $! Mods for TCPWARE on VMS
  4940. + $!
  4941.   $! Revision 3.7  1994/02/20  16:17:40  lindner
  4942.   $! Add form object file
  4943.   $!
  4944. ***************
  4945. *** 55,60 ****
  4946. --- 58,64 ----
  4947.           @link MULTINET
  4948.           @link CMUIP
  4949.           @link NETLIB
  4950. +         @link TCPWARE
  4951.   $    exit
  4952.   $ ENDIF
  4953.   $!
  4954. ***************
  4955. *** 61,71 ****
  4956.   $ ON CONTROL_Y THEN GOTO CLEANUP
  4957.   $ ON ERROR THEN GOTO CLEANUP
  4958.   $!
  4959.   $ IF f$trnlnm("VAXCMSG") .eqs. "DECC$MSG"
  4960.   $ THEN
  4961. ! $    optfile := "''P1'_DECC" ! DECC/Alpha
  4962.   $ ELSE
  4963. ! $    optfile := "''P1'_VAXC" ! VAXC
  4964.   $ ENDIF
  4965.   $!
  4966.   $ vgl = f$verify(1)
  4967. --- 65,83 ----
  4968.   $ ON CONTROL_Y THEN GOTO CLEANUP
  4969.   $ ON ERROR THEN GOTO CLEANUP
  4970.   $!
  4971. + $ IF P1 .eqs. "TCPWARE"
  4972. + $ THEN
  4973. + $    write sys$output "Linking client with UCX emulation..."
  4974. + $    transport := "UCX"
  4975. + $ ELSE
  4976. + $    transport := "''P1'"
  4977. + $ ENDIF
  4978. + $!
  4979.   $ IF f$trnlnm("VAXCMSG") .eqs. "DECC$MSG"
  4980.   $ THEN
  4981. ! $    optfile := "''transport'_DECC" ! DECC/Alpha
  4982.   $ ELSE
  4983. ! $    optfile := "''transport'_VAXC" ! VAXC
  4984.   $ ENDIF
  4985.   $!
  4986.   $ vgl = f$verify(1)
  4987. diff -c gopher+/gopher/manager.c:3.21 gopher+/gopher/manager.c:3.24
  4988. *** gopher+/gopher/manager.c:3.21    Fri May 27 00:08:50 1994
  4989. --- gopher+/gopher/manager.c    Fri May 27 00:08:50 1994
  4990. ***************
  4991. *** 1,7 ****
  4992.   /********************************************************************
  4993.    * $Author: lindner $
  4994. !  * $Revision: 3.21 $
  4995. !  * $Date: 1994/03/31 21:26:15 $
  4996.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/manager.c,v $
  4997.    * $State: Exp $
  4998.    *
  4999. --- 1,7 ----
  5000.   /********************************************************************
  5001.    * $Author: lindner $
  5002. !  * $Revision: 3.24 $
  5003. !  * $Date: 1994/05/17 05:48:01 $
  5004.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/manager.c,v $
  5005.    * $State: Exp $
  5006.    *
  5007. ***************
  5008. *** 15,20 ****
  5009. --- 15,29 ----
  5010.    *********************************************************************
  5011.    * Revision History:
  5012.    * $Log: manager.c,v $
  5013. +  * Revision 3.24  1994/05/17  05:48:01  lindner
  5014. +  * Massive internationalization change
  5015. +  *
  5016. +  * Revision 3.23  1994/05/14  04:13:45  lindner
  5017. +  * Internationalization...
  5018. +  *
  5019. +  * Revision 3.22  1994/04/25  03:37:42  lindner
  5020. +  * Modifications for Debug() and mismatched NULL arguments, added Debugmsg
  5021. +  *
  5022.    * Revision 3.21  1994/03/31  21:26:15  lindner
  5023.    * Make DEBUG toggleable
  5024.    *
  5025. ***************
  5026. *** 123,129 ****
  5027.   {
  5028.        char line[80];
  5029.   
  5030. !      sprintf(line, "Internet Gopher Information Client v%s.%s.%d", GOPHER_MAJOR_VERSION, GOPHER_MINOR_VERSION, PATCHLEVEL);
  5031.        CURcenterline(CursesScreen, stdscr, line, 0, COLS, TRUE);
  5032.   }     
  5033.   
  5034. --- 132,139 ----
  5035.   {
  5036.        char line[80];
  5037.   
  5038. !      sprintf(line, Gtxt("Internet Gopher Information Client v%s.%s.%d",102),
  5039. !          GOPHER_MAJOR_VERSION, GOPHER_MINOR_VERSION, PATCHLEVEL);
  5040.        CURcenterline(CursesScreen, stdscr, line, 0, COLS, TRUE);
  5041.   }     
  5042.   
  5043. ***************
  5044. *** 136,152 ****
  5045.   Draw_Status(textline)
  5046.     char *textline;
  5047.   {
  5048. !      mvaddstr(LINES-1, 0, "Press ");
  5049.        standout();
  5050.        addstr("?");
  5051.        standend();
  5052.   
  5053. !      addstr(" for Help, ");
  5054.   
  5055.        standout();
  5056.        addstr("q");
  5057.        standend();
  5058. !      addstr(" to Quit");
  5059.        
  5060.   #ifndef AUTOEXITONU
  5061.        if (iLevel != 0) {
  5062. --- 146,162 ----
  5063.   Draw_Status(textline)
  5064.     char *textline;
  5065.   {
  5066. !      mvaddstr(LINES-1, 0, Gtxt("Press ",119));
  5067.        standout();
  5068.        addstr("?");
  5069.        standend();
  5070.   
  5071. !      addstr(Gtxt(" for Help, ",57));
  5072.   
  5073.        standout();
  5074.        addstr("q");
  5075.        standend();
  5076. !      addstr(Gtxt(" to Quit",58));
  5077.        
  5078.   #ifndef AUTOEXITONU
  5079.        if (iLevel != 0) {
  5080. ***************
  5081. *** 154,160 ****
  5082.         standout();
  5083.         addstr("u");
  5084.         standend();
  5085. !       addstr(" to go up a menu");
  5086.        }
  5087.   #endif
  5088.        clrtoeol();
  5089. --- 164,170 ----
  5090.         standout();
  5091.         addstr("u");
  5092.         standend();
  5093. !       addstr(Gtxt(" to go up a menu",59));
  5094.        }
  5095.   #endif
  5096.        clrtoeol();
  5097. ***************
  5098. *** 391,397 ****
  5099.      }
  5100.       
  5101.   
  5102. !      sprintf(sPagenum, "  Page: %d/%d", nNewPage, nMaxPages);
  5103.        Draw_Status(sPagenum);
  5104.        mvaddstr(MENULINE(iOldLine), 1, "   ");
  5105.        mvaddstr(MENULINE(iNewLine), 1, "-->");
  5106. --- 401,407 ----
  5107.      }
  5108.       
  5109.   
  5110. !      sprintf(sPagenum, Gtxt("  Page: %d/%d",56), nNewPage, nMaxPages);
  5111.        Draw_Status(sPagenum);
  5112.        mvaddstr(MENULINE(iOldLine), 1, "   ");
  5113.        mvaddstr(MENULINE(iNewLine), 1, "-->");
  5114. ***************
  5115. *** 506,512 ****
  5116.              sLinenum[0] = (char) ch;
  5117.              sLinenum[1] = '\0';
  5118.              
  5119. !            if (CUROldGetOneOption(CursesScreen, "View item number: ", sLinenum) <0) {
  5120.               scline(iItem, iNewItem, gd);
  5121.               break;
  5122.              }
  5123. --- 516,524 ----
  5124.              sLinenum[0] = (char) ch;
  5125.              sLinenum[1] = '\0';
  5126.              
  5127. !            if (CUROldGetOneOption(CursesScreen, 
  5128. !                  Gtxt("View item number: ",179),
  5129. !                       sLinenum) <0) {
  5130.               scline(iItem, iNewItem, gd);
  5131.               break;
  5132.              }
  5133. ***************
  5134. *** 514,520 ****
  5135.              if (atoi(sLinenum) <= numitems)
  5136.               iNewItem = atoi(sLinenum); /* Jump */
  5137.              else {
  5138. -             Debug("GetMenu beepo digit\r\n",NULL)
  5139.               CURBeep(CursesScreen);
  5140.               break;
  5141.              }
  5142. --- 526,531 ----
  5143. ***************
  5144. *** 535,541 ****
  5145.              sfound = 0;
  5146.   
  5147.              if (search1[0] == '\0' && ch == 'n') {
  5148. !             CursesErrorMsg("Use '/' to define a search first...");
  5149.               iItem = scline(-1,iItem, gd);
  5150.               break;
  5151.              }
  5152. --- 546,552 ----
  5153.              sfound = 0;
  5154.   
  5155.              if (search1[0] == '\0' && ch == 'n') {
  5156. !             CursesErrorMsg(Gtxt("Use '/' to define a search first...",178));
  5157.               iItem = scline(-1,iItem, gd);
  5158.               break;
  5159.              }
  5160. ***************
  5161. *** 542,548 ****
  5162.   
  5163.              if (search1[0] == '\0' || ch == '/')
  5164.               if (CURGetOneOption(CursesScreen, GDgetTitle(gd),
  5165. !                          "Search directory titles for:", search1)<0) {
  5166.                iItem = scline(-1,iItem, gd);
  5167.                break;
  5168.               }
  5169. --- 553,560 ----
  5170.   
  5171.              if (search1[0] == '\0' || ch == '/')
  5172.               if (CURGetOneOption(CursesScreen, GDgetTitle(gd),
  5173. !                       Gtxt("Search directory titles for:",139)
  5174. !                   , search1)<0) {
  5175.                iItem = scline(-1,iItem, gd);
  5176.                break;
  5177.               }
  5178. ***************
  5179. *** 575,583 ****
  5180.                  }
  5181.              if (sfound == 0) {
  5182.               search1[0] = '\0';
  5183. !             Debug("GetMenu beep search\r\n",NULL)
  5184.               CURBeep(CursesScreen);
  5185. !             CursesErrorMsg("Search failed...");
  5186.              }
  5187.   
  5188.              if (ch != 'n')
  5189. --- 587,595 ----
  5190.                  }
  5191.              if (sfound == 0) {
  5192.               search1[0] = '\0';
  5193. !             Debugmsg("GetMenu beep search\r\n")
  5194.               CURBeep(CursesScreen);
  5195. !             CursesErrorMsg(Gtxt("Search failed...",140));
  5196.              }
  5197.   
  5198.              if (ch != 'n')
  5199. diff -c gopher+/gopher/ourutils.c:3.54 gopher+/gopher/ourutils.c:3.60
  5200. *** gopher+/gopher/ourutils.c:3.54    Fri May 27 00:08:50 1994
  5201. --- gopher+/gopher/ourutils.c    Fri May 27 00:08:51 1994
  5202. ***************
  5203. *** 1,7 ****
  5204.   /********************************************************************
  5205.    * $Author: lindner $
  5206. !  * $Revision: 3.54 $
  5207. !  * $Date: 1994/04/13 19:14:03 $
  5208.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/ourutils.c,v $
  5209.    * $State: Exp $
  5210.    *
  5211. --- 1,7 ----
  5212.   /********************************************************************
  5213.    * $Author: lindner $
  5214. !  * $Revision: 3.60 $
  5215. !  * $Date: 1994/05/19 14:08:04 $
  5216.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/ourutils.c,v $
  5217.    * $State: Exp $
  5218.    *
  5219. ***************
  5220. *** 15,20 ****
  5221. --- 15,38 ----
  5222.    *********************************************************************
  5223.    * Revision History:
  5224.    * $Log: ourutils.c,v $
  5225. +  * Revision 3.60  1994/05/19  14:08:04  lindner
  5226. +  * use fast malloc on VMS VAXC
  5227. +  *
  5228. +  * Revision 3.59  1994/05/17  05:48:03  lindner
  5229. +  * Massive internationalization change
  5230. +  *
  5231. +  * Revision 3.58  1994/05/14  04:13:46  lindner
  5232. +  * Internationalization...
  5233. +  *
  5234. +  * Revision 3.57  1994/04/29  15:13:17  lindner
  5235. +  * Fix for items with multiple AskL items
  5236. +  *
  5237. +  * Revision 3.56  1994/04/25  18:40:05  lindner
  5238. +  * Fix for uninited variable i
  5239. +  *
  5240. +  * Revision 3.55  1994/04/25  03:37:43  lindner
  5241. +  * Modifications for Debug() and mismatched NULL arguments, added Debugmsg
  5242. +  *
  5243.    * Revision 3.54  1994/04/13  19:14:03  lindner
  5244.    * AskL modifications
  5245.    *
  5246. ***************
  5247. *** 251,258 ****
  5248.   #endif
  5249.   #include "Debug.h"
  5250.   #include "fileio.h"
  5251.   
  5252.   int 
  5253.   outchar(c)
  5254.     char c;
  5255. --- 269,276 ----
  5256.   #endif
  5257.   #include "Debug.h"
  5258.   #include "fileio.h"
  5259. + #include "Malloc.h"
  5260.   
  5261.   int 
  5262.   outchar(c)
  5263.     char c;
  5264. ***************
  5265. *** 309,315 ****
  5266.         *SaveName = '\0';
  5267.        }
  5268.   
  5269. !      if (CURGetOneOption(CursesScreen, Realname, "Mail current document to:",
  5270.                     SaveName)<0)
  5271.         return;
  5272.        
  5273. --- 327,334 ----
  5274.         *SaveName = '\0';
  5275.        }
  5276.   
  5277. !      if (CURGetOneOption(CursesScreen, Realname, 
  5278. !              Gtxt("Mail current document to:",105),
  5279.                     SaveName)<0)
  5280.         return;
  5281.        
  5282. ***************
  5283. *** 327,344 ****
  5284.        if (SecureMode)
  5285.         if ( strspn(SaveName, ACHARS) != strlen(SaveName)||
  5286.             *SaveName == '-') {
  5287. !            Debug("mail_file - beep - bad char",NULL)
  5288.              puts(CURgetBell(CursesScreen));
  5289.              fflush(stdout);
  5290. !            Draw_Status("Address syntax rejected...");
  5291.              refresh();
  5292.              return;
  5293.         }
  5294.   
  5295.        if (strchr(Realname, '\"') != NULL)
  5296. !       Realname = "Gopher File";
  5297.        
  5298. !      Draw_Status("Mailing File...");
  5299.        refresh();
  5300.        
  5301.   #ifdef VMS
  5302. --- 346,364 ----
  5303.        if (SecureMode)
  5304.         if ( strspn(SaveName, ACHARS) != strlen(SaveName)||
  5305.             *SaveName == '-') {
  5306. !            Debugmsg("mail_file - beep - bad char")
  5307.              puts(CURgetBell(CursesScreen));
  5308.              fflush(stdout);
  5309. !            Draw_Status(Gtxt("Address syntax rejected...",65));
  5310.              refresh();
  5311.              return;
  5312.         }
  5313.   
  5314.        if (strchr(Realname, '\"') != NULL)
  5315. !       Realname = Gtxt("Gopher File",91);
  5316.        
  5317. !      Draw_Status(Gtxt("Mailing File...",106));
  5318.        refresh();
  5319.        
  5320.   #ifdef VMS
  5321. ***************
  5322. *** 353,359 ****
  5323.              MAIL_COMMAND, Realname, Filename, MailAddress);
  5324.   
  5325.        CURexit(CursesScreen);
  5326. !      printf("Mailing file to %s...", MailAddress);
  5327.        FIOsystem(command);
  5328.        CURenter(CursesScreen);
  5329.   #else
  5330. --- 373,379 ----
  5331.              MAIL_COMMAND, Realname, Filename, MailAddress);
  5332.   
  5333.        CURexit(CursesScreen);
  5334. !      printf(Gtxt("Mailing file to %s...",107), MailAddress);
  5335.        FIOsystem(command);
  5336.        CURenter(CursesScreen);
  5337.   #else
  5338. ***************
  5339. *** 364,370 ****
  5340.        mailit = FIOopenCmdline(command, "w");
  5341.        
  5342.        if (mailit == NULL || infile == NULL) {
  5343. !       CursesErrorMsg("System problem, unable to mail");
  5344.         return;
  5345.        }
  5346.   
  5347. --- 384,390 ----
  5348.        mailit = FIOopenCmdline(command, "w");
  5349.        
  5350.        if (mailit == NULL || infile == NULL) {
  5351. !       CursesErrorMsg(Gtxt("System problem, unable to mail",173));
  5352.         return;
  5353.        }
  5354.   
  5355. ***************
  5356. *** 419,425 ****
  5357.   
  5358.              choices[viewno] = NULL;
  5359.              choice = CURChoice(CursesScreen, GSgetTitle(gs), choices,
  5360. !                   "Choose a document type", default_choice);
  5361.              Debug("Choice was %d\n", choice);
  5362.              if (choice == -1)
  5363.               return(NULL);
  5364. --- 439,446 ----
  5365.   
  5366.              choices[viewno] = NULL;
  5367.              choice = CURChoice(CursesScreen, GSgetTitle(gs), choices,
  5368. !                   Gtxt("Choose a document type",73), 
  5369. !                   default_choice);
  5370.              Debug("Choice was %d\n", choice);
  5371.              if (choice == -1)
  5372.               return(NULL);
  5373. ***************
  5374. *** 502,507 ****
  5375. --- 523,549 ----
  5376.        return(temp);
  5377.   }
  5378.   
  5379. + void
  5380. + REQitemdestroy(req)
  5381. +   Requestitem *req;
  5382. + {
  5383. +      int j;
  5384. +      if (req->stowage != (char*) NULL)
  5385. +       free(req->stowage);
  5386. +      
  5387. +      if (req->prompt != (char*) NULL) 
  5388. +       free(req->prompt);
  5389. +      
  5390. +      if (req->choices != (char**) NULL) {
  5391. +       for (j=0; req->choices[j] != (char*) NULL; j++)
  5392. +            free(req->choices[j]);
  5393. +       free(req->choices);
  5394. +      }
  5395. +      free(req);
  5396. + }
  5397.   /*
  5398.    * Crude implementation of the ASK block stuff.
  5399.    */
  5400. ***************
  5401. *** 527,534 ****
  5402.         return(NULL);
  5403.   
  5404.        /** Can't guess how many askl things we'll have.. **/
  5405. !      items = (Requestitem **) malloc(sizeof(Requestitem*)* BLgetNumLines(bl)+50);
  5406. !      asktypes = (char **) malloc(sizeof(char*) * BLgetNumLines(bl));
  5407.   
  5408.        reqnum = 0;
  5409.   
  5410. --- 569,576 ----
  5411.         return(NULL);
  5412.   
  5413.        /** Can't guess how many askl things we'll have.. **/
  5414. !      items = (Requestitem **) malloc(sizeof(Requestitem*)* (BLgetNumLines(bl)+50));
  5415. !      asktypes = (char **) malloc(sizeof(char*) * (BLgetNumLines(bl) + 50));
  5416.   
  5417.        reqnum = 0;
  5418.   
  5419. ***************
  5420. *** 597,604 ****
  5421.                items[reqnum]->chooseitem = 1;
  5422.              }
  5423.              
  5424. !            items[reqnum]->choices[0] = strdup("No");
  5425. !            items[reqnum]->choices[1] = strdup("Yes");
  5426.              items[reqnum]->choices[2] = NULL;
  5427.         }
  5428.         else if (strncasecmp(askline, "AskP:", 5)==0)
  5429. --- 639,646 ----
  5430.                items[reqnum]->chooseitem = 1;
  5431.              }
  5432.              
  5433. !            items[reqnum]->choices[0] = strdup(Gtxt("No",111));
  5434. !            items[reqnum]->choices[1] = strdup(Gtxt("Yes",180));
  5435.              items[reqnum]->choices[2] = NULL;
  5436.         }
  5437.         else if (strncasecmp(askline, "AskP:", 5)==0)
  5438. ***************
  5439. *** 607,613 ****
  5440.              int x;
  5441.   
  5442.              items[reqnum]->thing = CUR_LABEL;
  5443.              /** Add a bunch more... **/
  5444.   
  5445.              for (x=0; x < 10; x++) {
  5446. --- 649,655 ----
  5447.              int x;
  5448.   
  5449.              items[reqnum]->thing = CUR_LABEL;
  5450. !            
  5451.              /** Add a bunch more... **/
  5452.   
  5453.              for (x=0; x < 10; x++) {
  5454. ***************
  5455. *** 615,620 ****
  5456. --- 657,663 ----
  5457.               items[reqnum] = REQitemnew();
  5458.               items[reqnum]->prompt = strdup("");
  5459.               items[reqnum]->thing = CUR_ASKL;
  5460. +             asktypes[reqnum] = NULL;
  5461.              }
  5462.   
  5463.         } 
  5464. ***************
  5465. *** 636,642 ****
  5466.              if (strcasecmp(asktypes[i], "AskL:")==0) {
  5467.               int alnum, x, extra;
  5468.               char numlinestr[16];
  5469. !             i++;    /* Skip over note.. */
  5470.               /** Okay, figure out how many lines were typed **/
  5471.               for (alnum=9; alnum >= 0; alnum--) {
  5472.                if (*(items[alnum+i]->stowage) != '\0')
  5473. --- 679,685 ----
  5474.              if (strcasecmp(asktypes[i], "AskL:")==0) {
  5475.               int alnum, x, extra;
  5476.               char numlinestr[16];
  5477.               /** Okay, figure out how many lines were typed **/
  5478.               for (alnum=9; alnum >= 0; alnum--) {
  5479.                if (*(items[alnum+i]->stowage) != '\0')
  5480. ***************
  5481. *** 671,689 ****
  5482.        }
  5483.        /*** Free memory ***/
  5484.        for (i=0; i<Asknum; i++) {
  5485. -       if (items[i]->stowage != (char*) NULL)
  5486. -            free(items[i]->stowage);
  5487.   
  5488. !       if (items[i]->prompt != (char*) NULL) 
  5489. !            free(items[i]->prompt);
  5490. !       if (items[i]->choices != (char**) NULL) {
  5491. !            for (j=0; items[i]->choices[j] != (char*) NULL; j++)
  5492. !             free(items[i]->choices[j]);
  5493. !            free(items[i]->choices);
  5494. !       }
  5495. !       free(asktypes[i]);
  5496.        }
  5497.   
  5498.        free(items);
  5499. --- 714,724 ----
  5500.        }
  5501.        /*** Free memory ***/
  5502.        for (i=0; i<Asknum; i++) {
  5503.   
  5504. !       REQitemdestroy(items[i]);
  5505. !       items[i] = NULL;
  5506. !       if (asktypes[i]!=NULL)
  5507. !            free(asktypes[i]);
  5508.        }
  5509.   
  5510.        free(items);
  5511. ***************
  5512. *** 724,730 ****
  5513.        
  5514.        errmsg[i] = NULL;
  5515.        
  5516. !      CURDialog(CursesScreen, "Gopher Transmission Error", errmsg);
  5517.        for (i=0; ; i++) {
  5518.         if (errmsg[i] == NULL)
  5519.              break;
  5520. --- 759,765 ----
  5521.        
  5522.        errmsg[i] = NULL;
  5523.        
  5524. !      CURDialog(CursesScreen, Gtxt("Gopher Transmission Error",95), errmsg);
  5525.        for (i=0; ; i++) {
  5526.         if (errmsg[i] == NULL)
  5527.              break;
  5528. ***************
  5529. *** 772,778 ****
  5530.        }
  5531.         
  5532.   
  5533. !      Draw_Status("Receiving file...");
  5534.        refresh();
  5535.        
  5536.   
  5537. --- 807,813 ----
  5538.        }
  5539.         
  5540.   
  5541. !      Draw_Status(Gtxt("Receiving File...",126));
  5542.        refresh();
  5543.        
  5544.   
  5545. ***************
  5546. *** 803,808 ****
  5547. --- 838,844 ----
  5548.                }
  5549.                else {
  5550.                     char *colonpos = strchr(buf+5,':');
  5551. +                   i = '\0';
  5552.                     if (colonpos != NULL && *(colonpos-1) != i) {
  5553.                      fprintf(f, "-------------------------------------------------------\n");
  5554.                      i = *(colonpos-1);
  5555. ***************
  5556. *** 814,820 ****
  5557.              }
  5558.              else {
  5559.               fputs(buf, f);
  5560. !             putc('\n', f);
  5561.              }
  5562.              if ((line % 25) == 0)
  5563.               twirlfn();
  5564. --- 850,858 ----
  5565.              }
  5566.              else {
  5567.               fputs(buf, f);
  5568. !             /** Don't cut long lines... **/
  5569. !             if (strlen(buf) < sizeof(buf))  
  5570. !              putc('\n', f);
  5571.              }
  5572.              if ((line % 25) == 0)
  5573.               twirlfn();
  5574. ***************
  5575. *** 831,837 ****
  5576.         while ((numread = readrecvbuf(sockfd, buf, sizeof buf)) > 0) {
  5577.              if (fwrite(buf, numread, 1, f) == 0) {
  5578.   #endif
  5579. !             CursesErrorMsg("Problems Writing");
  5580.               closenet(sockfd);
  5581.               return(FALSE);
  5582.              }
  5583. --- 869,875 ----
  5584.         while ((numread = readrecvbuf(sockfd, buf, sizeof buf)) > 0) {
  5585.              if (fwrite(buf, numread, 1, f) == 0) {
  5586.   #endif
  5587. !             CursesErrorMsg(Gtxt("Problems Writing",123));
  5588.               closenet(sockfd);
  5589.               return(FALSE);
  5590.              }
  5591. ***************
  5592. *** 1060,1066 ****
  5593.        case A_TELNET:
  5594.        case A_TN3270:
  5595.         if (saveto == NULL) {
  5596. !            CursesErrorMsg("Sorry, can't save that item to a file!");
  5597.              return;
  5598.         }
  5599.   
  5600. --- 1098,1104 ----
  5601.        case A_TELNET:
  5602.        case A_TN3270:
  5603.         if (saveto == NULL) {
  5604. !            CursesErrorMsg(Gtxt("Sorry, can't save that item to a file!",154));
  5605.              return;
  5606.         }
  5607.   
  5608. ***************
  5609. *** 1081,1087 ****
  5610.         /* It shouldnt ever come here if Secure, but I've noticed calls 
  5611.            to this in the code */
  5612.         if (NoShellMode || SecureMode) {
  5613. !         CursesErrorMsg("You cant do that");
  5614.           return;
  5615.         }
  5616.         /*** Let them use the Title ***/
  5617. --- 1119,1125 ----
  5618.         /* It shouldnt ever come here if Secure, but I've noticed calls 
  5619.            to this in the code */
  5620.         if (NoShellMode || SecureMode) {
  5621. !         CursesErrorMsg(Gtxt("Sorry, you are not allowed to do this", 64));
  5622.           return;
  5623.         }
  5624.         /*** Let them use the Title ***/
  5625. ***************
  5626. *** 1093,1099 ****
  5627.         UNIXfile(Userfilename);
  5628.   #endif
  5629.   
  5630. !       if (CURGetOneOption(CursesScreen, Title, "Save in file:",
  5631.                       Userfilename)<0)
  5632.              return;
  5633.   
  5634. --- 1131,1137 ----
  5635.         UNIXfile(Userfilename);
  5636.   #endif
  5637.   
  5638. !       if (CURGetOneOption(CursesScreen, Title, Gtxt("Save in file:",136),
  5639.                       Userfilename)<0)
  5640.              return;
  5641.   
  5642. ***************
  5643. *** 1134,1140 ****
  5644.               
  5645.              } else {
  5646.               char tmpstr[256];
  5647. !             sprintf(tmpstr, "No such user '%s'", saveto+1);
  5648.               CursesErrorMsg(tmpstr);
  5649.               return;
  5650.              }
  5651. --- 1172,1178 ----
  5652.               
  5653.              } else {
  5654.               char tmpstr[256];
  5655. !             sprintf(tmpstr, Gtxt("No such user '%s'",114), saveto+1);
  5656.               CursesErrorMsg(tmpstr);
  5657.               return;
  5658.              }
  5659. ***************
  5660. *** 1159,1165 ****
  5661.        if (f == NULL) {
  5662.         char tempstr[128];
  5663.   
  5664. !       sprintf(tempstr, "Couldn't create '%s'", saveto);
  5665.         CursesErrorMsg(tempstr);
  5666.         return;
  5667.        }
  5668. --- 1197,1203 ----
  5669.        if (f == NULL) {
  5670.         char tempstr[128];
  5671.   
  5672. !       sprintf(tempstr, Gtxt("Couldn't create '%s'",80), saveto);
  5673.         CursesErrorMsg(tempstr);
  5674.         return;
  5675.        }
  5676. ***************
  5677. *** 1170,1176 ****
  5678.   
  5679.         oldfd = open(GSgetLocalFile(gs), O_RDONLY, 0);
  5680.         if (oldfd <0) {
  5681. !            CursesErrorMsg("Can't open old file..");
  5682.              if (Openpipe)
  5683.               pclose(f);
  5684.              else
  5685. --- 1208,1214 ----
  5686.   
  5687.         oldfd = open(GSgetLocalFile(gs), O_RDONLY, 0);
  5688.         if (oldfd <0) {
  5689. !            CursesErrorMsg(Gtxt("Can't open old file..",68));
  5690.              if (Openpipe)
  5691.               pclose(f);
  5692.              else
  5693. ***************
  5694. *** 1180,1186 ****
  5695.         
  5696.         while ( (cc=read(oldfd, buf, sizeof buf)) > 0) {
  5697.              if (fwrite(buf, cc, 1, f) <= 0)
  5698. !             CursesErrorMsg("Problems Writing");
  5699.              twirl();
  5700.         }
  5701.         if (Openpipe)
  5702. --- 1218,1224 ----
  5703.         
  5704.         while ( (cc=read(oldfd, buf, sizeof buf)) > 0) {
  5705.              if (fwrite(buf, cc, 1, f) <= 0)
  5706. !             CursesErrorMsg(Gtxt("Problems Writing",123));
  5707.              twirl();
  5708.         }
  5709.         if (Openpipe)
  5710. ***************
  5711. *** 1231,1237 ****
  5712.        *Userfilename = '\0';
  5713.   
  5714.        sprintf(Title,"%s", GDgetTitle(gd));
  5715. !      if (CURGetOneOption(CursesScreen, Title, "Save list of items in file:",
  5716.                            Userfilename)<0)
  5717.         return;
  5718.        saveto = Userfilename;
  5719. --- 1269,1276 ----
  5720.        *Userfilename = '\0';
  5721.   
  5722.        sprintf(Title,"%s", GDgetTitle(gd));
  5723. !      if (CURGetOneOption(CursesScreen, Title, 
  5724. !              Gtxt("Save list of items in file:",137),
  5725.                            Userfilename)<0)
  5726.         return;
  5727.        saveto = Userfilename;
  5728. ***************
  5729. *** 1269,1275 ****
  5730.               
  5731.              } else {
  5732.               char tmpstr[256];
  5733. !             sprintf(tmpstr, "No such user '%s'", saveto+1);
  5734.               CursesErrorMsg(tmpstr);
  5735.               return;
  5736.              }
  5737. --- 1308,1314 ----
  5738.               
  5739.              } else {
  5740.               char tmpstr[256];
  5741. !             sprintf(tmpstr, Gtxt("No such user '%s'",114), saveto+1);
  5742.               CursesErrorMsg(tmpstr);
  5743.               return;
  5744.              }
  5745. ***************
  5746. *** 1289,1295 ****
  5747.        if (f == NULL) {
  5748.         char tempstr[128];
  5749.   
  5750. !       sprintf(tempstr, "Couldn't create '%s'", saveto);
  5751.         /** Should give better error messages here **/
  5752.         CursesErrorMsg(tempstr);
  5753.         return;
  5754. --- 1328,1334 ----
  5755.        if (f == NULL) {
  5756.         char tempstr[128];
  5757.   
  5758. !       sprintf(tempstr, Gtxt("Couldn't create '%s'",80), saveto);
  5759.         /** Should give better error messages here **/
  5760.         CursesErrorMsg(tempstr);
  5761.         return;
  5762. ***************
  5763. *** 1302,1308 ****
  5764.             if ((cp = strstr(buf, Searchstring)) != NULL)
  5765.              *(cp-1) = '\n';
  5766.        if (fwrite(buf, strlen(buf), 1, f) <= 0)
  5767. !           CursesErrorMsg("Problems Writing");
  5768.        twirl();
  5769.   
  5770.        /*** Write the Items ***/
  5771. --- 1341,1347 ----
  5772.             if ((cp = strstr(buf, Searchstring)) != NULL)
  5773.              *(cp-1) = '\n';
  5774.        if (fwrite(buf, strlen(buf), 1, f) <= 0)
  5775. !           CursesErrorMsg(Gtxt("Problems Writing",123));
  5776.        twirl();
  5777.   
  5778.        /*** Write the Items ***/
  5779. ***************
  5780. *** 1310,1316 ****
  5781.        for (j = 0; j < numitems; j++) {
  5782.             sprintf(buf, "%s\n", GSgetTitle(GDgetEntry(gd, j))); 
  5783.             if (fwrite(buf, strlen(buf), 1, f) <= 0) {
  5784. !                CursesErrorMsg("Problems Writing");
  5785.             }
  5786.         twirl();
  5787.        }
  5788. --- 1349,1355 ----
  5789.        for (j = 0; j < numitems; j++) {
  5790.             sprintf(buf, "%s\n", GSgetTitle(GDgetEntry(gd, j))); 
  5791.             if (fwrite(buf, strlen(buf), 1, f) <= 0) {
  5792. !                CursesErrorMsg(Gtxt("Problems Writing",123));
  5793.             }
  5794.         twirl();
  5795.        }
  5796. ***************
  5797. *** 1359,1365 ****
  5798.   
  5799.        if (strlen(command) == 0) {
  5800.         if (SecureMode || NoShellMode)
  5801. !            CursesErrorMsg("Sorry, no viewer for the file....");
  5802.         else
  5803.              Save_file(gs, NULL, view);
  5804.   
  5805. --- 1398,1404 ----
  5806.   
  5807.        if (strlen(command) == 0) {
  5808.         if (SecureMode || NoShellMode)
  5809. !            CursesErrorMsg(Gtxt("Sorry, no viewer for the file....",166));
  5810.         else
  5811.              Save_file(gs, NULL, view);
  5812.   
  5813. ***************
  5814. *** 1386,1392 ****
  5815.         return_status = TPU$TPU(&command_desc);
  5816.         if (!return_status&1) {
  5817.              CURenter(CursesScreen);
  5818. !            CursesErrorMsg("Error invoking callable TPU as a pager!!!");
  5819.              return;
  5820.         }
  5821.        } else
  5822. --- 1425,1431 ----
  5823.         return_status = TPU$TPU(&command_desc);
  5824.         if (!return_status&1) {
  5825.              CURenter(CursesScreen);
  5826. !            CursesErrorMsg(Gtxt("Error invoking callable TPU as a pager!!!",85));
  5827.              return;
  5828.         }
  5829.        } else
  5830. ***************
  5831. *** 1403,1409 ****
  5832.   
  5833.   
  5834.   #ifdef VMS
  5835. !      printf("\nPress %sRETURN%s to continue",
  5836.                CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen));
  5837.   
  5838.        if (!SecureMode && !NoShellMode) {
  5839. --- 1442,1448 ----
  5840.   
  5841.   
  5842.   #ifdef VMS
  5843. !      printf(Gtxt("\nPress %sRETURN%s to continue",184),
  5844.                CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen));
  5845.   
  5846.        if (!SecureMode && !NoShellMode) {
  5847. ***************
  5848. *** 1411,1417 ****
  5849.              printf(",\n   ");
  5850.         else
  5851.              printf(", ");
  5852. !       printf("%sm%s to mail, %sD%s to download, %ss%s to save, or %sp%s to print:",
  5853.            CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen),
  5854.            CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen),
  5855.            CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen),
  5856. --- 1450,1456 ----
  5857.              printf(",\n   ");
  5858.         else
  5859.              printf(", ");
  5860. !       printf(Gtxt("%sm%s to mail, %sD%s to download, %ss%s to save, or %sp%s to print:",61),
  5861.            CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen),
  5862.            CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen),
  5863.            CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen),
  5864. ***************
  5865. *** 1419,1437 ****
  5866.        }
  5867.   #ifndef NOMAIL
  5868.        else {
  5869. !       printf(", %sm%s to mail, %sD%s to download:",
  5870.            CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen),
  5871.            CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen));
  5872.        }
  5873.   #endif
  5874.   #else
  5875. !      printf("\nPress <RETURN> to continue");
  5876.   
  5877.        if (!SecureMode && !NoShellMode)
  5878. !       printf(",\n   <m> to mail, <D> to download, <s> to save, or <p> to print:");
  5879.   #ifndef NOMAIL
  5880.        else
  5881. !       printf(", <m> to mail, <D> to download:");
  5882.   #endif
  5883.   #endif
  5884.        fflush(stdin);
  5885. --- 1458,1476 ----
  5886.        }
  5887.   #ifndef NOMAIL
  5888.        else {
  5889. !       printf(Gtxt(", %sm%s to mail, %sD%s to download:",62),
  5890.            CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen),
  5891.            CURgetHighon(CursesScreen), CURgetHighoff(CursesScreen));
  5892.        }
  5893.   #endif
  5894.   #else
  5895. !      printf(Gtxt("\nPress <RETURN> to continue",185));
  5896.   
  5897.        if (!SecureMode && !NoShellMode)
  5898. !       printf(Gtxt(",\n   <m> to mail, <D> to download, <s> to save, or <p> to print:",64));
  5899.   #ifndef NOMAIL
  5900.        else
  5901. !       printf(Gtxt(", <m> to mail, <D> to download:",63));
  5902.   #endif
  5903.   #endif
  5904.        fflush(stdin);
  5905. ***************
  5906. *** 1490,1496 ****
  5907.                       (void) getchar();
  5908.   #endif
  5909.               CURenter(CursesScreen);
  5910. !             Draw_Status("Saving File...");
  5911.               refresh();
  5912.   
  5913.                if (!(SecureMode || NoShellMode))
  5914. --- 1529,1535 ----
  5915.                       (void) getchar();
  5916.   #endif
  5917.               CURenter(CursesScreen);
  5918. !             Draw_Status(Gtxt("Saving File...",138));
  5919.               refresh();
  5920.   
  5921.                if (!(SecureMode || NoShellMode))
  5922. ***************
  5923. *** 1502,1508 ****
  5924.                       (void) getchar();
  5925.   #endif
  5926.               if (!RCprintCommand(GlobalRC, view, GSgetLocalFile(gs), command)) {
  5927. !              CursesErrorMsg("Sorry, cannot print this document");
  5928.                return;
  5929.               }
  5930.               FIOsystem(command);
  5931. --- 1541,1547 ----
  5932.                       (void) getchar();
  5933.   #endif
  5934.               if (!RCprintCommand(GlobalRC, view, GSgetLocalFile(gs), command)) {
  5935. !              CursesErrorMsg(Gtxt("Sorry, cannot print this document",155));
  5936.                return;
  5937.               }
  5938.               FIOsystem(command);
  5939. ***************
  5940. *** 1525,1532 ****
  5941.               break;
  5942.               
  5943.              default:
  5944. !             Debug("GSdisplayAfter - beep\r\n",NULL)
  5945. !             Debug("GSdisplayAfter - beep2\r\n",NULL)
  5946.               puts(CURgetBell(CursesScreen));
  5947.               fflush(stdout);
  5948.               ch=0;
  5949. --- 1564,1570 ----
  5950.               break;
  5951.               
  5952.              default:
  5953. !             Debugmsg("GSdisplayAfter - beep\r\n");
  5954.               puts(CURgetBell(CursesScreen));
  5955.               fflush(stdout);
  5956.               ch=0;
  5957. ***************
  5958. *** 1554,1560 ****
  5959.        mess[0] = Message;
  5960.        mess[1] = NULL;
  5961.   
  5962. !      Debug("CursesMsg - beep\r\n",NULL)
  5963.        CURBeep(CursesScreen);
  5964.   
  5965.        CURDialog(CursesScreen, title,mess);
  5966. --- 1592,1598 ----
  5967.        mess[0] = Message;
  5968.        mess[1] = NULL;
  5969.   
  5970. !      Debugmsg("CursesMsg - beep\r\n")
  5971.        CURBeep(CursesScreen);
  5972.   
  5973.        CURDialog(CursesScreen, title,mess);
  5974. ***************
  5975. *** 1572,1578 ****
  5976.   CursesErrorMsg(Message)
  5977.     char *Message;
  5978.   {
  5979. !      CursesMsg(Message, "Gopher Error");
  5980.   }
  5981.   
  5982.   
  5983. --- 1610,1616 ----
  5984.   CursesErrorMsg(Message)
  5985.     char *Message;
  5986.   {
  5987. !      CursesMsg(Message, Gtxt("Gopher Error",90));
  5988.   }
  5989.   
  5990.   
  5991. diff -c gopher+/gopher/pager.c:3.14 gopher+/gopher/pager.c:3.20
  5992. *** gopher+/gopher/pager.c:3.14    Fri May 27 00:08:51 1994
  5993. --- gopher+/gopher/pager.c    Fri May 27 00:08:51 1994
  5994. ***************
  5995. *** 1,7 ****
  5996. --- 1,40 ----
  5997. + /********************************************************************
  5998. +  * $Author: lindner $
  5999. +  * $Revision: 3.20 $
  6000. +  * $Date: 1994/05/19 14:08:05 $
  6001. +  * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopher/pager.c,v $
  6002. +  * $State: Exp $
  6003. +  *
  6004. +  * Paul Lindner, University of Minnesota CIS.
  6005. +  *
  6006. +  * Copyright 1991, 92, 93, 94 by the Regents of the University of Minnesota
  6007. +  * see the file "Copyright" in the distribution for conditions of use.
  6008. +  *********************************************************************
  6009. +  * MODULE: pager.c
  6010. +  * neato pager..
  6011. +  *********************************************************************
  6012. +  * Revision History:
  6013. +  * $Log: pager.c,v $
  6014. +  * Revision 3.20  1994/05/19  14:08:05  lindner
  6015. +  * use fast malloc on VMS VAXC
  6016. +  *
  6017. +  * Revision 3.19  1994/05/18  03:59:41  lindner
  6018. +  * Change to FIOsystem() for VMS
  6019. +  *
  6020. +  * Revision 3.18  1994/05/17  05:48:06  lindner
  6021. +  * Massive internationalization change
  6022. +  *
  6023. +  * Revision 3.17  1994/05/14  04:13:47  lindner
  6024. +  * Internationalization...
  6025. +  *
  6026. +  *
  6027. +  *********************************************************************/
  6028.   /** Note, uses Global "Searchstring" **/
  6029.   
  6030.   #include "gopher.h"
  6031.   #include "CURcurses.h"
  6032. + #include "Malloc.h"
  6033.   
  6034.   #ifdef VMS
  6035.   #include <stat.h>
  6036. ***************
  6037. *** 22,39 ****
  6038.   static int  currentpage;
  6039.   
  6040.   
  6041. - char *PagerHelp[9] = 
  6042. - {"u, ^G, left : Return to menu",
  6043. -  "space, down : Move to the next page",
  6044. -  "b, up       : Move to the previous page",
  6045. -  "/           : Search for text",
  6046. -  "m           : mail current document",
  6047. -  "s           : save current document",
  6048. -  "p           : print current document",
  6049. -  "D           : download current document",
  6050. -  NULL
  6051. -  };
  6052.   /*
  6053.    * This is the beginning of a built in pager..  
  6054.    * it is very pretty..
  6055. --- 55,60 ----
  6056. ***************
  6057. *** 40,46 ****
  6058. --- 61,87 ----
  6059.    *
  6060.    */
  6061.   
  6062. + void
  6063. + PagerHelp(cur)
  6064. +   CursesObj *cur;
  6065. + {
  6066. +      static char **helpmenu = NULL;
  6067.   
  6068. +      if (helpmenu == NULL) {
  6069. +       helpmenu = (char**) malloc(sizeof(char*) * 9);
  6070. +       helpmenu[0] = Gtxt("u, ^G, left : Return to menu",19);
  6071. +       helpmenu[1] = Gtxt("space, down : Move to the next page",20);
  6072. +       helpmenu[2] = Gtxt("b, up       : Move to the previous page",21);
  6073. +       helpmenu[3] = Gtxt("/           : Search for text",22);
  6074. +       helpmenu[4] = Gtxt("m           : mail current document",23);
  6075. +       helpmenu[5] = Gtxt("s           : save current document",24);
  6076. +       helpmenu[6] = Gtxt("p           : print current document",25);
  6077. +       helpmenu[7] = Gtxt("D           : download current document",26);
  6078. +       helpmenu[8] = NULL;
  6079. +      }
  6080. +      
  6081. +      CURDialog(cur, Gtxt("Pager Help",18), helpmenu);
  6082. + }
  6083.   
  6084.   void
  6085.   PagerInitGlobals()
  6086. ***************
  6087. *** 88,98 ****
  6088.   
  6089.        /****/
  6090.        wmove(stdscr, LINES-1,0);
  6091. !      CURbutton(cur, stdscr, "PageDown: <SPACE>", FALSE);
  6092.        waddch(stdscr, ' ');
  6093. !      CURbutton(cur, stdscr, "Help: ?", FALSE);
  6094.        waddch(stdscr, ' ');
  6095. !      CURbutton(cur, stdscr, "Return to Menu: u", FALSE);
  6096.   }
  6097.   
  6098.   
  6099. --- 129,139 ----
  6100.   
  6101.        /****/
  6102.        wmove(stdscr, LINES-1,0);
  6103. !      CURbutton(cur, stdscr, Gtxt("PageDown: <SPACE>",115), FALSE);
  6104.        waddch(stdscr, ' ');
  6105. !      CURbutton(cur, stdscr, Gtxt("Help: ?",96), FALSE);
  6106.        waddch(stdscr, ' ');
  6107. !      CURbutton(cur, stdscr, Gtxt("Return to Menu: u",134), FALSE);
  6108.   }
  6109.   
  6110.   
  6111. ***************
  6112. *** 161,167 ****
  6113.   PagerPrintLine(inputline)
  6114.     char *inputline;
  6115.   {
  6116. !      int lowwordnum, i;
  6117.        char *cp, *lowword;
  6118.        int wlen;
  6119.   
  6120. --- 202,208 ----
  6121.   PagerPrintLine(inputline)
  6122.     char *inputline;
  6123.   {
  6124. !      int lowwordnum = -1, i;
  6125.        char *cp, *lowword;
  6126.        int wlen;
  6127.   
  6128. ***************
  6129. *** 281,296 ****
  6130.        /*** Display buttons ***/
  6131.        wmove(stdscr, LINES - 1, 0);
  6132.        wclrtoeol(stdscr);
  6133. !      CURbutton(cur, stdscr, "Help: ?", FALSE);
  6134.        waddstr(stdscr, "  ");
  6135. !      CURbutton(cur, stdscr, "Exit: u", FALSE);
  6136.        waddstr(stdscr, "  ");
  6137.        if (*bytecount != totalbytes) {
  6138. !           CURbutton(cur, stdscr, "PageDown: Space", FALSE);
  6139.             waddstr(stdscr, "  ");
  6140.        }
  6141.        if (currentpage > 1)
  6142. !           CURbutton(cur, stdscr, "PageUp: b", FALSE);
  6143.   }
  6144.   
  6145.   /*
  6146. --- 322,337 ----
  6147.        /*** Display buttons ***/
  6148.        wmove(stdscr, LINES - 1, 0);
  6149.        wclrtoeol(stdscr);
  6150. !      CURbutton(cur, stdscr, Gtxt("Help: ?",96), FALSE);
  6151.        waddstr(stdscr, "  ");
  6152. !      CURbutton(cur, stdscr, Gtxt("Exit: u",86), FALSE);
  6153.        waddstr(stdscr, "  ");
  6154.        if (*bytecount != totalbytes) {
  6155. !           CURbutton(cur, stdscr, Gtxt("PageDown: Space",116), FALSE);
  6156.             waddstr(stdscr, "  ");
  6157.        }
  6158.        if (currentpage > 1)
  6159. !           CURbutton(cur, stdscr, Gtxt("PageUp: b",117), FALSE);
  6160.   }
  6161.   
  6162.   /*
  6163. ***************
  6164. *** 305,311 ****
  6165.     char *search;
  6166.   {
  6167.        int i;
  6168. !      char *cp;
  6169.        
  6170.        do {
  6171.         /** Save current bytecount position **/
  6172. --- 346,352 ----
  6173.     char *search;
  6174.   {
  6175.        int i;
  6176. !      char *cp = NULL;
  6177.        
  6178.        do {
  6179.         /** Save current bytecount position **/
  6180. ***************
  6181. *** 365,371 ****
  6182.        thefile = fopen(GSgetLocalFile(gs), "r");
  6183.   
  6184.        if (thefile == NULL) {
  6185. !       CursesErrorMsg("Cannot Open requested file..");
  6186.         return;
  6187.        }
  6188.   
  6189. --- 406,412 ----
  6190.        thefile = fopen(GSgetLocalFile(gs), "r");
  6191.   
  6192.        if (thefile == NULL) {
  6193. !       CursesErrorMsg(Gtxt("Cannot Open requested file..",71));
  6194.         return;
  6195.        }
  6196.   
  6197. ***************
  6198. *** 435,447 ****
  6199.         case KEY_HELP:
  6200.             case 'h':
  6201.         case '?':
  6202. !            CURDialog(cur, "Pager Help", PagerHelp);
  6203. !            touchwin(stdscr);
  6204.              break;
  6205.   
  6206.         case 'p':
  6207.              if (SecureMode || NoShellMode) {
  6208. !             CursesErrorMsg("Sorry, you are not allowed to print files");
  6209.               touchwin(stdscr);
  6210.               break;
  6211.              }
  6212. --- 476,487 ----
  6213.         case KEY_HELP:
  6214.             case 'h':
  6215.         case '?':
  6216. !            PagerHelp(cur);
  6217.              break;
  6218.   
  6219.         case 'p':
  6220.              if (SecureMode || NoShellMode) {
  6221. !             CursesErrorMsg(Gtxt("Sorry, you are not allowed to print files",161));
  6222.               touchwin(stdscr);
  6223.               break;
  6224.              }
  6225. ***************
  6226. *** 449,469 ****
  6227.              GSgetLocalFile(gs), command) || 
  6228.              !strncasecmp(command, "- none -", 8) || 
  6229.              strlen(command) == 0) {
  6230. !             CursesErrorMsg("Sorry, no method to print this document");
  6231.               touchwin(stdscr);
  6232.               break;
  6233.              }
  6234. !            Dialogmess[0] = strdup("The filename is:");
  6235.              Dialogmess[1] = strdup(GSgetLocalFile(gs));
  6236.              Dialogmess[2] = NULL;
  6237.   
  6238. !            if (CURDialog(cur, "Print current document", Dialogmess) != -1) {
  6239. ! #ifdef VMS
  6240. !             if (!system(command))
  6241. ! #else
  6242. !             if (system(command))
  6243. ! #endif
  6244. !             CursesErrorMsg("Encountered printing problem, sorry...");
  6245.              }
  6246.   
  6247.              free(Dialogmess[0]);
  6248. --- 489,505 ----
  6249.              GSgetLocalFile(gs), command) || 
  6250.              !strncasecmp(command, "- none -", 8) || 
  6251.              strlen(command) == 0) {
  6252. !             CursesErrorMsg(Gtxt("Sorry, no method to print this document",156));
  6253.               touchwin(stdscr);
  6254.               break;
  6255.              }
  6256. !            Dialogmess[0] = strdup(Gtxt("The filename is:",174));
  6257.              Dialogmess[1] = strdup(GSgetLocalFile(gs));
  6258.              Dialogmess[2] = NULL;
  6259.   
  6260. !            if (CURDialog(cur, Gtxt("Print current document",122), Dialogmess) != -1) {
  6261. !             if (FIOsystem(command))
  6262. !             CursesErrorMsg(Gtxt("Encountered printing problem, sorry...",84));
  6263.              }
  6264.   
  6265.              free(Dialogmess[0]);
  6266. ***************
  6267. *** 478,484 ****
  6268.              if (!(SecureMode || NoShellMode))
  6269.               Save_file(gs, NULL, GSgetLocalView(gs));
  6270.              else
  6271. !             CursesErrorMsg("Sorry, you are not allowed to save files");
  6272.   
  6273.              touchwin(stdscr);
  6274.              break;
  6275. --- 514,520 ----
  6276.              if (!(SecureMode || NoShellMode))
  6277.               Save_file(gs, NULL, GSgetLocalView(gs));
  6278.              else
  6279. !             CursesErrorMsg(Gtxt("Sorry, you are not allowed to save files",162));
  6280.   
  6281.              touchwin(stdscr);
  6282.              break;
  6283. ***************
  6284. *** 503,509 ****
  6285.         case '/':
  6286.              /** Search ... ***/
  6287.              if ((CURGetOneOption(CursesScreen, "",
  6288. !                    "Search text for:", slashstring) < 0) ||
  6289.                      (slashstring[0] == '\0')) {
  6290.               touchwin(stdscr);
  6291.               break;
  6292. --- 539,546 ----
  6293.         case '/':
  6294.              /** Search ... ***/
  6295.              if ((CURGetOneOption(CursesScreen, "",
  6296. !                    Gtxt("Search text for:",141), 
  6297. !                     slashstring) < 0) ||
  6298.                      (slashstring[0] == '\0')) {
  6299.               touchwin(stdscr);
  6300.               break;
  6301. ***************
  6302. *** 512,518 ****
  6303.         case 'n':
  6304.              /** Next occurrence, and fall through from above.. **/
  6305.              if (slashstring[0] == '\0') {
  6306. !             CursesErrorMsg("Use '/' to define search first...");
  6307.               touchwin(stdscr);
  6308.                       break;
  6309.              }
  6310. --- 549,555 ----
  6311.         case 'n':
  6312.              /** Next occurrence, and fall through from above.. **/
  6313.              if (slashstring[0] == '\0') {
  6314. !             CursesErrorMsg(Gtxt("Use '/' to define search a first...",178));
  6315.               touchwin(stdscr);
  6316.                       break;
  6317.              }
  6318. ***************
  6319. *** 523,529 ****
  6320.               PagerSeekPage(thefile, currentpage-1, &bytecount);
  6321.   
  6322.              if (!PagerSearch(thefile, theline, &bytecount, slashstring)) {
  6323. !             CursesErrorMsg("Couldn't find text");
  6324.               touchwin(stdscr);
  6325.               PagerSeekPage(thefile, savedpagenum-1, &bytecount);
  6326.               PagerNextPage(cur, thefile, theline, &bytecount, 
  6327. --- 560,566 ----
  6328.               PagerSeekPage(thefile, currentpage-1, &bytecount);
  6329.   
  6330.              if (!PagerSearch(thefile, theline, &bytecount, slashstring)) {
  6331. !             CursesErrorMsg(Gtxt("Couldn't find text",82));
  6332.               touchwin(stdscr);
  6333.               PagerSeekPage(thefile, savedpagenum-1, &bytecount);
  6334.               PagerNextPage(cur, thefile, theline, &bytecount, 
  6335. diff -c /dev/null gopher+/gopher/locales/En_US.msg:1.1
  6336. *** /dev/null    Fri May 27 00:08:52 1994
  6337. --- gopher+/gopher/locales/En_US.msg    Fri May 27 00:08:52 1994
  6338. ***************
  6339. *** 0 ****
  6340. --- 1,237 ----
  6341. + $
  6342. + $ Welcome message...
  6343. + $
  6344. + $quote "
  6345. + 1 "Welcome to the wonderful world of Gopher!\n\n"
  6346. + 2 "Gopher has limitations on its use and comes without\n"
  6347. + 3 "a warranty.  Please refer to the file 'Copyright' included\n"
  6348. + 4 "in the distribution.\n\n"
  6349. + 5 "Copyright 1991,92,93,94 by the Regents of the University of Minnesota\n\n"
  6350. + 6 "Internet Gopher Information Client %s.%s patch%d\n"
  6351. + 7 "Press RETURN to continue\n"
  6352. + $ 
  6353. + $ Errors in .gopherrc
  6354. + $
  6355. + 8 "Can't write gopher configuration file!!"
  6356. + $
  6357. + $ Help for command line 
  6358. + $
  6359. + 9 "Usage: %s [-sSbDr] [-T type] [-p path] [-t title] [hostname port]+\n"
  6360. + 10 "     -s      secure mode, users without own account\n"
  6361. + 11 "     -S      secure mode, users with own account\n"
  6362. + 12 "     -p path specify path to initial item\n"
  6363. + 13 "     -T type Type of initial item\n"
  6364. + 14 "     -i      Search argument (for -T 7)\n"
  6365. + 15 "     -b      Bookmarks first\n"
  6366. + 16 "     -r      Remote user\n"
  6367. + 17 "     -D      Debug mode\n"
  6368. + $
  6369. + $ Pager help..
  6370. + $
  6371. + 18 "Pager Help"
  6372. + 19 "u, ^G, left : Return to menu"
  6373. + 20 "space, down : Move to the next page"
  6374. + 21 "b, up       : Move to the previous page"
  6375. + 22 "/           : Search for text"
  6376. + 23 "m           : mail current document"
  6377. + 24 "s           : save current document"
  6378. + 25 "p           : print current document"
  6379. + 26 "D           : download current document"
  6380. + $ 
  6381. + $ New Application Menu
  6382. + $ 
  6383. + 27 "Content-Type Name"
  6384. + 28 "Display Application"
  6385. + 29 "Printing Application"
  6386. + $ 
  6387. + $ Top Level Options
  6388. + $ 
  6389. + 30 "General Options"
  6390. + 31 "Configure Display Applications"
  6391. + 32 "Configure Printing Applications"
  6392. + 33 "Define New Content-Type"
  6393. + $
  6394. + $ Telnet connection
  6395. + $
  6396. + 34 "Warning!!!!!, you are about to leave the Internet"
  6397. + 35 "Gopher program and connect to another host. If"
  6398. + 36 "you get stuck press the control key and the"
  6399. + 37 "] key, and then type quit"
  6400. + 38 "^ key, and then type q."
  6401. + 39 "Connecting to %.40s, port %d using %s."
  6402. + 40 "Connecting to %.40s using %s."
  6403. + 41 "Use the account name \"%.40s\" to log in"
  6404. + $
  6405. + $ HTML menu
  6406. + $
  6407. + 42 "Warning!!!!!, you are about to leave the Internet Gopher"
  6408. + 43 "Client and connect to an HTML Browser.  Use the Browser"
  6409. + 44 "Help if you are not familiar with its commands."
  6410. + 45 "Upon quitting from the Browser, you will be returned to"
  6411. + 46 "the Internet Gopher Client."
  6412. + $
  6413. + $ Other html msgs
  6414. + $
  6415. + 47 "Sorry, this client does not support HTML"
  6416. + $
  6417. + $ gopher.c
  6418. + $
  6419. + 48 "Can't find an administrator for this item, sorry!"
  6420. + $ 
  6421. + $ Gripe form msgs
  6422. + $ 
  6423. + 49 "Hit the Enter key to send your message."
  6424. + 50 "Hit the Tab key at the end of each line you type."
  6425. + 51 "Subject"
  6426. + 52 "Problem"
  6427. + 53 "Cannot send mail..."
  6428. + 54 "Mailing gripe to %s..."
  6429. + 55 "Words to search for"
  6430. + 56 "  Page: %d/%d"
  6431. + 57 " for Help, "
  6432. + 58 " to Quit"
  6433. + 59 " to go up a menu"
  6434. + 60 "%s: Nothing received for main menu, can't continue\n"
  6435. + 61 "%sm%s to mail, %sD%s to download, %ss%s to save, or %sp%s to print:"
  6436. + 62 ", %sm%s to mail, %sD%s to download:"
  6437. + 63 ", <m> to mail, <D> to download:"
  6438. + 64 ",\n   <m> to mail, <D> to download, <s> to save, or <p> to print:"
  6439. + 65 "Address syntax rejected..."
  6440. + 66 "Bold Search words in Builtin Pager"
  6441. + 67 "Bookmarks"
  6442. + 68 "Can't open old file.."
  6443. + 69 "Can't write to SYS$SCRATCH!"
  6444. + 70 "Can't write to the /tmp directory!"
  6445. + 71 "Cannot Open requested file.."
  6446. + 72 "Cannot connect to host %.40s, port %d."
  6447. + 73 "Choose a document type"
  6448. + 74 "Choose a download method"
  6449. + 75 "Connect to a new Gopher Server"
  6450. + 76 "Connect to an anonymous FTP Server via the Gopher gateway"
  6451. + 77 "Connecting..."
  6452. + 78 "Connection failed: %s."
  6453. + 79 "Connection to remote host failed."
  6454. + 80 "Couldn't create '%s'"
  6455. + 81 "Couldn't execute %s\n"
  6456. + 82 "Couldn't find text"
  6457. + 83 "Couldn't make a tmp file!\n"
  6458. + 84 "Encountered printing problem, sorry..."
  6459. + 85 "Error invoking callable TPU as a pager!!!"
  6460. + 86 "Exit: u"
  6461. + 87 "Fetching Fields..."
  6462. + 88 "File didn't transfer successfully"
  6463. + 89 "Gopher Directory Information"
  6464. + 90 "Gopher Error"
  6465. + 91 "Gopher File"
  6466. + 92 "Gopher Help File"
  6467. + 93 "Gopher Item Information"
  6468. + 94 "Gopher Options"
  6469. + 95 "Gopher Transmission Error"
  6470. + 96 "Help: ?"
  6471. + 97 "Home Gopher server: %.59s"
  6472. + 98 "Host to query:"
  6473. + 99 "Hostname"
  6474. + 100 "Hostname is unknown."
  6475. + 101 "I don't understand your terminal type\n"
  6476. + 102 "Internet Gopher Information Client v%s.%s.%d"
  6477. + 103 "Link Info"
  6478. + 104 "Local Date and Time"
  6479. + 105 "Mail current document to:"
  6480. + 106 "Mailing File..."
  6481. + 107 "Mailing file to %s..."
  6482. + 108 "Movie viewing not yet implemented"
  6483. + 109 "Name for this bookmark:"
  6484. + 110 "Network Error"
  6485. + 111 "No"
  6486. + 112 "No bookmarks are defined"
  6487. + 113 "No display command is mapped to this view!"
  6488. + 114 "No such user '%s'"
  6489. + 115 "PageDown: <SPACE>"
  6490. + 116 "PageDown: Space"
  6491. + 117 "PageUp: b"
  6492. + 118 "Port"
  6493. + 119 "Press "
  6494. + 120 "Press <RETURN> to continue"
  6495. + 121 "Press <RETURN> when you're ready\n"
  6496. + 122 "Print current document"
  6497. + 123 "Problems Writing"
  6498. + 124 "Really quit (y/n) ?"
  6499. + 125 "Receiving Directory..."
  6500. + 126 "Receiving File..."
  6501. + 127 "Receiving HTML page..."
  6502. + 128 "Receiving Information..."
  6503. + 129 "Receiving MIME File..."
  6504. + 130 "Receiving Movie..."
  6505. + 131 "Receiving Sound..."
  6506. + 132 "Receiving Image..."
  6507. + 133 "Retrieving Directory..."
  6508. + 134 "Return to Menu: u"
  6509. + 135 "Root menu: "
  6510. + 136 "Save in file:"
  6511. + 137 "Save list of items in file:"
  6512. + 138 "Saving File..."
  6513. + 139 "Search directory titles for:"
  6514. + 140 "Search failed..."
  6515. + 141 "Search text for:"
  6516. + 142 "Searching Text..."
  6517. + 143 "Searching..."
  6518. + 144 "Selector (Optional)"
  6519. + 145 "Show host's local date and time"
  6520. + 146 "Size       Language      Document Type\n"
  6521. + 147 "---------- ------------- ----------------------------\n"
  6522. + 148 "Sorry, cannot display this file"
  6523. + 149 "Sorry, can't delete top level directory."
  6524. + 150 "Sorry, can't download that!"
  6525. + 151 "Sorry, can't make a bookmark of bookmarks"
  6526. + 152 "Sorry, can't save files with this account"
  6527. + 153 "Sorry, can't spawn in with this account"
  6528. + 154 "Sorry, can't save that item to a file!"
  6529. + 155 "Sorry, cannot print this document"
  6530. + 156 "Sorry, no method to print this document"
  6531. + 157 "Sorry, telnet is not available."
  6532. + 158 "Sorry, this machine doesn't support images"
  6533. + 159 "Sorry, this machine doesn't support sounds"
  6534. + 160 "Sorry, tn3270 is not available."
  6535. + 161 "Sorry, you are not allowed to print files"
  6536. + 162 "Sorry, you are not allowed to save files"
  6537. + 163 "Sorry, you are not allowed to set options in secure mode."
  6538. + 164 "Sorry, you're not allowed to do this"
  6539. + 165 "Sorry, this machine doesn't support movies"
  6540. + 166 "Sorry, no viewer for the file...."
  6541. + 167 "Spawn to DCL failed!"
  6542. + 168 "Spawn to default shell failed!"
  6543. + 169 "Spawning DCL subprocess.  Logout to return to Gopher.\n"
  6544. + 170 "Spawning your default shell.  Type 'exit' to return to Gopher.\n\n"
  6545. + 171 "Start your capture now...\n\n"
  6546. + 172 "Start your download now...\n"
  6547. + 173 "System problem, unable to mail"
  6548. + 174 "The filename is:"
  6549. + 175 "Unable to allocate a socket."
  6550. + 176 "Unix piping requested.  Check your configuration!"
  6551. + 177 "Unknown error."
  6552. + 178 "Use '/' to define a search first..."
  6553. + 179 "View item number: "
  6554. + 180 "Yes"
  6555. + 181 "Your Choice"
  6556. + 182 "\nDownload Complete. %d total bytes, %d bytes/sec\n"
  6557. + 183 "\nDownload could not be completed, sorry... \n"
  6558. + 184 "\nPress %sRETURN%s to continue"
  6559. + 185 "\nPress <RETURN> to continue"
  6560. + 186 "\n\nServer Information\n"
  6561. + 187 "anonymous FTP Host"
  6562. + 188 "gopher: Nothing received for main menu, can't continue\n"
  6563. diff -c /dev/null gopher+/gopher/locales/Es.msg:1.4
  6564. *** /dev/null    Fri May 27 00:08:52 1994
  6565. --- gopher+/gopher/locales/Es.msg    Fri May 27 00:08:53 1994
  6566. ***************
  6567. *** 0 ****
  6568. --- 1,241 ----
  6569. + $
  6570. + $ Translation courtesy of Fernando Garcia-Loygorri <fernando@ender.upc.es>
  6571. + $
  6572. + $
  6573. + $ Welcome message...
  6574. + $
  6575. + $quote "
  6576. + 1 "íBienvenido al maravilloso mundo de Gopher!\n\n"
  6577. + 2 "Hay limitaciones en el uso de Gopher y no estß\n"
  6578. + 3 "garantizado. Por favor, lea el fichero 'Copyright' incluφdo\n"
  6579. + 4 "en el paquete.\n\n"
  6580. + 5 "Copyright 1991,92,93,94 by the Regents of the Universidad of Minnesota\n\n"
  6581. + 6 "Cliente de Informaci≤n de Gopher de Internet %s.%s parche%d\n"
  6582. + 7 "Pulse INTRO para continuar\n"
  6583. + $ 
  6584. + $ Errors in .gopherrc
  6585. + $
  6586. + 8 "íNo puedo escribir el fichero de configuraci≤n de Gopher!"
  6587. + $
  6588. + $ Help for command line 
  6589. + $
  6590. + 9 "Usage: %s [-sSbDr] [-T type] [-p path] [-t title] [hostname port]+\n"
  6591. + 10 "     -s      Modo seguro, usuarios sin cuenta propia\n"
  6592. + 11 "     -S      Modo seguro, usuarios con cuenta propia\n"
  6593. + 12 "     -p senda Especificaci≤n de la senda al elemento inicial\n"
  6594. + 13 "     -T tipo Tipo de elemento inicial\n"
  6595. + 14 "     -i      Argumento de b·squeda (para -T 7)\n"
  6596. + 15 "     -b      Primero los recordatorios\n"
  6597. + 16 "     -r      Usuario remoto\n"
  6598. + 17 "     -D      Modo de depuraci≤n\n"
  6599. + $
  6600. + $ Pager help..
  6601. + $
  6602. + 18 "Ayuda sobre el compaginador"
  6603. + 19 "u, ^G, izquierda : Volver al men·"
  6604. + 20 "espacio, abajo   : Ir a la siguiente pßgina"
  6605. + 21 "b, arriba        : Ir a la pßgina anterior"
  6606. + 22 "/                : Buscar en el texto"
  6607. + 23 "m                : Enviar por correo el documento actual"
  6608. + 24 "s                : Guardar el documento actual"
  6609. + 25 "p                : Imprimir el documento actual"
  6610. + 26 "D                : Descargar el documento actual"
  6611. + $ 
  6612. + $ New Application Menu
  6613. + $ 
  6614. + 27 "Nombre del tipo de contenido"
  6615. + 28 "Aplicaci≤n de presentaci≤n"
  6616. + 29 "Aplicaci≤n de impresi≤n"
  6617. + $ 
  6618. + $ Top Level Options
  6619. + $ 
  6620. + 30 "Opciones generales"
  6621. + 31 "Configuraci≤n de las aplicaciones de presentaci≤n"
  6622. + 32 "Configuraci≤n de las aplicaciones de impresi≤n"
  6623. + 33 "Definici≤n de un tipo de contenido nuevo"
  6624. + $
  6625. + $ Telnet connection
  6626. + $
  6627. + 34 "íííAviso!!!, va a abandonar el programa Gopher"
  6628. + 35 "de Internet y a conectarse a otro ordenador. Si"
  6629. + 36 "se queda atascado, pulse la tecla de Control junto" 
  6630. + 37 "con la tecla ] y despuΘs teclee quit"
  6631. + 38 "tecla ^ y despuΘs teclee q."
  6632. + 39 "Conectando a %.40s, puerta %d usando %s."
  6633. + 40 "Conectando a %.40s usando %s."
  6634. + 41 "Use el nombre de cuenta \"%.40s\" para entrar"
  6635. + $
  6636. + $ HTML menu
  6637. + $
  6638. + 42 "íííAviso!!!, va a abandonar el cliente Gopher de"
  6639. + 43 "Internet y a conectarse a un Lector de HTML. Use la Ayuda"
  6640. + 44 "del Lector si no estß familiarizado con sus ≤rdenes."
  6641. + 45 "Al salir del Lector, serß devuelto al cliente Gopher"
  6642. + 46 "de Internet."
  6643. + $
  6644. + $ Other html msgs
  6645. + $
  6646. + 47 "Lo sienta, este cliente no da soporte a HTML"
  6647. + $
  6648. + $ gopher.c
  6649. + $
  6650. + 48 "Lo siento, no puedo encontrar un administrador para este elemento"
  6651. + $ 
  6652. + $ Gripe form msgs
  6653. + $ 
  6654. + 49 "Pulse la tecla Intro para enviar su mensaje."
  6655. + 50 "Pulse la tecla de tabulaci≤n al final de cada lφnea que escriba."
  6656. + 51 "Sujecto"
  6657. + 52 "Problema"
  6658. + 53 "Cannot send mail..."
  6659. + 54 "Enviando una queja a %s..."
  6660. + 55 "Palabras a buscar"
  6661. + 56 "  Pßgina: %d/%d"
  6662. + 57 " para la Ayuda, "
  6663. + 58 " para Salir"
  6664. + 59 " para subir un men·" 
  6665. + 60 "%s: No se ha recibido el men· principal, no es posible seguir\n"
  6666. + 61 "%sm%s para enviar por correo, %sD%s para descargar, %ss%s para guardar o %sp%s para imprimir:"
  6667. + 62 ", %sm%s para enviar por correo, %sD%s para descargar:"
  6668. + 63 ", <m> para enviar por correo, <D> para descargar:"
  6669. + 64 "\n <m> para enviar por correo, <D> para descargar, <s> para guardar o <p> para imprimir:"
  6670. + 65 "La sintaxis de la direcci≤n ha sido rechazada..."
  6671. + 66 "Palabras buscadas en negrita en el compaginador interno"
  6672. + 67 "Recordatorios"
  6673. + 68 "No puedo abrir el antiguo fichero.."
  6674. + 69 "íNo puedo escribir en SYS$SCRATCH!"
  6675. + 70 "íNo puedo escribir en el directorio /tmp!"
  6676. + 71 "No puedo abrir el fichero solicitado.."
  6677. + 72 "No puedo conectar al ordenador %.40s, puerta %d."
  6678. + 73 "Elija un tipo de documento"
  6679. + 74 "Elija un mΘtodo de descarga"
  6680. + 75 "Conexi≤n a otro servidor de Gopher"
  6681. + 76 "Conexi≤n a un servidor de FTP an≤nimo vφa la pasarela Gopher"
  6682. + 77 "Conectando..."
  6683. + 78 "Fallo en la conexi≤n: %s."
  6684. + 79 "Fallo en la conexi≤n al ordenador remoto."
  6685. + 80 "No he podido crear '%s'"
  6686. + 81 "No he podido ejecutar %s\n"
  6687. + 82 "No he podido encontrar el texto"
  6688. + 83 "íNo he podido crear un fichero temporal!\n" 
  6689. + 84 "Lo siento, ha habido un problema al imprimir..."
  6690. + 85 "íError al invocar una TPU como compaginador!"
  6691. + 86 "Salir: u"
  6692. + 87 "Extrayendo campos..." 
  6693. + 88 "El fichero no fue transferido con Θxito"
  6694. + 89 "Informaci≤n sobre el directorio de Gopher"
  6695. + 90 "Error de Gopher"
  6696. + 91 "Fichero de Gopher"
  6697. + 92 "Fichero de ayuda de Gopher"
  6698. + 93 "Informaci≤n sobre elemento de Gopher"
  6699. + 94 "Opciones de Gopher"
  6700. + 95 "Error de transmisi≤n de Gopher"
  6701. + 96 "Ayuda: ?"
  6702. + 97 "Servidor de Gopher inicial: %.59s"
  6703. + 98 "Ordenador al que interrogar:"
  6704. + 99 "Nombre de ordenador"
  6705. + 100 "Nombre de ordenador desconocido."
  6706. + 101 "No puedo establecer el tipo de su terminal\n"
  6707. + 102 "Cliente de Informaci≤n de Gopher de Internet v%s.%s.%d"
  6708. + 103 "Informaci≤n sobre enlaces"
  6709. + 104 "Fecha y hora locales"
  6710. + 105 "Enviar por correo el documento actual a:"
  6711. + 106 "Enviando el fichero..."
  6712. + 107 "Enviando el fichero a %s..."
  6713. + 108 "A·n no se ha implementado el pase de pelφculas"
  6714. + 109 "Nombre de este recordatorio:"
  6715. + 110 "Error en la red"
  6716. + 111 "No"
  6717. + 112 "No hay recordatorios definidos"
  6718. + 113 "íNo hay una orden de presentaci≤n asignada a esta vista!"
  6719. + 114 "El usuario '%s' no existe"
  6720. + 115 "Siguiente pßgina: <ESPACIO>"
  6721. + 116 "Siguiente pßgina: Espacio"
  6722. + 117 "Pßgina anterior: b"
  6723. + 118 "Puerta"
  6724. + 119 "Pulse "
  6725. + 120 "Pulse <INTRO> para continuar"
  6726. + 121 "Pulse <INTRO> cuando estΘ listo\n"
  6727. + 122 "Imprimir el documento actual"
  6728. + 123 "Hay problemas escribiendo"
  6729. + 124 "┐Quiere realmente salir (y=sφ/n=no) ?"
  6730. + 125 "Recibiendo directorio..."
  6731. + 126 "Recibiendo fichero..."
  6732. + 127 "Recibiendo pßgina de HTML..."
  6733. + 128 "Recibiendo informaci≤n..."
  6734. + 129 "Recibiendo fichero MIME..."
  6735. + 130 "Recibiendo pelφcula..."
  6736. + 131 "Recibiendo sonido..."
  6737. + 132 "Receiving Image..."
  6738. + 133 "Extrayendo directorio..."
  6739. + 134 "Volver al Men·: u"
  6740. + 135 "Men· raφz: "
  6741. + 136 "Guardar en fichero:"
  6742. + 137 "Guardar lista de elementos en fichero:"
  6743. + 138 "Guardando fichero..."
  6744. + 139 "B·squeda en tφtulos de directorios de:"
  6745. + 140 "B·squeda sin Θxito..."
  6746. + 141 "B·squeda en texto de:"
  6747. + 142 "Buscando texto..."
  6748. + 143 "Buscando..."
  6749. + 144 "Seleccionador (Opcional)"
  6750. + 145 "Mostrar la fecha y hora locales en el ordenador remoto"
  6751. + 146 "Tama±o     Lenguaje      Tipo de Documento\n"
  6752. + 147 "---------- ------------- ----------------------------\n"
  6753. + 148 "Lo siento, no puedo mostrar este fichero"
  6754. + 149 "Lo siento, no puedo borrar el directorio de mßs alto nivel."
  6755. + 150 "íLo siento, no puedo descargar eso!"
  6756. + 151 "Lo siento, no puedo hacer un recordatorio de recordatorios"
  6757. + 152 "Lo siento, con esta cuenta no es posible guardar ficheros"
  6758. + 153 "Lo siento, con esta cuenta no es posible iniciar otro proceso"
  6759. + 154 "íLo siento, no puedo guardar ese elemento en un fichero!"
  6760. + 155 "Lo siento, no puedo imprimir este documento"
  6761. + 156 "Lo siento, no hay mecanismo para imprimir este documneto"
  6762. + 157 "Lo siento, telnet no estß disponible."
  6763. + 158 "Lo siento, esta mßquina no da soporte a imßgenes"
  6764. + 159 "Lo siento, esta mßquina no da soporte a sonidos"
  6765. + 160 "Lo siento, tn3270 no estß disponible."
  6766. + 161 "Lo siento, Ud. no estß autorizado a imprimir ficheros"
  6767. + 162 "Lo siento, Ud. no estß autorizado a guardar ficheros"
  6768. + 163 "Sorry, you are not allowed to set options in secure mode."
  6769. + 164 "Lo siento, Ud. no estß autorizado a hacer esto"
  6770. + 165 "Sorry, this machine doesn't support movies"
  6771. + 166 "Sorry, no viewer for the file...."
  6772. + 167 "íHa fallado el inicio del subproceso DCL!"
  6773. + 168 "íHa fallado el inicio del intΘrprete de ≤rdenes habitual!"
  6774. + 169 "Iniciando el subproceso DCL. Salga para volver a Gopher.\n"
  6775. + 170 "Iniciando su intΘrprete de ≤rdenes habitual. Teclee 'exit' para volver\na Gopher.\n\n"
  6776. + 171 "Comience ahora su captura de datos...\n\n"
  6777. + 172 "Comience ahora su descarga de datos...\n"
  6778. + 173 "Problema en el sistema, no es posible enviar correo"
  6779. + 174 "El nombre del fichero es"
  6780. + 175 "No es posible reservar un z≤calo."
  6781. + 176 "Se ha solicitado un empalme de Unix. íCompruebe su configuraci≤n!"
  6782. + 177 "Error desconocido."
  6783. + 178 "Use '/' para primero definir una b·squeda..."
  6784. + 179 "Ver elemento n·mero:"
  6785. + 180 "Sφ"
  6786. + 181 "Elija"
  6787. + 182 "\nCompletada la descarga. %d bytes en total, %d bytes/sec.\n"
  6788. + 183 "\nLo siento, no ha sido posible completar la descarga... \n"
  6789. + 184 "\nPulse %sINTRO%s para continuar"
  6790. + 185 "\nPulse <INTRO> para continuar"
  6791. + 186 "\n\nInformaci≤n del servidor\n"
  6792. + 187 "Ordenador para FTP an≤nimo"
  6793. + 188 "gopher: No se ha recibido el men· principal, no es posible seguir\n"
  6794. diff -c /dev/null gopher+/gopher/locales/Fr.msg:1.2
  6795. *** /dev/null    Fri May 27 00:08:53 1994
  6796. --- gopher+/gopher/locales/Fr.msg    Fri May 27 00:08:53 1994
  6797. ***************
  6798. *** 0 ****
  6799. --- 1,242 ----
  6800. + $
  6801. + $ Translation courtesy of Sylvie St. Georges <St-Georges.Sylvie@uqam.ca>
  6802. + $
  6803. + $
  6804. + $ Welcome message...
  6805. + $
  6806. + $quote "
  6807. + 1 "Bienvenue dans l'univers merveilleux de Gopher!\n\n"
  6808. + 2 "Gopher ne comprend aucune garantie et son utilisation n'est pas\n"
  6809. + 3 "sans restriction. S.V.P. se rΘfΘrer au fichier 'Copyright'\n"
  6810. + 4 "inclus dans la distribution.\n\n"
  6811. + 5 "Copyright 1991,92,93,94 by the Regents of the University of Minnesota\n\n"
  6812. + 6 "Client d'information Gopher pour l'Internet %s.%s rΘvision%d\n"
  6813. + 7 "Press <RETURN> to continue"
  6814. + $ 
  6815. + $ Errors in .gopherrc
  6816. + $
  6817. + 8 "Impossible d'Θcrire dans le fichier de configuration de gopher!!"
  6818. + $
  6819. + $ Help for command line 
  6820. + $
  6821. + 9 "Usage: %s [-sSbDr] [-T type] [-p chemin] [-t title] [Nom du serveur] [port]+\n"
  6822. + 10 "     -s        Mode sΘcuritaire, utilisateurs sans code d'accΦs\n"
  6823. + 11 "     -S        Mode sΘcuritaire, utilisateurs avec un code d'accΦs\n"
  6824. + 12 "     -p chemin chemin d'accΦs pour le premier ΘlΘment\n"
  6825. + 13 "     -T type   Type du premier ΘlΘment\n" 
  6826. + 14 "     -i        ParamΦtre de recherche (pour -T 7)\n"
  6827. + 15 "     -b        Signets comme Θcran d'entrΘe\n"
  6828. + 16 "     -r        Utilisateur avec accΦs α distance\n"
  6829. + 17 "     -D        Mode d'Θpuration\n"
  6830. + $
  6831. + $ Pager help..
  6832. + $
  6833. + 18 "Aide pour le dΘfileur d'Θcran"
  6834. + 19 "u, ^G, flΦche vers la gauche          : Retourne au menu"
  6835. + 20 "barre d'espacement, flΦche vers le bas: Affiche la page suivante"
  6836. + 21 "b, flΦche vers le haut                : Affiche la page prΘcΘdente"
  6837. + 22 "/                                     : Active la recherche"
  6838. + 23 "m                                     : Envoie le document par courrier"
  6839. + 24 "s                                     : Sauvegarde le document"
  6840. + 25 "p                                     : Imprime le document"
  6841. + 26 "D                                     : Active le tΘlΘchargement"
  6842. + $ 
  6843. + $ New Application Menu
  6844. + $ 
  6845. + 27 "Type du contenu"
  6846. + 28 "Progamme de visualisation"
  6847. + 29 "Programme d'impression"
  6848. + $ 
  6849. + $ Top Level Options
  6850. + $ 
  6851. + 30 "Options gΘnΘrales"
  6852. + 31 "Configuration pour la visualisation"
  6853. + 32 "Configuration pour l'impression"
  6854. + 33 "Nouveau type de contenu" 
  6855. + $
  6856. + $ Telnet connection
  6857. + $
  6858. + 34 "Attention!!!!!, vous allez quitter le programme"
  6859. + 35 "Gopher pour vous connecter sur un autre ordinateur."
  6860. + 36 "En cas de problΦme, pressez simultanΘment les touches"
  6861. + 37 "Ctrl et ] puis tapez quit."
  6862. + 38 "Ctrl et ^ puis tapez q."
  6863. + 39 "Connexion α %.40s, port %d par %s."
  6864. + 40 "Connexion α %.40s par %s."
  6865. + 41 "Au login, utilisez le nom d'usager \"%.40s\""
  6866. + $
  6867. + $ HTML menu
  6868. + $
  6869. + 42 "Attention!!!!!, vous allez quitter le client Gopher"
  6870. + 43 "pour vous connecter α un lecteur de fichiers HTML." 
  6871. + 44 "Consultez l'aide HTML pour une description des commandes."
  6872. + 45 "En quittant le lecteur HTML, vous retournerez au client"
  6873. + 46 "Gopher."
  6874. + $
  6875. + $ Other html msgs
  6876. + $
  6877. + 47 "Sorry, this client does not support HTML"
  6878. + $
  6879. + $ gopher.c
  6880. + $
  6881. + 48 "Can't find an administrator for this item, sorry!"
  6882. + $ 
  6883. + $ Gripe form msgs
  6884. + $ 
  6885. + 49 "Appuyez sur Enter pour envoyer votre message."
  6886. + 50 "Appuyez sur Tab α la fin de chaque ligne que vous tapez."
  6887. + 51 "Sujet"
  6888. + 52 "ProblΦme"
  6889. + 53 "Impossible d'envoyer du courrier..."
  6890. + 54 "Commentaires envoyΘs α %s..."
  6891. + 55 "Rechercher les mots-clΘs:"
  6892. + 56 "  Page: %d/%d"
  6893. + 57 " pour Aide, "
  6894. + 58 " pour Quitter"
  6895. + 59 " pour menu PrΘcΘdent"
  6896. + 60 "%s: Aucune information disponible dans le menu principal,\n impossible de continuer\n"
  6897. + 61 "%sm%s courrier, %sD%s tΘlΘcharger, %ss%s sauvegarder, ou %sp%s"
  6898. + 62  ", %sm%s courrier, %sD%s tΘlΘcharger:"
  6899. + 63 ", <m> courrier, <D> tΘlΘcharger:"
  6900. + 64 ",\n   <m> courrier, <D> tΘlΘcharger, <s> sauvegarder, ou <p> imprimer:"
  6901. + 65 "Erreur de syntaxe dans l'adresse..."
  6902. + 66 "Mots recherchΘs apparaissant en caractΦres gras"
  6903. + 67 "Menu des signets"
  6904. + 68 "Impossible d'ouvrir l'ancien fichier.."
  6905. + 69 "Impossible d'Θcrire dans SYS$SCRATCH!"
  6906. + 70 "Impossible d'Θcrire dans le rΘpertoire /tmp!"
  6907. + 71 "Impossible d'ouvrir le fichier.."
  6908. + 72 "Connexion α %.40s, port %d impossible."
  6909. + 73 "Choisissez un type de document"
  6910. + 74 "Choisissez le mode de tΘlΘchargement:"
  6911. + 75 "Connexion α un autre serveur Gopher"
  6912. + 76 "Connexion α un serveur FTP anonymous par la passerelle Gopher"
  6913. + 77 "Connexion en cours..."
  6914. + 78 "ProblΦme de connexion: %s."
  6915. + 79 "ProblΦme de connexion avec l'autre ordinateur."
  6916. + 80 "Impossible de crΘer '%s'"
  6917. + 81 "Impossible d'exΘcuter %s\n"
  6918. + 82 "Recherche infructueuse"
  6919. + 83 "Impossible de crΘer le fichier tmp!\n"
  6920. + 84 "DΘsolΘ! ProblΦme d'impression..."
  6921. + 85 "Erreur dans l'appel de TPU comme dΘfileur d'Θcran!!!"
  6922. + 86 "Sortie: u"
  6923. + 87 "Champs disponibles..."
  6924. + 88 "Erreur survenue pendant le transfert"
  6925. + 89 "Information sur un rΘpertoire Gopher"
  6926. + 90 "Erreur Gopher"
  6927. + 91 "Fichier Gopher"
  6928. + 92 "Fichier d'aide Gopher"
  6929. + 93 "Information sur un ΘlΘment Gopher"
  6930. + 94 "Options pour Gopher"
  6931. + 95 "Erreur de transmission Gopher"
  6932. + 96 "Aide: ?"
  6933. + 97 "Serveur Gopher primaire: %.59s"
  6934. + 98 "Ordinateur α interroger:"
  6935. + 99 "Nom du serveur"
  6936. + 100 "Ce nom d'ordinateur est inconnu."
  6937. + 101 "Je ne peux identifier votre type de terminal\n"
  6938. + 102 "Client d'information Gopher pour l'Internet v%s.%s.%d"
  6939. + 103 "Information sur le lien"
  6940. + 104 "Date et heure locales"
  6941. + 105 "Envoi du document par courrier α:"
  6942. + 106 "Envoi du fichier par courrier..."
  6943. + 107 "Envoi du fichier par courrier α %s..."
  6944. + 108 "Visualisation pour l'animation non disponible"
  6945. + 109 "Nom pour ce signet:"
  6946. + 110 "Erreur de rΘseau"
  6947. + 111 "Non"
  6948. + 112 "Aucun signet n'est dΘfini"
  6949. + 113 "Aucune commande de visualisation n'a ΘtΘ assignΘe pour cette option!"
  6950. + 114 "Usager '%s' inconnu"
  6951. + 115 "PageSuivante: <ESPACE>"
  6952. + 116 "PageSuivante: Espace"
  6953. + 117 "PagePrΘcΘdente: b"
  6954. + 118 "Port"
  6955. + 119 "Appuyez sur "
  6956. + 120 "Appuyez sur <RETOUR> pour continuer"
  6957. + 121 "Appuyez sur <RETOUR> lorsque vous serez prΩt\n"
  6958. + 122 "Appuyez sur RETOUR pour continuer\n"
  6959. + 123 "Impression en cours"
  6960. + 124 "DΘsirez-vous quitter (o/n) ?"
  6961. + 125 "RΘception du rΘpertoire..."
  6962. + 126 "RΘception du fichier..."
  6963. + 127 "RΘception de la page HTML..."
  6964. + 128 "RΘception de l'information.."
  6965. + 129 "RΘception du fichier MIME..."
  6966. + 130 "RΘception du fichier d'animation..."
  6967. + 131 "RΘception du fichier de son..."
  6968. + 132 "RΘception du graphiques..."
  6969. + 133 "Recherche du rΘpertoire..."
  6970. + 134 "Retour au menu: u"
  6971. + 135 "Menu principal: "
  6972. + 136 "Sauvegarder dans le fichier:"
  6973. + 137 "Menu sauvegardΘ dans le fichier:"
  6974. + 138 "Sauvegarde du fichier..."
  6975. + 139 "Recherche dans le menu pour:"
  6976. + 140 "Recherche infructueuse..."
  6977. + 141 "Recherche dans le texte pour:"
  6978. + 142 "Recherche le texte..."
  6979. + 143 "Recherche..."
  6980. + 144 "SΘlecteur (Optionnel)"
  6981. + 145 "Affichage de la date et de l'heure locales d'un site"
  6982. + 146 "Taille     Langage       Type de document\n"
  6983. + 147 "---------- ------------- ----------------------------\n"
  6984. + 148 "DΘsolΘ, impossible de visualiser ce fichier"
  6985. + 149 "DΘsolΘ, ce dernier ΘlΘment ne peut Ωtre effacΘ."
  6986. + 150 "DΘsolΘ, impossible α tΘlΘcharger!"
  6987. + 151 "DΘsolΘ, le menu des signets ne peut Ωtre dΘfini comme un nouveau signet"
  6988. + 152 "DΘsolΘ, il ne vous est pas permis de sauvegarder des fichiers"
  6989. + 153 "DΘsolΘ, cet ΘlΘment ne peut Ωtre sauvegardΘ!"
  6990. + 154 "DΘsolΘ, cette option ne vous est pas permise"
  6991. + 155 "DΘsolΘ, impossible d'imprimer ce document"
  6992. + 156 "DΘsolΘ, mΘthode d'impression non disponible pour ce document"
  6993. + 157 "DΘsolΘ, telnet n'est pas disponible."
  6994. + 158 "DΘsolΘ, ce client ne supporte pas HTML"
  6995. + 159 "DΘsolΘ, cet ordinateur ne supporte pas les fichiers sonores"
  6996. + 160 "DΘsolΘ, tn3270 n'est pas disponible."
  6997. + 161 "DΘsolΘ, il ne vous est pas permis d'imprimer des fichiers"
  6998. + 162 "DΘsolΘ, il ne vous est pas permis de sauvegarder des fichiers"
  6999. + 163 "Sorry, you are not allowed to set options in secure mode."
  7000. + 164 "DΘsolΘ, cette option ne vous est pas permise"
  7001. + 165 "Sorry, this machine doesn't support movies"
  7002. + 166 "Sorry, no viewer for the file...."
  7003. + 167 "Impossible d'accΘder au DCL!"
  7004. + 168 "Impossible d'accΘder au shell implicite!"
  7005. + 169 "Passage au DCL. Quittez (logout) pour revenir α Gopher.\n"
  7006. + 170 "Passage au shell implicite.  Tapez 'exit' pour revenir α Gopher.\ n\n"
  7007. + 171 "PrΘparez la rΘception pour la saisie d'Θcran ...\n\n"
  7008. + 172 "PrΘparez la rΘception pour le tΘlΘchargement...\n"
  7009. + 173 "ProblΦme de systΦme, impossible d'envoyer du courrier"
  7010. + 174 "Le nom du fichier est:"
  7011. + 175 "ProblΦme d'allocation de port."
  7012. + 176 "Redirection Unix demandΘe. VΘrifiez votre configuration!"
  7013. + 177 "Erreur inconnue."
  7014. + 178 "Utilisez '/' pour une premiΦre recherche..."
  7015. + 179 "Afficher le numΘro: "
  7016. + 180 "Oui"
  7017. + 181 "Votre choix"
  7018. + 182 "\nTΘlΘchargement complΘtΘ. %d octets au total, %d octets/sec\n"
  7019. + 183 "\nDΘsolΘ, tΘlΘchargement non complΘtΘ... \n"
  7020. + 184 "\nAppuyez sur %sRETOUR%s pour continuer"
  7021. + 185 "\nAppuyez sur <RETOUR> pour continuer"
  7022. + 186 "\n\nServeur d'information\n"
  7023. + 187 "Site FTP anonymous"
  7024. + 188 "gopher: Aucune information disponible dans le menu principal,\nimpossible de continuer\n"
  7025. diff -c /dev/null gopher+/gopher/locales/Makefile:1.5
  7026. *** /dev/null    Fri May 27 00:08:53 1994
  7027. --- gopher+/gopher/locales/Makefile    Fri May 27 00:08:53 1994
  7028. ***************
  7029. *** 0 ****
  7030. --- 1,43 ----
  7031. + .SUFFIXES:
  7032. + .SUFFIXES: .cat .msg $(SUFFIXES)
  7033. + include ../../Makefile.config
  7034. + LOCALES = Es.cat En_US.cat Fr.cat
  7035. + # OSF systems
  7036. + #LOCALEDIR = /usr/lib/nls
  7037. + LOCALEDIR = /usr/lib/locale
  7038. + .msg.cat:
  7039. +     rm -f $@
  7040. +     gencat $@ $<
  7041. + all : $(LOCALES)
  7042. + clean :
  7043. +     rm -f *.cat *.cat.m *~
  7044. + #
  7045. + # Since many vendors don't have standard directories for languages
  7046. + # we must have separate install scripts...
  7047. + #
  7048. + install_sol2 :
  7049. +     cp Fr.cat $(LOCALEDIR)/fr/LC_MESSAGES/gopher.cat
  7050. +     cp Es.cat $(LOCALEDIR)/es/LC_MESSAGES/gopher.cat
  7051. + install_osf :
  7052. +     cp Fr.cat /usr/lib/nls/msg/fr_FR.iso8859-1/gopher.cat
  7053. +     cp Es.cat /usr/lib/nls/msg/es_ES.iso8859-1/gopher.cat
  7054. + #
  7055. + # Hacked install for sites that haven't set up locales correctly
  7056. + #
  7057. + install :
  7058. +     mkdir $(CLIENTLIB)/gophernls
  7059. +     cp Fr.cat $(CLIENTLIB)/gophernls
  7060. +     cp Es.cat $(CLIENTLIB)/gophernls
  7061. diff -c /dev/null gopher+/gopher/locales/README:1.3
  7062. *** /dev/null    Fri May 27 00:08:53 1994
  7063. --- gopher+/gopher/locales/README    Fri May 27 00:08:53 1994
  7064. ***************
  7065. *** 0 ****
  7066. --- 1,69 ----
  7067. + $Id: README,v 1.3 1994/05/26 20:00:44 lindner Exp $
  7068. + How to install and use Internationalized message strings.
  7069. + ---------------------------------------------------------
  7070. + Gopher now uses the catopen/catgets calls to read data from message
  7071. + catalogs.  Installing these can be difficult at times.  Here are a few
  7072. + hints on getting these message files working.
  7073. + 1) Make the files into binary catalogs using the 'gencat' utility.  If
  7074. +    you type 'make' in this directory they should automatically generate
  7075. +    themselves.
  7076. + 2) Now, you need to figure out where to install the files.  Different
  7077. +    operating systems have different places to put these files.  Some
  7078. +    like /usr/lib/locales/, others /usr/lib/nls, etc.
  7079. +    Look at the manual page for catopen() or intro in section 5 of your 
  7080. +    manual pages for more information.  Specifically look for
  7081. +    information on the value of the NLSPATH variable.
  7082. + 3) Once you have the files in the correct locations you can use them
  7083. +    by changing your LANG or LC_MESSAGES environment variable.
  7084. +    i.e
  7085. +      LANG=fr    or
  7086. +      setenv LANG Es
  7087. +    
  7088. +    Note that case is significant.  The catopen() routines will most
  7089. +    likely look in the following location for it's cat file in:
  7090. +     {NLSLIB}/{lang}/LC_MESSAGES/gopher.cat
  7091. +    NLSLIB is defined as your OS specific languages directory, where
  7092. +    {lang} is the value of the LC_MESSAGES environment variable or the
  7093. +    LANG variable
  7094. +    Other systems put these files in different locations.
  7095. + What to do if it just won't work
  7096. + --------------------------------
  7097. + On some systems you need to have the right files loaded to do NLS
  7098. + commands.  The call to setlocale() will fail if you don't have the
  7099. + proper files in the /usr/lib/nls directory.  Don't worry though, we
  7100. + provide a backup for such a circumstance.
  7101. + By typing 'make install' you will make a gophernls directory that
  7102. + contains all of the message catalogs.  If the gopher client cannot
  7103. + find the message catalog the regular way, it will try these backup
  7104. + files.   So, if you wanted to use the spanish gopher, do
  7105. +   
  7106. +   setenv LANG Es
  7107. + before running the gopher client.
  7108. + Customizing Gopher for your Particular Locale
  7109. + ---------------------------------------------
  7110. + Basically start with one of the files and convert from it.  You might
  7111. + want to start with the En_US.msg, since this is the list of original
  7112. + english messages.
  7113. + Then give it a name (use your iso language code) and send it to the
  7114. + gopher team for the next release.
  7115. + Thanks!
  7116. diff -c /dev/null gopher+/gopher/vmsopts/tcpware_decc.opt:1.1
  7117. *** /dev/null    Fri May 27 00:08:54 1994
  7118. --- gopher+/gopher/vmsopts/tcpware_decc.opt    Fri May 27 00:08:54 1994
  7119. ***************
  7120. *** 0 ****
  7121. --- 1,2 ----
  7122. + tcpware:ucx$ipc_shr.exe/share
  7123. + sys$share:vaxcrtl/lib
  7124. diff -c /dev/null gopher+/gopher/vmsopts/tcpware_vaxc.opt:1.1
  7125. *** /dev/null    Fri May 27 00:08:54 1994
  7126. --- gopher+/gopher/vmsopts/tcpware_vaxc.opt    Fri May 27 00:08:55 1994
  7127. ***************
  7128. *** 0 ****
  7129. --- 1,2 ----
  7130. + tcpware:ucx$ipc/lib
  7131. + sys$share:vaxcrtl.exe/share
  7132. diff -c gopher+/gopherd/Waisindex.c:3.17 gopher+/gopherd/Waisindex.c:3.19
  7133. *** gopher+/gopherd/Waisindex.c:3.17    Fri May 27 00:08:56 1994
  7134. --- gopher+/gopherd/Waisindex.c    Fri May 27 00:08:56 1994
  7135. ***************
  7136. *** 1,7 ****
  7137.   /********************************************************************
  7138.    * $Author: lindner $
  7139. !  * $Revision: 3.17 $
  7140. !  * $Date: 1994/04/19 21:50:20 $
  7141.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/Waisindex.c,v $
  7142.    * $State: Exp $
  7143.    *
  7144. --- 1,7 ----
  7145.   /********************************************************************
  7146.    * $Author: lindner $
  7147. !  * $Revision: 3.19 $
  7148. !  * $Date: 1994/05/11 02:46:51 $
  7149.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/Waisindex.c,v $
  7150.    * $State: Exp $
  7151.    *
  7152. ***************
  7153. *** 15,20 ****
  7154. --- 15,26 ----
  7155.    *********************************************************************
  7156.    * Revision History:
  7157.    * $Log: Waisindex.c,v $
  7158. +  * Revision 3.19  1994/05/11  02:46:51  lindner
  7159. +  * Add #define for older WAIS libraries
  7160. +  *
  7161. +  * Revision 3.18  1994/04/25  20:49:02  lindner
  7162. +  * Fix for debug code
  7163. +  *
  7164.    * Revision 3.17  1994/04/19  21:50:20  lindner
  7165.    * Put back pseudo veronica Wais item, fix for number of arguments
  7166.    *
  7167. ***************
  7168. *** 86,91 ****
  7169. --- 92,104 ----
  7170.   
  7171.   #if defined(WAISSEARCH)
  7172.   
  7173. + /** Define this if you are using an older version of Wais **/
  7174. + #ifdef NO_FREEWAIS
  7175. + FILE *logfile = NULL;
  7176. + char *log_file_name = NULL;
  7177. + #endif
  7178.   int ShowDate = 0;
  7179.   
  7180.   #define _search_c
  7181. ***************
  7182. *** 279,285 ****
  7183.         hit best_hit;
  7184.         
  7185.         finished_search_word(db);
  7186. !       Debug("WaisIndexQuery:After finished_search\n",0);
  7187.   
  7188.         uchdir(Data_Dir); /* necessary to find side files */
  7189.   
  7190. --- 292,298 ----
  7191.         hit best_hit;
  7192.         
  7193.         finished_search_word(db);
  7194. !       Debugmsg("WaisIndexQuery:After finished_search\n");
  7195.   
  7196.         uchdir(Data_Dir); /* necessary to find side files */
  7197.   
  7198. diff -c gopher+/gopherd/command.c:3.15 gopher+/gopherd/command.c:3.16
  7199. *** gopher+/gopherd/command.c:3.15    Fri May 27 00:08:56 1994
  7200. --- gopher+/gopherd/command.c    Fri May 27 00:08:56 1994
  7201. ***************
  7202. *** 1,7 ****
  7203.   /********************************************************************
  7204.    * $Author: lindner $
  7205. !  * $Revision: 3.15 $
  7206. !  * $Date: 1994/04/08 21:08:34 $
  7207.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/command.c,v $
  7208.    * $State: Exp $
  7209.    *
  7210. --- 1,7 ----
  7211.   /********************************************************************
  7212.    * $Author: lindner $
  7213. !  * $Revision: 3.16 $
  7214. !  * $Date: 1994/04/25 20:49:03 $
  7215.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/command.c,v $
  7216.    * $State: Exp $
  7217.    *
  7218. ***************
  7219. *** 15,20 ****
  7220. --- 15,23 ----
  7221.    *********************************************************************
  7222.    * Revision History:
  7223.    * $Log: command.c,v $
  7224. +  * Revision 3.16  1994/04/25  20:49:03  lindner
  7225. +  * Fix for debug code
  7226. +  *
  7227.    * Revision 3.15  1994/04/08  21:08:34  lindner
  7228.    * Gcc -Wall fix
  7229.    *
  7230. ***************
  7231. *** 202,208 ****
  7232.        if (CMDgetCommand(cmd) != NULL && *CMDgetCommand(cmd) != '\0')
  7233.         CMDsetGplus(cmd, TRUE);
  7234.   
  7235. !      Debug("Command:: ",0);
  7236.        Debug("selstr %s, ", CMDgetSelstr(cmd));
  7237.        Debug("command %s, ", CMDgetCommand(cmd));
  7238.        Debug("search %s, ", CMDgetSearch(cmd));
  7239. --- 205,211 ----
  7240.        if (CMDgetCommand(cmd) != NULL && *CMDgetCommand(cmd) != '\0')
  7241.         CMDsetGplus(cmd, TRUE);
  7242.   
  7243. !      Debugmsg("Command:: ");
  7244.        Debug("selstr %s, ", CMDgetSelstr(cmd));
  7245.        Debug("command %s, ", CMDgetCommand(cmd));
  7246.        Debug("search %s, ", CMDgetSearch(cmd));
  7247. diff -c gopher+/gopherd/ext.c:3.13 gopher+/gopherd/ext.c:3.16
  7248. *** gopher+/gopherd/ext.c:3.13    Fri May 27 00:08:57 1994
  7249. --- gopher+/gopherd/ext.c    Fri May 27 00:08:57 1994
  7250. ***************
  7251. *** 1,7 ****
  7252.   /********************************************************************
  7253.    * $Author: lindner $
  7254. !  * $Revision: 3.13 $
  7255. !  * $Date: 1994/01/20 06:39:18 $
  7256.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/ext.c,v $
  7257.    * $State: Exp $
  7258.    *
  7259. --- 1,7 ----
  7260.   /********************************************************************
  7261.    * $Author: lindner $
  7262. !  * $Revision: 3.16 $
  7263. !  * $Date: 1994/05/02 07:41:11 $
  7264.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/ext.c,v $
  7265.    * $State: Exp $
  7266.    *
  7267. ***************
  7268. *** 15,20 ****
  7269. --- 15,29 ----
  7270.    *********************************************************************
  7271.    * Revision History:
  7272.    * $Log: ext.c,v $
  7273. +  * Revision 3.16  1994/05/02  07:41:11  lindner
  7274. +  * Mods to use setlocale()
  7275. +  *
  7276. +  * Revision 3.15  1994/04/26  22:43:57  lindner
  7277. +  * Fix for Debugmsg
  7278. +  *
  7279. +  * Revision 3.14  1994/04/25  20:49:04  lindner
  7280. +  * Fix for debug code
  7281. +  *
  7282.    * Revision 3.13  1994/01/20  06:39:18  lindner
  7283.    * When trying to match an extension to a file type, the server prefers
  7284.    * exact matches of type & language, but will now fall back to matching
  7285. ***************
  7286. *** 76,81 ****
  7287. --- 85,91 ----
  7288.   #include <stdio.h>
  7289.   #include "ext.h"
  7290.   #include "Malloc.h"
  7291. + #include <locale.h>
  7292.   #include <ctype.h>
  7293.   #include "util.h"
  7294.   #include "serverutil.h"
  7295. ***************
  7296. *** 265,271 ****
  7297.        int i, extlen;
  7298.        Extobj *temp;
  7299.   
  7300. !      Debug("EXAsearch:\r\n",NULL)
  7301.        extlen = strlen(fileext);
  7302.   
  7303.        /*** Linear search.  Ick. ***/
  7304. --- 275,281 ----
  7305.        int i, extlen;
  7306.        Extobj *temp;
  7307.   
  7308. !      Debugmsg("EXAsearch:\r\n");
  7309.        extlen = strlen(fileext);
  7310.   
  7311.        /*** Linear search.  Ick. ***/
  7312. ***************
  7313. *** 314,320 ****
  7314.        int i, extlen;
  7315.        Extobj *temp;
  7316.   
  7317. !      Debug("EXAsearch:\r\n",NULL)
  7318.        extlen = strlen(fileext);
  7319.   
  7320.        /*** Linear search.  Ick. ***/
  7321. --- 324,330 ----
  7322.        int i, extlen;
  7323.        Extobj *temp;
  7324.   
  7325. !      Debugmsg("EXAsearch:\r\n");
  7326.        extlen = strlen(fileext);
  7327.   
  7328.        /*** Linear search.  Ick. ***/
  7329. diff -c gopher+/gopherd/ftp.c:3.32 gopher+/gopherd/ftp.c:3.35
  7330. *** gopher+/gopherd/ftp.c:3.32    Fri May 27 00:08:57 1994
  7331. --- gopher+/gopherd/ftp.c    Fri May 27 00:08:57 1994
  7332. ***************
  7333. *** 1,7 ****
  7334.   /********************************************************************
  7335.    * $Author: lindner $
  7336. !  * $Revision: 3.32 $
  7337. !  * $Date: 1994/04/07 17:27:59 $
  7338.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/ftp.c,v $
  7339.    * $State: Exp $
  7340.    *
  7341. --- 1,7 ----
  7342.   /********************************************************************
  7343.    * $Author: lindner $
  7344. !  * $Revision: 3.35 $
  7345. !  * $Date: 1994/05/24 06:52:30 $
  7346.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/ftp.c,v $
  7347.    * $State: Exp $
  7348.    *
  7349. ***************
  7350. *** 15,20 ****
  7351. --- 15,29 ----
  7352.    *********************************************************************
  7353.    * Revision History:
  7354.    * $Log: ftp.c,v $
  7355. +  * Revision 3.35  1994/05/24  06:52:30  lindner
  7356. +  * Fix for spinning ftp processes from R.S. Jones
  7357. +  *
  7358. +  * Revision 3.34  1994/05/18  04:28:21  lindner
  7359. +  * Fixes for ftp from Jonzy
  7360. +  *
  7361. +  * Revision 3.33  1994/04/25  20:49:05  lindner
  7362. +  * Fix for debug code
  7363. +  *
  7364.    * Revision 3.32  1994/04/07  17:27:59  lindner
  7365.    * Recognize more Unix ftp sites as Unix
  7366.    *
  7367. ***************
  7368. *** 180,186 ****
  7369.   
  7370.   
  7371.   /** Global socket value **/
  7372. ! static int Gsockfd;  
  7373.   
  7374.   boolean GETDIR = FALSE;
  7375.   
  7376. --- 189,195 ----
  7377.   
  7378.   
  7379.   /** Global socket value **/
  7380. ! static int Gsockfd = -1;  
  7381.   
  7382.   boolean GETDIR = FALSE;
  7383.   
  7384. ***************
  7385. *** 199,205 ****
  7386.        FTP *temp;
  7387.   
  7388.        if (host == NULL || *host == '\0') {
  7389. !       Debug("FTPnew, bad param..\n",NULL);
  7390.         return(NULL);
  7391.        }
  7392.   
  7393. --- 208,214 ----
  7394.        FTP *temp;
  7395.   
  7396.        if (host == NULL || *host == '\0') {
  7397. !       Debugmsg("FTPnew, bad param..\n");
  7398.         return(NULL);
  7399.        }
  7400.   
  7401. ***************
  7402. *** 327,333 ****
  7403.        ftpnum = FTPgetReply(ftp, 999, message, sizeof(message));
  7404.        
  7405.        if (ftpnum == 215) {
  7406. !       Debug("Analyzing ftp syst output\n", NULL);
  7407.         if (strncmp(message+4, "MTS", 3) == 0 ||
  7408.             strncmp(message+4, "VMS", 3) == 0) {
  7409.              FTPsetType(ftp, FTP_VMS);
  7410. --- 336,342 ----
  7411.        ftpnum = FTPgetReply(ftp, 999, message, sizeof(message));
  7412.        
  7413.        if (ftpnum == 215) {
  7414. !       Debugmsg("Analyzing ftp syst output\n");
  7415.         if (strncmp(message+4, "MTS", 3) == 0 ||
  7416.             strncmp(message+4, "VMS", 3) == 0) {
  7417.              FTPsetType(ftp, FTP_VMS);
  7418. ***************
  7419. *** 406,425 ****
  7420.        if (ftpnum > errorlevel) {
  7421.         /*** Had an error ***/
  7422.         FTPerrorMessage(ftp, message);
  7423.         while (FTPisContinuation(ftp, message)) {
  7424.              ftpnum = FTPgetReplyline(ftp, message, maxlen);
  7425.              FTPerrorMessage(ftp, message);
  7426.         }
  7427.   
  7428.         FTPabort(ftp);
  7429.         gopherd_exit(-1);
  7430.        }
  7431.   
  7432.        while (FTPisContinuation(ftp, message)) {
  7433. !       FTPinfoMessage(ftp, message);
  7434.   
  7435.         ftpnum = FTPgetReplyline(ftp, message, maxlen);
  7436.        }
  7437.        return(ftpnum);
  7438.   }
  7439. --- 415,445 ----
  7440.        if (ftpnum > errorlevel) {
  7441.         /*** Had an error ***/
  7442.         FTPerrorMessage(ftp, message);
  7443. !       LOGGopher(-1, message);
  7444.         while (FTPisContinuation(ftp, message)) {
  7445.              ftpnum = FTPgetReplyline(ftp, message, maxlen);
  7446. +            if (ftpnum == -1) {
  7447. +             /** Abnormal condition **/
  7448. +             FTPabort(ftp);
  7449. +             gopherd_exit();
  7450. +            }
  7451.              FTPerrorMessage(ftp, message);
  7452.         }
  7453.   
  7454.         FTPabort(ftp);
  7455.         gopherd_exit(-1);
  7456. +      } else if (ftpnum <0) {
  7457. +       /** Really bad error **/
  7458. +       FTPabort(ftp);
  7459. +       gopherd_exit(-1);
  7460.        }
  7461.   
  7462.        while (FTPisContinuation(ftp, message)) {
  7463. !       /*FTPinfoMessage(ftp, message);*/
  7464.   
  7465.         ftpnum = FTPgetReplyline(ftp, message, maxlen);
  7466. +       if (ftpnum == -1)
  7467. +            break;
  7468.        }
  7469.        return(ftpnum);
  7470.   }
  7471. ***************
  7472. *** 437,447 ****
  7473.   {
  7474.        int ftpnum, i;
  7475.   
  7476.        i = readline(FTPgetControl(ftp), message, maxlen);
  7477.        
  7478.        Debug("<-- %s\n",message);
  7479.   
  7480. !      if (i < 0)
  7481.         return(-1);
  7482.        
  7483.        ftpnum = FTPfindNum(ftp, message);
  7484. --- 457,470 ----
  7485.   {
  7486.        int ftpnum, i;
  7487.   
  7488. +      for (i=0; i<maxlen; i++)
  7489. +       message[i] = '\n';
  7490.        i = readline(FTPgetControl(ftp), message, maxlen);
  7491.        
  7492.        Debug("<-- %s\n",message);
  7493.   
  7494. !      if (i <= 0)
  7495.         return(-1);
  7496.        
  7497.        ftpnum = FTPfindNum(ftp, message);
  7498. ***************
  7499. *** 699,707 ****
  7500.   {
  7501.        char errmsg[256];
  7502.        
  7503. !      sprintf(errmsg, "3%s\t\terror.host\t1\r\n", message);
  7504. !      writestring(Gsockfd, errmsg);
  7505.   
  7506.   }
  7507.   
  7508.   void
  7509. --- 722,734 ----
  7510.   {
  7511.        char errmsg[256];
  7512.        
  7513. !      if (message == NULL)
  7514. !       return;
  7515. !      ZapCRLF(message);
  7516.   
  7517. +      sprintf(errmsg, "0%s\t\terror.host\t1\r\n", message);
  7518. +      
  7519. +      writestring(Gsockfd, errmsg);
  7520.   }
  7521.   
  7522.   void
  7523. ***************
  7524. *** 752,757 ****
  7525. --- 779,786 ----
  7526.        char buf[8192];
  7527.        int blen;
  7528.        char lastchar;
  7529. +      Gsockfd = sockfd;
  7530.        
  7531.        /* Find @ and parse out */
  7532.        cp = strchr(ftpstr, '@');
  7533. ***************
  7534. *** 955,967 ****
  7535.   
  7536.        case FTP_UNIX:
  7537.        case FTP_WINNT:
  7538. !       Debug("Parsing Unix List\n", NULL);
  7539.         Gzerotype = ParseUnixList(ftp, bufptr, IntName, theName, 8);
  7540.         break;
  7541.   
  7542.        case FTP_UNKNOWN:
  7543.        default:
  7544. !       Debug("Parsing Unknown List\n", NULL);
  7545.         Gzerotype = ParseUnixList(ftp, bufptr, IntName, theName, 7);
  7546.         break;
  7547.        }
  7548. --- 984,996 ----
  7549.   
  7550.        case FTP_UNIX:
  7551.        case FTP_WINNT:
  7552. !       Debugmsg("Parsing Unix List\n");
  7553.         Gzerotype = ParseUnixList(ftp, bufptr, IntName, theName, 8);
  7554.         break;
  7555.   
  7556.        case FTP_UNKNOWN:
  7557.        default:
  7558. !       Debugmsg("Parsing Unknown List\n");
  7559.         Gzerotype = ParseUnixList(ftp, bufptr, IntName, theName, 7);
  7560.         break;
  7561.        }
  7562. diff -c gopher+/gopherd/gopherd.c:3.88 gopher+/gopherd/gopherd.c:3.92
  7563. *** gopher+/gopherd/gopherd.c:3.88    Fri May 27 00:08:59 1994
  7564. --- gopher+/gopherd/gopherd.c    Fri May 27 00:08:59 1994
  7565. ***************
  7566. *** 1,7 ****
  7567.   /********************************************************************
  7568.    * $Author: lindner $
  7569. !  * $Revision: 3.88 $
  7570. !  * $Date: 1994/04/21 21:24:21 $
  7571.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/gopherd.c,v $
  7572.    * $State: Exp $
  7573.    *
  7574. --- 1,7 ----
  7575.   /********************************************************************
  7576.    * $Author: lindner $
  7577. !  * $Revision: 3.92 $
  7578. !  * $Date: 1994/05/18 04:00:40 $
  7579.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/gopherd.c,v $
  7580.    * $State: Exp $
  7581.    *
  7582. ***************
  7583. *** 15,20 ****
  7584. --- 15,32 ----
  7585.    *********************************************************************
  7586.    * Revision History:
  7587.    * $Log: gopherd.c,v $
  7588. +  * Revision 3.92  1994/05/18  04:00:40  lindner
  7589. +  * Add port# to waiting for connection message
  7590. +  *
  7591. +  * Revision 3.91  1994/05/14  04:19:33  lindner
  7592. +  * Fix for text files with really long lines
  7593. +  *
  7594. +  * Revision 3.90  1994/05/02  07:41:12  lindner
  7595. +  * Mods to use setlocale()
  7596. +  *
  7597. +  * Revision 3.89  1994/04/25  20:49:07  lindner
  7598. +  * Fix for debug code
  7599. +  *
  7600.    * Revision 3.88  1994/04/21  21:24:21  lindner
  7601.    * FIOclose fix
  7602.    *
  7603. ***************
  7604. *** 450,455 ****
  7605. --- 462,469 ----
  7606.        int errflag =0;
  7607.   
  7608.   
  7609. +      setlocale(LC_ALL, "");
  7610.        Argv = argv;
  7611.   
  7612.   #if !(defined(NeXT) || defined(_AIX))
  7613. ***************
  7614. *** 676,682 ****
  7615.   
  7616.        /** Set our cmd string **/
  7617.   
  7618. !      ServerSetArgv("waiting for connection");
  7619.   
  7620.        /** Clean up the pid directory before using it... **/
  7621.        PIDclean(GDCgetPiddir(Config));
  7622. --- 690,696 ----
  7623.   
  7624.        /** Set our cmd string **/
  7625.   
  7626. !      ServerSetArgv("waiting for connection @ %d", GopherPort);
  7627.   
  7628.        /** Clean up the pid directory before using it... **/
  7629.        PIDclean(GDCgetPiddir(Config));
  7630. ***************
  7631. *** 774,780 ****
  7632.         if (strcmp(Zeline, "\n") ==0 && (!flagged)) {
  7633.              flagged = 1;
  7634.              strcpy(Title, NO_SUBJECT);
  7635. !            Debug("No subject found - using default\n",0);
  7636.         }
  7637.         
  7638.         if (is_mail_from_line(Zeline)==0) {
  7639. --- 788,794 ----
  7640.         if (strcmp(Zeline, "\n") ==0 && (!flagged)) {
  7641.              flagged = 1;
  7642.              strcpy(Title, NO_SUBJECT);
  7643. !            Debugmsg("No subject found - using default\n");
  7644.         }
  7645.         
  7646.         if (is_mail_from_line(Zeline)==0) {
  7647. ***************
  7648. *** 2514,2519 ****
  7649. --- 2528,2534 ----
  7650.         GSsendHeader(sockfd, -1);
  7651.   
  7652.        while (fgets(inputline, sizeof(inputline), ZeFile) != NULL) {
  7653. +       
  7654.         ZapCRLF(inputline);
  7655.   
  7656.         /** Period on a line by itself, double it.. **/
  7657. ***************
  7658. *** 2522,2528 ****
  7659.              inputline[2] = '\0';
  7660.         }
  7661.   
  7662. !       strcat(inputline, "\r\n");
  7663.         len = strlen(inputline);
  7664.   
  7665.         if (((bufptr-writebuf) + len+1) > 4096) {
  7666. --- 2537,2545 ----
  7667.              inputline[2] = '\0';
  7668.         }
  7669.   
  7670. !       if (strlen(inputline) < 512)
  7671. !            strcat(inputline, "\r\n");
  7672.         len = strlen(inputline);
  7673.   
  7674.         if (((bufptr-writebuf) + len+1) > 4096) {
  7675. diff -c gopher+/gopherd/gopherd.conf:3.18 gopher+/gopherd/gopherd.conf:3.20
  7676. *** gopher+/gopherd/gopherd.conf:3.18    Fri May 27 00:09:00 1994
  7677. --- gopher+/gopherd/gopherd.conf    Fri May 27 00:09:00 1994
  7678. ***************
  7679. *** 1,5 ****
  7680.   #
  7681. ! # $Id: gopherd.conf,v 3.18 1994/04/13 04:27:06 lindner Exp $
  7682.   #
  7683.   
  7684.   #
  7685. --- 1,5 ----
  7686.   #
  7687. ! # $Id: gopherd.conf,v 3.20 1994/05/25 20:58:12 lindner Exp $
  7688.   #
  7689.   
  7690.   #
  7691. ***************
  7692. *** 6,41 ****
  7693.   # An example gopherd.conf file
  7694.   #
  7695.   
  7696.   #
  7697. - # Hostalias line,
  7698. - #
  7699.   #  format is:
  7700.   #
  7701.   #  "hostalias: <hostname alias>"
  7702.   #hostalias: gopher.turnip.com
  7703.   
  7704.   #
  7705. ! # Cachetime line
  7706.   #
  7707. - # Format is "cachetime: <time in seconds>"
  7708. - #
  7709.   
  7710.   Cachetime: 180
  7711.   
  7712. ! #
  7713.   # Administrator line,
  7714.   #
  7715.   # format is:
  7716. ! # "Admin:" <any text thing, usually a name/phone fax,etc>
  7717.   #
  7718. ! # "AdminEmail:" <RFC-822 Email address>
  7719.   
  7720.   Admin: Studly Gopher Admin +1 (612) 338-3970
  7721.   AdminEmail: gopher@turnip.com
  7722.   
  7723.   #
  7724. - # Site
  7725. - #
  7726.   #Site: the name of the site
  7727.   #Org: organization or group owning the site
  7728.   #Loc: city, state, country
  7729. --- 6,42 ----
  7730.   # An example gopherd.conf file
  7731.   #
  7732.   
  7733. + #---------------------------------------------------------------------
  7734. + # The 'Canonical' name for this gopher server, if different from the hostname
  7735.   #
  7736.   #  format is:
  7737.   #
  7738.   #  "hostalias: <hostname alias>"
  7739.   #hostalias: gopher.turnip.com
  7740.   
  7741. + #---------------------------------------------------------------------
  7742. + # How long do we honor .cache and .cache+ files for directories?
  7743.   #
  7744. ! # Format is 
  7745. ! #   cachetime: <time in seconds>
  7746.   #
  7747.   
  7748.   Cachetime: 180
  7749.   
  7750. ! #---------------------------------------------------------------------
  7751.   # Administrator line,
  7752.   #
  7753.   # format is:
  7754. ! #  Admin: <any text thing, usually a name/phone fax,etc>
  7755.   #
  7756. ! #  AdminEmail: <RFC-822 Email address>
  7757.   
  7758.   Admin: Studly Gopher Admin +1 (612) 338-3970
  7759.   AdminEmail: gopher@turnip.com
  7760.   
  7761. + #---------------------------------------------------------------------
  7762. + # Descriptive information about this Gopher site
  7763.   #
  7764.   #Site: the name of the site
  7765.   #Org: organization or group owning the site
  7766.   #Loc: city, state, country
  7767. ***************
  7768. *** 49,54 ****
  7769. --- 50,61 ----
  7770.   Geog: 44 58 48 N 93 15 49 W
  7771.   Language: En_US
  7772.   
  7773. + #---------------------------------------------------------------------
  7774. + # File decoders.  Run the given program on the file with the specific
  7775. + # extension.
  7776. + #
  7777.   decoder: .Z /usr/ucb/zcat
  7778.   decoder: .gz /usr/gnu/bin/zcat
  7779.   #decoder: .adpcm /usr/openwin/bin/adpcm_dec
  7780. ***************
  7781. *** 55,74 ****
  7782.   #decoder: .z /usr/gnu/bin/zcat
  7783.   
  7784.   
  7785. ! #
  7786.   # Pid directory..  This is a scratch directory for concurrent session load
  7787.   # limiting..  Needs to be inside your gopher-data directory if running
  7788. ! # chrooted
  7789.   #
  7790.   
  7791.   #PIDS_Directory: /pids
  7792.   
  7793. ! #TZ: -6
  7794. ! #
  7795.   # Map filename extensions to gopher-types
  7796.   #
  7797.   # Format is 
  7798. ! # "viewext: <extension> <gophertype> <pfx> <gopher+type> [ISO langauge]
  7799.   #
  7800.   
  7801.   # Different Languages
  7802. --- 62,80 ----
  7803.   #decoder: .z /usr/gnu/bin/zcat
  7804.   
  7805.   
  7806. ! #---------------------------------------------------------------------
  7807.   # Pid directory..  This is a scratch directory for concurrent session load
  7808.   # limiting..  Needs to be inside your gopher-data directory if running
  7809. ! # chrooted.  This stuff is very beta right now.
  7810.   #
  7811.   
  7812.   #PIDS_Directory: /pids
  7813.   
  7814. ! #---------------------------------------------------------------------
  7815.   # Map filename extensions to gopher-types
  7816.   #
  7817.   # Format is 
  7818. ! #  viewext: <extension> <gophertype> <pfx> <gopher+type> [ISO langauge]
  7819.   #
  7820.   
  7821.   # Different Languages
  7822. ***************
  7823. *** 84,90 ****
  7824.   
  7825.   
  7826.   # Graphics file formats
  7827.   viewext: .gif I 9 image/gif
  7828.   viewext: .jpg I 9 image/JPEG
  7829.   viewext: .tif I 9 image/tiff
  7830. --- 90,95 ----
  7831. ***************
  7832. *** 91,103 ****
  7833.   
  7834.   
  7835.   # Sounds
  7836.   viewext: .au s s audio/basic
  7837.   viewext: .snd s s audio/basic
  7838.   viewext: .wav s s audio/microsoft-wave
  7839.   
  7840.   # Movies
  7841.   viewext: .mov ; 9 video/quicktime
  7842.   viewext: .mpg ; 9 video/mpeg
  7843.   
  7844. --- 96,107 ----
  7845.   
  7846.   
  7847.   # Sounds
  7848.   viewext: .au s s audio/basic
  7849.   viewext: .snd s s audio/basic
  7850.   viewext: .wav s s audio/microsoft-wave
  7851. + viewext: .mod s s audio/soundtracker
  7852.   
  7853.   # Movies
  7854.   viewext: .mov ; 9 video/quicktime
  7855.   viewext: .mpg ; 9 video/mpeg
  7856.   
  7857. ***************
  7858. *** 107,125 ****
  7859.   
  7860.   viewext: .zip 5 9 application/zip
  7861.   viewext: .arj 5 9 application/x-arj
  7862. ! viewext: .zoo 5 9 application/octet-stream
  7863. ! viewext: .arc 5 9 application/octet-stream
  7864. ! viewext: .lzh 5 9 application/octet-stream
  7865. ! viewext: .lha 5 9 application/octet-stream
  7866. ! viewext: .dms 5 9 application/octet-stream
  7867.   
  7868. ! viewext: .tar.Z 9 9 application/octet-stream
  7869. ! viewext: .tar 9 9 application/octet-stream
  7870. ! viewext: .exe 5 9 application/octet-stream
  7871. ! viewext: .bck 9 9 application/octet-stream
  7872. ! viewext: .sav 9 9 application/octet-stream
  7873.   
  7874. ! viewext: .ps 0 0 application/postscript
  7875.   viewext: .tex 0 0 application/x-tex
  7876.   viewext: .dvi 0 9 application/x-dvi
  7877.   viewext: .troff 0 0 Text/x-troff
  7878. --- 111,129 ----
  7879.   
  7880.   viewext: .zip 5 9 application/zip
  7881.   viewext: .arj 5 9 application/x-arj
  7882. ! viewext: .zoo 5 9 application/x-zoo
  7883. ! viewext: .arc 5 9 application/x-arc
  7884. ! viewext: .lzh 5 9 application/x-lzh
  7885. ! viewext: .lha 5 9 application/x-lha
  7886. ! viewext: .dms 5 9 application/x-dms
  7887.   
  7888. ! viewext: .tar.Z 9 9 application/x-tarZ
  7889. ! viewext: .tar 9 9 application/x-tar
  7890. ! viewext: .exe 5 9 application/x-pcexe
  7891. ! viewext: .bck 9 9 application/x-bck
  7892. ! viewext: .sav 9 9 application/x-saveset
  7893.   
  7894. ! viewext: .ps 0 9 application/postscript
  7895.   viewext: .tex 0 0 application/x-tex
  7896.   viewext: .dvi 0 9 application/x-dvi
  7897.   viewext: .troff 0 0 Text/x-troff
  7898. ***************
  7899. *** 144,151 ****
  7900.   #
  7901.   # These are for the experimental gview
  7902.   #
  7903. ! viewext: .gview 1 1 Directory+/gview
  7904. ! blockext: .spot GVIEWSPOT
  7905.   
  7906.   #
  7907.   # Map files to certain blocks
  7908. --- 148,155 ----
  7909.   #
  7910.   # These are for the experimental gview
  7911.   #
  7912. ! #viewext: .gview 1 1 Directory+/gview
  7913. ! #blockext: .spot GVIEWSPOT
  7914.   
  7915.   #
  7916.   # Map files to certain blocks
  7917. diff -c gopher+/gopherd/gopherd.h:3.7 gopher+/gopherd/gopherd.h:3.9
  7918. *** gopher+/gopherd/gopherd.h:3.7    Fri May 27 00:09:00 1994
  7919. --- gopher+/gopherd/gopherd.h    Fri May 27 00:09:00 1994
  7920. ***************
  7921. *** 1,7 ****
  7922.   /********************************************************************
  7923.    * $Author: lindner $
  7924. !  * $Revision: 3.7 $
  7925. !  * $Date: 1994/04/14 18:00:38 $
  7926.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/gopherd.h,v $
  7927.    * $State: Exp $
  7928.    *
  7929. --- 1,7 ----
  7930.   /********************************************************************
  7931.    * $Author: lindner $
  7932. !  * $Revision: 3.9 $
  7933. !  * $Date: 1994/05/14 04:19:15 $
  7934.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/gopherd.h,v $
  7935.    * $State: Exp $
  7936.    *
  7937. ***************
  7938. *** 15,20 ****
  7939. --- 15,26 ----
  7940.    *********************************************************************
  7941.    * Revision History:
  7942.    * $Log: gopherd.h,v $
  7943. +  * Revision 3.9  1994/05/14  04:19:15  lindner
  7944. +  * Use new locale.h
  7945. +  *
  7946. +  * Revision 3.8  1994/05/02  07:41:14  lindner
  7947. +  * Mods to use setlocale()
  7948. +  *
  7949.    * Revision 3.7  1994/04/14  18:00:38  lindner
  7950.    * Fix for AIX
  7951.    *
  7952. ***************
  7953. *** 45,50 ****
  7954. --- 51,57 ----
  7955.   
  7956.   #include "conf.h"
  7957.   
  7958. + #include <Locale.h>
  7959.   #include <ctype.h>
  7960.   #include <stdio.h>
  7961.   
  7962. diff -c gopher+/gopherd/index.c:3.18 gopher+/gopherd/index.c:3.20
  7963. *** gopher+/gopherd/index.c:3.18    Fri May 27 00:09:01 1994
  7964. --- gopher+/gopherd/index.c    Fri May 27 00:09:01 1994
  7965. ***************
  7966. *** 1,7 ****
  7967.   /********************************************************************
  7968.    * $Author: lindner $
  7969. !  * $Revision: 3.18 $
  7970. !  * $Date: 1994/04/08 21:08:07 $
  7971.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/index.c,v $
  7972.    * $State: Exp $
  7973.    *
  7974. --- 1,7 ----
  7975.   /********************************************************************
  7976.    * $Author: lindner $
  7977. !  * $Revision: 3.20 $
  7978. !  * $Date: 1994/05/14 04:18:14 $
  7979.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/index.c,v $
  7980.    * $State: Exp $
  7981.    *
  7982. ***************
  7983. *** 15,20 ****
  7984. --- 15,26 ----
  7985.    *********************************************************************
  7986.    * Revision History:
  7987.    * $Log: index.c,v $
  7988. +  * Revision 3.20  1994/05/14  04:18:14  lindner
  7989. +  * Fix weird prob...
  7990. +  *
  7991. +  * Revision 3.19  1994/04/27  19:22:20  lindner
  7992. +  * compatible.h added
  7993. +  *
  7994.    * Revision 3.18  1994/04/08  21:08:07  lindner
  7995.    * Fix a bug in the Shell Search code
  7996.    *
  7997. ***************
  7998. *** 82,89 ****
  7999. --- 88,97 ----
  8000.    *
  8001.    *********************************************************************/
  8002.   
  8003. + #include "compatible.h"
  8004.   #include "gopherd.h"
  8005.   #include "command.h"
  8006.   #include "fileio.h"
  8007.   #include "Debug.h"
  8008.   #include <stdio.h>
  8009. diff -c gopher+/gopherd/kernutils.c:3.7 gopher+/gopherd/kernutils.c:3.8
  8010. *** gopher+/gopherd/kernutils.c:3.7    Fri May 27 00:09:01 1994
  8011. --- gopher+/gopherd/kernutils.c    Fri May 27 00:09:01 1994
  8012. ***************
  8013. *** 1,7 ****
  8014.   /********************************************************************
  8015.    * $Author: lindner $
  8016. !  * $Revision: 3.7 $
  8017. !  * $Date: 1994/03/17 04:11:23 $
  8018.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/kernutils.c,v $
  8019.    * $State: Exp $
  8020.    *
  8021. --- 1,7 ----
  8022.   /********************************************************************
  8023.    * $Author: lindner $
  8024. !  * $Revision: 3.8 $
  8025. !  * $Date: 1994/04/25 20:49:09 $
  8026.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/kernutils.c,v $
  8027.    * $State: Exp $
  8028.    *
  8029. ***************
  8030. *** 15,20 ****
  8031. --- 15,23 ----
  8032.    *********************************************************************
  8033.    * Revision History:
  8034.    * $Log: kernutils.c,v $
  8035. +  * Revision 3.8  1994/04/25  20:49:09  lindner
  8036. +  * Fix for debug code
  8037. +  *
  8038.    * Revision 3.7  1994/03/17  04:11:23  lindner
  8039.    * VMS update
  8040.    *
  8041. ***************
  8042. *** 81,87 ****
  8043.   
  8044.        status = getload();
  8045.        if (status == -1)
  8046. !       Debug("Error getting Load information!!\n",0);
  8047.        ;
  8048.        Debug("getload returns %d\n",status);
  8049.        return(status);
  8050. --- 84,90 ----
  8051.   
  8052.        status = getload();
  8053.        if (status == -1)
  8054. !       Debugmsg("Error getting Load information!!\n");
  8055.        ;
  8056.        Debug("getload returns %d\n",status);
  8057.        return(status);
  8058. ***************
  8059. *** 117,123 ****
  8060.         return(0);
  8061.        }
  8062.        if (fread((char *)&_averages,sizeof(_averages),1,lav)==0) {
  8063. !       Debug("Cannot access load averages...",0);
  8064.         fclose(lav);
  8065.         return(0);
  8066.        }
  8067. --- 120,126 ----
  8068.         return(0);
  8069.        }
  8070.        if (fread((char *)&_averages,sizeof(_averages),1,lav)==0) {
  8071. !       Debugmsg("Cannot access load averages...");
  8072.         fclose(lav);
  8073.         return(0);
  8074.        }
  8075. diff -c gopher+/gopherd/mindexd.c:3.14 gopher+/gopherd/mindexd.c:3.15
  8076. *** gopher+/gopherd/mindexd.c:3.14    Fri May 27 00:09:01 1994
  8077. --- gopher+/gopherd/mindexd.c    Fri May 27 00:09:01 1994
  8078. ***************
  8079. *** 1,7 ****
  8080.   /********************************************************************
  8081.    * $Author: lindner $
  8082. !  * $Revision: 3.14 $
  8083. !  * $Date: 1994/03/31 22:44:33 $
  8084.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/mindexd.c,v $
  8085.    * $State: Exp $
  8086.    *
  8087. --- 1,7 ----
  8088.   /********************************************************************
  8089.    * $Author: lindner $
  8090. !  * $Revision: 3.15 $
  8091. !  * $Date: 1994/05/05 03:00:37 $
  8092.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/mindexd.c,v $
  8093.    * $State: Exp $
  8094.    *
  8095. ***************
  8096. *** 15,20 ****
  8097. --- 15,23 ----
  8098.    *********************************************************************
  8099.    * Revision History:
  8100.    * $Log: mindexd.c,v $
  8101. +  * Revision 3.15  1994/05/05  03:00:37  lindner
  8102. +  * Fix for mindex file processing..
  8103. +  *
  8104.    * Revision 3.14  1994/03/31  22:44:33  lindner
  8105.    * don't mess with the selector string in mindexd
  8106.    *
  8107. ***************
  8108. *** 97,103 ****
  8109.       char    line[1024];      /* line buffer for reading config */
  8110.       char    *linep;         /* pointer to 'line' */
  8111.   
  8112. !     strncpy(line, the_filename, sizeof(the_filename));
  8113.       local = line;
  8114.   
  8115.       if ((fp = rfopen(local, "r")) == NULL) {
  8116. --- 100,106 ----
  8117.       char    line[1024];      /* line buffer for reading config */
  8118.       char    *linep;         /* pointer to 'line' */
  8119.   
  8120. !     strcpy(line, the_filename);
  8121.       local = line;
  8122.   
  8123.       if ((fp = rfopen(local, "r")) == NULL) {
  8124. diff -c gopher+/gopherd/pid.c:3.4 gopher+/gopherd/pid.c:3.5
  8125. *** gopher+/gopherd/pid.c:3.4    Fri May 27 00:09:02 1994
  8126. --- gopher+/gopherd/pid.c    Fri May 27 00:09:02 1994
  8127. ***************
  8128. *** 1,7 ****
  8129.   /********************************************************************
  8130.    * $Author: lindner $
  8131. !  * $Revision: 3.4 $
  8132. !  * $Date: 1994/04/08 21:03:37 $
  8133.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/pid.c,v $
  8134.    * $State: Exp $
  8135.    *
  8136. --- 1,7 ----
  8137.   /********************************************************************
  8138.    * $Author: lindner $
  8139. !  * $Revision: 3.5 $
  8140. !  * $Date: 1994/05/25 20:58:27 $
  8141.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/pid.c,v $
  8142.    * $State: Exp $
  8143.    *
  8144. ***************
  8145. *** 15,20 ****
  8146. --- 15,23 ----
  8147.    *********************************************************************
  8148.    * Revision History:
  8149.    * $Log: pid.c,v $
  8150. +  * Revision 3.5  1994/05/25  20:58:27  lindner
  8151. +  * remove unused variable
  8152. +  *
  8153.    * Revision 3.4  1994/04/08  21:03:37  lindner
  8154.    * Fix typo...
  8155.    *
  8156. ***************
  8157. *** 179,185 ****
  8158.   PIDclean(piddirstr)
  8159.     char *piddirstr;
  8160.   {
  8161. -      int           count = 0;
  8162.        DIR           *pids;
  8163.        struct dirent *dp;
  8164.        int           pidnum;
  8165. --- 182,187 ----
  8166. diff -c gopher+/gopherd/site.c:3.5 gopher+/gopherd/site.c:3.6
  8167. *** gopher+/gopherd/site.c:3.5    Fri May 27 00:09:02 1994
  8168. --- gopher+/gopherd/site.c    Fri May 27 00:09:02 1994
  8169. ***************
  8170. *** 1,7 ****
  8171.   /********************************************************************
  8172.    * $Author: lindner $
  8173. !  * $Revision: 3.5 $
  8174. !  * $Date: 1994/03/17 21:18:24 $
  8175.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/site.c,v $
  8176.    * $State: Exp $
  8177.    *
  8178. --- 1,7 ----
  8179.   /********************************************************************
  8180.    * $Author: lindner $
  8181. !  * $Revision: 3.6 $
  8182. !  * $Date: 1994/05/02 07:41:15 $
  8183.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/site.c,v $
  8184.    * $State: Exp $
  8185.    *
  8186. ***************
  8187. *** 15,20 ****
  8188. --- 15,23 ----
  8189.    *********************************************************************
  8190.    * Revision History:
  8191.    * $Log: site.c,v $
  8192. +  * Revision 3.6  1994/05/02  07:41:15  lindner
  8193. +  * Mods to use setlocale()
  8194. +  *
  8195.    * Revision 3.5  1994/03/17  21:18:24  lindner
  8196.    * Massive reworking of access limits
  8197.    *
  8198. ***************
  8199. *** 41,46 ****
  8200. --- 44,50 ----
  8201.   
  8202.   #include "site.h"
  8203.   #include "Malloc.h"
  8204. + #include <locale.h>
  8205.   #include <ctype.h>
  8206.   #include "util.h"
  8207.   #include "Debug.h"
  8208. diff -c gopher+/gopherd/special.c:3.16 gopher+/gopherd/special.c:3.17
  8209. *** gopher+/gopherd/special.c:3.16    Fri May 27 00:09:03 1994
  8210. --- gopher+/gopherd/special.c    Fri May 27 00:09:03 1994
  8211. ***************
  8212. *** 1,7 ****
  8213.   /********************************************************************
  8214.    * $Author: lindner $
  8215. !  * $Revision: 3.16 $
  8216. !  * $Date: 1994/04/14 15:48:54 $
  8217.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/special.c,v $
  8218.    * $State: Exp $
  8219.    *
  8220. --- 1,7 ----
  8221.   /********************************************************************
  8222.    * $Author: lindner $
  8223. !  * $Revision: 3.17 $
  8224. !  * $Date: 1994/04/25 20:49:11 $
  8225.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/special.c,v $
  8226.    * $State: Exp $
  8227.    *
  8228. ***************
  8229. *** 15,20 ****
  8230. --- 15,23 ----
  8231.    *********************************************************************
  8232.    * Revision History:
  8233.    * $Log: special.c,v $
  8234. +  * Revision 3.17  1994/04/25  20:49:11  lindner
  8235. +  * Fix for debug code
  8236. +  *
  8237.    * Revision 3.16  1994/04/14  15:48:54  lindner
  8238.    * Fix for files with single quotes
  8239.    *
  8240. ***************
  8241. *** 185,191 ****
  8242.               
  8243.         ispipe = 1;
  8244.         
  8245. !       Debug("Zcat/popen is okay\n",0);
  8246.         
  8247.   
  8248.         return pp;
  8249. --- 188,194 ----
  8250.               
  8251.         ispipe = 1;
  8252.         
  8253. !       Debugmsg("Zcat/popen is okay\n");
  8254.         
  8255.   
  8256.         return pp;
  8257. diff -c gopher+/gopherd/wais.h:3.1.1.1 gopher+/gopherd/wais.h:3.3
  8258. *** gopher+/gopherd/wais.h:3.1.1.1    Fri May 27 00:09:03 1994
  8259. --- gopher+/gopherd/wais.h    Fri May 27 00:09:03 1994
  8260. ***************
  8261. *** 1,7 ****
  8262.   /********************************************************************
  8263.    * $Author: lindner $
  8264. !  * $Revision: 3.1.1.1 $
  8265. !  * $Date: 1993/02/11 18:02:53 $
  8266.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/wais.h,v $
  8267.    * $Status: $
  8268.    *
  8269. --- 1,7 ----
  8270.   /********************************************************************
  8271.    * $Author: lindner $
  8272. !  * $Revision: 3.3 $
  8273. !  * $Date: 1994/05/14 04:18:43 $
  8274.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/wais.h,v $
  8275.    * $Status: $
  8276.    *
  8277. ***************
  8278. *** 15,20 ****
  8279. --- 15,26 ----
  8280.    *********************************************************************
  8281.    * Revision History:
  8282.    * $Log: wais.h,v $
  8283. +  * Revision 3.3  1994/05/14  04:18:43  lindner
  8284. +  * Use new locale.h
  8285. +  *
  8286. +  * Revision 3.2  1994/05/02  07:41:16  lindner
  8287. +  * Mods to use setlocale()
  8288. +  *
  8289.    * Revision 3.1.1.1  1993/02/11  18:02:53  lindner
  8290.    * Gopher+1.2beta release
  8291.    *
  8292. ***************
  8293. *** 37,42 ****
  8294. --- 43,54 ----
  8295.      jonathan@Think.COM
  8296.   
  8297.    * $Log: wais.h,v $
  8298. +  * Revision 3.3  1994/05/14  04:18:43  lindner
  8299. +  * Use new locale.h
  8300. +  *
  8301. +  * Revision 3.2  1994/05/02  07:41:16  lindner
  8302. +  * Mods to use setlocale()
  8303. +  *
  8304.    * Revision 3.1.1.1  1993/02/11  18:02:53  lindner
  8305.    * Gopher+1.2beta release
  8306.    *
  8307. ***************
  8308. *** 55,60 ****
  8309. --- 67,73 ----
  8310.   
  8311.   #define STRINGSIZE    256
  8312.   
  8313. + #include <Locale.h>
  8314.   #include <ctype.h>
  8315.   #include <sys/types.h>
  8316.   #include <sys/stat.h>
  8317. diff -c gopher+/gopherd/waisgopher.c:3.21 gopher+/gopherd/waisgopher.c:3.23
  8318. *** gopher+/gopherd/waisgopher.c:3.21    Fri May 27 00:09:03 1994
  8319. --- gopher+/gopherd/waisgopher.c    Fri May 27 00:09:03 1994
  8320. ***************
  8321. *** 1,7 ****
  8322.   /********************************************************************
  8323.    * $Author: lindner $
  8324. !  * $Revision: 3.21 $
  8325. !  * $Date: 1994/03/17 21:14:19 $
  8326.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/waisgopher.c,v $
  8327.    * $State: Exp $
  8328.    *
  8329. --- 1,7 ----
  8330.   /********************************************************************
  8331.    * $Author: lindner $
  8332. !  * $Revision: 3.23 $
  8333. !  * $Date: 1994/05/02 07:41:17 $
  8334.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/gopherd/waisgopher.c,v $
  8335.    * $State: Exp $
  8336.    *
  8337. ***************
  8338. *** 15,20 ****
  8339. --- 15,26 ----
  8340.    *********************************************************************
  8341.    * Revision History:
  8342.    * $Log: waisgopher.c,v $
  8343. +  * Revision 3.23  1994/05/02  07:41:17  lindner
  8344. +  * Mods to use setlocale()
  8345. +  *
  8346. +  * Revision 3.22  1994/04/25  20:49:12  lindner
  8347. +  * Fix for debug code
  8348. +  *
  8349.    * Revision 3.21  1994/03/17  21:14:19  lindner
  8350.    * Fix for pid load limiting
  8351.    *
  8352. ***************
  8353. *** 111,116 ****
  8354. --- 117,123 ----
  8355.   #define ANSI_LIKE
  8356.   #endif
  8357.   
  8358. + #include <locale.h>
  8359.   #include <ctype.h>
  8360.   #include <ui.h>
  8361.   #include <docid.h>
  8362. ***************
  8363. *** 255,261 ****
  8364.              if ('\n' == record->DocumentText->bytes[count + 1])
  8365.               break;
  8366.         case '\n':
  8367. !            Debug("Got a return\n",0);
  8368.              output[outputptr++] = '\r';
  8369.              output[outputptr++] = '\n';
  8370.              break;
  8371. --- 262,268 ----
  8372.              if ('\n' == record->DocumentText->bytes[count + 1])
  8373.               break;
  8374.         case '\n':
  8375. !            Debugmsg("Got a return\n");
  8376.              output[outputptr++] = '\r';
  8377.              output[outputptr++] = '\n';
  8378.              break;
  8379. ***************
  8380. *** 897,903 ****
  8381.         if (strncmp(type, "TEXT", 4) == 0) {
  8382.              int k;
  8383.              k = 0;
  8384. !            Debug("Displaying text\n",0);
  8385.              while (((WAISSearchResponse *)retrieval_response->DatabaseDiagnosticRecords)->Text[k] != 0) {
  8386.               Mydisplay_text_record_completely
  8387.                (((WAISSearchResponse *)retrieval_response->DatabaseDiagnosticRecords)->Text[k++], false, sockfd);
  8388. --- 904,910 ----
  8389.         if (strncmp(type, "TEXT", 4) == 0) {
  8390.              int k;
  8391.              k = 0;
  8392. !            Debugmsg("Displaying text\n");
  8393.              while (((WAISSearchResponse *)retrieval_response->DatabaseDiagnosticRecords)->Text[k] != 0) {
  8394.               Mydisplay_text_record_completely
  8395.                (((WAISSearchResponse *)retrieval_response->DatabaseDiagnosticRecords)->Text[k++], false, sockfd);
  8396. ***************
  8397. *** 911,917 ****
  8398.             Source Moo;
  8399.   
  8400.             /*** It's a search! **/
  8401. !           Debug("Searching!\n",0);
  8402.             
  8403.             /*** Dump out the contents of the text record on the server ***/
  8404.             /*** then call SearchRemoteWAIS(), then delete file ***/
  8405. --- 918,924 ----
  8406.             Source Moo;
  8407.   
  8408.             /*** It's a search! **/
  8409. !           Debugmsg("Searching!\n");
  8410.             
  8411.             /*** Dump out the contents of the text record on the server ***/
  8412.             /*** then call SearchRemoteWAIS(), then delete file ***/
  8413. ***************
  8414. *** 943,949 ****
  8415.         else {
  8416.              int recs =0;
  8417.   
  8418. !            Debug("Displaying Binary\n",0);
  8419.              while (1) {
  8420.               if (((WAISSearchResponse*)retrieval_response->DatabaseDiagnosticRecords)->Text[recs] == NULL)
  8421.                break;
  8422. --- 950,956 ----
  8423.         else {
  8424.              int recs =0;
  8425.   
  8426. !            Debugmsg("Displaying Binary\n");
  8427.              while (1) {
  8428.               if (((WAISSearchResponse*)retrieval_response->DatabaseDiagnosticRecords)->Text[recs] == NULL)
  8429.                break;
  8430. diff -c gopher+/object/Debug.h:3.1 gopher+/object/Debug.h:3.3
  8431. *** gopher+/object/Debug.h:3.1    Fri May 27 00:09:05 1994
  8432. --- gopher+/object/Debug.h    Fri May 27 00:09:05 1994
  8433. ***************
  8434. *** 8,18 ****
  8435. --- 8,20 ----
  8436.   #ifdef DEBUGGING
  8437.   #  include <stdio.h>
  8438.   #  define Debug(str,val) if (DEBUG) { fprintf(stderr,str,val); }
  8439. + #  define Debugmsg(str)  if (DEBUG) { fprintf(stderr,str); }
  8440.   #  define DebugGSplusPrint(gop,str) if (DEBUG) { GSplusPrint(gop,str); }
  8441.   
  8442.   #else 
  8443.   
  8444.   #  define Debug(str,val)
  8445. + #  define Debugmsg(str)
  8446.   #  define DebugGSplusPrint(gop,str)
  8447.   
  8448.   #endif
  8449. diff -c gopher+/object/GDgopherdir.c:3.20 gopher+/object/GDgopherdir.c:3.22
  8450. *** gopher+/object/GDgopherdir.c:3.20    Fri May 27 00:09:05 1994
  8451. --- gopher+/object/GDgopherdir.c    Fri May 27 00:09:05 1994
  8452. ***************
  8453. *** 1,7 ****
  8454.   /********************************************************************
  8455.    * $Author: lindner $
  8456. !  * $Revision: 3.20 $
  8457. !  * $Date: 1994/04/21 21:24:57 $
  8458.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/GDgopherdir.c,v $
  8459.    * $State: Exp $
  8460.    *
  8461. --- 1,7 ----
  8462.   /********************************************************************
  8463.    * $Author: lindner $
  8464. !  * $Revision: 3.22 $
  8465. !  * $Date: 1994/04/27 19:21:37 $
  8466.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/GDgopherdir.c,v $
  8467.    * $State: Exp $
  8468.    *
  8469. ***************
  8470. *** 15,20 ****
  8471. --- 15,26 ----
  8472.    *********************************************************************
  8473.    * Revision History:
  8474.    * $Log: GDgopherdir.c,v $
  8475. +  * Revision 3.22  1994/04/27  19:21:37  lindner
  8476. +  * Fix for semicolons after Debugmsg
  8477. +  *
  8478. +  * Revision 3.21  1994/04/25  03:36:56  lindner
  8479. +  * Modifications for Debug() and mismatched NULL arguments, added Debugmsg
  8480. +  *
  8481.    * Revision 3.20  1994/04/21  21:24:57  lindner
  8482.    * Fix fcn header
  8483.    *
  8484. ***************
  8485. *** 244,250 ****
  8486.     GSformat fmt;
  8487.   {
  8488.        int i;
  8489. !      Debug("GDplustoNet\n",0);
  8490.   
  8491.        if (fmt == GSFORM_HTML) {
  8492.         writestring(sockfd, "<DL COMPACT>\r\n");
  8493. --- 250,256 ----
  8494.     GSformat fmt;
  8495.   {
  8496.        int i;
  8497. !      Debugmsg("GDplustoNet\n");
  8498.   
  8499.        if (fmt == GSFORM_HTML) {
  8500.         writestring(sockfd, "<DL COMPACT>\r\n");
  8501. ***************
  8502. *** 290,296 ****
  8503.        int j, result;
  8504.        char inputline[256];
  8505.   
  8506. !      Debug("GDplusfromNet:: start\r\n",0)
  8507.        if (TempGopher == NULL)
  8508.         TempGopher = GSnew();
  8509.   
  8510. --- 296,302 ----
  8511.        int j, result;
  8512.        char inputline[256];
  8513.   
  8514. !      Debugmsg("GDplusfromNet:: start\r\n");
  8515.        if (TempGopher == NULL)
  8516.         TempGopher = GSnew();
  8517.   
  8518. ***************
  8519. *** 307,313 ****
  8520.        else if (*inputline != '+')
  8521.         return(0);
  8522.   
  8523. !      Debug("after readrecvbuf",0)
  8524.        /** State _FirstPlus_ **/
  8525.   
  8526.        result = readtoken(fd, inputline, sizeof(inputline), ':');
  8527. --- 313,319 ----
  8528.        else if (*inputline != '+')
  8529.         return(0);
  8530.   
  8531. !      Debugmsg("after readrecvbuf");
  8532.        /** State _FirstPlus_ **/
  8533.   
  8534.        result = readtoken(fd, inputline, sizeof(inputline), ':');
  8535. ***************
  8536. *** 314,324 ****
  8537.        if (result <=0)
  8538.         return(result);
  8539.   
  8540. !      Debug("after readtoken",0)
  8541.        if (strcmp(inputline, "INFO")!=0) {
  8542.         return(0);
  8543.        }
  8544. !      Debug("after INFO",0)
  8545.        /** Read the space **/
  8546.        readrecvbuf(fd, inputline, 1);
  8547.   
  8548. --- 320,330 ----
  8549.        if (result <=0)
  8550.         return(result);
  8551.   
  8552. !      Debugmsg("after readtoken");
  8553.        if (strcmp(inputline, "INFO")!=0) {
  8554.         return(0);
  8555.        }
  8556. !      Debugmsg("after INFO");
  8557.        /** Read the space **/
  8558.        readrecvbuf(fd, inputline, 1);
  8559.   
  8560. ***************
  8561. *** 327,333 ****
  8562.   
  8563.        for (j=0; ; j++) {
  8564.   
  8565. !            Debug("for start",0);
  8566.         ZesTmp[0] = '\0';
  8567.         
  8568.         GSinit(TempGopher);
  8569. --- 333,339 ----
  8570.   
  8571.        for (j=0; ; j++) {
  8572.   
  8573. !            Debugmsg("for start");
  8574.         ZesTmp[0] = '\0';
  8575.         
  8576.         GSinit(TempGopher);
  8577. ***************
  8578. *** 376,382 ****
  8579.        static char ZesTmp[1024];
  8580.        int i;
  8581.   
  8582. !      Debug("GDfromNet...",0);
  8583.        if (TempGopher == NULL)
  8584.         TempGopher = GSnew();
  8585.   
  8586. --- 382,388 ----
  8587.        static char ZesTmp[1024];
  8588.        int i;
  8589.   
  8590. !      Debugmsg("GDfromNet...");
  8591.        if (TempGopher == NULL)
  8592.         TempGopher = GSnew();
  8593.   
  8594. ***************
  8595. *** 498,508 ****
  8596.   
  8597.         cp = GSgetPath(gs);
  8598.         if (len >1 && strcmp(text+1, cp+1) == 0) {
  8599. !            Debug("Matched\n",0);
  8600.              return(i);
  8601.         }
  8602.        }
  8603. !      Debug("GDsearch: No Match\n",0);
  8604.        return(-1);
  8605.   }
  8606.   
  8607. --- 504,514 ----
  8608.   
  8609.         cp = GSgetPath(gs);
  8610.         if (len >1 && strcmp(text+1, cp+1) == 0) {
  8611. !            Debugmsg("Matched\n");
  8612.              return(i);
  8613.         }
  8614.        }
  8615. !      Debugmsg("GDsearch: No Match\n");
  8616.        return(-1);
  8617.   }
  8618.   
  8619. diff -c gopher+/object/GSgopherobj.c:3.46 gopher+/object/GSgopherobj.c:3.51
  8620. *** gopher+/object/GSgopherobj.c:3.46    Fri May 27 00:09:06 1994
  8621. --- gopher+/object/GSgopherobj.c    Fri May 27 00:09:06 1994
  8622. ***************
  8623. *** 1,7 ****
  8624.   /********************************************************************
  8625.    * $Author: lindner $
  8626. !  * $Revision: 3.46 $
  8627. !  * $Date: 1994/04/22 06:41:35 $
  8628.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/GSgopherobj.c,v $
  8629.    * $State: Exp $
  8630.    *
  8631. --- 1,7 ----
  8632.   /********************************************************************
  8633.    * $Author: lindner $
  8634. !  * $Revision: 3.51 $
  8635. !  * $Date: 1994/05/25 20:57:46 $
  8636.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/GSgopherobj.c,v $
  8637.    * $State: Exp $
  8638.    *
  8639. ***************
  8640. *** 15,20 ****
  8641. --- 15,35 ----
  8642.    *********************************************************************
  8643.    * Revision History:
  8644.    * $Log: GSgopherobj.c,v $
  8645. +  * Revision 3.51  1994/05/25  20:57:46  lindner
  8646. +  * Remove unused var
  8647. +  *
  8648. +  * Revision 3.50  1994/05/06  02:29:46  lindner
  8649. +  * Fix from Robert Beckett for binhex files
  8650. +  *
  8651. +  * Revision 3.49  1994/04/25  03:36:58  lindner
  8652. +  * Modifications for Debug() and mismatched NULL arguments, added Debugmsg
  8653. +  *
  8654. +  * Revision 3.48  1994/04/25  02:26:30  lindner
  8655. +  * Fix for url problems
  8656. +  *
  8657. +  * Revision 3.47  1994/04/25  02:16:31  lindner
  8658. +  * Fix for |= mistype
  8659. +  *
  8660.    * Revision 3.46  1994/04/22  06:41:35  lindner
  8661.    * More pacbell hacks for Domain=
  8662.    *
  8663. ***************
  8664. *** 457,468 ****
  8665.   }
  8666.   
  8667.   char *
  8668. ! GStoNetURL(gs)
  8669.     GopherObj *gs;
  8670.   {
  8671. !      char u[256], *path, *ftphost, *ftppath;
  8672.   
  8673. !      *u = '\0';
  8674.        path  = GSgetPath(gs);
  8675.   
  8676.        /** This is a server specific hack for now..  **/
  8677. --- 472,484 ----
  8678.   }
  8679.   
  8680.   char *
  8681. ! GStoNetURL(gs,url)
  8682.     GopherObj *gs;
  8683. +   char *url;
  8684.   {
  8685. !      char *path, *ftphost, *ftppath;
  8686.   
  8687. !      *url = '\0';
  8688.        path  = GSgetPath(gs);
  8689.   
  8690.        /** This is a server specific hack for now..  **/
  8691. ***************
  8692. *** 473,479 ****
  8693.   
  8694.         if (ftppath != NULL)
  8695.         {
  8696. !            sprintf(u, "ftp://%.*s/", ftppath-ftphost, ftphost);
  8697.              
  8698.              ftppath++;
  8699.   
  8700. --- 489,495 ----
  8701.   
  8702.         if (ftppath != NULL)
  8703.         {
  8704. !            sprintf(url, "ftp://%.*s/", ftppath-ftphost, ftphost);
  8705.              
  8706.              ftppath++;
  8707.   
  8708. ***************
  8709. *** 481,488 ****
  8710.              if (*ftppath == '/')
  8711.               ftppath++;
  8712.   
  8713. !            strcat(u, ftppath);
  8714. !            return(u);
  8715.         }
  8716.        }
  8717.        return(GSgetURLhtml(gs));
  8718. --- 497,504 ----
  8719.              if (*ftppath == '/')
  8720.               ftppath++;
  8721.   
  8722. !            strcat(url, ftppath);
  8723. !            return(url);
  8724.         }
  8725.        }
  8726.        return(GSgetURLhtml(gs));
  8727. ***************
  8728. *** 651,657 ****
  8729.     GSformat  fmt;
  8730.   {
  8731.        static char buf[1024];
  8732. !      char *cp;
  8733.   
  8734.        buf[0] = GSgetType(gs);
  8735.   
  8736. --- 667,673 ----
  8737.     GSformat  fmt;
  8738.   {
  8739.        static char buf[1024];
  8740. !      char cp[256];
  8741.   
  8742.        buf[0] = GSgetType(gs);
  8743.   
  8744. ***************
  8745. *** 684,694 ****
  8746.              writestring(sockfd, GSgetTitle(gs));
  8747.              return;
  8748.         }
  8749. !       cp = GStoNetURL(gs);
  8750.         if ( (cp == NULL) || (*cp == '\0') )
  8751.              return;
  8752.         sprintf(buf, "<DT><A HREF=\"%s\">%s</A>\r\n",
  8753.             cp, GSgetTitle(gs));
  8754.         writestring(sockfd, buf);
  8755.   
  8756.         if (GSgplusInited(gs)) {
  8757. --- 700,711 ----
  8758.              writestring(sockfd, GSgetTitle(gs));
  8759.              return;
  8760.         }
  8761. !       GStoNetURL(gs, cp);
  8762.         if ( (cp == NULL) || (*cp == '\0') )
  8763.              return;
  8764.         sprintf(buf, "<DT><A HREF=\"%s\">%s</A>\r\n",
  8765.             cp, GSgetTitle(gs));
  8766. +       free(cp);
  8767.         writestring(sockfd, buf);
  8768.   
  8769.         if (GSgplusInited(gs)) {
  8770. ***************
  8771. *** 1287,1293 ****
  8772.   {
  8773.        char headerline[128];
  8774.   
  8775. !      Debug("GSrecvHeader\n",0);
  8776.        if (GSisGplus(gs)) {
  8777.         readline(sockfd, headerline, sizeof(headerline));
  8778.         ZapCRLF(headerline);
  8779. --- 1304,1310 ----
  8780.   {
  8781.        char headerline[128];
  8782.   
  8783. !      Debugmsg("GSrecvHeader\n");
  8784.        if (GSisGplus(gs)) {
  8785.         readline(sockfd, headerline, sizeof(headerline));
  8786.         ZapCRLF(headerline);
  8787. ***************
  8788. *** 1420,1426 ****
  8789.        boolean DidDomain = FALSE;    /** Needed to make Domain= lines
  8790.                         into logical or's **/
  8791.   
  8792. !      Debug("GSfromLink...\n",0);
  8793.        while ((bytesread = FIOreadlinezap(fio, buf, sizeof(buf)))>0) {
  8794.   
  8795.         if (buf[0] == '#') {
  8796. --- 1437,1443 ----
  8797.        boolean DidDomain = FALSE;    /** Needed to make Domain= lines
  8798.                         into logical or's **/
  8799.   
  8800. !      Debugmsg("GSfromLink...\n");
  8801.        while ((bytesread = FIOreadlinezap(fio, buf, sizeof(buf)))>0) {
  8802.   
  8803.         if (buf[0] == '#') {
  8804. ***************
  8805. *** 1554,1560 ****
  8806.              break;  /*** Unknown name/item ***/
  8807.        }
  8808.   
  8809. !      Debug("Done with this link item\n",0);
  8810.   
  8811.        if (BadDomain)
  8812.         return(SOFTERROR);
  8813. --- 1571,1577 ----
  8814.              break;  /*** Unknown name/item ***/
  8815.        }
  8816.   
  8817. !      Debugmsg("Done with this link item\n");
  8818.   
  8819.        if (BadDomain)
  8820.         return(SOFTERROR);
  8821. ***************
  8822. *** 1772,1778 ****
  8823.                } else {
  8824.                     GSsetType(gs, A_FILE);
  8825.                 }
  8826. !              doneflags != G_TYPE;
  8827.               }
  8828.              } else {
  8829.               GSsetPath(gs, cp);
  8830. --- 1789,1795 ----
  8831.                } else {
  8832.                     GSsetType(gs, A_FILE);
  8833.                 }
  8834. !              doneflags |= G_TYPE;
  8835.               }
  8836.              } else {
  8837.               GSsetPath(gs, cp);
  8838. ***************
  8839. *** 1828,1848 ****
  8840.     GopherObj *gs;
  8841.     char *view;
  8842.   {
  8843. -      char viewstowage[64], *cp;
  8844.   
  8845. -      if (view == NULL)
  8846. -       return(FALSE);
  8847. -      strcpy(viewstowage, view);
  8848. -      if ((cp=strchr(viewstowage, ' '))!=NULL) {
  8849. -       *cp = '\0';
  8850. -       view = viewstowage;
  8851. -      }
  8852.        if (view == NULL) {
  8853.         switch (GSgetType(gs)) {
  8854.         case A_FILE:
  8855.         case A_MACHEX:
  8856.              return(TRUE);
  8857.   
  8858.         default:
  8859. --- 1845,1856 ----
  8860.     GopherObj *gs;
  8861.     char *view;
  8862.   {
  8863.   
  8864.        if (view == NULL) {
  8865.         switch (GSgetType(gs)) {
  8866.         case A_FILE:
  8867.         case A_MACHEX:
  8868. +       case A_HTML:
  8869.              return(TRUE);
  8870.   
  8871.         default:
  8872. ***************
  8873. *** 1850,1857 ****
  8874.         }
  8875.        }
  8876.        else {
  8877.         if (strncasecmp(view, "Text",4) == 0 ||
  8878. !           strncasecmp(view, "application/postscript", 21)==0)
  8879.              return(TRUE);
  8880.         else
  8881.              return(FALSE);
  8882. --- 1858,1877 ----
  8883.         }
  8884.        }
  8885.        else {
  8886. +       char viewstowage[64], *cp;
  8887. +       strcpy(viewstowage, view);
  8888. +       if ((cp=strchr(viewstowage, ' '))!=NULL) {
  8889. +            *cp = '\0';
  8890. +            view = viewstowage;
  8891. +       }
  8892.         if (strncasecmp(view, "Text",4) == 0 ||
  8893. !           strncasecmp(view, "application/postscript", 21)==0 ||
  8894. !           strncasecmp(view, "application/mac-binhex40", 24)==0 ||
  8895. !           strncasecmp(view, "application/rtf", 15) == 0)
  8896.              return(TRUE);
  8897.         else
  8898.              return(FALSE);
  8899. diff -c /dev/null gopher+/object/Locale.h:3.6
  8900. *** /dev/null    Fri May 27 00:09:07 1994
  8901. --- gopher+/object/Locale.h    Fri May 27 00:09:07 1994
  8902. ***************
  8903. *** 0 ****
  8904. --- 1,39 ----
  8905. + /*
  8906. +  * These routines make using the international messages facilities easier.
  8907. +  * 
  8908. +  * Note if you use this stuff you'll need to add a global variable
  8909. +  * 
  8910. +  *    nl_catd Gcatd; 
  8911. +  *
  8912. +  * to your source.
  8913. +  *
  8914. +  * This interface could be applied to methods other than X/Open coding
  8915. +  * (VMS etc..)
  8916. +  *
  8917. +  * Copyright (c) 1994 University of Minnesota
  8918. +  */
  8919. + #if defined(VMS) || defined(_AUX_SOURCE) /* VMS doesn't have locale.h */
  8920. + #  define setlocale(a,b)
  8921. + #  define Gtxt(a,b) a
  8922. + #  define Gtxtopen(a,b,c)
  8923. + #else
  8924. + #  include <locale.h>
  8925. +    /** Figure out which systems have catopen() etal **/
  8926. + #  if defined(__svr4__) || defined(sgi) || defined(_XOPEN_SOURCE)
  8927. + #    include <nl_types.h>
  8928. + #    define GINTERNATIONAL
  8929. + #  endif
  8930. + #  if !defined(GINTERNATIONAL)    /* Only use i18n routines if we're sure */
  8931. + #    define Gtxtopen(a,b,c)
  8932. + #    define Gtxt(a,b) a
  8933. + #  else
  8934. +      /*** Define some nice convenience routines ***/
  8935. +      /**  It would sure be nice to use gettext() routines... oh well...***/
  8936. + #    define Gtxt(a,b)       (catgets(Gcatd,NL_SETD,b,a))
  8937. + #    define Gtxtopen(a,b,c) (a=catopen(b,c))
  8938. + #  endif
  8939. + #endif
  8940. diff -c gopher+/object/Malloc.h:3.3 gopher+/object/Malloc.h:3.5
  8941. *** gopher+/object/Malloc.h:3.3    Fri May 27 00:09:07 1994
  8942. --- gopher+/object/Malloc.h    Fri May 27 00:09:07 1994
  8943. ***************
  8944. *** 1,7 ****
  8945.   /********************************************************************
  8946.    * $Author: lindner $
  8947. !  * $Revision: 3.3 $
  8948. !  * $Date: 1993/10/19 20:46:35 $
  8949.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/Malloc.h,v $
  8950.    * $Status: $
  8951.    *
  8952. --- 1,7 ----
  8953.   /********************************************************************
  8954.    * $Author: lindner $
  8955. !  * $Revision: 3.5 $
  8956. !  * $Date: 1994/05/24 05:42:17 $
  8957.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/Malloc.h,v $
  8958.    * $Status: $
  8959.    *
  8960. ***************
  8961. *** 15,20 ****
  8962. --- 15,26 ----
  8963.    *********************************************************************
  8964.    * Revision History:
  8965.    * $Log: Malloc.h,v $
  8966. +  * Revision 3.5  1994/05/24  05:42:17  lindner
  8967. +  * Fix for old field version of DECC
  8968. +  *
  8969. +  * Revision 3.4  1994/05/19  14:25:24  lindner
  8970. +  * faster VMS VAXC malloc
  8971. +  *
  8972.    * Revision 3.3  1993/10/19  20:46:35  lindner
  8973.    * use stdio.h in Malloc.h to get NULL if necessary
  8974.    *
  8975. ***************
  8976. *** 30,37 ****
  8977.    *
  8978.    *********************************************************************/
  8979.   
  8980.   
  8981.   /*
  8982.    * Just enough to get us memory allocation and NULL
  8983.    * 
  8984. --- 36,43 ----
  8985.    *
  8986.    *********************************************************************/
  8987.   
  8988. + #ifndef G_MALLOC_H
  8989.   
  8990.   /*
  8991.    * Just enough to get us memory allocation and NULL
  8992.    * 
  8993. ***************
  8994. *** 57,59 ****
  8995. --- 63,79 ----
  8996.   #ifndef NULL  
  8997.   #define NULL ((void*) 0)
  8998.   #endif
  8999. + /* memory management for VAXC */
  9000. + #if defined(VMS) && defined(VAXC) && !defined(__DECC)
  9001. + #  include <stdlib.h>
  9002. + #  define malloc  VAXC$MALLOC_OPT
  9003. + #  define calloc  VAXC$CALLOC_OPT
  9004. + #  define free    VAXC$FREE_OPT
  9005. + #  define cfree   VAXC$CFREE_OPT
  9006. + #  define realloc VAXC$REALLOC_OPT
  9007. + #endif /* VMS and VAXC */
  9008. + #endif /* G_MALLOC_H */
  9009. diff -c gopher+/object/Sockets.c:3.16 gopher+/object/Sockets.c:3.18
  9010. *** gopher+/object/Sockets.c:3.16    Fri May 27 00:09:07 1994
  9011. --- gopher+/object/Sockets.c    Fri May 27 00:09:07 1994
  9012. ***************
  9013. *** 1,7 ****
  9014.   /********************************************************************
  9015.    * $Author: lindner $
  9016. !  * $Revision: 3.16 $
  9017. !  * $Date: 1994/04/08 20:05:53 $
  9018.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/Sockets.c,v $
  9019.    * $State: Exp $
  9020.    *
  9021. --- 1,7 ----
  9022.   /********************************************************************
  9023.    * $Author: lindner $
  9024. !  * $Revision: 3.18 $
  9025. !  * $Date: 1994/04/25 03:46:03 $
  9026.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/Sockets.c,v $
  9027.    * $State: Exp $
  9028.    *
  9029. ***************
  9030. *** 15,20 ****
  9031. --- 15,26 ----
  9032.    *********************************************************************
  9033.    * Revision History:
  9034.    * $Log: Sockets.c,v $
  9035. +  * Revision 3.18  1994/04/25  03:46:03  lindner
  9036. +  * Fix for NETLIB and CMUIP
  9037. +  *
  9038. +  * Revision 3.17  1994/04/25  03:36:59  lindner
  9039. +  * Modifications for Debug() and mismatched NULL arguments, added Debugmsg
  9040. +  *
  9041.    * Revision 3.16  1994/04/08  20:05:53  lindner
  9042.    * gcc -Wall fixes
  9043.    *
  9044. ***************
  9045. *** 139,145 ****
  9046.       return(sockfd);
  9047.   }
  9048.   
  9049. - #endif
  9050.   
  9051.   
  9052.   /*
  9053. --- 145,150 ----
  9054. ***************
  9055. *** 210,215 ****
  9056. --- 215,221 ----
  9057.   
  9058.   }
  9059.   
  9060. + #endif /* not CMUIP nor NETLIB */
  9061.   
  9062.   
  9063.   
  9064. ***************
  9065. *** 398,404 ****
  9066.   
  9067.        tem = ntohs(we.sin_port);
  9068.   
  9069. !      Debug("Here we go...\n",0);
  9070.   
  9071.        if ((sockfd = accept(s, (struct sockaddr *) &we, &len)) < 0) {
  9072.         return ErrSocketConnect;
  9073. --- 404,410 ----
  9074.   
  9075.        tem = ntohs(we.sin_port);
  9076.   
  9077. !      Debugmsg("Here we go...\n");
  9078.   
  9079.        if ((sockfd = accept(s, (struct sockaddr *) &we, &len)) < 0) {
  9080.         return ErrSocketConnect;
  9081. diff -c gopher+/object/compatible.c:3.12 gopher+/object/compatible.c:3.13
  9082. *** gopher+/object/compatible.c:3.12    Fri May 27 00:09:08 1994
  9083. --- gopher+/object/compatible.c    Fri May 27 00:09:08 1994
  9084. ***************
  9085. *** 1,7 ****
  9086.   /********************************************************************
  9087.    * $Author: lindner $
  9088. !  * $Revision: 3.12 $
  9089. !  * $Date: 1994/04/08 20:05:55 $
  9090.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/compatible.c,v $
  9091.    * $State: Exp $
  9092.    *
  9093. --- 1,7 ----
  9094.   /********************************************************************
  9095.    * $Author: lindner $
  9096. !  * $Revision: 3.13 $
  9097. !  * $Date: 1994/04/25 03:34:34 $
  9098.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/compatible.c,v $
  9099.    * $State: Exp $
  9100.    *
  9101. ***************
  9102. *** 15,20 ****
  9103. --- 15,23 ----
  9104.    *********************************************************************
  9105.    * Revision History:
  9106.    * $Log: compatible.c,v $
  9107. +  * Revision 3.13  1994/04/25  03:34:34  lindner
  9108. +  * Put back alpha patch (Fote)
  9109. +  *
  9110.    * Revision 3.12  1994/04/08  20:05:55  lindner
  9111.    * gcc -Wall fixes
  9112.    *
  9113. ***************
  9114. *** 353,363 ****
  9115.       int flags;
  9116.       unsigned int mode;
  9117.   {
  9118. - #ifdef __ALPHA
  9119. -      return  open ( name, flags, mode);
  9120. - #else
  9121.       return  open ( name, flags, mode, "mbc=32");
  9122. - #endif
  9123.   }
  9124.   
  9125.   #endif
  9126. --- 356,362 ----
  9127. diff -c gopher+/object/compatible.h:3.20 gopher+/object/compatible.h:3.23
  9128. *** gopher+/object/compatible.h:3.20    Fri May 27 00:09:08 1994
  9129. --- gopher+/object/compatible.h    Fri May 27 00:09:08 1994
  9130. ***************
  9131. *** 1,7 ****
  9132.   /********************************************************************
  9133.    * $Author: lindner $
  9134. !  * $Revision: 3.20 $
  9135. !  * $Date: 1994/04/08 20:05:56 $
  9136.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/compatible.h,v $
  9137.    * $State: Exp $
  9138.    *
  9139. --- 1,7 ----
  9140.   /********************************************************************
  9141.    * $Author: lindner $
  9142. !  * $Revision: 3.23 $
  9143. !  * $Date: 1994/05/14 04:14:40 $
  9144.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/compatible.h,v $
  9145.    * $State: Exp $
  9146.    *
  9147. ***************
  9148. *** 15,20 ****
  9149. --- 15,29 ----
  9150.    *********************************************************************
  9151.    * Revision History:
  9152.    * $Log: compatible.h,v $
  9153. +  * Revision 3.23  1994/05/14  04:14:40  lindner
  9154. +  * Fix for svr4.2 on unisys
  9155. +  *
  9156. +  * Revision 3.22  1994/05/11  02:41:57  lindner
  9157. +  * Automagically define NO_VFORK for SCO
  9158. +  *
  9159. +  * Revision 3.21  1994/04/25  03:36:17  lindner
  9160. +  * eliminate redefinition of open to open_vmsopt() for ALPHA (Fote)
  9161. +  *
  9162.    * Revision 3.20  1994/04/08  20:05:56  lindner
  9163.    * gcc -Wall fixes
  9164.    *
  9165. ***************
  9166. *** 167,173 ****
  9167.   
  9168.   /******************** For strcasecmp() */
  9169.   
  9170. ! #if defined(NO_STRCASECMP) || defined(VMS) 
  9171.   #  undef NO_STRCASECMP
  9172.   #  define NO_STRCASECMP
  9173.   int strcasecmp();
  9174. --- 176,182 ----
  9175.   
  9176.   /******************** For strcasecmp() */
  9177.   
  9178. ! #if defined(NO_STRCASECMP) || defined(VMS) || defined(__USLC__)
  9179.   #  undef NO_STRCASECMP
  9180.   #  define NO_STRCASECMP
  9181.   int strcasecmp();
  9182. ***************
  9183. *** 214,221 ****
  9184. --- 223,232 ----
  9185.   
  9186.   #  define fopen fopen_VMSopt
  9187.      FILE *fopen_VMSopt();
  9188. + #ifndef __ALPHA
  9189.   #  define open open_VMSopt
  9190.      int open_VMSopt();
  9191. + #endif
  9192.   
  9193.   #  if defined(UCX)
  9194.   #    define closenet close
  9195. ***************
  9196. *** 252,258 ****
  9197.   #define S_IXUSR S_IEXEC
  9198.   #endif
  9199.   
  9200. ! #if defined(NO_VFORK) || defined(_AUX_SOURCE) || defined(sgi) || defined(_AIX)
  9201.   #   define vfork fork
  9202.   #endif
  9203.   
  9204. --- 263,269 ----
  9205.   #define S_IXUSR S_IEXEC
  9206.   #endif
  9207.   
  9208. ! #if defined(NO_VFORK) || defined(_AUX_SOURCE) || defined(sgi) || defined(_AIX) || defined(M_XENIX)
  9209.   #   define vfork fork
  9210.   #endif
  9211.   
  9212. diff -c gopher+/object/fileio.c:3.16 gopher+/object/fileio.c:3.20
  9213. *** gopher+/object/fileio.c:3.16    Fri May 27 00:09:09 1994
  9214. --- gopher+/object/fileio.c    Fri May 27 00:09:09 1994
  9215. ***************
  9216. *** 1,7 ****
  9217.   /********************************************************************
  9218.    * $Author: lindner $
  9219. !  * $Revision: 3.16 $
  9220. !  * $Date: 1994/04/14 18:14:49 $
  9221.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/fileio.c,v $
  9222.    * $State: Exp $
  9223.    *
  9224. --- 1,7 ----
  9225.   /********************************************************************
  9226.    * $Author: lindner $
  9227. !  * $Revision: 3.20 $
  9228. !  * $Date: 1994/05/25 20:57:20 $
  9229.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/fileio.c,v $
  9230.    * $State: Exp $
  9231.    *
  9232. ***************
  9233. *** 15,20 ****
  9234. --- 15,39 ----
  9235.    *********************************************************************
  9236.    * Revision History:
  9237.    * $Log: fileio.c,v $
  9238. +  * Revision 3.20  1994/05/25  20:57:20  lindner
  9239. +  * Fix for piped play commands
  9240. +  *
  9241. +  * Revision 3.19  1994/04/25  03:44:42  lindner
  9242. +  * Don't block empty FIOsystem() command on VMS.  That's what's used for
  9243. +  * the '!' or '$' commands, and they've already be checked for permission
  9244. +  * in Gopher.c.
  9245. +  *
  9246. +  * Reversed DCLsystem() return values in CURCurses.c, and eliminated the
  9247. +  * reversing kludge in FIOsystem().
  9248. +  *
  9249. +  * Fixed break of open() for Alpha.  (all From F.Macrides)
  9250. +  *
  9251. +  * Revision 3.18  1994/04/25  03:37:00  lindner
  9252. +  * Modifications for Debug() and mismatched NULL arguments, added Debugmsg
  9253. +  *
  9254. +  * Revision 3.17  1994/04/25  02:18:46  lindner
  9255. +  * Fix for gcc-Wall
  9256. +  *
  9257.    * Revision 3.16  1994/04/14  18:14:49  lindner
  9258.    * Fix for closing null files
  9259.    *
  9260. ***************
  9261. *** 178,188 ****
  9262.        FileIO *fio;
  9263.   
  9264.        /* Okay, try and open up the file */
  9265. - #ifdef VMS
  9266. -      fd = open_VMSopt(fname, flags, mode);
  9267. - #else
  9268.        fd = open(fname, flags, mode );
  9269. - #endif
  9270.   
  9271.        if (fd < 0)
  9272.         return(NULL); /* Couldn't open file */
  9273. --- 197,203 ----
  9274. ***************
  9275. *** 301,307 ****
  9276.        int result;
  9277.   
  9278.        if (fio == NULL)
  9279. !       return;
  9280.   
  9281.        if (FIOgetPid(fio) >= 0) {
  9282.         
  9283. --- 316,322 ----
  9284.        int result;
  9285.   
  9286.        if (fio == NULL)
  9287. !       return(0);
  9288.   
  9289.        if (FIOgetPid(fio) >= 0) {
  9290.         
  9291. ***************
  9292. *** 387,393 ****
  9293.   
  9294.        length = strlen(str);
  9295.        if (FIOwriten(fio, str, length) != length) {
  9296. !       Debug("writestring: writen failed\n",0);
  9297.         return(-1);
  9298.        }
  9299.        else
  9300. --- 402,408 ----
  9301.   
  9302.        length = strlen(str);
  9303.        if (FIOwriten(fio, str, length) != length) {
  9304. !       Debugmsg("writestring: writen failed\n");
  9305.         return(-1);
  9306.        }
  9307.        else
  9308. ***************
  9309. *** 728,740 ****
  9310.        char **argv, i;
  9311.        int    result;
  9312.   
  9313. -      if (cmd == NULL || *cmd == '\0')
  9314. -       return(-1);
  9315.   #ifdef VMS
  9316. !      return(1 - DCLsystem(cmd)); /* VMS system returns opposite values.. */
  9317.   #else
  9318.   
  9319.        argv = FIOgetargv(cmd);
  9320.   
  9321.        result = FIOexecv(argv[0], argv);
  9322. --- 743,755 ----
  9323.        char **argv, i;
  9324.        int    result;
  9325.   
  9326.   #ifdef VMS
  9327. !      return(DCLsystem(cmd)); /* VMS system returns opposite values.. */
  9328.   #else
  9329.   
  9330. +      if (cmd == NULL || *cmd == '\0')
  9331. +       return(-1);
  9332.        argv = FIOgetargv(cmd);
  9333.   
  9334.        result = FIOexecv(argv[0], argv);
  9335. ***************
  9336. *** 762,767 ****
  9337. --- 777,785 ----
  9338.   
  9339.        if (cmd == NULL)
  9340.         return(NULL);
  9341. +      if (*cmd == '|')
  9342. +       cmd++;
  9343.   
  9344.        argv = FIOgetargv(cmd);
  9345.        
  9346. diff -c gopher+/object/fileio.h:3.7 gopher+/object/fileio.h:3.8
  9347. *** gopher+/object/fileio.h:3.7    Fri May 27 00:09:09 1994
  9348. --- gopher+/object/fileio.h    Fri May 27 00:09:09 1994
  9349. ***************
  9350. *** 1,7 ****
  9351.   /********************************************************************
  9352.    * $Author: lindner $
  9353. !  * $Revision: 3.7 $
  9354. !  * $Date: 1994/04/22 06:42:02 $
  9355.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/fileio.h,v $
  9356.    * $State: Exp $
  9357.    *
  9358. --- 1,7 ----
  9359.   /********************************************************************
  9360.    * $Author: lindner $
  9361. !  * $Revision: 3.8 $
  9362. !  * $Date: 1994/04/25 03:40:07 $
  9363.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/fileio.h,v $
  9364.    * $State: Exp $
  9365.    *
  9366. ***************
  9367. *** 15,20 ****
  9368. --- 15,23 ----
  9369.    *********************************************************************
  9370.    * Revision History:
  9371.    * $Log: fileio.h,v $
  9372. +  * Revision 3.8  1994/04/25  03:40:07  lindner
  9373. +  * VMS socket stuff still wasn't working..
  9374. +  *
  9375.    * Revision 3.7  1994/04/22  06:42:02  lindner
  9376.    * better compatibility checking
  9377.    *
  9378. ***************
  9379. *** 92,112 ****
  9380.    * More elegant way of doing socket writes than ifdefs everywhere
  9381.    */
  9382.   
  9383. ! #if defined(VMS) && !defined(UCX)
  9384.       int DCLsystem(/* char */);
  9385.   #   define system(a) DCLsystem(a)
  9386.   
  9387.   #   if defined(WOLLONGONG) || defined(CMUIP) || defined(NETLIB)
  9388.   #       define socket_write netwrite
  9389.   #       define socket_read  netread
  9390.   #       define socket_close netclose
  9391.   #       define FIO_NOMULTIEOF
  9392.   #   endif
  9393.   
  9394. -     /*  Note that Multinet already has socket_*  */
  9395.   #else
  9396. !     /* Unix systems and VMS UCX */
  9397.   #   define socket_write write
  9398.   #   define socket_read  read
  9399.   #   define socket_close close
  9400. --- 95,122 ----
  9401.    * More elegant way of doing socket writes than ifdefs everywhere
  9402.    */
  9403.   
  9404. ! #if defined(VMS)
  9405.       int DCLsystem(/* char */);
  9406.   #   define system(a) DCLsystem(a)
  9407.   
  9408. +     /**  Note that Multinet already has socket_*  **/
  9409.   #   if defined(WOLLONGONG) || defined(CMUIP) || defined(NETLIB)
  9410.   #       define socket_write netwrite
  9411.   #       define socket_read  netread
  9412.   #       define socket_close netclose
  9413. + #   endif
  9414. + #   if defined(UCX)
  9415. + #       define socket_write write
  9416. + #       define socket_read  read
  9417. + #       define socket_close close
  9418. + #   endif
  9419. +     /**  Note that Wollongong is like Multinet for EPIPE handling  **/
  9420. + #   if defined(UCX) || defined(CMUIP) || defined(NETLIB)
  9421.   #       define FIO_NOMULTIEOF
  9422.   #   endif
  9423.   
  9424.   #else
  9425. !     /* Unix systems */
  9426.   #   define socket_write write
  9427.   #   define socket_read  read
  9428.   #   define socket_close close
  9429. diff -c gopher+/object/util.c:3.15 gopher+/object/util.c:3.16
  9430. *** gopher+/object/util.c:3.15    Fri May 27 00:09:09 1994
  9431. --- gopher+/object/util.c    Fri May 27 00:09:09 1994
  9432. ***************
  9433. *** 1,7 ****
  9434.   /********************************************************************
  9435.    * $Author: lindner $
  9436. !  * $Revision: 3.15 $
  9437. !  * $Date: 1994/03/31 21:04:36 $
  9438.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/util.c,v $
  9439.    * $State: Exp $
  9440.    *
  9441. --- 1,7 ----
  9442.   /********************************************************************
  9443.    * $Author: lindner $
  9444. !  * $Revision: 3.16 $
  9445. !  * $Date: 1994/04/25 03:37:01 $
  9446.    * $Source: /export/arcwelder/GopherSrc/CVS/gopher+/object/util.c,v $
  9447.    * $State: Exp $
  9448.    *
  9449. ***************
  9450. *** 15,20 ****
  9451. --- 15,23 ----
  9452.    *********************************************************************
  9453.    * Revision History:
  9454.    * $Log: util.c,v $
  9455. +  * Revision 3.16  1994/04/25  03:37:01  lindner
  9456. +  * Modifications for Debug() and mismatched NULL arguments, added Debugmsg
  9457. +  *
  9458.    * Revision 3.15  1994/03/31  21:04:36  lindner
  9459.    * Mitra's 2.011 debug patch
  9460.    *
  9461. ***************
  9462. *** 253,259 ****
  9463.   
  9464.        length = strlen(stringptr);
  9465.        if (writen(fd, stringptr, length) != length) {
  9466. !       Debug("writestring: writen failed\n",0);
  9467.         return(-1);
  9468.        }
  9469.        else
  9470. --- 256,262 ----
  9471.   
  9472.        length = strlen(stringptr);
  9473.        if (writen(fd, stringptr, length) != length) {
  9474. !       Debugmsg("writestring: writen failed\n");
  9475.         return(-1);
  9476.        }
  9477.        else
  9478.