summaryrefslogtreecommitdiff
path: root/src/libstddjb/subgetopt.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstddjb/subgetopt.c')
-rw-r--r--src/libstddjb/subgetopt.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/libstddjb/subgetopt.c b/src/libstddjb/subgetopt.c
index 940eb6a..6383a26 100644
--- a/src/libstddjb/subgetopt.c
+++ b/src/libstddjb/subgetopt.c
@@ -16,19 +16,18 @@ int subgetopt_r (int argc, char const *const *argv, char const *opts, subgetopt
if (!o->pos)
{
+ char c ;
if (argv[o->ind][0] != '-') return -1 ;
- else
+ o->pos++ ;
+ c = argv[o->ind][1] ;
+ if (c == '-')
{
- char c ;
- o->pos++ ;
- c = argv[o->ind][1] ;
- if (c == '-') o->ind++ ;
- if (!c || (c == '-'))
- {
- o->pos = 0 ;
- return -1 ;
- }
+ if (argv[o->ind][2]) return o->problem = '-', '?' ;
+ o->ind++ ;
+ o->pos = 0 ;
+ return -1 ;
}
+ if (!c || c == '-') return o->pos = 0, -1 ;
}
{
char c = argv[o->ind][o->pos++] ;