--- freem/src/frmgbl.c 2025/04/02 03:02:42 1.8
+++ freem/src/frmgbl.c 2025/05/16 13:22:58 1.19
@@ -1,5 +1,5 @@
/*
- * $Id: frmgbl.c,v 1.8 2025/04/02 03:02:42 snw Exp $
+ * $Id: frmgbl.c,v 1.19 2025/05/16 13:22:58 snw Exp $
* freem global C variables
*
*
@@ -24,6 +24,39 @@
* along with FreeM. If not, see .
*
* $Log: frmgbl.c,v $
+ * Revision 1.19 2025/05/16 13:22:58 snw
+ * Bump version to account for shared memory changes
+ *
+ * Revision 1.18 2025/05/16 04:42:02 snw
+ * Fix macOS port
+ *
+ * Revision 1.17 2025/05/05 04:46:35 snw
+ * Documentation fixes; make FreeM more standards compliant
+ *
+ * Revision 1.16 2025/04/30 17:19:16 snw
+ * Improve backtraces in debugger
+ *
+ * Revision 1.15 2025/04/30 14:41:03 snw
+ * Further debugger work
+ *
+ * Revision 1.14 2025/04/28 19:38:55 snw
+ * Add trace mode
+ *
+ * Revision 1.13 2025/04/17 14:34:27 snw
+ * Further logging improvements
+ *
+ * Revision 1.12 2025/04/16 17:36:12 snw
+ * Add FreeBSD shm cleanup script
+ *
+ * Revision 1.11 2025/04/13 04:22:43 snw
+ * Fix snprintf calls
+ *
+ * Revision 1.10 2025/04/10 01:24:38 snw
+ * Remove C++ style comments
+ *
+ * Revision 1.9 2025/04/03 01:41:02 snw
+ * New features frozen; prepare 0.63.0-rc1
+ *
* Revision 1.8 2025/04/02 03:02:42 snw
* Stop requiring users to pass -e to fmadm when -u or -g are passed
*
@@ -52,9 +85,10 @@
#include
#include
#include
+#include
#include "transact.h"
#include "locktab.h"
-#include
+#include "log.h"
#ifdef LIBFREEM
# include "errmsg.h"
@@ -419,6 +453,7 @@ char config_file[4096]; /* path
char env_config_file[4096]; /* path to environment config file */
char env_user[255];
char env_group[255];
+char env_enabled[10];
char shm_env[255]; /* shared memory environment */
short fp_mode = 0; /* set to 0 for fixed-point math, 1 for IEEE754 floating point */
@@ -529,8 +564,8 @@ char curdir[256] = "."; /* curre
char startuprou[PATHLEN] = "\201"; /* start up routine from cmdline*/
char zcommds[256] =
-" za zas zb zd zg zh zi zj zl zn zp zq zr zs zt zwr zbreak \
-zgo zhalt zinsert zjob zload znamespace zprint zquit zremove zsave ztrap zwrite \201"; /* intrinsic z-commands */
+" za zb zc zd zg zh zi zj zl zm zn zp zq zr zs zth ztr zwa zwi zwr zassert zbreak \
+zconst zgo zhalt zinsert zjob zload zmap znamespace zprint zquit zremove zsave zthrow ztrap zunmap zwatch zwith zwrite \201"; /* intrinsic z-commands */
char zfunctions[256] = /* intrinsic z-functions */
" zb zc zd ze zh zht zk zl zm zn zo zp zr zs zt zboolean zcall zcr zcrc zdata zdate zedit zhorolog \
zkey zlength zlsd zname znext zorder zpiece zprevious zreplace zsyntax zsort ztime \201";
@@ -607,7 +642,7 @@ short sigint_in_for = FALSE;
short direct_mode = TRUE; /* are we in direct mode? */
short extr_types[NESTLEVLS + 1]; /* return types of extrinsic functions */
-char destructors[MAX_DESTRUCTORS][50];
+char destructors[MAX_DESTRUCTORS][OBJ_DSTRSIZE];
int destructor_ct;
char private_keys[MAX_PRIVATE_KEYS][255];
@@ -639,15 +674,16 @@ short ipc_pending = 0; /* 1 if an inco
int strict_mode = 0;
-short first_process = FALSE;
-size_t shm_init_size = 16777216;
+int trace_mode = 0;
+short debug_mode = FALSE;
+int lasterr[NESTLEVLS + 1];
+short first_process = FALSE;
+size_t shm_init_size = 16777216; /* initial size of SysV shared memory segment (16M + overhead);
+ requires a kernel shmmax (or equivalent) parameter of at least
+ 17002496 */
short inrpt_after_async = FALSE;
-//#ifdef USE_SIGACTION
-// struct sigaction act = {0}; /* signals stuff */
-//#endif/*USE_SIGACTION*/
-
void unnew (void)
{
char *xptr;
@@ -728,11 +764,12 @@ void m_fatal(char *s)
if (tp_level) {
- fprintf (stderr, "freem [FATAL]: memory allocation failure in %s; rolling back %d transactions [errno %d %s]\n", s, tp_level, errno_sav, strerror (errno_sav));
+ /* TODO: make this FM_LOG_FATAL (logger will need to do a tp_trollback) */
+ logprintf (FM_LOG_ERROR, "freem: memory allocation failure in %s; rolling back %d transactions (error code %d [%s])", s, tp_level, errno_sav, strerror (errno_sav));
tp_trollback (tp_level);
}
else {
- fprintf (stderr, "freem [FATAL]: memory allocation failure in %s [errno %d %s]\n", s, errno_sav, strerror (errno_sav));
+ logprintf (FM_LOG_FATAL, "freem: memory allocation failure in %s (error code %d [%s])", s, errno_sav, strerror (errno_sav));
}
exit (3);