+#include "attrib.h"
+
+
+
/*****************************************************************************/
/* 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;
struct LongOpt {
-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.
*/
-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 InvSym (const char* Def);
-/* Print an error about an invalid symbol definition and die */
+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.
*/
-void LongOption (int* ArgNum, const LongOpt* OptTab, unsigned OptCount);
+void LongOption (unsigned* ArgNum, const LongOpt* OptTab, unsigned OptCount);
/* Handle a long command line option */