Exemplo n.º 1
0
static void
dofile(		/* plot a file */
	int  optc,
	char  *optv[],
	char  *file
)
{
	char  stmp[256];
	int  i;
						/* start fresh */
	mgclearall();
						/* type options first */
	for (i = 0; i < optc; i++)
		if (istyp(optv[i])) {
			sprintf(stmp, "include=%s.plt", optv[i]+1);
			setmgvar(progname, stdin, stmp);
		} else
			i++;
						/* file next */
	mgload(file);
						/* variable options last */
	for (i = 0; i < optc; i++)
		if (isvar(optv[i])) {
			sprintf(stmp, "%s=%s", optv[i]+1, optv[i+1]);
			setmgvar(progname, stdin, stmp);
			i++;
		}
						/* graph it */
	mgraph();
}
Exemplo n.º 2
0
void
dofile(		/* plot a file */
	int  optc,
	char  *optv[],
	char  *file
)
{
	int  width = 79;
	int  length = 21;
	char  stmp[256];
	int  i;
						/* start fresh */
	mgclearall();
						/* load file */
	mgload(file);
						/* do options */
	for (i = 0; i < optc; i += 2)
		if (optv[i][0] == '+') {
			sprintf(stmp, "%s=%s", optv[i]+1, optv[i+1]);
			setmgvar("command line", stdin, stmp);
		} else
			switch (optv[i][1]) {
			case 'w':
				width = atoi(optv[i+1]);
				break;
			case 'l':
				length = atoi(optv[i+1]);
				break;
			default:
				fprintf(stderr, "%s: unknown option: %s\n",
						progname, optv[i]);
				quit(1);
			}

						/* graph it */
	cgraph(width, length);
}
Exemplo n.º 3
0
void
mgload(			/* load a file */
char  *file
)
{
	FILE  *fp;
	char  sbuf[MAXLINE], *fgets();
	int  inquote;
	register char  *cp, *cp2;

	if (file == NULL) {
		fp = stdin;
		file = "<stdin>";
	} else if ((fp = fopen(file, "r")) == NULL) {
		fprintf(stderr, "%s: Cannot open: %s\n", progname, file);
		quit(1);
	}
	while (fgets(sbuf+1, sizeof(sbuf)-1, fp) != NULL) {
		inquote = 0;
		cp2 = sbuf;
		for (cp = sbuf+1; *cp; cp++)	/* condition the input line */
			switch (*cp) {
			case '#':
				if (!inquote) {
					cp[0] = '\n';
					cp[1] = '\0';
					break;
				}
				*cp2++ = *cp;
				break;
			case '"':
				inquote = !inquote;
				break;
			case '\\':
				if (!cp[1])
					break;
				if (cp[1] == '\n') {
					cp[0] = '\0';
					fgets(cp, sizeof(sbuf)-(cp-sbuf), fp);
					cp--;
					break;
				}
				*cp2++ = *++cp;
				break;
			case ' ':
			case '\t':
			case '\n':
				if (!inquote)
					break;
				*cp2++ = *cp;
				break;
			default:
				*cp2++ = *cp;
				break;
			}
		*cp2 = '\0';
		if (inquote) {
			fputs(sbuf, stderr);
			fprintf(stderr, "%s: %s: Missing quote\n",
					progname, file);
			quit(1);
		}
		if (sbuf[0])
			setmgvar(file, fp, sbuf);
	}
	if (fp != stdin)
		fclose(fp);
}