--- freem/src/init.c	2025/03/09 19:14:25	1.6
+++ freem/src/init.c	2025/04/03 16:58:34	1.9
@@ -1,5 +1,5 @@
 /*
- *   $Id: init.c,v 1.6 2025/03/09 19:14:25 snw Exp $
+ *   $Id: init.c,v 1.9 2025/04/03 16:58:34 snw Exp $
  *    FreeM initialization 
  *
  *  
@@ -24,6 +24,15 @@
  *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
  *
  *   $Log: init.c,v $
+ *   Revision 1.9  2025/04/03 16:58:34  snw
+ *   Make error message for shm_init error during initialization more friendly
+ *
+ *   Revision 1.8  2025/03/24 04:44:55  snw
+ *   Don't call ttyname on OS/2
+ *
+ *   Revision 1.7  2025/03/24 04:05:36  snw
+ *   Replace crlf with frm_crlf to avoid symbol conflict with readline on OS/2
+ *
  *   Revision 1.6  2025/03/09 19:14:25  snw
  *   First phase of REUSE compliance and header reformat
  *
@@ -173,7 +182,15 @@ short init (char *namespace_name)
     retval = shm_init (shm_init_size);
 
     if (retval == SHMS_GET_ERR) {
-        fprintf (stderr, "init:  error initializing shared memory [errno %d]\r\n", errno);
+        if (errno != 13) {
+            fprintf (stderr, "init:  error initializing shared memory [errno %d]\r\n", errno);
+        }
+        else {
+            fprintf (stderr, "init:  error attaching to environment -- does your user belong to the group that owns environment '%s'?\r\n", shm_env);
+        }
+        if (run_daemon == FALSE) {
+            set_io (UNIX);
+        }
         exit (1);
     }
 
@@ -547,13 +564,13 @@ void init_io (void)
     sq_modes[0] = '+';
     for (i = 0; i <= MAXDEV; ug_buf[i++][0] = EOL); /* init read-buffers */
 
-    crlf[HOME] = frm_filter;
+    frm_crlf[HOME] = frm_filter;
 
     if (hardcopy) zbreakon = ENABLE;        /* enable CTRL/B */
 
     set_io (MUMPS);         /* set i/o parameters */
 
-#if !defined(__AMIGA)
+#if !defined(__AMIGA) && !defined(__OS2__)
     if (ttyname (HOME)) {       /* for $IO of HOME */
         strcpy (dev[HOME], ttyname (HOME));
         dev[HOME][strlen (dev[HOME])] = EOL;
@@ -562,7 +579,13 @@ void init_io (void)
         dev[HOME][0] = EOL;     /* ...we are in a pipe */
     }
 #else
+#if defined(__AMIGA)
     strcpy (dev[HOME], "CONSOLE:");
+#else
+#if defined(__OS2__)
+    strcpy (dev[HOME], "CON:");
+#endif
+#endif
 #endif    
 
     /* init function keys */