Annotation of freem/src/ssvn_job.c, revision 1.8

1.1       snw         1: /*
1.8     ! snw         2:  *   $Id: ssvn_job.c,v 1.7 2025/04/10 17:21:54 snw Exp $
1.4       snw         3:  *    ^$JOB ssvn
1.1       snw         4:  *
                      5:  *  
1.3       snw         6:  *   Author: Serena Willis <snw@coherent-logic.com>
1.1       snw         7:  *    Copyright (C) 1998 MUG Deutschland
1.4       snw         8:  *    Copyright (C) 2020, 2025 Coherent Logic Development LLC
1.1       snw         9:  *
                     10:  *
                     11:  *   This file is part of FreeM.
                     12:  *
                     13:  *   FreeM is free software: you can redistribute it and/or modify
                     14:  *   it under the terms of the GNU Affero Public License as published by
                     15:  *   the Free Software Foundation, either version 3 of the License, or
                     16:  *   (at your option) any later version.
                     17:  *
                     18:  *   FreeM is distributed in the hope that it will be useful,
                     19:  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
                     20:  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     21:  *   GNU Affero Public License for more details.
                     22:  *
                     23:  *   You should have received a copy of the GNU Affero Public License
                     24:  *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
                     25:  *
1.5       snw        26:  *   $Log: ssvn_job.c,v $
1.8     ! snw        27:  *   Revision 1.7  2025/04/10 17:21:54  snw
        !            28:  *   Remove traces of BDB global handler
        !            29:  *
1.7       snw        30:  *   Revision 1.6  2025/04/09 19:52:02  snw
                     31:  *   Eliminate as many warnings as possible while building with -Wall
                     32:  *
1.6       snw        33:  *   Revision 1.5  2025/03/24 04:13:11  snw
                     34:  *   Replace action macro dat with fra_dat to avoid symbol conflict on OS/2
                     35:  *
1.5       snw        36:  *   Revision 1.4  2025/03/09 19:50:47  snw
                     37:  *   Second phase of REUSE compliance and header reformat
                     38:  *
1.4       snw        39:  *
                     40:  * SPDX-FileCopyrightText:  (C) 2025 Coherent Logic Development LLC
                     41:  * SPDX-License-Identifier: AGPL-3.0-or-later
1.1       snw        42:  **/
                     43: 
                     44: #include <stdio.h>
                     45: #include <string.h>
                     46: #include <stdlib.h>
                     47: #include <signal.h>
                     48: #include <sys/types.h>
                     49: #include <unistd.h>
                     50: #include <errno.h>
                     51: #include <sys/time.h>
                     52: #include <sys/resource.h>
                     53: #include <ctype.h>
                     54: #include <time.h>
                     55: 
                     56: #include "config.h"
                     57: #include "mpsdef.h"
                     58: #include "transact.h"
                     59: #include "namespace.h"
                     60: #include "freem.h"
                     61: #include "mref.h"
                     62: #include "jobtab.h"
                     63: 
                     64: short cur_symtab = 0;
                     65: 
                     66: void ssvn_job_add_device(int channel, char *device)
                     67: {
                     68:     char *k_buf;
                     69:     char *d_buf;
                     70:     
                     71:     k_buf = (char *) malloc (STRLEN * sizeof (char));
                     72:     NULLPTRCHK(k_buf,"ssvn_job_add_device");
                     73: 
                     74:     d_buf = (char *) malloc (STRLEN * sizeof (char));
                     75:     NULLPTRCHK(k_buf,"ssvn_job_add_device");
                     76: 
1.8     ! snw        77:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel);
        !            78:     snprintf (d_buf, STRLEN - 1, "%s\201", device);
1.1       snw        79: 
                     80:     symtab_shm (set_sym, k_buf, d_buf);
                     81:     
                     82:     free (k_buf);
                     83:     free (d_buf);
                     84: 
                     85:     return;
                     86: }
                     87: 
                     88: void ssvn_job_remove_device(int channel)
                     89: {
                     90:     char *k_buf;
                     91:     char *d_buf;
                     92:     
                     93:     k_buf = (char *) malloc (STRLEN * sizeof (char));
                     94:     NULLPTRCHK(k_buf,"ssvn_job_add_device");
                     95: 
                     96:     d_buf = (char *) malloc (STRLEN * sizeof (char));
                     97:     NULLPTRCHK(k_buf,"ssvn_job_add_device");
                     98: 
1.8     ! snw        99:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel);
        !           100:     snprintf (d_buf, STRLEN - 1, "\201");
1.1       snw       101: 
                    102:     symtab_shm (kill_sym, k_buf, d_buf);
                    103:     
                    104:     free (k_buf);
                    105:     free (d_buf);
                    106: 
                    107:     return;
                    108: 
                    109: }
                    110: 
                    111: void ssvn_job_update(void)
                    112: {
                    113: 
1.8     ! snw       114:     char k_buf[STRLEN];
        !           115:     char d_buf[STRLEN];
1.1       snw       116: 
1.8     ! snw       117:     char tk_buf[STRLEN];
        !           118:     char td_buf[STRLEN];
1.1       snw       119:     
                    120: #ifndef AMIGA68K
                    121:     uid_t uid;
                    122:     gid_t gid;
                    123: #else
                    124:     int uid;
                    125:     int gid;
                    126: #endif
                    127: 
                    128:     int ierr_sav;
                    129:     int tf;
                    130:     
                    131: #if !defined(AMIGA68K)
                    132:     uid = getuid ();
                    133:     gid = getgid ();
                    134: #else
                    135:     uid = 0;
                    136:     gid = 0;
                    137: #endif
                    138: 
                    139:     ierr_sav = ierr;
                    140:     
1.8     ! snw       141:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PIPE_GLVN\201", pid);
1.1       snw       142:     snprintf (d_buf, 5, "%%\201");
                    143:     symtab_shm (set_sym, k_buf, d_buf);
                    144:     
1.8     ! snw       145:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZCOMMANDS\201", pid);
1.1       snw       146:     stcpy (d_buf, zcommds);
                    147:     symtab_shm (set_sym, k_buf, d_buf);
                    148: 
1.8     ! snw       149:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZFUNCTIONS\201", pid);
1.1       snw       150:     stcpy (d_buf, zfunctions);
                    151:     symtab_shm (set_sym, k_buf, d_buf);
                    152: 
1.8     ! snw       153:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZSVS\201", pid);
1.1       snw       154:     stcpy (d_buf, zsvn);
                    155:     symtab_shm (set_sym, k_buf, d_buf);
                    156: 
1.8     ! snw       157:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202BREAK_HANDLER\201", pid);
1.1       snw       158:     stcpy (d_buf, brkaction);
                    159:     symtab_shm (set_sym, k_buf, d_buf);
                    160: 
1.8     ! snw       161:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_SIZE\201", pid);
        !           162:     snprintf (d_buf, STRLEN - 1, "%ld\201", PSIZE0 - 1);
1.1       snw       163:     symtab_shm (set_sym, k_buf, d_buf);
                    164: 
1.8     ! snw       165:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_COUNT\201", pid);
        !           166:     snprintf (d_buf, STRLEN - 1, "%ld\201", NO_OF_RBUF);
1.1       snw       167:     symtab_shm (set_sym, k_buf, d_buf);
                    168: 
1.8     ! snw       169:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_AUTO_ADJUST\201", pid);
        !           170:     snprintf (d_buf, STRLEN - 1, "%d\201", autorsize);
1.1       snw       171:     symtab_shm (set_sym, k_buf, d_buf);
                    172: 
1.8     ! snw       173:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SYMBOL_TABLE_SIZE\201", pid);
        !           174:     snprintf (d_buf, STRLEN - 1, "%ld\201", PSIZE);
1.1       snw       175:     symtab_shm (set_sym, k_buf, d_buf);
                    176: 
1.8     ! snw       177:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SYMBOL_TABLE_AUTO_ADJUST\201", pid);
        !           178:     snprintf (d_buf, STRLEN - 1, "%d\201", autopsize);
1.1       snw       179:     symtab_shm (set_sym, k_buf, d_buf);
                    180: 
1.8     ! snw       181:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_SIZE\201", pid);
        !           182:     snprintf (d_buf, STRLEN - 1, "%ld\201", UDFSVSIZ);
1.1       snw       183:     symtab_shm (set_sym, k_buf, d_buf);
                    184: 
1.8     ! snw       185:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_AUTO_ADJUST\201", pid);
        !           186:     snprintf (d_buf, STRLEN - 1, "%d\201", autousize);
1.1       snw       187:     symtab_shm (set_sym, k_buf, d_buf);
                    188: 
1.8     ! snw       189:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_UNIQUE_CHARS\201", pid);
        !           190:     snprintf (d_buf, STRLEN - 1, "%d\201", (glvnflag.one[0] == 0) ? 255 : glvnflag.one[0]);
1.1       snw       191:     symtab_shm (set_sym, k_buf, d_buf);
                    192: 
                    193:     tf = UNSIGN (glvnflag.one[1]);
                    194:     toggle (tf);
                    195:     
1.8     ! snw       196:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_CASE_SENSITIVE\201", pid);
        !           197:     snprintf (d_buf, STRLEN - 1, "%d\201", tf);
1.1       snw       198:     symtab_shm (set_sym, k_buf, d_buf);
                    199:     
                    200:     tf = UNSIGN (glvnflag.one[2]);
                    201:     if (tf == 0) tf = 255;
1.8     ! snw       202:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_NAME_SUB_LENGTH\201", pid);
        !           203:     snprintf (d_buf, STRLEN - 1, "%d\201", tf);
1.1       snw       204:     symtab_shm (set_sym, k_buf, d_buf);
                    205: 
                    206:     tf = UNSIGN (glvnflag.one[3]);
                    207:     if (tf == 0) tf = 255;
1.8     ! snw       208:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_SUB_LENGTH\201", pid);
        !           209:     snprintf (d_buf, STRLEN - 1, "%d\201", tf);    
1.1       snw       210:     symtab_shm (set_sym, k_buf, d_buf);
                    211:     
1.8     ! snw       212:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SINGLE_USER\201", pid);
        !           213:     snprintf (d_buf, STRLEN - 1, "%d\201", lonelyflag);
1.1       snw       214:     symtab_shm (set_sym, k_buf, d_buf);
                    215: 
1.8     ! snw       216:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LOWERCASE_EVERYWHERE\201", pid);
        !           217:     snprintf (d_buf, STRLEN - 1, "%d\201", lowerflag);
1.1       snw       218:     symtab_shm (set_sym, k_buf, d_buf);
                    219: 
1.8     ! snw       220:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZCOMMAND_ARGUMENT_NAME\201", pid);
1.1       snw       221:     stcpy (d_buf, zargdefname);
                    222:     symtab_shm (set_sym, k_buf, d_buf);
                    223: 
1.8     ! snw       224:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202TIMEZONE_OFFSET\201", pid);
1.1       snw       225:     lintstr (d_buf, tzoffset);
                    226:     symtab_shm (set_sym, k_buf, d_buf);
                    227:     
1.8     ! snw       228:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202%s\201", pid, nsname);
        !           229:     snprintf (d_buf, STRLEN - 1, "%s\201", gbl_u_engine);
1.1       snw       230:     symtab_shm (set_sym, k_buf, d_buf);
                    231: 
1.8     ! snw       232:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202SYSTEM\201", pid);
        !           233:     snprintf (d_buf, STRLEN - 1, "%s\201", gbl_s_engine);
1.1       snw       234:     symtab_shm (set_sym, k_buf, d_buf);
                    235: 
1.8     ! snw       236:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202LOCAL\201", pid);
        !           237:     snprintf (d_buf, STRLEN - 1, "%s\201", loc_engine);
1.1       snw       238:     symtab_shm (set_sym, k_buf, d_buf);    
                    239:     
1.8     ! snw       240:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202CHARACTER\201", pid);
1.1       snw       241:     symtab_shm (set_sym, k_buf, "M\201");
                    242: 
1.8     ! snw       243:     snprintf (d_buf, STRLEN - 1, "%s\201", curdir);
        !           244:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202CWD\201", pid);
1.1       snw       245:     symtab_shm (set_sym, k_buf, d_buf);
                    246:     
1.8     ! snw       247:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GLOBAL\201", pid);
1.1       snw       248:     symtab_shm (set_sym, k_buf, " \201");
                    249: 
1.8     ! snw       250:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LOCK\201", pid);
1.1       snw       251:     symtab_shm (set_sym, k_buf, " \201");
                    252: 
1.8     ! snw       253:     snprintf (d_buf, STRLEN - 1, "%s\201", oucpath);
        !           254:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202IOPATH\201", pid);
1.1       snw       255:     symtab_shm (set_sym, k_buf, d_buf);
                    256: 
                    257: #if !defined(MSDOS)    
1.8     ! snw       258:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PRIORITY\201", pid);
        !           259:     snprintf (d_buf, STRLEN - 1, "%d\201", getpriority (PRIO_PROCESS, pid));
1.1       snw       260:     symtab_shm (set_sym, k_buf, d_buf);
                    261: #endif
                    262:     
1.8     ! snw       263:     snprintf (d_buf, STRLEN - 1, "%s\201", rou_name);
        !           264:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE\201", pid);
1.1       snw       265:     symtab_shm (set_sym, k_buf, d_buf);
                    266: 
1.8     ! snw       267:     snprintf (d_buf, STRLEN - 1, "0:\"%s\"\201", dev[HOME]);
        !           268:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$PRINCIPAL\201", pid);
1.1       snw       269:     symtab_shm (set_sym, k_buf, d_buf);
                    270: 
1.8     ! snw       271:     snprintf (d_buf, STRLEN - 1, "%d\201", tp_level);
        !           272:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$TLEVEL\201", pid);
1.1       snw       273:     symtab_shm (set_sym, k_buf, d_buf);
                    274: 
1.8     ! snw       275:     snprintf (d_buf, STRLEN - 1, "0:\"%s\"\201", dev[HOME]);
        !           276:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$IO\201", pid);
1.1       snw       277:     symtab_shm (set_sym, k_buf, d_buf);
                    278: 
1.8     ! snw       279:     snprintf (d_buf, STRLEN -1, "%s\201", gvndefault);
        !           280:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVNDEFAULT\201", pid);
1.1       snw       281:     symtab_shm (set_sym, k_buf, d_buf);
                    282: 
1.8     ! snw       283:     snprintf (d_buf, STRLEN -1, "%s\201", lvndefault);
        !           284:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LVNDEFAULT\201", pid);
1.1       snw       285:     symtab_shm (set_sym, k_buf, d_buf);
                    286:     
                    287:     ssvn_job_add_device (HOME, dev[HOME]);
                    288:     
1.8     ! snw       289:     snprintf (d_buf, STRLEN - 1, "%d\201", uid);
        !           290:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER\201", pid);
1.1       snw       291:     symtab_shm (set_sym, k_buf, d_buf);
                    292: 
1.8     ! snw       293:     snprintf (d_buf, STRLEN - 1, "%d\201", gid);
        !           294:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GROUP\201", pid);
1.1       snw       295:     symtab_shm (set_sym, k_buf, d_buf);
                    296: 
1.8     ! snw       297:     snprintf (d_buf, STRLEN - 1, "%s\201", nsname);
        !           298:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202NAMESPACE\201", pid);
1.1       snw       299:     symtab_shm (set_sym, k_buf, d_buf);
                    300: 
1.8     ! snw       301:     snprintf (d_buf, STRLEN - 1, "%d\201", cur_symtab);
        !           302:     snprintf (k_buf, STRLEN - 1, "^$JOB\202\%d\202SYMTAB\201", pid);
1.1       snw       303:     symtab_shm (set_sym, k_buf, d_buf);
                    304:     
1.8     ! snw       305:     snprintf (d_buf, STRLEN - 1, "%d\201", pid);
        !           306:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PID\201", pid);
1.1       snw       307:     symtab_shm (set_sym, k_buf, d_buf);
                    308: 
1.8     ! snw       309:     snprintf (d_buf, STRLEN - 1, "%d\201", frm_throw_all_errors);
        !           310:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SET_ALL_ECODES\201", pid);
1.1       snw       311:     symtab_shm (set_sym, k_buf, d_buf);    
                    312:     
1.8     ! snw       313:     snprintf (tk_buf, STRLEN - 1, "^$SYSTEM\202ZDATE_FORMAT\201");
1.1       snw       314:     ssvn (get_sym, tk_buf, td_buf);
                    315:     
1.8     ! snw       316:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZDATE_FORMAT\201", pid);
1.1       snw       317:     symtab_shm (set_sym, k_buf, td_buf);
                    318:     
1.8     ! snw       319:     snprintf (tk_buf, STRLEN - 1, "^$SYSTEM\202ZTIME_FORMAT\201");
1.1       snw       320:     ssvn (get_sym, tk_buf, td_buf);
                    321: 
1.8     ! snw       322:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZTIME_FORMAT\201", pid);
1.1       snw       323:     symtab_shm (set_sym, k_buf, td_buf);
                    324: 
1.8     ! snw       325:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENVIRONMENT\201", pid);
        !           326:     snprintf (d_buf, STRLEN - 1, "%s\201", shm_env);
1.1       snw       327:     symtab_shm (set_sym, k_buf, d_buf);
                    328:     
                    329:     switch (fp_mode) {
                    330:         
                    331:         case 0:
                    332: 
1.8     ! snw       333:             snprintf (d_buf, STRLEN - 1, "FIXED\201");
1.1       snw       334:             break;
                    335: 
                    336:         default:
                    337: 
1.8     ! snw       338:             snprintf (d_buf, STRLEN - 1, "IEEE754\201");
1.1       snw       339:             snprintf (fp_conversion, 9, "%%.%df\201", DBL_DIG);
                    340:             zprecise = DBL_DIG;
                    341:             
                    342:             break;
                    343: 
                    344:     }
                    345: 
1.8     ! snw       346:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202MATH\201", pid);
1.1       snw       347:     symtab_shm (set_sym, k_buf, d_buf);
                    348: 
1.8     ! snw       349:     snprintf (d_buf, STRLEN - 1, "%d\201", en_revstrf);
        !           350:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202REVSTR\201", pid);
1.1       snw       351:     symtab_shm (set_sym, k_buf, d_buf);
                    352:     
                    353:     stcpy (d_buf, rou_name);
                    354:     stcnv_m2c (d_buf);
                    355: 
                    356:     merr_raise (ierr_sav);
                    357:     
                    358: }
                    359: 
                    360: 
                    361: void ssvn_job(short action, char *key, char *data)
                    362: {
                    363:     pid_t t_pid;
                    364:     int i;
                    365:     char ch;
                    366:     job_slot_t *slot;
                    367:     freem_ref_t *r;
                    368:     char *kbuf;
                    369:     char *tbuf;
                    370:     
                    371:     r = (freem_ref_t *) malloc (sizeof (freem_ref_t));
                    372:     NULLPTRCHK(r,"ssvn_job");
                    373:     
                    374:     kbuf = (char *) malloc (STRLEN * sizeof(char));
                    375:     NULLPTRCHK(kbuf,"ssvn_job");
                    376:     
                    377:     tbuf = (char *) malloc (STRLEN * sizeof(char));
                    378:     NULLPTRCHK(tbuf,"ssvn_job");
                    379:     
                    380:     stcpy (kbuf, key);
                    381: 
                    382:     mref_init (r, MREF_RT_SSVN, "^$JOB");
                    383:     internal_to_mref (r, kbuf);
                    384: 
                    385:     t_pid = atol (mref_get_subscript (r, 0));
                    386: 
                    387:     slot = job_get (t_pid);
                    388:     
                    389:     if (r->subscript_count > 1) {
                    390:         for (i = 0; i < strlen (r->subscripts[1]); i++) {
                    391:             r->subscripts[1][i] = toupper (r->subscripts[1][i]);
                    392:         }
                    393:     }
                    394: 
                    395:     key = mref_to_internal (r);
                    396:     stcpy (kbuf, key);
                    397: 
                    398:     switch (action) {
                    399:     
                    400:         case set_sym:
                    401: 
                    402:             {
                    403:                 char cbuf[STRLEN];
                    404: 
                    405:                 snprintf (cbuf, STRLEN - 1, "^$JOB\202%d\202NAMESPACE\201", pid);
                    406: 
                    407:                 if (stcmp (kbuf, cbuf) == 0) {
                    408:                     
                    409:                     stcpy (tbuf, data);
                    410:                     stcnv_m2c (tbuf);
                    411: 
                    412:                     if (validate_namespace (tbuf) == FALSE) {
                    413:                         merr_raise (M26);
                    414:                     }
                    415:                     else {                    
                    416:                         set_namespace (tbuf, FALSE);
                    417:                     }
                    418: 
                    419:                     goto done;
                    420: 
                    421:                 }                
                    422:                
                    423:                 
                    424:                 if (strcmp (mref_get_subscript (r, 1), "ZCOMMANDS") == 0) {
                    425: 
                    426:                     m_tolower (data);
                    427:                     
                    428:                     stcpy (zcommds, data);
                    429:                     symtab_shm (action, key, data);
                    430: 
                    431:                     merr_clear ();
                    432:                     goto done;
                    433: 
                    434:                 }
                    435:                 else if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {
                    436:                     stcpy (l_o_val, data);
                    437: 
                    438:                     merr_clear ();
                    439:                     goto done;
                    440:                 }
                    441:                 else if (strcmp (mref_get_subscript (r, 1), "GVNQOVAL") == 0) {
                    442:                     stcpy (l_o_val, data);
                    443: 
                    444:                     merr_clear ();
                    445:                     goto done;
                    446:                 }
                    447:                 else if (strcmp (mref_get_subscript (r, 1), "GVNDEFAULT") == 0) {
                    448: 
                    449:                     stcpy (gvndefault, data);
                    450: 
                    451:                     merr_clear ();
                    452:                     goto done;
                    453:                 }
                    454:                 else if (strcmp (mref_get_subscript (r, 1), "LVNDEFAULT") == 0) {
                    455: 
                    456:                     stcpy (lvndefault, data);
                    457: 
                    458:                     merr_clear ();
                    459:                     goto done;
                    460:                 }
                    461:                 else if (strcmp (mref_get_subscript (r, 1), "PIPE_GLVN") == 0) {
                    462: 
                    463:                     symtab_shm (action, key, data);
                    464: 
                    465:                     merr_clear ();
                    466:                     goto done;
                    467:                     
                    468:                 }
                    469:                 else if (strcmp (mref_get_subscript (r, 1), "ZFUNCTIONS") == 0) {
                    470: 
                    471:                     m_tolower (data);
                    472:                     
                    473:                     stcpy (zfunctions, data);
                    474:                     symtab_shm (action, key, data);
                    475: 
                    476:                     merr_clear ();
                    477:                     goto done;
                    478: 
                    479:                 }
                    480:                 else if (strcmp (mref_get_subscript (r, 1), "ZSVS") == 0) {
                    481: 
                    482:                     m_tolower (data);
                    483:                     
                    484:                     stcpy (zsvn, data);
                    485:                     symtab_shm (action, key, data);
                    486: 
                    487:                     merr_clear ();
                    488:                     goto done;
                    489:                     
                    490:                 }
                    491:                 else if (strcmp (mref_get_subscript (r, 1), "LOWERCASE_EVERYWHERE") == 0) {
                    492:                     
                    493:                     int tf = tvexpr (data);
                    494: 
                    495:                     lowerflag = tf;
1.8     ! snw       496:                     snprintf (data, STRLEN - 1, "%d\n", tf);
1.1       snw       497: 
                    498:                     symtab_shm (action, key, data);
                    499: 
                    500:                     merr_clear ();
                    501:                     goto done;
                    502:                     
                    503:                 }
                    504:                 else if (strcmp (mref_get_subscript (r, 1), "ZCOMMAND_ARGUMENT_NAME") == 0) {
                    505: 
                    506:                     stcpy (zargdefname, data);
                    507:                     symtab_shm (action, key, data);
                    508: 
                    509:                     merr_clear ();
                    510:                     goto done;
                    511:                     
                    512:                 }
                    513:                 else if (strcmp (mref_get_subscript (r, 1), "BREAK_HANDLER") == 0) {
                    514: 
                    515:                     stcpy (brkaction, data);
                    516:                     symtab_shm (action, key, data);
                    517: 
                    518:                     merr_clear ();
                    519:                     goto done;
                    520: 
                    521:                 }
                    522:                 else if (strcmp (mref_get_subscript (r, 1), "ROUTINE_BUFFER_SIZE") == 0) {
                    523: 
                    524:                     if (intexpr (data) <= 0) {
                    525:                         merr_raise (ARGER);
                    526:                         goto done;
                    527:                     }
                    528: 
                    529:                     newrsize (intexpr (data) + 1, NO_OF_RBUF);
                    530:                     symtab_shm (action, key, data);
                    531: 
                    532:                     merr_clear ();
                    533:                     goto done;
                    534:                     
                    535:                 }
                    536:                 else if (strcmp (mref_get_subscript (r, 1), "ROUTINE_BUFFER_COUNT") == 0) {
                    537:                     
                    538:                     if (intexpr (data) <= 0) {
                    539:                         merr_raise (ARGER);
                    540:                         goto done;
                    541:                     }
                    542: 
                    543:                     newrsize (PSIZE0, intexpr (data));
                    544:                     symtab_shm (action, key, data);
                    545: 
                    546:                     merr_clear ();
                    547:                     goto done;
                    548:                     
                    549:                 }
                    550:                 else if (strcmp (mref_get_subscript (r, 1), "ROUTINE_BUFFER_AUTO_ADJUST") == 0) {
                    551: 
                    552:                     autorsize = tvexpr (data);
1.8     ! snw       553:                     snprintf (data, STRLEN - 1, "%d\201", tvexpr (data));
1.1       snw       554: 
                    555:                     symtab_shm (action, key, data);
                    556: 
                    557:                     merr_clear ();
                    558:                     goto done;                    
                    559:                     
                    560:                 }
                    561:                 else if (strcmp (mref_get_subscript (r, 1), "SYMBOL_TABLE_SIZE") == 0) {
                    562: 
                    563:                     if (intexpr (data) <= 0) {
                    564:                         merr_raise (ARGER);
                    565:                         goto done;
                    566:                     }
                    567: 
                    568:                     newpsize (intexpr (data));
                    569: 
                    570:                     symtab_shm (action, key, data);
                    571: 
                    572:                     merr_clear ();
                    573:                     goto done;
                    574:                     
                    575:                 }
                    576:                 else if (strcmp (mref_get_subscript (r, 1), "SYMBOL_TABLE_AUTO_ADJUST") == 0) {
                    577: 
                    578:                     autopsize = tvexpr (data);
1.8     ! snw       579:                     snprintf (data, STRLEN - 1, "%d\201", tvexpr (data));
1.1       snw       580: 
                    581:                     symtab_shm (action, key, data);
                    582: 
                    583:                     merr_clear ();
                    584:                     goto done;
                    585:                     
                    586:                 }
                    587:                 else if (strcmp (mref_get_subscript (r, 1), "USER_DEFINED_ISV_TABLE_SIZE") == 0) {
                    588: 
                    589:                     if (intexpr (data) <= 0) {
                    590:                         merr_raise (ARGER);
                    591:                         goto done;
                    592:                     }
                    593: 
                    594:                     newusize (intexpr (data));
                    595: 
                    596:                     symtab_shm (action, key, data);
                    597: 
                    598:                     merr_clear ();
                    599:                     goto done;
                    600: 
                    601:                 }
                    602:                 else if (strcmp (mref_get_subscript (r, 1), "USER_DEFINED_ISV_TABLE_AUTO_ADJUST") == 0) {
                    603:                     autousize = tvexpr (data);
1.8     ! snw       604:                     snprintf (data, STRLEN - 1, "%d\201", tvexpr (data));
1.1       snw       605: 
                    606:                     symtab_shm (action, key, data);
                    607: 
                    608:                     merr_clear ();
                    609:                     goto done;
                    610:                 }
                    611:                 else if (strcmp (mref_get_subscript (r, 1), "GVN_UNIQUE_CHARS") == 0) {
                    612: 
                    613:                     int t = intexpr (data) & 0377;
                    614: 
                    615:                     if (t == 255) t = 0;
                    616: 
                    617:                     if (merr () != MXNUM) {
                    618: 
                    619:                         glvnflag.one[0] = (char) t;
                    620: 
1.8     ! snw       621:                         snprintf (data, STRLEN - 1, "%d\201", t);
1.1       snw       622:                         symtab_shm (action, key, data);
                    623:                         
                    624:                         merr_clear ();
                    625: 
                    626:                     }
                    627:                     else {
                    628:                         merr_raise (ARGER);
                    629:                     }
                    630: 
                    631:                     goto done;                    
                    632:                     
                    633:                 }
                    634:                 else if (strcmp (mref_get_subscript (r, 1), "GVN_CASE_SENSITIVE") == 0) {
                    635:                     int t = tvexpr (data);
                    636:                     toggle (t);
                    637: 
                    638:                     if (merr () != MXNUM) {
                    639: 
                    640:                         glvnflag.one[1] = t;
                    641: 
1.8     ! snw       642:                         snprintf (data, STRLEN - 1, "%d\201", t);
1.1       snw       643:                         symtab_shm (action, key, data);
                    644: 
                    645:                         merr_clear ();
                    646: 
                    647:                     }
                    648:                     else {
                    649:                         merr_raise (ARGER);
                    650:                     }
                    651: 
                    652:                     goto done;
                    653:                     
                    654:                 }
                    655:                 else if (strcmp (mref_get_subscript (r, 1), "GVN_NAME_SUB_LENGTH") == 0) {
                    656:                     int t = intexpr (data) & 0377;
                    657: 
                    658:                     if (t == 255) t = 0;
                    659: 
                    660:                     if (merr () != MXNUM) {
                    661:                         glvnflag.one[2] = (char) t;
                    662: 
1.8     ! snw       663:                         snprintf (data, STRLEN - 1, "%d\201", t);
1.1       snw       664:                         symtab_shm (action, key, data);
                    665: 
                    666:                         merr_clear ();
                    667:                     }
                    668:                     else {
                    669:                         merr_raise (ARGER);
                    670:                     }
                    671: 
                    672:                     goto done;
                    673:                         
                    674:                 }
                    675:                 else if (strcmp (mref_get_subscript (r, 1), "GVN_SUB_LENGTH") == 0) {
                    676:                     int t = intexpr (data) & 0377;
                    677: 
                    678:                     if (t == 255) t = 0;
                    679: 
                    680:                     if (merr () != MXNUM) {
                    681:                         glvnflag.one[3] = (char) t;
                    682: 
1.8     ! snw       683:                         snprintf (data, STRLEN - 1, "%d\201", t);
1.1       snw       684:                         symtab_shm (action, key, data);
                    685: 
                    686:                         merr_clear ();
                    687:                     }
                    688:                     else {
                    689:                         merr_raise (ARGER);
                    690:                     }
                    691: 
                    692:                     goto done;
                    693:                     
                    694:                 }
                    695:                 else if (strcmp (mref_get_subscript (r, 1), "SINGLE_USER") == 0) {
                    696:                     int tf = tvexpr (data);
                    697:                     close_all_globals ();
                    698: 
1.8     ! snw       699:                     snprintf (data, STRLEN - 1, "%d\201", tf);
1.1       snw       700:                     symtab_shm (action, key, data);
                    701: 
                    702:                     merr_clear ();
                    703:                     goto done;                    
                    704:                 }
                    705:                 else if (stcmp (mref_get_subscript (r, 1), "TIMEZONE_OFFSET") == 0) {
                    706:                     long tzo = intexpr (data);
                    707:                     long tzj;
                    708:                     
                    709:                     if (merr () > OK) goto done;
                    710: 
                    711:                     tzj = time (0L);
                    712: 
                    713:                     if ((tzoffset > 0 && ((tzj + 86400 + tzoffset) < 0 || (tzj + tzoffset) < 0)) ||
                    714:                         (tzoffset < 0 && ((tzj + 86400 + tzoffset ) > (tzj + 86400) ||
                    715:                                           (tzj + tzoffset) > tzj))) {
                    716:                         merr_raise (ARGER);
                    717:                         goto done;
                    718:                     }
                    719: 
                    720:                     tzoffset = tzo;
                    721: 
1.8     ! snw       722:                     snprintf (data, STRLEN - 1, "%ld\201", tzoffset);
1.1       snw       723:                     symtab_shm (action, key, data);
                    724: 
                    725:                     goto done;
                    726:                 }                    
                    727:                 else if (strcmp (mref_get_subscript (r, 1), "USER_ERRORS") == 0) {
                    728: 
                    729:                     symtab_shm (set_sym, key, data);
                    730: 
                    731:                     merr_clear ();
                    732:                     goto done;
                    733:                     
                    734:                 }
                    735:                 else if (strcmp (mref_get_subscript (r, 1), "SET_ALL_ECODES") == 0) {
                    736: 
                    737:                     frm_throw_all_errors = atol (data);
                    738:                     symtab_shm (set_sym, key, data);
                    739: 
                    740:                     merr_clear ();
                    741:                     goto done;
                    742:                     
                    743:                 }
                    744:                 else if (strcmp (mref_get_subscript (r, 1), "ALIASES") == 0) {
                    745:                     symtab_shm (set_sym, key, data);
                    746: 
                    747:                     merr_clear ();
                    748:                     goto done;
                    749:                 }
                    750:                 else if (strcmp (mref_get_subscript (r, 1), "CWD") == 0) {
                    751: 
                    752:                     stcpy (tbuf, data);
                    753:                     stcnv_m2c (tbuf);
                    754: 
                    755:                     if (chdir (tbuf) != 0) {
                    756:                         merr_raise (PROTECT);
                    757:                         goto done;
                    758:                     }
                    759:                     else {
                    760:                         strcpy (curdir, tbuf);
                    761:                         symtab_shm (set_sym, kbuf, data);
                    762: 
                    763:                         merr_clear ();
                    764:                         goto done;
                    765:                     }
                    766: 
                    767:                 }
                    768:                 else if (strcmp (mref_get_subscript (r, 1), "EVENT") == 0) {
                    769:                     symtab_shm (set_sym, kbuf, data);
                    770: 
                    771:                     merr_clear ();
                    772:                     goto done;
                    773:                 } 
                    774:                 else if (strcmp (mref_get_subscript (r, 1), "PRIORITY") == 0) {
                    775: 
                    776:                     int new_pri;                   
                    777:                     
                    778:                     stcpy (tbuf, data);
                    779:                     stcnv_m2c (tbuf);
                    780: 
                    781:                     new_pri = atoi (tbuf);
                    782: 
                    783:                     
                    784:                     i = nice (40);
                    785:                     nice ((int) (new_pri - 40));
                    786: 
                    787:                     symtab_shm (set_sym, kbuf, data);
                    788: 
                    789:                     merr_clear ();
                    790:                     goto done;
                    791: 
                    792:                 }
                    793:                 else if (strcmp (mref_get_subscript (r, 1), "IOPATH") == 0) {
                    794: 
                    795:                     stcpy (oucpath, data);
                    796:                     symtab_shm (set_sym, kbuf, data);
                    797: 
                    798:                     merr_clear ();
                    799:                     goto done;
                    800:                     
                    801:                 }
                    802:                 else if (strcmp (mref_get_subscript (r, 1), "REVSTR") == 0) {
                    803: 
                    804:                     short tres = tvexpr (data);
                    805: 
                    806:                     if (tres == TRUE) {
                    807:                         en_revstrf = 1;
                    808:                     }
                    809:                     else {
                    810:                         en_revstrf = 0;
                    811:                     }                                        
                    812:                     
                    813:                     symtab_shm (set_sym, kbuf, data);
                    814: 
                    815:                     merr_clear ();
                    816:                     goto done;
                    817:                     
                    818:                 }
                    819:                 else if (strcmp (mref_get_subscript (r, 1), "ZDATE_FORMAT") == 0) {
                    820:                     symtab_shm (set_sym, key, data);
                    821:                     merr_clear ();
                    822:                     goto done;
                    823: 
                    824:                 }
                    825:                 else if (strcmp (mref_get_subscript (r, 1), "ZTIME_FORMAT") == 0) {
                    826:                     symtab_shm (set_sym, key, data);
                    827:                     merr_clear ();
                    828:                     goto done;
                    829: 
                    830:                 }
                    831:                else if (strcmp (mref_get_subscript (r, 1), "SYMTAB") == 0) {
                    832: 
                    833:                    int itmp = atoi (data); 
                    834: 
                    835:                    if ((data[0] < '0') || (data[0] > '9')) {
                    836:                        merr_raise (INVEXPR);
                    837:                        goto done;
                    838:                    }
                    839:                    
                    840:                    if (itmp != 0 && itmp != 1) {
                    841:                        merr_raise (INVEXPR);
                    842:                        goto done;
                    843:                    }
                    844:                    
                    845:                    if (cur_symtab == itmp) {
                    846:                        merr_clear ();
                    847:                        goto done;
                    848:                    }
                    849:                    
                    850:                    if (cur_symtab == 0) {
                    851:                        cur_symtab = 1;
                    852:                    }
                    853:                    else {
                    854:                        cur_symtab = 0;
                    855:                    }
                    856: 
                    857:                    if (apartition == NULL) {
                    858:                        
                    859:                        apartition = calloc ((unsigned) PSIZE + 1, 1);
                    860:                        asymlen = PSIZE;
                    861:                        
                    862:                        for (i = 0; i < 128; i++) aalphptr[i] = 0L;
                    863:                        
                    864:                    } 
                    865:                    
                    866:                    {
                    867:                        
                    868:                        char   *x;
                    869:                        
                    870:                        x = apartition;
                    871:                        apartition = partition;
                    872:                        partition = x;
                    873:                        
                    874:                    }
                    875:                    
                    876:                    ch = asymlen;
                    877:                    asymlen = symlen;
                    878:                    symlen = ch;
                    879:                    
                    880:                    for (i = 0; i < 128; i++) {
                    881:                        ch = aalphptr[i];
                    882:                        aalphptr[i] = alphptr[i];
                    883:                        alphptr[i] = ch;
                    884:                    }
                    885:                    
                    886:                    s = &partition[symlen] - 256;       /* pointer to symlen_offset        */
                    887:                    argptr = partition;         /* pointer to beg of tmp-storage   */
                    888: 
                    889:                    symtab_shm (set_sym, key, data);
                    890:                    
                    891:                    merr_clear ();
                    892:                    goto done;
                    893:                    
                    894:                    
                    895:                }
                    896:                 else if (strcmp (mref_get_subscript (r, 1), "MATH") == 0) {
                    897: 
                    898: #if !defined(_AIX)                 
                    899:                     if (stcmp (data, "IEEE754\201") == 0) {
                    900: 
                    901:                         fp_mode = 1;
                    902:                         symtab_shm (set_sym, kbuf, data);
                    903: 
                    904:                         snprintf (fp_conversion, 9, "%%.%df\201", DBL_DIG);
                    905:                         zprecise = DBL_DIG;
                    906: 
                    907:                         merr_clear ();
                    908:                         goto done;
                    909:                         
                    910:                     }
                    911:                     else if (stcmp (data, "FIXED\201") == 0) {
                    912: 
                    913:                         fp_mode = 0;
                    914:                         symtab_shm (set_sym, kbuf, data);
                    915:                         
                    916:                         zprecise = 100;
                    917:                         
                    918:                         merr_clear ();
                    919:                         goto done;
                    920:                         
                    921:                     }
                    922:                     else {
                    923:                         merr_raise (M29);
                    924:                         goto done;
                    925:                     }
                    926: #endif             
                    927:                     
                    928:                 }                
                    929: 
                    930:                 merr_raise (M29);
                    931:                 goto done;
                    932:             }
                    933: 
                    934:        case get_sym:
                    935:             if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {
                    936:                 stcpy (data, l_o_val);
                    937:                 goto done;
                    938:             }
                    939:             else if (strcmp (mref_get_subscript (r, 1), "GVNQOVAL") == 0) {
                    940:                 stcpy (data, g_o_val);
                    941:                 goto done;
                    942:             }
1.5       snw       943:        case fra_dat:
1.1       snw       944:        case fra_order:
                    945:        case fra_query:
                    946:             if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {
                    947:                 merr_raise (M38);
                    948:                 goto done;
                    949:             }
                    950:             if (strcmp (mref_get_subscript (r, 1), "GVNQOVAL") == 0) {
                    951:                 merr_raise (M38);
                    952:                 goto done;
                    953:             }
                    954:        case bigquery:
                    955:        case getnext:
                    956:        case m_alias:
                    957:        case zdata:
                    958: 
                    959:             if (action == get_sym) {
                    960: 
                    961:                 if (strcmp (mref_get_subscript (r, 1), "PROCESS_START") == 0) {                    
                    962:                     
                    963:                     unsigned long ilong;
                    964:                     unsigned long ilong1;
                    965: 
                    966:                     ilong1 = slot->start_time + tzoffset;
                    967:                     ilong = ilong1 / 86400;
                    968: 
                    969:                     lintstr (data, ilong + 47117);
                    970:                     i = stlen (data);
                    971: 
                    972:                     data[i++] = ',';
                    973:                     ilong = ilong1 - (ilong * 86400);
                    974: 
                    975:                     lintstr (&data[i], ilong);
                    976: 
                    977:                     merr_clear ();
                    978:                     goto done;
                    979:                     
                    980:                 }
                    981:                 
                    982:             }
                    983:             
                    984:             symtab_shm (action, kbuf, data);
                    985:             
                    986:             /* here, we need to convert the data on the way out too */                                    
                    987:             if ((action == fra_query) && (stlen (data) > 0)) {
                    988:                 if (strncmp (data, "^$JOB", 5) != 0) {
                    989:                     snprintf (kbuf, STRLEN - 1, "^$JOB%s\201", data);
                    990:                     stcpy (data, kbuf);
                    991:                 }
                    992:             }
                    993:             
                    994:             merr_clear ();
                    995:             goto done;
                    996:        
                    997:         case killone:
                    998:        case kill_sym:            
                    999:             
                   1000:             if (strcmp (mref_get_subscript (r, 1), "ALIASES") == 0) {
                   1001: 
                   1002:                 symtab_shm (action, key, data);
                   1003: 
                   1004:                 goto done;
                   1005:                 
                   1006:             }
                   1007:             else if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {
                   1008:                 l_o_val[0] = '\201';
                   1009:                 merr_clear ();
                   1010:                 goto done;
                   1011:             }
                   1012:             else if (strcmp (mref_get_subscript (r, 1), "GVNQOVAL") == 0) {
                   1013:                 g_o_val[0] = '\201';
                   1014:                 merr_clear ();
                   1015:                 goto done;
                   1016:             }
                   1017:             else if (strcmp (mref_get_subscript (r, 1), "GVNDEFAULT") == 0) {
                   1018:                 gvndefault[0] = '\201';
                   1019:                 symtab_shm (action, key, data);
                   1020:                 symtab_shm (set_sym, key, gvndefault);
                   1021:                 merr_clear ();
                   1022:                 goto done;
                   1023:             }
                   1024:             else if (strcmp (mref_get_subscript (r, 1), "LVNDEFAULT") == 0) {
                   1025:                 lvndefault[0] = '\201';
                   1026:                 symtab_shm (action, key, data);
                   1027:                 symtab_shm (set_sym, key, lvndefault);
                   1028:                 merr_clear ();
                   1029:                 goto done;
                   1030:             }
                   1031:             else {
                   1032:                 job_request_stop (t_pid);
                   1033:             }
                   1034: 
                   1035:             goto done;
                   1036: 
                   1037: 
                   1038:        default:
                   1039:                merr_raise (INVREF);
                   1040:                goto done;
                   1041: 
                   1042:     }
                   1043: 
                   1044: 
                   1045: done:
                   1046: 
                   1047:     free (r);
                   1048:     free (kbuf);
                   1049:     free (tbuf);
                   1050:     free (key);
                   1051:     return;
                   1052: }
                   1053: 
                   1054: void frm_process_alias (char *key)
                   1055: {
                   1056:     int ierr_sav;
                   1057:     char *ptr;
                   1058:     char name[256];
                   1059:     char *subprt;
                   1060:     register int i;
                   1061:     register char ch;
                   1062: 
                   1063:     char *k_buf;
                   1064:     char *d_buf;
                   1065:     char *t_buf;
                   1066:     
                   1067:     k_buf = (char *) malloc (STRLEN * sizeof (char));
                   1068:     NULLPTRCHK(k_buf,"frm_process_alias");
                   1069: 
                   1070:     d_buf = (char *) malloc (STRLEN * sizeof (char));
                   1071:     NULLPTRCHK(d_buf,"frm_process_alias");
                   1072: 
                   1073:     t_buf = (char *) malloc (STRLEN * sizeof (char));
                   1074:     NULLPTRCHK(t_buf,"frm_process_alias");
                   1075: 
                   1076:     ierr_sav = ierr;
                   1077:     ptr = key;
                   1078:     i = 0;
                   1079:     
                   1080:     while ((ch = *(ptr++)) != DELIM && ch != EOL && i < 256) {
                   1081:         name[i++] = ch;
                   1082:     }
                   1083: 
                   1084:     name[i] = '\0';
                   1085:     subprt = key + i;
                   1086: 
1.2       snw      1087:     snprintf (k_buf, STRLEN - 1, "^$JOB\202%ld\202ALIASES\202%s\201", (long) pid, name);
1.1       snw      1088:     symtab_shm (get_sym, k_buf, d_buf);
                   1089: 
                   1090:     stcnv_m2c (d_buf);
                   1091: 
                   1092:     if (merr () == OK) {
                   1093:         snprintf (t_buf, STRLEN - 1, "%s%s\201", d_buf, subprt);
                   1094:         stcpy (key, t_buf);
                   1095:     }
                   1096: 
                   1097:     free (k_buf);
                   1098:     free (d_buf);
                   1099:     free (t_buf);
                   1100: 
                   1101:     merr_raise (ierr_sav);
                   1102: 
                   1103:     return;
                   1104:     
                   1105: }

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