--- freem/src/symtab_bltin.c 2025/03/26 15:17:12 1.7 +++ freem/src/symtab_bltin.c 2025/04/10 01:24:39 1.10 @@ -1,5 +1,5 @@ /* - * $Id: symtab_bltin.c,v 1.7 2025/03/26 15:17:12 snw Exp $ + * $Id: symtab_bltin.c,v 1.10 2025/04/10 01:24:39 snw Exp $ * FreeM local system table and user-defined special variable table * * @@ -24,6 +24,15 @@ * along with FreeM. If not, see . * * $Log: symtab_bltin.c,v $ + * Revision 1.10 2025/04/10 01:24:39 snw + * Remove C++ style comments + * + * Revision 1.9 2025/04/09 19:52:02 snw + * Eliminate as many warnings as possible while building with -Wall + * + * Revision 1.8 2025/04/04 12:46:13 snw + * Patch Solaris 8 crash and bump version to 0.63.1-rc1 + * * Revision 1.7 2025/03/26 15:17:12 snw * Fall back to global-backed SSVNs when memory-backed globals fail in attempt to fix Tru64 * @@ -118,6 +127,7 @@ void symtab_init (void) shm_config->hdr->PSIZE = DEFPSIZE; shm_config->hdr->argptr = mbpartition; + fprintf (stderr, "symtab_init: initializing memory-backed globals\r\n"); semid_symtab = semget (symtab_sk, 1, 0666 | IPC_CREAT); @@ -129,6 +139,13 @@ void symtab_init (void) fprintf (stderr, "symtab_init: symbol table semaphore created with semid %d\r\n", semid_symtab); } +#if defined(__sun__) + fprintf (stderr, "symtab_init: falling back to global-backed structured system variables\r\n"); + shm_config->hdr->use_mb_globals = FALSE; + return; +#endif + + arg.val = 1; if (semctl (semid_symtab, 0, SETVAL, arg) == -1) { fprintf (stderr, "symtab_init: failed to initialize symbol table semaphore\r\n"); @@ -167,6 +184,7 @@ void symtab_init (void) mbpartition = shm_config->hdr->partition; + symtab_release_sem (); } } @@ -579,7 +597,7 @@ no_with: /* OLD get_sym routine */ if ((i = alphptr[(int) key[0]])) { -// printf ("alphptr match; writing_mb = %d\r\n", writing_mb); +/* printf ("alphptr match; writing_mb = %d\r\n", writing_mb); */ k = 1; j = i + 1; /* first char always matches! */ @@ -622,6 +640,9 @@ no_with: } while (i < PSIZE); } + else { + printf ("alphptr not found\r\n"); + } merr_raise (M6); data[0] = EOL; @@ -1829,7 +1850,7 @@ zinvend: *newptr++ = k1; *newptr++ = set_sym; - //if (mcmnd != ZNEW) test = FALSE; + /*if (mcmnd != ZNEW) test = FALSE; */ return;