swmain.c
上传用户:aidanglao
上传日期:2007-01-07
资源大小:69k
文件大小:3k
源码类别:

Oracle数据库

开发平台:

Unix_Linux

  1. /* swmain.c - shell level interface for sqlweb contains main function.
  2. /*
  3. /* Copyright (c) 1995-1999 Applied Information Technologies, Inc.
  4. /* All Rights Reserved.
  5. /*  
  6. /* Distributed uder the GNU General Public License which was included in
  7. /* the file named "LICENSE" in the package that you recieved.
  8. /* If not, write to:
  9. /* The Free Software Foundation, Inc.,
  10. /* 675 Mass Ave, Cambridge, MA 02139, USA.
  11.  */
  12. #define GETOPTEOF (-1)
  13. #define GTERR(S,C) MsgPush("%s%cn",(S),(C))
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. #include <string.h>
  17. #include "sqlweb.h"
  18. /*
  19. /* Global Variables
  20.  */
  21. /*
  22. /* Internal functions
  23.  */
  24. static int sw_getopt(int argc, char **argv, char *opts);
  25. static int optind=1;
  26. static char    *optarg;
  27. static int sp=1;
  28. static char *USAGE = "USAGE:n
  29. CGI Call:n
  30.     sqlwebn
  31. where PATH_TRANSLATED is used to determine SQLweb Pagen
  32. according to HTTPn
  33. SQLweb Page Utility:n
  34.     sqlweb [-b] [-iIniFile] [-p ParseLevel] html_filen
  35. where,n
  36.     -b Buffer output n
  37.     -p set parse level (0=expand page;1=show source;2=dump tags)n
  38.     -i  Sets IniFile to the desired initialization filen
  39. n";
  40. int
  41. main(int    argc
  42.     ,char **argv
  43.     ,char **arge
  44.     )
  45. {
  46.     int  iErrFlag=0
  47. ,c;
  48. /*
  49. /*    eBoolean_t
  50. /*  bCFlag=eTrue /* Cook Page */
  51. /* ;
  52.  */
  53.     gpProgram = strrchr(argv[0],'/');
  54.     if(gpProgram) gpProgram++;
  55.     else   gpProgram=argv[0];
  56.     while((c=sw_getopt(argc, argv, "bei:f:p:")) != -1) {
  57. switch (c) {
  58.     /* FLAGS
  59.      */
  60.     case 'b': gbbFlag=eTrue; break;
  61.     case 'e': gbpFlag=eTrue;giParseLevel=1; break;
  62.     /* Option Args
  63.      */
  64.     case 'i': gbiFlag=eTrue;gpIniFile=optarg; break;
  65.     case 'p': gbpFlag=eTrue;giParseLevel=atoi(optarg); break;
  66.     case 'f': gbfFlag=eTrue;gpFileName=optarg; break;
  67. /* For Backward compatability
  68. /* Not listed in usage...
  69.  */
  70.     /* Syntax Errors */
  71.     case '?':
  72. iErrFlag++;
  73. break;
  74. }
  75.     }
  76.     if(iErrFlag){
  77. fprintf(stderr,USAGE);
  78. exit(2);
  79.     }
  80.     /*
  81.     /* Report Args
  82.      */
  83.     if(optind<argc) {
  84. gpFileName = argv[optind];
  85.     }
  86.     return(ISeTrue(sqlweb()) ? 0: 1);
  87. }
  88. static int
  89. sw_getopt(int argc, char **argv, char *opts)
  90. {
  91. register int c;
  92. register char *cp;
  93. if (sp == 1)
  94. if (optind >= argc ||
  95.    argv[optind][0] != '-' || argv[optind][1] == '')
  96. return(GETOPTEOF);
  97. else if (bStrMatch(argv[optind], "--")) {
  98. optind++;
  99. return(GETOPTEOF);
  100. }
  101. c = argv[optind][sp];
  102. if (c == ':' || (cp=strchr(opts, c)) == 0) {
  103. GTERR("illegal option -- ", c);
  104. if (argv[optind][++sp] == '') {
  105. optind++;
  106. sp = 1;
  107. }
  108. optarg = 0;
  109. return('?');
  110. }
  111. if (*++cp == ':') {
  112. #ifdef FASCIST
  113. if (sp != 1) {
  114. GTERR("option must not be grouped -- ", c );
  115. optind++;
  116. sp = 1;
  117. optarg = 0;
  118. return('?');
  119. } else
  120. #endif
  121. if (argv[optind][sp+1] != '') {
  122. #ifdef FASCIST
  123. GTERR("option must be followed by whitespace -- ", c );
  124. optind++;
  125. sp = 1;
  126. optarg = 0;
  127. return('?');
  128. #else
  129. optarg = &argv[optind++][sp+1];
  130. #endif
  131. } else if (++optind >= argc) {
  132. GTERR("option requires an argument -- ", c);
  133. sp = 1;
  134. optarg = 0;
  135. return('?');
  136. } else
  137. optarg = argv[optind++];
  138. sp = 1;
  139. } else {
  140. if (argv[optind][++sp] == '') {
  141. sp = 1;
  142. optind++;
  143. }
  144. optarg = 0;
  145. }
  146. return(c);
  147. }