[Coco] curses status
    Willard Goosey 
    goosey at virgo.sdc.org
       
    Wed Aug 19 20:41:19 EDT 2009
    
    
  
It works, for suitably small values of works. ;-)
After various hacks and some interesting crashes, what there is,
works.  But it's fragile. :-(
The big problem, is that this is a "subset" of real CURSES.  Under
real curses, a function like addc(a) is actually a macro, calling
waddc(stdscr,a).  stdscr is a WINDOW *, pointing at the "standard
screen" a window that's the size of the terminal's screen.
But in this "subset", stdscr is #define 0, and addc() is a seperate
function from waddc().  The problem with this, besides near-duplicate
code (the starting window needs to keep most of the data of a proper
WINDOW struct, rather it's stored in one or not), is that it wasn't
carried all the way through.  A lot of the functions take a WINDOW *
argument, and not all of them check to make sure the pointer isn't
NULL.
So, if your program calls a function with stdscr as an argument, it
might work, or it might crash horribly, depending on which function
got called!
I suppose the quick and dirty solution is to continue the style used
in the code now (if(win){use win->foo} else {use globals}) but it would
be cleaner and smaller to re-write the library do to things
correctly. 
So, that's where curses is right now.
Willard
-- 
Willard Goosey  goosey at sdc.org
Socorro, New Mexico, USA
I search my heart and find Cimmeria, land of Darkness and the Night.
  -- R.E. Howard
    
    
More information about the Coco
mailing list