.ad 8
.bm 8
.fm 4
.bt $Copyright by   Software AG, 1993$$Page %$
.tm 12
.hm 6
.hs 3
.tt 1 $NME$Project Distributed Database System$vos80c$
.tt 2 $$$
.tt 3 $R.Roedling$getopt$1994-11-02$
***********************************************************
.nf


    ========== licence begin LGPL
    Copyright (C) 2002 SAP AG

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    ========== licence end

.fo
.nf
.sp
Module  : getopt
=========
.sp
Purpose :
.CM *-END-* purpose -------------------------------------
.sp
.cp 3
Define  :

.CM *-END-* define --------------------------------------
.sp;.cp 3
Use     :

.CM *-END-* use -----------------------------------------
.sp;.cp 3
Synonym :

.CM *-END-* synonym -------------------------------------
.sp;.cp 3
Author  : R.Roedling
.sp
.cp 3
Created : 1994-10-24
.sp
.cp 3
Version : 1994-10-24
.sp
.cp 3
Release :  6.1.1.08 	 Date : 1994-12-08
.br
.sp
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Specification:

.CM *-END-* specification -------------------------------
.sp 2
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Description:

.CM *-END-* description ---------------------------------
.sp 2
***********************************************************
.sp
.cp 10
.nf
.oc _/1
Structure:

.CM *-END-* structure -----------------------------------
.sp 2
**********************************************************
.sp
.cp 10
.nf
.oc _/1
.CM -lll-
Code    :
/*PRETTY*/


//
// INCLUDE FILES
//
#include    <stdarg.h>


//
//  DEFINES
//

#define MOD__  "VOS80C : "
#define MF__   MOD__"UNDEFINED"



//
//  MACROS
//


//
//  LOCAL TYPE AND STRUCT DEFINITIONS
//


//
//  EXPORTED VARIABLES
//

int     sql80_OptInd  = 1;
int     sql80_OptErr  = 0;
char*   sql80_OptArg  = NULL;


//
//  LOCAL VARIABLES
//


//
//  LOCAL FUNCTION PROTOTYPES
//


//
// ========================== GLOBAL FUNCTIONS ================================
//


int sql80_GetOpt ( int     nArgc,
                   char**  pszArgv,
                   char*   pszOptionString )
  {
  #undef  MF__
  #define MF__ MOD__"sql80_GetOpt"


  static int    Cnt = 1;
  char          OptChar;
  char          *pOptChar;

  if(Cnt == 1)
    {
    if ((sql80_OptInd >= nArgc)             ||
        (pszArgv[sql80_OptInd][0] != '-' &&
         pszArgv[sql80_OptInd][0] != '/')   ||
        (pszArgv[sql80_OptInd][1] == '\0'))
      {
      return(-1);
      }

    if(strcmp(pszArgv[sql80_OptInd], "--") == 0)
      {
      sql80_OptInd++;
      return(-1);
      }
    }

  OptChar = pszArgv[sql80_OptInd][Cnt];

  if(OptChar == ':' || (pOptChar=strchr(pszOptionString, OptChar)) == NULL)
    {
    if(pszArgv[sql80_OptInd][++Cnt] == '\0')
      {
      sql80_OptInd++;
      Cnt = 1;
      }
    return(( int )'?');
    }

  if(*++pOptChar == ':')
    {
    if(pszArgv[sql80_OptInd][Cnt + 1] != '\0')
      sql80_OptArg = &pszArgv[sql80_OptInd++][Cnt + 1];
    else if(++sql80_OptInd >= nArgc)
      {
      Cnt = 1;
      return(( int )'?');
      }
    else
      sql80_OptArg = pszArgv[sql80_OptInd++];

    Cnt = 1;
    }
  else
    {
    if(pszArgv[sql80_OptInd][++Cnt] == '\0')
      {
      Cnt = 1;
      sql80_OptInd++;
      }
    sql80_OptArg = NULL;
    }

  DBGOUT;
  return(OptChar);
  }


//
// ========================== LOCAL FUNCTIONS =================================
//

//
// =============================== END ========================================
//
.CM *-END-* code ----------------------------------------
.SP 2
***********************************************************
.PA
