--- freem/src/service.c 2025/03/24 01:54:09 1.9 +++ freem/src/service.c 2025/04/09 19:52:02 1.13 @@ -1,5 +1,5 @@ /* - * $Id: service.c,v 1.9 2025/03/24 01:54:09 snw Exp $ + * $Id: service.c,v 1.13 2025/04/09 19:52:02 snw Exp $ * terminal and sequential I/O handling, * file and global locking * @@ -25,6 +25,18 @@ * along with FreeM. If not, see . * * $Log: service.c,v $ + * Revision 1.13 2025/04/09 19:52:02 snw + * Eliminate as many warnings as possible while building with -Wall + * + * Revision 1.12 2025/03/24 04:05:36 snw + * Replace crlf with frm_crlf to avoid symbol conflict with readline on OS/2 + * + * Revision 1.11 2025/03/24 02:00:30 snw + * Work around some OS/2 incompatibilities in service.c + * + * Revision 1.10 2025/03/24 01:55:46 snw + * Work around some OS/2 incompatibilities in service.c + * * Revision 1.9 2025/03/24 01:54:09 snw * Work around some OS/2 incompatibilities in set_break and set_zbreak * @@ -85,6 +97,10 @@ int scosgr (short att, short bwflag); # if !defined(MSDOS) # include # endif +# if defined(__OS2__) +# include +# define termio termios +# endif # endif #else # include @@ -987,7 +1003,9 @@ end: void writeHOME (char *text) { +#if !defined(__OS2__) struct winsize terminal_window; +#endif static char initflag = TRUE; /* initialisation flag */ static char esc = 0; /* esc processing flag */ static char dcs = 0; /* device control processing flag */ @@ -1048,13 +1066,18 @@ void writeHOME (char *text) * and the 'hardcopy function' */ if (initflag) { - + +#if !defined(__OS2__) /* TODO: why are we casting to void here? */ (void) ioctl(STDOUT_FILENO, TIOCGWINSZ, &terminal_window); n_lines = terminal_window.ws_row; n_columns = terminal_window.ws_col; - +#else + n_lines = 25; + n_columns = 80; +#endif + screen = (struct vtstyp *) calloc (1, sizeof (struct vtstyp)); ris (screen); @@ -2741,13 +2764,15 @@ void part_ref (struct vtstyp *scr, short short l; short max; unsigned char exa; +#if !defined(LINUX) && defined(COLOR) unsigned char exc; +#endif short i; unsigned char *linea; unsigned char *linex; unsigned char *linec; unsigned char ch; - unsigned char tmp[1300]; + char tmp[1300]; /* was unsigned char tmp... (snw 4-9-2025) */ /* build up alternate screen */ /* reset SGR,TBM;white on black,go HOME; 25 Lines */ @@ -2817,7 +2842,10 @@ void part_ref (struct vtstyp *scr, short } exa = ~linea[0]; /* dummy value to trigger argument codes on 1st char */ + +#if !defined(LINUX) && defined(COLOR) exc = ~linec[0]; /* dummy value to trigger argument codes on 1st char */ +#endif for (l = 0; l <= max; l++) { @@ -3302,7 +3330,7 @@ void write_m (char *text) ypos[io]++; - if (crlf[io]) xpos[io] = 0; + if (frm_crlf[io]) xpos[io] = 0; continue; @@ -3395,9 +3423,7 @@ void read_m (char *stuff, long read_time static char term_key[256] = {EOL, EOL}; static short int escptr; static short int single; - static short int timoflag; /* timeout flag */ - static long int timex; - static short int timexms; + static short int timoflag; /* timeout flag */ static short int i; static int ch; @@ -3419,10 +3445,7 @@ void read_m (char *stuff, long read_time stuff[0] = EOL; if (length < 1) single = length = 1; - - timex = 0L; - timexms = 0; - + if (io == HOME) opnfile[HOME] = stdin; if (io == HOME && !frm_filter) { @@ -4133,7 +4156,7 @@ void read_m (char *stuff, long read_time if (single) break; - if (ch == LF && crlf[io]) { + if (ch == LF && frm_crlf[io]) { i--; continue; }