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