include libuuid/Makemodule.am
include libblkid/Makemodule.am
include libmount/Makemodule.am
-include libfdisk/Makemodule.am
include libsmartcols/Makemodule.am
+include libfdisk/Makemodule.am
include schedutils/Makemodule.am
include text-utils/Makemodule.am
dnl
-dnl libfdisk is enabled all time if possible
+dnl libfdisk is enabled at all times if possible
dnl
UL_BUILD_INIT([libfdisk], [check])
UL_REQUIRES_BUILD([libfdisk], [libuuid])
+UL_REQUIRES_BUILD([libfdisk], [libsmartcols])
AM_CONDITIONAL([BUILD_LIBFDISK], [test "x$build_libfdisk" = xyes])
UL_BUILD_INIT([fdisk], [check])
cfdisk_LDADD += libblkid.la
endif
+if BUILD_LIBSMARTCOLS
+cfdisk_CFLAGS += -I$(ul_libsmartcols_incdir)
+cfdisk_LDADD += libsmartcols.la
+endif
+
if HAVE_SLANG
cfdisk_LDADD += -lslang
else
#include <signal.h>
#include <ctype.h>
#include <getopt.h>
+#include <libsmartcols.h>
#ifdef HAVE_SLANG_H
# include <slang.h>
struct fdisk_partition *pa;
struct fdisk_label *lb;
struct fdisk_iter *itr = NULL;
- struct tt *tt = NULL;
+ struct libscols_table *table = NULL;
+ struct libscols_iter *s_itr = NULL;
char *res = NULL;
size_t i;
int tree = 0;
- struct tt_line *ln, *ln_cont = NULL;
+ struct libscols_line *ln, *ln_cont = NULL;
DBG(FRONTEND, ul_debug("table: convert to string"));
while (fdisk_table_next_partition(tb, itr, &pa) == 0) {
if (fdisk_partition_is_nested(pa)) {
DBG(FRONTEND, ul_debug("table: nested detected, using tree"));
- tree = TT_FL_TREE;
+ tree = SCOLS_FL_TREE;
break;
}
}
- tt = tt_new_table(TT_FL_FREEDATA | TT_FL_MAX | tree);
- if (!tt)
+ table = scols_new_table(NULL);
+ if (!table)
goto done;
+ scols_table_set_max(table, 1);
+ scols_table_set_tree(table, tree);
/* headers */
for (i = 0; i < cf->ncols; i++) {
col = fdisk_label_get_column(lb, cf->cols[i]);
if (col) {
- int fl = col->tt_flags;
+ int fl = col->scols_flags;
if (tree && col->id == FDISK_COL_DEVICE)
- fl |= TT_FL_TREE;
- tt_define_column(tt, col->name, col->width, fl);
+ fl |= SCOLS_FL_TREE;
+ if (!scols_table_new_column(table, col->name, col->width, fl))
+ goto done;
}
}
fdisk_reset_iter(itr, FDISK_ITER_FORWARD);
while (fdisk_table_next_partition(tb, itr, &pa) == 0) {
- struct tt_line *parent = fdisk_partition_is_nested(pa) ? ln_cont : NULL;
+ struct libscols_line *parent = fdisk_partition_is_nested(pa) ? ln_cont : NULL;
- ln = tt_add_line(tt, parent);
+ ln = scols_table_new_line(table, parent);
if (!ln)
goto done;
for (i = 0; i < cf->ncols; i++) {
continue;
if (fdisk_partition_to_string(pa, cf->cxt, col->id, &cdata))
continue;
- tt_line_set_data(ln, i, cdata);
+ scols_line_set_data(ln, i, cdata);
}
if (tree && fdisk_partition_is_container(pa))
ln_cont = ln;
- tt_line_set_userdata(ln, (void *) pa);
+ scols_line_set_userdata(ln, (void *) pa);
fdisk_ref_partition(pa);
}
- if (tt_is_empty(tt))
+ if (scols_table_is_empty(table))
goto done;
- tt_set_termreduce(tt, ARROW_CURSOR_WIDTH);
- tt_print_table_to_string(tt, &res);
+ scols_table_reduce_termwidth(table, ARROW_CURSOR_WIDTH);
+ scols_print_table_to_string(table, &res);
- /* tt_* code might to reorder lines, let's reorder @tb according to the
+ /* scols_* code might reorder lines, let's reorder @tb according to the
* final output (it's no problem because partitions are addressed by
* parno stored within struct fdisk_partition) */
fdisk_table_remove_partition(tb, pa);
/* add all in the right order */
- i = 0;
- while (tt_get_output_line(tt, i++, &ln) == 0) {
- struct fdisk_partition *pa = tt_line_get_userdata(ln);
+ s_itr = scols_new_iter(SCOLS_ITER_FORWARD);
+ if (!s_itr)
+ goto done;
+
+ while (scols_table_next_line(table, s_itr, &ln) == 0) {
+ struct fdisk_partition *pa = scols_line_get_userdata(ln);
fdisk_table_add_partition(tb, pa);
fdisk_unref_partition(pa);
}
done:
- tt_free_table(tt);
+ scols_unref_table(table);
+ scols_free_iter(s_itr);
fdisk_free_iter(itr);
return res;
libfdisk_la_CFLAGS += -I$(ul_libuuid_incdir)
endif
+if BUILD_LIBSMARTCOLS
+libfdisk_la_LIBADD += libsmartcols.la
+libfdisk_la_DEPENDENCIES += libsmartcols.la
+libfdisk_la_CFLAGS += -I$(ul_libsmartcols_incdir)
+endif
+
check_PROGRAMS += \
test_fdisk_ask \
test_fdisk_utils
libfdisk_tests_ldflags += libuuid.la
endif
+if BUILD_LIBSMARTCOLS
+libfdisk_tests_ldflags += libsmartcols.la
+endif
+
test_fdisk_ask_SOURCES = libfdisk/src/ask.c
test_fdisk_ask_CFLAGS = $(libfdisk_tests_cflags)
test_fdisk_ask_LDFLAGS = $(libfdisk_tests_ldflags)
#include <fcntl.h>
#include <errno.h>
#include <sys/param.h>
+#include <libsmartcols.h>
#include "nls.h"
#include "blkdev.h"
static const struct fdisk_column bsd_columns[] =
{
{ FDISK_COL_DEVICE, N_("Slice"), 1, 0 },
- { FDISK_COL_START, N_("Start"), 5, TT_FL_RIGHT },
- { FDISK_COL_END, N_("End"), 5, TT_FL_RIGHT },
- { FDISK_COL_SECTORS, N_("Sectors"), 5, TT_FL_RIGHT },
- { FDISK_COL_CYLINDERS, N_("Cylinders"), 5, TT_FL_RIGHT },
- { FDISK_COL_SIZE, N_("Size"), 5, TT_FL_RIGHT },
+ { FDISK_COL_START, N_("Start"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_END, N_("End"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_SECTORS, N_("Sectors"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_CYLINDERS, N_("Cylinders"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_SIZE, N_("Size"), 5, SCOLS_FL_RIGHT },
{ FDISK_COL_TYPE, N_("Type"), 8, 0 },
- { FDISK_COL_FSIZE, N_("Fsize"), 5, TT_FL_RIGHT },
- { FDISK_COL_BSIZE, N_("Bsize"), 5, TT_FL_RIGHT },
- { FDISK_COL_CPG, N_("Cpg"), 5, TT_FL_RIGHT }
+ { FDISK_COL_FSIZE, N_("Fsize"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_BSIZE, N_("Bsize"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_CPG, N_("Cpg"), 5, SCOLS_FL_RIGHT }
};
/*
#include "fdiskP.h"
#include <ctype.h>
+#include <libsmartcols.h>
#define MAXIMUM_PARTS 60
#define ACTIVE_FLAG 0x80
/* basic */
{ FDISK_COL_DEVICE, N_("Device"), 10, 0 },
{ FDISK_COL_BOOT, N_("Boot"), 1, 0 },
- { FDISK_COL_START, N_("Start"), 5, TT_FL_RIGHT },
- { FDISK_COL_END, N_("End"), 5, TT_FL_RIGHT },
- { FDISK_COL_SECTORS, N_("Sectors"), 5, TT_FL_RIGHT },
- { FDISK_COL_CYLINDERS, N_("Cylinders"), 5, TT_FL_RIGHT },
- { FDISK_COL_SIZE, N_("Size"), 5, TT_FL_RIGHT, FDISK_COLFL_EYECANDY },
- { FDISK_COL_TYPEID, N_("Id"), 2, TT_FL_RIGHT },
- { FDISK_COL_TYPE, N_("Type"), 0.1, TT_FL_TRUNC },
+ { FDISK_COL_START, N_("Start"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_END, N_("End"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_SECTORS, N_("Sectors"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_CYLINDERS, N_("Cylinders"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_SIZE, N_("Size"), 5, SCOLS_FL_RIGHT, FDISK_COLFL_EYECANDY },
+ { FDISK_COL_TYPEID, N_("Id"), 2, SCOLS_FL_RIGHT },
+ { FDISK_COL_TYPE, N_("Type"), 0.1, SCOLS_FL_TRUNC },
/* expert mode */
- { FDISK_COL_SADDR, N_("Start-C/H/S"), 1, TT_FL_RIGHT, FDISK_COLFL_DETAIL },
- { FDISK_COL_EADDR, N_("End-C/H/S"), 1, TT_FL_RIGHT, FDISK_COLFL_DETAIL },
- { FDISK_COL_ATTR, N_("Attrs"), 2, TT_FL_RIGHT, FDISK_COLFL_DETAIL }
+ { FDISK_COL_SADDR, N_("Start-C/H/S"), 1, SCOLS_FL_RIGHT, FDISK_COLFL_DETAIL },
+ { FDISK_COL_EADDR, N_("End-C/H/S"), 1, SCOLS_FL_RIGHT, FDISK_COLFL_DETAIL },
+ { FDISK_COL_ATTR, N_("Attrs"), 2, SCOLS_FL_RIGHT, FDISK_COLFL_DETAIL }
};
#include <sys/types.h>
#include <unistd.h>
+
#include "c.h"
#include "libfdisk.h"
#include "nls.h" /* temporary before dialog API will be implamented */
#include "list.h"
-#include "tt.h"
#include "debug.h"
#include <stdio.h>
#include <stdarg.h>
int id; /* FDISK_COL_* */
const char *name; /* column header */
double width;
- int tt_flags; /* TT_FL_* */
+ int scols_flags; /* SCOLS_FL_* */
int flags; /* FDISK_COLFL_* */
};
#include <errno.h>
#include <ctype.h>
#include <uuid.h>
+#include <libsmartcols.h>
#include "fdiskP.h"
{
/* basic */
{ FDISK_COL_DEVICE, N_("Device"), 10, 0 },
- { FDISK_COL_START, N_("Start"), 5, TT_FL_RIGHT },
- { FDISK_COL_END, N_("End"), 5, TT_FL_RIGHT },
- { FDISK_COL_SECTORS, N_("Sectors"), 5, TT_FL_RIGHT },
- { FDISK_COL_CYLINDERS, N_("Cylinders"), 5, TT_FL_RIGHT },
- { FDISK_COL_SIZE, N_("Size"), 5, TT_FL_RIGHT, FDISK_COLFL_EYECANDY },
- { FDISK_COL_TYPE, N_("Type"), 0.1, TT_FL_TRUNC, FDISK_COLFL_EYECANDY },
+ { FDISK_COL_START, N_("Start"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_END, N_("End"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_SECTORS, N_("Sectors"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_CYLINDERS, N_("Cylinders"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_SIZE, N_("Size"), 5, SCOLS_FL_RIGHT, FDISK_COLFL_EYECANDY },
+ { FDISK_COL_TYPE, N_("Type"), 0.1, SCOLS_FL_TRUNC, FDISK_COLFL_EYECANDY },
/* expert */
{ FDISK_COL_TYPEID, N_("Type-UUID"), 36, 0, FDISK_COLFL_DETAIL },
{ FDISK_COL_UUID, N_("UUID"), 36, 0, FDISK_COLFL_DETAIL },
- { FDISK_COL_NAME, N_("Name"), 0.2, TT_FL_TRUNC, FDISK_COLFL_DETAIL },
+ { FDISK_COL_NAME, N_("Name"), 0.2, SCOLS_FL_TRUNC, FDISK_COLFL_DETAIL },
{ FDISK_COL_ATTR, N_("Attrs"), 0, 0, FDISK_COLFL_DETAIL }
};
* Arnaldo Carvalho de Melo <acme@conectiva.com.br>, Mar 1999,
* Phillip Kesling <pkesling@sgi.com>, Mar 2003.
*/
+
+#include <libsmartcols.h>
#include "c.h"
#include "nls.h"
#include "all-io.h"
static const struct fdisk_column sgi_columns[] =
{
{ FDISK_COL_DEVICE, N_("Device"), 10, 0 },
- { FDISK_COL_START, N_("Start"), 5, TT_FL_RIGHT },
- { FDISK_COL_END, N_("End"), 5, TT_FL_RIGHT },
- { FDISK_COL_SECTORS, N_("Sectors"), 5, TT_FL_RIGHT },
- { FDISK_COL_CYLINDERS, N_("Cylinders"), 5, TT_FL_RIGHT },
- { FDISK_COL_SIZE, N_("Size"), 5, TT_FL_RIGHT, FDISK_COLFL_EYECANDY },
- { FDISK_COL_TYPEID, N_("Id"), 2, TT_FL_RIGHT },
- { FDISK_COL_TYPE, N_("Type"), 0.1, TT_FL_TRUNC, FDISK_COLFL_EYECANDY },
- { FDISK_COL_ATTR, N_("Attrs"), 0, TT_FL_RIGHT }
+ { FDISK_COL_START, N_("Start"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_END, N_("End"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_SECTORS, N_("Sectors"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_CYLINDERS, N_("Cylinders"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_SIZE, N_("Size"), 5, SCOLS_FL_RIGHT, FDISK_COLFL_EYECANDY },
+ { FDISK_COL_TYPEID, N_("Id"), 2, SCOLS_FL_RIGHT },
+ { FDISK_COL_TYPE, N_("Type"), 0.1, SCOLS_FL_TRUNC, FDISK_COLFL_EYECANDY },
+ { FDISK_COL_ATTR, N_("Attrs"), 0, SCOLS_FL_RIGHT }
};
static const struct fdisk_label_operations sgi_operations =
#include <unistd.h> /* write */
#include <sys/ioctl.h> /* ioctl */
+#include <libsmartcols.h>
+
#include "nls.h"
#include "blkdev.h"
#include "bitops.h"
static const struct fdisk_column sun_columns[] =
{
{ FDISK_COL_DEVICE, N_("Device"), 10, 0 },
- { FDISK_COL_START, N_("Start"), 5, TT_FL_RIGHT },
- { FDISK_COL_END, N_("End"), 5, TT_FL_RIGHT },
- { FDISK_COL_SECTORS, N_("Sectors"), 5, TT_FL_RIGHT },
- { FDISK_COL_CYLINDERS, N_("Cylinders"), 5, TT_FL_RIGHT },
- { FDISK_COL_SIZE, N_("Size"), 5, TT_FL_RIGHT },
- { FDISK_COL_TYPEID, N_("Id"), 2, TT_FL_RIGHT },
- { FDISK_COL_TYPE, N_("Type"), 0.1, TT_FL_TRUNC },
- { FDISK_COL_ATTR, N_("Flags"), 0, TT_FL_RIGHT }
+ { FDISK_COL_START, N_("Start"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_END, N_("End"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_SECTORS, N_("Sectors"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_CYLINDERS, N_("Cylinders"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_SIZE, N_("Size"), 5, SCOLS_FL_RIGHT },
+ { FDISK_COL_TYPEID, N_("Id"), 2, SCOLS_FL_RIGHT },
+ { FDISK_COL_TYPE, N_("Type"), 0.1, SCOLS_FL_TRUNC },
+ { FDISK_COL_ATTR, N_("Flags"), 0, SCOLS_FL_RIGHT }
};
const struct fdisk_label_operations sun_operations =
+#include <libsmartcols.h>
#include "fdiskP.h"
/**
char **data)
{
int *org_cols = cols, rc = 0;
- struct tt *tt = NULL;
+ struct libscols_table *table = NULL;
const struct fdisk_column *col;
struct fdisk_partition *pa = NULL;
struct fdisk_iter itr;
return rc;
}
- tt = tt_new_table(TT_FL_FREEDATA);
- if (!tt) {
+ table = scols_new_table(NULL);
+ if (!table) {
rc = -ENOMEM;
goto done;
}
for (j = 0; j < ncols; j++) {
col = fdisk_label_get_column(cxt->label, cols[j]);
if (col)
- tt_define_column(tt, col->name, col->width, col->tt_flags);
+ if (!scols_table_new_column(table, col->name, col->width, col->scols_flags))
+ goto done;
}
fdisk_reset_iter(&itr, FDISK_ITER_FORWARD);
- /* convert partition to string and add to tt */
+ /* convert partition to string and add to table */
while (fdisk_table_next_partition(tb, &itr, &pa) == 0) {
- struct tt_line *ln = tt_add_line(tt, NULL);
+ struct libscols_line *ln = scols_table_new_line(table, NULL);
if (!ln) {
rc = -ENOMEM;
goto done;
continue;
if (fdisk_partition_to_string(pa, cxt, col->id, &cdata))
continue;
- tt_line_set_data(ln, j, cdata);
+ scols_line_set_data(ln, j, cdata);
}
}
rc = 0;
- if (!tt_is_empty(tt))
- rc = tt_print_table_to_string(tt, data);
+ if (!scols_table_is_empty(table))
+ rc = scols_print_table_to_string(table, data);
else
- DBG(TAB, ul_debugobj(tb, "tt empty"));
+ DBG(TAB, ul_debugobj(tb, "table empty"));
done:
if (org_cols != cols)
free(cols);
- tt_free_table(tt);
+ scols_unref_table(table);
return rc;
}