From:	MERC::"uunet!orbsen.ucg.ie!ELEHUMBORG" 22-OCT-1992 13:05:14.55
To:	leichter@lrw.com, sra@idx.com, hdavids@mswe.dnet.ms.philips.nl, everhart
CC:	
Subj:	Yet another BOSS bugfix


A couple of bugfixes:

1.  If you defined a string to be stuffed into a process using C-\ + 
    followed by G or S and you switched to the process you were in, BOSS
    would crash with a ACCVIO.  The problem was that Steve used ncur
    instead of cur in the code to stuff the string.  For every case other
    than a redundant switch ncur and cur turn out to be the same.  In the
    case of a redundant move, however, ncur is never given a value.  Using
    the garbage value it has as the index into the emitchr array gives
    BOOM!!

2.  When entering the command following C-\ +, the read gets terminated
    by certain control characters.  This makes it impossible to automatically
    send a ^R and ^W after a switch, for example.  Solution: Set up a 
    terminator specifier for the $QIOW specifying RETURN as the only read
    terminator.

As a matter of interest, does anyone have a version of the source that doesn't
include the UW stuff.  The problem is that if the source gets longer I won't
have enough paging file quota to compile it (as it is, I can't compile it if
I have a subprocess running!) and I don't think I'll ever need the Mac stuff.
I could always go and edit it out myself, anyway.


Kenn Humborg
elehumborg@orbsen.ucg.ie
"I _like_ quiche!"

************
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;301
  222   Version 4.8 From elehumborg@orbsen.ucg.ie
  223   	Fix bugs in mov_to and cmdmode...
  224   
******
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;300
  222   
************
************
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;301
  237   #define VERSION		"4.8"
  238   
******
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;300
  235   #define VERSION		"4.7"
  236   
************
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;300
 1122         strncpy(otpline[cur],string,len);
 1123         check(PTD$WRITE(py_chn[cur], 0, 0, otpline[cur]-4, len, 0, 0));
 1124       }
******
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;299
 1120         strncpy(otpline[ncur],string,len);
 1121         check(PTD$WRITE(py_chn[ncur], 0, 0, otpline[ncur]-4, len, 0, 0));
 1122       }
************
************
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;300
 1136        if ( emitlen[cur] ) {
 1137          strncpy(otpline[cur],emitchr[cur],emitlen[cur]);
 1138          check(PTD$WRITE(py_chn[cur], 0, 0, otpline[cur]-4, emitlen[cur], 0, 0));
 1139         }
******
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;299
 1134        if ( emitlen[ncur] ) {
 1135          strncpy(otpline[ncur],emitchr[ncur],emitlen[ncur]);
 1136          check(PTD$WRITE(py_chn[ncur], 0, 0, otpline[ncur]-4, emitlen[ncur], 0, 0));
 1137         }
************
************
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;300
 1837     int j,k,n,term[2];
 1838     term_msg("\r\nCmd>");
******
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;299
 1835     int j,k,n;
 1836     term_msg("\r\nCmd>");
************
************
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;300
 1842   /* set up terminator mask */
 1843     term[0]=0; term[1]=8192;  /* bit 13 set - RETURN will be the only */
 1844   			    /* thing that will terminate the read   */
 1845     check(SYS$QIOW(4,tt_chn,IO$_READVBLK, &tiosb,0,0,&cmdlin,126,0,&term,0,0));
 1846     term_msg(cmdlin); /* echo the line */
******
File DUA1:[ELE.HUMBORG.UTILITIES.BOSS]BOSS.C;299
 1840     check(SYS$QIOW(4,tt_chn,IO$_READVBLK, &tiosb,0,0,&cmdlin,126,0,0,0,0));
 1841     term_msg(cmdlin); /* echo the line */
************
