/*****************************************************************************/
/* */
-/* cmdline.h */
+/* cmdline.h */
/* */
-/* Helper functions for command line parsing */
+/* Helper functions for command line parsing */
/* */
/* */
/* */
-/* (C) 2000 Ullrich von Bassewitz */
-/* Wacholderweg 14 */
-/* D-70597 Stuttgart */
-/* EMail: uz@musoftware.de */
+/* (C) 2000-2009, Ullrich von Bassewitz */
+/* Roemerstrasse 52 */
+/* D-70794 Filderstadt */
+/* EMail: uz@cc65.org */
/* */
/* */
/* This software is provided 'as-is', without any expressed or implied */
+#include "attrib.h"
+
+
+
/*****************************************************************************/
-/* Data */
+/* Data */
/*****************************************************************************/
+/* Program name - is set after call to InitCmdLine */
+extern const char* ProgName;
+
+/* The program argument vector */
+extern char** ArgVec;
+extern unsigned ArgCount;
+
/* Structure defining a long option */
-typedef struct LongOpt LongOpt;
+typedef struct LongOpt LongOpt;
struct LongOpt {
- const char* Option;
- unsigned ArgCount;
- void (*Func) (const char* Opt, const char* Arg);
+ const char* Option;
+ unsigned ArgCount;
+ void (*Func) (const char* Opt, const char* Arg);
};
/*****************************************************************************/
-/* Code */
+/* Code */
/*****************************************************************************/
-void InitCmdLine (unsigned aArgCount, char* aArgVec[]);
+void InitCmdLine (int* aArgCount, char*** aArgVec, const char* aProgName);
/* Initialize command line parsing. aArgVec is the argument array terminated by
- * a NULL pointer (as usual), ArgCount is the number of valid arguments in the
- * array. Both arguments are remembered in static storage.
- */
+** a NULL pointer (as usual), ArgCount is the number of valid arguments in the
+** array. Both arguments are remembered in static storage.
+*/
-void UnknownOption (const char* Opt);
-/* Print an error about an unknown option. */
+void UnknownOption (const char* Opt) attribute ((noreturn));
+/* Print an error about an unknown option and die. */
-void NeedArg (const char* Opt);
+void NeedArg (const char* Opt) attribute ((noreturn));
/* Print an error about a missing option argument and exit. */
-void InvDef (const char* Def);
+void InvArg (const char* Opt, const char* Arg) attribute ((noreturn));
+/* Print an error about an invalid option argument and exit. */
+
+void InvDef (const char* Def) attribute ((noreturn));
/* Print an error about an invalid definition and die */
-const char* GetArg (int* ArgNum, unsigned Len);
+const char* GetArg (unsigned* ArgNum, unsigned Len);
/* Get an argument for a short option. The argument may be appended to the
- * option itself or may be separate. Len is the length of the option string.
- */
+** option itself or may be separate. Len is the length of the option string.
+*/
-void LongOption (int* ArgNum, const LongOpt* OptTab, unsigned OptCount);
+void LongOption (unsigned* ArgNum, const LongOpt* OptTab, unsigned OptCount);
/* Handle a long command line option */
/* End of cmdline.h */
#endif
-
-
-