| 
 |   
| version 1.4, 2025/03/09 19:50:47 | version 1.8, 2025/04/04 12:46:13 | 
|---|---|
| Line 24 | Line 24 | 
| * along with FreeM. If not, see <https://www.gnu.org/licenses/>. | * along with FreeM. If not, see <https://www.gnu.org/licenses/>. | 
| * | * | 
| * $Log$ | * $Log$ | 
| * 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 | |
| * | |
| * Revision 1.6 2025/03/24 04:13:11 snw | |
| * Replace action macro dat with fra_dat to avoid symbol conflict on OS/2 | |
| * | |
| * Revision 1.5 2025/03/24 02:01:41 snw | |
| * Work around some OS/2 incompatibilities in symbol table code | |
| * | |
| * Revision 1.4 2025/03/09 19:50:47 snw | * Revision 1.4 2025/03/09 19:50:47 snw | 
| * Second phase of REUSE compliance and header reformat | * Second phase of REUSE compliance and header reformat | 
| * | * | 
| Line 49 | Line 61 | 
| symbol-table calls */ | symbol-table calls */ | 
| /* #define DEBUG_SYM */ | /* #define DEBUG_SYM */ | 
| short st_use_shm = FALSE; | |
| short restoring_consts = FALSE; | short restoring_consts = FALSE; | 
| int semid_symtab; | int semid_symtab; | 
| #if !defined(__OpenBSD__) && !defined(__APPLE__) | #if !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__OS2__) | 
| union semun { | union semun { | 
| int val; /* Value for SETVAL */ | int val; /* Value for SETVAL */ | 
| struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */ | struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */ | 
| Line 108 void symtab_init (void) | Line 121 void symtab_init (void) | 
| shm_config->hdr->PSIZE = DEFPSIZE; | shm_config->hdr->PSIZE = DEFPSIZE; | 
| shm_config->hdr->argptr = mbpartition; | shm_config->hdr->argptr = mbpartition; | 
| fprintf (stderr, "symtab_init: initializing memory-backed globals\r\n"); | fprintf (stderr, "symtab_init: initializing memory-backed globals\r\n"); | 
| semid_symtab = semget (symtab_sk, 1, 0666 | IPC_CREAT); | semid_symtab = semget (symtab_sk, 1, 0666 | IPC_CREAT); | 
| Line 119 void symtab_init (void) | Line 133 void symtab_init (void) | 
| fprintf (stderr, "symtab_init: symbol table semaphore created with semid %d\r\n", semid_symtab); | 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; | arg.val = 1; | 
| if (semctl (semid_symtab, 0, SETVAL, arg) == -1) { | if (semctl (semid_symtab, 0, SETVAL, arg) == -1) { | 
| fprintf (stderr, "symtab_init: failed to initialize symbol table semaphore\r\n"); | fprintf (stderr, "symtab_init: failed to initialize symbol table semaphore\r\n"); | 
| Line 131 void symtab_init (void) | Line 152 void symtab_init (void) | 
| fprintf (stderr, "symtab_init: allocating partition for memory-backed globals\r\n"); | fprintf (stderr, "symtab_init: allocating partition for memory-backed globals\r\n"); | 
| mbpartition = (char *) shm_alloc ((size_t) PSIZE + 2); | mbpartition = (char *) shm_alloc ((size_t) PSIZE + 2); | 
| NULLPTRCHK(mbpartition,"symtab_init"); | if (mbpartition != NULL) { | 
| shm_config->hdr->use_mb_globals = TRUE; | |
| } | |
| else { | |
| fprintf (stderr, "symtab_init: falling back to global-backed structured system variables\r\n"); | |
| shm_config->hdr->use_mb_globals = FALSE; | |
| } | |
| shm_config->hdr->partition = mbpartition; | shm_config->hdr->partition = mbpartition; | 
| Line 151 void symtab_init (void) | Line 178 void symtab_init (void) | 
| mbpartition = shm_config->hdr->partition; | mbpartition = shm_config->hdr->partition; | 
| symtab_release_sem (); | |
| } | } | 
| } | } | 
| Line 201 void symtab_shm (short action, char *key | Line 229 void symtab_shm (short action, char *key | 
| unsigned long stptrs[128]; | unsigned long stptrs[128]; | 
| register int i; | register int i; | 
| char *old_partition = partition; | char *old_partition = partition; | 
| if (shm_config->hdr->use_mb_globals == FALSE) { | |
| symtab_bltin (action, key, data); | |
| return; | |
| } | |
| partition = mbpartition; | partition = mbpartition; | 
| writing_mb = TRUE; | writing_mb = TRUE; | 
| Line 943 old0: /* entry from getinc */ | Line 976 old0: /* entry from getinc */ | 
| /* end of set_sym section */ | /* end of set_sym section */ | 
| case dat: | case fra_dat: | 
| /* note: we assume EOL<DELIM<ASCII */ | /* note: we assume EOL<DELIM<ASCII */ |