--- freem/src/init.c	2025/03/24 04:05:36	1.7
+++ freem/src/init.c	2025/04/03 16:58:34	1.9
@@ -1,5 +1,5 @@
 /*
- *   $Id: init.c,v 1.7 2025/03/24 04:05:36 snw Exp $
+ *   $Id: init.c,v 1.9 2025/04/03 16:58:34 snw Exp $
  *    FreeM initialization 
  *
  *  
@@ -24,6 +24,12 @@
  *   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
  *
@@ -176,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);
     }
 
@@ -556,7 +570,7 @@ void init_io (void)
 
     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;
@@ -565,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 */