- if(*string) {
- for(s = string; *s && *s != ','; s++) {
- if(*s >= '0' && *s <= '9') {
- result = result * 10 + (int) (*s - '0');
- } else error = 1;
+ n = 0;
+ current_value = 0;
+ gotone = 0;
+ s = string;
+
+ while(1) {
+ if(*s >= '0' && *s <= '9') {
+ current_value = current_value * 10 + (int) (*s - '0');
+ gotone = 1;
+ } else if(*s == ',' || *s == '\0') {
+ if(gotone) {
+ if(n < nb) {
+ values[n++] = current_value;
+ if(*s == '\0') {
+ if(n == nb) {
+ return;
+ } else {
+ fprintf(stderr,
+ "Selector: Missing value in `%s'.\n", string);
+ exit(EXIT_FAILURE);
+ }
+ }
+ current_value = 0;
+ gotone = 0;
+ } else {
+ fprintf(stderr,
+ "Selector: Too many values in `%s'.\n", string);
+ exit(EXIT_FAILURE);
+ }
+ } else {
+ fprintf(stderr,
+ "Selector: Empty integer value in `%s'.\n", string);
+ exit(EXIT_FAILURE);
+ }
+ } else {
+ fprintf(stderr,
+ "Selector: Syntax error in `%s'.\n", string);
+ exit(EXIT_FAILURE);