1
0
mirror of https://git.code.sf.net/p/zint/code synced 2026-07-31 02:19:50 +00:00

library: use "filemem" for TXT dump_plot() -> txt_hex_plot()

filemem: remove NOLINTS (clang-tidy-20 bug fixed)
QRCODE: eliminate NOLINTs using some more asserts (clang-tidy-20);
  some "de-branching" of loops
general: various code fiddlings, in particular lessen no. of
  redundant parenthesized expressions, especially in conditionals,
  which reduce rather than aid readibility IMNSHO
manual: mention "--dump" option
This commit is contained in:
gitlost
2025-08-28 20:34:56 +01:00
parent 36364b4912
commit 44e2099a65
35 changed files with 507 additions and 588 deletions
+92 -104
View File
@@ -46,53 +46,44 @@
#define AZ_BIN_CAP_CWDS_S "1661" /* String version of (AZTEC_BIN_CAPACITY / 12) */
/* Count number of consecutive (. SP) or (, SP) Punct mode doubles for comparison against Digit mode encoding */
static int az_count_doubles(const unsigned char source[], int i, const int length) {
int c = 0;
static int az_count_doubles(const unsigned char source[], const int position, const int length) {
int i;
while ((i + 1 < length) && ((source[i] == '.') || (source[i] == ',')) && (source[i + 1] == ' ')) {
c++;
i += 2;
}
for (i = position; i + 1 < length && (source[i] == '.' || source[i] == ',') && source[i + 1] == ' '; i += 2);
return c;
return (i - position) >> 1;
}
/* Count number of consecutive full stops or commas (can be encoded in Punct or Digit mode) */
static int az_count_dotcomma(const unsigned char source[], int i, const int length) {
int c = 0;
static int az_count_dotcomma(const unsigned char source[], const int position, const int length) {
int i;
while (i < length && ((source[i] == '.') || (source[i] == ','))) {
c++;
i++;
}
for (i = position; i < length && (source[i] == '.' || source[i] == ','); i++);
return c;
return i - position;
}
/* Count number of consecutive `chr`s */
static int az_count_chr(const unsigned char source[], int i, const int length, const unsigned char chr) {
int c = 0;
static int az_count_chr(const unsigned char source[], const int position, const int length, const unsigned char chr) {
int i;
while (i < length && source[i] == chr) {
c++;
i++;
}
for (i = position; i < length && source[i] == chr; i++);
return c;
return i - position;
}
/* Return mode following current, or 'E' if none */
static char az_get_next_mode(const char encode_mode[], const int src_len, int i) {
int current_mode = encode_mode[i];
static char az_get_next_mode(const char encode_mode[], const int length, int i) {
const char current_mode = encode_mode[i];
do {
i++;
} while ((i < src_len) && (encode_mode[i] == current_mode));
if (i >= src_len) {
} while (i < length && encode_mode[i] == current_mode);
if (i >= length) {
return 'E';
} else {
return encode_mode[i];
}
return encode_mode[i];
}
/* Same as `z_bin_append_posn()`, except check for buffer overflow first */
@@ -105,7 +96,7 @@ static int az_bin_append_posn(const int arg, const int length, char *binary, con
}
/* Determine encoding modes and encode */
static int aztec_text_process(const unsigned char source[], int src_len, int bp, char binary_string[], const int gs1,
static int aztec_text_process(const unsigned char source[], int length, int bp, char binary_string[], const int gs1,
const int gs1_bp, const int eci, char *p_current_mode, int *data_length, const int debug_print) {
int i, j;
@@ -114,11 +105,11 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
int count;
char next_mode;
int reduced_length;
char *encode_mode = (char *) z_alloca(src_len + 1);
unsigned char *reduced_source = (unsigned char *) z_alloca(src_len + 1);
char *reduced_encode_mode = (char *) z_alloca(src_len + 1);
char *encode_mode = (char *) z_alloca(length + 1);
unsigned char *reduced_source = (unsigned char *) z_alloca(length + 1);
char *reduced_encode_mode = (char *) z_alloca(length + 1);
for (i = 0; i < src_len; i++) {
for (i = 0; i < length; i++) {
if (source[i] >= 128) {
encode_mode[i] = 'B';
} else if (gs1 && source[i] == '\x1D') {
@@ -131,41 +122,41 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
/* Deal first with letter combinations which can be combined to one codeword
Combinations are (CR LF) (. SP) (, SP) (: SP) in Punct mode */
current_mode = initial_mode;
for (i = 0; i + 1 < src_len; i++) {
for (i = 0; i + 1 < length; i++) {
/* Combination (CR LF) should always be in Punct mode */
if ((source[i] == 13) && (source[i + 1] == 10)) {
if (source[i] == 13 && source[i + 1] == 10) {
encode_mode[i] = 'P';
encode_mode[i + 1] = 'P';
/* Combination (: SP) should always be in Punct mode */
} else if ((source[i] == ':') && (source[i + 1] == ' ')) {
} else if (source[i] == ':' && source[i + 1] == ' ') {
encode_mode[i + 1] = 'P';
/* Combinations (. SP) and (, SP) sometimes use fewer bits in Digit mode */
} else if (((source[i] == '.') || (source[i] == ',')) && (source[i + 1] == ' ') && (encode_mode[i] == 'X')) {
count = az_count_doubles(source, i, src_len);
next_mode = az_get_next_mode(encode_mode, src_len, i);
} else if ((source[i] == '.' || source[i] == ',') && source[i + 1] == ' ' && encode_mode[i] == 'X') {
count = az_count_doubles(source, i, length);
next_mode = az_get_next_mode(encode_mode, length, i);
if (current_mode == 'U') {
if ((next_mode == 'D') && (count <= 5)) {
if (next_mode == 'D' && count <= 5) {
memset(encode_mode + i, 'D', 2 * count);
}
} else if (current_mode == 'L') {
if ((next_mode == 'D') && (count <= 4)) {
if (next_mode == 'D' && count <= 4) {
memset(encode_mode + i, 'D', 2 * count);
}
} else if (current_mode == 'M') {
if ((next_mode == 'D') && (count == 1)) {
if (next_mode == 'D' && count == 1) {
encode_mode[i] = 'D';
encode_mode[i + 1] = 'D';
}
} else if (current_mode == 'D') {
if ((next_mode != 'D') && (count <= 4)) {
if (next_mode != 'D' && count <= 4) {
memset(encode_mode + i, 'D', 2 * count);
} else if ((next_mode == 'D') && (count <= 7)) {
} else if (next_mode == 'D' && count <= 7) {
memset(encode_mode + i, 'D', 2 * count);
}
}
@@ -177,32 +168,32 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
}
}
if ((encode_mode[i] != 'X') && (encode_mode[i] != 'B')) {
if (encode_mode[i] != 'X' && encode_mode[i] != 'B') {
current_mode = encode_mode[i];
}
}
if (debug_print) {
fputs("First Pass:\n", stdout);
printf("%.*s\n", src_len, encode_mode);
printf("%.*s\n", length, encode_mode);
}
/* Reduce two letter combinations to one codeword marked as [abcd] in Punct mode */
i = 0;
j = 0;
while (i < src_len) {
while (i < length) {
reduced_encode_mode[j] = encode_mode[i];
if (i + 1 < src_len) {
if ((source[i] == 13) && (source[i + 1] == 10)) { /* CR LF */
if (i + 1 < length) {
if (source[i] == 13 && source[i + 1] == 10) { /* CR LF */
reduced_source[j] = 'a';
i += 2;
} else if ((source[i] == '.') && (source[i + 1] == ' ') && (encode_mode[i] == 'P')) {
} else if (source[i] == '.' && source[i + 1] == ' ' && encode_mode[i] == 'P') {
reduced_source[j] = 'b';
i += 2;
} else if ((source[i] == ',') && (source[i + 1] == ' ') && (encode_mode[i] == 'P')) {
} else if (source[i] == ',' && source[i + 1] == ' ' && encode_mode[i] == 'P') {
reduced_source[j] = 'c';
i += 2;
} else if ((source[i] == ':') && (source[i + 1] == ' ')) {
} else if (source[i] == ':' && source[i + 1] == ' ') {
reduced_source[j] = 'd';
i += 2;
} else {
@@ -223,21 +214,20 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
count = az_count_chr(reduced_source, i, reduced_length, 13);
next_mode = az_get_next_mode(reduced_encode_mode, reduced_length, i);
if ((current_mode == 'U') && ((next_mode == 'U') || (next_mode == 'B')) && (count == 1)) {
if (current_mode == 'U' && (next_mode == 'U' || next_mode == 'B') && count == 1) {
reduced_encode_mode[i] = 'P';
} else if ((current_mode == 'L') && ((next_mode == 'L') || (next_mode == 'B')) && (count == 1)) {
} else if (current_mode == 'L' && (next_mode == 'L' || next_mode == 'B') && count == 1) {
reduced_encode_mode[i] = 'P';
} else if ((current_mode == 'P') || (next_mode == 'P')) {
} else if (current_mode == 'P' || next_mode == 'P') {
reduced_encode_mode[i] = 'P';
}
if (current_mode == 'D') {
if (((next_mode == 'E') || (next_mode == 'U') || (next_mode == 'D') || (next_mode == 'B'))
&& (count <= 2)) {
if ((next_mode == 'E' || next_mode == 'U' || next_mode == 'D' || next_mode == 'B') && count <= 2) {
memset(reduced_encode_mode + i, 'P', count);
} else if ((next_mode == 'L') && (count == 1)) {
} else if (next_mode == 'L' && count == 1) {
reduced_encode_mode[i] = 'P';
}
}
@@ -248,32 +238,30 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
}
/* Resolve full stop and comma which can be in Punct or Digit mode */
} else if ((reduced_source[i] == '.') || (reduced_source[i] == ',')) {
} else if (reduced_source[i] == '.' || reduced_source[i] == ',') {
count = az_count_dotcomma(reduced_source, i, reduced_length);
next_mode = az_get_next_mode(reduced_encode_mode, reduced_length, i);
if (current_mode == 'U') {
if (((next_mode == 'U') || (next_mode == 'L') || (next_mode == 'M') || (next_mode == 'B'))
&& (count == 1)) {
if ((next_mode == 'U' || next_mode == 'L' || next_mode == 'M' || next_mode == 'B') && count == 1) {
reduced_encode_mode[i] = 'P';
}
} else if (current_mode == 'L') {
if ((next_mode == 'L') && (count <= 2)) {
if (next_mode == 'L' && count <= 2) {
memset(reduced_encode_mode + i, 'P', count);
} else if (((next_mode == 'M') || (next_mode == 'B')) && (count == 1)) {
} else if ((next_mode == 'M' || next_mode == 'B') && count == 1) {
reduced_encode_mode[i] = 'P';
}
} else if (current_mode == 'M') {
if (((next_mode == 'E') || (next_mode == 'U') || (next_mode == 'L') || (next_mode == 'M'))
&& (count <= 4)) {
if ((next_mode == 'E' || next_mode == 'U' || next_mode == 'L' || next_mode == 'M') && count <= 4) {
memset(reduced_encode_mode + i, 'P', count);
} else if ((next_mode == 'B') && (count <= 2)) {
} else if (next_mode == 'B' && count <= 2) {
memset(reduced_encode_mode + i, 'P', count);
}
} else if ((current_mode == 'P') && (next_mode != 'D') && (count <= 9)) {
} else if (current_mode == 'P' && next_mode != 'D' && count <= 9) {
memset(reduced_encode_mode + i, 'P', count);
}
@@ -288,44 +276,44 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
next_mode = az_get_next_mode(reduced_encode_mode, reduced_length, i);
if (current_mode == 'U') {
if ((next_mode == 'E') && (count <= 5)) {
if (next_mode == 'E' && count <= 5) {
memset(reduced_encode_mode + i, 'U', count);
} else if (((next_mode == 'U') || (next_mode == 'L') || (next_mode == 'M') || (next_mode == 'P')
|| (next_mode == 'B')) && (count <= 9)) {
} else if ((next_mode == 'U' || next_mode == 'L' || next_mode == 'M' || next_mode == 'P'
|| next_mode == 'B') && count <= 9) {
memset(reduced_encode_mode + i, 'U', count);
}
} else if (current_mode == 'L') {
if ((next_mode == 'E') && (count <= 5)) {
if (next_mode == 'E' && count <= 5) {
memset(reduced_encode_mode + i, 'L', count);
} else if ((next_mode == 'U') && (count == 1)) {
} else if (next_mode == 'U' && count == 1) {
reduced_encode_mode[i] = 'L';
} else if ((next_mode == 'L') && (count <= 14)) {
} else if (next_mode == 'L' && count <= 14) {
memset(reduced_encode_mode + i, 'L', count);
} else if (((next_mode == 'M') || (next_mode == 'P') || (next_mode == 'B')) && (count <= 9)) {
} else if ((next_mode == 'M' || next_mode == 'P' || next_mode == 'B') && count <= 9) {
memset(reduced_encode_mode + i, 'L', count);
}
} else if (current_mode == 'M') {
if (((next_mode == 'E') || (next_mode == 'U')) && (count <= 9)) {
if ((next_mode == 'E' || next_mode == 'U') && count <= 9) {
memset(reduced_encode_mode + i, 'M', count);
} else if (((next_mode == 'L') || (next_mode == 'B')) && (count <= 14)) {
} else if ((next_mode == 'L' || next_mode == 'B') && count <= 14) {
memset(reduced_encode_mode + i, 'M', count);
} else if (((next_mode == 'M') || (next_mode == 'P')) && (count <= 19)) {
} else if ((next_mode == 'M' || next_mode == 'P') && count <= 19) {
memset(reduced_encode_mode + i, 'M', count);
}
} else if (current_mode == 'P') {
if ((next_mode == 'E') && (count <= 5)) {
if (next_mode == 'E' && count <= 5) {
memset(reduced_encode_mode + i, 'U', count);
} else if (((next_mode == 'U') || (next_mode == 'L') || (next_mode == 'M') || (next_mode == 'P')
|| (next_mode == 'B')) && (count <= 9)) {
} else if ((next_mode == 'U' || next_mode == 'L' || next_mode == 'M' || next_mode == 'P'
|| next_mode == 'B') && count <= 9) {
memset(reduced_encode_mode + i, 'U', count);
}
}
@@ -347,51 +335,51 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
if (reduced_encode_mode[i] != current_mode) {
for (count = 0; ((i + count) < reduced_length)
&& (reduced_encode_mode[i + count] == reduced_encode_mode[i]); count++);
for (count = 0; i + count < reduced_length && reduced_encode_mode[i + count] == reduced_encode_mode[i];
count++);
next_mode = az_get_next_mode(reduced_encode_mode, reduced_length, i);
if (reduced_encode_mode[i] == 'P') {
if ((current_mode == 'U') && (count <= 2)) {
if (current_mode == 'U' && count <= 2) {
memset(reduced_encode_mode + i, 'p', count);
} else if ((current_mode == 'L') && (next_mode != 'U') && (count <= 2)) {
} else if (current_mode == 'L' && next_mode != 'U' && count <= 2) {
memset(reduced_encode_mode + i, 'p', count);
} else if ((current_mode == 'L') && (next_mode == 'U') && (count == 1)) {
} else if (current_mode == 'L' && next_mode == 'U' && count == 1) {
reduced_encode_mode[i] = 'p';
} else if ((current_mode == 'M') && (next_mode != 'M') && (count == 1)) {
} else if (current_mode == 'M' && next_mode != 'M' && count == 1) {
reduced_encode_mode[i] = 'p';
} else if ((current_mode == 'M') && (next_mode == 'M') && (count <= 2)) {
} else if (current_mode == 'M' && next_mode == 'M' && count <= 2) {
memset(reduced_encode_mode + i, 'p', count);
} else if ((current_mode == 'D') && (next_mode != 'D') && (count <= 3)) {
} else if (current_mode == 'D' && next_mode != 'D' && count <= 3) {
memset(reduced_encode_mode + i, 'p', count);
} else if ((current_mode == 'D') && (next_mode == 'D') && (count <= 6)) {
} else if (current_mode == 'D' && next_mode == 'D' && count <= 6) {
memset(reduced_encode_mode + i, 'p', count);
}
} else if (reduced_encode_mode[i] == 'U') {
if ((current_mode == 'L') && ((next_mode == 'L') || (next_mode == 'M')) && (count <= 2)) {
if (current_mode == 'L' && (next_mode == 'L' || next_mode == 'M') && count <= 2) {
memset(reduced_encode_mode + i, 'u', count);
} else if ((current_mode == 'L') && ((next_mode == 'E') || (next_mode == 'D') || (next_mode == 'B')
|| (next_mode == 'P')) && (count == 1)) {
} else if (current_mode == 'L' && (next_mode == 'E' || next_mode == 'D' || next_mode == 'B'
|| next_mode == 'P') && count == 1) {
reduced_encode_mode[i] = 'u';
} else if ((current_mode == 'D') && (next_mode == 'D') && (count == 1)) {
} else if (current_mode == 'D' && next_mode == 'D' && count == 1) {
reduced_encode_mode[i] = 'u';
} else if ((current_mode == 'D') && (next_mode == 'P') && (count <= 2)) {
} else if (current_mode == 'D' && next_mode == 'P' && count <= 2) {
memset(reduced_encode_mode + i, 'u', count);
}
}
}
if ((reduced_encode_mode[i] != 'p') && (reduced_encode_mode[i] != 'u') && (reduced_encode_mode[i] != 'B')) {
if (reduced_encode_mode[i] != 'p' && reduced_encode_mode[i] != 'u' && reduced_encode_mode[i] != 'B') {
current_mode = reduced_encode_mode[i];
}
}
@@ -410,7 +398,7 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
if (eci != 0) {
bp = z_bin_append_posn(0, initial_mode == 'D' ? 4 : 5, binary_string, bp); /* P/S */
bp = z_bin_append_posn(0, 5, binary_string, bp); /* FLG(n) */
if (eci < 10) {
if (eci <= 9) {
bp = z_bin_append_posn(1, 3, binary_string, bp); /* FLG(1) */
bp = z_bin_append_posn(2 + eci, 4, binary_string, bp);
} else if (eci <= 99) {
@@ -579,7 +567,7 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
/* Byte mode - process full block here */
if (reduced_encode_mode[i] == 'B') {
int big_batch = 0;
for (count = 0; ((i + count) < reduced_length) && (reduced_encode_mode[i + count] == 'B'); count++);
for (count = 0; i + count < reduced_length && reduced_encode_mode[i + count] == 'B'; count++);
if (count > 2047 + 2078) { /* Can't be more than 19968 / 8 = 2496 */
return 0;
@@ -614,12 +602,12 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
continue;
}
if ((reduced_encode_mode[i] != 'u') && (reduced_encode_mode[i] != 'p')) {
if (reduced_encode_mode[i] != 'u' && reduced_encode_mode[i] != 'p') {
current_mode = reduced_encode_mode[i];
}
}
if ((reduced_encode_mode[i] == 'U') || (reduced_encode_mode[i] == 'u')) {
if (reduced_encode_mode[i] == 'U' || reduced_encode_mode[i] == 'u') {
if (reduced_source[i] == ' ') {
if (!(bp = az_bin_append_posn(1, 5, binary_string, bp))) return 0; /* SP */
} else {
@@ -639,7 +627,7 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
} else {
if (!(bp = az_bin_append_posn(AztecSymbolChar[reduced_source[i]], 5, binary_string, bp))) return 0;
}
} else if ((reduced_encode_mode[i] == 'P') || (reduced_encode_mode[i] == 'p')) {
} else if (reduced_encode_mode[i] == 'P' || reduced_encode_mode[i] == 'p') {
if (gs1 && reduced_source[i] == '\x1D') {
if (!(bp = az_bin_append_posn(0, 5, binary_string, bp))) return 0; /* FLG(n) */
if (!(bp = az_bin_append_posn(0, 3, binary_string, bp))) return 0; /* FLG(0) = FNC1 */
@@ -806,7 +794,7 @@ static int az_bitrun_stuff(const char *binary_string, const int data_length, con
/* 7.3.1.2 "whenever the first B-1 bits ... are all “0”s, then a dummy “1” is inserted..."
"Similarly a message codeword that starts with B-1 “1”s has a dummy “0” inserted..." */
if (count == 0 || count == (codeword_size - 1)) {
if (count == 0 || count == codeword_size - 1) {
/* Codeword of B-1 '0's or B-1 '1's */
if (j > data_maxsize) {
return 0; /* Fail */
@@ -975,7 +963,7 @@ INTERNAL int zint_aztec(struct zint_symbol *symbol, struct zint_seg segs[], cons
/* For each level of error correction work out the smallest symbol which the data will fit in */
for (i = compact_loop_start; i > 0; i--) {
if ((data_length + adjustment_size) <= AztecCompactDataSizes[ecc_level - 1][i - 1]) {
if (data_length + adjustment_size <= AztecCompactDataSizes[ecc_level - 1][i - 1]) {
layers = i;
compact = 1;
data_maxsize = AztecCompactDataSizes[ecc_level - 1][i - 1];
@@ -983,7 +971,7 @@ INTERNAL int zint_aztec(struct zint_symbol *symbol, struct zint_seg segs[], cons
}
if (!compact) {
for (i = 32; i > 0; i--) {
if ((data_length + adjustment_size) <= AztecDataSizes[ecc_level - 1][i - 1]) {
if (data_length + adjustment_size <= AztecDataSizes[ecc_level - 1][i - 1]) {
layers = i;
compact = 0;
data_maxsize = AztecDataSizes[ecc_level - 1][i - 1];
@@ -1037,7 +1025,7 @@ INTERNAL int zint_aztec(struct zint_symbol *symbol, struct zint_seg segs[], cons
symbol->option_2 = compact ? layers : layers + 4; /* Feedback options */
} else { /* The size of the symbol has been specified by the user */
if ((symbol->option_2 < 0) || (symbol->option_2 > 36)) {
if (symbol->option_2 < 0 || symbol->option_2 > 36) {
return z_errtxtf(ZINT_ERROR_INVALID_OPTION, symbol, 510, "Version '%d' out of range (1 to 36)",
symbol->option_2);
}
@@ -1105,7 +1093,7 @@ INTERNAL int zint_aztec(struct zint_symbol *symbol, struct zint_seg segs[], cons
fputc('\n', stdout);
}
if (reader_init && (layers > 22)) {
if (reader_init && layers > 22) {
return z_errtxtf(ZINT_ERROR_TOO_LONG, symbol, 506,
"Input too long for Reader Initialisation, requires %d layers (maximum 22)", layers);
}
+1 -1
View File
@@ -192,7 +192,7 @@ INTERNAL int zint_channel(struct zint_symbol *symbol, unsigned char source[], in
}
target_value = z_to_int(source, length);
if ((symbol->option_2 < 3) || (symbol->option_2 > 8)) {
if (symbol->option_2 < 3 || symbol->option_2 > 8) {
channels = 0;
} else {
channels = symbol->option_2;
+3 -4
View File
@@ -71,12 +71,11 @@ INTERNAL int zint_codabar(struct zint_symbol *symbol, unsigned char source[], in
z_to_upper(source, length);
/* Codabar must begin and end with the characters A, B, C or D */
if ((source[0] != 'A') && (source[0] != 'B') && (source[0] != 'C')
&& (source[0] != 'D')) {
if (source[0] != 'A' && source[0] != 'B' && source[0] != 'C' && source[0] != 'D') {
return z_errtxt(ZINT_ERROR_INVALID_DATA, symbol, 358, "Does not begin with \"A\", \"B\", \"C\" or \"D\"");
}
if ((source[length - 1] != 'A') && (source[length - 1] != 'B') &&
(source[length - 1] != 'C') && (source[length - 1] != 'D')) {
if (source[length - 1] != 'A' && source[length - 1] != 'B' && source[length - 1] != 'C'
&& source[length - 1] != 'D') {
return z_errtxt(ZINT_ERROR_INVALID_DATA, symbol, 359, "Does not end with \"A\", \"B\", \"C\" or \"D\"");
}
if ((i = z_not_sane_lookup(CALCIUM, sizeof(CALCIUM) - 1, source, length, posns))) {
+4 -4
View File
@@ -129,15 +129,15 @@ INTERNAL int zint_code39(struct zint_symbol *symbol, unsigned char source[], int
int error_number = 0;
const int raw_text = symbol->output_options & BARCODE_RAW_TEXT;
if ((symbol->option_2 < 0) || (symbol->option_2 > 2)) {
if (symbol->option_2 < 0 || symbol->option_2 > 2) {
symbol->option_2 = 0;
}
/* LOGMARS MIL-STD-1189 Rev. B https://apps.dtic.mil/dtic/tr/fulltext/u2/a473534.pdf */
if ((symbol->symbology == BARCODE_LOGMARS) && (length > 30)) { /* MIL-STD-1189 Rev. B Section 5.2.6.2 */
if (symbol->symbology == BARCODE_LOGMARS && length > 30) { /* MIL-STD-1189 Rev. B Section 5.2.6.2 */
return z_errtxtf(ZINT_ERROR_TOO_LONG, symbol, 322, "Input length %d too long (maximum 30)", length);
/* Prevent encoded_data out-of-bounds >= 143 for BARCODE_HIBC_39 due to wider 'wide' bars */
} else if ((symbol->symbology == BARCODE_HIBC_39) && (length > 70)) { /* 16 (Start) + 70*16 + 15 (Stop) = 1151 */
} else if (symbol->symbology == BARCODE_HIBC_39 && length > 70) { /* 16 (Start) + 70*16 + 15 (Stop) = 1151 */
/* 70 less '+' and check */
return z_errtxtf(ZINT_ERROR_TOO_LONG, symbol, 319, "Input length %d too long (maximum 68)", length - 2);
} else if (length > 86) { /* 13 (Start) + 86*13 + 12 (Stop) = 1143 */
@@ -172,7 +172,7 @@ INTERNAL int zint_code39(struct zint_symbol *symbol, unsigned char source[], int
memcpy(d, C39Table[43], 9);
d += 9;
if ((symbol->symbology == BARCODE_LOGMARS) || (symbol->symbology == BARCODE_HIBC_39)) {
if (symbol->symbology == BARCODE_LOGMARS || symbol->symbology == BARCODE_HIBC_39) {
/* LOGMARS and HIBC use wider 'wide' bars than normal Code 39 */
counter = d - dest;
for (i = 0; i < counter; i++) {
+9 -9
View File
@@ -71,7 +71,7 @@ static int c16k_parunmodd(const unsigned char llyth, const int check_fnc1) {
if (llyth <= 31) {
modd = check_fnc1 && llyth == '\x1D' ? C16K_ABORC : C16K_SHIFTA;
} else if ((llyth >= 48) && (llyth <= 57)) {
} else if (llyth >= 48 && llyth <= 57) {
modd = C16K_ABORC;
} else if (llyth <= 95) {
modd = C16K_AORB;
@@ -136,7 +136,7 @@ static void c16k_dxsmooth(int list[2][C128_MAX], int *p_indexliste) {
if (i == 0) { /* First block */
if (current == C16K_ABORC) {
if ((indexliste == 1) && (length == 2)) {
if (indexliste == 1 && length == 2) {
/* Rule 1a */
list[1][i] = C16K_LATCHC;
current = C16K_LATCHC;
@@ -362,7 +362,7 @@ INTERNAL int zint_code16k(struct zint_symbol *symbol, unsigned char source[], in
do {
list[1][indexliste] = mode;
while ((list[1][indexliste] == mode) && (indexchaine < length)) {
while (list[1][indexliste] == mode && indexchaine < length) {
list[0][indexliste]++;
indexchaine++;
if (indexchaine == length) {
@@ -393,7 +393,7 @@ INTERNAL int zint_code16k(struct zint_symbol *symbol, unsigned char source[], in
}
if (m == 2) {
m = 5;
} else if ((set[0] == 'B') && (set[1] == 'C') && fset[0] != 'f') {
} else if (set[0] == 'B' && set[1] == 'C' && fset[0] != 'f') {
m = 6;
}
values[1] = 96; /* FNC3 */
@@ -406,9 +406,9 @@ INTERNAL int zint_code16k(struct zint_symbol *symbol, unsigned char source[], in
case 'C': m = 4; break;
}
} else {
if ((set[0] == 'B') && (set[1] == 'C')) {
if (set[0] == 'B' && set[1] == 'C') {
m = fset[0] == 'f' ? 6 : 5;
} else if ((set[0] == 'B') && (set[1] == 'B') && (set[2] == 'C') && fset[0] != 'f' && fset[1] != 'f') {
} else if (set[0] == 'B' && set[1] == 'B' && set[2] == 'C' && fset[0] != 'f' && fset[1] != 'f') {
m = 6;
}
}
@@ -422,7 +422,7 @@ INTERNAL int zint_code16k(struct zint_symbol *symbol, unsigned char source[], in
/* TODO: make use of extra (non-CODE128) shifts: 1SB, 2SA/B/C, 3SB/C */
do {
if ((read != 0) && (set[read] != current_set)) {
if (read != 0 && set[read] != current_set) {
/* Latch different code set */
switch (set[read]) {
case 'A':
@@ -455,7 +455,7 @@ INTERNAL int zint_code16k(struct zint_symbol *symbol, unsigned char source[], in
}
}
if ((set[read] == 'a') || (set[read] == 'b')) {
if (set[read] == 'a' || set[read] == 'b') {
/* Insert shift character */
values[bar_characters++] = 98;
}
@@ -492,7 +492,7 @@ INTERNAL int zint_code16k(struct zint_symbol *symbol, unsigned char source[], in
if (pads_needed == 5) {
pads_needed = 0;
}
if ((bar_characters + pads_needed) < 8) {
if (bar_characters + pads_needed < 8) {
pads_needed += 8 - (bar_characters + pads_needed);
}
+5 -5
View File
@@ -97,7 +97,7 @@ INTERNAL int zint_code49(struct zint_symbol *symbol, unsigned char source[], int
block_remain = j % 5;
for (c = 0; c < block_count; c++) {
if ((c == block_count - 1) && (block_remain == 2)) {
if (c == block_count - 1 && block_remain == 2) {
/* Rule (d) */
block_value = 100000 + z_to_int(ZCUCP(intermediate + i), 4);
@@ -207,7 +207,7 @@ INTERNAL int zint_code49(struct zint_symbol *symbol, unsigned char source[], int
rows = 0;
do {
for (i = 0; i < 7; i++) {
if (((rows * 7) + i) < codeword_count) {
if (rows * 7 + i < codeword_count) {
c_grid[rows][i] = codewords[(rows * 7) + i];
} else {
c_grid[rows][i] = 48; /* Pad */
@@ -215,9 +215,9 @@ INTERNAL int zint_code49(struct zint_symbol *symbol, unsigned char source[], int
}
}
rows++;
} while ((rows * 7) < codeword_count);
} while (rows * 7 < codeword_count);
if ((((rows <= 6) && (pad_count < 5))) || (rows > 6) || (rows == 1)) {
if ((rows <= 6 && pad_count < 5) || rows > 6 || rows == 1) {
/* Add a row */
for (i = 0; i < 7; i++) {
c_grid[rows][i] = 48; /* Pad */
@@ -328,7 +328,7 @@ INTERNAL int zint_code49(struct zint_symbol *symbol, unsigned char source[], int
bp = 0;
bp = z_bin_append_posn(2, 2, pattern, bp); /* Start character "10" */
for (j = 0; j < 4; j++) {
if (i != (rows - 1)) {
if (i != rows - 1) {
if (c49_table4[i][j] == 'E') {
/* Even Parity */
bp = z_bin_append_posn(c49_even_bitpattern[w_grid[i][j]], 16, pattern, bp);
+5 -5
View File
@@ -39,9 +39,9 @@
INTERNAL int z_ctoi(const char source) {
if (z_isdigit(source))
return (source - '0');
if ((source >= 'A') && (source <= 'F'))
if (source >= 'A' && source <= 'F')
return (source - 'A' + 10);
if ((source >= 'a') && (source <= 'f'))
if (source >= 'a' && source <= 'f')
return (source - 'a' + 10);
return -1;
}
@@ -662,7 +662,7 @@ INTERNAL int z_is_fixed_ratio(const int symbology) {
/* Whether next two characters are digits */
INTERNAL int z_is_twodigits(const unsigned char source[], const int length, const int position) {
if ((position + 1 < length) && z_isdigit(source[position]) && z_isdigit(source[position + 1])) {
if (position + 1 < length && z_isdigit(source[position]) && z_isdigit(source[position + 1])) {
return 1;
}
@@ -719,7 +719,7 @@ INTERNAL unsigned int z_decode_utf8(unsigned int *state, unsigned int *codep, co
const unsigned int type = utf8d[byte];
*codep = *state != 0 ? (byte & 0x3fu) | (*codep << 6) : (0xff >> type) & byte;
*codep = *state != 0 ? (byte & 0x3Fu) | (*codep << 6) : (0xFF >> type) & byte;
*state = utf8d[256 + *state + type];
@@ -759,7 +759,7 @@ INTERNAL int z_utf8_to_unicode(struct zint_symbol *symbol, const unsigned char s
if (state != 0) {
return z_errtxt(ZINT_ERROR_INVALID_DATA, symbol, 240, "Corrupt Unicode data");
}
if (disallow_4byte && codepoint > 0xffff) {
if (disallow_4byte && codepoint > 0xFFFF) {
return z_errtxt(ZINT_ERROR_INVALID_DATA, symbol, 242,
"Unicode sequences of more than 3 bytes not supported");
}
+2 -2
View File
@@ -1449,9 +1449,9 @@ INTERNAL int zint_composite(struct zint_symbol *symbol, unsigned char source[],
}
}
}
if ((linear->width + bottom_shift) > symbol->width + top_shift) {
if (linear->width + bottom_shift > symbol->width + top_shift) {
symbol->width = linear->width + bottom_shift;
} else if ((symbol->width + top_shift) > linear->width + bottom_shift) {
} else if (symbol->width + top_shift > linear->width + bottom_shift) {
symbol->width += top_shift;
}
symbol->rows += linear->rows;
+15 -15
View File
@@ -402,7 +402,7 @@ static int dm_look_ahead_test(const unsigned char source[], const int length, co
}
cnt_1 = b256_count + DM_MULT_1;
if (cnt_1 <= ascii_count || (cnt_1 < edf_count && cnt_1 < text_count && cnt_1 < x12_count
&& cnt_1 < c40_count)) {
&& cnt_1 < c40_count)) {
if (debug_print) fputs("BAS->", stdout);
return DM_BASE256; /* step (r)(2) */
}
@@ -535,7 +535,7 @@ static int dm_edi_buffer_xfer(int process_buffer[8], int process_p, unsigned cha
for (i = 0; i < process_e; i += 4) {
target[tp++] = (unsigned char) (process_buffer[i] << 2 | (process_buffer[i + 1] & 0x30) >> 4);
target[tp++] = (unsigned char) ((process_buffer[i + 1] & 0x0f) << 4 | (process_buffer[i + 2] & 0x3c) >> 2);
target[tp++] = (unsigned char) ((process_buffer[i + 1] & 0x0F) << 4 | (process_buffer[i + 2] & 0x3C) >> 2);
target[tp++] = (unsigned char) ((process_buffer[i + 2] & 0x03) << 6 | process_buffer[i + 3]);
if (debug_print) {
printf("[%d %d %d %d (%d %d %d)] ", process_buffer[i], process_buffer[i + 1], process_buffer[i + 2],
@@ -550,8 +550,8 @@ static int dm_edi_buffer_xfer(int process_buffer[8], int process_p, unsigned cha
if (empty) {
if (process_p == 3) {
target[tp++] = (unsigned char) (process_buffer[i] << 2 | (process_buffer[i + 1] & 0x30) >> 4);
target[tp++] = (unsigned char) ((process_buffer[i + 1] & 0x0f) << 4
| (process_buffer[i + 2] & 0x3c) >> 2);
target[tp++] = (unsigned char) ((process_buffer[i + 1] & 0x0F) << 4
| (process_buffer[i + 2] & 0x3C) >> 2);
target[tp++] = (unsigned char) ((process_buffer[i + 2] & 0x03) << 6);
if (debug_print) {
printf("[%d %d %d (%d %d %d)] ", process_buffer[i], process_buffer[i + 1], process_buffer[i + 2],
@@ -559,7 +559,7 @@ static int dm_edi_buffer_xfer(int process_buffer[8], int process_p, unsigned cha
}
} else if (process_p == 2) {
target[tp++] = (unsigned char) (process_buffer[i] << 2 | (process_buffer[i + 1] & 0x30) >> 4);
target[tp++] = (unsigned char) ((process_buffer[i + 1] & 0x0f) << 4);
target[tp++] = (unsigned char) ((process_buffer[i + 1] & 0x0F) << 4);
if (debug_print) {
printf("[%d %d (%d %d)] ", process_buffer[i], process_buffer[i + 1], target[tp - 2],
target[tp - 1]);
@@ -582,7 +582,7 @@ static int dm_edi_buffer_xfer(int process_buffer[8], int process_p, unsigned cha
static int dm_get_symbolsize(struct zint_symbol *symbol, const int minimum) {
int i;
if ((symbol->option_2 >= 1) && (symbol->option_2 <= DMSIZESCOUNT)) {
if (symbol->option_2 >= 1 && symbol->option_2 <= DMSIZESCOUNT) {
return dm_intsymbol[symbol->option_2 - 1];
}
if (minimum > 1304) {
@@ -1098,7 +1098,7 @@ static int dm_minimalenc(struct zint_symbol *symbol, const unsigned char source[
tp = dm_update_b256_field_length(target, tp, *p_b256_start);
/* B.2.1 255-state randomising algorithm */
for (i = *p_b256_start; i < tp; i++) {
const int prn = ((149 * (i + 1)) % 255) + 1;
const int prn = (149 * (i + 1)) % 255 + 1;
target[i] = (unsigned char) ((target[i] + prn) & 0xFF);
}
break;
@@ -1457,7 +1457,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c
tp = dm_update_b256_field_length(target, tp, *p_b256_start);
/* B.2.1 255-state randomising algorithm */
for (i = *p_b256_start; i < tp; i++) {
const int prn = ((149 * (i + 1)) % 255) + 1;
const int prn = (149 * (i + 1)) % 255 + 1;
target[i] = (unsigned char) ((target[i] + prn) & 0xFF);
}
/* We switch directly here to avoid flipping back to Base 256 due to `dm_text_sp_cnt()` */
@@ -1607,7 +1607,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c
} else if (current_mode == DM_X12) {
if (debug_print) fputs("X12 ", stdout);
if ((symbols_left == 1) && (process_p == 1)) {
if (symbols_left == 1 && process_p == 1) {
/* Unlatch not required! */
target[tp++] = source[length - 1] + 1;
if (debug_print) printf("A%02X ", target[tp - 1] - 1);
@@ -1652,7 +1652,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c
}
/* B.2.1 255-state randomising algorithm */
for (i = b256_start; i < tp; i++) {
int prn = ((149 * (i + 1)) % 255) + 1;
const int prn = (149 * (i + 1)) % 255 + 1;
target[i] = (unsigned char) ((target[i] + prn) & 0xFF);
}
}
@@ -1833,15 +1833,15 @@ static int dm_encode_segs(struct zint_symbol *symbol, struct zint_seg segs[], co
/* add pad bits */
static void dm_add_tail(unsigned char target[], int tp, const int tail_length) {
int i, prn, temp;
int i;
target[tp++] = 129; /* Pad */
for (i = 1; i < tail_length; i++) {
/* B.1.1 253-state randomising algorithm */
prn = ((149 * (tp + 1)) % 253) + 1;
temp = 129 + prn;
const int prn = (149 * (tp + 1)) % 253 + 1;
const int temp = 129 + prn;
if (temp <= 254) {
target[tp++] = (unsigned char) (temp);
target[tp++] = (unsigned char) temp;
} else {
target[tp++] = (unsigned char) (temp - 254);
}
@@ -1866,7 +1866,7 @@ static int dm_ecc200(struct zint_symbol *symbol, struct zint_seg segs[], const i
symbolsize = dm_get_symbolsize(symbol, binlen);
if (binlen > dm_matrixbytes[symbolsize]) {
if ((symbol->option_2 >= 1) && (symbol->option_2 <= DMSIZESCOUNT)) {
if (symbol->option_2 >= 1 && symbol->option_2 <= DMSIZESCOUNT) {
/* The symbol size was given by --ver (option_2) */
return ZEXT z_errtxtf(ZINT_ERROR_TOO_LONG, symbol, 522,
"Input too long for Version %1$d, requires %2$d codewords (maximum %3$d)",
+22 -25
View File
@@ -453,8 +453,8 @@ static int dc_ahead_b(const unsigned char source[], const int length, const int
int count = 0;
int i, incr;
for (i = position; i < length && (incr = dc_datum_b(source, length, i))
&& dc_try_c(source, length, i) < 2; i += incr) {
for (i = position; i < length && (incr = dc_datum_b(source, length, i)) && dc_try_c(source, length, i) < 2;
i += incr) {
count++;
}
@@ -545,8 +545,8 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
} else if (length > 5) { /* Note assuming macro headers don't straddle segments */
/* Step C1 */
if (source[0] == '[' && source[1] == ')' && source[2] == '>' && source[3] == 30 /*RS*/ && last_EOT) {
int format_050612 = (source[4] == '0' && (source[5] == '5' || source[5] == '6'))
|| (source[4] == '1' && source[5] == '2');
const int format_050612 = (source[4] == '0' && (source[5] == '5' || source[5] == '6'))
|| (source[4] == '1' && source[5] == '2');
inside_macro = 0;
if (length > 6 && format_050612 && source[6] == 29 /*GS*/ && last_RSEOT) {
if (source[5] == '5') {
@@ -613,7 +613,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
while (position < length) {
/* Step A */
if (last_seg && (position == length - 2) && (inside_macro != 0) && (inside_macro != 100)) {
if (last_seg && position == length - 2 && inside_macro != 0 && inside_macro != 100) {
/* inside_macro only gets set to 97, 98 or 99 if the last two characters are RS/EOT */
position += 2;
if (debug_print) fputs("A ", stdout);
@@ -621,7 +621,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
}
/* Step B */
if (last_seg && (position == length - 1) && (inside_macro == 100)) {
if (last_seg && position == length - 1 && inside_macro == 100) {
/* inside_macro only gets set to 100 if the last character is EOT */
position++;
if (debug_print) fputs("B ", stdout);
@@ -657,7 +657,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
if (dc_binary(source, length, position)) {
/* z_cnt_digits(position + 1) > 0 */
if (position + 1 < length && z_isdigit(source[position + 1])) {
if ((source[position] - 128) < 32) {
if (source[position] - 128 < 32) {
codeword_array[ap++] = 110; /* Upper Shift A */
codeword_array[ap++] = source[position] - 128 + 64;
} else {
@@ -740,7 +740,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
if (dc_datum_b(source, length, position)) {
int done = 0;
if ((source[position] >= 32) && (source[position] <= 127)) {
if (source[position] >= 32 && source[position] <= 127) {
codeword_array[ap++] = source[position] - 32;
done = 1;
@@ -772,7 +772,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
/* Step D3 */
if (dc_binary(source, length, position)) {
if (dc_datum_b(source, length, position + 1)) {
if ((source[position] - 128) < 32) {
if (source[position] - 128 < 32) {
codeword_array[ap++] = 110; /* Bin Shift A */
codeword_array[ap++] = source[position] - 128 + 64;
} else {
@@ -845,7 +845,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
/* Step E3 */
if (dc_binary(source, length, position)) {
if (dc_datum_a(source, length, position + 1)) {
if ((source[position] - 128) < 32) {
if (source[position] - 128 < 32) {
codeword_array[ap++] = 110; /* Bin Shift A */
codeword_array[ap++] = source[position] - 128 + 64;
} else {
@@ -1044,37 +1044,34 @@ static int dc_make_dotstream(const unsigned char masked_array[], const int array
static int dc_is_corner(const int column, const int row, const int width, const int height) {
/* Top Left */
if ((column == 0) && (row == 0)) {
if (column == 0 && row == 0) {
return 1;
}
/* Top Right */
if (height & 1) {
if (((column == width - 2) && (row == 0))
|| ((column == width - 1) && (row == 1))) {
if ((column == width - 2 && row == 0) || (column == width - 1 && row == 1)) {
return 1;
}
} else {
if ((column == width - 1) && (row == 0)) {
if (column == width - 1 && row == 0) {
return 1;
}
}
/* Bottom Left */
if (height & 1) {
if ((column == 0) && (row == height - 1)) {
if (column == 0 && row == height - 1) {
return 1;
}
} else {
if (((column == 0) && (row == height - 2))
|| ((column == 1) && (row == height - 1))) {
if ((column == 0 && row == height - 2) || (column == 1 && row == height - 1)) {
return 1;
}
}
/* Bottom Right */
if (((column == width - 2) && (row == height - 1))
|| ((column == width - 1) && (row == height - 2))) {
if ((column == width - 2 && row == height - 1) || (column == width - 1 && row == height - 2)) {
return 1;
}
@@ -1296,26 +1293,26 @@ INTERNAL int zint_dotcode(struct zint_symbol *symbol, struct zint_seg segs[], co
width = (int) w;
if (((width + height) & 1) == 1) {
if ((width * height) < min_area) {
if (width * height < min_area) {
width++;
height++;
}
} else {
if ((h * width) < (w * height)) {
if (h * width < w * height) {
width++;
if ((width * height) < min_area) {
if (width * height < min_area) {
width--;
height++;
if ((width * height) < min_area) {
if (width * height < min_area) {
width += 2;
}
}
} else {
height++;
if ((width * height) < min_area) {
if (width * height < min_area) {
width++;
height--;
if ((width * height) < min_area) {
if (width * height < min_area) {
height += 2;
}
}
+3 -6
View File
@@ -261,11 +261,10 @@ static int fm_vprintf(struct filemem *restrict const fmp, const char *fmt, va_li
#endif
va_copy(cpy, ap);
/* The clang-tidy warning is a bug https://github.com/llvm/llvm-project/issues/40656 */
#ifdef FM_NO_VSNPRINTF
size = vfprintf(fmp->fp_null, fmt, cpy); /* NOLINT(clang-analyzer-valist.Uninitialized) */
size = vfprintf(fmp->fp_null, fmt, cpy);
#else
size = vsnprintf(NULL, 0, fmt, cpy); /* NOLINT(clang-analyzer-valist.Uninitialized) */
size = vsnprintf(NULL, 0, fmt, cpy);
#endif
va_end(cpy);
@@ -278,10 +277,8 @@ static int fm_vprintf(struct filemem *restrict const fmp, const char *fmt, va_li
}
#ifdef FM_NO_VSNPRINTF
/* NOLINTNEXTLINE(clang-analyzer-valist.Uninitialized) - see above */
check = vsprintf((char *) fmp->mem + fmp->mempos, fmt, ap);
#else
/* NOLINTNEXTLINE(clang-analyzer-valist.Uninitialized) - see above */
check = vsnprintf((char *) fmp->mem + fmp->mempos, size + 1, fmt, ap);
#endif
@@ -309,7 +306,7 @@ INTERNAL int zint_fm_printf(struct filemem *restrict const fmp, const char *fmt,
return ret;
}
va_start(ap, fmt);
ret = vfprintf(fmp->fp, fmt, ap) >= 0; /* NOLINT(clang-analyzer-valist.Uninitialized) - see above */
ret = vfprintf(fmp->fp, fmt, ap) >= 0;
va_end(ap);
return ret ? 1 : fm_seterr(fmp, errno);
}
+23 -24
View File
@@ -456,22 +456,22 @@ static int gm_encode(unsigned int ddata[], const int length, char binary[], cons
switch (current_mode) {
case GM_CHINESE:
done = 0;
if (ddata[sp] > 0xff) {
if (ddata[sp] > 0xFF) {
/* GB2312 character */
c1 = (ddata[sp] & 0xff00) >> 8;
c2 = ddata[sp] & 0xff;
c1 = (ddata[sp] & 0xFF00) >> 8;
c2 = ddata[sp] & 0xFF;
if ((c1 >= 0xa1) && (c1 <= 0xa9)) {
glyph = (0x60 * (c1 - 0xa1)) + (c2 - 0xa0);
} else if ((c1 >= 0xb0) && (c1 <= 0xf7)) {
glyph = (0x60 * (c1 - 0xb0 + 9)) + (c2 - 0xa0);
if (c1 >= 0xA1 && c1 <= 0xA9) {
glyph = 0x60 * (c1 - 0xA1) + (c2 - 0xA0);
} else if (c1 >= 0xB0 && c1 <= 0xF7) {
glyph = 0x60 * (c1 - 0xB0 + 9) + (c2 - 0xA0);
}
done = 1; /* GB 2312 always within above ranges */
/* Note not using the unallocated glyphs 7776 to 8191 mentioned in AIMD014 section 6.3.1.2 */
}
if (!(done)) {
if (sp != (length - 1)) {
if ((ddata[sp] == 13) && (ddata[sp + 1] == 10)) {
if (!done) {
if (sp != length - 1) {
if (ddata[sp] == 13 && ddata[sp + 1] == 10) {
/* End of Line */
glyph = 7776;
sp++;
@@ -479,8 +479,8 @@ static int gm_encode(unsigned int ddata[], const int length, char binary[], cons
}
}
}
if (!(done)) {
if (sp != (length - 1)) {
if (!done) {
if (sp != length - 1) {
if (z_isdigit(ddata[sp]) && z_isdigit(ddata[sp + 1])) {
/* Two digits */
glyph = 8033 + (10 * (ddata[sp] - '0')) + (ddata[sp + 1] - '0');
@@ -489,7 +489,7 @@ static int gm_encode(unsigned int ddata[], const int length, char binary[], cons
}
}
}
if (!(done)) {
if (!done) {
/* Byte value */
glyph = 7777 + ddata[sp];
}
@@ -527,7 +527,7 @@ static int gm_encode(unsigned int ddata[], const int length, char binary[], cons
}
punt = ddata[sp];
ppos = p;
} else if (sp < (length - 1) && (ddata[sp] == 13) && (ddata[sp + 1] == 10)) {
} else if (sp < length - 1 && ddata[sp] == 13 && ddata[sp + 1] == 10) {
/* <end of line> */
if (ppos != -1) {
break;
@@ -539,7 +539,7 @@ static int gm_encode(unsigned int ddata[], const int length, char binary[], cons
break;
}
sp++;
} while ((p < 3) && (sp < length) && mode[sp] == GM_NUMBER);
} while (p < 3 && sp < length && mode[sp] == GM_NUMBER);
if (ppos != -1) {
switch (punt) {
@@ -804,7 +804,7 @@ static void gm_add_ecc(const char binary[], const int data_posn, const int layer
data[data_posn] = 0x00;
for (i = (data_posn + 1); i < data_cw; i++) {
if (i & 1) {
data[i] = 0x7e;
data[i] = 0x7E;
} else {
data[i] = 0x00;
}
@@ -1097,7 +1097,7 @@ INTERNAL int zint_gridmatrix(struct zint_symbol *symbol, struct zint_seg segs[],
}
layers = auto_layers;
if ((symbol->option_2 >= 1) && (symbol->option_2 <= 13)) {
if (symbol->option_2 >= 1 && symbol->option_2 <= 13) {
input_latch = 1;
if (symbol->option_2 >= min_layers) {
layers = symbol->option_2;
@@ -1111,7 +1111,7 @@ INTERNAL int zint_gridmatrix(struct zint_symbol *symbol, struct zint_seg segs[],
auto_ecc_level = 3;
if (layers == 1) {
auto_ecc_level = 5;
} else if ((layers == 2) || (layers == 3)) {
} else if (layers == 2 || layers == 3) {
auto_ecc_level = 4;
}
ecc_level = auto_ecc_level;
@@ -1123,26 +1123,25 @@ INTERNAL int zint_gridmatrix(struct zint_symbol *symbol, struct zint_seg segs[],
min_ecc_level = 2;
}
if ((symbol->option_1 >= 1) && (symbol->option_1 <= 5)) {
if (symbol->option_1 >= 1 && symbol->option_1 <= 5) {
if (symbol->option_1 >= min_ecc_level) {
ecc_level = symbol->option_1;
} else {
ecc_level = min_ecc_level;
}
}
if (data_cw > gm_data_codewords[(5 * (layers - 1)) + (ecc_level - 1)]) {
if (data_cw > gm_data_codewords[5 * (layers - 1) + (ecc_level - 1)]) {
/* If layers user-specified (option_2), try reducing ECC level first */
if (input_latch && ecc_level > min_ecc_level) {
do {
ecc_level--;
} while ((data_cw > gm_data_codewords[(5 * (layers - 1)) + (ecc_level - 1)])
&& (ecc_level > min_ecc_level));
} while (data_cw > gm_data_codewords[5 * (layers - 1) + (ecc_level - 1)] && ecc_level > min_ecc_level);
}
while (data_cw > gm_data_codewords[(5 * (layers - 1)) + (ecc_level - 1)] && (layers < 13)) {
while (data_cw > gm_data_codewords[5 * (layers - 1) + (ecc_level - 1)] && layers < 13) {
layers++;
}
/* ECC min level 1 for layers > 2 */
while (data_cw > gm_data_codewords[(5 * (layers - 1)) + (ecc_level - 1)] && ecc_level > 1) {
while (data_cw > gm_data_codewords[5 * (layers - 1) + (ecc_level - 1)] && ecc_level > 1) {
ecc_level--;
}
}
+2 -2
View File
@@ -1767,8 +1767,8 @@ INTERNAL int zint_gs1_verify(struct zint_symbol *symbol, unsigned char source[],
data_location[i] = ai_location[i] + 3;
}
data_length[i] = 0;
while ((data_location[i] + data_length[i] < length)
&& (source[data_location[i] + data_length[i]] != obracket)) {
while (data_location[i] + data_length[i] < length
&& source[data_location[i] + data_length[i]] != obracket) {
data_length[i]++;
}
if (data_length[i] == 0) {
+58 -58
View File
@@ -108,7 +108,7 @@ static int hx_calc_binlen(const char mode[], const unsigned int ddata[], const i
}
/* GB 4-byte has indicator for each character (and no terminator) so not included here */
/* Region1/Region2 have special terminator to go directly into each other's mode so not included here */
if (mode[i] != 'f' || ((mode[i] == '1' && lastmode == '2') || (mode[i] == '2' && lastmode == '1'))) {
if (mode[i] != 'f' || (mode[i] == '1' && lastmode == '2') || (mode[i] == '2' && lastmode == '1')) {
est_binlen += 4;
}
if (mode[i] == 'b') { /* Byte mode has byte count (and no terminator) */
@@ -177,17 +177,17 @@ static int hx_isRegion1(const unsigned int glyph) {
byte = glyph >> 8;
if ((byte >= 0xb0) && (byte <= 0xd7)) {
byte = glyph & 0xff;
if ((byte >= 0xa1) && (byte <= 0xfe)) {
if (byte >= 0xB0 && byte <= 0xD7) {
byte = glyph & 0xFF;
if (byte >= 0xA1 && byte <= 0xFE) {
return 1;
}
} else if ((byte >= 0xa1) && (byte <= 0xa3)) {
byte = glyph & 0xff;
if ((byte >= 0xa1) && (byte <= 0xfe)) {
} else if (byte >= 0xA1 && byte <= 0xA3) {
byte = glyph & 0xFF;
if (byte >= 0xA1 && byte <= 0xFE) {
return 1;
}
} else if ((glyph >= 0xa8a1) && (glyph <= 0xa8c0)) {
} else if (glyph >= 0xA8A1 && glyph <= 0xA8C0) {
return 1;
}
@@ -199,9 +199,9 @@ static int hx_isRegion2(const unsigned int glyph) {
byte = glyph >> 8;
if ((byte >= 0xd8) && (byte <= 0xf7)) {
byte = glyph & 0xff;
if ((byte >= 0xa1) && (byte <= 0xfe)) {
if (byte >= 0xD8 && byte <= 0xF7) {
byte = glyph & 0xFF;
if (byte >= 0xA1 && byte <= 0xFE) {
return 1;
}
}
@@ -214,12 +214,12 @@ static int hx_isDoubleByte(const unsigned int glyph) {
byte = glyph >> 8;
if ((byte >= 0x81) && (byte <= 0xfe)) {
byte = glyph & 0xff;
if ((byte >= 0x40) && (byte <= 0x7e)) {
if (byte >= 0x81 && byte <= 0xFE) {
byte = glyph & 0xFF;
if (byte >= 0x40 && byte <= 0x7E) {
return 1;
}
if ((byte >= 0x80) && (byte <= 0xfe)) {
if (byte >= 0x80 && byte <= 0xFE) {
return 1;
}
}
@@ -232,13 +232,13 @@ static int hx_isFourByte(const unsigned int glyph, const unsigned int glyph2) {
byte = glyph >> 8;
if ((byte >= 0x81) && (byte <= 0xfe)) {
byte = glyph & 0xff;
if ((byte >= 0x30) && (byte <= 0x39)) {
if (byte >= 0x81 && byte <= 0xFE) {
byte = glyph & 0xFF;
if (byte >= 0x30 && byte <= 0x39) {
byte = glyph2 >> 8;
if ((byte >= 0x81) && (byte <= 0xfe)) {
byte = glyph2 & 0xff;
if ((byte >= 0x30) && (byte <= 0x39)) {
if (byte >= 0x81 && byte <= 0xFE) {
byte = glyph2 & 0xFF;
if (byte >= 0x30 && byte <= 0x39) {
return 1;
}
}
@@ -273,19 +273,19 @@ static int hx_lookup_text2(const unsigned int input) {
return input;
}
if ((input >= ' ') && (input <= '/')) {
if (input >= ' ' && input <= '/') {
return input - ' ' + 28;
}
if ((input >= ':') && (input <= '@')) {
if (input >= ':' && input <= '@') {
return input - ':' + 44;
}
if ((input >= '[') && (input <= 96)) {
if (input >= '[' && input <= 96) {
return input - '[' + 51;
}
if ((input >= '{') && (input <= 127)) {
if (input >= '{' && input <= 127) {
return input - '{' + 57;
}
@@ -688,22 +688,22 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
i = 0;
while (i < block_length) {
first_byte = (ddata[i + position] & 0xff00) >> 8;
second_byte = ddata[i + position] & 0xff;
first_byte = (ddata[i + position] & 0xFF00) >> 8;
second_byte = ddata[i + position] & 0xFF;
/* Subset 1 */
glyph = (0x5e * (first_byte - 0xb0)) + (second_byte - 0xa1);
glyph = (0x5E * (first_byte - 0xB0)) + (second_byte - 0xA1);
/* Subset 2 */
if ((first_byte >= 0xa1) && (first_byte <= 0xa3)) {
if ((second_byte >= 0xa1) && (second_byte <= 0xfe)) {
glyph = (0x5e * (first_byte - 0xa1)) + (second_byte - 0xa1) + 0xeb0;
if (first_byte >= 0xA1 && first_byte <= 0xA3) {
if (second_byte >= 0xA1 && second_byte <= 0xFE) {
glyph = (0x5E * (first_byte - 0xA1)) + (second_byte - 0xA1) + 0xEB0;
}
}
/* Subset 3 */
if ((ddata[i + position] >= 0xa8a1) && (ddata[i + position] <= 0xa8c0)) {
glyph = (second_byte - 0xa1) + 0xfca;
if (ddata[i + position] >= 0xA8A1 && ddata[i + position] <= 0xA8C0) {
glyph = (second_byte - 0xA1) + 0xFCA;
}
if (debug_print) {
@@ -739,10 +739,10 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
i = 0;
while (i < block_length) {
first_byte = (ddata[i + position] & 0xff00) >> 8;
second_byte = ddata[i + position] & 0xff;
first_byte = (ddata[i + position] & 0xFF00) >> 8;
second_byte = ddata[i + position] & 0xFF;
glyph = (0x5e * (first_byte - 0xd8)) + (second_byte - 0xa1);
glyph = (0x5E * (first_byte - 0xD8)) + (second_byte - 0xA1);
if (debug_print) {
printf(" %.3x[GB %.4x]", glyph, ddata[i + position]);
@@ -774,13 +774,13 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
i = 0;
while (i < block_length) {
first_byte = (ddata[i + position] & 0xff00) >> 8;
second_byte = ddata[i + position] & 0xff;
first_byte = (ddata[i + position] & 0xFF00) >> 8;
second_byte = ddata[i + position] & 0xFF;
if (second_byte <= 0x7e) {
glyph = (0xbe * (first_byte - 0x81)) + (second_byte - 0x40);
if (second_byte <= 0x7E) {
glyph = (0xBE * (first_byte - 0x81)) + (second_byte - 0x40);
} else {
glyph = (0xbe * (first_byte - 0x81)) + (second_byte - 0x41);
glyph = (0xBE * (first_byte - 0x81)) + (second_byte - 0x41);
}
if (debug_print) {
@@ -813,13 +813,13 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
/* Mode indicator */
bp = z_bin_append_posn(7, 4, binary, bp);
first_byte = (ddata[i + position] & 0xff00) >> 8;
second_byte = ddata[i + position] & 0xff;
third_byte = (ddata[i + position + 1] & 0xff00) >> 8;
fourth_byte = ddata[i + position + 1] & 0xff;
first_byte = (ddata[i + position] & 0xFF00) >> 8;
second_byte = ddata[i + position] & 0xFF;
third_byte = (ddata[i + position + 1] & 0xFF00) >> 8;
fourth_byte = ddata[i + position + 1] & 0xFF;
glyph = (0x3138 * (first_byte - 0x81)) + (0x04ec * (second_byte - 0x30)) +
(0x0a * (third_byte - 0x81)) + (fourth_byte - 0x30);
glyph = (0x3138 * (first_byte - 0x81)) + (0x04EC * (second_byte - 0x30))
+ (0x0A * (third_byte - 0x81)) + (fourth_byte - 0x30);
if (debug_print) {
printf(" %d", glyph);
@@ -916,8 +916,8 @@ static void hx_place_finder_bottom_right(unsigned char *grid, const int size) {
/* Avoid plotting outside symbol or over finder patterns */
static void hx_safe_plot(unsigned char *grid, const int size, const int x, const int y, const int value) {
if ((x >= 0) && (x < size)) {
if ((y >= 0) && (y < size)) {
if (x >= 0 && x < size) {
if (y >= 0 && y < size) {
if (grid[(y * size) + x] == 0) {
grid[(y * size) + x] = value;
}
@@ -1120,7 +1120,7 @@ static void hx_add_ecc(unsigned char fullstream[], const unsigned char datastrea
int i, j, block;
int input_position = 0;
int output_position = 0;
const int table_d1_pos = ((version - 1) * 36) + ((ecc_level - 1) * 9);
const int table_d1_pos = (version - 1) * 36 + (ecc_level - 1) * 9;
rs_t rs;
zint_rs_init_gf(&rs, 0x163); /* x^8 + x^6 + x^5 + x + 1 = 0 */
@@ -1396,16 +1396,16 @@ static int hx_apply_bitmask(unsigned char *grid, const int size, const int versi
for (x = 0; x < size; x++) {
k = r + x;
if (!(grid[k] & 0xf0)) {
if (!(grid[k] & 0xF0)) {
j = x + 1;
i = y + 1;
if (((i + j) & 1) == 0) {
mask[k] |= 0x02;
}
if (((((i + j) % 3) + (j % 3)) & 1) == 0) {
if ((((i + j) % 3 + j % 3) & 1) == 0) {
mask[k] |= 0x04;
}
if ((((i % j) + (j % i) + (i % 3) + (j % 3)) & 1) == 0) {
if (((i % j + j % i + i % 3 + j % 3) & 1) == 0) {
mask[k] |= 0x08;
}
}
@@ -1420,7 +1420,7 @@ static int hx_apply_bitmask(unsigned char *grid, const int size, const int versi
/* Do null pattern 00 separately first */
pattern = 0;
for (k = 0; k < size_squared; k++) {
local[k] = grid[k] & 0x0f;
local[k] = grid[k] & 0x0F;
}
/* Set the Structural Info */
hx_set_function_info(local, size, version, ecc_level, pattern, 0 /*debug_print*/);
@@ -1435,7 +1435,7 @@ static int hx_apply_bitmask(unsigned char *grid, const int size, const int versi
if (mask[k] & bit) {
local[k] = grid[k] ^ 0x01;
} else {
local[k] = grid[k] & 0x0f;
local[k] = grid[k] & 0x0F;
}
}
/* Set the Structural Info */
@@ -1560,7 +1560,7 @@ INTERNAL int zint_hanxin(struct zint_symbol *symbol, struct zint_seg segs[], con
binary = (char *) malloc(est_binlen + 1);
if ((ecc_level <= 0) || (ecc_level >= 5)) {
if (ecc_level <= 0 || ecc_level >= 5) {
ecc_level = 1;
}
@@ -1587,7 +1587,7 @@ INTERNAL int zint_hanxin(struct zint_symbol *symbol, struct zint_seg segs[], con
codewords);
}
if ((symbol->option_2 < 0) || (symbol->option_2 > 84)) {
if (symbol->option_2 < 0 || symbol->option_2 > 84) {
symbol->option_2 = 0;
}
@@ -1595,7 +1595,7 @@ INTERNAL int zint_hanxin(struct zint_symbol *symbol, struct zint_seg segs[], con
version = symbol->option_2;
}
if ((symbol->option_2 != 0) && (symbol->option_2 < version)) {
if (symbol->option_2 != 0 && symbol->option_2 < version) {
free(binary);
if (ecc_level == 1) {
return ZEXT z_errtxtf(ZINT_ERROR_TOO_LONG, symbol, 542,
+2 -2
View File
@@ -418,11 +418,11 @@ INTERNAL int zint_usps_imail(struct zint_symbol *symbol, unsigned char source[],
/* Translate 4-state data pattern to symbol */
read = 0;
for (i = 0; i < 65; i++) {
if ((data_pattern[i] == '1') || (data_pattern[i] == '0')) {
if (data_pattern[i] == '1' || data_pattern[i] == '0') {
z_set_module(symbol, 0, read);
}
z_set_module(symbol, 1, read);
if ((data_pattern[i] == '2') || (data_pattern[i] == '0')) {
if (data_pattern[i] == '2' || data_pattern[i] == '0') {
z_set_module(symbol, 2, read);
}
read += 2;
+33 -52
View File
@@ -37,6 +37,7 @@
#include <stdio.h>
#include "common.h"
#include "eci.h"
#include "filemem.h"
#include "gs1.h"
#include "output.h"
#include "zfiletypes.h"
@@ -127,8 +128,6 @@ void ZBarcode_Clear(struct zint_symbol *symbol) {
symbol->memfile_size = 0;
z_rt_free_segs(symbol);
/* If there is a rendered version, ensure its memory is released */
zint_vector_free(symbol);
}
@@ -286,77 +285,59 @@ INTERNAL int zint_test_error_tag(int error_number, struct zint_symbol *symbol, c
}
#endif
/* Output a hexadecimal representation of the rendered symbol */
static int dump_plot(struct zint_symbol *symbol) {
FILE *f;
int i, r;
static const char hex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
int space = 0;
const int output_to_stdout = symbol->output_options & BARCODE_STDOUT;
/* Output a hexadecimal representation of the rendered symbol (TXT files - includes frontend "--dump" option) */
static int txt_hex_plot(struct zint_symbol *symbol) {
static const char hex[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
struct filemem fm;
struct filemem *const fmp = &fm;
int r;
if (output_to_stdout) {
f = stdout;
} else {
#ifdef _WIN32
f = zint_out_win_fopen(symbol->outfile, "w");
#else
f = fopen(symbol->outfile, "w");
#endif
if (!f) {
return z_errtxt(ZINT_ERROR_FILE_ACCESS, symbol, 201, "Could not open output file");
}
if (!zint_fm_open(fmp, symbol, "w")) {
return ZEXT z_errtxtf(ZINT_ERROR_FILE_ACCESS, symbol, 201, "Could not open TXT output file (%1$d: %2$s)",
fmp->err, strerror(fmp->err));
}
for (r = 0; r < symbol->rows; r++) {
int byt = 0;
int space = 0, byt = 0;
int i;
for (i = 0; i < symbol->width; i++) {
byt = byt << 1;
byt <<= 1;
if (symbol->symbology == BARCODE_ULTRA) {
if (z_module_colour_is_set(symbol, r, i)) {
byt += 1;
byt++;
}
} else {
if (z_module_is_set(symbol, r, i)) {
byt += 1;
byt++;
}
}
if ((i + 1) % 4 == 0) {
fputc(hex[byt], f);
if (((i + 1) & 0x3) == 0) {
zint_fm_putc(hex[byt], fmp);
space++;
byt = 0;
}
if (space == 2 && i + 1 < symbol->width) {
fputc(' ', f);
zint_fm_putc(' ', fmp);
space = 0;
}
}
if (symbol->width % 4 != 0) {
byt = byt << (4 - (symbol->width % 4));
fputc(hex[byt], f);
if (symbol->width & 0x03) {
byt <<= 4 - (symbol->width & 0x03);
zint_fm_putc(hex[byt], fmp);
}
fputc('\n', f);
space = 0;
zint_fm_putc('\n', fmp);
}
if (ferror(f)) {
ZEXT z_errtxtf(0, symbol, 795, "Incomplete write to output (%1$d: %2$s)", errno, strerror(errno));
if (!output_to_stdout) {
(void) fclose(f);
}
if (zint_fm_error(fmp)) {
ZEXT z_errtxtf(0, symbol, 795, "Incomplete write of TXT output (%1$d: %2$s)", fmp->err, strerror(fmp->err));
(void) zint_fm_close(fmp, symbol);
return ZINT_ERROR_FILE_WRITE;
}
if (output_to_stdout) {
if (fflush(f) != 0) {
return ZEXT z_errtxtf(ZINT_ERROR_FILE_WRITE, symbol, 796, "Incomplete flush to output (%1$d: %2$s)",
errno, strerror(errno));
}
} else {
if (fclose(f) != 0) {
return ZEXT z_errtxtf(ZINT_ERROR_FILE_WRITE, symbol, 792, "Failure on closing output file (%1$d: %2$s)",
errno, strerror(errno));
}
if (!zint_fm_close(fmp, symbol)) {
return ZEXT z_errtxtf(ZINT_ERROR_FILE_WRITE, symbol, 792, "Failure on closing TXT output file (%1$d: %2$s)",
fmp->err, strerror(fmp->err));
}
return 0;
@@ -698,7 +679,7 @@ static void strip_bom(unsigned char *source, int *input_length) {
int i;
/* Note if BOM is only data then not stripped */
if (*input_length > 3 && (source[0] == 0xef) && (source[1] == 0xbb) && (source[2] == 0xbf)) {
if (*input_length > 3 && source[0] == 0xEF && source[1] == 0xBB && source[2] == 0xBF) {
/* BOM at start of input data, strip in accordance with RFC 3629 */
for (i = 3; i <= *input_length; i++) { /* Include terminating NUL */
source[i - 3] = source[i];
@@ -862,7 +843,7 @@ static int escape_char_process(struct zint_symbol *symbol, const unsigned char *
}
}
/* Exclude reversed BOM and surrogates and out-of-range */
if (unicode == 0xfffe || (unicode >= 0xd800 && unicode < 0xe000) || unicode > 0x10ffff) {
if (unicode == 0xFFFE || (unicode >= 0xD800 && unicode < 0xE000) || unicode > 0x10FFFF) {
return z_errtxtf(ZINT_ERROR_INVALID_DATA, symbol, 246,
"Value of escape sequence '%.*s' in input out of range",
ch == 'u' ? 6 : 8, input_string + in_posn);
@@ -1266,7 +1247,7 @@ int ZBarcode_Encode_Segs(struct zint_symbol *symbol, const struct zint_seg segs[
error_number = extended_or_reduced_charset(symbol, local_segs, seg_count);
if ((error_number == ZINT_ERROR_INVALID_DATA) && have_zero_eci && supports_eci(symbol->symbology)
if (error_number == ZINT_ERROR_INVALID_DATA && have_zero_eci && supports_eci(symbol->symbology)
&& (symbol->input_mode & 0x07) == UNICODE_MODE) {
/* Try another ECI mode */
const int first_eci_set = zint_get_best_eci_segs(symbol, local_segs, seg_count);
@@ -1369,7 +1350,7 @@ int ZBarcode_Print(struct zint_symbol *symbol, int rotate_angle) {
error_number = zint_plot_vector(symbol, rotate_angle, filetypes[i].filetype);
}
} else {
error_number = dump_plot(symbol);
error_number = txt_hex_plot(symbol);
}
} else {
return error_tag(ZINT_ERROR_INVALID_OPTION, symbol, 225, "Unknown output format");
@@ -1573,7 +1554,7 @@ int ZBarcode_Encode_File(struct zint_symbol *symbol, const char *filename) {
return error_tag(ZINT_ERROR_INVALID_DATA, symbol, -1, NULL);
}
nRead += n;
} while (!feof(file) && (0 < n) && ((long) nRead < fileLen));
} while (!feof(file) && n > 0 && (long) nRead < fileLen);
if (file_opened) {
if (fclose(file) != 0) {
+6 -6
View File
@@ -206,7 +206,7 @@ INTERNAL int zint_mailmark_4s(struct zint_symbol *symbol, unsigned char source[]
}
memset(local_source + length, ' ', 22 - length);
length = 22;
} else if ((length > 22) && (length < 26)) {
} else if (length > 22 && length < 26) {
memset(local_source + length, ' ', 26 - length);
length = 26;
}
@@ -224,19 +224,19 @@ INTERNAL int zint_mailmark_4s(struct zint_symbol *symbol, unsigned char source[]
/* Format is in the range 0-4 */
format = z_ctoi(local_source[0]);
if ((format < 0) || (format > 4)) {
if (format < 0 || format > 4) {
return z_errtxt(ZINT_ERROR_INVALID_DATA, symbol, 582, "Format (1st character) out of range (0 to 4)");
}
/* Version ID is in the range 1-4 */
version_id = z_ctoi(local_source[1]) - 1;
if ((version_id < 0) || (version_id > 3)) {
if (version_id < 0 || version_id > 3) {
return z_errtxt(ZINT_ERROR_INVALID_DATA, symbol, 583, "Version ID (2nd character) out of range (1 to 4)");
}
/* Class is in the range 0-9,A-E */
mail_class = z_ctoi(local_source[2]);
if ((mail_class < 0) || (mail_class > 14)) {
if (mail_class < 0 || mail_class > 14) {
return z_errtxt(ZINT_ERROR_INVALID_DATA, symbol, 584,
"Class (3rd character) out of range (0 to 9 and A to E)");
}
@@ -468,11 +468,11 @@ INTERNAL int zint_mailmark_4s(struct zint_symbol *symbol, unsigned char source[]
/* Translate 4-state data pattern to symbol */
j = 0;
for (i = 0, len = d - bar; i < len; i++) {
if ((bar[i] == 'F') || (bar[i] == 'A')) {
if (bar[i] == 'F' || bar[i] == 'A') {
z_set_module(symbol, 0, j);
}
z_set_module(symbol, 1, j);
if ((bar[i] == 'F') || (bar[i] == 'D')) {
if (bar[i] == 'F' || bar[i] == 'D') {
z_set_module(symbol, 2, j);
}
j += 2;
+4 -4
View File
@@ -69,7 +69,7 @@ INTERNAL int zint_pharma(struct zint_symbol *symbol, unsigned char source[], int
}
tester = z_to_int(source, length);
if ((tester < 3) || (tester > 131070)) {
if (tester < 3 || tester > 131070) {
return z_errtxtf(ZINT_ERROR_INVALID_DATA, symbol, 352, "Input value '%d' out of range (3 to 131070)", tester);
}
@@ -162,7 +162,7 @@ INTERNAL int zint_pharma_two(struct zint_symbol *symbol, unsigned char source[],
}
tester = z_to_int(source, length);
if ((tester < 4) || (tester > 64570080)) {
if (tester < 4 || tester > 64570080) {
return z_errtxtf(ZINT_ERROR_INVALID_DATA, symbol, 353, "Input value '%d' out of range (4 to 64570080)",
tester);
}
@@ -170,10 +170,10 @@ INTERNAL int zint_pharma_two(struct zint_symbol *symbol, unsigned char source[],
writer = 0;
for (loopey = 0; loopey < h; loopey++) {
if ((height_pattern[loopey] == '2') || (height_pattern[loopey] == '3')) {
if (height_pattern[loopey] == '2' || height_pattern[loopey] == '3') {
z_set_module(symbol, 0, writer);
}
if ((height_pattern[loopey] == '1') || (height_pattern[loopey] == '3')) {
if (height_pattern[loopey] == '1' || height_pattern[loopey] == '3') {
z_set_module(symbol, 1, writer);
}
writer += 2;
+11 -11
View File
@@ -194,13 +194,13 @@ INTERNAL int zint_out_colour_char_to_rgb(const unsigned char ch, unsigned char *
unsigned char *blue) {
static const char chars[] = "WCBMRYGK";
static const unsigned char colours[8][3] = {
{ 0xff, 0xff, 0xff, }, /* White */
{ 0, 0xff, 0xff, }, /* Cyan */
{ 0, 0, 0xff, }, /* Blue */
{ 0xff, 0, 0xff, }, /* Magenta */
{ 0xff, 0, 0, }, /* Red */
{ 0xff, 0xff, 0, }, /* Yellow */
{ 0, 0xff, 0, }, /* Green */
{ 0xFF, 0xFF, 0xFF, }, /* White */
{ 0, 0xFF, 0xFF, }, /* Cyan */
{ 0, 0, 0xFF, }, /* Blue */
{ 0xFF, 0, 0xFF, }, /* Magenta */
{ 0xFF, 0, 0, }, /* Red */
{ 0xFF, 0xFF, 0, }, /* Yellow */
{ 0, 0xFF, 0, }, /* Green */
{ 0, 0, 0, }, /* Black */
};
int i = z_posn(chars, (const char) ch);
@@ -801,12 +801,12 @@ INTERNAL int zint_out_process_upcean(const struct zint_symbol *symbol, const int
upceanflag = 8;
break;
}
} else if ((symbol->symbology == BARCODE_UPCA) || (symbol->symbology == BARCODE_UPCA_CHK)
|| (symbol->symbology == BARCODE_UPCA_CC)) {
} else if (symbol->symbology == BARCODE_UPCA || symbol->symbology == BARCODE_UPCA_CHK
|| symbol->symbology == BARCODE_UPCA_CC) {
main_width = 95 + comp_xoffset; /* UPC-A main symbol 95 modules wide */
upceanflag = 12;
} else if ((symbol->symbology == BARCODE_UPCE) || (symbol->symbology == BARCODE_UPCE_CHK)
|| (symbol->symbology == BARCODE_UPCE_CC)) {
} else if (symbol->symbology == BARCODE_UPCE || symbol->symbology == BARCODE_UPCE_CHK
|| symbol->symbology == BARCODE_UPCE_CC) {
main_width = 51 + comp_xoffset; /* UPC-E main symbol 51 modules wide */
upceanflag = 6;
}
+5 -5
View File
@@ -129,11 +129,11 @@ INTERNAL int zint_pcx_pixel_plot(struct zint_symbol *symbol, const unsigned char
previous = rle_row[0];
run_count = 1;
for (column = 1; column < bytes_per_line; column++) { /* Note going up to bytes_per_line */
if ((previous == rle_row[column]) && (run_count < 63)) {
if (previous == rle_row[column] && run_count < 63) {
run_count++;
} else {
if (run_count > 1 || (previous & 0xc0) == 0xc0) {
run_count += 0xc0;
if (run_count > 1 || (previous & 0xC0) == 0xC0) {
run_count += 0xC0;
zint_fm_putc(run_count, fmp);
}
zint_fm_putc(previous, fmp);
@@ -142,8 +142,8 @@ INTERNAL int zint_pcx_pixel_plot(struct zint_symbol *symbol, const unsigned char
}
}
if (run_count > 1 || (previous & 0xc0) == 0xc0) {
run_count += 0xc0;
if (run_count > 1 || (previous & 0xC0) == 0xC0) {
run_count += 0xC0;
zint_fm_putc(run_count, fmp);
}
zint_fm_putc(previous, fmp);
+14 -14
View File
@@ -265,9 +265,9 @@ static int pdf_text_submode_length(const unsigned char chaine[], const int start
} else {
/* Obliged to change table */
int newtable;
if (j == (length - 1) || !(listet[j] & listet[j + 1])) {
if (j == length - 1 || !(listet[j] & listet[j + 1])) {
/* We change only one character - look for temporary switch */
if ((listet[j] & T_ALPHA) && (curtable == T_LOWER)) {
if ((listet[j] & T_ALPHA) && curtable == T_LOWER) {
wnet += 2; /* AS+char */
continue;
}
@@ -341,16 +341,16 @@ static void pdf_appendix_d_encode(const unsigned char *chaine, short liste[3][PD
while (i < indexliste) {
if ((liste[1][i] == PDF_NUM) && pdf_num_stay(chaine, indexliste, liste, i)) {
if (liste[1][i] == PDF_NUM && pdf_num_stay(chaine, indexliste, liste, i)) {
/* Leave as numeric */
liste[0][last] = liste[0][i];
liste[1][last] = PDF_NUM;
liste[2][last] = liste[2][i];
stayintext = 0;
last++;
} else if (((liste[1][i] == PDF_TEX) || (liste[1][i] == PDF_NUM))
&& (stayintext || i == indexliste - 1 || (liste[0][i] >= 5)
|| (pdf_text_num_length(liste, indexliste, i) >= 5))) {
} else if ((liste[1][i] == PDF_TEX || liste[1][i] == PDF_NUM)
&& (stayintext || i == indexliste - 1 || liste[0][i] >= 5
|| pdf_text_num_length(liste, indexliste, i) >= 5)) {
/* Set to text and combine additional text/short numeric segments */
liste[0][last] = liste[0][i];
liste[1][last] = PDF_TEX;
@@ -359,7 +359,7 @@ static void pdf_appendix_d_encode(const unsigned char *chaine, short liste[3][PD
next = i + 1;
while (next < indexliste) {
if ((liste[1][next] == PDF_NUM) && pdf_num_stay(chaine, indexliste, liste, next)) {
if (liste[1][next] == PDF_NUM && pdf_num_stay(chaine, indexliste, liste, next)) {
break;
} else if (liste[1][next] == PDF_BYT) {
break;
@@ -383,12 +383,12 @@ static void pdf_appendix_d_encode(const unsigned char *chaine, short liste[3][PD
while (next < indexliste) {
if (liste[1][next] != PDF_BYT) {
/* Check for case of a single byte shift from text mode */
if ((liste[0][last] == 1) && (last > 0) && (liste[1][last - 1] == PDF_TEX)) {
if (liste[0][last] == 1 && last > 0 && liste[1][last - 1] == PDF_TEX) {
stayintext = 1;
break;
}
if ((liste[0][next] >= 5) || (pdf_text_num_length(liste, indexliste, next) >= 5)) {
if (liste[0][next] >= 5 || pdf_text_num_length(liste, indexliste, next) >= 5) {
break;
}
}
@@ -465,9 +465,9 @@ static void pdf_textprocess(short *chainemc, int *p_mclength, const unsigned cha
} else {
/* Obliged to change table */
int newtable;
if (j == (length - 1) || !(listet[0][j] & listet[0][j + 1])) {
if (j == length - 1 || !(listet[0][j] & listet[0][j + 1])) {
/* We change only one character - look for temporary switch */
if ((listet[0][j] & T_ALPHA) && (curtable == T_LOWER)) {
if ((listet[0][j] & T_ALPHA) && curtable == T_LOWER) {
chainet[wnet++] = 27; /* AS */
chainet[wnet++] = listet[1][j];
continue;
@@ -1021,7 +1021,7 @@ static int pdf_initial(struct zint_symbol *symbol, const unsigned char chaine[],
do {
liste[1][indexliste] = mode;
liste[2][indexliste] = indexchaine;
while ((liste[1][indexliste] == mode) && (indexchaine < length)) {
while (liste[1][indexliste] == mode && indexchaine < length) {
liste[0][indexliste]++;
indexchaine++;
mode = pdf_quelmode(chaine[indexchaine]);
@@ -1469,7 +1469,7 @@ INTERNAL int zint_pdf417(struct zint_symbol *symbol, struct zint_seg segs[], con
error_number = 0;
if ((symbol->option_1 < -1) || (symbol->option_1 > 8)) {
if (symbol->option_1 < -1 || symbol->option_1 > 8) {
z_errtxtf(0, symbol, 460, "Error correction level '%d' out of range (0 to 8)", symbol->option_1);
if (symbol->warn_level == WARN_FAIL_ALL) {
return ZINT_ERROR_INVALID_OPTION;
@@ -1477,7 +1477,7 @@ INTERNAL int zint_pdf417(struct zint_symbol *symbol, struct zint_seg segs[], con
error_number = z_errtxt_adj(ZINT_WARN_INVALID_OPTION, symbol, "%1$s%2$s", ", ignoring");
symbol->option_1 = -1;
}
if ((symbol->option_2 < 0) || (symbol->option_2 > 30)) {
if (symbol->option_2 < 0 || symbol->option_2 > 30) {
z_errtxtf(0, symbol, 461, "Number of columns '%d' out of range (1 to 30)", symbol->option_2);
if (symbol->warn_level == WARN_FAIL_ALL) {
return ZINT_ERROR_INVALID_OPTION;
+1 -1
View File
@@ -346,7 +346,7 @@ INTERNAL int zint_msi_plessey(struct zint_symbol *symbol, unsigned char source[]
check_option -= 10;
no_checktext = 1;
}
if ((check_option < 0) || (check_option > 6)) {
if (check_option < 0 || check_option > 6) {
check_option = 0;
}
+10 -10
View File
@@ -492,11 +492,11 @@ INTERNAL int zint_rm4scc(struct zint_symbol *symbol, unsigned char source[], int
writer = 0;
h = (int) strlen(height_pattern);
for (loopey = 0; loopey < h; loopey++) {
if ((height_pattern[loopey] == '1') || (height_pattern[loopey] == '0')) {
if (height_pattern[loopey] == '1' || height_pattern[loopey] == '0') {
z_set_module(symbol, 0, writer);
}
z_set_module(symbol, 1, writer);
if ((height_pattern[loopey] == '2') || (height_pattern[loopey] == '0')) {
if (height_pattern[loopey] == '2' || height_pattern[loopey] == '0') {
z_set_module(symbol, 2, writer);
}
writer += 2;
@@ -559,11 +559,11 @@ INTERNAL int zint_kix(struct zint_symbol *symbol, unsigned char source[], int le
writer = 0;
h = d - height_pattern;
for (loopey = 0; loopey < h; loopey++) {
if ((height_pattern[loopey] == '1') || (height_pattern[loopey] == '0')) {
if (height_pattern[loopey] == '1' || height_pattern[loopey] == '0') {
z_set_module(symbol, 0, writer);
}
z_set_module(symbol, 1, writer);
if ((height_pattern[loopey] == '2') || (height_pattern[loopey] == '0')) {
if (height_pattern[loopey] == '2' || height_pattern[loopey] == '0') {
z_set_module(symbol, 2, writer);
}
writer += 2;
@@ -612,11 +612,11 @@ INTERNAL int zint_daft(struct zint_symbol *symbol, unsigned char source[], int l
writer = 0;
for (loopey = 0; loopey < length; loopey++) {
if ((posns[loopey] == 1) || (posns[loopey] == 0)) {
if (posns[loopey] == 1 || posns[loopey] == 0) {
z_set_module(symbol, 0, writer);
}
z_set_module(symbol, 1, writer);
if ((posns[loopey] == 2) || (posns[loopey] == 0)) {
if (posns[loopey] == 2 || posns[loopey] == 0) {
z_set_module(symbol, 2, writer);
}
writer += 2;
@@ -705,7 +705,7 @@ INTERNAL int zint_japanpost(struct zint_symbol *symbol, unsigned char source[],
i = 0;
inter_posn = 0;
do {
if (z_isdigit(source[i]) || (source[i] == '-')) {
if (z_isdigit(source[i]) || source[i] == '-') {
inter[inter_posn] = source[i];
inter_posn++;
} else {
@@ -722,7 +722,7 @@ INTERNAL int zint_japanpost(struct zint_symbol *symbol, unsigned char source[],
inter_posn += 2;
}
i++;
} while ((i < length) && (inter_posn < 20));
} while (i < length && inter_posn < 20);
if (i != length || inter[20] != '\0') {
return z_errtxt(ZINT_ERROR_TOO_LONG, symbol, 477,
@@ -762,11 +762,11 @@ INTERNAL int zint_japanpost(struct zint_symbol *symbol, unsigned char source[],
writer = 0;
h = d - pattern;
for (loopey = 0; loopey < h; loopey++) {
if ((pattern[loopey] == '2') || (pattern[loopey] == '1')) {
if (pattern[loopey] == '2' || pattern[loopey] == '1') {
z_set_module(symbol, 0, writer);
}
z_set_module(symbol, 1, writer);
if ((pattern[loopey] == '3') || (pattern[loopey] == '1')) {
if (pattern[loopey] == '3' || pattern[loopey] == '1') {
z_set_module(symbol, 2, writer);
}
writer += 2;
+97 -146
View File
@@ -438,45 +438,44 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
modebits = qr_mode_bits(version);
do {
char data_block = mode[position];
int short_data_block_length = 0;
const char block_mode = mode[position];
int block_length = 0;
int double_byte = 0;
do {
if (data_block == 'B' && ddata[position + short_data_block_length] > 0xFF) {
if (block_mode == 'B' && ddata[position + block_length] > 0xFF) {
double_byte++;
}
short_data_block_length++;
} while (((short_data_block_length + position) < length)
&& (mode[position + short_data_block_length] == data_block));
block_length++;
} while (position + block_length < length && mode[position + block_length] == block_mode);
/* Mode indicator */
if (modebits) {
bp = z_bin_append_posn(qr_mode_indicator(version, data_block), modebits, binary, bp);
bp = z_bin_append_posn(qr_mode_indicator(version, block_mode), modebits, binary, bp);
}
switch (data_block) {
switch (block_mode) {
case 'K':
/* Kanji mode */
/* Character count indicator */
bp = z_bin_append_posn(short_data_block_length, qr_cci_bits(version, data_block), binary, bp);
bp = z_bin_append_posn(block_length, qr_cci_bits(version, block_mode), binary, bp);
if (debug_print) {
printf("Kanji block (length %d)\n\t", short_data_block_length);
printf("Kanji block (length %d)\n\t", block_length);
}
/* Character representation */
for (i = 0; i < short_data_block_length; i++) {
for (i = 0; i < block_length; i++) {
unsigned int jis = ddata[position + i];
int prod;
if (jis >= 0x8140 && jis <= 0x9ffc)
if (jis >= 0x8140 && jis <= 0x9FFC)
jis -= 0x8140;
else if (jis >= 0xe040 && jis <= 0xebbf)
jis -= 0xc140;
else if (jis >= 0xE040 && jis <= 0xEBBF)
jis -= 0xC140;
prod = ((jis >> 8) * 0xc0) + (jis & 0xff);
prod = ((jis >> 8) * 0xC0) + (jis & 0xFF);
bp = z_bin_append_posn(prod, 13, binary, bp);
@@ -494,15 +493,14 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
/* Byte mode */
/* Character count indicator */
bp = z_bin_append_posn(short_data_block_length + double_byte, qr_cci_bits(version, data_block),
binary, bp);
bp = z_bin_append_posn(block_length + double_byte, qr_cci_bits(version, block_mode), binary, bp);
if (debug_print) {
printf("Byte block (length %d)\n\t", short_data_block_length + double_byte);
printf("Byte block (length %d)\n\t", block_length + double_byte);
}
/* Character representation */
for (i = 0; i < short_data_block_length; i++) {
for (i = 0; i < block_length; i++) {
unsigned int byte = ddata[position + i];
bp = z_bin_append_posn(byte, byte > 0xFF ? 16 : 8, binary, bp);
@@ -522,7 +520,7 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
percent_count = 0;
if (gs1) {
for (i = 0; i < short_data_block_length; i++) {
for (i = 0; i < block_length; i++) {
if (ddata[position + i] == '%') {
percent_count++;
}
@@ -530,21 +528,20 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
}
/* Character count indicator */
bp = z_bin_append_posn(short_data_block_length + percent_count, qr_cci_bits(version, data_block),
binary, bp);
bp = z_bin_append_posn(block_length + percent_count, qr_cci_bits(version, block_mode), binary, bp);
if (debug_print) {
printf("Alpha block (length %d)\n\t", short_data_block_length + percent_count);
printf("Alpha block (length %d)\n\t", block_length + percent_count);
}
/* Character representation */
i = 0;
while (i < short_data_block_length) {
while (i < block_length) {
int count;
int first = 0, second = 0, prod;
if (percent == 0) {
if (gs1 && (ddata[position + i] == '%')) {
if (gs1 && ddata[position + i] == '%') {
first = QR_PERCENT;
second = QR_PERCENT;
count = 2;
@@ -560,8 +557,8 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
i++;
prod = first;
if (i < short_data_block_length && mode[position + i] == 'A') {
if (gs1 && (ddata[position + i] == '%')) {
if (i < block_length && mode[position + i] == 'A') {
if (gs1 && ddata[position + i] == '%') {
second = QR_PERCENT;
count = 2;
prod = (first * 45) + second;
@@ -585,8 +582,8 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
prod = first;
percent = 0;
if (i < short_data_block_length && mode[position + i] == 'A') {
if (gs1 && (ddata[position + i] == '%')) {
if (i < block_length && mode[position + i] == 'A') {
if (gs1 && ddata[position + i] == '%') {
second = QR_PERCENT;
count = 2;
prod = (first * 45) + second;
@@ -620,15 +617,15 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
/* Numeric mode */
/* Character count indicator */
bp = z_bin_append_posn(short_data_block_length, qr_cci_bits(version, data_block), binary, bp);
bp = z_bin_append_posn(block_length, qr_cci_bits(version, block_mode), binary, bp);
if (debug_print) {
printf("Number block (length %d)\n\t", short_data_block_length);
printf("Number block (length %d)\n\t", block_length);
}
/* Character representation */
i = 0;
while (i < short_data_block_length) {
while (i < block_length) {
int count;
int first = 0, prod;
@@ -636,12 +633,12 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
count = 1;
prod = first;
if (i + 1 < short_data_block_length && mode[position + i + 1] == 'N') {
if (i + 1 < block_length && mode[position + i + 1] == 'N') {
int second = z_ctoi((const char) ddata[position + i + 1]);
count = 2;
prod = (prod * 10) + second;
if (i + 2 < short_data_block_length && mode[position + i + 2] == 'N') {
if (i + 2 < block_length && mode[position + i + 2] == 'N') {
int third = z_ctoi((const char) ddata[position + i + 2]);
count = 3;
prod = (prod * 10) + third;
@@ -664,7 +661,7 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
break;
}
position += short_data_block_length;
position += block_length;
} while (position < length);
return bp;
@@ -683,6 +680,8 @@ static int qr_binary_segs(unsigned char datastream[], const int version, const i
int toggle;
char *binary = (char *) z_alloca(est_binlen + 12);
assert(seg_count > 0); /* Suppress clang-tidy clang-analyzer-core.uninitialized.Assign warning */
*binary = '\0';
if (p_structapp) {
@@ -753,7 +752,7 @@ static int qr_binary_segs(unsigned char datastream[], const int version, const i
toggle = 0;
for (i = current_bytes; i < target_codewords; i++) {
if (toggle == 0) {
datastream[i] = 0xec;
datastream[i] = 0xEC;
toggle = 1;
} else {
datastream[i] = 0x11;
@@ -777,7 +776,6 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea
const int data_cw, const int blocks, const int debug_print) {
int ecc_cw;
int short_data_block_length;
int qty_long_blocks;
int qty_short_blocks;
int ecc_block_length;
int i, j, length_this_block, in_posn;
@@ -797,13 +795,14 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea
assert(blocks > 0);
short_data_block_length = data_cw / blocks;
qty_long_blocks = data_cw % blocks;
qty_short_blocks = blocks - qty_long_blocks;
qty_short_blocks = blocks - data_cw % blocks;
ecc_block_length = ecc_cw / blocks;
/* Suppress some clang-tidy clang-analyzer-core.UndefinedBinaryOperatorResult/uninitialized.Assign warnings */
assert(short_data_block_length > 0);
assert(qty_long_blocks || qty_short_blocks);
assert(data_cw > 0);
assert(short_data_block_length >= 1 && short_data_block_length <= 122);
assert(qty_short_blocks > 0);
assert(ecc_block_length > 0);
data_block = (unsigned char *) z_alloca(short_data_block_length + 1);
ecc_block = (unsigned char *) z_alloca(ecc_block_length);
@@ -816,15 +815,10 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea
in_posn = 0;
for (i = 0; i < blocks; i++) {
if (i < qty_short_blocks) {
length_this_block = short_data_block_length;
} else {
length_this_block = short_data_block_length + 1;
}
length_this_block = short_data_block_length + (i >= qty_short_blocks);
for (j = 0; j < length_this_block; j++) {
/* This false-positive popped up with clang-tidy 14.0.1 */
data_block[j] = datastream[in_posn + j]; /* NOLINT(clang-analyzer-core.uninitialized.Assign) */
data_block[j] = datastream[in_posn + j];
}
zint_rs_encode(&rs, length_this_block, data_block, ecc_block);
@@ -845,8 +839,7 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea
}
for (j = 0; j < short_data_block_length; j++) {
/* And another with clang-tidy 14.0.6 */
interleaved_data[(j * blocks) + i] = data_block[j]; /* NOLINT(clang-analyzer-core.uninitialized.Assign) */
interleaved_data[(j * blocks) + i] = data_block[j];
}
if (i >= qty_short_blocks) {
@@ -883,11 +876,7 @@ static void qr_place_finder(unsigned char grid[], const int size, const int x, c
for (xp = 0; xp < 7; xp++) {
for (yp = 0; yp < 7; yp++) {
if (finder[yp] & 0x40 >> xp) {
grid[((yp + y) * size) + (xp + x)] = 0x11;
} else {
grid[((yp + y) * size) + (xp + x)] = 0x10;
}
grid[((yp + y) * size) + (xp + x)] = 0x10 + !!(finder[yp] & (0x40 >> xp));
}
}
}
@@ -901,11 +890,7 @@ static void qr_place_align(unsigned char grid[], const int size, int x, int y) {
for (xp = 0; xp < 5; xp++) {
for (yp = 0; yp < 5; yp++) {
if (alignment[yp] & 0x10 >> xp) {
grid[((yp + y) * size) + (xp + x)] = 0x11;
} else {
grid[((yp + y) * size) + (xp + x)] = 0x10;
}
grid[((yp + y) * size) + (xp + x)] = 0x10 + !!(alignment[yp] & (0x10 >> xp));
}
}
}
@@ -1020,16 +1005,16 @@ static void qr_populate_grid(unsigned char *grid, const int h_size, const int v_
int x = x_start - (row * 2);
int r = y * h_size;
if ((x < 6) && (not_rmqr))
if (x < 6 && not_rmqr)
x--; /* skip over vertical timing pattern */
if (!(grid[r + (x + 1)] & 0xf0)) {
if (!(grid[r + (x + 1)] & 0xF0)) {
grid[r + (x + 1)] = qr_cwbit(fullstream, i);
i++;
}
if (i < n) {
if (!(grid[r + x] & 0xf0)) {
if (!(grid[r + x] & 0xF0)) {
grid[r + x] = qr_cwbit(fullstream, i);
i++;
}
@@ -1159,9 +1144,8 @@ static int qr_evaluate(unsigned char *local, const int size) {
for (x = 0; x < size - 1; x++) {
for (y = 0; y < size - 1; y++) {
k = local[(y * size) + x];
if (((k == local[((y + 1) * size) + x]) &&
(k == local[(y * size) + (x + 1)])) &&
(k == local[((y + 1) * size) + (x + 1)])) {
if (k == local[((y + 1) * size) + x] && k == local[(y * size) + (x + 1)]
&& k == local[((y + 1) * size) + (x + 1)]) {
result += 3;
}
}
@@ -1178,12 +1162,12 @@ static int qr_evaluate(unsigned char *local, const int size) {
/* Vertical */
for (x = 0; x < size; x++) {
for (y = 0; y <= (size - 7); y++) {
if (local[y * size + x] && !local[(y + 1) * size + x] && local[(y + 2) * size + x] &&
local[(y + 3) * size + x] && local[(y + 4) * size + x] &&
!local[(y + 5) * size + x] && local[(y + 6) * size + x]) {
if (local[y * size + x] && !local[(y + 1) * size + x] && local[(y + 2) * size + x]
&& local[(y + 3) * size + x] && local[(y + 4) * size + x]
&& !local[(y + 5) * size + x] && local[(y + 6) * size + x]) {
/* Pattern found, check before and after */
beforeCount = 0;
for (b = (y - 1); b >= (y - 4); b--) {
for (b = y - 1; b >= y - 4; b--) {
if (b < 0) { /* Count < edge as whitespace */
beforeCount = 4;
break;
@@ -1198,7 +1182,7 @@ static int qr_evaluate(unsigned char *local, const int size) {
result += 40;
} else {
afterCount = 0;
for (a = (y + 7); a <= (y + 10); a++) {
for (a = y + 7; a <= y + 10; a++) {
if (a >= size) { /* Count > edge as whitespace */
afterCount = 4;
break;
@@ -1225,7 +1209,7 @@ static int qr_evaluate(unsigned char *local, const int size) {
if (memcmp(local + r + x, h1011101, 7) == 0) {
/* Pattern found, check before and after */
beforeCount = 0;
for (b = (x - 1); b >= (x - 4); b--) {
for (b = x - 1; b >= x - 4; b--) {
if (b < 0) { /* Count < edge as whitespace */
beforeCount = 4;
break;
@@ -1241,7 +1225,7 @@ static int qr_evaluate(unsigned char *local, const int size) {
result += 40;
} else {
afterCount = 0;
for (a = (x + 7); a <= (x + 10); a++) {
for (a = x + 7; a <= x + 10; a++) {
if (a >= size) { /* Count > edge as whitespace */
afterCount = 4;
break;
@@ -1342,7 +1326,7 @@ static int qr_apply_bitmask(unsigned char *grid, const int size, const int ecc_l
for (x = 0; x < size; x++) {
/* all eight bitmask variants are encoded in the 8 bits of the bytes that make up the mask array. */
if (!(grid[r + x] & 0xf0)) { /* exclude areas not to be masked. */
if (!(grid[r + x] & 0xF0)) { /* exclude areas not to be masked. */
if (((y + x) & 1) == 0) {
mask[r + x] |= 0x01;
}
@@ -1351,26 +1335,26 @@ static int qr_apply_bitmask(unsigned char *grid, const int size, const int ecc_l
mask[r + x] |= 0x02;
}
}
if ((x % 3) == 0) {
if (x % 3 == 0) {
mask[r + x] |= 0x04;
}
if (!fast_encode) {
if (((y + x) % 3) == 0) {
if ((y + x) % 3 == 0) {
mask[r + x] |= 0x08;
}
}
if ((((y / 2) + (x / 3)) & 1) == 0) {
if (((y / 2 + x / 3) & 1) == 0) {
mask[r + x] |= 0x10;
}
if (!fast_encode) {
if ((y * x) % 6 == 0) { /* Equivalent to (y * x) % 2 + (y * x) % 3 == 0 */
mask[r + x] |= 0x20;
}
if (((((y * x) & 1) + ((y * x) % 3)) & 1) == 0) {
if (((((y * x) & 1) + (y * x) % 3) & 1) == 0) {
mask[r + x] |= 0x40;
}
}
if (((((y + x) & 1) + ((y * x) % 3)) & 1) == 0) {
if (((((y + x) & 1) + (y * x) % 3) & 1) == 0) {
mask[r + x] |= 0x80;
}
}
@@ -1393,7 +1377,7 @@ static int qr_apply_bitmask(unsigned char *grid, const int size, const int ecc_l
if (mask[k] & bit) {
local[k] = grid[k] ^ 0x01;
} else {
local[k] = grid[k] & 0x0f;
local[k] = grid[k] & 0x0F;
}
}
qr_add_format_info(local, size, ecc_level, pattern);
@@ -1464,7 +1448,7 @@ static int qr_blockLength(const int start, const char mode[], const int length)
do {
count++;
} while (((i + count) < length) && (mode[i + count] == start_mode));
} while (i + count < length && mode[i + count] == start_mode);
return count;
}
@@ -1505,7 +1489,7 @@ static int qr_calc_binlen(const int version, char mode[], const unsigned int dda
break;
case 'B':
for (j = i; j < (i + blocklength); j++) {
if (ddata[j] > 0xff) {
if (ddata[j] > 0xFF) {
count += 16;
} else {
count += 8;
@@ -1726,14 +1710,14 @@ INTERNAL int zint_qrcode(struct zint_symbol *symbol, struct zint_seg segs[], con
est_binlen = qr_calc_binlen_segs(40, mode, ddata, local_segs, seg_count, p_structapp, 0 /*mode_preset*/, gs1,
debug_print);
if ((symbol->option_1 >= 1) && (symbol->option_1 <= 4)) {
if (symbol->option_1 >= 1 && symbol->option_1 <= 4) {
ecc_level = symbol->option_1 - 1;
} else {
ecc_level = QR_LEVEL_L;
}
max_cw = qr_data_codewords[ecc_level][39];
if (est_binlen > (8 * max_cw)) {
if (est_binlen > 8 * max_cw) {
if (ecc_level == QR_LEVEL_L) {
return ZEXT z_errtxtf(ZINT_ERROR_TOO_LONG, symbol, 567,
"Input too long, requires %1$d codewords (maximum %2$d)", (est_binlen + 7) / 8,
@@ -1746,7 +1730,7 @@ INTERNAL int zint_qrcode(struct zint_symbol *symbol, struct zint_seg segs[], con
autosize = 40;
for (i = 39; i >= 0; i--) {
if ((8 * qr_data_codewords[ecc_level][i]) >= est_binlen) {
if (8 * qr_data_codewords[ecc_level][i] >= est_binlen) {
autosize = i + 1;
}
}
@@ -1777,7 +1761,7 @@ INTERNAL int zint_qrcode(struct zint_symbol *symbol, struct zint_seg segs[], con
est_binlen = qr_calc_binlen_segs(autosize - 1, mode, ddata, local_segs, seg_count, p_structapp,
0 /*mode_preset*/, gs1, debug_print);
if ((8 * qr_data_codewords[ecc_level][autosize - 2]) < est_binlen) {
if (8 * qr_data_codewords[ecc_level][autosize - 2] < est_binlen) {
canShrink = 0;
}
@@ -1794,7 +1778,7 @@ INTERNAL int zint_qrcode(struct zint_symbol *symbol, struct zint_seg segs[], con
version = autosize;
if ((symbol->option_2 >= 1) && (symbol->option_2 <= 40)) {
if (symbol->option_2 >= 1 && symbol->option_2 <= 40) {
/* If the user has selected a larger symbol than the smallest available,
then use the size the user has selected, and re-optimise for this
symbol size.
@@ -1981,15 +1965,9 @@ static void microqr_setup_grid(unsigned char *grid, const int size) {
/* Add timing patterns */
for (i = 0; i < size; i++) {
if (toggle == 1) {
grid[i] = 0x21;
grid[(i * size)] = 0x21;
toggle = 0;
} else {
grid[i] = 0x20;
grid[(i * size)] = 0x20;
toggle = 1;
}
grid[i] = 0x20 + toggle;
grid[i * size] = 0x20 + toggle;
toggle = !toggle;
}
/* Add finder patterns */
@@ -2022,22 +2000,14 @@ static void microqr_populate_grid(unsigned char *grid, const int size, const cha
do {
int x = (size - 2) - (row * 2);
if (!(grid[(y * size) + (x + 1)] & 0xf0)) {
if (full_stream[i] == '1') {
grid[(y * size) + (x + 1)] = 0x01;
} else {
grid[(y * size) + (x + 1)] = 0x00;
}
if (!(grid[(y * size) + (x + 1)] & 0xF0)) {
grid[(y * size) + (x + 1)] = full_stream[i] == '1';
i++;
}
if (i < bp) {
if (!(grid[(y * size) + x] & 0xf0)) {
if (full_stream[i] == '1') {
grid[(y * size) + x] = 0x01;
} else {
grid[(y * size) + x] = 0x00;
}
if (!(grid[(y * size) + x] & 0xF0)) {
grid[(y * size) + x] = full_stream[i] == '1';
i++;
}
}
@@ -2108,20 +2078,20 @@ static int microqr_apply_bitmask(unsigned char *grid, const int size, const int
r = y * size;
for (x = 0; x < size; x++) {
if (!(grid[r + x] & 0xf0)) {
if (!(grid[r + x] & 0xF0)) {
if ((y & 1) == 0) {
mask[r + x] |= 0x01;
}
if ((((y / 2) + (x / 3)) & 1) == 0) {
if (((y / 2 + x / 3) & 1) == 0) {
mask[r + x] |= 0x02;
}
if (((((y * x) & 1) + ((y * x) % 3)) & 1) == 0) {
if (((((y * x) & 1) + (y * x) % 3) & 1) == 0) {
mask[r + x] |= 0x04;
}
if (((((y + x) & 1) + ((y * x) % 3)) & 1) == 0) {
if (((((y + x) & 1) + (y * x) % 3) & 1) == 0) {
mask[r + x] |= 0x08;
}
}
@@ -2133,7 +2103,7 @@ static int microqr_apply_bitmask(unsigned char *grid, const int size, const int
} else {
for (k = 0; k < size_squared; k++) {
if (grid[k] & 0x01) {
eval[k] = mask[k] ^ 0xff;
eval[k] = mask[k] ^ 0xFF;
} else {
eval[k] = mask[k];
}
@@ -2312,7 +2282,7 @@ INTERNAL int zint_microqr(struct zint_symbol *symbol, unsigned char source[], in
}
/* Get version from user */
if ((symbol->option_2 >= 1) && (symbol->option_2 <= 4)) {
if (symbol->option_2 >= 1 && symbol->option_2 <= 4) {
if (symbol->option_2 == 1 && (i = z_not_sane(NEON_F, source, length))) {
return z_errtxtf(ZINT_ERROR_INVALID_DATA, symbol, 758,
"Invalid character at position %d in input for Version M1 (digits only)", i);
@@ -2530,24 +2500,14 @@ static void rmqr_setup_grid(unsigned char *grid, const int h_size, const int v_s
/* Add timing patterns - top and bottom */
for (i = 0; i < h_size; i++) {
if (i % 2) {
grid[i] = 0x20;
grid[((v_size - 1) * h_size) + i] = 0x20;
} else {
grid[i] = 0x21;
grid[((v_size - 1) * h_size) + i] = 0x21;
}
grid[i] = 0x20 + !(i & 1);
grid[((v_size - 1) * h_size) + i] = 0x20 + !(i & 1);
}
/* Add timing patterns - left and right */
for (i = 0; i < v_size; i++) {
if (i % 2) {
grid[i * h_size] = 0x20;
grid[(i * h_size) + (h_size - 1)] = 0x20;
} else {
grid[i * h_size] = 0x21;
grid[(i * h_size) + (h_size - 1)] = 0x21;
}
grid[i * h_size] = 0x20 + !(i & 1);
grid[(i * h_size) + (h_size - 1)] = 0x20 + !(i & 1);
}
/* Add finder pattern */
@@ -2556,11 +2516,7 @@ static void rmqr_setup_grid(unsigned char *grid, const int h_size, const int v_s
/* Add finder sub-pattern to bottom right */
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (alignment[j] & 0x10 >> i) {
grid[((v_size - 5) * h_size) + (h_size * i) + (h_size - 5) + j] = 0x11;
} else {
grid[((v_size - 5) * h_size) + (h_size * i) + (h_size - 5) + j] = 0x10;
}
grid[((i + v_size - 5) * h_size) + (h_size - 5) + j] = 0x10 + !!(alignment[j] & (0x10 >> i));
}
}
@@ -2600,11 +2556,7 @@ static void rmqr_setup_grid(unsigned char *grid, const int h_size, const int v_s
if (finder_position != 0) {
for (j = 0; j < v_size; j++) {
if (j % 2) {
grid[(j * h_size) + finder_position] = 0x10;
} else {
grid[(j * h_size) + finder_position] = 0x11;
}
grid[(j * h_size) + finder_position] = 0x10 + !(j & 1);
}
/* Top square */
@@ -2661,7 +2613,7 @@ INTERNAL int zint_rmqr(struct zint_symbol *symbol, struct zint_seg segs[], const
return z_errtxt(ZINT_ERROR_INVALID_OPTION, symbol, 577, "Error correction level Q not available in rMQR");
}
if ((symbol->option_2 < 0) || (symbol->option_2 > 38)) {
if (symbol->option_2 < 0 || symbol->option_2 > 38) {
return z_errtxtf(ZINT_ERROR_INVALID_OPTION, symbol, 579, "Version '%d' out of range (1 to 38)",
symbol->option_2);
}
@@ -2691,7 +2643,7 @@ INTERNAL int zint_rmqr(struct zint_symbol *symbol, struct zint_seg segs[], const
ecc_level = symbol->option_1 == 4 ? QR_LEVEL_H : QR_LEVEL_M;
max_cw = rmqr_data_codewords[ecc_level >> 1][31];
if (est_binlen > (8 * max_cw)) {
if (est_binlen > 8 * max_cw) {
return ZEXT z_errtxtf(ZINT_ERROR_TOO_LONG, symbol, 578,
"Input too long for ECC level %1$c, requires %2$d codewords (maximum %3$d)",
qr_ecc_level_names[ecc_level], (est_binlen + 7) / 8, max_cw);
@@ -2719,7 +2671,7 @@ INTERNAL int zint_rmqr(struct zint_symbol *symbol, struct zint_seg segs[], const
NULL /*p_structapp*/, 0 /*mode_preset*/, gs1, debug_print);
}
if ((symbol->option_2 >= 1) && (symbol->option_2 <= 32)) {
if (symbol->option_2 >= 1 && symbol->option_2 <= 32) {
/* User specified symbol size */
version = symbol->option_2 - 1;
est_binlen = qr_calc_binlen_segs(RMQR_VERSION + version, mode, ddata, local_segs, seg_count,
@@ -2750,7 +2702,7 @@ INTERNAL int zint_rmqr(struct zint_symbol *symbol, struct zint_seg segs[], const
target_codewords = rmqr_data_codewords[ecc_level >> 1][version];
blocks = rmqr_blocks[ecc_level >> 1][version];
if (est_binlen > (target_codewords * 8)) {
if (est_binlen > target_codewords * 8) {
/* User has selected a symbol too small for the data */
assert(symbol->option_2 > 0);
return ZEXT z_errtxtf(ZINT_ERROR_TOO_LONG, symbol, 560,
@@ -2794,9 +2746,9 @@ INTERNAL int zint_rmqr(struct zint_symbol *symbol, struct zint_seg segs[], const
for (i = 0; i < v_size; i++) {
int r = i * h_size;
for (j = 0; j < h_size; j++) {
if ((grid[r + j] & 0xf0) == 0) {
if ((grid[r + j] & 0xF0) == 0) {
/* This is a data module */
if (((i / 2) + (j / 3)) % 2 == 0) { /* < This is the data mask from section 7.8.2 */
if ((i / 2 + j / 3) % 2 == 0) { /* < This is the data mask from section 7.8.2 */
/* This module needs to be changed */
grid[r + j] ^= 0x01;
}
@@ -2815,8 +2767,7 @@ INTERNAL int zint_rmqr(struct zint_symbol *symbol, struct zint_seg segs[], const
for (i = 0; i < 5; i++) {
for (j = 0; j < 3; j++) {
grid[(h_size * (i + 1)) + j + 8] = (left_format_info >> ((j * 5) + i)) & 0x01;
grid[(h_size * (v_size - 6)) + (h_size * i) + j + (h_size - 8)]
= (right_format_info >> ((j * 5) + i)) & 0x01;
grid[(h_size * (i + v_size - 6)) + j + (h_size - 8)] = (right_format_info >> ((j * 5) + i)) & 0x01;
}
}
grid[(h_size * 1) + 11] = (left_format_info >> 15) & 0x01;
+7 -7
View File
@@ -83,10 +83,10 @@ static int buffer_plot(struct zint_symbol *symbol, const unsigned char *pixelbuf
{0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, /* 0x20-2F */
{0} /*bg*/, {0} /*fg*/, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, /* 0-9 */
{0}, {0}, {0}, {0}, {0}, {0}, {0}, /* :;<=>?@ */
{0}, { 0, 0, 0xff } /*Blue*/, { 0, 0xff, 0xff } /*Cyan*/, {0}, {0}, {0}, { 0, 0xff, 0 } /*Green*/, /* A-G */
{0}, {0}, {0}, { 0, 0, 0 } /*blacK*/, {0}, { 0xff, 0, 0xff } /*Magenta*/, {0}, /* H-N */
{0}, {0}, {0}, { 0xff, 0, 0 } /*Red*/, {0}, {0}, {0}, {0}, /* O-V */
{ 0xff, 0xff, 0xff } /*White*/, {0}, { 0xff, 0xff, 0 } /*Yellow*/, {0} /* W-Z */
{0}, { 0, 0, 0xFF } /*Blue*/, { 0, 0xFF, 0xFF } /*Cyan*/, {0}, {0}, {0}, { 0, 0xFF, 0 } /*Green*/, /* A-G */
{0}, {0}, {0}, { 0, 0, 0 } /*blacK*/, {0}, { 0xFF, 0, 0xFF } /*Magenta*/, {0}, /* H-N */
{0}, {0}, {0}, { 0xFF, 0, 0 } /*Red*/, {0}, {0}, {0}, {0}, /* O-V */
{ 0xFF, 0xFF, 0xFF } /*White*/, {0}, { 0xFF, 0xFF, 0 } /*Yellow*/, {0} /* W-Z */
};
int row;
int plot_alpha = 0;
@@ -340,7 +340,7 @@ static void draw_letter(unsigned char *pixelbuf, const unsigned char letter, int
return;
}
if ((letter >= 127) && (letter < 161)) {
if (letter >= 127 && letter < 161) {
return;
}
@@ -493,7 +493,7 @@ static void draw_circle(unsigned char *pixelbuf, const int image_width, const in
for (y = -radius_i; y <= radius_i; y++) {
const int y_squared = y * y;
for (x = -radius_i; x <= radius_i; x++) {
if ((x * x) + y_squared <= radius_squared) {
if (x * x + y_squared <= radius_squared) {
draw_pt(pixelbuf, image_width, image_height, x0 + x, y0 + y, fill);
}
}
@@ -1080,7 +1080,7 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
const int fill = z_module_is_set(symbol, r, i);
for (block_width = 1; (i + block_width < symbol->width)
&& z_module_is_set(symbol, r, i + block_width) == fill; block_width++);
if ((r == (symbol->rows - 1)) && (i > main_width) && (addon_latch == 0)) {
if (r == symbol->rows - 1 && i > main_width && addon_latch == 0) {
int addon_row_height_si;
const int addon_row_adj_si = (int) ceilf((font_height + symbol->text_gap) * si);
copy_bar_line(pixelbuf, xoffset_si, main_width * si, yposn_si, row_height_si, image_width,
+4 -4
View File
@@ -72,7 +72,7 @@
/* `combins()' in ISO/IEC 24724:2011 Annex B */
/****************************************************************************
* dbar_combins(n,r): returns the number of Combinations of r selected from n:
* Combinations = n! / ((n - r)! * r!)
* Combinations = n! / (n - r)! * r!
****************************************************************************/
static int dbar_combins(const int n, const int r) {
int i;
@@ -126,7 +126,7 @@ static void dbar_getWidths(int widths[], int val, int n, const int elements, con
/* Get all combinations */
subVal = dbar_combins(n - elmWidth - 1, elements - bar - 2);
/* Less combinations with no single-module element */
if (noNarrow && !narrowMask && (n - elmWidth - (elements - bar - 1) >= elements - bar - 1)) {
if (noNarrow && !narrowMask && n - elmWidth - (elements - bar - 1) >= elements - bar - 1) {
subVal -= dbar_combins(n - elmWidth - (elements - bar), elements - bar - 2);
}
/* Less combinations with elements > maxVal */
@@ -1256,7 +1256,7 @@ INTERNAL int zint_dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[]
cols_per_row = 2; /* Default */
if (symbol->option_2 >= 1 && symbol->option_2 <= 11) {
cols_per_row = symbol->option_2;
if (cc_rows && (cols_per_row == 1)) {
if (cc_rows && cols_per_row == 1) {
/* "There shall be a minimum of four symbol characters in the
first row of an RSS Expanded Stacked symbol when it is the linear
component of an EAN.UCC Composite symbol." */
@@ -1450,7 +1450,7 @@ INTERNAL int zint_dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[]
}
reader++;
current_block++;
} while ((reader < cols_per_row) && (current_block < codeblocks));
} while (reader < cols_per_row && current_block < codeblocks);
/* Row Stop */
sub_elements[elements_in_sub++] = 1; /* Right guard */
+4 -4
View File
@@ -103,7 +103,7 @@ static void svg_put_fattrib(const char *prefix, const int dp, const float val, s
/* Helper to output opacity attribute attribute and close tag (maybe) */
static void svg_put_opacity_close(const unsigned char alpha, const float val, const int close, struct filemem *fmp) {
if (alpha != 0xff) {
if (alpha != 0xFF) {
svg_put_fattrib(" opacity=\"", 3, val, fmp);
}
if (close) {
@@ -139,12 +139,12 @@ INTERNAL int zint_svg_plot(struct zint_symbol *symbol) {
char *html_string;
(void) zint_out_colour_get_rgb(symbol->fgcolour, &fgred, &fggreen, &fgblue, &fg_alpha);
if (fg_alpha != 0xff) {
if (fg_alpha != 0xFF) {
fg_alpha_opacity = fg_alpha / 255.0f;
}
sprintf(fgcolour_string, "%02X%02X%02X", fgred, fggreen, fgblue);
(void) zint_out_colour_get_rgb(symbol->bgcolour, &bgred, &bggreen, &bgblue, &bg_alpha);
if (bg_alpha != 0xff) {
if (bg_alpha != 0xFF) {
bg_alpha_opacity = bg_alpha / 255.0f;
}
sprintf(bgcolour_string, "%02X%02X%02X", bgred, bggreen, bgblue);
@@ -242,7 +242,7 @@ INTERNAL int zint_svg_plot(struct zint_symbol *symbol) {
half_radius = 0.25f * previous_diameter;
half_sqrt3_radius = 0.43301270189221932338f * previous_diameter;
}
if ((hex->rotation == 0) || (hex->rotation == 180)) {
if (hex->rotation == 0 || hex->rotation == 180) {
zint_fm_putsf("M", 2, hex->x, fmp);
zint_fm_putsf(" ", 2, hex->y + radius, fmp);
zint_fm_putsf("L", 2, hex->x + half_sqrt3_radius, fmp);
+10 -5
View File
@@ -39,7 +39,7 @@
#include "../common.h"
#include "../filemem.h"
static void test_svg(const testCtx *const p_ctx) {
static void test_file(const testCtx *const p_ctx) {
int debug = p_ctx->debug;
struct item {
@@ -68,6 +68,9 @@ static void test_svg(const testCtx *const p_ctx) {
" </g>\n"
"</svg>\n"
},
/* 1*/ { BARCODE_TELEPEN, BARCODE_MEMORY_FILE, "out.txt", "ABCD", -1, 0,
"AA B8 BB B8 E3 B8 AE EA EB B8 AE AA E2 AA\n"
},
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@@ -96,10 +99,12 @@ static void test_svg(const testCtx *const p_ctx) {
assert_nonnull(symbol->memfile, "i:%d memfile NULL (%s)\n", i, symbol->errtxt);
assert_equal(symbol->memfile_size, expected_size, "i:%d memfile_size %d != %d (%s)\n",
i, symbol->memfile_size, expected_size, symbol->errtxt);
assert_equal(symbol->memfile_size, expected_size, "i:%d memfile_size %d != %d (\"%.*s\", \"%s\") (%s)\n",
i, symbol->memfile_size, expected_size, symbol->memfile_size, symbol->memfile,
data[i].expected, symbol->errtxt);
ret = memcmp(symbol->memfile, data[i].expected, expected_size);
assert_zero(ret, "i:%d memcmp() %d != 0\n", i, ret);
assert_zero(ret, "i:%d memcmp(\"%.*s\", \"%s\") %d != 0 (%s)\n",
i, symbol->memfile_size, symbol->memfile, data[i].expected, ret, symbol->errtxt);
} else {
assert_null(symbol->memfile, "i:%d memfile != NULL (%s)\n", i, symbol->errtxt);
assert_zero(symbol->memfile_size, "i:%d memfile_size != 0 (%s)\n", i, symbol->errtxt);
@@ -467,7 +472,7 @@ static void test_large(const testCtx *const p_ctx) {
int main(int argc, char *argv[]) {
testFunction funcs[] = { /* name, func */
{ "test_svg", test_svg },
{ "test_file", test_file },
{ "test_putsf", test_putsf },
{ "test_printf", test_printf },
{ "test_seek", test_seek },
+3 -2
View File
@@ -1577,7 +1577,7 @@ static void test_encode_print_outfile_directory(const testCtx *const p_ctx) {
int ret;
struct zint_symbol *symbol = NULL;
char dirname[] = "outdir.txt";
char expected[] = "Error 201: Could not open output file";
char expected[] = "Error 201: Could not open TXT output file"; /* Excluding OS-dependent `errno` stuff */
(void)p_ctx;
@@ -1593,7 +1593,8 @@ static void test_encode_print_outfile_directory(const testCtx *const p_ctx) {
strcpy(symbol->outfile, dirname);
ret = ZBarcode_Encode_and_Print(symbol, TCU("1"), 0, 0);
assert_equal(ret, ZINT_ERROR_FILE_ACCESS, "ret %d != ZINT_ERROR_FILE_ACCESS (%s)\n", ret, symbol->errtxt);
assert_zero(strcmp(symbol->errtxt, expected), "strcmp(%s, %s) != 0\n", symbol->errtxt, expected);
assert_zero(strncmp(symbol->errtxt, expected, sizeof(expected) - 1), "strncmp(%s, %s) != 0\n",
symbol->errtxt, expected);
ret = testUtilRmDir(dirname);
assert_zero(ret, "testUtilRmDir(%s) %d != 0 (%d: %s)\n", dirname, ret, errno, strerror(errno));
+34 -34
View File
@@ -196,19 +196,19 @@ static void ult_gf283(const short DataSize, const short EccSize, int Message[])
ult_genPoly(EccSize, gPoly, gfPwr, gfLog);
/* zero all EccSize codeword values */
for (j = 281; (j > (281 - EccSize)); j--) Message[j] = 0;
for (j = 281; j > 281 - EccSize; j--) Message[j] = 0;
/* shift message codewords to the right, leave space for ECC checkwords */
for (i = DataSize - 1; (i >= 0); j--, i--) Message[j] = Message[i];
for (i = DataSize - 1; i >= 0; j--, i--) Message[j] = Message[i];
/* add zeroes to pad left end Message[] for truncated codewords */
j++;
for (i = 0; i < j; i++) Message[i] = 0;
/* generate (EccSize) Reed-Solomon checkwords */
for (n = j; n < (j + DataSize); n++) {
for (n = j; n < j + DataSize; n++) {
t = (Message[j + DataSize] + Message[n]) % 283;
for (i = 0; i < (EccSize - 1); i++) {
for (i = 0; i < EccSize - 1; i++) {
Message[j + DataSize + i] = (Message[j + DataSize + i + 1] + 283
- ULT_GFMUL(t, gPoly[EccSize - 1 - i])) % 283;
}
@@ -227,7 +227,7 @@ static int ult_find_fragment(const unsigned char source[], const int length, con
for (j = 0; j < 27; j++) {
latch = 0;
fraglen = (int) strlen(ult_fragment[j]);
if ((position + fraglen) <= length) {
if (position + fraglen <= length) {
latch = 1;
for (k = 0; k < fraglen; k++) {
if (source[position + k] != ult_fragment[j][k]) {
@@ -258,7 +258,7 @@ static float ult_look_ahead_eightbit(const unsigned char source[], const int len
}
i = in_locn;
while ((i < length) && (i < end_char)) {
while (i < length && i < end_char) {
if (gs1 && source[i] == '\x1D') {
cw[codeword_count] = 268; /* FNC1 */
} else {
@@ -284,7 +284,7 @@ static float ult_look_ahead_ascii(unsigned char source[], const int length, cons
const int gs1) {
int codeword_count = 0;
int i;
int first_digit, second_digit, done;
int done;
int letters_encoded = 0;
if (current_mode == ULT_EIGHTBIT_MODE) {
@@ -306,35 +306,35 @@ static float ult_look_ahead_ascii(unsigned char source[], const int length, cons
/* Check for double digits */
done = 0;
if (i + 1 < length) {
first_digit = z_posn(ult_digit, source[i]);
second_digit = z_posn(ult_digit, source[i + 1]);
if ((first_digit != -1) && (second_digit != -1)) {
const int first_digit = z_posn(ult_digit, source[i]);
const int second_digit = z_posn(ult_digit, source[i + 1]);
if (first_digit != -1 && second_digit != -1) {
/* Double digit can be encoded */
if ((first_digit >= 0) && (first_digit <= 9) && (second_digit >= 0) && (second_digit <= 9)) {
if (first_digit >= 0 && first_digit <= 9 && second_digit >= 0 && second_digit <= 9) {
/* Double digit numerics */
cw[codeword_count] = (10 * first_digit) + second_digit + 128;
codeword_count++;
i += 2;
done = 1;
} else if ((first_digit >= 0) && (first_digit <= 9) && (second_digit == 10)) {
} else if (first_digit >= 0 && first_digit <= 9 && second_digit == 10) {
/* Single digit followed by selected decimal point character */
cw[codeword_count] = first_digit + 228;
codeword_count++;
i += 2;
done = 1;
} else if ((first_digit == 10) && (second_digit >= 0) && (second_digit <= 9)) {
} else if (first_digit == 10 && second_digit >= 0 && second_digit <= 9) {
/* Selected decimal point character followed by single digit */
cw[codeword_count] = second_digit + 238;
codeword_count++;
i += 2;
done = 1;
} else if ((first_digit >= 0) && (first_digit <= 9) && (second_digit == 11)) {
} else if (first_digit >= 0 && first_digit <= 9 && second_digit == 11) {
/* Single digit or decimal point followed by field deliminator */
cw[codeword_count] = first_digit + 248;
codeword_count++;
i += 2;
done = 1;
} else if ((first_digit == 11) && (second_digit >= 0) && (second_digit <= 9)) {
} else if (first_digit == 11 && second_digit >= 0 && second_digit <= 9) {
/* Field deliminator followed by single digit or decimal point */
cw[codeword_count] = second_digit + 259;
codeword_count++;
@@ -353,7 +353,7 @@ static float ult_look_ahead_ascii(unsigned char source[], const int length, cons
codeword_count++;
i++;
}
} while ((i < length) && (i < end_char) && (source[i] < 0x80));
} while (i < length && i < end_char && source[i] < 0x80);
letters_encoded = i - in_locn;
if (encoded != NULL) {
@@ -413,7 +413,7 @@ static int ult_get_subset(const unsigned char source[], const int length, const
int subset = 0;
fragno = ult_find_fragment(source, length, in_locn);
if ((fragno != -1) && (fragno != 26)) {
if (fragno != -1 && fragno != 26) {
subset = 3;
} else if (current_subset == 2) {
if (z_posn(ult_c43_set2, source[in_locn]) != -1) {
@@ -458,7 +458,7 @@ static float ult_look_ahead_c43(const unsigned char source[], const int length,
/* Check for permissable URL C43 macro sequences, otherwise encode directly */
fragno = ult_find_fragment(source, length, sublocn);
if ((fragno == 2) || (fragno == 3)) {
if (fragno == 2 || fragno == 3) {
/* http://www. > http:// */
/* https://www. > https:// */
fragno -= 2;
@@ -499,7 +499,7 @@ static float ult_look_ahead_c43(const unsigned char source[], const int length,
if (subset == 1) {
cw[codeword_count] = 260; /* C43 Compaction Submode C1 */
codeword_count++;
} else if ((subset == 2) || (subset == 3)) {
} else if (subset == 2 || subset == 3) {
cw[codeword_count] = 266; /* C43 Compaction Submode C2 */
codeword_count++;
}
@@ -510,14 +510,14 @@ static float ult_look_ahead_c43(const unsigned char source[], const int length,
if (subset == 1) {
cw[codeword_count] = 278; /* C43 Compaction Submode C1 */
codeword_count++;
} else if ((subset == 2) || (subset == 3)) {
} else if (subset == 2 || subset == 3) {
cw[codeword_count] = 280; /* C43 Compaction Submode C2 */
codeword_count++;
}
}
unshift_set = subset;
while ((sublocn < length) && (sublocn < end_char)) {
while (sublocn < length && sublocn < end_char) {
/* Check for FNC1 */
if (gs1 && source[sublocn] == '\x1D') {
break;
@@ -529,7 +529,7 @@ static float ult_look_ahead_c43(const unsigned char source[], const int length,
break;
}
if ((new_subset != subset) && ((new_subset == 1) || (new_subset == 2))) {
if (new_subset != subset && (new_subset == 1 || new_subset == 2)) {
if (ult_c43_should_latch_other(source, length, sublocn, subset)) {
subcw[subcodeword_count] = 42; /* Latch to other C43 set */
subcodeword_count++;
@@ -681,10 +681,10 @@ static int ult_generate_codewords(struct zint_symbol *symbol, const unsigned cha
mode[input_locn] = 'a';
current_mode = ULT_ASCII_MODE;
if ((c43_score > ascii_score) && (c43_score > eightbit_score)) {
if (c43_score > ascii_score && c43_score > eightbit_score) {
mode[input_locn] = 'c';
current_mode = ULT_C43_MODE;
} else if ((eightbit_score > ascii_score) && (eightbit_score > c43_score)) {
} else if (eightbit_score > ascii_score && eightbit_score > c43_score) {
mode[input_locn] = '8';
current_mode = ULT_EIGHTBIT_MODE;
}
@@ -846,14 +846,14 @@ static int ult_generate_codewords_segs(struct zint_symbol *symbol, struct zint_s
codewords[0] = 272;
}
} else {
if ((eci >= 3) && (eci <= 18) && (eci != 14)) {
if (eci >= 3 && eci <= 18 && eci != 14) {
/* ECI indicates use of character set within ISO/IEC 8859 */
codewords[0] = 257 + (eci - 3);
if (codewords[0] > 267) {
/* Avoids ECI 14 for non-existant ISO/IEC 8859-12 */
codewords[0]--;
}
} else if ((eci > 18) && (eci <= 898)) {
} else if (eci > 18 && eci <= 898) {
/* ECI indicates use of character set outside ISO/IEC 8859 */
codewords[0] = 275 + (eci / 256);
codewords[1] = eci % 256;
@@ -861,7 +861,7 @@ static int ult_generate_codewords_segs(struct zint_symbol *symbol, struct zint_s
} else if (eci == 899) {
/* Non-language byte data */
codewords[0] = 280;
} else if ((eci > 899) && (eci <= 9999)) {
} else if (eci > 899 && eci <= 9999) {
/* ECI beyond 899 needs to use fixed length encodable ECI invocation (section 7.6.2) */
/* Encode as 3 codewords */
codewords[0] = 257; /* ISO/IEC 8859-1 used to enter 8-bit mode */
@@ -882,18 +882,18 @@ static int ult_generate_codewords_segs(struct zint_symbol *symbol, struct zint_s
}
}
if ((codewords[0] == 257) || (codewords[0] == 272)) {
if (codewords[0] == 257 || codewords[0] == 272) {
int fragno = ult_find_fragment(source, length, 0);
/* Check for http:// at start of input */
if ((fragno == 0) || (fragno == 2)) {
if (fragno == 0 || fragno == 2) {
codewords[0] = 281;
source += 7;
length -= 7;
symbol_mode = ULT_EIGHTBIT_MODE;
/* Check for https:// at start of input */
} else if ((fragno == 1) || (fragno == 3)) {
} else if (fragno == 1 || fragno == 3) {
codewords[0] = 282;
source += 8;
length -= 8;
@@ -1025,7 +1025,7 @@ INTERNAL int zint_ultra(struct zint_symbol *symbol, struct zint_seg segs[], cons
}
/* Default ECC level is EC2 */
if ((symbol->option_1 <= 0) || (symbol->option_1 > 6)) {
if (symbol->option_1 <= 0 || symbol->option_1 > 6) {
ecc_level = 2;
} else {
ecc_level = symbol->option_1 - 1;
@@ -1035,7 +1035,7 @@ INTERNAL int zint_ultra(struct zint_symbol *symbol, struct zint_seg segs[], cons
if (ecc_level == 0) {
qcc = 3;
} else {
if ((data_cw_count % 25) == 0) {
if (data_cw_count % 25 == 0) {
qcc = ult_kec[ecc_level] * (data_cw_count / 25) + 3 + 2;
} else {
qcc = ult_kec[ecc_level] * ((data_cw_count / 25) + 1) + 3 + 2;
@@ -1081,7 +1081,7 @@ INTERNAL int zint_ultra(struct zint_symbol *symbol, struct zint_seg segs[], cons
}
}
if ((total_cws % rows) == 0) {
if (total_cws % rows == 0) {
pads = 0;
columns = total_cws / rows;
} else {
@@ -1199,7 +1199,7 @@ INTERNAL int zint_ultra(struct zint_symbol *symbol, struct zint_seg segs[], cons
for (j = 0; j < 5; j++) {
tilepat[4 - j] = ult_colour[(ult_tiles[codeword[i]] >> (3 * j)) & 0x07];
}
if ((tiley + 1) >= total_height) {
if (tiley + 1 >= total_height) {
tiley = 0;
tilex++;
+3 -4
View File
@@ -222,7 +222,7 @@ static int upce_cc(struct zint_symbol *symbol, unsigned char source[], int lengt
equivalent[3] = source[2];
equivalent[9] = source[3];
equivalent[10] = source[4];
if (((source[2] == '0') || (source[2] == '1')) || (source[2] == '2')) {
if (source[2] == '0' || source[2] == '1' || source[2] == '2') {
/* Note 1 - "X3 shall not be equal to 0, 1 or 2" */
return z_errtxtf(ZINT_ERROR_INVALID_DATA, symbol, 271,
"For this UPC-E zero suppression, 3rd character cannot be \"0\", \"1\" or \"2\" (%.*s)",
@@ -432,7 +432,7 @@ static int ean13_cc(struct zint_symbol *symbol, const unsigned char source[], in
d += 5;
}
if (((i > 1) && (i < 7)) && (parity[i - 2] == 'B')) {
if (i > 1 && i < 7 && parity[i - 2] == 'B') {
memcpy(d, EANsetB[gtin[i] - '0'], 4);
} else {
memcpy(d, EANsetA[gtin[i] - '0'], 4);
@@ -561,8 +561,7 @@ static int isbnx(struct zint_symbol *symbol, unsigned char source[], const int l
}
if (length == 13) /* Using 13 character ISBN */ {
if (!(((source[0] == '9') && (source[1] == '7')) &&
((source[2] == '8') || (source[2] == '9')))) {
if (source[0] != '9' || source[1] != '7' || (source[2] != '8' && source[2] != '9')) {
return z_errtxt(ZINT_ERROR_INVALID_DATA, symbol, 279,
"Invalid ISBN (must begin with \"978\" or \"979\")");
}
+6 -6
View File
@@ -218,7 +218,7 @@ static void vector_scale(struct zint_symbol *symbol, const int file_type) {
scale = 0.2f;
}
if ((file_type == OUT_EMF_FILE) && (symbol->symbology == BARCODE_MAXICODE)) {
if (file_type == OUT_EMF_FILE && symbol->symbology == BARCODE_MAXICODE) {
/* Increase size to overcome limitations in EMF file format */
scale *= 20;
}
@@ -355,7 +355,7 @@ static void vector_rotate(struct zint_symbol *symbol, const int rotate_angle) {
string = string->next;
}
if ((rotate_angle == 90) || (rotate_angle == 270)) {
if (rotate_angle == 90 || rotate_angle == 270) {
temp = symbol->vector->height;
symbol->vector->height = symbol->vector->width;
symbol->vector->width = temp;
@@ -372,8 +372,8 @@ static void vector_reduce_rectangles(struct zint_symbol *symbol) {
target = prev->next;
while (target) {
if ((rect->x == target->x) && (rect->width == target->width)
&& (z_stripf(rect->y + rect->height) == target->y) && (rect->colour == target->colour)) {
if (rect->x == target->x && rect->width == target->width && z_stripf(rect->y + rect->height) == target->y
&& rect->colour == target->colour) {
rect->height += target->height;
prev->next = target->next;
free(target);
@@ -492,7 +492,7 @@ INTERNAL int zint_plot_vector(struct zint_symbol *symbol, int rotate_angle, int
xoffset_comp = xoffset + comp_xoffset;
if ((symbol->symbology != BARCODE_MAXICODE) && (symbol->output_options & BARCODE_DOTTY_MODE)) {
if (symbol->symbology != BARCODE_MAXICODE && (symbol->output_options & BARCODE_DOTTY_MODE)) {
if (symbol->dot_size < 1.0f) {
dot_overspill = 0.0f;
/* Offset (1 - dot_size) / 2 + dot_radius == (1 - dot_size + dot_size) / 2 == 1 / 2 */
@@ -623,7 +623,7 @@ INTERNAL int zint_plot_vector(struct zint_symbol *symbol, int rotate_angle, int
for (block_width = 1; (i + block_width < symbol->width)
&& z_module_is_set(symbol, r, i + block_width) == fill; block_width++);
if ((r == (symbol->rows - 1)) && (i > main_width) && (addon_latch == 0)) {
if (r == symbol->rows - 1 && i > main_width && addon_latch == 0) {
addon_text_yposn = yposn + font_height - digit_ascender;
if (addon_text_yposn < 0.0f) {
addon_text_yposn = 0.0f;