New functions yaz_file_glob2, yaz_xml_include_glob
[yaz-moved-to-github.git] / include / yaz / options.h
index ccf6d9c..5cd9510 100644 (file)
@@ -1,5 +1,5 @@
-/*
- * Copyright (c) 1995-2008, 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,7 +24,6 @@
  * (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.9 2008-02-20 10:03:42 adam Exp $ */
 
 /**
  * \file options.h
  */
 
 #ifndef YAZ_OPTIONS_H
-#define TAZ_OPTIONS_H
+#define YAZ_OPTIONS_H
 #include <yaz/yconfig.h>
 
 YAZ_BEGIN_CDECL
 
-/** \brief parser command-line options
+
+/** \brief command-line options parsing for main
     \arg desc command argument description (allowed options)
     \arg argv main argv
     \arg argc main argc
@@ -46,25 +46,32 @@ YAZ_BEGIN_CDECL
     \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: 
+    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);
+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