003 File Manager
Current Path:
/usr/src/crypto/heimdal/lib/roken
usr
/
src
/
crypto
/
heimdal
/
lib
/
roken
/
π
..
π
ChangeLog
(61.03 KB)
π
Makefile.am
(4.47 KB)
π
Makefile.in
(126.5 KB)
π
base64-test.c
(2.95 KB)
π
base64.c
(3.69 KB)
π
base64.h
(1.99 KB)
π
bswap.c
(2.01 KB)
π
chown.c
(1.75 KB)
π
cloexec.c
(2.05 KB)
π
closefrom.c
(1.92 KB)
π
concat.c
(2.91 KB)
π
copyhostent.c
(3.07 KB)
π
ct.c
(2.34 KB)
π
daemon.c
(2.36 KB)
π
doxygen.c
(1.89 KB)
π
dumpdata.c
(2.62 KB)
π
ecalloc.3
(2.71 KB)
π
ecalloc.c
(1.96 KB)
π
emalloc.c
(1.91 KB)
π
environment.c
(3.76 KB)
π
eread.c
(1.9 KB)
π
erealloc.c
(1.93 KB)
π
err.c
(1.8 KB)
π
err.hin
(3.02 KB)
π
errx.c
(1.8 KB)
π
esetenv.c
(1.88 KB)
π
estrdup.c
(1.89 KB)
π
ewrite.c
(1.91 KB)
π
fchown.c
(1.75 KB)
π
flock.c
(3.82 KB)
π
fnmatch.c
(5.05 KB)
π
fnmatch.hin
(2.3 KB)
π
freeaddrinfo.c
(1.94 KB)
π
freehostent.c
(2.03 KB)
π
gai_strerror.c
(2.62 KB)
π
get_default_username.c
(2.58 KB)
π
get_window_size.c
(3.38 KB)
π
getaddrinfo-test.c
(4.04 KB)
π
getaddrinfo.c
(10.05 KB)
π
getaddrinfo_hostspec.c
(3.17 KB)
π
getarg.3
(9.56 KB)
π
getarg.c
(15.34 KB)
π
getarg.h
(3.15 KB)
π
getcap.c
(25.29 KB)
π
getcwd.c
(1.94 KB)
π
getdtablesize.c
(2.89 KB)
π
getegid.c
(1.76 KB)
π
geteuid.c
(1.76 KB)
π
getgid.c
(1.75 KB)
π
gethostname.c
(2.34 KB)
π
getifaddrs.c
(32.46 KB)
π
getipnodebyaddr.c
(2.33 KB)
π
getipnodebyname.c
(2.52 KB)
π
getnameinfo.c
(3.51 KB)
π
getnameinfo_verified.c
(3.14 KB)
π
getopt.c
(3.82 KB)
π
getprogname.c
(1.84 KB)
π
gettimeofday.c
(2.43 KB)
π
getuid.c
(1.75 KB)
π
getusershell.c
(4.47 KB)
π
glob.c
(19.59 KB)
π
glob.hin
(3.83 KB)
π
h_errno.c
(1.69 KB)
π
hex-test.c
(3.02 KB)
π
hex.c
(2.85 KB)
π
hex.h
(2.08 KB)
π
hostent_find_fqdn.c
(2.05 KB)
π
hstrerror.c
(2.54 KB)
π
ifaddrs.hin
(2.52 KB)
π
inet_aton.c
(1.94 KB)
π
inet_ntop.c
(3.97 KB)
π
inet_pton.c
(2.94 KB)
π
initgroups.c
(1.75 KB)
π
innetgr.c
(1.79 KB)
π
install-sh
(5.47 KB)
π
iruserok.c
(7.48 KB)
π
issuid.c
(2.01 KB)
π
k_getpwnam.c
(2.08 KB)
π
k_getpwuid.c
(2.07 KB)
π
localtime_r.c
(2.03 KB)
π
lstat.c
(1.76 KB)
π
memmove.c
(2.02 KB)
π
mini_inetd.c
(5.67 KB)
π
missing
(6.14 KB)
π
mkinstalldirs
(671 B)
π
mkstemp.c
(2.4 KB)
π
ndbm_wrap.c
(5.18 KB)
π
ndbm_wrap.h
(3.13 KB)
π
net_read.c
(3.13 KB)
π
net_write.c
(2.9 KB)
π
parse_bytes-test.c
(2.81 KB)
π
parse_bytes.c
(2.55 KB)
π
parse_bytes.h
(2.13 KB)
π
parse_reply-test.c
(3.49 KB)
π
parse_time-test.c
(4.07 KB)
π
parse_time.3
(4.82 KB)
π
parse_time.c
(2.49 KB)
π
parse_time.h
(2.19 KB)
π
parse_units.c
(7.41 KB)
π
parse_units.h
(2.73 KB)
π
putenv.c
(2.51 KB)
π
qsort.c
(5.35 KB)
π
rand.c
(1.84 KB)
π
rcmd.c
(1.92 KB)
π
readv.c
(2.17 KB)
π
realloc.c
(1.83 KB)
π
recvmsg.c
(2.26 KB)
π
resolve-test.c
(4.91 KB)
π
resolve.c
(21.5 KB)
π
resolve.h
(7.26 KB)
π
rkpty.c
(7.89 KB)
π
roken-common.h
(11.68 KB)
π
roken.awk
(875 B)
π
roken.h.in
(27.79 KB)
π
roken_gethostby.c
(7.26 KB)
π
rtbl.3
(6.53 KB)
π
rtbl.c
(12.11 KB)
π
rtbl.h
(3.61 KB)
π
search.hin
(1007 B)
π
sendmsg.c
(5.37 KB)
π
setegid.c
(1.9 KB)
π
setenv.c
(2.37 KB)
π
seteuid.c
(1.9 KB)
π
setprogname.c
(2.44 KB)
π
signal.c
(2.34 KB)
π
simple_exec.c
(7.51 KB)
π
snprintf-test.c
(8.16 KB)
π
snprintf.c
(14.93 KB)
π
socket.c
(7.89 KB)
π
socket_wrapper.c
(40.97 KB)
π
socket_wrapper.h
(4.52 KB)
π
strcasecmp.c
(2 KB)
π
strcollect.c
(2.64 KB)
π
strdup.c
(1.84 KB)
π
strerror.c
(2 KB)
π
strerror_r.c
(2.73 KB)
π
strftime.c
(8.32 KB)
π
strlcat.c
(2.21 KB)
π
strlcpy.c
(2.23 KB)
π
strlwr.c
(1.86 KB)
π
strncasecmp.c
(2.04 KB)
π
strndup.c
(1.96 KB)
π
strnlen.c
(1.79 KB)
π
strpftime-test.c
(6.04 KB)
π
strpftime-test.h
(2.19 KB)
π
strpool.c
(2.74 KB)
π
strptime.c
(9.21 KB)
π
strsep.c
(1.95 KB)
π
strsep_copy.c
(2.22 KB)
π
strtok_r.c
(2.05 KB)
π
strupr.c
(1.86 KB)
π
swab.c
(1.87 KB)
π
test-mem.c
(4.96 KB)
π
test-mem.h
(1.85 KB)
π
test-readenv.c
(3 KB)
π
timegm.c
(2.72 KB)
π
timeval.c
(2.34 KB)
π
tm2time.c
(2.01 KB)
π
tsearch.c
(4.17 KB)
π
unsetenv.c
(2.14 KB)
π
unvis.c
(6.39 KB)
π
verify.c
(2.1 KB)
π
verr.c
(1.79 KB)
π
verrx.c
(1.79 KB)
π
version-script.map
(3.33 KB)
π
vis.c
(11.45 KB)
π
vis.hin
(4.38 KB)
π
vsyslog.c
(3.13 KB)
π
vwarn.c
(1.77 KB)
π
vwarnx.c
(1.77 KB)
π
warn.c
(1.75 KB)
π
warnerr.c
(2.12 KB)
π
warnx.c
(1.79 KB)
π
write_pid.c
(2.65 KB)
π
writev.c
(2.15 KB)
π
xdbm.h
(1.91 KB)
π
xfree.c
(1.7 KB)
Editing: rtbl.c
/* * Copyright (c) 2000, 2002, 2004 Kungliga Tekniska HΓΆgskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. Neither the name of the Institute nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include <config.h> #include "roken.h" #include "rtbl.h" struct column_entry { char *data; }; struct column_data { char *header; char *prefix; int width; unsigned flags; size_t num_rows; struct column_entry *rows; unsigned int column_id; char *suffix; }; struct rtbl_data { char *column_prefix; size_t num_columns; struct column_data **columns; unsigned int flags; char *column_separator; }; ROKEN_LIB_FUNCTION rtbl_t ROKEN_LIB_CALL rtbl_create (void) { return calloc (1, sizeof (struct rtbl_data)); } ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL rtbl_set_flags (rtbl_t table, unsigned int flags) { table->flags = flags; } ROKEN_LIB_FUNCTION unsigned int ROKEN_LIB_CALL rtbl_get_flags (rtbl_t table) { return table->flags; } static struct column_data * rtbl_get_column_by_id (rtbl_t table, unsigned int id) { size_t i; for(i = 0; i < table->num_columns; i++) if(table->columns[i]->column_id == id) return table->columns[i]; return NULL; } static struct column_data * rtbl_get_column (rtbl_t table, const char *column) { size_t i; for(i = 0; i < table->num_columns; i++) if(strcmp(table->columns[i]->header, column) == 0) return table->columns[i]; return NULL; } ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL rtbl_destroy (rtbl_t table) { size_t i, j; for (i = 0; i < table->num_columns; i++) { struct column_data *c = table->columns[i]; for (j = 0; j < c->num_rows; j++) free (c->rows[j].data); free (c->rows); free (c->header); free (c->prefix); free (c->suffix); free (c); } free (table->column_prefix); free (table->column_separator); free (table->columns); free (table); } ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_add_column_by_id (rtbl_t table, unsigned int id, const char *header, unsigned int flags) { struct column_data *col, **tmp; tmp = realloc (table->columns, (table->num_columns + 1) * sizeof (*tmp)); if (tmp == NULL) return ENOMEM; table->columns = tmp; col = malloc (sizeof (*col)); if (col == NULL) return ENOMEM; col->header = strdup (header); if (col->header == NULL) { free (col); return ENOMEM; } col->prefix = NULL; col->width = 0; col->flags = flags; col->num_rows = 0; col->rows = NULL; col->column_id = id; col->suffix = NULL; table->columns[table->num_columns++] = col; return 0; } ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_add_column (rtbl_t table, const char *header, unsigned int flags) { return rtbl_add_column_by_id(table, 0, header, flags); } ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_new_row(rtbl_t table) { size_t max_rows = 0; size_t c; for (c = 0; c < table->num_columns; c++) if(table->columns[c]->num_rows > max_rows) max_rows = table->columns[c]->num_rows; for (c = 0; c < table->num_columns; c++) { struct column_entry *tmp; if(table->columns[c]->num_rows == max_rows) continue; tmp = realloc(table->columns[c]->rows, max_rows * sizeof(table->columns[c]->rows)); if(tmp == NULL) return ENOMEM; table->columns[c]->rows = tmp; while(table->columns[c]->num_rows < max_rows) { if((tmp[table->columns[c]->num_rows++].data = strdup("")) == NULL) return ENOMEM; } } return 0; } static void column_compute_width (rtbl_t table, struct column_data *column) { size_t i; if(table->flags & RTBL_HEADER_STYLE_NONE) column->width = 0; else column->width = strlen (column->header); for (i = 0; i < column->num_rows; i++) column->width = max (column->width, (int) strlen (column->rows[i].data)); } /* DEPRECATED */ ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_set_prefix (rtbl_t table, const char *prefix) { if (table->column_prefix) free (table->column_prefix); table->column_prefix = strdup (prefix); if (table->column_prefix == NULL) return ENOMEM; return 0; } ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_set_separator (rtbl_t table, const char *separator) { if (table->column_separator) free (table->column_separator); table->column_separator = strdup (separator); if (table->column_separator == NULL) return ENOMEM; return 0; } ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_set_column_prefix (rtbl_t table, const char *column, const char *prefix) { struct column_data *c = rtbl_get_column (table, column); if (c == NULL) return -1; if (c->prefix) free (c->prefix); c->prefix = strdup (prefix); if (c->prefix == NULL) return ENOMEM; return 0; } ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_set_column_affix_by_id(rtbl_t table, unsigned int id, const char *prefix, const char *suffix) { struct column_data *c = rtbl_get_column_by_id (table, id); if (c == NULL) return -1; if (c->prefix) free (c->prefix); if(prefix == NULL) c->prefix = NULL; else { c->prefix = strdup (prefix); if (c->prefix == NULL) return ENOMEM; } if (c->suffix) free (c->suffix); if(suffix == NULL) c->suffix = NULL; else { c->suffix = strdup (suffix); if (c->suffix == NULL) return ENOMEM; } return 0; } static const char * get_column_prefix (rtbl_t table, struct column_data *c) { if (c == NULL) return ""; if (c->prefix) return c->prefix; if (table->column_prefix) return table->column_prefix; return ""; } static const char * get_column_suffix (rtbl_t table, struct column_data *c) { if (c && c->suffix) return c->suffix; return ""; } static int add_column_entry (struct column_data *c, const char *data) { struct column_entry row, *tmp; row.data = strdup (data); if (row.data == NULL) return ENOMEM; tmp = realloc (c->rows, (c->num_rows + 1) * sizeof (*tmp)); if (tmp == NULL) { free (row.data); return ENOMEM; } c->rows = tmp; c->rows[c->num_rows++] = row; return 0; } ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_add_column_entry_by_id (rtbl_t table, unsigned int id, const char *data) { struct column_data *c = rtbl_get_column_by_id (table, id); if (c == NULL) return -1; return add_column_entry(c, data); } ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_add_column_entryv_by_id (rtbl_t table, unsigned int id, const char *fmt, ...) { va_list ap; char *str; int ret; va_start(ap, fmt); ret = vasprintf(&str, fmt, ap); va_end(ap); if (ret == -1) return -1; ret = rtbl_add_column_entry_by_id(table, id, str); free(str); return ret; } ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_add_column_entry (rtbl_t table, const char *column, const char *data) { struct column_data *c = rtbl_get_column (table, column); if (c == NULL) return -1; return add_column_entry(c, data); } ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_add_column_entryv (rtbl_t table, const char *column, const char *fmt, ...) { va_list ap; char *str; int ret; va_start(ap, fmt); ret = vasprintf(&str, fmt, ap); va_end(ap); if (ret == -1) return -1; ret = rtbl_add_column_entry(table, column, str); free(str); return ret; } ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rtbl_format (rtbl_t table, FILE * f) { size_t i, j; for (i = 0; i < table->num_columns; i++) column_compute_width (table, table->columns[i]); if((table->flags & RTBL_HEADER_STYLE_NONE) == 0) { for (i = 0; i < table->num_columns; i++) { struct column_data *c = table->columns[i]; if(table->column_separator != NULL && i > 0) fprintf (f, "%s", table->column_separator); fprintf (f, "%s", get_column_prefix (table, c)); if(i == table->num_columns - 1 && c->suffix == NULL) /* last column, so no need to pad with spaces */ fprintf (f, "%-*s", 0, c->header); else fprintf (f, "%-*s", (int)c->width, c->header); fprintf (f, "%s", get_column_suffix (table, c)); } fprintf (f, "\n"); } for (j = 0;; j++) { int flag = 0; /* are there any more rows left? */ for (i = 0; flag == 0 && i < table->num_columns; ++i) { struct column_data *c = table->columns[i]; if (c->num_rows > j) { ++flag; break; } } if (flag == 0) break; for (i = 0; i < table->num_columns; i++) { int w; struct column_data *c = table->columns[i]; if(table->column_separator != NULL && i > 0) fprintf (f, "%s", table->column_separator); w = c->width; if ((c->flags & RTBL_ALIGN_RIGHT) == 0) { if(i == table->num_columns - 1 && c->suffix == NULL) /* last column, so no need to pad with spaces */ w = 0; else w = -w; } fprintf (f, "%s", get_column_prefix (table, c)); if (c->num_rows <= j) fprintf (f, "%*s", w, ""); else fprintf (f, "%*s", w, c->rows[j].data); fprintf (f, "%s", get_column_suffix (table, c)); } fprintf (f, "\n"); } return 0; } #ifdef TEST int main (int argc, char **argv) { rtbl_t table; table = rtbl_create (); rtbl_add_column_by_id (table, 0, "Issued", 0); rtbl_add_column_by_id (table, 1, "Expires", 0); rtbl_add_column_by_id (table, 2, "Foo", RTBL_ALIGN_RIGHT); rtbl_add_column_by_id (table, 3, "Principal", 0); rtbl_add_column_entry_by_id (table, 0, "Jul 7 21:19:29"); rtbl_add_column_entry_by_id (table, 1, "Jul 8 07:19:29"); rtbl_add_column_entry_by_id (table, 2, "73"); rtbl_add_column_entry_by_id (table, 2, "0"); rtbl_add_column_entry_by_id (table, 2, "-2000"); rtbl_add_column_entry_by_id (table, 3, "krbtgt/NADA.KTH.SE@NADA.KTH.SE"); rtbl_add_column_entry_by_id (table, 0, "Jul 7 21:19:29"); rtbl_add_column_entry_by_id (table, 1, "Jul 8 07:19:29"); rtbl_add_column_entry_by_id (table, 3, "afs/pdc.kth.se@NADA.KTH.SE"); rtbl_add_column_entry_by_id (table, 0, "Jul 7 21:19:29"); rtbl_add_column_entry_by_id (table, 1, "Jul 8 07:19:29"); rtbl_add_column_entry_by_id (table, 3, "afs@NADA.KTH.SE"); rtbl_set_separator (table, " "); rtbl_format (table, stdout); rtbl_destroy (table); printf("\n"); table = rtbl_create (); rtbl_add_column_by_id (table, 0, "Column A", 0); rtbl_set_column_affix_by_id (table, 0, "<", ">"); rtbl_add_column_by_id (table, 1, "Column B", 0); rtbl_set_column_affix_by_id (table, 1, "[", "]"); rtbl_add_column_by_id (table, 2, "Column C", 0); rtbl_set_column_affix_by_id (table, 2, "(", ")"); rtbl_add_column_entry_by_id (table, 0, "1"); rtbl_new_row(table); rtbl_add_column_entry_by_id (table, 1, "2"); rtbl_new_row(table); rtbl_add_column_entry_by_id (table, 2, "3"); rtbl_new_row(table); rtbl_set_separator (table, " "); rtbl_format (table, stdout); rtbl_destroy (table); return 0; } #endif
Upload File
Create Folder