changeset 2615:fc7985beff39

fixed arpi's cfgparser bug
author alex
date Fri, 02 Nov 2001 00:25:28 +0000
parents 9464d6f19261
children f96462d7453e
files cfgparser.c
diffstat 1 files changed, 37 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/cfgparser.c	Thu Nov 01 22:42:16 2001 +0000
+++ b/cfgparser.c	Fri Nov 02 00:25:28 2001 +0000
@@ -236,7 +236,7 @@
 			printf("%s", (char *) config[i].p);
 			exit(1);
 		default:
-			printf("picsaba\n");
+			printf("Unknown config type specified in conf-mplayer.h!\n");
 			break;
 	}
 out:
@@ -445,6 +445,7 @@
 	int f_nr = 0;
 	int tmp;
 	char *opt;
+	int no_more_opts = 0;
 
 #ifdef DEBUG
 	assert(argv != NULL);
@@ -459,33 +460,49 @@
 	++recursion_depth;
 
 	for (i = 1; i < argc; i++) {
+next:
 		opt = argv[i];
-		if (*opt != '-')
-			goto filename;
-
-		/* remove trailing '-' */
-		opt++;
-
-		tmp = read_option(opt, argv[i + 1]);
+		if ((*opt == '-') && (*(opt+1) == '-'))
+		{
+			no_more_opts = 1;
+//			printf("no more opts! %d\n",i);
+			i++;
+			goto next;
+		}
+			
+		if ((no_more_opts == 0) && (*opt == '-')) /* option */
+		{
+		    /* remove trailing '-' */
+		    opt++;
+//		    printf("this_opt = option: %s\n", opt);
 
-		switch (tmp) {
-		case ERR_NOT_AN_OPTION:
-filename:
-			/* opt is not an option -> treat it as a filename */
-			if (!(f = (char **) realloc(f, sizeof(*f) * (f_nr + 2))))
-				goto err_out_mem;
+		    tmp = read_option(opt, argv[i + 1]);
 
-			f[f_nr++] = argv[i];
-			break;
-		case ERR_MISSING_PARAM:
-		case ERR_OUT_OF_RANGE:
-		case ERR_FUNC_ERR:
+		    switch (tmp) {
+		    case ERR_NOT_AN_OPTION:
+		    case ERR_MISSING_PARAM:
+		    case ERR_OUT_OF_RANGE:
+		    case ERR_FUNC_ERR:
+			printf("Error %d while parsing option: '%s'!\n",
+			    tmp, opt);
 			goto err_out;
 			/* break; */
-		default:
+		    default:
 			i += tmp;
+			break;
+		    }
+		}
+		else /* filename */
+		{
+//		    printf("this_opt = filename: %s\n", opt);
+		    /* opt is not an option -> treat it as a filename */
+		    if (!(f = (char **) realloc(f, sizeof(*f) * (f_nr + 2))))
+			goto err_out_mem;
+
+		    f[f_nr++] = argv[i];
 		}
 	}
+
 	if (f)
 		f[f_nr] = NULL;
 	if (filenames)