mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
As get_best_eci()
can no longer return 0 remove caller checks
library: simplify dealing one-letter escapes into one case; other fiddlings (`first_err` -> `warn_number`)
This commit is contained in:
parent
11b3c18aed
commit
624574a64c
@ -1,16 +1,16 @@
|
|||||||
% README.clang-tidy 2024-01-17
|
% README.clang-tidy 2024-03-03
|
||||||
% Current as of latest clang-tidy-18 from Ubuntu 22.04 apt package
|
% Current as of latest clang-tidy-19 from Ubuntu 22.04 apt package
|
||||||
|
|
||||||
Requires cmake in "build" sub-directory with -DCMAKE_EXPORT_COMPILE_COMMANDS=ON (for "build/compile_commands.json")
|
Requires cmake in "build" sub-directory with -DCMAKE_EXPORT_COMPILE_COMMANDS=ON (for "build/compile_commands.json")
|
||||||
and -DCMAKE_BUILD_TYPE=Debug (so `assert()`s defined), and then make (for Qt generated includes).
|
and -DCMAKE_BUILD_TYPE=Debug (so `assert()`s defined), and then make (for Qt generated includes).
|
||||||
|
|
||||||
In project root directory (warning, slow):
|
In project root directory (warning, slow):
|
||||||
|
|
||||||
clang-tidy-18 backend/*.c frontend/*.c backend_qt/*.cpp frontend_qt/*.cpp -p build/compile_commands.json
|
clang-tidy-19 backend/*.c frontend/*.c backend_qt/*.cpp frontend_qt/*.cpp -p build/compile_commands.json
|
||||||
|
|
||||||
For "backend_tcl", which has no "compile_commands.json", specify the tcl include directory, e.g.
|
For "backend_tcl", which has no "compile_commands.json", specify the tcl include directory, e.g.
|
||||||
|
|
||||||
clang-tidy-18 backend_tcl/*.c -- -I/usr/include/tcl8.6
|
clang-tidy-19 backend_tcl/*.c -- -I/usr/include/tcl8.6
|
||||||
|
|
||||||
Options are in ".clang-tidy" (in the project root directory). The excluded checks are
|
Options are in ".clang-tidy" (in the project root directory). The excluded checks are
|
||||||
`clang-analyzer-security.insecureAPI.strcpy` (for `strcpy()`, `strcat()` etc), and
|
`clang-analyzer-security.insecureAPI.strcpy` (for `strcpy()`, `strcat()` etc), and
|
||||||
@ -18,5 +18,5 @@ Options are in ".clang-tidy" (in the project root directory). The excluded check
|
|||||||
|
|
||||||
The test suite (cmake given -DZINT_TEST=ON) can also be analysed with an additional check disabled:
|
The test suite (cmake given -DZINT_TEST=ON) can also be analysed with an additional check disabled:
|
||||||
|
|
||||||
clang-tidy-18 backend/tests/*.c frontend/tests/*.c backend_qt/tests/*.cpp \
|
clang-tidy-19 backend/tests/*.c frontend/tests/*.c backend_qt/tests/*.cpp \
|
||||||
-checks='-clang-analyzer-optin.performance.Padding' -p build/compile_commands.json
|
-checks='-clang-analyzer-optin.performance.Padding' -p build/compile_commands.json
|
||||||
|
@ -795,10 +795,7 @@ INTERNAL int get_best_eci_segs(struct zint_symbol *symbol, struct zint_seg segs[
|
|||||||
|
|
||||||
for (i = 0; i < seg_count; i++) {
|
for (i = 0; i < seg_count; i++) {
|
||||||
if (segs[i].eci == 0) {
|
if (segs[i].eci == 0) {
|
||||||
int eci = get_best_eci(segs[i].source, segs[i].length);
|
const int eci = get_best_eci(segs[i].source, segs[i].length);
|
||||||
if (eci == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (eci == default_eci) {
|
if (eci == default_eci) {
|
||||||
if (i != 0 && segs[i - 1].eci != 0 && segs[i - 1].eci != default_eci) {
|
if (i != 0 && segs[i - 1].eci != 0 && segs[i - 1].eci != default_eci) {
|
||||||
segs[i].eci = eci;
|
segs[i].eci = eci;
|
||||||
|
@ -130,15 +130,13 @@ void ZBarcode_Clear(struct zint_symbol *symbol) {
|
|||||||
void ZBarcode_Reset(struct zint_symbol *symbol) {
|
void ZBarcode_Reset(struct zint_symbol *symbol) {
|
||||||
if (!symbol) return;
|
if (!symbol) return;
|
||||||
|
|
||||||
if (symbol->bitmap != NULL) {
|
if (symbol->bitmap != NULL)
|
||||||
free(symbol->bitmap);
|
free(symbol->bitmap);
|
||||||
}
|
if (symbol->alphamap != NULL)
|
||||||
if (symbol->alphamap != NULL) {
|
|
||||||
free(symbol->alphamap);
|
free(symbol->alphamap);
|
||||||
}
|
if (symbol->memfile != NULL)
|
||||||
if (symbol->memfile != NULL) {
|
|
||||||
free(symbol->memfile);
|
free(symbol->memfile);
|
||||||
}
|
|
||||||
vector_free(symbol);
|
vector_free(symbol);
|
||||||
|
|
||||||
memset(symbol, 0, sizeof(*symbol));
|
memset(symbol, 0, sizeof(*symbol));
|
||||||
@ -156,7 +154,6 @@ void ZBarcode_Delete(struct zint_symbol *symbol) {
|
|||||||
if (symbol->memfile != NULL)
|
if (symbol->memfile != NULL)
|
||||||
free(symbol->memfile);
|
free(symbol->memfile);
|
||||||
|
|
||||||
/* If there is a rendered version, ensure its memory is released */
|
|
||||||
vector_free(symbol);
|
vector_free(symbol);
|
||||||
|
|
||||||
free(symbol);
|
free(symbol);
|
||||||
@ -748,6 +745,9 @@ static int esc_base(struct zint_symbol *symbol, unsigned char *input_string, int
|
|||||||
/* Helper to parse escape sequences. If `escaped_string` NULL, calculates length only */
|
/* Helper to parse escape sequences. If `escaped_string` NULL, calculates length only */
|
||||||
static int escape_char_process(struct zint_symbol *symbol, unsigned char *input_string, int *p_length,
|
static int escape_char_process(struct zint_symbol *symbol, unsigned char *input_string, int *p_length,
|
||||||
unsigned char *escaped_string) {
|
unsigned char *escaped_string) {
|
||||||
|
/* NUL EOT BEL BS HT LF VT FF CR ESC GS RS \ */
|
||||||
|
static const char escs[] = { '0', 'E', 'a', 'b', 't', 'n', 'v', 'f', 'r', 'e', 'G', 'R', '\\', '\0' };
|
||||||
|
static const char vals[] = { 0x00, 0x04, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x1B, 0x1D, 0x1E, 0x5C };
|
||||||
const int length = *p_length;
|
const int length = *p_length;
|
||||||
int in_posn = 0, out_posn = 0;
|
int in_posn = 0, out_posn = 0;
|
||||||
int ch;
|
int ch;
|
||||||
@ -766,7 +766,19 @@ static int escape_char_process(struct zint_symbol *symbol, unsigned char *input_
|
|||||||
/* NOTE: if add escape character, must also update regex in "frontend_qt/datawindow.php" */
|
/* NOTE: if add escape character, must also update regex in "frontend_qt/datawindow.php" */
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case '0':
|
case '0':
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x00; /* Null */
|
case 'E':
|
||||||
|
case 'a':
|
||||||
|
case 'b':
|
||||||
|
case 't':
|
||||||
|
case 'n':
|
||||||
|
case 'v':
|
||||||
|
case 'f':
|
||||||
|
case 'r':
|
||||||
|
case 'e':
|
||||||
|
case 'G':
|
||||||
|
case 'R':
|
||||||
|
case '\\':
|
||||||
|
if (escaped_string) escaped_string[out_posn] = vals[posn(escs, ch)];
|
||||||
in_posn += 2;
|
in_posn += 2;
|
||||||
break;
|
break;
|
||||||
case '^': /* CODE128 specific */
|
case '^': /* CODE128 specific */
|
||||||
@ -791,50 +803,6 @@ static int escape_char_process(struct zint_symbol *symbol, unsigned char *input_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'E':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x04; /* End of Transmission */
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 'a':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x07; /* Bell */
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 'b':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x08; /* Backspace */
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x09; /* Horizontal tab */
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 'n':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x0a; /* Line feed */
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 'v':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x0b; /* Vertical tab */
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 'f':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x0c; /* Form feed */
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 'r':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x0d; /* Carriage return */
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 'e':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x1b; /* Escape */
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 'G':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x1d; /* Group Separator */
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 'R':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = 0x1e; /* Record Separator */
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 'd':
|
case 'd':
|
||||||
case 'o':
|
case 'o':
|
||||||
case 'x':
|
case 'x':
|
||||||
@ -844,10 +812,6 @@ static int escape_char_process(struct zint_symbol *symbol, unsigned char *input_
|
|||||||
if (escaped_string) escaped_string[out_posn] = val;
|
if (escaped_string) escaped_string[out_posn] = val;
|
||||||
in_posn += 4 + (ch != 'x');
|
in_posn += 4 + (ch != 'x');
|
||||||
break;
|
break;
|
||||||
case '\\':
|
|
||||||
if (escaped_string) escaped_string[out_posn] = '\\';
|
|
||||||
in_posn += 2;
|
|
||||||
break;
|
|
||||||
case 'u':
|
case 'u':
|
||||||
case 'U':
|
case 'U':
|
||||||
if (in_posn + 6 > length || (ch == 'U' && in_posn + 8 > length)) {
|
if (in_posn + 6 > length || (ch == 'U' && in_posn + 8 > length)) {
|
||||||
@ -1294,16 +1258,14 @@ int ZBarcode_Encode_Segs(struct zint_symbol *symbol, const struct zint_seg segs[
|
|||||||
&& (symbol->input_mode & 0x07) == UNICODE_MODE) {
|
&& (symbol->input_mode & 0x07) == UNICODE_MODE) {
|
||||||
/* Try another ECI mode */
|
/* Try another ECI mode */
|
||||||
const int first_eci_set = get_best_eci_segs(symbol, local_segs, seg_count);
|
const int first_eci_set = get_best_eci_segs(symbol, local_segs, seg_count);
|
||||||
if (first_eci_set != 0) {
|
error_number = extended_or_reduced_charset(symbol, local_segs, seg_count);
|
||||||
error_number = extended_or_reduced_charset(symbol, local_segs, seg_count);
|
/* Inclusion of ECI more noteworthy than other warnings, so overwrite (if any) */
|
||||||
/* Inclusion of ECI more noteworthy than other warnings, so overwrite (if any) */
|
if (error_number < ZINT_ERROR) {
|
||||||
if (error_number < ZINT_ERROR) {
|
error_number = ZINT_WARN_USES_ECI;
|
||||||
error_number = ZINT_WARN_USES_ECI;
|
if (!(symbol->debug & ZINT_DEBUG_TEST)) {
|
||||||
if (!(symbol->debug & ZINT_DEBUG_TEST)) {
|
sprintf(symbol->errtxt, "222: Encoded data includes ECI %d", first_eci_set);
|
||||||
sprintf(symbol->errtxt, "222: Encoded data includes ECI %d", first_eci_set);
|
|
||||||
}
|
|
||||||
if (symbol->debug & ZINT_DEBUG_PRINT) printf("Added ECI %d\n", first_eci_set);
|
|
||||||
}
|
}
|
||||||
|
if (symbol->debug & ZINT_DEBUG_PRINT) printf("Added ECI %d\n", first_eci_set);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1345,8 +1307,7 @@ static int check_output_args(struct zint_symbol *symbol, int rotate_angle) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct zint_filetypes { const char extension[4]; int is_raster; int filetype; };
|
static const struct { const char extension[4]; int is_raster; int filetype; } filetypes[] = {
|
||||||
static const struct zint_filetypes filetypes[] = {
|
|
||||||
{ "BMP", 1, OUT_BMP_FILE }, { "EMF", 0, OUT_EMF_FILE }, { "EPS", 0, OUT_EPS_FILE },
|
{ "BMP", 1, OUT_BMP_FILE }, { "EMF", 0, OUT_EMF_FILE }, { "EPS", 0, OUT_EPS_FILE },
|
||||||
{ "GIF", 1, OUT_GIF_FILE }, { "PCX", 1, OUT_PCX_FILE }, { "PNG", 1, OUT_PNG_FILE },
|
{ "GIF", 1, OUT_GIF_FILE }, { "PCX", 1, OUT_PCX_FILE }, { "PNG", 1, OUT_PNG_FILE },
|
||||||
{ "SVG", 0, OUT_SVG_FILE }, { "TIF", 1, OUT_TIF_FILE }, { "TXT", 0, 0 }
|
{ "SVG", 0, OUT_SVG_FILE }, { "TIF", 1, OUT_TIF_FILE }, { "TXT", 0, 0 }
|
||||||
@ -1445,19 +1406,16 @@ int ZBarcode_Encode_and_Print(struct zint_symbol *symbol, const unsigned char *s
|
|||||||
int ZBarcode_Encode_Segs_and_Print(struct zint_symbol *symbol, const struct zint_seg segs[], const int seg_count,
|
int ZBarcode_Encode_Segs_and_Print(struct zint_symbol *symbol, const struct zint_seg segs[], const int seg_count,
|
||||||
int rotate_angle) {
|
int rotate_angle) {
|
||||||
int error_number;
|
int error_number;
|
||||||
int first_err;
|
int warn_number;
|
||||||
|
|
||||||
error_number = ZBarcode_Encode_Segs(symbol, segs, seg_count);
|
warn_number = ZBarcode_Encode_Segs(symbol, segs, seg_count);
|
||||||
if (error_number >= ZINT_ERROR) {
|
if (warn_number >= ZINT_ERROR) {
|
||||||
return error_number;
|
return warn_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
first_err = error_number;
|
|
||||||
error_number = ZBarcode_Print(symbol, rotate_angle);
|
error_number = ZBarcode_Print(symbol, rotate_angle);
|
||||||
if (error_number == 0) {
|
|
||||||
error_number = first_err;
|
return error_number ? error_number : warn_number;
|
||||||
}
|
|
||||||
return error_number;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Encode and output a symbol to memory as raster (`symbol->bitmap`) */
|
/* Encode and output a symbol to memory as raster (`symbol->bitmap`) */
|
||||||
@ -1478,20 +1436,16 @@ int ZBarcode_Encode_and_Buffer(struct zint_symbol *symbol, const unsigned char *
|
|||||||
int ZBarcode_Encode_Segs_and_Buffer(struct zint_symbol *symbol, const struct zint_seg segs[],
|
int ZBarcode_Encode_Segs_and_Buffer(struct zint_symbol *symbol, const struct zint_seg segs[],
|
||||||
const int seg_count, int rotate_angle) {
|
const int seg_count, int rotate_angle) {
|
||||||
int error_number;
|
int error_number;
|
||||||
int first_err;
|
int warn_number;
|
||||||
|
|
||||||
error_number = ZBarcode_Encode_Segs(symbol, segs, seg_count);
|
warn_number = ZBarcode_Encode_Segs(symbol, segs, seg_count);
|
||||||
if (error_number >= ZINT_ERROR) {
|
if (warn_number >= ZINT_ERROR) {
|
||||||
return error_number;
|
return warn_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
first_err = error_number;
|
|
||||||
error_number = ZBarcode_Buffer(symbol, rotate_angle);
|
error_number = ZBarcode_Buffer(symbol, rotate_angle);
|
||||||
if (error_number == 0) {
|
|
||||||
error_number = first_err;
|
|
||||||
}
|
|
||||||
|
|
||||||
return error_number;
|
return error_number ? error_number : warn_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Encode and output a symbol to memory as vector (`symbol->vector`) */
|
/* Encode and output a symbol to memory as vector (`symbol->vector`) */
|
||||||
@ -1512,20 +1466,16 @@ int ZBarcode_Encode_and_Buffer_Vector(struct zint_symbol *symbol, const unsigned
|
|||||||
int ZBarcode_Encode_Segs_and_Buffer_Vector(struct zint_symbol *symbol, const struct zint_seg segs[],
|
int ZBarcode_Encode_Segs_and_Buffer_Vector(struct zint_symbol *symbol, const struct zint_seg segs[],
|
||||||
const int seg_count, int rotate_angle) {
|
const int seg_count, int rotate_angle) {
|
||||||
int error_number;
|
int error_number;
|
||||||
int first_err;
|
int warn_number;
|
||||||
|
|
||||||
error_number = ZBarcode_Encode_Segs(symbol, segs, seg_count);
|
warn_number = ZBarcode_Encode_Segs(symbol, segs, seg_count);
|
||||||
if (error_number >= ZINT_ERROR) {
|
if (warn_number >= ZINT_ERROR) {
|
||||||
return error_number;
|
return warn_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
first_err = error_number;
|
|
||||||
error_number = ZBarcode_Buffer_Vector(symbol, rotate_angle);
|
error_number = ZBarcode_Buffer_Vector(symbol, rotate_angle);
|
||||||
if (error_number == 0) {
|
|
||||||
error_number = first_err;
|
|
||||||
}
|
|
||||||
|
|
||||||
return error_number;
|
return error_number ? error_number : warn_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Encode a barcode using input data from file `filename` */
|
/* Encode a barcode using input data from file `filename` */
|
||||||
@ -1624,58 +1574,46 @@ int ZBarcode_Encode_File(struct zint_symbol *symbol, const char *filename) {
|
|||||||
/* Encode a symbol using input data from file `filename` and output to file `symbol->outfile` */
|
/* Encode a symbol using input data from file `filename` and output to file `symbol->outfile` */
|
||||||
int ZBarcode_Encode_File_and_Print(struct zint_symbol *symbol, const char *filename, int rotate_angle) {
|
int ZBarcode_Encode_File_and_Print(struct zint_symbol *symbol, const char *filename, int rotate_angle) {
|
||||||
int error_number;
|
int error_number;
|
||||||
int first_err;
|
int warn_number;
|
||||||
|
|
||||||
error_number = ZBarcode_Encode_File(symbol, filename);
|
warn_number = ZBarcode_Encode_File(symbol, filename);
|
||||||
if (error_number >= ZINT_ERROR) {
|
if (warn_number >= ZINT_ERROR) {
|
||||||
return error_number;
|
return warn_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
first_err = error_number;
|
|
||||||
error_number = ZBarcode_Print(symbol, rotate_angle);
|
error_number = ZBarcode_Print(symbol, rotate_angle);
|
||||||
if (error_number == 0) {
|
|
||||||
error_number = first_err;
|
|
||||||
}
|
|
||||||
|
|
||||||
return error_number;
|
return error_number ? error_number : warn_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Encode a symbol using input data from file `filename` and output to memory as raster (`symbol->bitmap`) */
|
/* Encode a symbol using input data from file `filename` and output to memory as raster (`symbol->bitmap`) */
|
||||||
int ZBarcode_Encode_File_and_Buffer(struct zint_symbol *symbol, char const *filename, int rotate_angle) {
|
int ZBarcode_Encode_File_and_Buffer(struct zint_symbol *symbol, char const *filename, int rotate_angle) {
|
||||||
int error_number;
|
int error_number;
|
||||||
int first_err;
|
int warn_number;
|
||||||
|
|
||||||
error_number = ZBarcode_Encode_File(symbol, filename);
|
warn_number = ZBarcode_Encode_File(symbol, filename);
|
||||||
if (error_number >= ZINT_ERROR) {
|
if (warn_number >= ZINT_ERROR) {
|
||||||
return error_number;
|
return warn_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
first_err = error_number;
|
|
||||||
error_number = ZBarcode_Buffer(symbol, rotate_angle);
|
error_number = ZBarcode_Buffer(symbol, rotate_angle);
|
||||||
if (error_number == 0) {
|
|
||||||
error_number = first_err;
|
|
||||||
}
|
|
||||||
|
|
||||||
return error_number;
|
return error_number ? error_number : warn_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Encode a symbol using input data from file `filename` and output to memory as vector (`symbol->vector`) */
|
/* Encode a symbol using input data from file `filename` and output to memory as vector (`symbol->vector`) */
|
||||||
int ZBarcode_Encode_File_and_Buffer_Vector(struct zint_symbol *symbol, const char *filename, int rotate_angle) {
|
int ZBarcode_Encode_File_and_Buffer_Vector(struct zint_symbol *symbol, const char *filename, int rotate_angle) {
|
||||||
int error_number;
|
int error_number;
|
||||||
int first_err;
|
int warn_number;
|
||||||
|
|
||||||
error_number = ZBarcode_Encode_File(symbol, filename);
|
warn_number = ZBarcode_Encode_File(symbol, filename);
|
||||||
if (error_number >= ZINT_ERROR) {
|
if (warn_number >= ZINT_ERROR) {
|
||||||
return error_number;
|
return warn_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
first_err = error_number;
|
|
||||||
error_number = ZBarcode_Buffer_Vector(symbol, rotate_angle);
|
error_number = ZBarcode_Buffer_Vector(symbol, rotate_angle);
|
||||||
if (error_number == 0) {
|
|
||||||
error_number = first_err;
|
|
||||||
}
|
|
||||||
|
|
||||||
return error_number;
|
return error_number ? error_number : warn_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Checks whether a symbology is supported */
|
/* Checks whether a symbology is supported */
|
||||||
|
@ -557,6 +557,7 @@ static void test_escape_char_process(const testCtx *const p_ctx) {
|
|||||||
/* 78*/ { BARCODE_CODE128, DATA_MODE | EXTRA_ESCAPE_MODE, -1, "\\^A1", "", 0, 46, "(4) 103 17 17 106", 0, "" },
|
/* 78*/ { BARCODE_CODE128, DATA_MODE | EXTRA_ESCAPE_MODE, -1, "\\^A1", "", 0, 46, "(4) 103 17 17 106", 0, "" },
|
||||||
/* 79*/ { BARCODE_CODE128, EXTRA_ESCAPE_MODE, -1, "\\^", "", 0, 57, "(5) 104 60 62 82 106", 0, "Partial special escape '\\^' at end allowed" },
|
/* 79*/ { BARCODE_CODE128, EXTRA_ESCAPE_MODE, -1, "\\^", "", 0, 57, "(5) 104 60 62 82 106", 0, "Partial special escape '\\^' at end allowed" },
|
||||||
/* 80*/ { BARCODE_CODE128, EXTRA_ESCAPE_MODE, -1, "\\^D1", "", 0, 79, "(7) 104 60 62 36 17 52 106", 0, "Unknown special escapes passed straight thu" },
|
/* 80*/ { BARCODE_CODE128, EXTRA_ESCAPE_MODE, -1, "\\^D1", "", 0, 79, "(7) 104 60 62 36 17 52 106", 0, "Unknown special escapes passed straight thu" },
|
||||||
|
/* 81*/ { BARCODE_DATAMATRIX, DATA_MODE, -1, "\\w", "", ZINT_ERROR_INVALID_DATA, 0, "Error 234: Unrecognised escape character '\\w' in input data", 0, "" },
|
||||||
};
|
};
|
||||||
int data_size = ARRAY_SIZE(data);
|
int data_size = ARRAY_SIZE(data);
|
||||||
int i, length, ret;
|
int i, length, ret;
|
||||||
|
12
docs/README
12
docs/README
@ -1,11 +1,11 @@
|
|||||||
% docs/README 2014-02-28
|
% docs/README 2024-03-03
|
||||||
|
|
||||||
For generation of "docs/manual.pdf" and "docs/manual.txt" from "manual.pmd" using a recent version of pandoc
|
For generation of "docs/manual.pdf" and "docs/manual.txt" from "manual.pmd" using a recent version of pandoc
|
||||||
|
|
||||||
On Ubuntu/Debian (tested on Ubuntu 22.04)
|
On Ubuntu/Debian (tested on Ubuntu 22.04)
|
||||||
|
|
||||||
wget https://github.com/jgm/pandoc/releases/download/3.1.12.1/pandoc-3.1.12.1-1-amd64.deb
|
wget https://github.com/jgm/pandoc/releases/download/3.1.12.2/pandoc-3.1.12.2-1-amd64.deb
|
||||||
sudo dpkg -i pandoc-3.1.12.1-1-amd64.deb
|
sudo dpkg -i pandoc-3.1.12.2-1-amd64.deb
|
||||||
sudo apt install python3-pip
|
sudo apt install python3-pip
|
||||||
pip install pandoc-tablenos --user
|
pip install pandoc-tablenos --user
|
||||||
export PATH=~/.local/bin:"$PATH"
|
export PATH=~/.local/bin:"$PATH"
|
||||||
@ -20,9 +20,9 @@ On Ubuntu/Debian (tested on Ubuntu 22.04)
|
|||||||
|
|
||||||
On Fedora (tested on Fedora Linux 38 (Workstation Edition))
|
On Fedora (tested on Fedora Linux 38 (Workstation Edition))
|
||||||
|
|
||||||
wget https://github.com/jgm/pandoc/releases/download/3.1.12.1/pandoc-3.1.12.1-linux-amd64.tar.gz
|
wget https://github.com/jgm/pandoc/releases/download/3.1.12.2/pandoc-3.1.12.2-linux-amd64.tar.gz
|
||||||
tar xf pandoc-3.1.12.1-linux-amd64.tar.gz
|
tar xf pandoc-3.1.12.2-linux-amd64.tar.gz
|
||||||
sudo mv -i pandoc-3.1.12.1/bin/pandoc /usr/local/bin
|
sudo mv -i pandoc-3.1.12.2/bin/pandoc /usr/local/bin
|
||||||
sudo dnf install python3-pip
|
sudo dnf install python3-pip
|
||||||
pip install pandoc-tablenos --user
|
pip install pandoc-tablenos --user
|
||||||
export PATH=~/.local/bin:"$PATH"
|
export PATH=~/.local/bin:"$PATH"
|
||||||
|
@ -272,7 +272,7 @@
|
|||||||
}
|
}
|
||||||
@media print {
|
@media print {
|
||||||
pre > code.sourceCode { white-space: pre-wrap; }
|
pre > code.sourceCode { white-space: pre-wrap; }
|
||||||
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
pre > code.sourceCode > span { display: inline-block; text-indent: -5em; padding-left: 5em; }
|
||||||
}
|
}
|
||||||
pre.numberSource code
|
pre.numberSource code
|
||||||
{ counter-reset: source-line 0; }
|
{ counter-reset: source-line 0; }
|
||||||
@ -332,7 +332,7 @@
|
|||||||
<h1 class="title">Zint Barcode Generator and Zint Barcode Studio User
|
<h1 class="title">Zint Barcode Generator and Zint Barcode Studio User
|
||||||
Manual</h1>
|
Manual</h1>
|
||||||
<p class="author">Version 2.13.0.9</p>
|
<p class="author">Version 2.13.0.9</p>
|
||||||
<p class="date">February 2024</p>
|
<p class="date">March 2024</p>
|
||||||
</header>
|
</header>
|
||||||
<nav id="TOC" role="doc-toc">
|
<nav id="TOC" role="doc-toc">
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
% Zint Barcode Generator and Zint Barcode Studio User Manual
|
% Zint Barcode Generator and Zint Barcode Studio User Manual
|
||||||
% Version 2.13.0.9
|
% Version 2.13.0.9
|
||||||
% February 2024
|
% March 2024
|
||||||
|
|
||||||
# 1. Introduction
|
# 1. Introduction
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
Zint Barcode Generator and Zint Barcode Studio User Manual
|
Zint Barcode Generator and Zint Barcode Studio User Manual
|
||||||
Version 2.13.0.9
|
Version 2.13.0.9
|
||||||
February 2024
|
March 2024
|
||||||
|
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* For reference the following is a text-only version of the Zint manual, *
|
* For reference the following is a text-only version of the Zint manual, *
|
||||||
@ -4814,7 +4814,7 @@ configured barcode is displayed once the "Generate" button is pressed.
|
|||||||
|
|
||||||
Annex D. Man Page ZINT(1)
|
Annex D. Man Page ZINT(1)
|
||||||
|
|
||||||
% ZINT(1) Version 2.13.0.9 % % February 2024
|
% ZINT(1) Version 2.13.0.9 % % March 2024
|
||||||
|
|
||||||
NAME
|
NAME
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Automatically generated by Pandoc 3.1.12
|
.\" Automatically generated by Pandoc 3.1.12.2
|
||||||
.\"
|
.\"
|
||||||
.TH "ZINT" "1" "February 2024" "Version 2.13.0.9" ""
|
.TH "ZINT" "1" "March 2024" "Version 2.13.0.9" ""
|
||||||
.SH NAME
|
.SH NAME
|
||||||
\f[CR]zint\f[R] \- encode data as a barcode image
|
\f[CR]zint\f[R] \- encode data as a barcode image
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
% ZINT(1) Version 2.13.0.9
|
% ZINT(1) Version 2.13.0.9
|
||||||
%
|
%
|
||||||
% February 2024
|
% March 2024
|
||||||
|
|
||||||
# NAME
|
# NAME
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user