walton@ametek.UUCP (Steve Walton) (11/29/86)
After consultation off the net with Matt Dillon, we have come up with a revised set of changes which will allow Shell V2.01 to compile easily under Aztec C using the latter's library only. A reminder to compile using the +L switch to cc and to link to c32.lib. As for the changes, add to the end of shell.h the following lines: #ifdef MCH_AMIGA #define check32() #define xopen(a,b,c) fopen(a,b) #define xgets(f,s,n) fgets(s,n,f) #define xputs(f,s) fputs(s,f) /* required for below change in do_cat */ #define xclose(a) fclose(a) #define xseek(a,b,c) fseek(a,b,c-1) #define bmov(a,b,c) movmem(a,b,c) #endif Also, the routine do_cat in comm.c has to be modified. It contains a loop: while (xgets(f,s,n) != 0) puts(s); The puts(s) should be changed to xputs(stdout, s), due to the fact that puts(s) adds a newline to the end of s before output, which is fine with xgets() since it strips the newline. But fgets() leaves the newline in place, giving double spacing. This change plus the xputs() #define above will allow the shell to still function with Matt's library and Lattice. Instead of the above change and xget/xputs definitions, Matt came up with: #define xgets(f,s,n) (fgets(s,n,f),(s[0]&&s[strlen(s)-1]='\0'),strlen(s)+1) which is a little messy but works. Steve Walton [Note to Info-Amiga: will this go to the USENET too?] [Yes, things posted to info-amiga get sent out to Usenet as well. The relationship between the two is somewhat messy in that we have two gateways (rutgers and ulowell), but we're working on that. --Bob]