diff options
author | Keith M Wesolowski <wesolows@foobazco.org> | 2014-08-20 20:04:47 +0000 |
---|---|---|
committer | Keith M Wesolowski <wesolows@foobazco.org> | 2014-08-20 20:04:47 +0000 |
commit | 5f00496ef2e39b976b062f196ff01a99fd4864a4 (patch) | |
tree | 20be9cbc8f4b7ed3e616ce23552728083801e846 /usr/src/cmd/parted/table.c | |
parent | af59b1a40df03681c1c8129aea7b1f5f52f2bcea (diff) | |
parent | 86bb58aec7165f8a0303564575c65e5a2ad58bf1 (diff) | |
download | illumos-joyent-release-20140821.tar.gz |
[illumos-gate merge]20140821release-20140821
commit 86bb58aec7165f8a0303564575c65e5a2ad58bf1
5095 panic when adding a duplicate dbuf to dn_dbufs
commit 60a61f7adabc73a7a0cb70d200ac2a6735f4a6e8
5092 env files don't need to define LOCKNAME by default
5091 illumos.sh env file's LOCKNAME definition is busted
commit 5e3f545c431ec4bce3e1b52f3f81bc9befe501f2
4989 removal of ntfsprogs and parted
commit ba3594ba9b5dd4c846c472a8d657edcb7c8109ac
5066 remove support for non-ANSI compilation
5068 Remove SCCSID() macro from <macros.h>
commit d8ccf998f9c944b8cf27ed840c376f9b79ebce5c
5087 8-bit inline atomic {add,or,and} use wrong reg constraints on x86
Manifests:
usr/src/pkg/manifests/SUNWntfsprogs.mf (torch library)
usr/src/pkg/manifests/SUNWparted.mf (torch headers)
usr/src/pkg/manifests/system-file-system-ntfsprogs.mf
usr/src/pkg/manifests/system-storage-parted.mf
Diffstat (limited to 'usr/src/cmd/parted/table.c')
-rw-r--r-- | usr/src/cmd/parted/table.c | 243 |
1 files changed, 0 insertions, 243 deletions
diff --git a/usr/src/cmd/parted/table.c b/usr/src/cmd/parted/table.c deleted file mode 100644 index 0a5ed6a409..0000000000 --- a/usr/src/cmd/parted/table.c +++ /dev/null @@ -1,243 +0,0 @@ -/* - * TODO: - make right and centered alignment possible - */ -/* - parted - a frontend to libparted - Copyright (C) 2006, 2007 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - - -#include <config.h> - -#include <stdio.h> -#include <stdlib.h> - -#include <assert.h> -#include <wchar.h> -#include <string.h> - -#include "xalloc.h" -#include "strlist.h" - -#ifdef ENABLE_NLS -# define L_(str) L##str -#else -# define L_(str) str -# ifdef wchar_t -# undef wchar_t -# endif -# define wchar_t char -# define wcslen strlen -# define wcswidth strnlen -# define wcscat strcat -# define wcsdup xstrdup -#endif - - -static const unsigned int MAX_WIDTH = 512; -static const wchar_t* DELIMITER = L_(" "); -static const wchar_t* COLSUFFIX = L_("\n"); - -typedef struct -{ - unsigned int ncols; - unsigned int nrows; - wchar_t*** rows; - int* widths; -} Table; - - -Table* table_new(int ncols) -{ - assert ( ncols >= 0 ); - - Table *t = xmalloc (sizeof(*t)); - - t->ncols = ncols; - t->nrows = 0; - t->rows = (wchar_t***)NULL; - t->widths = NULL; - - return t; -} - - -void table_destroy (Table* t) -{ - unsigned int r, c; - - assert (t); - assert (t->ncols > 0); - - for (r = 0; r < t->nrows; ++r) - { - for (c = 0; c < t->ncols; ++c) - free (t->rows[r][c]); - free (t->rows[r]); - } - - if (t->rows) - free (t->rows); - - if (t->widths) - free (t->widths); - - free (t); -} - - -static int max (int x, int y) -{ - return x > y ? x : y; -} - - -static void table_calc_column_widths (Table* t) -{ - unsigned int r, c; - - assert(t); - assert(t->ncols > 0); - - if (!t->widths) - t->widths = xmalloc (t->ncols * sizeof(t->widths[0])); - - for (c = 0; c < t->ncols; ++c) - t->widths[c] = 0; - - for (r = 0; r < t->nrows; ++r) - for (c = 0; c < t->ncols; ++c) - { - t->widths[c] = max ( t->widths[c], - wcswidth(t->rows[r][c], - MAX_WIDTH) ); - } -} - - -/* - * add a row which is a string array of ncols elements. - * 'row' will get freed by table_destroy; you must not free it - * yourself. - */ -void table_add_row (Table* t, wchar_t** row) -{ - assert(t); - - /*unsigned int i; - fputs ("adding row: ", stdout); - for (i = 0; i < t->ncols; ++i) - printf("[%s]", row[i]); - putchar ('\n');*/ - - t->rows = xrealloc (t->rows, (t->nrows + 1) * sizeof(wchar_t***)); - - t->rows[t->nrows] = row; - - ++t->nrows; - - table_calc_column_widths (t); -} - - -void table_add_row_from_strlist (Table* t, StrList* list) -{ - wchar_t** row = xmalloc (str_list_length(list) * sizeof(*row)); - int i = 0; - - while (list) - { - row[i] = wcsdup (list->str); - if (row[i] == NULL) - xalloc_die (); - - - list = list->next; - ++i; - } - - table_add_row (t, row); -} - - -/* render a row */ -static void table_render_row (Table* t, int rownum, int ncols, wchar_t** s) -{ - wchar_t** row = t->rows[rownum]; - int len = 1, i; - size_t newsize; - - assert(t); - assert(s != NULL); - - for (i = 0; i < ncols; ++i) - len += t->widths[i] + wcslen(DELIMITER); - - len += wcslen(COLSUFFIX); - - newsize = (wcslen(*s) + len + 1) * sizeof(wchar_t); - *s = xrealloc (*s, newsize); - - for (i = 0; i < ncols; ++i) - { - int j; - int nspaces = max(t->widths[i] - wcswidth(row[i], MAX_WIDTH), - 0); - wchar_t* pad = xmalloc ((nspaces + 1) * sizeof(*pad)); - - for (j = 0; j < nspaces; ++j) - pad[j] = L' '; - - pad[nspaces] = L_('\0'); - - wcscat (*s, row[i]); - wcscat (*s, pad); - if (i + 1 < ncols) - wcscat (*s, DELIMITER); - - free (pad); - pad = NULL; - } - - wcscat (*s, COLSUFFIX); -} - - -/* - * Render the rows. - * \p s must be a null-terminated string. - */ -static void table_render_rows (Table* t, wchar_t** s) -{ - unsigned int i; - - assert (**s == L_('\0')); - for (i = 0; i < t->nrows; ++i) - table_render_row (t, i, t->ncols, s); -} - -/* - * Render the table to a string. - * You are responsible for freeing the returned string. - */ -wchar_t* table_render(Table* t) -{ - wchar_t* s = xmalloc (sizeof(*s)); - - *s = L_('\0'); - table_render_rows (t, &s); - return s; -} |