108 char* singular =
NULL;
111 char* emacs_dir =
NULL;
112 char* emacs_load =
NULL;
115 int no_emacs_call = 0;
124 int optc, option_index;
157 case FE_OPT_EMACS_DIR:
161 case FE_OPT_EMACS_LOAD:
165 case FE_OPT_SINGULAR:
173 case FE_OPT_DUMP_VERSIONTUPLE:
195 for (i=1; i<argc; i++)
197 if (argv[i] !=
NULL) length += strlen(argv[i]) + 3;
204 error(
"Error: Can't find emacs xterm program. \n Expected it at %s or %s\n Specify alternative with --xterm=PROGRAM option,\n or set ESINGULAR_EMACS environment variable to the name of the program to use as xterm.\n",
211 if (singular ==
NULL)
213 error(
"Error: Can't find singular executable.\n Expected it at %s\n Specify with --singular option,\n or set TSINGULAR_SINGULAR environment variable.\n",
220 #define EXTRA_XTERM_ARGS "+vb -sl 2000 -fb Courier-bold-12 -tn xterm -cr Red3" 222 #define EXTRA_XTERM_ARGS "" 225 syscall = (
char*)
omAlloc(strlen(emacs) +
228 sprintf(syscall,
"%s %s -e %s ", emacs, EXTRA_XTERM_ARGS, singular);
230 for (i=1; i<argc; i++)
234 strcat(syscall,
" ");
235 strcat(syscall, argv[i]);
244 error(
"Error: Can't find emacs or xemacs executable. \n Expected it at %s or %s\n Specify alternative with --emacs option,\n or set ESINGULAR_EMACS environment variable.\n",
251 if (singular ==
NULL)
253 error(
"Error: Can't find singular executable.\n Expected it at %s\n Specify with --singular option,\n or set ESINGULAR_SINGULAR environment variable.\n",
260 if (emacs_dir ==
NULL)
262 error(
"Error: Can't find emacs directory for Singular lisp files. \n Expected it at %s\n Specify with --emacs_dir option,\n or set ESINGULAR_EMACS_DIR environment variable.\n",
268 if (emacs_load ==
NULL)
271 emacs_load =
getenv(
"ESINGULAR_EMACS_LOAD");
272 if (access(emacs_load, R_OK))
275 emacs_load =
getenv(
"HOME");
277 if ((emacs_load==
NULL)||(!access(emacs_load,X_OK)))
278 emacs_load =
getenv(
"SINGHOME");
280 sprintf(cwd,
"%s/.emacs-singular", emacs_load);
281 if (! access(cwd, R_OK))
289 if (emacs_load ==
NULL)
291 error(
"Error: Can't find emacs load file for Singular mode. \n Expected it at %s\n Specify with --emacs_load option,\n or set ESINGULAR_EMACS_LOAD environment variable,\n or put file '.emacs-singular' in your home directory.\n",
300 syscall = (
char*)
omAlloc(strlen(emacs) +
305 const char* prefix =
"--";
306 if (strstr(emacs,
"xemacs") || strstr(emacs,
"Xemacs") || strstr(emacs,
"XEMACS"))
310 if (cwd[strlen(cwd)-1] !=
'/') strcat(cwd,
"/");
314 sprintf(syscall,
"%s %sno-init-file %seval '(progn (setq singular-emacs-home-directory \"%s\") (load-file \"%s\") (singular-other \"%s\" \"%s\" (list ",
315 emacs, prefix, prefix, emacs_dir, emacs_load,
319 for (i=1; i<argc; i++)
323 strcat(syscall,
"\"");
324 strcat(syscall, argv[i]);
325 strcat(syscall,
"\" ");
328 strcat(syscall,
") \"singular\"))'");
333 printf(
"%s\n", syscall);
339 error(
"Error: Execution of\n%s\n", syscall);
static char * feResource(feResourceConfig config, int warn)
void error(const char *fmt,...)
void feInitResources(const char *argv0)
int fe_getopt_long(int argc, char *const *argv, const char *options, const struct fe_option *long_options, int *opt_index)
char * feResourceDefault(const char id)
void feOptDumpVersionTuple(void)
struct fe_option feOptSpec[]
char name(const Variable &v)
#define LONG_OPTION_RETURN
void feOptHelp(const char *name)
const char SHORT_OPTS_STRING[]