My Project  debian-1:4.1.2-p1+ds-2
Macros | Functions | Variables
feOpt.cc File Reference
#include <string.h>
#include "kernel/mod2.h"
#include "factory/factory.h"
#include "feOpt.h"
#include "misc/options.h"
#include "misc/sirandom.h"
#include "fehelp.h"
#include "omalloc/omalloc.h"
#include "resources/feResource.h"
#include "kernel/oswrapper/feread.h"
#include "kernel/oswrapper/timer.h"
#include "ipshell.h"
#include "tok.h"
#include "sdb.h"
#include "cntrlc.h"
#include <errno.h>

Go to the source code of this file.

Macros

#define FE_OPT_STRUCTURE
 

Functions

feOptIndex feGetOptIndex (const char *name)
 
feOptIndex feGetOptIndex (int optc)
 
static const char * feOptAction (feOptIndex opt)
 
const char * feSetOptValue (feOptIndex opt, char *optarg)
 
const char * feSetOptValue (feOptIndex opt, int optarg)
 
void fePrintOptValues ()
 
void feOptHelp (const char *name)
 
void feOptDumpVersionTuple (void)
 

Variables

const char SHORT_OPTS_STRING [] = "bdhpqstvxec:r:u:"
 

Macro Definition Documentation

◆ FE_OPT_STRUCTURE

#define FE_OPT_STRUCTURE

Definition at line 14 of file feOpt.cc.

Function Documentation

◆ feGetOptIndex() [1/2]

feOptIndex feGetOptIndex ( const char *  name)

Definition at line 100 of file feOpt.cc.

102 {
103  int opt = 0;
104 
105  while (opt != (int) FE_OPT_UNDEF)
106  {
107  if (strcmp(feOptSpec[opt].name, name) == 0)
108  return (feOptIndex) opt;
109  opt = opt + 1;
110  }
111  return FE_OPT_UNDEF;

◆ feGetOptIndex() [2/2]

feOptIndex feGetOptIndex ( int  optc)

Definition at line 113 of file feOpt.cc.

115 {
116  int opt = 0;
117 
118  if (optc == LONG_OPTION_RETURN) return FE_OPT_UNDEF;
119 
120  while (opt != (int) FE_OPT_UNDEF)
121  {
122  if (feOptSpec[opt].val == optc)
123  return (feOptIndex) opt;
124  opt = opt + 1;
125  }
126  return FE_OPT_UNDEF;

◆ feOptAction()

static const char * feOptAction ( feOptIndex  opt)
static

Definition at line 198 of file feOpt.cc.

200 {
201  // do some special actions
202  switch(opt)
203  {
204  case FE_OPT_BATCH:
205  if (feOptSpec[FE_OPT_BATCH].value)
207  return NULL;
208 
209  case FE_OPT_HELP:
211  return NULL;
212 
213  case FE_OPT_PROFILE:
214  traceit=1024;
215  return NULL;
216 
217  case FE_OPT_QUIET:
218  if (feOptSpec[FE_OPT_QUIET].value)
219  si_opt_2 &= ~(Sy_bit(0)|Sy_bit(V_LOAD_LIB));
220  else
222  return NULL;
223 
224  case FE_OPT_NO_TTY:
225  if (feOptSpec[FE_OPT_NO_TTY].value)
227  return NULL;
228 
229  case FE_OPT_SDB:
230  #ifdef HAVE_SDB
231  if (feOptSpec[FE_OPT_SDB].value)
232  sdb_flags = 1;
233  else
234  sdb_flags = 0;
235  #endif
236  return NULL;
237 
238  case FE_OPT_VERSION:
239  {
240  char *s=versionString();
241  printf("%s",s);
242  omFree(s);
243  return NULL;
244  }
245 
246  case FE_OPT_ECHO:
247  si_echo = (int) ((long)(feOptSpec[FE_OPT_ECHO].value));
248  if (si_echo < 0 || si_echo > 9)
249  return "argument of option is not in valid range 0..9";
250  return NULL;
251 
252  case FE_OPT_RANDOM:
253  siRandomStart = (unsigned int) ((unsigned long)
254  (feOptSpec[FE_OPT_RANDOM].value));
257  return NULL;
258 
259  case FE_OPT_EMACS:
260  if (feOptSpec[FE_OPT_EMACS].value)
261  {
262  // print EmacsDir and InfoFile so that Emacs
263  // mode can pcik it up
264  Warn("EmacsDir: %s", (feResource('e' /*"EmacsDir"*/) != NULL ?
265  feResource('e' /*"EmacsDir"*/) : ""));
266  Warn("InfoFile: %s", (feResource('i' /*"InfoFile"*/) != NULL ?
267  feResource('i' /*"InfoFile"*/) : ""));
268  }
269  return NULL;
270 
271  case FE_OPT_NO_WARN:
272  if (feOptSpec[FE_OPT_NO_WARN].value)
273  feWarn = FALSE;
274  else
275  feWarn = TRUE;
276  return NULL;
277 
278  case FE_OPT_NO_OUT:
279  if (feOptSpec[FE_OPT_NO_OUT].value)
280  feOut = FALSE;
281  else
282  feOut = TRUE;
283  return NULL;
284 
285  case FE_OPT_MIN_TIME:
286  {
287  double mintime = atof((char*) feOptSpec[FE_OPT_MIN_TIME].value);
288  if (mintime <= 0) return "invalid float argument";
290  return NULL;
291  }
292 
293  case FE_OPT_BROWSER:
294  feHelpBrowser((char*) feOptSpec[FE_OPT_BROWSER].value, 1);
295 
296  case FE_OPT_TICKS_PER_SEC:
297  {
298  int ticks = (int) ((long)(feOptSpec[FE_OPT_TICKS_PER_SEC].value));
299  if (ticks <= 0)
300  return "integer argument must be larger than 0";
301  SetTimerResolution(ticks);
302  return NULL;
303  }
304 
305  case FE_OPT_DUMP_VERSIONTUPLE:
306  {
308  return NULL;
309  }
310 
311  default:
312  return NULL;
313  }

◆ feOptDumpVersionTuple()

void feOptDumpVersionTuple ( void  )

Definition at line 402 of file feOpt.cc.

404 {
405  printf("%s\n",VERSION);

◆ feOptHelp()

void feOptHelp ( const char *  name)

Definition at line 351 of file feOpt.cc.

353 {
354  int i = 0;
355  char tmp[20];
356 #if defined(ESINGULAR)
357  printf("ESingular starts up Singular within emacs;\n");
358 #elif defined(TSINGULAR)
359  printf("TSingular starts up Singular within a terminal window;\n");
360 #endif
361  printf("Singular is a Computer Algebra System (CAS) for Polynomial Computations.\n");
362  printf("Usage: %s [options] [file1 [file2 ...]]\n", name);
363  printf("Options:\n");
364 
365  while (feOptSpec[i].name != 0)
366  {
367  if (feOptSpec[i].help != NULL
368 #ifdef SING_NDEBUG
369  && *(feOptSpec[i].help) != '/'
370 #endif
371  )
372  {
373  if (feOptSpec[i].has_arg > 0)
374  {
375  if (feOptSpec[i].has_arg > 1)
376  sprintf(tmp, "%s[=%s]", feOptSpec[i].name, feOptSpec[i].arg_name);
377  else
378  sprintf(tmp, "%s=%s", feOptSpec[i].name, feOptSpec[i].arg_name);
379 
380  printf(" %c%c --%-20s %s\n",
381  (feOptSpec[i].val != LONG_OPTION_RETURN ? '-' : ' '),
383  tmp,
384  feOptSpec[i].help);
385  }
386  else
387  {
388  printf(" %c%c --%-20s %s\n",
389  (feOptSpec[i].val != LONG_OPTION_RETURN ? '-' : ' '),
391  feOptSpec[i].name,
392  feOptSpec[i].help);
393  }
394  }
395  i++;
396  }
397 
398  printf("\nFor more information, type `help;' from within Singular or visit\n");
399  printf("http://www.singular.uni-kl.de or consult the\n");
400  printf("Singular manual (available as on-line info or html manual).\n");

◆ fePrintOptValues()

void fePrintOptValues ( )

Definition at line 316 of file feOpt.cc.

318 {
319  int i = 0;
320 
321  while (feOptSpec[i].name != 0)
322  {
324 #ifndef SING_NDEBUG
325  && *(feOptSpec[i].help) != '/'
326 #endif
327  )
328  {
329  if (feOptSpec[i].type == feOptString)
330  {
331  if (feOptSpec[i].value == NULL)
332  {
333  Print("// --%-15s\n", feOptSpec[i].name);
334  }
335  else
336  {
337  Print("// --%-15s \"%s\"\n", feOptSpec[i].name, (char*) feOptSpec[i].value);
338  }
339  }
340  else
341  {
342  Print("// --%-15s %d\n", feOptSpec[i].name, (int)(long)feOptSpec[i].value);
343  }
344  }
345  i++;
346  }

◆ feSetOptValue() [1/2]

const char* feSetOptValue ( feOptIndex  opt,
char *  optarg 
)

Definition at line 150 of file feOpt.cc.

152 {
153  if (opt == FE_OPT_UNDEF) return "option undefined";
154 
155  if (feOptSpec[opt].type != feOptUntyped)
156  {
157  if (feOptSpec[opt].type != feOptString)
158  {
159  if (optarg != NULL)
160  {
161  errno = 0;
162  feOptSpec[opt].value = (void*) strtol(optarg, NULL, 10);
163  if (errno) return "invalid integer argument";
164  }
165  else
166  {
167  feOptSpec[opt].value = (void*) 0;
168  }
169  }
170  else
171  {
172  assume(feOptSpec[opt].type == feOptString);
173  if (feOptSpec[opt].set && feOptSpec[opt].value != NULL)
174  omFree(feOptSpec[opt].value);
175  if (optarg != NULL)
176  feOptSpec[opt].value = omStrDup(optarg);
177  else
178  feOptSpec[opt].value = NULL;
179  feOptSpec[opt].set = 1;
180  }
181  }
182  return feOptAction(opt);

◆ feSetOptValue() [2/2]

const char* feSetOptValue ( feOptIndex  opt,
int  optarg 
)

Definition at line 184 of file feOpt.cc.

186 {
187  if (opt == FE_OPT_UNDEF) return "option undefined";
188 
189  if (feOptSpec[opt].type != feOptUntyped)
190  {
191  if (feOptSpec[opt].type == feOptString)
192  return "option value needs to be an integer";
193 
194  feOptSpec[opt].value = (void*)(long) optarg;
195  }
196  return feOptAction(opt);

Variable Documentation

◆ SHORT_OPTS_STRING

const char SHORT_OPTS_STRING[] = "bdhpqstvxec:r:u:"

Definition at line 25 of file feOpt.cc.

feOptAction
static const char * feOptAction(feOptIndex opt)
Definition: feOpt.cc:198
FALSE
#define FALSE
Definition: auxiliary.h:96
fe_fgets_dummy
char * fe_fgets_dummy(const char *, char *, int)
Definition: feread.cc:451
versionString
char * versionString()
Definition: misc_ip.cc:784
omFree
#define omFree(addr)
Definition: omAllocDecl.h:259
VERSION
#define VERSION
Definition: mod2.h:17
fe_option::val
int val
Definition: fegetopt.h:88
feOptIndex
feOptIndex
Definition: feOptGen.h:14
SetMinDisplayTime
void SetMinDisplayTime(double mtime)
Definition: timer.cc:26
feOptUntyped
Definition: fegetopt.h:77
LONG_OPTION_RETURN
#define LONG_OPTION_RETURN
Definition: feOptTab.h:4
omStrDup
#define omStrDup(s)
Definition: omAllocDecl.h:261
V_LOAD_LIB
#define V_LOAD_LIB
Definition: options.h:45
mintime
STATIC_VAR double mintime
Definition: timer.cc:19
fe_fgets_stdin
char *(* fe_fgets_stdin)(const char *pr, char *s, int size)
Definition: feread.cc:34
siRandomStart
VAR int siRandomStart
Definition: cntrlc.cc:96
feOptDumpVersionTuple
void feOptDumpVersionTuple(void)
Definition: feOpt.cc:402
fe_option::set
int set
Definition: fegetopt.h:94
factoryseed
void factoryseed(int s)
random seed initializer
Definition: cf_random.cc:176
fe_fgets
char * fe_fgets(const char *pr, char *s, int size)
Definition: feread.cc:310
TRUE
#define TRUE
Definition: auxiliary.h:100
i
int i
Definition: cfEzgcd.cc:125
Sy_bit
#define Sy_bit(x)
Definition: options.h:30
siSeed
VAR int siSeed
Definition: sirandom.c:30
fe_option::arg_name
const char * arg_name
Definition: fegetopt.h:90
traceit
EXTERN_VAR int traceit
Definition: reporter.h:23
fe_option::type
feOptType type
Definition: fegetopt.h:92
help
#define help
Definition: libparse.cc:1229
sdb_flags
VAR int sdb_flags
Definition: sdb.cc:30
feResource
static char * feResource(feResourceConfig config, int warn)
Definition: feResource.cc:254
feArgv0
VAR char * feArgv0
Definition: feResource.cc:19
feWarn
VAR BOOLEAN feWarn
Definition: reporter.cc:48
feOut
VAR BOOLEAN feOut
Definition: reporter.cc:49
Print
#define Print
Definition: emacs.cc:79
si_echo
VAR int si_echo
Definition: febase.cc:34
FE_OPT_UNDEF
Definition: feOptGen.h:14
name
char name(const Variable &v)
Definition: factory.h:180
assume
#define assume(x)
Definition: mod2.h:384
NULL
#define NULL
Definition: omList.c:11
fe_option::value
void * value
Definition: fegetopt.h:93
feOptSpec
EXTERN_VAR struct fe_option feOptSpec[]
Definition: feOpt.h:16
Warn
#define Warn
Definition: emacs.cc:76
s
const CanonicalForm int s
Definition: facAbsFact.cc:55
SING_NDEBUG
#define SING_NDEBUG
Definition: factoryconf.h:258
SetTimerResolution
void SetTimerResolution(int res)
Definition: timer.cc:21
fe_option::has_arg
int has_arg
Definition: fegetopt.h:87
feOptHelp
void feOptHelp(const char *name)
Definition: feOpt.cc:351
feHelpBrowser
const char * feHelpBrowser(char *which, int warn)
Definition: fehelp.cc:244
si_opt_2
VAR unsigned si_opt_2
Definition: options.c:6
feOptString
Definition: fegetopt.h:77