mirror of
https://github.com/mdbtools/mdbtools.git
synced 2026-01-02 12:27:09 +08:00
Obey -e flag when quoting is disabled
This commit is contained in:
@@ -39,13 +39,15 @@ print_col(FILE *outfile, gchar *col_val, int quote_text, int col_type, int bin_l
|
||||
size_t quote_len = strlen(quote_char); /* multibyte */
|
||||
|
||||
size_t orig_escape_len = escape_char ? strlen(escape_char) : 0;
|
||||
int quoting = quote_text && is_quote_type(col_type);
|
||||
|
||||
/* double the quote char if no escape char passed */
|
||||
if (!escape_char)
|
||||
escape_char = quote_char;
|
||||
|
||||
if (quote_text && is_quote_type(col_type)) {
|
||||
if (quoting)
|
||||
fputs(quote_char, outfile);
|
||||
|
||||
while (1) {
|
||||
if (is_binary_type(col_type)) {
|
||||
if (bin_mode == MDB_BINEXPORT_STRIP)
|
||||
@@ -56,29 +58,30 @@ print_col(FILE *outfile, gchar *col_val, int quote_text, int col_type, int bin_l
|
||||
if (!*col_val)
|
||||
break;
|
||||
|
||||
if (quote_len && !strncmp(col_val, quote_char, quote_len)) {
|
||||
|
||||
if (quoting && quote_len && !strncmp(col_val, quote_char, quote_len)) {
|
||||
fprintf(outfile, "%s%s", escape_char, quote_char);
|
||||
col_val += quote_len;
|
||||
#ifndef DONT_ESCAPE_ESCAPE
|
||||
} else if (orig_escape_len && !strncmp(col_val, escape_char, orig_escape_len)) {
|
||||
} else if (quoting && orig_escape_len && !strncmp(col_val, escape_char, orig_escape_len)) {
|
||||
fprintf(outfile, "%s%s", escape_char, escape_char);
|
||||
col_val += orig_escape_len;
|
||||
#endif
|
||||
} else if (is_binary_type(col_type) && *col_val <= 0 && bin_mode == MDB_BINEXPORT_OCTAL) {
|
||||
} else if (quoting && is_binary_type(col_type) && *col_val <= 0 && bin_mode == MDB_BINEXPORT_OCTAL) {
|
||||
fprintf(outfile, "\\%03o", *(unsigned char*)col_val++);
|
||||
} else if (escape_cr_lf && *col_val==13) {
|
||||
} else if (escape_cr_lf && is_quote_type(col_type) && *col_val==13) {
|
||||
col_val++;
|
||||
putc('\\', outfile);
|
||||
putc('r', outfile);
|
||||
} else if (escape_cr_lf && *col_val==10) {
|
||||
} else if (escape_cr_lf && is_quote_type(col_type) && *col_val==10) {
|
||||
col_val++;
|
||||
putc('\\', outfile);
|
||||
putc('n', outfile);
|
||||
} else if (escape_cr_lf && *col_val==9) {
|
||||
} else if (escape_cr_lf && is_quote_type(col_type) && *col_val==9) {
|
||||
col_val++;
|
||||
putc('\\', outfile);
|
||||
putc('t', outfile);
|
||||
} else if (escape_cr_lf && *col_val==92) {
|
||||
} else if (escape_cr_lf && is_quote_type(col_type) && *col_val==92) {
|
||||
col_val++;
|
||||
putc('\\', outfile);
|
||||
putc('\\', outfile);
|
||||
@@ -86,9 +89,8 @@ print_col(FILE *outfile, gchar *col_val, int quote_text, int col_type, int bin_l
|
||||
putc(*col_val++, outfile);
|
||||
}
|
||||
}
|
||||
if (quoting)
|
||||
fputs(quote_char, outfile);
|
||||
} else
|
||||
fputs(col_val, outfile);
|
||||
}
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
|
||||
Reference in New Issue
Block a user