--- freem/src/service.c	2025/03/09 19:50:47	1.7
+++ freem/src/service.c	2025/03/24 02:00:30	1.11
@@ -1,5 +1,5 @@
 /*
- *   $Id: service.c,v 1.7 2025/03/09 19:50:47 snw Exp $
+ *   $Id: service.c,v 1.11 2025/03/24 02:00:30 snw Exp $
  *    terminal and sequential I/O handling,
  *    file and global locking
  *
@@ -25,6 +25,18 @@
  *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
  *
  *   $Log: service.c,v $
+ *   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
+ *
+ *   Revision 1.8  2025/03/24 01:52:30  snw
+ *   Work around some OS/2 incompatibilities in set_break and set_zbreak
+ *
  *   Revision 1.7  2025/03/09 19:50:47  snw
  *   Second phase of REUSE compliance and header reformat
  *
@@ -79,6 +91,10 @@ int scosgr (short att, short bwflag);
 #  if !defined(MSDOS)
 #    include <termio.h>
 #  endif
+#  if defined(__OS2__)
+#    include <termios.h>
+#    define termio termios
+#  endif
 # endif
 #else
 # include <termios.h>
@@ -981,7 +997,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 */
@@ -1042,13 +1060,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);
@@ -4431,6 +4454,7 @@ void set_io (short action)
 /*  DEL = UNIX quit      */ 
 void set_break (short break_char)
 {
+#if !defined(__OS2__)
     struct termio arg;
 
     ioctl (0, TCGETA, &arg);
@@ -4438,7 +4462,7 @@ void set_break (short break_char)
     arg.c_cc[VINTR] = break_char;	/* interrupt = CTRL/C   */
     
     ioctl (0, TCSETA, &arg);
-    
+#endif    
     return;
 
 }					/* end of set_break() */
@@ -4449,6 +4473,7 @@ void set_break (short break_char)
 /* DEL = UNIX quit      */
 void set_zbreak (short quit_char)
 {
+#if !defined(__OS2__)    
     struct termio arg;
 
     ioctl (0, TCGETA, &arg);
@@ -4456,7 +4481,7 @@ void set_zbreak (short quit_char)
     arg.c_cc[VQUIT] = quit_char;
     
     ioctl (0, TCSETA, &arg);
-    
+#endif    
     return;
 
 }					/* end of set_zbreak() */
@@ -4501,6 +4526,8 @@ void set_io (short action)				/* set io_
 
 void set_break (short break_char)
 {
+
+#if !defined(__OS2__)
     struct termios termios_p;
 
     tcgetattr (0, &termios_p);
@@ -4508,14 +4535,14 @@ void set_break (short break_char)
     termios_p.c_cc[VINTR] = break_char;	/* interrupt = CTRL/C   */
     
     tcsetattr (0, TCSADRAIN, &termios_p);	/* set paramters */
-    
+#endif    
     return;
 
 }					/* end of set_break() */
 
 void set_zbreak (short quit_char)
 {
-
+#if !defined(__OS2__)
     struct termios termios_p;
 
     tcgetattr (0, &termios_p);
@@ -4523,7 +4550,7 @@ void set_zbreak (short quit_char)
     termios_p.c_cc[VQUIT] = quit_char;
     
     tcsetattr (0, TCSADRAIN, &termios_p);	/* set paramters */
-    
+#endif    
     return;
 
 }					/* end of set_zbreak() */