usrScript.c
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* usrScript.c - startup script module */
  2. /* Copyright 1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01d,08nov01,cmf  fix undeclared params
  7. 01c,22oct01,cmf  add support for tftp for SPR 34476
  8. 01b,18nov96,dbt  ANSIfied function headers (SPR #7427.)
  9.  Replaced variable named new with newFdIn for C++ compatibility.
  10. 01a,18sep92,jcf  written.
  11. */
  12. /*
  13. DESCRIPTION
  14. This file is used to execute a startup script of VxWorks shell commands.
  15. This file is included by usrConfig.c.
  16. SEE ALSO: usrExtra.c
  17. NOMANUAL
  18. */
  19. #ifndef  __INCusrScriptc
  20. #define  __INCusrScriptc 
  21. #ifdef INCLUDE_STARTUP_SCRIPT
  22. /******************************************************************************
  23. *
  24. * usrStartupScript - make shell read initial startup script file
  25. *
  26. * This routine reads a startup script before the VxWorks
  27. * shell comes up interactively.
  28. *
  29. * NOMANUAL
  30. */
  31. void usrStartupScript 
  32.     (
  33.     char *fileName
  34.     )
  35.     {
  36.     int old;
  37.     int newStdIn;
  38.   int errFd;
  39. BOOT_PARAMS params;
  40.     if (fileName == NULL)
  41.        {  
  42.        return;
  43.        }
  44.  
  45.     #ifdef INCLUDE_TFTP_CLIENT 
  46.     /* if tftp defined get boot params to check boot method*/
  47.     bootStringToStruct (BOOT_LINE_ADRS, &params);
  48.     sysFlags = params.flags;
  49.     if (sysFlags & SYSFLG_TFTP) /* if tftp used for booting*/
  50.         {                               /* use tftpXfer to open descriptor */
  51. if (tftpXfer (params.hostName, 0, fileName, "get",
  52.                "binary", &newStdIn, &errFd) == ERROR)
  53.     {
  54.          return;
  55.     }
  56. }
  57. else 
  58.       {
  59.     newStdIn = open (fileName, O_RDONLY, 0);
  60.     }
  61.     #else
  62.     newStdIn = open (fileName, O_RDONLY, 0);
  63.     #endif /* INCLUDE_TFTP_CLIENT */
  64.    
  65.     if (newStdIn != ERROR)
  66.         {
  67.         printf ("Executing startup script %s ...n", fileName);
  68.         taskDelay (sysClkRateGet () / 2);
  69.         old = ioGlobalStdGet (STD_IN);  /* save original std in */
  70.         ioGlobalStdSet (STD_IN, newStdIn);   /* set std in to script */
  71.         shellInit (SHELL_STACK_SIZE, FALSE);    /* execute commands */
  72.         /* wait for shell to finish */
  73.         do
  74.             taskDelay (sysClkRateGet ());
  75.         while (taskNameToId (shellTaskName) != ERROR);
  76.         close (newStdIn);
  77.         ioGlobalStdSet (STD_IN, old);   /* restore original std in */
  78.         printf ("nDone executing startup script %sn", fileName);
  79.         taskDelay (sysClkRateGet () / 2);
  80.         }
  81.     else
  82.         printf ("Unable to open startup script %sn", fileName);
  83.     }
  84. #endif /* INCLUDE_STARTUP_SCRIPT */
  85. #endif /* __INCusrScriptc */