globle int SaveFactsCommand( void *theEnv) { char *fileName; int numArgs, saveCode = LOCAL_SAVE; char *argument; DATA_OBJECT theValue; struct expr *theList = NULL; /*============================================*/ /* Check for the correct number of arguments. */ /*============================================*/ if ((numArgs = EnvArgCountCheck(theEnv,(char*)"save-facts",AT_LEAST,1)) == -1) return(FALSE); /*=================================================*/ /* Get the file name to which facts will be saved. */ /*=================================================*/ if ((fileName = GetFileName(theEnv,(char*)"save-facts",1)) == NULL) return(FALSE); /*=============================================================*/ /* If specified, the second argument to save-facts indicates */ /* whether just facts local to the current module or all facts */ /* visible to the current module will be saved. */ /*=============================================================*/ if (numArgs > 1) { if (EnvArgTypeCheck(theEnv,(char*)"save-facts",2,SYMBOL,&theValue) == FALSE) return(FALSE); argument = DOToString(theValue); if (strcmp(argument,"local") == 0) { saveCode = LOCAL_SAVE; } else if (strcmp(argument,"visible") == 0) { saveCode = VISIBLE_SAVE; } else { ExpectedTypeError1(theEnv,(char*)"save-facts",2,(char*)"symbol with value local or visible"); return(FALSE); } } /*======================================================*/ /* Subsequent arguments indicate that only those facts */ /* associated with the specified deftemplates should be */ /* saved to the file. */ /*======================================================*/ if (numArgs > 2) theList = GetFirstArgument()->nextArg->nextArg; /*====================================*/ /* Call the SaveFacts driver routine. */ /*====================================*/ if (EnvSaveFacts(theEnv,fileName,saveCode,theList) == FALSE) { return(FALSE); } return(TRUE); }
globle intBool SaveFacts( const char *fileName, int saveCode) { return EnvSaveFacts(GetCurrentEnvironment(),fileName,saveCode); }