1 /*
2  *
3  *  Copyright (c) 2016, Red Hat, Inc.
4  *  Copyright (c) 2016, Masatake YAMATO
5  *
6  *  Author: Masatake YAMATO <yamato@redhat.com>
7  *
8  *   This source code is released for free distribution under the terms of the
9  *   GNU General Public License version 2 or (at your option) any later version.
10  *
11  */
12 
13 #include "general.h"
14 #include "param.h"
15 #include "param_p.h"
16 #include "parse.h"
17 
18 #include <string.h>
19 
20 
paramColprintTableNew(void)21 extern struct colprintTable * paramColprintTableNew (void)
22 {
23 	return colprintTableNew ("L:LANGUAGE", "L:NAME","L:DESCRIPTION", NULL);
24 }
25 
paramColprintAddParameter(struct colprintTable * table,langType language,const parameterHandlerTable * const paramHandler)26 extern void paramColprintAddParameter (struct colprintTable *table,
27 									   langType language,
28 									   const parameterHandlerTable *const paramHandler)
29 {
30 	struct colprintLine *line = colprintTableGetNewLine(table);
31 
32 	colprintLineAppendColumnCString (line, getLanguageName (language));
33 	colprintLineAppendColumnCString (line, paramHandler->name);
34 	colprintLineAppendColumnCString (line, paramHandler->desc);
35 }
36 
paramColprintCompareLines(struct colprintLine * a,struct colprintLine * b)37 static int paramColprintCompareLines (struct colprintLine *a , struct colprintLine *b)
38 {
39 	const char *a_parser = colprintLineGetColumn (a, 0);
40 	const char *b_parser = colprintLineGetColumn (b, 0);
41 
42 	int r;
43 	r = strcmp (a_parser, b_parser);
44 	if (r != 0)
45 		return r;
46 
47 	const char *a_name = colprintLineGetColumn (a, 1);
48 	const char *b_name = colprintLineGetColumn (b, 1);
49 
50 	return strcmp(a_name, b_name);
51 }
52 
paramColprintTablePrint(struct colprintTable * table,bool noparser,bool withListHeader,bool machinable,FILE * fp)53 extern void paramColprintTablePrint (struct colprintTable *table, bool noparser,
54 									bool withListHeader, bool machinable, FILE *fp)
55 {
56 	colprintTableSort (table, paramColprintCompareLines);
57 	colprintTablePrint (table, noparser? 1: 0, withListHeader, machinable, fp);
58 }
59