version 1.17, 2025/04/04 21:28:16
|
version 1.21, 2025/04/15 02:24:43
|
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.21 2025/04/15 02:24:43 snw |
|
* Improve FreeM logging capabilities |
|
* |
|
* Revision 1.20 2025/04/13 04:22:43 snw |
|
* Fix snprintf calls |
|
* |
|
* Revision 1.19 2025/04/10 01:24:38 snw |
|
* Remove C++ style comments |
|
* |
|
* Revision 1.18 2025/04/09 19:52:02 snw |
|
* Eliminate as many warnings as possible while building with -Wall |
|
* |
* Revision 1.17 2025/04/04 21:28:16 snw |
* Revision 1.17 2025/04/04 21:28:16 snw |
* Remove custom_user and custom_group vars from freem and shed privileges per environment catalog settings |
* Remove custom_user and custom_group vars from freem and shed privileges per environment catalog settings |
* |
* |
Line 100
|
Line 112
|
#include <errno.h> |
#include <errno.h> |
#include <pwd.h> |
#include <pwd.h> |
#include <grp.h> |
#include <grp.h> |
|
#include "log.h" |
|
|
#if defined(HAVE_GETOPT_H) |
#if defined(HAVE_GETOPT_H) |
# include <getopt.h> |
# include <getopt.h> |
Line 172 int main (int argc, char **argv, char **
|
Line 184 int main (int argc, char **argv, char **
|
|
|
char *symname = (char *) calloc(STRLEN, sizeof(char)); |
char *symname = (char *) calloc(STRLEN, sizeof(char)); |
char *symval = (char *) calloc(STRLEN, sizeof(char)); |
char *symval = (char *) calloc(STRLEN, sizeof(char)); |
|
|
int namelen; |
|
int vallen; |
|
|
|
char cli_rtn_path[PATH_MAX] = {0}; |
char cli_rtn_path[PATH_MAX] = {0}; |
char *cli_rtn_file; |
char *cli_rtn_file; |
char cli_rtn_name[256]; |
char cli_rtn_name[256]; |
Line 234 int main (int argc, char **argv, char **
|
Line 243 int main (int argc, char **argv, char **
|
break; |
break; |
|
|
case 'e': /* specify FreeM environment */ |
case 'e': /* specify FreeM environment */ |
strncpy (shm_env, optarg, 255); |
strncpy (shm_env, optarg, sizeof (shm_env) - 1); |
break; |
break; |
|
|
case 'R': |
case 'R': |
Line 359 int main (int argc, char **argv, char **
|
Line 368 int main (int argc, char **argv, char **
|
break; |
break; |
|
|
case 'e': /* specify FreeM environment */ |
case 'e': /* specify FreeM environment */ |
strncpy (shm_env, optarg, 255); |
strncpy (shm_env, optarg, sizeof (shm_env) - 1); |
break; |
break; |
|
|
case 'R': |
case 'R': |
Line 456 int main (int argc, char **argv, char **
|
Line 465 int main (int argc, char **argv, char **
|
} |
} |
#endif |
#endif |
|
|
snprintf (config_file, 4096, "%s/freem/%s/freem.conf", SYSCONFDIR, shm_env); |
snprintf (config_file, sizeof (config_file) - 1, "%s/freem/%s/freem.conf", SYSCONFDIR, shm_env); |
snprintf (env_config_file, 4096, "%s/freem/env.conf", SYSCONFDIR); |
snprintf (env_config_file, sizeof (config_file) - 1, "%s/freem/env.conf", SYSCONFDIR); |
|
|
if (!file_exists (env_config_file)) { |
if (!file_exists (env_config_file)) { |
fprintf (stderr, "freem: environment catalog does not exist; may need to run fmadm configure\n"); |
fprintf (stderr, "freem: environment catalog does not exist; may need to run fmadm configure\n"); |
Line 667 int main (int argc, char **argv, char **
|
Line 676 int main (int argc, char **argv, char **
|
skip_init = 1; |
skip_init = 1; |
|
|
/* initialize FreeM environment */ |
/* initialize FreeM environment */ |
strncpy (nsnbuf, nsname, 255); |
strncpy (nsnbuf, nsname, sizeof (nsnbuf)); |
if (init (nsnbuf) == FALSE) { |
if (init (nsnbuf) == FALSE) { |
|
|
if (fm_initialized) set_io (UNIX); |
if (fm_initialized) set_io (UNIX); |
Line 722 int main (int argc, char **argv, char **
|
Line 731 int main (int argc, char **argv, char **
|
} |
} |
|
|
/* make this the startup routine */ |
/* make this the startup routine */ |
snprintf (startuprou, 256, "^%s\201", cli_rtn_name); |
snprintf (startuprou, sizeof (startuprou) - 1, "^%s\201", cli_rtn_name); |
|
|
/* re-work the namespace config to search for the |
/* re-work the namespace config to search for the |
routine in the discovered path */ |
routine in the discovered path */ |
if (cli_rtn_name[0] == '%') { |
if (cli_rtn_name[0] == '%') { |
|
|
snprintf (rou0plib, 256, "%s\201", cli_rtn_path); |
snprintf (rou0plib, sizeof (rou0plib) - 1, "%s\201", cli_rtn_path); |
snprintf (rou1plib, 256, "%s\201", cli_rtn_path); |
snprintf (rou1plib, sizeof (rou1plib) - 1, "%s\201", cli_rtn_path); |
|
|
} |
} |
else { |
else { |
|
|
snprintf (rou0path, 256, "%s\201", cli_rtn_path); |
snprintf (rou0path, sizeof (rou0path) - 1, "%s\201", cli_rtn_path); |
snprintf (rou1path, 256, "%s\201", cli_rtn_path); |
snprintf (rou1path, sizeof (rou1path) - 1, "%s\201", cli_rtn_path); |
|
|
} |
} |
|
|
Line 754 int main (int argc, char **argv, char **
|
Line 763 int main (int argc, char **argv, char **
|
|
|
if (!skip_init) { |
if (!skip_init) { |
/* initialize FreeM environment */ |
/* initialize FreeM environment */ |
strncpy (nsnbuf, nsname, 255); |
strncpy (nsnbuf, nsname, sizeof (nsnbuf)); |
if (init (nsnbuf) == FALSE) { |
if (init (nsnbuf) == FALSE) { |
set_io (UNIX); |
set_io (UNIX); |
fprintf (stderr, "\nError initializing FreeM.\n"); |
fprintf (stderr, "\nError initializing FreeM.\n"); |
Line 863 int main (int argc, char **argv, char **
|
Line 872 int main (int argc, char **argv, char **
|
|
|
|
|
#if !defined(_AIX) |
#if !defined(_AIX) |
if(import_env == TRUE) { |
if (import_env == TRUE) { |
|
|
int i_maxlen = 255; |
int i_maxlen = 255; |
|
|
for(env = envp; *env != 0; env++) { |
for (env = envp; *env != 0; env++) { |
|
varname = strtok (*env, "="); |
namelen = 0; |
varval = strtok (NULL, "="); |
vallen = 0; |
|
|
|
varname = strtok(*env, "="); |
|
varval = strtok(NULL, "="); |
|
|
|
if(varval != NULL) { |
|
namelen = strlen (varname); |
|
vallen = strlen (varval); |
|
|
|
|
if (varval != NULL) { |
snprintf (symname, i_maxlen, "ENV.%s\201\201", varname); |
snprintf (symname, i_maxlen, "ENV.%s\201\201", varname); |
strncpy (symval, varval, i_maxlen); |
strncpy (symval, varval, i_maxlen - 1); |
|
|
stcnv_c2m (symval); |
stcnv_c2m (symval); |
|
|
Line 899 int main (int argc, char **argv, char **
|
Line 900 int main (int argc, char **argv, char **
|
stcpy (verstr, FREEM_VERSION_STR); |
stcpy (verstr, FREEM_VERSION_STR); |
stcnv_m2c (verstr); |
stcnv_m2c (verstr); |
|
|
snprintf (version, 255, "\r\nCoherent Logic Development FreeM version %s [DIALECT: %s%s]\r\n\201", verstr, m_dialect, (restricted_mode == TRUE ? "/RESTRICTED" : "")); |
snprintf (version, sizeof (version) - 1, "\r\nCoherent Logic Development FreeM version %s [DIALECT: %s%s]\r\n\201", verstr, m_dialect, (restricted_mode == TRUE ? "/RESTRICTED" : "")); |
write_m (version); |
write_m (version); |
|
|
snprintf (version, 255, "Copyright (C) 2014, 2020, 2021, 2023, 2025 Coherent Logic Development LLC\r\n\r\n\201"); |
snprintf (version, sizeof (version) - 1, "Copyright (C) 2014, 2020, 2021, 2023, 2025 Coherent Logic Development LLC\r\n\r\n\201"); |
write_m (version); |
write_m (version); |
|
|
/* |
/* |
Line 919 int main (int argc, char **argv, char **
|
Line 920 int main (int argc, char **argv, char **
|
if (dx_mode) { |
if (dx_mode) { |
char k_buf[512]; |
char k_buf[512]; |
|
|
snprintf (k_buf, 512 - 1, "%%TMPINITMCODE\201\201"); |
snprintf (k_buf, sizeof (k_buf) - 1, "%%TMPINITMCODE\201\201"); |
symtab (set_sym, k_buf, dx_mcode); |
symtab (set_sym, k_buf, dx_mcode); |
const_define (k_buf, dx_mcode); |
const_define (k_buf, dx_mcode); |
} |
} |
Line 927 int main (int argc, char **argv, char **
|
Line 928 int main (int argc, char **argv, char **
|
if (routine_mode) { |
if (routine_mode) { |
char k_buf[512]; |
char k_buf[512]; |
|
|
snprintf (k_buf, 512 - 1, "%%TMPINITROUTINE\201\201"); |
snprintf (k_buf, sizeof (k_buf) - 1, "%%TMPINITROUTINE\201\201"); |
symtab (set_sym, k_buf, startup_routine); |
symtab (set_sym, k_buf, startup_routine); |
const_define (k_buf, startup_routine); |
const_define (k_buf, startup_routine); |
} |
} |