| 48 |  | } | 
| 49 |  | break; | 
| 50 |  | } | 
| 51 | < | setvariable(buf); | 
| 51 | > | if (setvariable(buf, matchvar) < 0) { | 
| 52 | > | fprintf(stderr, "%s: unknown variable: %s\n", | 
| 53 | > | rfname, buf); | 
| 54 | > | quit(1); | 
| 55 | > | } | 
| 56 |  | } | 
| 57 |  | fclose(fp); | 
| 58 |  | } | 
| 59 |  |  | 
| 60 |  |  | 
| 61 | < | setvariable(ass)                /* assign variable according to string */ | 
| 61 | > | int | 
| 62 | > | setvariable(ass, mv)            /* assign variable according to string */ | 
| 63 |  | register char   *ass; | 
| 64 | + | VARIABLE        *(*mv)(); | 
| 65 |  | { | 
| 66 |  | char    varname[32]; | 
| 67 |  | int     n; | 
| 77 |  | *cp++ = *ass++; | 
| 78 |  | *cp = '\0'; | 
| 79 |  | if (!varname[0]) | 
| 80 | < | return;         /* no variable name! */ | 
| 80 | > | return(0);      /* no variable name! */ | 
| 81 |  | /* trim value */ | 
| 82 |  | while (isspace(*ass) || *ass == '=') | 
| 83 |  | ass++; | 
| 84 |  | for (n = strlen(ass); n > 0; n--) | 
| 85 |  | if (!isspace(ass[n-1])) | 
| 86 |  | break; | 
| 87 | < | if (!n) { | 
| 88 | < | if (!nowarn) | 
| 83 | < | fprintf(stderr, | 
| 84 | < | "%s: warning - missing value for variable '%s'\n", | 
| 85 | < | progname, varname); | 
| 86 | < | return; | 
| 87 | < | } | 
| 87 | > | if (!n) | 
| 88 | > | return(0);      /* no assignment */ | 
| 89 |  | /* match variable from list */ | 
| 90 | < | vp = matchvar(varname); | 
| 91 | < | if (vp == NULL) { | 
| 92 | < | fprintf(stderr, "%s: unknown variable '%s'\n", | 
| 92 | < | progname, varname); | 
| 93 | < | quit(1); | 
| 94 | < | } | 
| 90 | > | vp = (*mv)(varname); | 
| 91 | > | if (vp == NULL) | 
| 92 | > | return(-1); | 
| 93 |  | /* assign new value */ | 
| 94 |  | if (i = vp->nass) { | 
| 95 |  | cp = vp->value; | 
| 116 |  | } | 
| 117 |  | if (isspace(*cp))               /* remove trailing space */ | 
| 118 |  | *cp = '\0'; | 
| 119 | < | vp->nass++; | 
| 119 | > | return(++vp->nass); | 
| 120 |  | } | 
| 121 |  |  | 
| 122 |  |  | 
| 279 |  | for (j = 0; j < vdef(i); j++) {     /* print each assignment */ | 
| 280 |  | fputs(vnam(i), fp); | 
| 281 |  | fputs("= ", fp); | 
| 282 | < | k = clipline = ( vv[i].fixval == catvalues ? 64 : 320 ) | 
| 282 | > | k = clipline = ( vv[i].fixval == catvalues ? 64 : 120 ) | 
| 283 |  | - strlen(vnam(i)) ; | 
| 284 |  | cp = nvalue(i, j); | 
| 285 |  | while (*cp) { | 
| 286 |  | putc(*cp++, fp); | 
| 287 |  | if (--k <= 0) {             /* line too long */ | 
| 288 |  | while (*cp && !isspace(*cp)) | 
| 289 | < | putc(*cp++, fp);    /* finish this word */ | 
| 289 | > | fputc(*cp++, fp);   /* finish this word */ | 
| 290 |  | if (*cp) {              /* start new line */ | 
| 291 | < | putc('\n', fp); | 
| 292 | < | fputs(vnam(i), fp); | 
| 293 | < | putc('=', fp); | 
| 291 | > | if (vv[i].fixval == catvalues) { | 
| 292 | > | fputc('\n', fp); | 
| 293 | > | fputs(vnam(i), fp); | 
| 294 | > | fputc('=', fp); | 
| 295 | > | } else | 
| 296 | > | fputs(" \\\n", fp); | 
| 297 |  | k = clipline; | 
| 298 |  | } | 
| 299 |  | } | 
| 300 |  | } | 
| 301 | < | putc('\n', fp); | 
| 301 | > | fputc('\n', fp); | 
| 302 |  | } | 
| 303 |  | fflush(fp); | 
| 304 |  | } |