dt@mathcs.emory.edu (Dave Taylor {guest}) (03/07/90)
I recently ftp'ed a copy of the latest and greatest copy of r.44.tar.Z
After getting onto my system and tweeking the config.h file slightly
I have continued to try and get it compile fully.
I am running on SCO Xenix 2.3.2 and it is croaking on the term.c routine.
It doesn't seem to like the following section of code:
#ifdef PENDING
#ifndef FIONREAD
int
circfill()
{
register int howmany = read(devtty,circlebuf+nextin,1);
if (howmany) {
nextin += howmany;
nextin %= PUSHSIZE;
}
return howmany;
}
#endif PENDING
#endif FIONREAD
Here are the errors from the compiler...
cc -c -O term.c
term.c
term.c(600) : warning 3: not enough actual parameters for macro 'howmany'
term.c(600) : error 59: syntax error : ')'
term.c(602) : warning 1: macro 'howmany' requires parameters
term.c(602) : error 59: syntax error : ')'
term.c(602) : error 59: syntax error : ')'
term.c(602) : error 59: syntax error : '{'
term.c(603) : warning 1: macro 'howmany' requires parameters
...
... (eventual croak)
If you could be of help please let me know. I'm not a C master, so I'll
have to hope that you can help me out of this one.
Thanks in advance.
-davidrodeen@buddha.ncc.umn.edu (Rick Odeen) (03/07/90)
In article <5108@emory.mathcs.emory.edu> dt@emory.UUCP (Dave Taylor {guest}) writes: >I recently ftp'ed a copy of the latest and greatest copy of r.44.tar.Z >After getting onto my system and tweeking the config.h file slightly >I have continued to try and get it compile fully. > ... >Here are the errors from the compiler... > > cc -c -O term.c >term.c >term.c(600) : warning 3: not enough actual parameters for macro 'howmany' >term.c(600) : error 59: syntax error : ')' >term.c(602) : warning 1: macro 'howmany' requires parameters >term.c(602) : error 59: syntax error : ')' >term.c(602) : error 59: syntax error : ')' >term.c(602) : error 59: syntax error : '{' >term.c(603) : warning 1: macro 'howmany' requires parameters >... >... (eventual croak) > The problem is that the name howmany is used in sys/types.h as follows: #define howmany(x, y) (((x)+((y)-1))/(y)) I think I just renamed howmany in rn to something else. -- Rick Odeen ...!rutgers!umn-cs!buddha!rodeen Nutrition Coordinating Center rodeen@buddha.ncc.umn.edu University of Minnesota AT&T: +1 612 627 4884
chip@chinacat.Lonestar.ORG (Chip Rosenthal) (03/07/90)
<5108@emory.mathcs.emory.edu> dt@emory.UUCP (Dave Taylor {guest}) writes: >I am running on SCO Xenix 2.3.2 and it is croaking on the term.c routine. > cc -c -O term.c >term.c >term.c(600) : warning 3: not enough actual parameters for macro 'howmany' My patches for rn-pl44 under XENIX are currently in test. If all goes well, hopefully I can twist Stan's arm enough to get them in a future official release. Below is the "term.c" portion of the patch set. It will fix this problem. Index: term.c *** Distrib-pl44/term.c Fri Feb 9 17:41:44 1990 --- term.c Thu Feb 8 13:09:41 1990 *************** *** 1,5 **** --- 1,9 ---- /* $Header: term.c,v 4.3.2.3 89/11/28 01:51:58 sob Locked $ * + * Thu Feb 8 13:08:31 1990 - Chip Rosenthal <chip@chinacat.Lonestar.ORG> + * Correct two calls to puts() which should have been fputs(). + * Removed conflict with XENIX howmany() macro. + * * $Log: term.c,v $ * Revision 4.3.2.3 89/11/28 01:51:58 sob * Now handles SIGWINCH correctly. *************** *** 295,301 **** garbage = 0; if (s[1]) { if ((curmap->km_type[ch] & KM_TMASK) == KM_STRING) { ! puts(override,stdout) FLUSH; free(curmap->km_ptr[ch].km_str); curmap->km_ptr[ch].km_str = Nullch; } --- 299,305 ---- garbage = 0; if (s[1]) { if ((curmap->km_type[ch] & KM_TMASK) == KM_STRING) { ! fputs(override,stdout) FLUSH; free(curmap->km_ptr[ch].km_str); curmap->km_ptr[ch].km_str = Nullch; } *************** *** 306,312 **** } else { if ((curmap->km_type[ch] & KM_TMASK) == KM_KEYMAP) ! puts(override,stdout) FLUSH; else { curmap->km_type[ch] = KM_STRING + garbage; curmap->km_ptr[ch].km_str = savestr(m); --- 310,316 ---- } else { if ((curmap->km_type[ch] & KM_TMASK) == KM_KEYMAP) ! fputs(override,stdout) FLUSH; else { curmap->km_type[ch] = KM_STRING + garbage; curmap->km_ptr[ch].km_str = savestr(m); *************** *** 597,602 **** --- 601,609 ---- int circfill() { + #ifdef howmany + # undef howmany /* defined as a macro in XENIX's <sys/types.h> */ + #endif register int howmany = read(devtty,circlebuf+nextin,1); if (howmany) { <<< end of patch >>> -- Chip Rosenthal | Yes, you're a happy man and you're chip@chinacat.Lonestar.ORG | a lucky man, but are you a smart Unicom Systems Development, 512-482-8260 | man? -David Bromberg