	     Frequently-noted Problems concerning Xarchie
				   
			   George Ferguson
		      ferguson@cs.rochester.edu

			      16 Jun 1993

The following list includes problems that I have heard about
repeatedly, and which I am tired of hearing about. Sometimes there's a
fix, sometimes not. This list will no doubt continue to grow. I'd be
happy to receive contributions that address any of these issues. I
will, at best, ignore anyone who mails me about them without useful
suggestions.

CONTENTS:
--------
 1. The configure script crashes when it tries to invoke sed.
 2. I don't have xmkmf
    OR I don't have imake
    OR xmkmf didn't work.
 3. I get the following messages from my linker during the final link
    of xarchie:
	ld: Undefined symbol
	   _sin
	   _cos
	   _pow
	   _floor
	   _get_wmShellWidgetClass
	   _get_applicationShellWidgetClass
 4. I get the following message from my linker:
	ld: Undefined symbol 
	   _XtStrings 
 4a. I get the following message from my linker:
	ld: Undefined symbol 
	   _XtQString
	   _XtQFont
	   _XtQFontStruct
 4b. I get something like the following from my linker under Solaris2.2:
	ld: Undefined symbol 
	   _step
	   _compile
	   _advance
 5. The linker complains about -lresolv.
 6. I can't see anything in the Text widgets, but xarchie appears to
    be doing something.
 7. Xarchie built fine, but I always get ``Can't resolve hostname''
    errors when I try to query.
 8. Xarchie built fine, but I never get a reply the server. It always
    times out.
 9. I see some #ifdef's for VMS. Can I run xarchie on VMS and/or
    DecWindows?
10. How can I run xarchie through a firewall?
11. How do I link under Solaris 2.1 and OpenWindows 3.1? (May apply
    to other combinations of Solaris and OW.)
12. Why does Xarchie sometimes crash when I scroll the Help?
13. The list of files in the FileChooser widgets don't seem to get
    displayed properly all the time.
14. The icons don't change like the manpage says they should.
15. I get what seems to be an endless stream of "select failed" messages.
16. I get messages like the following when I try to run xarchie:
	Actions not found: "settings"
    Also other complaints about resources and the main window is all
    jumbled up. 
17. On my HP machine, xarchie crashes with an error like:
	Warning: Cannot convert string "" to type Cursor
	X Error of failed request:  BadPixmap (invalid Pixmap parameter)
	Major opcode of failed request:  93 (X_CreateCursor)
	Resource id in failed request:  0x0
	Serial number of failed request:  147
	Current serial number in output stream:  149
18. When I try to run xarchie, especially with an X terminal, it says
    it can't open the display. I have my DISPLAY variable set
    correctly.


QUESTIONS and ANSWERS:
---------------------
 1. The configure script crashes when it tries to invoke sed. What can
    I do about it?

    The configure script (generated automatically by autoconf from
    config.in and included in the distribution ready-to-run) puts
    together a long sed command to effect the appropriate
    substitutions to create config.h from config.h.in. You should
    probably get a new version of sed, like maybe GNU sed. For
    xarchie, you can to copy config.h.in to config.h and make the
    appropriate definitions for your system.

 2. "I don't have xmkmf" OR "I don't have imake" OR "xmkmf didn't
    work".

    See item (A) in the INSTALL file.

 3. I get the following messages from my linker during the final link
    of xarchie:
	ld: Undefined symbol
	   _sin
	   _cos
	   _pow
	   _floor
	   _get_wmShellWidgetClass
	   _get_applicationShellWidgetClass

    Well, from what I can gather, this is a problem for some flavours
    of OpenWindows. As a quick check would show, xarchie doesn't use
    any of these functions. The first functions can be found by adding
    "-lm" to the LOCAL_LIBRARIES definition in the Imakefile,
    something that should have been looked after by the installation
    of imake/xmkmf. The other functions I have never heard of. Your
    one hope is that some people have reported that the resulting
    "xarchie" file is still executable despite the errors. Try it and
    see.

    >From: Harald Tveit Alvestrand <harald.t.alvestrand@delab.sintef.no>
    >
    >It turns out that the problem occurs with X11R4 on SunOS 4.1.2 and
    >later. SUN "fixed a bug" in the linker that made it conform to the
    >documentation (AARRGGHH), which, as a side effect, wrecked linking
    >to X11R4. 
    >
    > There are only 2 solutions that I know of:
    > - Upgrade to X11R5 libraries, which don't have the problem
    > - Add the following line to the Imakefile:
    >     LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) -Bstatic

    Your mileage may vary. I suggest doing this if only if necessary
    (that is, if your executable isn't executable).

    >From: palm@tokyo.rockwell.com (Stephen [kiwin] PALM)
    >
    >Using -Bstatic can make a huge binary.  Xmu is the only file that needs to
    >be static  so surrounding Xmu with -Bstatic -Bdynamic in the final
    >compile works too.  eg:  ... -lXaw -Bstatic -lXmu -Bdynamic -lXt ...

    >From: ivan@stat.ph.albany.edu (Ivan Auger)
    >
    >You need sun patch 100573-03. The problem is caused by an
    >incorrectly built Xmu library.  Then you will not the undefined
    >ld symbols: 
    >  _get_wmShellWidgetClass
    > _get_applicationShellWidgetClass
    >
    >Patch-ID# 100573-03
    >Keywords: libxmu, shared, symbols, patch, ld, cte2336, libXmu,
    >          undefined, 100170-06 
    >Synopsis: OpenWindows 3.0: ld patch 100170-06 causes undefined
    >          symbols when used with shared libXmu 
    >Date: 08-Jul-92
    >SunOS release: 4.1.1, 4.1.2
    >Unbundled Product: OpenWindows
    >Unbundled Release: 3.0
    >Topic: Patch for libXmu
    >BugId's fixed with this patch: 1087332
    >Architectures for which this patch is available: sun4
    >Patches which may conflict with this patch: 
    >Obsoleted by:  
    >Files included with this patch: libXmu.so.4.0, libXmu.sa.4.0
    >Problem Description: With patched ld and libc, customer is
                          getting undefined symbols

 4. I get the following message from my linker:
	ld: Undefined symbol 
	   _XtStrings 

    XtStrings is an array used in <X11/StringDefs.h>. It was introduced
    in R5 to allow internationalization of the resource names by
    storing, eg, the name XtNstring (that is, the C constant)
    as
	#define XtNstring ((char*)&XtStrings[733])
    rather than
	#define XtNstring "string"
    The choice is controlled by a cpp constant XTSTRINGDEFINES used in
    the above-mentioned header file.

    I would say that whoever installed your X botched it, since they
    apparently didn't define XTSTRINGDEFINES, but also didn't arrange
    for the string array itself to get compiled into the library.
    You could try recompiling with -DXTSTRINGDEFINES added to DEFINES
    in the Imakefile.

 4a. I get the following message from my linker:
	ld: Undefined symbol 
	   _XtQString
	   _XtQFont
	   _XtQFontStruct

    This indicates that you are compiling with X11R4 (or earlier) header
    files (see types.c) and linking against X11R5 libraries. You
    should probably sort this out locally. If you must report this
    problem, be sure to include enough information for me to be able
    to do anything, since I'm not at your site.

    It could also mean you're using X11R3, in which case all bets are
    off. 

 4b. I get something like the following from my linker under Solaris2.2:
	ld: Undefined symbol 
	   _step
	   _compile
	   _advance

    Apparently in Solaris2.2, you need to link against the "string
    pattern-matching  & pathname manipulation library, libgen." How
    they get "gen" from this I don't know, but you need it to find the
    regexp routines. Add -lgen to the LOCAL_LIBRARIES line in the
    Imakefile and rebuild (xmkmf, etc.).

    Since xarchie doesn't make use of the FWF Directory regexp
    capabilities anyway, you could just add "DEFINES=-DNO_REGEXP" to
    the Imakefile there, but I haven't tested that.

 5. The linker complains about -lresolv.

    From the INSTALL file:
    >One fairly common problem is that configure will decide that you
    >need to link with -lresolv and define NEED_LRESOLV in config.h.
    >This happens when the test program resolv.c either doesn't compile
    >or compiles but doesn't work properly. Normally, this means that
    >your system requires linking with libresolv.a to force DNS
    >nameserver lookups. If you don't have /usr/lib/libresolv.a (or some
    >local variant), or if resolv.c compiles and runs properly, you
    >shouldn't define NEED_LRESOLV.

 6. I can't see anything in the Text widgets, but xarchie appears to
    be doing something.

    This seems to be a problem with SGI systems. I believe that the
    problem was/is that the "fixed" font used in version 1.3 as a
    presumably well-chosen default wasn't in fact well-chosen. In fact,
    it seemed to be 0 points, or something equally small.

    As of version 2.0, it is easier to change the fonts used by xarchie
    without editing all the definitions in the Xarchie.ad file. The two
    resources "xarchieFont" and "xarchieBoldFont" are defined near the
    top of that file, and the resource converter for fontnames has been
    modified to convert a request for font "xarchieFont", for example,
    into the corrresponding font. That is, a level of indirection was
    introduced so you'd only have to change one resource entry to
    affect all fonts in the application. The default was also chosen to
    be something that will hopefully exist and be readable on all
    systems. I hope to never hear about this again.

 7. Xarchie built fine, but I always get ``Can't resolve hostname''
    errors when I try to query.

    This means that your C library doesn't use DNS hostname lookup by
    default. You should have uncommented the definition of RESOLV_LIB
    in the Imakefile. See the file INSTALL for details. You can further
    test this by compiling the file "resolv.c" and running it. If you
    get an error, then you need -lresolv.

 8. Xarchie built fine, but I never get a reply from the server. It
    always times out.

    The Prospero protocol that underlies xarchie requires that UDP
    traffic be enabled on your system. If you get nothing but timeouts
    from dirsend, then either the server is just too heavily loaded or
    UDP traffic is disabled. To test the latter hypothesis, compile
    "udp.c" and follow the directions at the top of the file. If UDP
    traffic is in fact disabled, talk to to your syadmins. Otherwise,
    if you're *sure* it isn't just a loaded server, report the
    situation in detail.

 9. I see some #ifdef's for VMS. Can I run xarchie on VMS and/or
    DecWindows?

    No. The #ifdef's are in parts of the code shared with the
    standalone archie client written by Brendan Kehoe, which does,
    apparently, run under VMS.

10. How can I run xarchie through a firewall?

    I don't know. You need to enable UDP traffic, as described above.
    I would suggest contacting some of the Prospero or Xarchie people
    listed elsewhere in the documentation. I include below the
    following message from comp.unix.wizards, in case it's useful:

    >From: wietse@wzv.win.tue.nl (Wietse Venema)
    >Subject: Re: FTP & TELNET Through a fewall
    >Date: 11 Feb 93 21:35:10 GMT
    >
    >The socks (socket call redirection library) comes with an example of an
    >ftp proxy client. Applying the same operation to a telnet client (using
    >freely-available bsd sources) should be relatively easy.
    >socks can be found on s1.gov in /pub/socks.tar.Z. It is described in
    >the proceedigs of the 3rd UNIX Security Symposium last September.

11. How do I link under Solaris 2.1 and OpenWindows 3.1? (May apply
    to other combinations of Solaris and OW.)"

    >From: simon@lia.di.epfl.ch (Simon Leinen)
    >
    >Under SunOS 5.1 with OpenWindows 3.1, one has to manually add
    >"-lsocket" and "-lnsl" to the linker command; I think this is because
    >the OW3.1 config files don't handle SVR4 very well.

    That is, add "-lsocket -lnsl" to the definition of LOCAL_LIBRARIES
    and re-run xmkmf.

12. Why does Xarchie sometimes crash when I scroll the Help?

    I don't know. At least on X11R5p20, a stack trace shows that the
    error is occurring in XtCallCallbacks() called from
    XawPanedAllowResize(). Problem is, I don't see how that can
    happen, since the latter function simply sets a flag. A fix would
    be welcome.

13. The list of files in the FileChooser widgets don't seem to get
    displayed properly all the time.

    This seems like an Xaw bug, but is difficult to repeat in
    isolation. Refreshing the window (eg., iconify/deiconify or
    scrolling up/down) clears it up. Fixes are welcome.

14. The icons don't change the way the manpage says they should.

    Icons are a tricky business, since they involve the application
    and the window manager and whatever "look and feel" they all feel
    like imposing. All I can say is that simply set the XtNiconName
    and XtNiconPixmap resources for the toplevel xarchie shell. I
    trust the Intrinsics to do the right thing with respect to ICCCM
    protocols and the like. Your window manager may not support icons.
    Your version of the Intrinsics may not do the right thing. Too
    bad.

    Note: This problem should be resolved as of version 2.0.3, but
    I've left the text here since it's still possible that people's
    window managers won't cooperate, and I don't want to hear about it.

15. I get what seems to be an endless stream of "select failed" messages.

    These messages are coming from the heart of the X11 event dispatch
    loop. What it probably means is that one of the various file
    descriptors registered with the server for asynchronous
    notification (for Prospero or FTP) is no longer valid but hasn't
    been cleared from X's select mask. Unfortunately, the X code
    simply prints a message and loops, which means that select() will
    fail again, etc., ad nauseam.

    Please do not report this problem without the following
    information! You should add a line `#define DEBUG' before the
    `#include "debug.h"' in files ftp.c and ftp-actions.c, then
    rebuild xarchie. Include the resulting trace (from stderr) with
    your bug report. 

16. I get messages like the following when I try to run xarchie:
	Actions not found: "settings"
    Also other complaints about resources and the main window is all
    jumbled up. 

    You are finding an old version of xarchie's resources and/or not
    finding the new resources. You should either install xarchie so
    its resources are found in the system-default place, or read the
    INSTALL file about running without installing. Note that you not
    only have to find the new resources (XAPPLRESDIR), you also have
    to avoid finding the old resources if they are installed
    (XFILESEARCHPATH).

17. On my HP machine, xarchie crashes with an error like:
	Warning: Cannot convert string "" to type Cursor
	[...]

    This appears to be a problem with HP's version of the Athena
    widgets, libXaw. According to Ronald van Loon (rvloon@cv.ruu.nl),
    compiling without MultiList is one alternative. To do that,
    replace "#define UseMultiList" by a #undef in the Imakefile and
    rebuild. According to Dave Shield (daves@csc.liv.ac.uk), using the
    MIT version of the Athena widget library will also solve the
    problem.

    Further suggestions about this should be directed to Brian Totty
    at the FWF (tooty@cs.uiuc.edu, free-widgets-request@kzoo.cs.uiuc.edu),
    although you can CC: me so I know what's going on. 

18. When I try to run xarchie, especially with an X terminal, it says
    it can't open the display. I have my DISPLAY variable set
    correctly.

    As far as I can tell, this problem arises with systems (Suns?)
    that run NIS for nameserver lookups. Xarchie uses hostname lookup
    for two things: (1) to interpret the DISPLAY variable and
    determine which host to open the display on; and (2) to lookup the
    IP addresses of host for Archie queries and ftp connections. For
    the second function, you presumably need DNS lookups, which is why
    some systems require "-lresolv" to be linked in. It's my guess
    that this somehow screws up the interpretation of $DISPLAY.

    A workaround is to specify the IP address of the displaying host
    in the DISPLAY variable, as in "NNN.NNN.NNN.NNN:0.0" rather than
    "foobar:0.0". This results in inet_addr() begin called rather than
    gethostbyname() (in the XOpenDisplay() call), for those of you
    interested in working on this. Xarchie also interprets numeric IP
    addresses in this way, in case you care.
