⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysdep.c

📁 clips源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
   /*=====================================*/#if DEFGLOBAL_CONSTRUCT   InitializeDefglobals(theEnvironment);#endif   /*=======================================*/   /* Initialize the deftemplate construct. */   /*=======================================*/#if DEFTEMPLATE_CONSTRUCT   InitializeDeftemplates(theEnvironment);#endif   /*=============================*/   /* Initialize COOL constructs. */   /*=============================*/#if OBJECT_SYSTEM   SetupObjectSystem(theEnvironment);#endif   /*=====================================*/   /* Initialize the defmodule construct. */   /*=====================================*/   InitializeDefmodules(theEnvironment);   /*======================================================*/   /* Register commands and functions for development use. */   /*======================================================*/#if DEVELOPER   DeveloperCommands(theEnvironment);#endif   /*=========================================*/   /* Install the special function primitives */   /* used by procedural code in constructs.  */   /*=========================================*/   InstallProcedurePrimitives(theEnvironment);   /*==============================================*/   /* Install keywords in the symbol table so that */   /* they are available for command completion.   */   /*==============================================*/   InitializeKeywords(theEnvironment);   /*========================*/   /* Issue a clear command. */   /*========================*/      EnvClear(theEnvironment);   /*=============================*/   /* Initialization is complete. */   /*=============================*/   theEnvironment->initialized = TRUE;  }/******************************************************//* SetRedrawFunction: Sets the redraw screen function *//*   for use with a user interface that may be        *//*   overwritten by execution of a command.           *//******************************************************/globle void SetRedrawFunction(  void *theEnv,  void (*theFunction)(void *))  {   SystemDependentData(theEnv)->RedrawScreenFunction = theFunction;  }/******************************************************//* SetPauseEnvFunction: Set the normal state function *//*   which puts terminal in a normal state.           *//******************************************************/globle void SetPauseEnvFunction(  void *theEnv,  void (*theFunction)(void *))  {   SystemDependentData(theEnv)->PauseEnvFunction = theFunction;  }/*********************************************************//* SetContinueEnvFunction: Sets the continue environment *//*   function which returns the terminal to a special    *//*   screen interface state.                             *//*********************************************************/globle void SetContinueEnvFunction(  void *theEnv,  void (*theFunction)(void *,int))  {   SystemDependentData(theEnv)->ContinueEnvFunction = theFunction;  }/*******************************************************//* GetRedrawFunction: Gets the redraw screen function. *//*******************************************************/globle void (*GetRedrawFunction(void *theEnv))(void *)  {   return SystemDependentData(theEnv)->RedrawScreenFunction;  }/*****************************************************//* GetPauseEnvFunction: Gets the normal state function. *//*****************************************************/globle void (*GetPauseEnvFunction(void *theEnv))(void *)  {   return SystemDependentData(theEnv)->PauseEnvFunction;  }/*********************************************//* GetContinueEnvFunction: Gets the continue *//*   environment function.                   *//*********************************************/globle void (*GetContinueEnvFunction(void *theEnv))(void *,int)  {   return SystemDependentData(theEnv)->ContinueEnvFunction;  }/*************************************************//* RerouteStdin: Processes the -f, -f2, and -l   *//*   options available on machines which support *//*   argc and arv command line options.          *//*************************************************/globle void RerouteStdin(  void *theEnv,  int argc,  char *argv[])  {   int i;   int theSwitch = NO_SWITCH;   /*======================================*/   /* If there aren't enough arguments for */   /* the -f argument, then return.        */   /*======================================*/   if (argc < 3)     { return; }   /*=====================================*/   /* If argv was not passed then return. */   /*=====================================*/   if (argv == NULL) return;   /*=============================================*/   /* Process each of the command line arguments. */   /*=============================================*/   for (i = 1 ; i < argc ; i++)     {      if (strcmp(argv[i],"-f") == 0) theSwitch = BATCH_SWITCH;#if ! RUN_TIME      else if (strcmp(argv[i],"-f2") == 0) theSwitch = BATCH_STAR_SWITCH;      else if (strcmp(argv[i],"-l") == 0) theSwitch = LOAD_SWITCH;#endif      else if (theSwitch == NO_SWITCH)        {         PrintErrorID(theEnv,"SYSDEP",2,FALSE);         EnvPrintRouter(theEnv,WERROR,"Invalid option\n");        }      if (i > (argc-1))        {         PrintErrorID(theEnv,"SYSDEP",1,FALSE);         EnvPrintRouter(theEnv,WERROR,"No file found for ");         switch(theSwitch)           {            case BATCH_SWITCH:               EnvPrintRouter(theEnv,WERROR,"-f");               break;            case BATCH_STAR_SWITCH:               EnvPrintRouter(theEnv,WERROR,"-f2");               break;            case LOAD_SWITCH:               EnvPrintRouter(theEnv,WERROR,"-l");           }         EnvPrintRouter(theEnv,WERROR," option\n");         return;        }      switch(theSwitch)        {         case BATCH_SWITCH:            OpenBatch(theEnv,argv[++i],TRUE);            break;#if (! RUN_TIME) && (! BLOAD_ONLY)         case BATCH_STAR_SWITCH:            EnvBatchStar(theEnv,argv[++i]);            break;         case LOAD_SWITCH:            EnvLoad(theEnv,argv[++i]);            break;#endif        }     }  }/**************************************************//* SystemFunctionDefinitions: Sets up definitions *//*   of system defined functions.                 *//**************************************************/static void SystemFunctionDefinitions(  void *theEnv)  {   ProceduralFunctionDefinitions(theEnv);   MiscFunctionDefinitions(theEnv);#if BASIC_IO || EXT_IO   IOFunctionDefinitions(theEnv);#endif   PredicateFunctionDefinitions(theEnv);   BasicMathFunctionDefinitions(theEnv);   FileCommandDefinitions(theEnv);   SortFunctionDefinitions(theEnv);#if DEBUGGING_FUNCTIONS   WatchFunctionDefinitions(theEnv);#endif#if MULTIFIELD_FUNCTIONS   MultifieldFunctionDefinitions(theEnv);#endif#if STRING_FUNCTIONS   StringFunctionDefinitions(theEnv);#endif#if EX_MATH   ExtendedMathFunctionDefinitions(theEnv);#endif#if TEXTPRO_FUNCTIONS || HELP_FUNCTIONS   HelpFunctionDefinitions(theEnv);#endif#if EMACS_EDITOR   EditorFunctionDefinition(theEnv);#endif#if CONSTRUCT_COMPILER && (! RUN_TIME)   ConstructsToCCommandDefinition(theEnv);#endif#if PROFILING_FUNCTIONS   ConstructProfilingFunctionDefinitions(theEnv);#endif   ParseFunctionDefinitions(theEnv);  }  /*********************************************************//* gentime: A function to return a floating point number *//*   which indicates the present time. Used internally   *//*   for timing rule firings and debugging.              *//*********************************************************/globle double gentime()  {#if   MAC   UnsignedWide result;   Microseconds(&result);   return(((((double) result.hi) * kTwoPower32) + result.lo) / 1000000.0);#elif IBM_MCW   unsigned long int result;   result = GetTickCount();   return((double) result / 1000.0);#elif   IBM_TBC && (! WINDOW_INTERFACE)   unsigned long int result;   result = biostime(0,(long int) 0);   return((double) result / 18.2);#elif UNIX_V#if defined(_POSIX_TIMERS) && (_POSIX_TIMERS > 0)   struct timespec now;   clock_gettime(#if defined(_POSIX_MONOTONIC_CLOCK)       CLOCK_MONOTONIC,#else       CLOCK_REALTIME,#endif       &now);  return (now.tv_nsec / 1000000000.0) + now.tv_sec;#else   struct timeval now;   gettimeofday(&now, 0);   return (now.tv_usec / 1000000.0) + now.tv_sec;#endif#elif UNIX_7    struct timeval now;    gettimeofday(&now, 0);    return (now.tv_usec / 1000000.0) + now.tv_sec;  #else   return((double) clock() / (double) CLOCKS_PER_SEC);#endif  }/*****************************************************//* gensystem: Generic routine for passing a string   *//*   representing a command to the operating system. *//*****************************************************/globle void gensystem(  void *theEnv)  {   char *commandBuffer = NULL;   size_t bufferPosition = 0;   size_t bufferMaximum = 0;   int numa, i;   DATA_OBJECT tempValue;   char *theString;   /*===========================================*/   /* Check for the corret number of arguments. */   /*===========================================*/   if ((numa = EnvArgCountCheck(theEnv,"system",AT_LEAST,1)) == -1) return;   /*============================================================*/   /* Concatenate the arguments together to form a single string */   /* containing the command to be sent to the operating system. */   /*============================================================*/   for (i = 1 ; i <= numa; i++)     {      EnvRtnUnknown(theEnv,i,&tempValue);      if ((GetType(tempValue) != STRING) &&          (GetType(tempValue) != SYMBOL))        {         SetHaltExecution(theEnv,TRUE);         SetEvaluationError(theEnv,TRUE);         ExpectedTypeError2(theEnv,"system",i);         return;        }     theString = DOToString(tempValue);     commandBuffer = AppendToString(theEnv,theString,commandBuffer,&bufferPosition,&bufferMaximum);    }   if (commandBuffer == NULL) return;   /*=======================================*/   /* Execute the operating system command. */   /*=======================================*/#if VAX_VMS   if (SystemDependentData(theEnv)->PauseEnvFunction != NULL) (*SystemDependentData(theEnv)->PauseEnvFunction)(theEnv);   VMSSystem(commandBuffer);   putchar('\n');   if (SystemDependentData(theEnv)->ContinueEnvFunction != NULL) (*SystemDependentData(theEnv)->ContinueEnvFunction)(theEnv,1);   if (SystemDependentData(theEnv)->RedrawScreenFunction != NULL) (*SystemDependentData(theEnv)->RedrawScreenFunction)(theEnv);#endif#if   UNIX_7 || UNIX_V || IBM_MSC || IBM_TBC || IBM_MCW || IBM_GCC || MAC_XCD   if (SystemDependentData(theEnv)->PauseEnvFunction != NULL) (*SystemDependentData(theEnv)->PauseEnvFunction)(theEnv);   system(commandBuffer);   if (SystemDependentData(theEnv)->ContinueEnvFunction != NULL) (*SystemDependentData(theEnv)->ContinueEnvFunction)(theEnv,1);   if (SystemDependentData(theEnv)->RedrawScreenFunction != NULL) (*SystemDependentData(theEnv)->RedrawScreenFunction)(theEnv);#else#if ! VAX_VMS   EnvPrintRouter(theEnv,WDIALOG,            "System function not fully defined for this system.\n");#endif#endif   /*==================================================*/   /* Return the string buffer containing the command. */   /*==================================================*/   rm(theEnv,commandBuffer,bufferMaximum);   return;  }#if   VAX_VMS/*************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -