Annotation of OpenXM/src/kan96xx/Kan/option.c, Revision 1.4
1.4 ! takayama 1: /* $OpenXM: OpenXM/src/kan96xx/Kan/option.c,v 1.3 2000/02/24 00:27:12 takayama Exp $ */
1.1 maekawa 2: #include <stdio.h>
3: #include "datatype.h"
4: #include "stackm.h"
5: #include "extern.h"
6: #include "gradedset.h"
7: #include "kclass.h"
8: #include "lookup.h"
9: #include <signal.h>
10:
11: extern void ctrlC();
12:
13:
14: struct object KsystemVariable(ob)
1.4 ! takayama 15: struct object ob; /* Sarray */
1.1 maekawa 16: {
17: /* Don't forget to write the keys in usage.c */
18: extern int PrintDollar;
19: extern int Wrap;
20: extern struct ring *CurrentRingp;
21: extern int Verbose;
22: extern int UseCriterion1;
23: extern int UseCriterion2B;
24: extern int ReduceLowerTerms;
25: extern int CheckHomogenization;
26: extern int Homogenize;
27: extern int Statistics;
1.3 takayama 28: extern int AutoReduce;
1.1 maekawa 29: extern int Osp;
30: extern struct operandStack StandardStack;
31: extern struct operandStack ErrorStack;
32: extern int ErrorMessageMode;
33: extern int WarningMessageMode;
34: extern int CatchCtrlC;
35: extern int Strict;
36: extern struct context *CurrentContextp;
37: extern struct context *PrimitiveContextp;
38: extern int Strict2;
39: extern int SigIgn;
40: extern int KSPushEnvMode;
41: extern int KanGBmessage;
42: extern int TimerOn;
43: extern int OutputStyle;
44: extern int Sugar;
45: extern int Homogenize_vec;
46: extern int CmoDMSOutputOption;
47: extern int DebugReductionRed; /* hidden option */
48: extern char *VersionString;
49: extern int AvoidTheSameRing;
1.2 takayama 50: extern char *LeftBracket;
51: extern char *RightBracket;
1.4 ! takayama 52: extern int SecureMode;
1.1 maekawa 53:
54: int n,i;
55: struct object ob1,ob2,ob3,ob4;
56: struct object rob = NullObject;
57: switch (getoaSize(ob)) {
58: case 1: /* get the value */
59: ob1 = getoa(ob,0);
60: switch(ob1.tag) {
61: case Sdollar:
62: if (strcmp(ob1.lc.str,"PrintDollar") == 0) {
1.4 ! takayama 63: rob = KpoInteger(PrintDollar);
1.1 maekawa 64: }else if (strcmp(ob1.lc.str,"Wrap") == 0) {
1.4 ! takayama 65: rob = KpoInteger(Wrap);
1.1 maekawa 66: }else if (strcmp(ob1.lc.str,"P") == 0) {
1.4 ! takayama 67: rob = KpoInteger(CurrentRingp->p);
1.1 maekawa 68: }else if (strcmp(ob1.lc.str,"N") == 0) {
1.4 ! takayama 69: rob = KpoInteger(CurrentRingp->n);
1.1 maekawa 70: }else if (strcmp(ob1.lc.str,"NN") == 0) {
1.4 ! takayama 71: rob = KpoInteger(CurrentRingp->nn);
1.1 maekawa 72: }else if (strcmp(ob1.lc.str,"M") == 0) {
1.4 ! takayama 73: rob = KpoInteger(CurrentRingp->m);
1.1 maekawa 74: }else if (strcmp(ob1.lc.str,"MM") == 0) {
1.4 ! takayama 75: rob = KpoInteger(CurrentRingp->mm);
1.1 maekawa 76: }else if (strcmp(ob1.lc.str,"L") == 0) {
1.4 ! takayama 77: rob = KpoInteger(CurrentRingp->l);
1.1 maekawa 78: }else if (strcmp(ob1.lc.str,"LL") == 0) {
1.4 ! takayama 79: rob = KpoInteger(CurrentRingp->ll);
1.1 maekawa 80: }else if (strcmp(ob1.lc.str,"C") == 0) {
1.4 ! takayama 81: rob = KpoInteger(CurrentRingp->c);
1.1 maekawa 82: }else if (strcmp(ob1.lc.str,"CC") == 0) {
1.4 ! takayama 83: rob = KpoInteger(CurrentRingp->cc);
1.1 maekawa 84: }else if (strcmp(ob1.lc.str,"CurrentRingp") == 0) {
1.4 ! takayama 85: rob = KpoRingp(CurrentRingp);
1.1 maekawa 86: }else if (strcmp(ob1.lc.str,"Verbose") == 0) {
1.4 ! takayama 87: rob = KpoInteger(Verbose);
1.1 maekawa 88: }else if (strcmp(ob1.lc.str,"UseCriterion1") == 0) {
1.4 ! takayama 89: rob = KpoInteger(UseCriterion1);
1.1 maekawa 90: }else if (strcmp(ob1.lc.str,"UseCriterion2B") == 0) {
1.4 ! takayama 91: rob = KpoInteger(UseCriterion2B);
1.1 maekawa 92: }else if (strcmp(ob1.lc.str,"ReduceLowerTerms") == 0) {
1.4 ! takayama 93: rob = KpoInteger(ReduceLowerTerms);
1.1 maekawa 94: }else if (strcmp(ob1.lc.str,"CheckHomogenization") == 0) {
1.4 ! takayama 95: rob = KpoInteger(CheckHomogenization);
1.1 maekawa 96: }else if (strcmp(ob1.lc.str,"Homogenize") == 0) {
1.4 ! takayama 97: rob = KpoInteger(Homogenize);
1.1 maekawa 98: }else if (strcmp(ob1.lc.str,"Statistics") == 0) {
1.4 ! takayama 99: rob = KpoInteger(Statistics);
1.3 takayama 100: }else if (strcmp(ob1.lc.str,"AutoReduce") == 0) {
1.4 ! takayama 101: rob = KpoInteger(AutoReduce);
1.1 maekawa 102: }else if (strcmp(ob1.lc.str,"StackPointer") == 0) {
1.4 ! takayama 103: rob = KpoInteger(Osp);
1.1 maekawa 104: }else if (strcmp(ob1.lc.str,"StandardOperandStack") == 0) {
1.4 ! takayama 105: rob.tag = Sclass;
! 106: rob.lc.ival = CLASSNAME_OPERANDSTACK;
! 107: rob.rc.voidp = &StandardStack;
1.1 maekawa 108: }else if (strcmp(ob1.lc.str,"ErrorStack") == 0) {
1.4 ! takayama 109: rob.tag = Sclass;
! 110: rob.lc.ival = CLASSNAME_OPERANDSTACK;
! 111: rob.rc.voidp = &ErrorStack;
1.1 maekawa 112: }else if (strcmp(ob1.lc.str,"ErrorMessageMode") == 0) {
1.4 ! takayama 113: rob = KpoInteger(ErrorMessageMode);
1.1 maekawa 114: }else if (strcmp(ob1.lc.str,"WarningMessageMode") == 0) {
1.4 ! takayama 115: rob = KpoInteger(WarningMessageMode);
1.1 maekawa 116: }else if (strcmp(ob1.lc.str,"CatchCtrlC") == 0) {
1.4 ! takayama 117: rob = KpoInteger(CatchCtrlC);
! 118: /* If you catch ctrlc in KSexecuteString. */
1.1 maekawa 119: }else if (strcmp(ob1.lc.str,"Strict") == 0) {
1.4 ! takayama 120: rob = KpoInteger(Strict);
1.1 maekawa 121: }else if (strcmp(ob1.lc.str,"CurrentContextp") == 0) {
1.4 ! takayama 122: rob.tag = Sclass;
! 123: rob.lc.ival = CLASSNAME_CONTEXT;
! 124: rob.rc.voidp = CurrentContextp;
1.1 maekawa 125: }else if (strcmp(ob1.lc.str,"PrimitiveContextp") == 0) {
1.4 ! takayama 126: rob.tag = Sclass;
! 127: rob.lc.ival = CLASSNAME_CONTEXT;
! 128: rob.rc.voidp = PrimitiveContextp;
1.1 maekawa 129: }else if (strcmp(ob1.lc.str,"NullContextp") == 0) {
1.4 ! takayama 130: rob.tag = Sclass;
! 131: rob.lc.ival = CLASSNAME_CONTEXT;
! 132: rob.rc.voidp = (struct context *)NULL;
1.1 maekawa 133: }else if (strcmp(ob1.lc.str,"Strict2") == 0) {
1.4 ! takayama 134: rob = KpoInteger(Strict2);
1.1 maekawa 135: }else if (strcmp(ob1.lc.str,"SigIgn") == 0) {
1.4 ! takayama 136: rob = KpoInteger(SigIgn);
1.1 maekawa 137: }else if (strcmp(ob1.lc.str,"KSPushEnvMode") == 0) {
1.4 ! takayama 138: rob = KpoInteger(KSPushEnvMode);
1.1 maekawa 139: }else if (strcmp(ob1.lc.str,"KanGBmessage") == 0) {
1.4 ! takayama 140: rob = KpoInteger(KanGBmessage);
1.1 maekawa 141: }else if (strcmp(ob1.lc.str,"TimerOn") == 0) {
1.4 ! takayama 142: rob = KpoInteger(TimerOn);
1.1 maekawa 143: }else if (strcmp(ob1.lc.str,"orderMatrix") == 0) {
1.4 ! takayama 144: rob = KgetOrderMatrixOfCurrentRing();
1.1 maekawa 145: }else if (strcmp(ob1.lc.str,"gbListTower") == 0) {
1.4 ! takayama 146: if (CurrentRingp->gbListTower == NULL) rob = NullObject;
! 147: else rob = *((struct object *)(CurrentRingp->gbListTower));
1.1 maekawa 148: }else if (strcmp(ob1.lc.str,"outputOrder") == 0) {
1.4 ! takayama 149: n = CurrentRingp->n;
! 150: ob1 = newObjectArray(n*2);
! 151: for (i=0; i<2*n; i++) {
! 152: putoa(ob1,i,KpoInteger(CurrentRingp->outputOrder[i]));
! 153: }
! 154: rob = ob1;
1.1 maekawa 155: }else if (strcmp(ob1.lc.str,"multSymbol") == 0) {
1.4 ! takayama 156: rob = KpoInteger(OutputStyle);
1.1 maekawa 157: }else if (strcmp(ob1.lc.str,"Sugar") == 0) {
1.4 ! takayama 158: rob = KpoInteger(Sugar);
1.1 maekawa 159: }else if (strcmp(ob1.lc.str,"Homogenize_vec") == 0) {
1.4 ! takayama 160: rob = KpoInteger(Homogenize_vec);
1.1 maekawa 161: }else if (strcmp(ob1.lc.str,"Schreyer")==0) {
1.4 ! takayama 162: rob = KpoInteger( CurrentRingp->schreyer );
1.1 maekawa 163: }else if (strcmp(ob1.lc.str,"ringName")==0) {
1.4 ! takayama 164: rob = KpoString( CurrentRingp->name );
1.1 maekawa 165: }else if (strcmp(ob1.lc.str,"CmoDMSOutputOption")==0) {
1.4 ! takayama 166: rob = KpoInteger( CmoDMSOutputOption );
1.1 maekawa 167: }else if (strcmp(ob1.lc.str,"Version")==0) {
1.4 ! takayama 168: rob = KpoString(VersionString);
1.1 maekawa 169: }else if (strcmp(ob1.lc.str,"RingStack")==0) {
1.4 ! takayama 170: KsetUpRing(NullObject,NullObject,NullObject,NullObject,NullObject);
! 171: rob = KSpop(); /* This is exceptional style */
1.1 maekawa 172: }else if (strcmp(ob1.lc.str,"AvoidTheSameRing")==0) {
1.4 ! takayama 173: rob = KpoInteger(AvoidTheSameRing);
1.2 takayama 174: }else if (strcmp(ob1.lc.str,"LeftBracket")==0) {
1.4 ! takayama 175: rob = KpoString(LeftBracket);
1.2 takayama 176: }else if (strcmp(ob1.lc.str,"RightBracket")==0) {
1.4 ! takayama 177: rob = KpoString(RightBracket);
! 178: }else if (strcmp(ob1.lc.str,"SecureMode")==0) {
! 179: rob = KpoInteger(SecureMode);
1.1 maekawa 180: }else{
1.4 ! takayama 181: warningKan("KsystemVariable():Unknown key word.\n");
1.1 maekawa 182: }
183: break;
184: default:
185: warningKan("KsystemVariable():Invalid argument\n");
186: break;
187: }
188: break;
189: case 2: /* set value */
190: ob1 = getoa(ob,0);
191: ob2 = getoa(ob,1);
192: switch (Lookup[ob1.tag][ob2.tag]) {
193: case SdollarSinteger:
194: if (strcmp(ob1.lc.str,"PrintDollar") == 0) {
1.4 ! takayama 195: PrintDollar = ob2.lc.ival;
! 196: rob = KpoInteger(PrintDollar);
1.1 maekawa 197: }else if (strcmp(ob1.lc.str,"Wrap") == 0) {
1.4 ! takayama 198: Wrap = ob2.lc.ival;
! 199: rob = KpoInteger(Wrap);
! 200: /*}else if (strcmp(ob1.lc.str,"P") == 0) {
! 201: P = ob2.lc.ival; Q should be set here too.
! 202: CurrentRingp->p = P;
! 203: rob = KpoInteger(P); */
1.1 maekawa 204: }else if (strcmp(ob1.lc.str,"NN") == 0) {
1.4 ! takayama 205: if (ob2.lc.ival <= CurrentRingp->n && ob2.lc.ival >= CurrentRingp->m) {
! 206: CurrentRingp->nn = ob2.lc.ival;
! 207: }else{
! 208: warningKan("New value of NN is out of bound.");
! 209: }
! 210: rob = KpoInteger(ob1.lc.ival);
1.1 maekawa 211: }else if (strcmp(ob1.lc.str,"Verbose") == 0) {
1.4 ! takayama 212: Verbose = ob2.lc.ival;
! 213: rob = KpoInteger(Verbose);
1.1 maekawa 214: }else if (strcmp(ob1.lc.str,"UseCriterion1") == 0) {
1.4 ! takayama 215: UseCriterion1 = ob2.lc.ival;
! 216: rob = KpoInteger(UseCriterion1);
1.1 maekawa 217: }else if (strcmp(ob1.lc.str,"UseCriterion2B") == 0) {
1.4 ! takayama 218: UseCriterion2B = ob2.lc.ival;
! 219: rob = KpoInteger(UseCriterion2B);
1.1 maekawa 220: }else if (strcmp(ob1.lc.str,"ReduceLowerTerms") == 0) {
1.4 ! takayama 221: ReduceLowerTerms = ob2.lc.ival;
! 222: rob = KpoInteger(ReduceLowerTerms);
1.1 maekawa 223: }else if (strcmp(ob1.lc.str,"CheckHomogenization") == 0) {
1.4 ! takayama 224: CheckHomogenization = ob2.lc.ival;
! 225: rob = KpoInteger(CheckHomogenization);
1.1 maekawa 226: }else if (strcmp(ob1.lc.str,"Homogenize") == 0) {
1.4 ! takayama 227: Homogenize = ob2.lc.ival;
! 228: rob = KpoInteger(Homogenize);
1.1 maekawa 229: }else if (strcmp(ob1.lc.str,"Statistics") == 0) {
1.4 ! takayama 230: Statistics = ob2.lc.ival;
! 231: rob = KpoInteger(Statistics);
1.3 takayama 232: }else if (strcmp(ob1.lc.str,"AutoReduce") == 0) {
1.4 ! takayama 233: AutoReduce = ob2.lc.ival;
! 234: rob = KpoInteger(AutoReduce);
1.1 maekawa 235: }else if (strcmp(ob1.lc.str,"ErrorMessageMode") == 0) {
1.4 ! takayama 236: ErrorMessageMode = ob2.lc.ival;
! 237: rob = KpoInteger(ErrorMessageMode);
1.1 maekawa 238: }else if (strcmp(ob1.lc.str,"WarningMessageMode") == 0) {
1.4 ! takayama 239: WarningMessageMode = ob2.lc.ival;
! 240: rob = KpoInteger(WarningMessageMode);
1.1 maekawa 241: }else if (strcmp(ob1.lc.str,"CatchCtrlC") == 0) {
1.4 ! takayama 242: CatchCtrlC = ob2.lc.ival;
! 243: rob = KpoInteger(CatchCtrlC);
1.1 maekawa 244: }else if (strcmp(ob1.lc.str,"Strict") == 0) {
1.4 ! takayama 245: Strict = ob2.lc.ival;
! 246: rob = KpoInteger(Strict);
1.1 maekawa 247: }else if (strcmp(ob1.lc.str,"Strict2") == 0) {
1.4 ! takayama 248: Strict2 = ob2.lc.ival;
! 249: rob = KpoInteger(Strict2);
1.1 maekawa 250: }else if (strcmp(ob1.lc.str,"SigIgn") == 0) {
1.4 ! takayama 251: SigIgn = ob2.lc.ival;
! 252: if (SigIgn) signal(SIGINT,SIG_IGN);
! 253: else signal(SIGINT,ctrlC);
! 254: rob = KpoInteger(SigIgn);
1.1 maekawa 255: }else if (strcmp(ob1.lc.str,"KSPushEnvMode") == 0) {
1.4 ! takayama 256: KSPushEnvMode = ob2.lc.ival;
! 257: rob = KpoInteger(KSPushEnvMode);
1.1 maekawa 258: }else if (strcmp(ob1.lc.str,"KanGBmessage") == 0) {
1.4 ! takayama 259: KanGBmessage = ob2.lc.ival;
! 260: rob = KpoInteger(KanGBmessage);
1.1 maekawa 261: }else if (strcmp(ob1.lc.str,"TimerOn") == 0) {
1.4 ! takayama 262: TimerOn = ob2.lc.ival;
! 263: rob = KpoInteger(TimerOn);
1.1 maekawa 264: }else if (strcmp(ob1.lc.str,"multSymbol") == 0) {
1.4 ! takayama 265: OutputStyle = KopInteger(ob2);
! 266: rob = KpoInteger(OutputStyle);
1.1 maekawa 267: }else if (strcmp(ob1.lc.str,"Sugar") == 0) {
1.4 ! takayama 268: Sugar = KopInteger(ob2);
! 269: if (Sugar && ReduceLowerTerms) {
! 270: ReduceLowerTerms = 0;
! 271: warningKan("ReduceLowerTerms is automatically set to 0, because Sugar = 1.");
! 272: /* You cannot use both ReduceLowerTerms and sugar.
! 273: See gb.c, reduction_sugar. */
! 274: }
! 275: rob = KpoInteger(Sugar);
1.1 maekawa 276: }else if (strcmp(ob1.lc.str,"Homogenize_vec") == 0) {
1.4 ! takayama 277: Homogenize_vec = KopInteger(ob2);
! 278: rob = KpoInteger(Homogenize_vec);
1.1 maekawa 279: }else if (strcmp(ob1.lc.str,"CmoDMSOutputOption") == 0) {
1.4 ! takayama 280: CmoDMSOutputOption = KopInteger(ob2);
! 281: rob = KpoInteger(CmoDMSOutputOption);
1.1 maekawa 282: }else if (strcmp(ob1.lc.str,"DebugReductionRed") == 0) {
1.4 ! takayama 283: DebugReductionRed = KopInteger(ob2);
! 284: rob = KpoInteger(DebugReductionRed);
1.1 maekawa 285: }else if (strcmp(ob1.lc.str,"AvoidTheSameRing") == 0) {
1.4 ! takayama 286: AvoidTheSameRing = KopInteger(ob2);
! 287: rob = KpoInteger(AvoidTheSameRing);
! 288: }else if (strcmp(ob1.lc.str,"SecureMode") == 0) {
! 289: if (KopInteger(ob2) >= SecureMode) {
! 290: SecureMode = KopInteger(ob2);
! 291: }else{
! 292: errorKan1("%s\n","You cannot weaken the security level.");
! 293: }
! 294: rob = KpoInteger(SecureMode);
1.1 maekawa 295: }else{
1.4 ! takayama 296: warningKan("KsystemVariable():Unknown key word.\n");
1.1 maekawa 297: }
298: break;
299: case SdollarSdollar:
300: if (strcmp(ob1.lc.str,"ringName") == 0) {
1.4 ! takayama 301: CurrentRingp->name = KopString(ob2);
! 302: rob = KpoString(CurrentRingp->name);
1.2 takayama 303: }else if (strcmp(ob1.lc.str,"LeftBracket") == 0) {
1.4 ! takayama 304: LeftBracket = KopString(ob2);
! 305: rob = KpoString(LeftBracket);
1.2 takayama 306: }else if (strcmp(ob1.lc.str,"RightBracket") == 0) {
1.4 ! takayama 307: RightBracket = KopString(ob2);
! 308: rob = KpoString(RightBracket);
1.1 maekawa 309: }else{
1.4 ! takayama 310: warningKan("KsystemVariable():Unknown key word.\n");
1.1 maekawa 311: }
312: break;
313: case SdollarSring:
314: if (strcmp(ob1.lc.str,"CurrentRingp") == 0) {
1.4 ! takayama 315: CurrentRingp = ob2.lc.ringp;
! 316: rob = KpoRingp(CurrentRingp);
1.1 maekawa 317: }else{
1.4 ! takayama 318: warningKan("KsystemVariable():Unknown key word.\n");
1.1 maekawa 319: }
320: break;
321: case SdollarSclass:
322: if (strcmp(ob1.lc.str,"PrimitiveContextp") == 0) {
1.4 ! takayama 323: if (ectag(ob2) == CLASSNAME_CONTEXT) {
! 324: PrimitiveContextp = (struct context *)ob2.rc.voidp;
! 325: rob = ob2;
! 326: }else{
! 327: warningKan("The second argument must be class.context.\n");
! 328: rob = NullObject;
! 329: }
1.1 maekawa 330: }else {
1.4 ! takayama 331: warningKan("KsystemVariable():Unknown key word.\n");
1.1 maekawa 332: }
333: break;
334: case SdollarSlist:
335: if (strcmp(ob1.lc.str,"gbListTower") == 0) {
1.4 ! takayama 336: if (AvoidTheSameRing)
! 337: warningKan("Changing gbListTower may cause a trouble under AvoidTheSameRing == 1.");
! 338: CurrentRingp->gbListTower = newObject();
! 339: *((struct object *)(CurrentRingp->gbListTower)) = ob2;
! 340: rob = *((struct object *)(CurrentRingp->gbListTower));
1.1 maekawa 341: }else {
1.4 ! takayama 342: warningKan("KsystemVariable(): Unknown key word to set value.\n");
1.1 maekawa 343: }
344: break;
345: case SdollarSarray:
346: if (strcmp(ob1.lc.str,"outputOrder") == 0) {
1.4 ! takayama 347: rob = KsetOutputOrder(ob2,CurrentRingp);
1.1 maekawa 348: }else if (strcmp(ob1.lc.str,"variableNames") == 0) {
1.4 ! takayama 349: rob = KsetVariableNames(ob2,CurrentRingp);
1.1 maekawa 350: }else {
1.4 ! takayama 351: warningKan("KsystemVariable(): Unknown key word to set value.\n");
1.1 maekawa 352: }
353: break;
354: default:
355: warningKan("KsystemVariable():Invalid argument.\n");
356: }
357: break;
358: case 3:
359: ob1 = getoa(ob,0); ob2 = getoa(ob,1); ob3 = getoa(ob,2);
360: switch(Lookup[ob1.tag][ob2.tag]) {
361: case SdollarSdollar:
362: if (strcmp(ob2.lc.str,"var") == 0) {
1.4 ! takayama 363: if (strcmp(ob1.lc.str,"x")==0) {
! 364: if (ob3.tag != Sinteger) {
! 365: warningKan("[$x$ $var$ ? ] The 3rd argument must be integer.");
! 366: break;
! 367: }
! 368: if (ob3.lc.ival >= 0 && ob3.lc.ival < CurrentRingp->n) {
! 369: rob = KpoString(CurrentRingp->x[ob3.lc.ival]);
! 370: }else{
! 371: warningKan("[$x$ $var$ ? ] The 3rd argument is out of range.");
! 372: break;
! 373: }
! 374: }else if (strcmp(ob1.lc.str,"D")==0) {
! 375: if (ob3.tag != Sinteger) {
! 376: warningKan("[$D$ $var$ ? ] The 3rd argument must be integer.");
! 377: break;
! 378: }
! 379: if (ob3.lc.ival >= 0 && ob3.lc.ival < CurrentRingp->n) {
! 380: rob = KpoString(CurrentRingp->D[ob3.lc.ival]);
! 381: }else{
! 382: warningKan("[$D$ $var$ ? ] The 3rd argument is out of range.");
! 383: break;
! 384: }
! 385: }
1.1 maekawa 386: }else{
1.4 ! takayama 387: warningKan("KsystemVariable(): Invalid argument.\n");
1.1 maekawa 388: }
389: break;
390: default:
391: warningKan("KsystemVariable(): Invalid argument.\n");
392: break;
393: }
394: break;
395: default:
396: warningKan("KsystemVariable():Invalid argument.\n");
397: break;
398: }
399: return(rob);
400: }
401:
402: warningOption(str)
1.4 ! takayama 403: char *str;
1.1 maekawa 404: {
405: fprintf(stderr,"Warning(option.c): %s\n",str);
406: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>