misc.c
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:2k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. /*
  2. -- COWSTRIP utilities
  3. */
  4. #include <stdio.h>
  5. #include "cowstrip.h"
  6. /* - PUBLIC VARIABLES - */
  7. char *szNameProgram; /* Program name (not extension) */
  8. int cargCur; /* # of args left */
  9. #ifdef D86
  10. char chDriveProgram; /* Drive program was ran from */
  11. #endif
  12. static SZ *pszArgNext;
  13. void CDECL
  14. ProcessArgs(argc, argv)
  15. int argc;
  16. SZ argv[];
  17. {
  18. char *pch;
  19. char *szFn;
  20. #ifdef D86
  21. char *strlwr();
  22. #endif
  23. if (argc < 1)
  24. {
  25. printf("???? : fatal error argc = %dn", argc);
  26. exit(1);
  27. }
  28. pszArgNext = &argv[1];
  29. cargCur = argc-1;
  30. #ifdef D86
  31. pch = strlwr(argv[0]);
  32. if (pch[1] == ':' && pch[0] >= 'a' && pch[0] <= 'z')
  33. {
  34. chDriveProgram = pch[0];
  35. pch += 2; /* skip drive */
  36. }
  37. else
  38. chDriveProgram = ''; /* no drive specified */
  39. #endif
  40. szNameProgram = pch; /* start of path (no drive) */
  41. #ifdef D86
  42. /* First convert any '\' into '/' */
  43. while (*pch != '')
  44. {
  45. if (*pch == '\')
  46. *pch = '/';
  47. pch++;
  48. }
  49. #endif
  50. for (pch--; pch >= pch; pch--)
  51. if (*pch == '/')
  52. {
  53. szNameProgram = pch+1;
  54. break;
  55. }
  56. #ifdef D86
  57. else if (*pch == '.')
  58. {
  59. *pch = ''; /* forget extension */
  60. }
  61. #endif
  62. }
  63. SZ CDECL
  64. SzGetArg()
  65. /*
  66.   -- return sz of next free arguement, return NULL if end
  67. */
  68. {
  69. SZ szRet;
  70. if (cargCur < 1)
  71. return NULL;
  72. cargCur--;
  73. szRet = pszArgNext[0];
  74. pszArgNext++;
  75. return szRet;
  76. }
  77. void CDECL
  78. FatalError(szFmt, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)
  79. CONST char *szFmt;
  80. int v1, v2, v3, v4, v5, v6, v7, v8, v9, v10;
  81. {
  82. printf("%s: ERROR : ", szNameProgram);
  83. printf(szFmt, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10);
  84. exit(1);
  85. }