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