version 1.2, 2025/02/28 20:51:20
|
version 1.9, 2025/04/13 04:22:43
|
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.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 80 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 102 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 117 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 144 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); |
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, "%ld\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 366 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 504 void ssvn_job(short action, char *key, c
|
Line 499 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 556 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 582 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 607 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 624 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 645 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 666 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 686 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 702 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 725 void ssvn_job(short action, char *key, c
|
|
|
tzoffset = tzo; |
tzoffset = tzo; |
|
|
snprintf (data, 512 - 1, "%ld\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 907 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 981 void ssvn_job(short action, char *key, c
|
Line 946 void ssvn_job(short action, char *key, c
|
stcpy (data, g_o_val); |
stcpy (data, g_o_val); |
goto done; |
goto done; |
} |
} |
case dat: |
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) { |