xref: /netbsd-src/external/bsd/ipf/dist/lib/printfieldhdr.c (revision 64a05fe87b1061240121b2919b3f1dcb35684da5)
1 /*	$NetBSD: printfieldhdr.c,v 1.3 2013/10/20 03:09:11 christos Exp $	*/
2 
3 /*
4  * Copyright (C) 2012 by Darren Reed.
5  *
6  * See the IPFILTER.LICENCE file for details on licencing.
7  *
8  * Id: printfieldhdr.c,v 1.1.1.2 2012/07/22 13:44:40 darrenr Exp $
9  */
10 
11 #include "ipf.h"
12 #include <ctype.h>
13 
14 
15 void
printfieldhdr(words,field)16 printfieldhdr(words, field)
17 	wordtab_t *words, *field;
18 {
19 	wordtab_t *w;
20 	char *s, *t;
21 
22 	if (field->w_value == -2) {
23 		for (w = words; w->w_word != NULL; ) {
24 			if (w->w_value > 0) {
25 				printfieldhdr(words, w);
26 				w++;
27 				if (w->w_value > 0)
28 					putchar('\t');
29 			} else {
30 				w++;
31 			}
32 		}
33 		return;
34 	}
35 
36 	for (w = words; w->w_word != NULL; w++) {
37 		if (w->w_value == field->w_value) {
38 			if (w->w_word == field->w_word) {
39 				s = strdup(w->w_word);
40 			} else {
41 				s = NULL;
42 			}
43 
44 			if ((w->w_word != field->w_word) || (s == NULL)) {
45 				PRINTF("%s", field->w_word);
46 			} else {
47 				for (t = s; *t != '\0'; t++) {
48 					if (ISALPHA(*t) && ISLOWER(*t))
49 						*t = TOUPPER(*t);
50 				}
51 				PRINTF("%s", s);
52 				free(s);
53 			}
54 		}
55 	}
56 }
57