if (pos != ctx->argcout - 1) {
char *newarg = ctx->argvout[ctx->argcout - 1];
- memmove(&ctx->argvout[pos+1], &ctx->argvout[pos],
+ memmove(&ctx->argvout[pos + 1], &ctx->argvout[pos],
sizeof(char *) * (ctx->argcout - pos - 1));
ctx->argvout[pos] = newarg;
}
} else if (arg[1] == '-' && !arg[2]) {
if (add_arg(ctx, arg) == -1)
return -1;
- ctx->nonopt = 1;
+ ctx->nonopt = ctx->argcout;
return 0;
} else
return process_gopt(ctx, arg, 0);
insert_arg(ctx, 2, ctx->opts) == -1)
return -1;
}
- if (strcmp(ctx->argv[ctx->argc - 1], "--") == 0)
- ctx->argv[--ctx->argc] = NULL;
-
+ if (ctx->nonopt && ctx->nonopt == ctx->argcout)
+ ctx->argvout[--ctx->argcout] = NULL;
+
return 0;
}