Bug #497 » m4-2.patch
| usr.bin/m4/m4.1 28 Dec 2006 00:10:12 -0000 | ||
|---|---|---|
| .Nm | ||
| .Op Fl d Ar flags | ||
| .Op Fl t Ar name | ||
| .Op Fl gs | ||
| .Op Fl Pgs | ||
| .Op Fl D Ar name Ns Op = Ns Ar value | ||
| .Op Fl U Ar name | ||
| .Op Fl I Ar dirname | ||
| ... | ... | |
| .It Fl U Ar name | ||
| Undefine the symbol | ||
| .Ar name . | ||
| .It Fl P | ||
| Prefixes all | ||
| .Nm | ||
| builtin macros with the string | ||
| .Li m4_ . | ||
| This changes the macro names | ||
| .Li dnl | ||
| to | ||
| .Li m4_dnl , | ||
| .Li index | ||
| to | ||
| .Li m4_index , | ||
| and so forth. | ||
| .It Fl I Ar dirname | ||
| Add directory | ||
| .Ar dirname | ||
| usr.bin/m4/main.c 31 Dec 2006 07:34:19 -0000 | ||
|---|---|---|
| int oindex = 0; 		/* diversion index..	       */ | ||
| char null[] = "";		/* as it says.. just a null..  */ | ||
| const char *m4wraps = "";       /* m4wrap string default..     */ | ||
| int m4prefix = 0;		/* prefix keywords with m4_    */ | ||
| char lquote[MAXCCHARS+1] = {LQUOTE};	/* left quote character  (`)   */ | ||
| char rquote[MAXCCHARS+1] = {RQUOTE};	/* right quote character (')   */ | ||
| char scommt[MAXCCHARS+1] = {SCOMMT};	/* start character for comment */ | ||
| ... | ... | |
| 	int c; | ||
| 	int n; | ||
| 	int rval; | ||
| 	const char *optstr = "D:I:PU:gd:o:st:"; | ||
| 	char *p; | ||
| 	setlocale(LC_ALL, ""); | ||
| ... | ... | |
| 	if (signal(SIGINT, SIG_IGN) != SIG_IGN) | ||
| 		signal(SIGINT, onintr); | ||
| 	/* | ||
| 	 * We need to know if -P is there before checking -D and -U. | ||
| 	 */ | ||
| 	while ((c = getopt(argc, argv, optstr)) != -1) | ||
| 		if (c == 'P') | ||
| 			m4prefix = 1; | ||
| 	optind = optreset = 1; | ||
| 	initkwds(); | ||
| 	initspaces(); | ||
| 	STACKMAX = INITSTACKMAX; | ||
| ... | ... | |
| 	outfile = NULL; | ||
| 	resizedivs(MAXOUT); | ||
| 	while ((c = getopt(argc, argv, "gst:d:D:U:o:I:")) != -1) | ||
| 	while ((c = getopt(argc, argv, optstr)) != -1) | ||
| 		switch(c) { | ||
| 		case 'D':               /* define something..*/ | ||
| 			for (p = optarg; *p; p++) | ||
| ... | ... | |
| 		case 'I': | ||
| 			addtoincludepath(optarg); | ||
| 			break; | ||
| 		case 'P': | ||
| 			break; | ||
| 		case 'U':               /* undefine...       */ | ||
| 			remhash(optarg, TOP); | ||
| 			break; | ||
| ... | ... | |
| 	size_t i; | ||
| 	unsigned int h; | ||
| 	ndptr p; | ||
| 	char *k; | ||
| 	for (i = 0; i < MAXKEYS; i++) { | ||
| 		h = hash(keywrds[i].knam); | ||
| 		k = (char *)keywrds[i].knam; | ||
| 		if (m4prefix) { | ||
| 			if (asprintf(&k, "m4_%s", k) == -1) | ||
| 				err(1, "asprintf"); | ||
| 			keywrds[i].knam = k; | ||
| 		} | ||
| 		h = hash(k); | ||
| 		p = (ndptr) xalloc(sizeof(struct ndblock)); | ||
| 		p->nxtptr = hashtab[h % HASHSIZE]; | ||
| 		hashtab[h % HASHSIZE] = p; | ||
- « Previous
- 1
- 2
- Next »