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