summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--support/popt-gnome.h2
-rw-r--r--support/popt.c8
-rw-r--r--support/popt.h2
3 files changed, 11 insertions, 1 deletions
diff --git a/support/popt-gnome.h b/support/popt-gnome.h
index 0072e25..c341a83 100644
--- a/support/popt-gnome.h
+++ b/support/popt-gnome.h
@@ -16,7 +16,9 @@
#define POPT_ERROR_BADNUMBER -17
#define POPT_ERROR_OVERFLOW -18
+/* context creation flags */
#define POPT_BADOPTION_NOALIAS (1 << 0) /* don't go into an alias */
+#define POPT_KEEP_FIRST (1 << 1) /* pay attention to argv[0] */
struct poptOption {
const char * longName; /* may be NULL */
diff --git a/support/popt.c b/support/popt.c
index ead28da..d75a5e1 100644
--- a/support/popt.c
+++ b/support/popt.c
@@ -29,6 +29,7 @@ struct poptContext_s {
char * appName;
struct poptAlias * aliases;
int numAliases;
+ int flags;
};
poptContext poptGetContext(char * name ,int argc, char ** argv,
@@ -41,7 +42,11 @@ poptContext poptGetContext(char * name ,int argc, char ** argv,
con->os->currAlias = NULL;
con->os->nextCharArg = NULL;
con->os->nextArg = NULL;
- con->os->next = 1; /* skip argv[0] */
+
+ if (flags & POPT_KEEP_FIRST)
+ con->os->next = 0; /* include argv[0] */
+ else
+ con->os->next = 1; /* skip argv[0] */
con->leftovers = malloc(sizeof(char *) * (argc + 1));
con->numLeftovers = 0;
@@ -50,6 +55,7 @@ poptContext poptGetContext(char * name ,int argc, char ** argv,
con->options = options;
con->aliases = NULL;
con->numAliases = 0;
+ con->flags = 0;
if (!name)
con->appName = NULL;
diff --git a/support/popt.h b/support/popt.h
index 0072e25..c341a83 100644
--- a/support/popt.h
+++ b/support/popt.h
@@ -16,7 +16,9 @@
#define POPT_ERROR_BADNUMBER -17
#define POPT_ERROR_OVERFLOW -18
+/* context creation flags */
#define POPT_BADOPTION_NOALIAS (1 << 0) /* don't go into an alias */
+#define POPT_KEEP_FIRST (1 << 1) /* pay attention to argv[0] */
struct poptOption {
const char * longName; /* may be NULL */