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