X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=include%2Fyaz%2Foptions.h;h=5cd9510895d6bb54eced1c921b609abfbf50bf5f;hp=b04636418cdeb3a90fd1a8b0e28e2b22ad29fad1;hb=5ef30a0bda9a010b88266f90a253a2c46e6d47db;hpb=8d691989077a0addcbd840d769dce6700f3d9622 diff --git a/include/yaz/options.h b/include/yaz/options.h index b046364..5cd9510 100644 --- a/include/yaz/options.h +++ b/include/yaz/options.h @@ -1,5 +1,5 @@ -/* - * Copyright (c) 1995-2007, Index Data +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2013 Index Data. * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -24,28 +24,54 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* $Id: options.h,v 1.8 2007-01-03 08:42:14 adam Exp $ */ /** * \file options.h * \brief Header for command line options parsing utilities */ -#ifndef OPTIONS_H -#define OPTIONS_H +#ifndef YAZ_OPTIONS_H +#define YAZ_OPTIONS_H #include YAZ_BEGIN_CDECL -YAZ_EXPORT int options (const char *desc, char **argv, int argc, char **arg); + +/** \brief command-line options parsing for main + \arg desc command argument description (allowed options) + \arg argv main argv + \arg argc main argc + \arg arg returned argument (for options that take an argument). + \retval 0 non-option arg (e.g. filename). + \retval -1 unknown option (error). arg is name of unknown option + \retval -2 no more options (end of options) + \retval c option char + + This function is called repeatedly for each option. Both single + char options (-x) as well as GNU long options are supported (--long). + The description is a sequence specs where each spec is if the form: + [a-zA-Z0-9]({[a-zA-Z0-9]*})+:? . For example: h{help}f{filename}{fname}: + + The first char is what is returned when met (single char option char). + The second is zero ore more long option values (synonum for single char) + If colon is appended, it means the option takes an argument. + If argv includes empty long option (--) that means "end of options" : + all argv data following that is considered non-options .. (0 returned + for each). +*/ +YAZ_EXPORT int options(const char *desc, char **argv, int argc, char **arg); + +#define YAZ_OPTIONS_ERROR (-1) +#define YAZ_OPTIONS_EOF (-2) YAZ_END_CDECL #endif - + /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab