Diff for /freem/src/ssvn_job.c between versions 1.1 and 1.10

version 1.1, 2025/01/19 02:04:04 version 1.10, 2025/04/28 19:38:55
Line 1 Line 1
 /*  /*
  *                            *   *   $Id$
  *                           * *   *    ^$JOB ssvn
  *                          *   *  
  *                     ***************  
  *                      * *       * *  
  *                       *  MUMPS  *  
  *                      * *       * *  
  *                     ***************  
  *                          *   *  
  *                           * *  
  *                            *  
  *  
  *   ssvn_job.c  
  *    ^$JOB ssv  
  *   *
  *     *  
  *   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.10  2025/04/28 19:38:55  snw
    *   Add trace mode
    *
    *   Revision 1.9  2025/04/13 04:22:43  snw
    *   Fix snprintf calls
    *
    *   Revision 1.8  2025/04/11 23:27:04  snw
    *   Fix overflow bugs in ssvn_job.c
    *
    *   Revision 1.7  2025/04/10 17:21:54  snw
    *   Remove traces of BDB global handler
    *
    *   Revision 1.6  2025/04/09 19:52:02  snw
    *   Eliminate as many warnings as possible while building with -Wall
    *
    *   Revision 1.5  2025/03/24 04:13:11  snw
    *   Replace action macro dat with fra_dat to avoid symbol conflict on OS/2
    *
    *   Revision 1.4  2025/03/09 19:50:47  snw
    *   Second 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 70  void ssvn_job_add_device(int channel, ch Line 83  void ssvn_job_add_device(int channel, ch
     d_buf = (char *) malloc (STRLEN * sizeof (char));      d_buf = (char *) malloc (STRLEN * sizeof (char));
     NULLPTRCHK(k_buf,"ssvn_job_add_device");      NULLPTRCHK(k_buf,"ssvn_job_add_device");
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel);
     snprintf (d_buf, 512 - 1, "%s\201", device);      snprintf (d_buf, STRLEN - 1, "%s\201", device);
   
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
           
Line 92  void ssvn_job_remove_device(int channel) Line 105  void ssvn_job_remove_device(int channel)
     d_buf = (char *) malloc (STRLEN * sizeof (char));      d_buf = (char *) malloc (STRLEN * sizeof (char));
     NULLPTRCHK(k_buf,"ssvn_job_add_device");      NULLPTRCHK(k_buf,"ssvn_job_add_device");
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel);
     snprintf (d_buf, 512 - 1, "\201");      snprintf (d_buf, STRLEN - 1, "\201");
   
     symtab_shm (kill_sym, k_buf, d_buf);      symtab_shm (kill_sym, k_buf, d_buf);
           
Line 107  void ssvn_job_remove_device(int channel) Line 120  void ssvn_job_remove_device(int channel)
 void ssvn_job_update(void)  void ssvn_job_update(void)
 {  {
   
     char k_buf[512];      char k_buf[STRLEN];
     char d_buf[512];      char d_buf[STRLEN];
   
     char tk_buf[512];      char tk_buf[STRLEN];
     char td_buf[512];      char td_buf[STRLEN];
           
 #ifndef AMIGA68K  #ifndef AMIGA68K
     uid_t uid;      uid_t uid;
Line 134  void ssvn_job_update(void) Line 147  void ssvn_job_update(void)
   
     ierr_sav = ierr;      ierr_sav = ierr;
           
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202PIPE_GLVN\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PIPE_GLVN\201", pid);
     snprintf (d_buf, 5, "%%\201");      snprintf (d_buf, STRLEN - 1, "%%\201");
       symtab_shm (set_sym, k_buf, d_buf);
   
       snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202TRACE\201", pid);
       snprintf (d_buf, STRLEN - 1, "%d\201", trace_mode);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
           
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZCOMMANDS\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZCOMMANDS\201", pid);
     stcpy (d_buf, zcommds);      stcpy (d_buf, zcommds);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZFUNCTIONS\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZFUNCTIONS\201", pid);
     stcpy (d_buf, zfunctions);      stcpy (d_buf, zfunctions);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZSVS\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZSVS\201", pid);
     stcpy (d_buf, zsvn);      stcpy (d_buf, zsvn);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202BREAK_HANDLER\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202BREAK_HANDLER\201", pid);
     stcpy (d_buf, brkaction);      stcpy (d_buf, brkaction);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE_BUFFER_SIZE\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_SIZE\201", pid);
     snprintf (d_buf, 512 - 1, "%ld\201", PSIZE0 - 1);      snprintf (d_buf, STRLEN - 1, "%ld\201", PSIZE0 - 1);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE_BUFFER_COUNT\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_COUNT\201", pid);
     snprintf (d_buf, 512 - 1, "%d\201", NO_OF_RBUF);      snprintf (d_buf, STRLEN - 1, "%ld\201", NO_OF_RBUF);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE_BUFFER_AUTO_ADJUST\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_AUTO_ADJUST\201", pid);
     snprintf (d_buf, 512 - 1, "%d\201", autorsize);      snprintf (d_buf, STRLEN - 1, "%d\201", autorsize);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SYMBOL_TABLE_SIZE\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SYMBOL_TABLE_SIZE\201", pid);
     snprintf (d_buf, 512 - 1, "%ld\201", PSIZE);      snprintf (d_buf, STRLEN - 1, "%ld\201", PSIZE);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SYMBOL_TABLE_AUTO_ADJUST\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SYMBOL_TABLE_AUTO_ADJUST\201", pid);
     snprintf (d_buf, 512 - 1, "%d\201", autopsize);      snprintf (d_buf, STRLEN - 1, "%d\201", autopsize);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_SIZE\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_SIZE\201", pid);
     snprintf (d_buf, 512 - 1, "%ld\201", UDFSVSIZ);      snprintf (d_buf, STRLEN - 1, "%ld\201", UDFSVSIZ);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_AUTO_ADJUST\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_AUTO_ADJUST\201", pid);
     snprintf (d_buf, 512 - 1, "%d\201", autousize);      snprintf (d_buf, STRLEN - 1, "%d\201", autousize);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_UNIQUE_CHARS\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_UNIQUE_CHARS\201", pid);
     snprintf (d_buf, 512 - 1, "%d\201", (glvnflag.one[0] == 0) ? 255 : glvnflag.one[0]);      snprintf (d_buf, STRLEN - 1, "%d\201", (glvnflag.one[0] == 0) ? 255 : glvnflag.one[0]);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     tf = UNSIGN (glvnflag.one[1]);      tf = UNSIGN (glvnflag.one[1]);
     toggle (tf);      toggle (tf);
           
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_CASE_SENSITIVE\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_CASE_SENSITIVE\201", pid);
     snprintf (d_buf, 512 - 1, "%d\201", tf);      snprintf (d_buf, STRLEN - 1, "%d\201", tf);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
           
     tf = UNSIGN (glvnflag.one[2]);      tf = UNSIGN (glvnflag.one[2]);
     if (tf == 0) tf = 255;      if (tf == 0) tf = 255;
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_NAME_SUB_LENGTH\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_NAME_SUB_LENGTH\201", pid);
     snprintf (d_buf, 512 - 1, "%d\201", tf);      snprintf (d_buf, STRLEN - 1, "%d\201", tf);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     tf = UNSIGN (glvnflag.one[3]);      tf = UNSIGN (glvnflag.one[3]);
     if (tf == 0) tf = 255;      if (tf == 0) tf = 255;
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_SUB_LENGTH\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_SUB_LENGTH\201", pid);
     snprintf (d_buf, 512 - 1, "%d\201", tf);          snprintf (d_buf, STRLEN - 1, "%d\201", tf);    
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
           
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SINGLE_USER\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SINGLE_USER\201", pid);
     snprintf (d_buf, 512 - 1, "%d\201", lonelyflag);      snprintf (d_buf, STRLEN - 1, "%d\201", lonelyflag);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202LOWERCASE_EVERYWHERE\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LOWERCASE_EVERYWHERE\201", pid);
     snprintf (d_buf, 512 - 1, "%d\201", lowerflag);      snprintf (d_buf, STRLEN - 1, "%d\201", lowerflag);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZCOMMAND_ARGUMENT_NAME\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZCOMMAND_ARGUMENT_NAME\201", pid);
     stcpy (d_buf, zargdefname);      stcpy (d_buf, zargdefname);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202TIMEZONE_OFFSET\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202TIMEZONE_OFFSET\201", pid);
     lintstr (d_buf, tzoffset);      lintstr (d_buf, tzoffset);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
           
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202%s\201", pid, nsname);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202%s\201", pid, nsname);
     snprintf (d_buf, 512 - 1, "%s\201", gbl_u_engine);      snprintf (d_buf, STRLEN - 1, "%s\201", gbl_u_engine);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202SYSTEM\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202SYSTEM\201", pid);
     snprintf (d_buf, 512 - 1, "%s\201", gbl_s_engine);      snprintf (d_buf, STRLEN - 1, "%s\201", gbl_s_engine);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENGINES\202LOCAL\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202LOCAL\201", pid);
     snprintf (d_buf, 512 - 1, "%s\201", loc_engine);      snprintf (d_buf, STRLEN - 1, "%s\201", loc_engine);
     symtab_shm (set_sym, k_buf, d_buf);          symtab_shm (set_sym, k_buf, d_buf);    
           
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202CHARACTER\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202CHARACTER\201", pid);
     symtab_shm (set_sym, k_buf, "M\201");      symtab_shm (set_sym, k_buf, "M\201");
   
     snprintf (d_buf, 512 - 1, "%s\201", curdir);      snprintf (d_buf, STRLEN - 1, "%s\201", curdir);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202CWD\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202CWD\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
           
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GLOBAL\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GLOBAL\201", pid);
     symtab_shm (set_sym, k_buf, " \201");      symtab_shm (set_sym, k_buf, " \201");
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202LOCK\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LOCK\201", pid);
     symtab_shm (set_sym, k_buf, " \201");      symtab_shm (set_sym, k_buf, " \201");
   
     snprintf (d_buf, 512 - 1, "%s\201", oucpath);      snprintf (d_buf, STRLEN - 1, "%s\201", oucpath);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202IOPATH\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202IOPATH\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
 #if !defined(MSDOS)      #if !defined(MSDOS)    
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202PRIORITY\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PRIORITY\201", pid);
     snprintf (d_buf, 512 - 1, "%d\201", getpriority (PRIO_PROCESS, pid));      snprintf (d_buf, STRLEN - 1, "%d\201", getpriority (PRIO_PROCESS, pid));
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
 #endif  #endif
           
     snprintf (d_buf, 512 - 1, "%s\201", rou_name);      snprintf (d_buf, STRLEN - 1, "%s\201", rou_name);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (d_buf, 512 - 1, "0:\"%s\"\201", dev[HOME]);      snprintf (d_buf, STRLEN - 1, "0:\"%s\"\201", dev[HOME]);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202$PRINCIPAL\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$PRINCIPAL\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (d_buf, 512 - 1, "%d\201", tp_level);      snprintf (d_buf, STRLEN - 1, "%d\201", tp_level);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202$TLEVEL\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$TLEVEL\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (d_buf, 512 - 1, "0:\"%s\"\201", dev[HOME]);      snprintf (d_buf, STRLEN - 1, "0:\"%s\"\201", dev[HOME]);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202$IO\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$IO\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (d_buf, 512 -1, "%s\201", gvndefault);      snprintf (d_buf, STRLEN - 1, "%s\201", gvndefault);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVNDEFAULT\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVNDEFAULT\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (d_buf, 512 -1, "%s\201", lvndefault);      snprintf (d_buf, STRLEN -1, "%s\201", lvndefault);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202LVNDEFAULT\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LVNDEFAULT\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
           
     ssvn_job_add_device (HOME, dev[HOME]);      ssvn_job_add_device (HOME, dev[HOME]);
           
     snprintf (d_buf, 512 - 1, "%d\201", uid);      snprintf (d_buf, STRLEN - 1, "%d\201", uid);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202USER\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (d_buf, 512 - 1, "%d\201", gid);      snprintf (d_buf, STRLEN - 1, "%d\201", gid);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GROUP\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GROUP\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (d_buf, 512 - 1, "%s\201", nsname);      snprintf (d_buf, STRLEN - 1, "%s\201", nsname);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202NAMESPACE\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202NAMESPACE\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (d_buf, 512 - 1, "%d\201", cur_symtab);      snprintf (d_buf, STRLEN - 1, "%d\201", cur_symtab);
     snprintf (k_buf, 512 - 1, "^$JOB\202\%d\202SYMTAB\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202\%d\202SYMTAB\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
           
     snprintf (d_buf, 512 - 1, "%d\201", pid);      snprintf (d_buf, STRLEN - 1, "%d\201", pid);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202PID\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PID\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (d_buf, 512 - 1, "%d\201", frm_throw_all_errors);      snprintf (d_buf, STRLEN - 1, "%d\201", frm_throw_all_errors);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SET_ALL_ECODES\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SET_ALL_ECODES\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);          symtab_shm (set_sym, k_buf, d_buf);    
           
     snprintf (tk_buf, 512 - 1, "^$SYSTEM\202ZDATE_FORMAT\201");      snprintf (tk_buf, STRLEN - 1, "^$SYSTEM\202ZDATE_FORMAT\201");
     ssvn (get_sym, tk_buf, td_buf);      ssvn (get_sym, tk_buf, td_buf);
           
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZDATE_FORMAT\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZDATE_FORMAT\201", pid);
     symtab_shm (set_sym, k_buf, td_buf);      symtab_shm (set_sym, k_buf, td_buf);
           
     snprintf (tk_buf, 512 - 1, "^$SYSTEM\202ZTIME_FORMAT\201");      snprintf (tk_buf, STRLEN - 1, "^$SYSTEM\202ZTIME_FORMAT\201");
     ssvn (get_sym, tk_buf, td_buf);      ssvn (get_sym, tk_buf, td_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZTIME_FORMAT\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZTIME_FORMAT\201", pid);
     symtab_shm (set_sym, k_buf, td_buf);      symtab_shm (set_sym, k_buf, td_buf);
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENVIRONMENT\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENVIRONMENT\201", pid);
     snprintf (d_buf, 512 - 1, "%s\201", shm_env);      snprintf (d_buf, STRLEN - 1, "%s\201", shm_env);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
           
     switch (fp_mode) {      switch (fp_mode) {
                   
         case 0:          case 0:
   
             snprintf (d_buf, 512 - 1, "FIXED\201");              snprintf (d_buf, STRLEN - 1, "FIXED\201");
             break;              break;
   
         default:          default:
   
             snprintf (d_buf, 512 - 1, "IEEE754\201");              snprintf (d_buf, STRLEN - 1, "IEEE754\201");
             snprintf (fp_conversion, 9, "%%.%df\201", DBL_DIG);              snprintf (fp_conversion, sizeof (fp_conversion) - 1, "%%.%df\201", DBL_DIG);
             zprecise = DBL_DIG;              zprecise = DBL_DIG;
                           
             break;              break;
   
     }      }
   
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202MATH\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202MATH\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (d_buf, 512 - 1, "%d\201", en_revstrf);      snprintf (d_buf, STRLEN - 1, "%d\201", en_revstrf);
     snprintf (k_buf, 512 - 1, "^$JOB\202%d\202REVSTR\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202REVSTR\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
           
     stcpy (d_buf, rou_name);      stcpy (d_buf, rou_name);
     stcnv_m2c (d_buf);      stcnv_m2c (d_buf);
   
 #if !defined(__FreeBSD__)  
   
     if (run_daemon == FALSE) {  
         sprintf (k_buf, "    freem: namespace %s routine %s", nsname, d_buf);  
     }  
     else {  
         sprintf (k_buf, "    freem: %s environment daemon", shm_env);  
     }  
     if (!libflag) {  
         strcpy (m_argv[0], k_buf);  
     }  
   
 #endif  
   
     merr_raise (ierr_sav);      merr_raise (ierr_sav);
           
 }  }
Line 370  void ssvn_job_update(void) Line 373  void ssvn_job_update(void)
   
 void ssvn_job(short action, char *key, char *data)  void ssvn_job(short action, char *key, char *data)
 {  {
     int errsav;  
     pid_t t_pid;      pid_t t_pid;
     int i;      int i;
     char ch;      char ch;
Line 443  void ssvn_job(short action, char *key, c Line 445  void ssvn_job(short action, char *key, c
                     goto done;                      goto done;
   
                 }                  }
                   else if (strcmp (mref_get_subscript (r, 1), "TRACE") == 0) {
                       trace_mode = tvexpr (data);
                       goto done;
                   }
                 else if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {                  else if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {
                     stcpy (l_o_val, data);                      stcpy (l_o_val, data);
   
Line 504  void ssvn_job(short action, char *key, c Line 510  void ssvn_job(short action, char *key, c
                     int tf = tvexpr (data);                      int tf = tvexpr (data);
   
                     lowerflag = tf;                      lowerflag = tf;
                     snprintf (data, 512 - 1, "%d\n", tf);                      snprintf (data, STRLEN - 1, "%d\n", tf);
   
                     symtab_shm (action, key, data);                      symtab_shm (action, key, data);
   
Line 561  void ssvn_job(short action, char *key, c Line 567  void ssvn_job(short action, char *key, c
                 else if (strcmp (mref_get_subscript (r, 1), "ROUTINE_BUFFER_AUTO_ADJUST") == 0) {                  else if (strcmp (mref_get_subscript (r, 1), "ROUTINE_BUFFER_AUTO_ADJUST") == 0) {
   
                     autorsize = tvexpr (data);                      autorsize = tvexpr (data);
                     snprintf (data, 512 - 1, "%d\201", tvexpr (data));                      snprintf (data, STRLEN - 1, "%d\201", tvexpr (data));
   
                     symtab_shm (action, key, data);                      symtab_shm (action, key, data);
   
Line 587  void ssvn_job(short action, char *key, c Line 593  void ssvn_job(short action, char *key, c
                 else if (strcmp (mref_get_subscript (r, 1), "SYMBOL_TABLE_AUTO_ADJUST") == 0) {                  else if (strcmp (mref_get_subscript (r, 1), "SYMBOL_TABLE_AUTO_ADJUST") == 0) {
   
                     autopsize = tvexpr (data);                      autopsize = tvexpr (data);
                     snprintf (data, 512 - 1, "%d\201", tvexpr (data));                      snprintf (data, STRLEN - 1, "%d\201", tvexpr (data));
   
                     symtab_shm (action, key, data);                      symtab_shm (action, key, data);
   
Line 612  void ssvn_job(short action, char *key, c Line 618  void ssvn_job(short action, char *key, c
                 }                  }
                 else if (strcmp (mref_get_subscript (r, 1), "USER_DEFINED_ISV_TABLE_AUTO_ADJUST") == 0) {                  else if (strcmp (mref_get_subscript (r, 1), "USER_DEFINED_ISV_TABLE_AUTO_ADJUST") == 0) {
                     autousize = tvexpr (data);                      autousize = tvexpr (data);
                     snprintf (data, 512 - 1, "%d\201", tvexpr (data));                      snprintf (data, STRLEN - 1, "%d\201", tvexpr (data));
   
                     symtab_shm (action, key, data);                      symtab_shm (action, key, data);
   
Line 629  void ssvn_job(short action, char *key, c Line 635  void ssvn_job(short action, char *key, c
   
                         glvnflag.one[0] = (char) t;                          glvnflag.one[0] = (char) t;
   
                         snprintf (data, 512 - 1, "%d\201", t);                          snprintf (data, STRLEN - 1, "%d\201", t);
                         symtab_shm (action, key, data);                          symtab_shm (action, key, data);
                                                   
                         merr_clear ();                          merr_clear ();
Line 650  void ssvn_job(short action, char *key, c Line 656  void ssvn_job(short action, char *key, c
   
                         glvnflag.one[1] = t;                          glvnflag.one[1] = t;
   
                         snprintf (data, 512 - 1, "%d\201", t);                          snprintf (data, STRLEN - 1, "%d\201", t);
                         symtab_shm (action, key, data);                          symtab_shm (action, key, data);
   
                         merr_clear ();                          merr_clear ();
Line 671  void ssvn_job(short action, char *key, c Line 677  void ssvn_job(short action, char *key, c
                     if (merr () != MXNUM) {                      if (merr () != MXNUM) {
                         glvnflag.one[2] = (char) t;                          glvnflag.one[2] = (char) t;
   
                         snprintf (data, 512 - 1, "%d\201", t);                          snprintf (data, STRLEN - 1, "%d\201", t);
                         symtab_shm (action, key, data);                          symtab_shm (action, key, data);
   
                         merr_clear ();                          merr_clear ();
Line 691  void ssvn_job(short action, char *key, c Line 697  void ssvn_job(short action, char *key, c
                     if (merr () != MXNUM) {                      if (merr () != MXNUM) {
                         glvnflag.one[3] = (char) t;                          glvnflag.one[3] = (char) t;
   
                         snprintf (data, 512 - 1, "%d\201", t);                          snprintf (data, STRLEN - 1, "%d\201", t);
                         symtab_shm (action, key, data);                          symtab_shm (action, key, data);
   
                         merr_clear ();                          merr_clear ();
Line 707  void ssvn_job(short action, char *key, c Line 713  void ssvn_job(short action, char *key, c
                     int tf = tvexpr (data);                      int tf = tvexpr (data);
                     close_all_globals ();                      close_all_globals ();
   
                     snprintf (data, 512 - 1, "%d\201", tf);                      snprintf (data, STRLEN - 1, "%d\201", tf);
                     symtab_shm (action, key, data);                      symtab_shm (action, key, data);
   
                     merr_clear ();                      merr_clear ();
Line 730  void ssvn_job(short action, char *key, c Line 736  void ssvn_job(short action, char *key, c
   
                     tzoffset = tzo;                      tzoffset = tzo;
   
                     snprintf (data, 512 - 1, "%d\201", tzoffset);                      snprintf (data, STRLEN - 1, "%ld\201", tzoffset);
                     symtab_shm (action, key, data);                      symtab_shm (action, key, data);
   
                     goto done;                      goto done;
                 }                                      }                    
                 else if (strcmp (mref_get_subscript (r, 1), "ENGINES") == 0) {  
   
                     if (strcmp (mref_get_subscript (r, 2), "GLOBAL") == 0) {  
   
                         if ((strcmp (mref_get_subscript (r, 3), nsname) == 0) && (strcmp (mref_get_subscript (r, 3), "SYSTEM") != 0)) {  
                             stcpy (tbuf, data);  
                             stcnv_m2c (tbuf);  
                               
                             global_set_engine ('u', tbuf);  
   
                             goto done;  
                               
                         }  
                         else if (strcmp (mref_get_subscript (r, 3), "SYSTEM") == 0) {  
   
                             stcpy (tbuf, data);  
                             stcnv_m2c (tbuf);  
   
                             global_set_engine ('s', tbuf);  
                           
                             goto done;  
                               
                         }  
                           
                     }  
                       
                     merr_raise (M29);  
                     goto done;  
                       
                 }  
                 else if (strcmp (mref_get_subscript (r, 1), "USER_ERRORS") == 0) {                  else if (strcmp (mref_get_subscript (r, 1), "USER_ERRORS") == 0) {
   
                     symtab_shm (set_sym, key, data);                      symtab_shm (set_sym, key, data);
Line 942  void ssvn_job(short action, char *key, c Line 918  void ssvn_job(short action, char *key, c
                         fp_mode = 1;                          fp_mode = 1;
                         symtab_shm (set_sym, kbuf, data);                          symtab_shm (set_sym, kbuf, data);
   
                         snprintf (fp_conversion, 9, "%%.%df\201", DBL_DIG);                          snprintf (fp_conversion, sizeof (fp_conversion) - 1, "%%.%df\201", DBL_DIG);
                         zprecise = DBL_DIG;                          zprecise = DBL_DIG;
   
                         merr_clear ();                          merr_clear ();
Line 972  void ssvn_job(short action, char *key, c Line 948  void ssvn_job(short action, char *key, c
                 goto done;                  goto done;
             }              }
   
         case get_sym:          case get_sym:            
             if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {              if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {
                 stcpy (data, l_o_val);                  stcpy (data, l_o_val);
                 goto done;                  goto done;
Line 981  void ssvn_job(short action, char *key, c Line 957  void ssvn_job(short action, char *key, c
                 stcpy (data, g_o_val);                  stcpy (data, g_o_val);
                 goto done;                  goto done;
             }              }
         case dat:              else if (strcmp (mref_get_subscript (r, 1), "TRACE") == 0) {
                   snprintf (data, STRLEN - 1, "%d\201", trace_mode);
                   goto done;
               }
           case fra_dat:
         case fra_order:          case fra_order:
         case fra_query:          case fra_query:
             if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {              if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {
Line 1125  void frm_process_alias (char *key) Line 1105  void frm_process_alias (char *key)
     name[i] = '\0';      name[i] = '\0';
     subprt = key + i;      subprt = key + i;
   
     snprintf (k_buf, STRLEN - 1, "^$JOB\202%ld\202ALIASES\202%s\201", pid, name);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%ld\202ALIASES\202%s\201", (long) pid, name);
     symtab_shm (get_sym, k_buf, d_buf);      symtab_shm (get_sym, k_buf, d_buf);
   
     stcnv_m2c (d_buf);      stcnv_m2c (d_buf);

Removed from v.1.1  
changed lines
  Added in v.1.10


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