Diff for /freem/src/init.c between versions 1.3 and 1.12

version 1.3, 2025/02/25 18:53:14 version 1.12, 2025/04/15 14:39:06
Line 1 Line 1
 /*  /*
  *                            *   *   $Id$
  *                           * *  
  *                          *   *  
  *                     ***************  
  *                      * *       * *  
  *                       *  MUMPS  *  
  *                      * *       * *  
  *                     ***************  
  *                          *   *  
  *                           * *  
  *                            *  
  *  
  *   init.c  
  *    FreeM initialization    *    FreeM initialization 
  *   *
  *     *  
  *   Author: Serena Willis <jpw@coherent-logic.com>   *   Author: Serena Willis <snw@coherent-logic.com>
  *    Copyright (C) 1998 MUG Deutschland   *    Copyright (C) 1998 MUG Deutschland
  *    Copyright (C) 2020 Coherent Logic Development LLC   *    Copyright (C) 2020, 2025 Coherent Logic Development LLC
  *   *
  *   *
  *   This file is part of FreeM.   *   This file is part of FreeM.
Line 35 Line 23
  *   You should have received a copy of the GNU Affero Public License   *   You should have received a copy of the GNU Affero Public License
  *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.   *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
  *   *
    *   $Log$
    *   Revision 1.12  2025/04/15 14:39:06  snw
    *   Further improvements to logging
    *
    *   Revision 1.11  2025/04/13 04:22:43  snw
    *   Fix snprintf calls
    *
    *   Revision 1.10  2025/04/10 01:24:38  snw
    *   Remove C++ style comments
    *
    *   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
    *
    *
    * SPDX-FileCopyrightText:  (C) 2025 Coherent Logic Development LLC
    * SPDX-License-Identifier: AGPL-3.0-or-later
  **/   **/
   
 #include <stdio.h>  #include <stdio.h>
Line 49 Line 62
 #include <errno.h>  #include <errno.h>
 #include <sys/ioctl.h>  #include <sys/ioctl.h>
   
 #if defined(__sun) || defined(__FreeBSD__) || defined(__NetBSD__)  #if !defined(__APPLE__) && !defined(__gnu_hurd__) && !defined(EMSCRIPTEN)
 # include <termio.h>  # if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__AMIGA)
   #  include <termios.h>
   #  if !defined(__AMIGA)
   #   define TCGETA TIOCGETA
   #   define TCSETA TIOCSETA
   #  endif
   #  define termio termios
   # else
   #  if !defined(MSDOS)
   #    include <termio.h>
   #  endif
   # endif
 #else  #else
 # include <termios.h>  # include <termios.h>
 #endif  #endif
Line 71 Line 95
 #include "jobtab.h"  #include "jobtab.h"
 #include "datatypes.h"  #include "datatypes.h"
 #include "objects.h"  #include "objects.h"
   #include "log.h"
   
 #ifdef HAVE_LIBREADLINE  #ifdef HAVE_LIBREADLINE
 #  if defined(HAVE_READLINE_READLINE_H)  #  if defined(HAVE_READLINE_READLINE_H)
Line 144  void init_mwapi(void); Line 169  void init_mwapi(void);
 short init (char *namespace_name)   short init (char *namespace_name) 
 {  {
     short retval;      short retval;
       
       init_log ();
     init_process ();      init_process ();
     init_devtable ();      init_devtable ();
     init_signals ();      init_signals ();
Line 167  short init (char *namespace_name) Line 193  short init (char *namespace_name)
     retval = shm_init (shm_init_size);      retval = shm_init (shm_init_size);
   
     if (retval == SHMS_GET_ERR) {      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);          exit (1);
     }      }
   
Line 218  void init_process (void) Line 252  void init_process (void)
 {  {
     pid = getpid ();            /* get $J = process ID */      pid = getpid ();            /* get $J = process ID */
     umask (0);              /* protection bits mask to full rights */      umask (0);              /* protection bits mask to full rights */
     snprintf (fp_conversion, 9, "%%.%df\201", DBL_DIG);      snprintf (fp_conversion, sizeof (fp_conversion) - 1, "%%.%df\201", DBL_DIG);
   
     if (fp_mode) {      if (fp_mode) {
         zprecise = DBL_DIG;          zprecise = DBL_DIG;
Line 427  void init_readline (void) Line 461  void init_readline (void)
     pw_buf = (char *) calloc (strlen(pw->pw_dir) + 1, sizeof(char));      pw_buf = (char *) calloc (strlen(pw->pw_dir) + 1, sizeof(char));
     strcpy (pw_buf, pw->pw_dir);      strcpy (pw_buf, pw->pw_dir);
   
     snprintf (history_file, 256, "%s/.freem_history", pw_buf);      snprintf (history_file, sizeof (history_file) - 1, "%s/.freem_history", pw_buf);
   
     free (pw_buf);      free (pw_buf);
   
Line 520  void init_mwapi (void) Line 554  void init_mwapi (void)
         gtk_init (0, NULL);          gtk_init (0, NULL);
     }      }
     */      */
     //TODO: init Motif/libXt      /* TODO: init Motif/libXt */
 }  }
 #else  #else
 void init_mwapi (void)  void init_mwapi (void)
Line 541  void init_io (void) Line 575  void init_io (void)
     sq_modes[0] = '+';      sq_modes[0] = '+';
     for (i = 0; i <= MAXDEV; ug_buf[i++][0] = EOL); /* init read-buffers */      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 */      if (hardcopy) zbreakon = ENABLE;        /* enable CTRL/B */
   
     set_io (MUMPS);         /* set i/o parameters */      set_io (MUMPS);         /* set i/o parameters */
   
 #if !defined(__AMIGA)  #if !defined(__AMIGA) && !defined(__OS2__)
     if (ttyname (HOME)) {       /* for $IO of HOME */      if (ttyname (HOME)) {       /* for $IO of HOME */
         strcpy (dev[HOME], ttyname (HOME));          strcpy (dev[HOME], ttyname (HOME));
         dev[HOME][strlen (dev[HOME])] = EOL;          dev[HOME][strlen (dev[HOME])] = EOL;
Line 556  void init_io (void) Line 590  void init_io (void)
         dev[HOME][0] = EOL;     /* ...we are in a pipe */          dev[HOME][0] = EOL;     /* ...we are in a pipe */
     }      }
 #else  #else
   #if defined(__AMIGA)
     strcpy (dev[HOME], "CONSOLE:");      strcpy (dev[HOME], "CONSOLE:");
   #else
   #if defined(__OS2__)
       strcpy (dev[HOME], "CON:");
   #endif
   #endif
 #endif      #endif    
   
     /* init function keys */      /* init function keys */
Line 629  void cleanup (void) Line 669  void cleanup (void)
     int ch;      int ch;
   
     /* remove this job's entry from ^$JOB SSVN */      /* remove this job's entry from ^$JOB SSVN */
     snprintf (k_buf, 255, "^$JOB\202%d\201", pid);      snprintf (k_buf, sizeof (k_buf) - 1, "^$JOB\202%d\201", pid);
     symtab_shm (kill_sym, k_buf, " \201");      symtab_shm (kill_sym, k_buf, " \201");
           
     reset_terminal ();      reset_terminal ();

Removed from v.1.3  
changed lines
  Added in v.1.12


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>