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

VxWorks

开发平台:

C/C++

  1. /* usrScript.c - startup script module */
  2. /* Copyright 1992-1998 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. /******************************************************************************
  20. *
  21. * usrStartupScript - make shell read initial startup script file
  22. *
  23. * This routine reads a startup script before the VxWorks
  24. * shell comes up interactively.
  25. *
  26. * NOMANUAL
  27. */
  28. void usrStartupScript 
  29.     (
  30.     char *fileName
  31.     )
  32.     {
  33.     int old;
  34.     int newStdIn;
  35. int errFd;
  36. BOOT_PARAMS params;
  37.     if ((fileName == NULL) || (fileName [0] == EOS))
  38.         return;
  39.    
  40.     #ifdef INCLUDE_TFTP_CLIENT 
  41.     /* if tftp defined get boot params to check boot method*/
  42.     bootStringToStruct (BOOT_LINE_ADRS, &params);
  43.     sysFlags = params.flags;
  44.     if (sysFlags & SYSFLG_TFTP) /* if tftp used for booting*/
  45.         {                               /* use tftpXfer to open descriptor */
  46.     if (tftpXfer (params.hostName, 0, fileName, "get",
  47.                "binary", &newStdIn, &errFd) == ERROR)
  48.         {
  49.          return;
  50.         }
  51.     }
  52. else 
  53.       {
  54.     newStdIn = open (fileName, O_RDONLY, 0);
  55.     }
  56.     #else
  57.     newStdIn = open (fileName, O_RDONLY, 0);
  58.     #endif
  59.     if (newStdIn != ERROR)
  60.         {
  61.         printf ("Executing startup script %s ...n", fileName);
  62.         taskDelay (sysClkRateGet () / 2);
  63.         old = ioGlobalStdGet (STD_IN);  /* save original std in */
  64.         ioGlobalStdSet (STD_IN, newStdIn);   /* set std in to script */
  65.         shellInit (SHELL_STACK_SIZE, FALSE);    /* execute commands */
  66.         /* wait for shell to finish */
  67.         do
  68.             taskDelay (sysClkRateGet ());
  69.         while (taskNameToId (shellTaskName) != ERROR);
  70.         close (newStdIn);
  71.         ioGlobalStdSet (STD_IN, old);   /* restore original std in */
  72.         printf ("nDone executing startup script %sn", fileName);
  73.         taskDelay (sysClkRateGet () / 2);
  74.         }
  75.     else
  76.         printf ("Unable to open startup script %sn", fileName);
  77.     }