чување 7807390a4a0eb5f5ec73021acee942f123a7ca69
родитељ 571241c3b5f4b41fe75ca86718e619d65aed70b0
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Thu, 5 Oct 2023 16:08:21 +0200
Add -D
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 3, додавања: 38(+), брисања: 13(-)
diff --git a/.gitignore b/.gitignore
@@ -13,6 +13,7 @@
*.ps
*.swp
*.did
+cscope.out
nohup.out
*.gz
*.xz
diff --git a/table.1.in b/table.1.in
@@ -50,6 +50,7 @@ is a synonym for
.OP "\-a \fR|\fP \-\-align=" alignment
.OP "\-b \fR|\fP \-\-border\-mode"
.OP "\-c \fR|\fP \-\-columns=" cols
+.OP "\-D \fR|\fP \-\-align-dot"
.OP "\-d \fR|\fP \-\-delimiter=" delim
.OP "\-f \fR|\fP \-\-format=" format
.OP "\-H \fR|\fP \-\-align\-header"
@@ -122,6 +123,13 @@ Border mode: force single column.
Set maximum table width in columns (default 80).
.
.TP
+.BI \-D
+.TQ
+.BI \-\-align\-dot
+.br
+Set alignment character to dot "." instead of a space " ".
+.
+.TP
.BI \-d " delim"
.TQ
.BI \-\-delimiter= delim
diff --git a/table.c b/table.c
@@ -86,6 +86,7 @@ int msdos = 0;
int pause = 0;
int expand_tabs = 0;
int quotes = Q_PROCESS;
+char alignment_char = ' ';
int
version()
@@ -98,8 +99,9 @@ int
usage()
{
printf("Usage: %s [-a <alignment>|--align=<alignment>]"
- " [-b|--border-mode] [-c <cols>|--columns=<cols>] [-d"
- " <delim>|--delimiter=<delim>] [-f <format>|--format=<format>]"
+ " [-b|--border-mode] [-c <cols>|--columns=<cols>]"
+ " [-D|--align-dot] [-d <delim>|--delimiter=<delim>]"
+ " [-f <format>|--format=<format>]"
" [-H|--align-header] [-h|--help] [-m|--msdos] [-n|--no-ansi]"
" [-p|--pause] [-q <behavior>|--quotes=<behavior>]"
" [-s <set>|--symbols=<set>] [-t|--expand-tabs]"
@@ -445,13 +447,13 @@ print_aligned(const u8* s, size_t rune_length, size_t to_size, Alignment align,
if (align == ALIGN_CENTER)
for (i = 0; 2 * i + rune_length < to_size; i++)
{
- printf(" ");
+ printf("%c", alignment_char);
(*current_rune_column)++;
}
else if (align == ALIGN_RIGHT)
for (i = 0; i + rune_length < to_size; i++)
{
- printf(" ");
+ printf("%c", alignment_char);
(*current_rune_column)++;
}
if (align == ALIGN_LEFT)
@@ -462,6 +464,9 @@ print_aligned(const u8* s, size_t rune_length, size_t to_size, Alignment align,
skip_while_sgr(ps, &skipped_chars, 1, 0);
ps += skipped_chars;
+ if (!no_ansi && lineno == 0)
+ printf("%s", ANSI_SGR_BOLD_ON);
+
u8_char_to_u32(&uch, ps, &ch_len);
output_chars = 0;
while (output_chars != ch_len)
@@ -493,6 +498,9 @@ print_aligned(const u8* s, size_t rune_length, size_t to_size, Alignment align,
skip_while_sgr(ps, &skipped_chars, 1, 0);
ps += skipped_chars;
+ if (!no_ansi && lineno == 0)
+ printf("%s", ANSI_SGR_BOLD_ON);
+
u8_char_to_u32(&uch, ps, &ch_len);
output_chars = 0;
while (output_chars != ch_len)
@@ -523,6 +531,9 @@ print_aligned(const u8* s, size_t rune_length, size_t to_size, Alignment align,
skip_while_sgr(ps, &skipped_chars, 1, 0);
ps += skipped_chars;
+ if (!no_ansi && lineno == 0)
+ printf("%s", ANSI_SGR_BOLD_ON);
+
u8_char_to_u32(&uch, ps, &ch_len);
output_chars = 0;
while (output_chars != ch_len)
@@ -611,6 +622,11 @@ do_arg:
arg += strlen("align-header");
align_header = 1;
}
+ else if (!strcmp(arg, "align-dot"))
+ {
+ arg += strlen("align-dot");
+ alignment_char = '.';
+ }
else if (startswith(arg, "align="))
{
arg += strlen("align=");
@@ -704,6 +720,9 @@ do_arg:
case 'c':
cmd = CMD_COLUMNS;
break;
+ case 'D':
+ alignment_char = '.';
+ break;
case 'd':
cmd = CMD_DELIMITER;
break;
@@ -949,7 +968,7 @@ empty_line:
{
while (within_column(column_start, current_rune_column))
{
- printf(" ");
+ printf("%c", alignment_char);
current_rune_column++;
}
u8len = u32_char_to_u8(u8ch,
@@ -966,7 +985,7 @@ empty_line:
}
while (within_column(column_start, current_rune_column))
{
- printf(" ");
+ printf("%c", alignment_char);
current_rune_column++;
}
u8len = u32_char_to_u8(u8ch, *table_symbols[current_symbol_set][5]);
@@ -985,9 +1004,6 @@ not_first:
u8ch[u8len] = 0;
printf("%s", u8ch);
- if (!no_ansi && lineno == 0)
- printf("%s", ANSI_SGR_BOLD_ON);
-
do_line:
if (!pline || !*pline)
{
@@ -1066,7 +1082,7 @@ continue_line:
while (within_column(column_start, current_rune_column))
{
- printf(" ");
+ printf("%c", alignment_char);
current_rune_column++;
}
@@ -1109,7 +1125,7 @@ continue_line:
{
while ((current_rune_column + outbufrunelen) % tab_length != 0)
{
- sprintf((char*)poutbuf, " ");
+ sprintf((char*)poutbuf, "%c", alignment_char);
poutbuf++;
outbufrunelen++;
}
@@ -1156,7 +1172,7 @@ done_line:;
{
while (within_column(column_start, current_rune_column))
{
- printf(" ");
+ printf("%c", alignment_char);
current_rune_column++;
}
u8len = u32_char_to_u8(u8ch,
@@ -1173,7 +1189,7 @@ done_line:;
}
while (within_column(column_start, current_rune_column))
{
- printf(" ");
+ printf("%c", alignment_char);
current_rune_column++;
}