--- freem/src/frmgbl.c 2025/04/13 04:22:43 1.11
+++ freem/src/frmgbl.c 2025/05/19 21:29:29 1.21
@@ -1,5 +1,5 @@
/*
- * $Id: frmgbl.c,v 1.11 2025/04/13 04:22:43 snw Exp $
+ * $Id: frmgbl.c,v 1.21 2025/05/19 21:29:29 snw Exp $
* freem global C variables
*
*
@@ -24,6 +24,36 @@
* along with FreeM. If not, see .
*
* $Log: frmgbl.c,v $
+ * Revision 1.21 2025/05/19 21:29:29 snw
+ * Add basic tab completion to direct mode
+ *
+ * Revision 1.20 2025/05/18 18:15:38 snw
+ * Add ZEDIT command for editing routines
+ *
+ * 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
*
@@ -61,9 +91,10 @@
#include
#include
#include
+#include
#include "transact.h"
#include "locktab.h"
-#include
+#include "log.h"
#ifdef LIBFREEM
# include "errmsg.h"
@@ -539,8 +570,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 ze zg zh zi zj zl zm zn zp zq zr zs zth ztr zwa zwi zwr zassert zbreak \
+zconst zedit zgo zgoto 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";
@@ -649,9 +680,14 @@ 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;
void unnew (void)
@@ -734,11 +770,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);