shared/options.h
afb48b28
 /*
7b8edc5c
  *  Copyright (C) 2002 - 2006 Tomasz Kojm <tkojm@clamav.net>
afb48b28
  *
  *  This program is free software; you can redistribute it and/or modify
bb34cb31
  *  it under the terms of the GNU General Public License version 2 as
  *  published by the Free Software Foundation.
afb48b28
  *
  *  This program 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 General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
48b7b4a7
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  *  MA 02110-1301, USA.
afb48b28
  */
 
 #ifndef __OPTIONS_H
 #define __OPTIONS_H
 
7b8edc5c
 #define _GNU_SOURCE
 #include "getopt.h"
 
afb48b28
 struct optnode {
7b8edc5c
     char optshort;
     char *optlong;
afb48b28
     char *optarg;
     struct optnode *next;
 };
 
 struct optstruct {
     struct optnode *optlist;
     char *filename;
 };
 
7b8edc5c
 void opt_free(struct optstruct *opt);
 
04fa4e9d
 struct optstruct *opt_parse(int argc, char * const *argv, const char *getopt_short, const struct option *options_long, const char * const *accepted_long, const char * const *deprecated_long);
7b8edc5c
 
fc83da82
 int opt_check(const struct optstruct *opt, const char *optlong);
7b8edc5c
 
fc83da82
 char *opt_arg(const struct optstruct *opt, const char *optlong);
7b8edc5c
 
 char *opt_firstarg(const struct optstruct *opt, const char *optlong, const struct optnode **optnode);
 
 char *opt_nextarg(const struct optnode **optnode, const char *optlong);
afb48b28
 
 #endif