home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lxapi32.zip / Dev32 / lxparam.c < prev    next >
C/C++ Source or Header  |  2002-04-26  |  3KB  |  140 lines

  1. /* $Id: lxparam.c,v 1.2 2002/04/26 23:08:56 smilcke Exp $ */
  2.  
  3. /*
  4.  * param.c
  5.  * Autor:               Stefan Milcke
  6.  * Erstellt am:         10.12.2001
  7.  * Letzte Aenderung am: 01.04.2002
  8.  *
  9. */
  10.  
  11. extern "C"
  12. {
  13. #define INCL_NOPMAPI
  14. #define INCL_DOSINFOSEG
  15. #include <os2.h>
  16. }
  17.  
  18. #include <devhelp.h>
  19. #include <devtype.h>
  20. #include <devrp.h>
  21. #include <ldefos2.h>
  22.  
  23. #include <string.h>
  24.  
  25.  
  26. extern "C"
  27. {
  28.  
  29. #include <linux/module.h>
  30. #include <linux/types.h>
  31.  
  32. #include <lxapilib.h>
  33.  
  34. #define MAX_PARM_LENGTH 256
  35.  
  36. int verbose=0;
  37. int verbose_modulelist=0;
  38. int doint3=0;
  39. int nocoremodule=0;
  40. int nomodule=0;
  41.  
  42. static char PARM_LENGTH_ERROR[]="LXAPI32: Parameter to long: ";
  43. static char PARM_UNKNOWN[]="LXAPI32: Unknown parameter: ";
  44. static char CRLF[]="\r\n";
  45.  
  46. char *parmList[]=
  47. {
  48.  "/3",
  49.  "/VM",
  50.  "/V",
  51.  "/NOCOREMODULE",
  52.  "/NOMODULE",
  53.  "/MODPARM:",
  54.  "/LOADMODULE:",
  55. };
  56.  
  57. int numParms=sizeof(parmList)/sizeof(char *);
  58.  
  59. //-------------------------------- load_module ---------------------------------
  60. int load_module(char *moduleName)
  61. {
  62.  int rc=0;
  63.  if(moduleName)
  64.   rc=0;
  65.  return rc;
  66. }
  67.  
  68. extern "C" int sprintf(char *buffer,const char *format, ...);
  69. extern "C" void WriteString(const char __far *str,int length);
  70.  
  71. //--------------------------------- parseArgs ----------------------------------
  72. void parseArgs(RPInit __far *rp)
  73. {
  74.  char FAR48 *args;
  75.  char carg[MAX_PARM_LENGTH];
  76.  char *p;
  77.  int i;
  78.  args=__Make48Pointer(rp->In.Args);
  79.  while(*args && *args==' ') args++;
  80.  while(*args && *args!=' ') args++;
  81.  while(*args)
  82.  {
  83.   p=carg;
  84.   while(*args && *args==' ') args++;
  85.   i=0;
  86.   while(*args && *args!=' ' && i<MAX_PARM_LENGTH-1)
  87.   {
  88.    *p++=*args++;
  89.    i++;
  90.   }
  91.   if(i>=MAX_PARM_LENGTH-1)
  92.   {
  93.    WriteString(PARM_LENGTH_ERROR,strlen(PARM_LENGTH_ERROR));
  94.    WriteString(carg,i);
  95.    WriteString(CRLF,strlen(CRLF));
  96.   }
  97.   else
  98.   {
  99.    *p=(char)0;
  100.    for(i=0;i<numParms;i++)
  101.    {
  102.     if(!strncmp(carg,parmList[i],strlen(parmList[i])))
  103.     {
  104.      switch(i)
  105.      {
  106.       case 0:
  107.        doint3=1;
  108.        break;
  109.       case 1:
  110.        verbose_modulelist=1;
  111.       case 2:
  112.        verbose=1;
  113.        break;
  114.       case 3:
  115.        nocoremodule=1;
  116.       case 4:
  117.        nomodule=1;
  118.        break;
  119.       case 5:
  120.        OS2_set_module_parm(&(carg[strlen(parmList[i])]));
  121.        break;
  122.       case 6:
  123.        load_module(&(carg[strlen(parmList[i])]));
  124.        break;
  125.      }
  126.      break;
  127.     }
  128.    }
  129.    if(i>=numParms)
  130.    {
  131.     WriteString(PARM_UNKNOWN,strlen(PARM_UNKNOWN));
  132.     WriteString(carg,strlen(carg));
  133.     WriteString(CRLF,strlen(CRLF));
  134.     break;
  135.    }
  136.   }
  137.  }
  138. }
  139.  
  140. };