| version 1.9, 2003/07/29 08:36:40 | 
version 1.21, 2020/10/06 11:33:46 | 
 | 
 | 
|  /* $OpenXM: OpenXM/src/kan96xx/Kan/option.c,v 1.8 2003/07/17 23:37:02 takayama Exp $ */ | 
 /* $OpenXM: OpenXM/src/kan96xx/Kan/option.c,v 1.20 2016/03/31 05:27:34 takayama Exp $ */ | 
|  #include <stdio.h> | 
 #include <stdio.h> | 
|   | 
 #include <string.h> | 
|  #include "datatype.h" | 
 #include "datatype.h" | 
|  #include "stackm.h" | 
 #include "stackm.h" | 
|  #include "extern.h" | 
 #include "extern.h" | 
 | 
 | 
|  #include "kclass.h" | 
 #include "kclass.h" | 
|  #include "lookup.h" | 
 #include "lookup.h" | 
|  #include <signal.h> | 
 #include <signal.h> | 
|   | 
 #include "mysig.h" | 
|   | 
  | 
|  extern void ctrlC(); | 
 extern void ctrlC(); | 
|   | 
 void warningOption(char *str); | 
|   | 
  | 
|   | 
  | 
|  struct object KsystemVariable(ob) | 
 struct object KsystemVariable(ob) | 
| Line 17  struct object KsystemVariable(ob) | 
 
  | 
| Line 20  struct object KsystemVariable(ob) | 
 
 
 | 
|    /* Don't forget to write the keys in usage.c */ | 
   /* Don't forget to write the keys in usage.c */ | 
|    extern int PrintDollar; | 
   extern int PrintDollar; | 
|    extern int Wrap; | 
   extern int Wrap; | 
|   | 
   extern int COutput; | 
|    extern struct ring *CurrentRingp; | 
   extern struct ring *CurrentRingp; | 
|    extern int Verbose; | 
   extern int Verbose; | 
|    extern int UseCriterion1; | 
   extern int UseCriterion1; | 
| Line 53  struct object KsystemVariable(ob) | 
 
  | 
| Line 57  struct object KsystemVariable(ob) | 
 
 
 | 
|    extern int SecureMode; | 
   extern int SecureMode; | 
|    extern int Ecart; | 
   extern int Ecart; | 
|    extern int EcartAutomaticHomogenization; | 
   extern int EcartAutomaticHomogenization; | 
|   | 
   extern int TraceLift; | 
|   | 
   extern int DoCancel; | 
|   | 
   extern int DebugContentReduction; | 
|   | 
   extern int QuoteMode; | 
|   | 
   extern int RestrictedMode, RestrictedMode_saved; | 
|   | 
   extern int UseDsmall; | 
|   | 
  | 
|    int n,i; | 
   int n,i; | 
|    struct object ob1,ob2,ob3,ob4; | 
   struct object ob1 = OINIT; | 
|   | 
   struct object ob2 = OINIT; | 
|   | 
   struct object ob3 = OINIT; | 
|   | 
   struct object ob4 = OINIT; | 
|    struct object rob = NullObject; | 
   struct object rob = NullObject; | 
|    switch (getoaSize(ob)) { | 
   switch (getoaSize(ob)) { | 
|    case 1:   /* get the value */ | 
   case 1:   /* get the value */ | 
| Line 66  struct object KsystemVariable(ob) | 
 
  | 
| Line 79  struct object KsystemVariable(ob) | 
 
 
 | 
|          rob = KpoInteger(PrintDollar); | 
         rob = KpoInteger(PrintDollar); | 
|        }else if (strcmp(ob1.lc.str,"Wrap") == 0) { | 
       }else if (strcmp(ob1.lc.str,"Wrap") == 0) { | 
|          rob = KpoInteger(Wrap); | 
         rob = KpoInteger(Wrap); | 
|   | 
       }else if (strcmp(ob1.lc.str,"COutput") == 0) { | 
|   | 
         rob = KpoInteger(COutput); | 
|        }else if (strcmp(ob1.lc.str,"P") == 0) { | 
       }else if (strcmp(ob1.lc.str,"P") == 0) { | 
|          rob = KpoInteger(CurrentRingp->p); | 
         rob = KpoInteger(CurrentRingp->p); | 
|        }else if (strcmp(ob1.lc.str,"N") == 0) { | 
       }else if (strcmp(ob1.lc.str,"N") == 0) { | 
| Line 180  struct object KsystemVariable(ob) | 
 
  | 
| Line 195  struct object KsystemVariable(ob) | 
 
 
 | 
|          rob = KpoString(RightBracket); | 
         rob = KpoString(RightBracket); | 
|        }else if (strcmp(ob1.lc.str,"SecureMode")==0) { | 
       }else if (strcmp(ob1.lc.str,"SecureMode")==0) { | 
|          rob = KpoInteger(SecureMode); | 
         rob = KpoInteger(SecureMode); | 
|   | 
       }else if (strcmp(ob1.lc.str,"RestrictedMode")==0) { | 
|   | 
         rob = KpoInteger(RestrictedMode); | 
|        }else if (strcmp(ob1.lc.str,"Ecart")==0) { | 
       }else if (strcmp(ob1.lc.str,"Ecart")==0) { | 
|          rob = KpoInteger(Ecart); | 
         rob = KpoInteger(Ecart); | 
|        }else if (strcmp(ob1.lc.str,"EcartAutomaticHomogenization")==0) { | 
       }else if (strcmp(ob1.lc.str,"EcartAutomaticHomogenization")==0) { | 
|          rob = KpoInteger(EcartAutomaticHomogenization); | 
         rob = KpoInteger(EcartAutomaticHomogenization); | 
|   | 
       }else if (strcmp(ob1.lc.str,"TraceLift")==0) { | 
|   | 
         rob = KpoInteger(TraceLift); | 
|   | 
       }else if (strcmp(ob1.lc.str,"DoCancel")==0) { | 
|   | 
         rob = KpoInteger(DoCancel); | 
|   | 
       }else if (strcmp(ob1.lc.str,"DebugContentReduction")==0) { | 
|   | 
         rob = KpoInteger(DebugContentReduction); | 
|   | 
       }else if (strcmp(ob1.lc.str,"QuoteMode")==0) { | 
|   | 
         rob = KpoInteger(QuoteMode); | 
|   | 
       }else if (strcmp(ob1.lc.str,"UseDsmall")==0) { | 
|   | 
         rob = KpoInteger(UseDsmall); | 
|        }else{ | 
       }else{ | 
|          warningKan("KsystemVariable():Unknown key word.\n"); | 
         warningKan("KsystemVariable():Unknown key word.\n"); | 
|        } | 
       } | 
| Line 208  struct object KsystemVariable(ob) | 
 
  | 
| Line 235  struct object KsystemVariable(ob) | 
 
 
 | 
|            P = ob2.lc.ival;  Q should be set here too. | 
           P = ob2.lc.ival;  Q should be set here too. | 
|            CurrentRingp->p = P; | 
           CurrentRingp->p = P; | 
|            rob = KpoInteger(P); */ | 
           rob = KpoInteger(P); */ | 
|   | 
       }else if (strcmp(ob1.lc.str,"COutput") == 0) { | 
|   | 
         COutput = ob2.lc.ival; | 
|   | 
         rob = KpoInteger(COutput); | 
|        }else if (strcmp(ob1.lc.str,"NN") == 0) { | 
       }else if (strcmp(ob1.lc.str,"NN") == 0) { | 
|          if (ob2.lc.ival <= CurrentRingp->n && ob2.lc.ival >= CurrentRingp->m) { | 
         if (ob2.lc.ival <= CurrentRingp->n && ob2.lc.ival >= CurrentRingp->m) { | 
|            CurrentRingp->nn = ob2.lc.ival; | 
           CurrentRingp->nn = ob2.lc.ival; | 
| Line 256  struct object KsystemVariable(ob) | 
 
  | 
| Line 286  struct object KsystemVariable(ob) | 
 
 
 | 
|          rob = KpoInteger(Strict2); | 
         rob = KpoInteger(Strict2); | 
|        }else if (strcmp(ob1.lc.str,"SigIgn") == 0) { | 
       }else if (strcmp(ob1.lc.str,"SigIgn") == 0) { | 
|          SigIgn = ob2.lc.ival; | 
         SigIgn = ob2.lc.ival; | 
|          if (SigIgn) signal(SIGINT,SIG_IGN); | 
         if (SigIgn) mysignal(SIGINT,SIG_IGN); | 
|          else signal(SIGINT,ctrlC); | 
         else mysignal(SIGINT,ctrlC); | 
|          rob = KpoInteger(SigIgn); | 
         rob = KpoInteger(SigIgn); | 
|        }else if (strcmp(ob1.lc.str,"KSPushEnvMode") == 0) { | 
       }else if (strcmp(ob1.lc.str,"KSPushEnvMode") == 0) { | 
|          KSPushEnvMode = ob2.lc.ival; | 
         KSPushEnvMode = ob2.lc.ival; | 
| Line 302  struct object KsystemVariable(ob) | 
 
  | 
| Line 332  struct object KsystemVariable(ob) | 
 
 
 | 
|            errorKan1("%s\n","You cannot weaken the security level."); | 
           errorKan1("%s\n","You cannot weaken the security level."); | 
|          } | 
         } | 
|          rob = KpoInteger(SecureMode); | 
         rob = KpoInteger(SecureMode); | 
|   | 
       }else if (strcmp(ob1.lc.str,"RestrictedMode") == 0) { | 
|   | 
         if (KopInteger(ob2) >= RestrictedMode) { | 
|   | 
           RestrictedMode = KopInteger(ob2); | 
|   | 
           RestrictedMode_saved = RestrictedMode; | 
|   | 
         }else{ | 
|   | 
           errorKan1("%s\n","You cannot weaken the RestrictedMode level."); | 
|   | 
         } | 
|   | 
         rob = KpoInteger(RestrictedMode); | 
|        }else if (strcmp(ob1.lc.str,"Ecart") == 0) { | 
       }else if (strcmp(ob1.lc.str,"Ecart") == 0) { | 
|          Ecart = KopInteger(ob2); | 
         Ecart = KopInteger(ob2); | 
|          rob = KpoInteger(Ecart); | 
         rob = KpoInteger(Ecart); | 
|        }else if (strcmp(ob1.lc.str,"EcartAutomaticHomogenization") == 0) { | 
       }else if (strcmp(ob1.lc.str,"EcartAutomaticHomogenization") == 0) { | 
|          Ecart = KopInteger(ob2); | 
         EcartAutomaticHomogenization = KopInteger(ob2); | 
|          rob = KpoInteger(EcartAutomaticHomogenization); | 
         rob = KpoInteger(EcartAutomaticHomogenization); | 
|   | 
       }else if (strcmp(ob1.lc.str,"TraceLift") == 0) { | 
|   | 
         TraceLift = KopInteger(ob2); | 
|   | 
         rob = KpoInteger(TraceLift); | 
|   | 
       }else if (strcmp(ob1.lc.str,"DoCancel") == 0) { | 
|   | 
         DoCancel = KopInteger(ob2); | 
|   | 
         rob = KpoInteger(DoCancel); | 
|   | 
       }else if (strcmp(ob1.lc.str,"DebugContentReduction") == 0) { | 
|   | 
         DebugContentReduction = KopInteger(ob2); | 
|   | 
         rob = KpoInteger(DebugContentReduction); | 
|   | 
       }else if (strcmp(ob1.lc.str,"QuoteMode") == 0) { | 
|   | 
         QuoteMode = KopInteger(ob2); | 
|   | 
         rob = KpoInteger(QuoteMode); | 
|   | 
       }else if (strcmp(ob1.lc.str,"UseDsmall") == 0) { | 
|   | 
         UseDsmall = KopInteger(ob2); | 
|   | 
         rob = KpoInteger(UseDsmall); | 
|        }else{ | 
       }else{ | 
|          warningKan("KsystemVariable():Unknown key word.\n"); | 
         warningKan("KsystemVariable():Unknown key word.\n"); | 
|        } | 
       } | 
| Line 415  struct object KsystemVariable(ob) | 
 
  | 
| Line 468  struct object KsystemVariable(ob) | 
 
 
 | 
|    return(rob); | 
   return(rob); | 
|  } | 
 } | 
|   | 
  | 
|  warningOption(str) | 
 void warningOption(str) | 
|       char *str; | 
      char *str; | 
|  { | 
 { | 
|    fprintf(stderr,"Warning(option.c): %s\n",str); | 
   fprintf(stderr,"Warning(option.c): %s\n",str); |