[comp.sources.bugs] UMORIA: undefined symbols saveterm, cbreak, etc on USG system

kevin@kosman.UUCP (Kevin O'Gorman) (11/16/87)

I just tried to compile umoria, and can do that just fine, but it fails to
link because of four undefined symbols in io.c:

saveterm
cbreak
nocbreak
resetterm

These appear to be function calls, and I can kind of guess what they ought
to do, but I'm not sure.  What gives?  

I'm running on an AT&T UNIX PC (3b1), and I guess that makes me as USG as
you can get.  I'm not at all sure I know how to write the four routines.

HELP???

nic@marque.mu.edu (Nic Bernstein) (11/17/87)

In article <345@kosman.UUCP> kevin@kosman.UUCP (Kevin O'Gorman) writes:
>I just tried to compile umoria, and can do that just fine, but it fails to
>link because of four undefined symbols in io.c:
>
>saveterm
>cbreak
>nocbreak
>resetterm
>
>These appear to be function calls, and I can kind of guess what they ought
>to do, but I'm not sure.  What gives?  
>
>I'm running on an AT&T UNIX PC (3b1), and I guess that makes me as USG as
>you can get.  I'm not at all sure I know how to write the four routines.
>
>HELP???


	Sounds like you have the "ccs" script that runs the shared library
and changes the original "cc" to "c-complier".  If so you are trying to
load "curses" functions and you don't have them in your "tam" library
which is what the shared library uses.  If this is true just change the
makefile to say:

CC=c-compiler

That should fix it up. 
Or you could also rename "cc" to save it and re-rename "c-compiler" back 
to "cc" (these should be in /bin). If this isn't the problem then either 
your "curses" library is damaged or you may have changed the makefile to 
not include "-lcurses" and "-ltermlib" in the final link phase. ("libtermlib"
and "libtermcap" are linked on this system so either will do)
	We have successfully gotten umoria up on both a 3B1 and PC7300
running 3.51 and I am amazed that there were so little adjustments
necessary.  Normally code of this size requires some fiddling but this
thing compiled and ran right out of the box!  My congratulations to the
authors.  By the way, "moria" has been all the rage (off VMS systems) 
aroung here for years and it is quite a feather to have it running at
last on Unix.  This simulation makes almost anything I have seem so far
in a D&D type game, tame by comparison.  Try running wizard mode and
print out a few level maps.  Also be sure and see how complete the "monster"
info is.
						- Nic

bill@bcsfse.UUCP (Bill Sears) (11/20/87)

In article <345@kosman.UUCP> kevin@kosman.UUCP (Kevin O'Gorman) writes:
>I just tried to compile umoria, and can do that just fine, but it fails to
>link because of four undefined symbols in io.c:
>
>saveterm
>cbreak
>nocbreak
>resetterm
>
>These appear to be function calls, and I can kind of guess what they ought
>to do, but I'm not sure.  What gives?  
>
>I'm running on an AT&T UNIX PC (3b1), and I guess that makes me as USG as
>you can get.  I'm not at all sure I know how to write the four routines.
>
>HELP???
I have the same problem.  I'm running a Megadata Model 7 with Unix SYSV.  I
have looked through libcurses.a (that's where the calls are on the system at
work) but they're not there.  I tried writing some of my own with ioctl calls
using ICANON and various other things but I can't seem to get the correct
combination.
Another problem I am having is that I keep getting the error message

	Illegal Row = -12, Col = -9

or something like that (this is from memory).  Why might there be negative
number being passed to move (wmove(stdscr))?  I have looked through my
source and can't find anything wrong.  I have seen the same source working
on other systems.
I get all the way through the character selection phase and when it asks me
to enter my character name it says,

    Enter character name [Press <rTURN> when finished]         or
                                 ^sic^

    Enter character name [Press ?x52?.>2?=+x:@-!
                                ^garbage^

Can anyone see a possible reason for this?  Then after I enter my characters
name and press RETURN, I get the stats block and the TOWN LEVEL message, but
that's it.  None of the town gets displayed and I start getting the illegal
row and column message like above.
-- 
	Bill Sears            ...!uw-beaver!ssc-vax!voodoo!bcsfse!bill
			FSE development project
    All I ask of life is a constant and exaggerated sense of my own importance.

allbery@ncoast.UUCP (Brandon Allbery) (11/21/87)

As quoted from <345@kosman.UUCP> by kevin@kosman.UUCP (Kevin O'Gorman):
+---------------
| saveterm, cbreak, nocbreak, resetterm
| 
| I'm running on an AT&T UNIX PC (3b1), and I guess that makes me as USG as
| you can get.  I'm not at all sure I know how to write the four routines.
+---------------

You're not as USG as you can get; the UNIX PC runs CTIX from Convergent
Technologies....

Sounds like you didn't install the Curses/Terminfo Development Package.  The
functions in question are terminfo functions, as opposed to termcap ones.
Alas, the default curses on the 3B1 uses termcap rather than terminfo (I find
terminfo to be much cleaner).  You probably need to be at the 3.5 release or
later to get this; it comes with the 3.5 and 3.51 development systems.
-- 
Brandon S. Allbery		      necntc!ncoast!allbery@harvard.harvard.edu
{hoptoad,harvard!necntc,{sun,cbosgd}!mandrill!hal,uunet!hnsurg3}!ncoast!allbery
			Moderator of comp.sources.misc

kevin@kosman.UUCP (Kevin O'Gorman) (11/26/87)

In article <5719@ncoast.UUCP> allbery@ncoast.UUCP (Brandon Allbery) writes:
|As quoted from <345@kosman.UUCP> by kevin@kosman.UUCP (Kevin O'Gorman):
|+---------------
|| saveterm, cbreak, nocbreak, resetterm
|| 
|| I'm running on an AT&T UNIX PC (3b1), and I guess that makes me as USG as
|| you can get.  I'm not at all sure I know how to write the four routines.
|+---------------
|
|You're not as USG as you can get; the UNIX PC runs CTIX from Convergent
|Technologies....
|
|Sounds like you didn't install the Curses/Terminfo Development Package.  The
|functions in question are terminfo functions, as opposed to termcap ones.
|Alas, the default curses on the 3B1 uses termcap rather than terminfo (I find
|terminfo to be much cleaner).  You probably need to be at the 3.5 release or
|later to get this; it comes with the 3.5 and 3.51 development systems.


Nope.  I tried this solution, and MORIA still refused to link.  I eventually
stuck some extra stuff into CFLAGS in the Makefile:

	-Dsaveterm=savetty -Dresetterm=resetty \
	-Dcbreak=crmode -Dnocbreak=nocrmode

and this fixed the problem.  Moria runs just fine now.  I dunno what those other
calls are, but it isn't terminfo, at least as I got it from AT&T.
-- 

Kevin O'Gorman ( kevin@kosman ) Vital Computer Systems, Oxnard, CA  93035