Provided by: heimdal-dev_7.8.git20221117.28daf24+dfsg-5ubuntu3_amd64 bug

NAME

       rtbl_create,   rtbl_destroy,   rtbl_set_flags,   rtbl_get_flags,   rtbl_set_prefix,   rtbl_set_separator,
       rtbl_set_column_prefix,     rtbl_set_column_affix_by_id,     rtbl_add_column,      rtbl_add_column_by_id,
       rtbl_add_column_entry,  rtbl_add_column_entry_by_id,  rtbl_new_row,  rtbl_format  — format data in simple
       tables

LIBRARY

       The roken library (libroken, -lroken)

SYNOPSIS

       #include <rtbl.h>

       int
       rtbl_add_column(rtbl_t table, const char *column_name, unsigned int flags);

       int
       rtbl_add_column_by_id(rtbl_t   table,   unsigned    int    column_id,    const    char    *column_header,
           unsigned int flags);

       int
       rtbl_add_column_entry(rtbl_t table, const char *column_name, const char *cell_entry);

       int
       rtbl_add_column_entry_by_id(rtbl_t table, unsigned int column_id, const char *cell_entry);

       rtbl_t
       rtbl_create(void);

       void
       rtbl_destroy(rtbl_t table);

       int
       rtbl_new_row(rtbl_t table);

       int
       rtbl_set_column_affix_by_id(rtbl_t    table,    unsigned    int   column_id,   const,   char,   *prefix",
           const char *suffix);

       int
       rtbl_set_column_prefix(rtbl_t table, const char *column_name, const char *prefix);

       unsigned int
       rtbl_get_flags(rtbl_t table);

       void
       rtbl_set_flags(rtbl_t table, unsigned int flags);

       int
       rtbl_set_prefix(rtbl_t table, const char *prefix);

       int
       rtbl_set_separator(rtbl_t table, const char *separator);

       int
       rtbl_format(rtbl_t table, FILE, *file");

DESCRIPTION

       This set of functions assemble a simple table consisting of rows and columns, allowing it to  be  printed
       with  certain options. Typical use would be output from tools such as ls(1) or netstat(1), where you have
       a fixed number of columns, but don't know the column widths before hand.

       A table is created with rtbl_create() and destroyed with rtbl_destroy().

       Global flags on the table are set with rtbl_set_flags and retrieved with rtbl_get_flags.  At present  the
       only defined flag is RTBL_HEADER_STYLE_NONE which suppresses printing the header.

       Before adding data to the table, one or more columns need to be created. This would normally be done with
       rtbl_add_column_by_id(),  column_id  is  any  number of your choice (it's used only to identify columns),
       column_header is the header to print at the top of the column, and  flags  are  flags  specific  to  this
       column.  Currently  the  only  defined  flag  is  RTBL_ALIGN_RIGHT, aligning column entries to the right.
       Columns are printed in the order they are added.

       There's also a way to add columns by column name with rtbl_add_column(), but this is less  flexible  (you
       need unique header names), and is considered deprecated.

       To  add  data  to a column you use rtbl_add_column_entry_by_id(), where the column_id is the same as when
       the column was added (adding data to a non-existent column is  undefined),  and  cell_entry  is  whatever
       string  you  wish  to  include  in  that  cell.  It  should not include newlines.  For columns added with
       rtbl_add_column() you must use rtbl_add_column_entry() instead.

       rtbl_new_row() fills all columns with blank entries until they all have the same number of rows.

       Each  column  can  have  a  separate   prefix   and   suffix,   set   with   rtbl_set_column_affix_by_id;
       rtbl_set_column_prefix allows setting the prefix only by column name. In addition to this, columns may be
       separated by a string set with rtbl_set_separator (by default columns are not seprated by anything).

       The finished table is printed to file with rtbl_format.

EXAMPLES

       This program:

           #include <stdio.h>
           #include <rtbl.h>
           int
           main(int argc, char **argv)
           {
               rtbl_t table;
               table = rtbl_create();
               rtbl_set_separator(table, "  ");
               rtbl_add_column_by_id(table, 0, "Column A", 0);
               rtbl_add_column_by_id(table, 1, "Column B", RTBL_ALIGN_RIGHT);
               rtbl_add_column_by_id(table, 2, "Column C", 0);
               rtbl_add_column_entry_by_id(table, 0, "A-1");
               rtbl_add_column_entry_by_id(table, 0, "A-2");
               rtbl_add_column_entry_by_id(table, 0, "A-3");
               rtbl_add_column_entry_by_id(table, 1, "B-1");
               rtbl_add_column_entry_by_id(table, 2, "C-1");
               rtbl_add_column_entry_by_id(table, 2, "C-2");
               rtbl_add_column_entry_by_id(table, 1, "B-2");
               rtbl_add_column_entry_by_id(table, 1, "B-3");
               rtbl_add_column_entry_by_id(table, 2, "C-3");
               rtbl_add_column_entry_by_id(table, 0, "A-4");
               rtbl_new_row(table);
               rtbl_add_column_entry_by_id(table, 1, "B-4");
               rtbl_new_row(table);
               rtbl_add_column_entry_by_id(table, 2, "C-4");
               rtbl_new_row(table);
               rtbl_format(table, stdout);
               rtbl_destroy(table);
               return 0;
           }

       will output the following:

           Column A  Column B  Column C
           A-1            B-1  C-1
           A-2            B-2  C-2
           A-3            B-3  C-3
           A-4
                          B-4
                               C-4

HEIMDAL                                           June 26, 2004                                          RTBL(3)