+ gsTextArgs[giTextArgc++] = argv[i];
+ }
+ else if( arg[1] != '-' )
+ {
+ switch(arg[1])
+ {
+ case 'h':
+ case '?':
+ ShowUsage();
+ exit(0);
+
+ case 'c':
+ if( i + 1 >= argc ) {
+ fprintf(stderr, "%s: -c takes an argument\n", argv[0]);
+ ShowUsage();
+ return -1;
+ }
+ giDispenseCount = atoi(argv[++i]);
+ if( giDispenseCount < 1 || giDispenseCount > DISPENSE_MULTIPLE_MAX ) {
+ fprintf(stderr, "Sorry, only 1-20 can be passed to -c (safety)\n");
+ return -1;
+ }
+
+ break ;
+
+ case 'm': // Minimum balance
+ if( i + 1 >= argc ) {
+ fprintf(stderr, "%s: -m takes an argument\n", argv[0]);
+ ShowUsage();
+ return RV_ARGUMENTS;
+ }
+ giMinimumBalance = atoi(argv[++i]);
+ break;
+ case 'M': // Maximum balance
+ if( i + 1 >= argc ) {
+ fprintf(stderr, "%s: -M takes an argument\n", argv[0]);
+ ShowUsage();
+ return RV_ARGUMENTS;
+ }
+ giMaximumBalance = atoi(argv[++i]);
+ break;
+
+ case 'f': // Override Config File
+ if( i + 1 >= argc ) {
+ fprintf(stderr, "%s: -f takes an argument\n", argv[0]);
+ ShowUsage();
+ return RV_ARGUMENTS;
+ }
+ gsConfigFile = argv[++i];
+ break;
+
+ case 'u': // Override User
+ if( i + 1 >= argc ) {
+ fprintf(stderr, "%s: -u takes an argument\n", argv[0]);
+ ShowUsage();
+ return RV_ARGUMENTS;
+ }
+ gsEffectiveUser = argv[++i];
+ break;
+
+ case 'H': // Override remote host
+ if( i + 1 >= argc ) {
+ fprintf(stderr, "%s: -H takes an argument\n", argv[0]);
+ ShowUsage();
+ return RV_ARGUMENTS;
+ }
+ gsDispenseServer = argv[++i];
+ giDispenseServerSet = 1;
+ break;
+ case 'P': // Override remote port
+ if( i + 1 >= argc ) {
+ fprintf(stderr, "%s: -P takes an argument\n", argv[0]);
+ ShowUsage();
+ return RV_ARGUMENTS;
+ }
+ giDispensePort = atoi(argv[++i]);
+ giDispensePortSet = 1;
+ break;
+
+ // Set slot name/price
+ case 's':
+ if( giTextArgc != 0 ) {
+ fprintf(stderr, "%s: -s must appear before other arguments\n", argv[0]);
+ ShowUsage();
+ return RV_ARGUMENTS;
+ }
+ gsTextArgs[0] = "slot"; // HACK!!
+ giTextArgc ++;
+ break;
+
+ case 'G': // Don't use GUI
+ giUIMode = UI_MODE_BASIC;
+ break;
+ case 'D': // Drinks only
+ giUIMode = UI_MODE_DRINKSONLY;
+ break;
+ case 'n': // Dry Run / read-only
+ gbDryRun = 1;
+ break;
+ default:
+ fprintf(stderr, "%s: Unknown switch '%s'\n", argv[0], argv[i]);
+ ShowUsage();
+ return RV_ARGUMENTS;
+ }
+
+ continue;
+ }
+ else
+ {
+ // '--' : Terminate argument processing (remainder is free)
+ if( arg[2] == '\0' ) {
+ rest_free = true;
+ }
+ else if( strcmp(arg, "--help") == 0 ) {
+ ShowUsage();
+ exit(0);
+ }
+ else if( strcmp(arg, "--dry-run") == 0 ) {
+ gbDryRun = 1;
+ }
+ else if( strcmp(arg, "--drinks-only") == 0 ) {
+ giUIMode = UI_MODE_DRINKSONLY;
+ }
+ else if( strcmp(arg, "--can-select-all") == 0 ) {
+ gbDisallowSelectWithoutBalance = 0;
+ }
+ else if( strcmp(arg, "--configfile") == 0 ) {
+ if( i + 1 >= argc ) {
+ fprintf(stderr, "%s: %s takes an argument\n", argv[0], arg);
+ ShowUsage();
+ return RV_ARGUMENTS;
+ }
+ gsConfigFile = argv[++i];
+ }
+ else {
+ fprintf(stderr, "%s: Unknown switch '%s'\n", argv[0], arg);
+ ShowUsage();
+ return RV_ARGUMENTS;
+ }
+ }