GRIDMATRIX: default char set is GB 2312 only, not Latin-1 with GB 2312 alt

HANXIN/QRCODE: use Hanzi/Kanji modes when compatible ECIs given
manual: one true source now manual.pmd from which manual.txt is generated
CLI: man page moved from frontend/zint.1.gz to docs/zint.1.gz, now
  generated from docs/zint.1.pmd
add README.linux to root dir
This commit is contained in:
gitlost
2022-05-19 10:17:51 +01:00
parent 9aae557cdc
commit 719613d4c3
160 changed files with 18144 additions and 2674 deletions

View File

@ -22,6 +22,9 @@ if(NOT HAVE_GETOPT)
endif()
install(TARGETS ${PROJECT_NAME} DESTINATION "${BIN_INSTALL_DIR}" RUNTIME)
if(UNIX)
install(FILES "${CMAKE_SOURCE_DIR}/docs/zint.1.gz" DESTINATION "${MAN_INSTALL_DIR}/man1" COMPONENT doc)
endif()
if(ZINT_TEST)
add_subdirectory(tests)

View File

@ -97,7 +97,8 @@ static void types(void) {
}
/* Output version information */
static void version(void) {
static void version(int no_png) {
const char *no_png_lib = no_png ? " (no libpng)" : "";
const int zint_version = ZBarcode_Version();
const int version_major = zint_version / 10000;
const int version_minor = (zint_version % 10000) / 100;
@ -108,18 +109,21 @@ static void version(void) {
/* This is a test release */
version_release = version_release / 10;
version_build = zint_version % 10;
printf("Zint version %d.%d.%d.%d (dev)\n", version_major, version_minor, version_release, version_build);
printf("Zint version %d.%d.%d.%d (dev)%s\n", version_major, version_minor, version_release, version_build, no_png_lib);
} else {
/* This is a stable release */
printf("Zint version %d.%d.%d\n", version_major, version_minor, version_release);
printf("Zint version %d.%d.%d%s\n", version_major, version_minor, version_release, no_png_lib);
}
}
/* Output usage information */
static void usage(void) {
version();
static void usage(int no_png) {
const char *no_png_type = no_png ? "" : "/PNG";
const char *no_png_ext = no_png ? "gif" : "png";
printf( "Encode input data in a barcode and save as BMP/EMF/EPS/GIF/PCX/PNG/SVG/TIF/TXT\n\n"
version(no_png);
printf( "Encode input data in a barcode and save as BMP/EMF/EPS/GIF/PCX%s/SVG/TIF/TXT\n\n"
" -b, --barcode=TYPE Number or name of barcode type. Default is 20 (CODE128)\n"
" --addongap=NUMBER Set add-on gap in multiples of X-dimension for UPC/EAN\n"
" --batch Treat each line of input file as a separate data set\n"
@ -143,7 +147,7 @@ static void usage(void) {
" --esc Process escape characters in input data\n"
" --fast Use faster encodation (Data Matrix)\n"
" --fg=COLOUR Specify a foreground colour (in hex RGB/RGBA)\n"
" --filetype=TYPE Set output file type BMP/EMF/EPS/GIF/PCX/PNG/SVG/TIF/TXT\n"
" --filetype=TYPE Set output file type BMP/EMF/EPS/GIF/PCX%s/SVG/TIF/TXT\n"
" --fullmultibyte Use multibyte for binary/Latin (QR/Han Xin/Grid Matrix)\n"
" --gs1 Treat input as GS1 compatible data\n"
" --gs1nocheck Do not check validity of GS1 data\n"
@ -158,10 +162,10 @@ static void usage(void) {
" --mask=NUMBER Set masking pattern to use (QR/Han Xin/DotCode)\n"
" --mirror Use batch data to determine filename\n"
" --mode=NUMBER Set encoding mode (MaxiCode/Composite)\n"
" --nobackground Remove background (EMF/EPS/GIF/PNG/SVG/TIF only)\n"
" --nobackground Remove background (EMF/EPS/GIF%s/SVG/TIF only)\n"
" --noquietzones Disable default quiet zones\n"
" --notext Remove human readable text\n"
" -o, --output=FILE Send output to FILE. Default is out.png\n"
" -o, --output=FILE Send output to FILE. Default is out.%s\n"
" --primary=STRING Set primary message (MaxiCode/Composite)\n"
" --quietzones Add compliant quiet zones\n"
" -r, --reverse Reverse colours (white on black)\n"
@ -170,17 +174,18 @@ static void usage(void) {
" --scale=NUMBER Adjust size of X-dimension\n"
" --scmvv=NUMBER Prefix SCM with \"[)>\\R01\\Gvv\" (vv is NUMBER) (MaxiCode)\n"
" --secure=NUMBER Set error correction level (ECC)\n"
" --segN=ECI,DATA Set the ECI & data content for segment N where N is 1 to 9\n"
" --segN=ECI,DATA Set the ECI & data content for segment N, where N 1 to 9\n"
" --separator=NUMBER Set height of row separator bars (stacked symbologies)\n"
" --small Use small text\n"
" --square Force Data Matrix symbols to be square\n"
" --structapp=I,C[,ID] Set Structured Append info (I index, C count)\n"
" -t, --types Display table of barcode types\n"
" --vers=NUMBER Set symbol version (size, check digits, other options)\n"
" --version Display Zint version\n"
" -v, --version Display Zint version\n"
" --vwhitesp=NUMBER Set height of vertical whitespace in multiples of X-dim\n"
" -w, --whitesp=NUMBER Set width of horizontal whitespace in multiples of X-dim\n"
" --werror Convert all warnings into errors\n"
" --werror Convert all warnings into errors\n",
no_png_type, no_png_type, no_png_type, no_png_ext
);
}
@ -207,8 +212,8 @@ static void show_eci(void) {
" 23: Windows 1252 - Latin 1\n"
" 24: Windows 1256 - Arabic\n"
" 25: UTF-16BE (High order byte first)\n"
" 26: UTF-8 (Unicode)\n"
" 27: ISO/IEC 646:1991 7-bit ASCII\n"
" 26: UTF-8\n"
" 27: ASCII (ISO/IEC 646 IRV)\n"
" 28: Big5 (Taiwan) Chinese Character Set\n"
" 29: GB 2312 (PRC) Chinese Character Set\n"
" 30: Korean Character Set EUC-KR (KS X 1001:2002)\n"
@ -217,7 +222,7 @@ static void show_eci(void) {
" 33: UTF-16LE (Low order byte first)\n"
" 34: UTF-32BE (High order bytes first)\n"
" 35: UTF-32LE (Low order bytes first)\n"
"170: ISO/IEC 646:1991 7-bit Invariant\n"
"170: ISO/IEC 646 Invariant (ASCII subset)\n"
"899: 8-bit binary data\n"
);
}
@ -280,6 +285,7 @@ static int get_barcode_name(const char *barcode_name) {
{ BARCODE_C25IND, "c25ind" },
{ BARCODE_C25INTER, "c25inter" },
{ BARCODE_C25LOGIC, "c25logic" },
{ BARCODE_C25STANDARD, "c25matrix" },
{ BARCODE_C25STANDARD, "c25standard" },
{ BARCODE_CHANNEL, "channel" },
{ BARCODE_CODABAR, "codabar" },
@ -312,6 +318,8 @@ static int get_barcode_name(const char *barcode_name) {
{ BARCODE_DPIDENT, "dpident" },
{ BARCODE_DPLEIT, "dpleit" },
{ BARCODE_EANX, "ean" }, /* Synonym */
{ BARCODE_GS1_128, "ean128" }, /* Synonym */
{ BARCODE_GS1_128_CC, "ean128cc" }, /* Synonym */
{ BARCODE_EAN14, "ean14" },
{ BARCODE_EANX_CC, "eancc" }, /* Synonym */
{ BARCODE_EANX_CHK, "eanchk" }, /* Synonym */
@ -354,8 +362,10 @@ static int get_barcode_name(const char *barcode_name) {
{ BARCODE_MSI_PLESSEY, "msi" }, /* Synonym */
{ BARCODE_MSI_PLESSEY, "msiplessey" },
{ BARCODE_NVE18, "nve18" },
{ BARCODE_USPS_IMAIL, "onecode" }, /* Synonym */
{ BARCODE_PDF417, "pdf417" },
{ BARCODE_PDF417COMP, "pdf417comp" },
{ BARCODE_PDF417COMP, "pdf417trunc" }, /* Synonym */
{ BARCODE_PHARMA, "pharma" },
{ BARCODE_PHARMA_TWO, "pharmatwo" },
{ BARCODE_PLANET, "planet" },
@ -366,6 +376,18 @@ static int get_barcode_name(const char *barcode_name) {
{ BARCODE_QRCODE, "qrcode" },
{ BARCODE_RM4SCC, "rm4scc" },
{ BARCODE_RMQR, "rmqr" },
{ BARCODE_DBAR_OMN, "rss14" }, /* Synonym */
{ BARCODE_DBAR_OMN_CC, "rss14cc" }, /* Synonym */
{ BARCODE_DBAR_OMNSTK_CC, "rss14omnicc" }, /* Synonym */
{ BARCODE_DBAR_STK, "rss14stack" }, /* Synonym */
{ BARCODE_DBAR_STK_CC, "rss14stackcc" }, /* Synonym */
{ BARCODE_DBAR_OMNSTK, "rss14stackomni" }, /* Synonym */
{ BARCODE_DBAR_EXP, "rssexp" }, /* Synonym */
{ BARCODE_DBAR_EXP_CC, "rssexpcc" }, /* Synonym */
{ BARCODE_DBAR_EXPSTK, "rssexpstack" }, /* Synonym */
{ BARCODE_DBAR_EXPSTK_CC, "rssexpstackcc" }, /* Synonym */
{ BARCODE_DBAR_LTD, "rssltd" }, /* Synonym */
{ BARCODE_DBAR_LTD_CC, "rssltdcc" }, /* Synonym */
{ BARCODE_TELEPEN, "telepen" },
{ BARCODE_TELEPEN_NUM, "telepennum" },
{ BARCODE_ULTRA, "ultra" },
@ -878,17 +900,18 @@ int main(int argc, char **argv) {
#endif
int no_getopt_error = 1;
if (argc == 1) {
usage();
exit(1);
}
my_symbol = ZBarcode_Create();
if (!my_symbol) {
fprintf(stderr, "Error 151: Memory failure\n");
exit(1);
}
no_png = strcmp(my_symbol->outfile, "out.gif") == 0;
if (argc == 1) {
ZBarcode_Delete(my_symbol);
usage(no_png);
exit(1);
}
my_symbol->input_mode = UNICODE_MODE;
#ifdef _WIN32
@ -906,7 +929,7 @@ int main(int argc, char **argv) {
OPT_ROTATE, OPT_ROWS, OPT_SCALE, OPT_SCMVV, OPT_SECURE,
OPT_SEG1, OPT_SEG2, OPT_SEG3, OPT_SEG4, OPT_SEG5, OPT_SEG6, OPT_SEG7, OPT_SEG8, OPT_SEG9,
OPT_SEPARATOR, OPT_SMALL, OPT_SQUARE, OPT_STRUCTAPP,
OPT_VERBOSE, OPT_VERS, OPT_VERSION, OPT_VWHITESP, OPT_WERROR,
OPT_VERBOSE, OPT_VERS, OPT_VWHITESP, OPT_WERROR,
};
int option_index = 0;
static const struct option long_options[] = {
@ -977,13 +1000,13 @@ int main(int argc, char **argv) {
{"types", 0, NULL, 't'},
{"verbose", 0, NULL, OPT_VERBOSE}, // Currently undocumented, output some debug info
{"vers", 1, NULL, OPT_VERS},
{"version", 0, NULL, OPT_VERSION},
{"version", 0, NULL, 'v'},
{"vwhitesp", 1, NULL, OPT_VWHITESP},
{"werror", 0, NULL, OPT_WERROR},
{"whitesp", 1, NULL, 'w'},
{NULL, 0, NULL, 0}
};
const int c = getopt_long_only(argc, argv, "b:d:ehi:o:rtw:", long_options, &option_index);
const int c = getopt_long_only(argc, argv, "b:d:ehi:o:rtvw:", long_options, &option_index);
if (c == -1) break;
switch (c) {
@ -1366,12 +1389,12 @@ int main(int argc, char **argv) {
break;
case 'h':
usage();
usage(no_png);
help = 1;
break;
case OPT_VERSION:
version();
case 'v':
version(no_png);
help = 1;
break;
@ -1551,6 +1574,12 @@ int main(int argc, char **argv) {
if (seg_count) {
ret = ZBarcode_Encode_Segs(my_symbol, segs, seg_count);
} else {
if (i == 1 && (ZBarcode_Cap(symbology, ZINT_CAP_STACKABLE) & ZINT_CAP_STACKABLE) == 0) {
fprintf(stderr, "Error 173: Symbology must be stackable if multiple data arguments given\n");
fflush(stderr);
error_number = ZINT_ERROR_INVALID_DATA;
break;
}
ret = ZBarcode_Encode(my_symbol, (unsigned char *) arg_opts[i].arg,
(int) strlen(arg_opts[i].arg));
}

View File

@ -1,5 +1,5 @@
mkdir test_out
cd test_out
mkdir test_sh_out
cd test_sh_out
echo testing Code 11
zint -o bar01.txt -b 1 -d 87654321
zint -o bar01.gif -b 1 --height=50 --border=10 -d 87654321

View File

@ -837,7 +837,7 @@ static void test_barcode_symbology(int index, int debug) {
/* 4*/ { "code12", "1", NULL, 1, "Error 119: Invalid barcode type 'code12'" },
/* 5*/ { "BARCODE_CODE11", "1", NULL, 0, "symbology: 1," },
/* 6*/ { "C25 Standard", "1", NULL, 0, "symbology: 2," },
/* 7*/ { "c25matrix", "1", NULL, 1, "Error 119: Invalid barcode type 'c25matrix'" }, // Legacy not supported
/* 7*/ { "c25matrix", "1", NULL, 0, "symbology: 2," }, // Legacy now supported
/* 8*/ { "C25INTER", "1", NULL, 0, "symbology: 3," },
/* 9*/ { "c25IATA", "1", NULL, 0, "symbology: 4," },
/* 10*/ { "c25 Logic", "1", NULL, 0, "symbology: 6," },
@ -850,107 +850,124 @@ static void test_barcode_symbology(int index, int debug) {
/* 17*/ { "eanxchk", "1", NULL, 0, "symbology: 14," },
/* 18*/ { "eanchk", "1", NULL, 0, "symbology: 14," },
/* 19*/ { "GS1128", "[01]12345678901231", NULL, 0, "symbology: 16," },
/* 20*/ { "coda bar", "A1B", NULL, 0, "symbology: 18," },
/* 21*/ { "DPLEIT", "1", NULL, 0, "symbology: 21," },
/* 22*/ { "DPIDENT", "1", NULL, 0, "symbology: 22," },
/* 23*/ { "code16k", "1", NULL, 0, "symbology: 23," },
/* 24*/ { "CODE49", "1", NULL, 0, "symbology: 24," },
/* 25*/ { "CODE93", "1", NULL, 0, "symbology: 25," },
/* 26*/ { "flat", "1", NULL, 0, "symbology: 28," },
/* 27*/ { "dbar omn", "1", NULL, 0, "symbology: 29," },
/* 28*/ { "dbar ltd", "1", NULL, 0, "symbology: 30," },
/* 29*/ { "dbarexp", "[10]12", NULL, 0, "symbology: 31," },
/* 30*/ { "telepen", "1", NULL, 0, "symbology: 32," },
/* 31*/ { "upc", "1", NULL, 1, "Error 119: Invalid barcode type 'upc'" },
/* 32*/ { "upca", "1", NULL, 0, "symbology: 34," },
/* 33*/ { "upca_chk", "123456789012", NULL, 0, "symbology: 35," },
/* 34*/ { "upce", "1", NULL, 0, "symbology: 37," },
/* 35*/ { "upce chk", "12345670", NULL, 0, "symbology: 38," },
/* 36*/ { "POSTNET ", "12345678901", NULL, 0, "symbology: 40," },
/* 37*/ { "msi", "1", NULL, 0, "symbology: 47," },
/* 38*/ { "MSI Plessey ", "1", NULL, 0, "symbology: 47," },
/* 39*/ { "fim ", "A", NULL, 0, "symbology: 49," },
/* 40*/ { "LOGMARS", "123456", NULL, 0, "symbology: 50," },
/* 41*/ { " pharma", "123456", NULL, 0, "symbology: 51," },
/* 42*/ { " pzn ", "1", NULL, 0, "symbology: 52," },
/* 43*/ { "pharma two", "4", NULL, 0, "symbology: 53," },
/* 44*/ { "BARCODE_PDF417", "1", NULL, 0, "symbology: 55," },
/* 45*/ { "barcodepdf417comp", "1", NULL, 0, "symbology: 56," },
/* 46*/ { "MaxiCode", "1", NULL, 0, "symbology: 57," },
/* 47*/ { "QR CODE", "1", NULL, 0, "symbology: 58," },
/* 48*/ { "qr", "1", NULL, 0, "symbology: 58," }, // Synonym
/* 49*/ { "Code 128 B", "1", NULL, 0, "symbology: 60," },
/* 50*/ { "AUS POST", "12345678901234567890123", NULL, 0, "symbology: 63," },
/* 51*/ { "AusReply", "12345678", NULL, 0, "symbology: 66," },
/* 52*/ { "AUSROUTE", "12345678", NULL, 0, "symbology: 67," },
/* 53*/ { "AUS REDIRECT", "12345678", NULL, 0, "symbology: 68," },
/* 54*/ { "isbnx", "123456789", NULL, 0, "symbology: 69," },
/* 55*/ { "rm4scc", "1", NULL, 0, "symbology: 70," },
/* 56*/ { "DataMatrix", "1", NULL, 0, "symbology: 71," },
/* 57*/ { "EAN14", "1", NULL, 0, "symbology: 72," },
/* 58*/ { "vin", "12345678701234567", NULL, 0, "symbology: 73," },
/* 59*/ { "CodaBlock-F", "1", NULL, 0, "symbology: 74," },
/* 60*/ { "NVE18", "1", NULL, 0, "symbology: 75," },
/* 61*/ { "Japan Post", "1", NULL, 0, "symbology: 76," },
/* 62*/ { "Korea Post", "1", NULL, 0, "symbology: 77," },
/* 63*/ { "DBar Stk", "1", NULL, 0, "symbology: 79," },
/* 64*/ { "DBar Omn Stk", "1", NULL, 0, "symbology: 80," },
/* 65*/ { "DBar Exp Stk", "[20]01", NULL, 0, "symbology: 81," },
/* 66*/ { "planet", "12345678901", NULL, 0, "symbology: 82," },
/* 67*/ { "MicroPDF417", "1", NULL, 0, "symbology: 84," },
/* 68*/ { "USPS IMail", "12345678901234567890", NULL, 0, "symbology: 85," },
/* 69*/ { "plessey", "1", NULL, 0, "symbology: 86," },
/* 70*/ { "telepen num", "1", NULL, 0, "symbology: 87," },
/* 71*/ { "ITF14", "1", NULL, 0, "symbology: 89," },
/* 72*/ { "KIX", "1", NULL, 0, "symbology: 90," },
/* 73*/ { "Aztec", "1", NULL, 0, "symbology: 92," },
/* 74*/ { "daft", "D", NULL, 0, "symbology: 93," },
/* 75*/ { "DPD", "0123456789012345678901234567", NULL, 0, "symbology: 96," },
/* 76*/ { "Micro QR", "1", NULL, 0, "symbology: 97," },
/* 77*/ { "hibc128", "1", NULL, 0, "symbology: 98," },
/* 78*/ { "hibccode128", "1", NULL, 0, "symbology: 98," }, // Synonym
/* 79*/ { "hibc39", "1", NULL, 0, "symbology: 99," },
/* 80*/ { "hibccode39", "1", NULL, 0, "symbology: 99," }, // Synonym
/* 81*/ { "hibcdatamatrix", "1", NULL, 0, "symbology: 102," }, // Synonym
/* 82*/ { "hibcdm", "1", NULL, 0, "symbology: 102," },
/* 83*/ { "HIBC qr", "1", NULL, 0, "symbology: 104," },
/* 84*/ { "HIBC QR Code", "1", NULL, 0, "symbology: 104," }, // Synonym
/* 85*/ { "HIBCPDF", "1", NULL, 0, "symbology: 106," },
/* 86*/ { "HIBCPDF417", "1", NULL, 0, "symbology: 106," }, // Synonym
/* 87*/ { "HIBCMICPDF", "1", NULL, 0, "symbology: 108," },
/* 88*/ { "HIBC Micro PDF", "1", NULL, 0, "symbology: 108," }, // Synonym
/* 89*/ { "HIBC Micro PDF417", "1", NULL, 0, "symbology: 108," }, // Synonym
/* 90*/ { "HIBC BlockF", "1", NULL, 0, "symbology: 110," },
/* 91*/ { "HIBC CodaBlock-F", "1", NULL, 0, "symbology: 110," }, // Synonym
/* 92*/ { "HIBC Aztec", "1", NULL, 0, "symbology: 112," },
/* 93*/ { "DotCode", "1", NULL, 0, "symbology: 115," },
/* 94*/ { "Han Xin", "1", NULL, 0, "symbology: 116," },
/* 95*/ { "Mailmark", "01000000000000000AA00AA0A", NULL, 0, "symbology: 121," },
/* 96*/ { "azrune", "1", NULL, 0, "symbology: 128," },
/* 97*/ { "aztecrune", "1", NULL, 0, "symbology: 128," }, // Synonym
/* 98*/ { "aztecrunes", "1", NULL, 0, "symbology: 128," }, // Synonym
/* 99*/ { "code32", "1", NULL, 0, "symbology: 129," },
/*100*/ { "eanx cc", "[20]01", "1234567890128", 0, "symbology: 130," },
/*101*/ { "eancc", "[20]01", "1234567890128", 0, "symbology: 130," },
/*102*/ { "GS1 128 CC", "[01]12345678901231", "[20]01", 0, "symbology: 131," },
/*103*/ { "dbaromncc", "[20]01", "1234567890123", 0, "symbology: 132," },
/*104*/ { "dbarltdcc", "[20]01", "1234567890123", 0, "symbology: 133," },
/*105*/ { "dbarexpcc", "[20]01", "[01]12345678901231", 0, "symbology: 134," },
/*106*/ { "upcacc", "[20]01", "12345678901", 0, "symbology: 135," },
/*107*/ { "upcecc", "[20]01", "1234567", 0, "symbology: 136," },
/*108*/ { "dbar stk cc", "[20]01", "1234567890123", 0, "symbology: 137," },
/*109*/ { "dbaromnstkcc", "[20]01", "1234567890123", 0, "symbology: 138," },
/*110*/ { "dbarexpstkcc", "[20]01", "[01]12345678901231", 0, "symbology: 139," },
/*111*/ { "Channel", "1", NULL, 0, "symbology: 140," },
/*112*/ { "CodeOne", "1", NULL, 0, "symbology: 141," },
/*113*/ { "Grid Matrix", "1", NULL, 0, "symbology: 142," },
/*114*/ { "UPN QR", "1", NULL, 0, "symbology: 143," },
/*115*/ { "UPN QR Code", "1", NULL, 0, "symbology: 143," }, // Synonym
/*116*/ { "ultra", "1", NULL, 0, "symbology: 144," },
/*117*/ { "ultracode", "1", NULL, 0, "symbology: 144," }, // Synonym
/*118*/ { "rMQR", "1", NULL, 0, "symbology: 145," },
/*119*/ { "x", "1", NULL, 1, "Error 119: Invalid barcode type 'x'" },
/*120*/ { "\177", "1", NULL, 1, "Error 119: Invalid barcode type '\177'" },
/* 20*/ { "ean 128", "[01]12345678901231", NULL, 0, "symbology: 16," },
/* 21*/ { "coda bar", "A1B", NULL, 0, "symbology: 18," },
/* 22*/ { "DPLEIT", "1", NULL, 0, "symbology: 21," },
/* 23*/ { "DPIDENT", "1", NULL, 0, "symbology: 22," },
/* 24*/ { "code16k", "1", NULL, 0, "symbology: 23," },
/* 25*/ { "CODE49", "1", NULL, 0, "symbology: 24," },
/* 26*/ { "CODE93", "1", NULL, 0, "symbology: 25," },
/* 27*/ { "flat", "1", NULL, 0, "symbology: 28," },
/* 28*/ { "dbar omn", "1", NULL, 0, "symbology: 29," },
/* 29*/ { "rss14", "1", NULL, 0, "symbology: 29," },
/* 30*/ { "dbar ltd", "1", NULL, 0, "symbology: 30," },
/* 31*/ { "rss ltd", "1", NULL, 0, "symbology: 30," },
/* 32*/ { "dbarexp", "[10]12", NULL, 0, "symbology: 31," },
/* 33*/ { "rss exp", "[10]12", NULL, 0, "symbology: 31," },
/* 34*/ { "telepen", "1", NULL, 0, "symbology: 32," },
/* 35*/ { "upc", "1", NULL, 1, "Error 119: Invalid barcode type 'upc'" },
/* 36*/ { "upca", "1", NULL, 0, "symbology: 34," },
/* 37*/ { "upca_chk", "123456789012", NULL, 0, "symbology: 35," },
/* 38*/ { "upce", "1", NULL, 0, "symbology: 37," },
/* 39*/ { "upce chk", "12345670", NULL, 0, "symbology: 38," },
/* 40*/ { "POSTNET ", "12345678901", NULL, 0, "symbology: 40," },
/* 41*/ { "msi", "1", NULL, 0, "symbology: 47," },
/* 42*/ { "MSI Plessey ", "1", NULL, 0, "symbology: 47," },
/* 43*/ { "fim ", "A", NULL, 0, "symbology: 49," },
/* 44*/ { "LOGMARS", "123456", NULL, 0, "symbology: 50," },
/* 45*/ { " pharma", "123456", NULL, 0, "symbology: 51," },
/* 46*/ { " pzn ", "1", NULL, 0, "symbology: 52," },
/* 47*/ { "pharma two", "4", NULL, 0, "symbology: 53," },
/* 48*/ { "BARCODE_PDF417", "1", NULL, 0, "symbology: 55," },
/* 49*/ { "pdf", "1", NULL, 1, "Error 119: Invalid barcode type 'pdf'" },
/* 50*/ { "barcodepdf417comp", "1", NULL, 0, "symbology: 56," },
/* 51*/ { "pdf417trunc", "1", NULL, 0, "symbology: 56," },
/* 52*/ { "MaxiCode", "1", NULL, 0, "symbology: 57," },
/* 53*/ { "QR CODE", "1", NULL, 0, "symbology: 58," },
/* 54*/ { "qr", "1", NULL, 0, "symbology: 58," }, // Synonym
/* 55*/ { "Code 128 B", "1", NULL, 0, "symbology: 60," },
/* 56*/ { "AUS POST", "12345678901234567890123", NULL, 0, "symbology: 63," },
/* 57*/ { "AusReply", "12345678", NULL, 0, "symbology: 66," },
/* 58*/ { "AUSROUTE", "12345678", NULL, 0, "symbology: 67," },
/* 59*/ { "AUS REDIRECT", "12345678", NULL, 0, "symbology: 68," },
/* 60*/ { "isbnx", "123456789", NULL, 0, "symbology: 69," },
/* 61*/ { "rm4scc", "1", NULL, 0, "symbology: 70," },
/* 62*/ { "DataMatrix", "1", NULL, 0, "symbology: 71," },
/* 63*/ { "EAN14", "1", NULL, 0, "symbology: 72," },
/* 64*/ { "vin", "12345678701234567", NULL, 0, "symbology: 73," },
/* 65*/ { "CodaBlock-F", "1", NULL, 0, "symbology: 74," },
/* 66*/ { "NVE18", "1", NULL, 0, "symbology: 75," },
/* 67*/ { "Japan Post", "1", NULL, 0, "symbology: 76," },
/* 68*/ { "Korea Post", "1", NULL, 0, "symbology: 77," },
/* 69*/ { "DBar Stk", "1", NULL, 0, "symbology: 79," },
/* 70*/ { "rss14stack", "1", NULL, 0, "symbology: 79," },
/* 71*/ { "DBar Omn Stk", "1", NULL, 0, "symbology: 80," },
/* 72*/ { "RSS14STACK OMNI", "1", NULL, 0, "symbology: 80," },
/* 73*/ { "DBar Exp Stk", "[20]01", NULL, 0, "symbology: 81," },
/* 74*/ { "rss_expstack", "[20]01", NULL, 0, "symbology: 81," },
/* 75*/ { "planet", "12345678901", NULL, 0, "symbology: 82," },
/* 76*/ { "MicroPDF417", "1", NULL, 0, "symbology: 84," },
/* 77*/ { "USPS IMail", "12345678901234567890", NULL, 0, "symbology: 85," },
/* 78*/ { "OneCode", "12345678901234567890", NULL, 0, "symbology: 85," },
/* 79*/ { "plessey", "1", NULL, 0, "symbology: 86," },
/* 80*/ { "telepen num", "1", NULL, 0, "symbology: 87," },
/* 81*/ { "ITF14", "1", NULL, 0, "symbology: 89," },
/* 82*/ { "KIX", "1", NULL, 0, "symbology: 90," },
/* 83*/ { "Aztec", "1", NULL, 0, "symbology: 92," },
/* 84*/ { "daft", "D", NULL, 0, "symbology: 93," },
/* 85*/ { "DPD", "0123456789012345678901234567", NULL, 0, "symbology: 96," },
/* 86*/ { "Micro QR", "1", NULL, 0, "symbology: 97," },
/* 87*/ { "hibc128", "1", NULL, 0, "symbology: 98," },
/* 88*/ { "hibccode128", "1", NULL, 0, "symbology: 98," }, // Synonym
/* 89*/ { "hibc39", "1", NULL, 0, "symbology: 99," },
/* 90*/ { "hibccode39", "1", NULL, 0, "symbology: 99," }, // Synonym
/* 91*/ { "hibcdatamatrix", "1", NULL, 0, "symbology: 102," }, // Synonym
/* 92*/ { "hibcdm", "1", NULL, 0, "symbology: 102," },
/* 93*/ { "HIBC qr", "1", NULL, 0, "symbology: 104," },
/* 94*/ { "HIBC QR Code", "1", NULL, 0, "symbology: 104," }, // Synonym
/* 95*/ { "HIBCPDF", "1", NULL, 0, "symbology: 106," },
/* 96*/ { "HIBCPDF417", "1", NULL, 0, "symbology: 106," }, // Synonym
/* 97*/ { "HIBCMICPDF", "1", NULL, 0, "symbology: 108," },
/* 98*/ { "HIBC Micro PDF", "1", NULL, 0, "symbology: 108," }, // Synonym
/* 99*/ { "HIBC Micro PDF417", "1", NULL, 0, "symbology: 108," }, // Synonym
/*100*/ { "HIBC BlockF", "1", NULL, 0, "symbology: 110," },
/*101*/ { "HIBC CodaBlock-F", "1", NULL, 0, "symbology: 110," }, // Synonym
/*102*/ { "HIBC Aztec", "1", NULL, 0, "symbology: 112," },
/*103*/ { "DotCode", "1", NULL, 0, "symbology: 115," },
/*104*/ { "Han Xin", "1", NULL, 0, "symbology: 116," },
/*105*/ { "Mailmark", "01000000000000000AA00AA0A", NULL, 0, "symbology: 121," },
/*106*/ { "azrune", "1", NULL, 0, "symbology: 128," },
/*107*/ { "aztecrune", "1", NULL, 0, "symbology: 128," }, // Synonym
/*108*/ { "aztecrunes", "1", NULL, 0, "symbology: 128," }, // Synonym
/*109*/ { "code32", "1", NULL, 0, "symbology: 129," },
/*110*/ { "eanx cc", "[20]01", "1234567890128", 0, "symbology: 130," },
/*111*/ { "eancc", "[20]01", "1234567890128", 0, "symbology: 130," },
/*112*/ { "GS1 128 CC", "[01]12345678901231", "[20]01", 0, "symbology: 131," },
/*113*/ { "EAN128 CC", "[01]12345678901231", "[20]01", 0, "symbology: 131," },
/*114*/ { "dbaromncc", "[20]01", "1234567890123", 0, "symbology: 132," },
/*115*/ { "rss14 cc", "[20]01", "1234567890123", 0, "symbology: 132," },
/*116*/ { "dbarltdcc", "[20]01", "1234567890123", 0, "symbology: 133," },
/*117*/ { "rss ltd cc", "[20]01", "1234567890123", 0, "symbology: 133," },
/*118*/ { "dbarexpcc", "[20]01", "[01]12345678901231", 0, "symbology: 134," },
/*119*/ { "rss exp cc", "[20]01", "[01]12345678901231", 0, "symbology: 134," },
/*120*/ { "upcacc", "[20]01", "12345678901", 0, "symbology: 135," },
/*121*/ { "upcecc", "[20]01", "1234567", 0, "symbology: 136," },
/*122*/ { "dbar stk cc", "[20]01", "1234567890123", 0, "symbology: 137," },
/*123*/ { "rss14stackcc", "[20]01", "1234567890123", 0, "symbology: 137," },
/*124*/ { "dbaromnstkcc", "[20]01", "1234567890123", 0, "symbology: 138," },
/*125*/ { "BARCODE_RSS14_OMNI_CC", "[20]01", "1234567890123", 0, "symbology: 138," },
/*126*/ { "dbarexpstkcc", "[20]01", "[01]12345678901231", 0, "symbology: 139," },
/*127*/ { "RSS EXPSTACK CC", "[20]01", "[01]12345678901231", 0, "symbology: 139," },
/*128*/ { "Channel", "1", NULL, 0, "symbology: 140," },
/*129*/ { "CodeOne", "1", NULL, 0, "symbology: 141," },
/*130*/ { "Grid Matrix", "1", NULL, 0, "symbology: 142," },
/*131*/ { "UPN QR", "1", NULL, 0, "symbology: 143," },
/*132*/ { "UPN QR Code", "1", NULL, 0, "symbology: 143," }, // Synonym
/*133*/ { "ultra", "1", NULL, 0, "symbology: 144," },
/*134*/ { "ultracode", "1", NULL, 0, "symbology: 144," }, // Synonym
/*135*/ { "rMQR", "1", NULL, 0, "symbology: 145," },
/*136*/ { "x", "1", NULL, 1, "Error 119: Invalid barcode type 'x'" },
/*137*/ { "\177", "1", NULL, 1, "Error 119: Invalid barcode type '\177'" },
};
int data_size = ARRAY_SIZE(data);
int i;
@ -994,51 +1011,57 @@ static void test_other_opts(int index, int debug) {
char *opt_data;
char *expected;
int strstr_cmp;
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { BARCODE_CODE128, "1", -1, " --bg=", "EF9900", "" },
/* 1*/ { BARCODE_CODE128, "1", -1, " -bg=", "EF9900", "" },
/* 2*/ { BARCODE_CODE128, "1", -1, " --bg=", "EF9900AA", "" },
/* 3*/ { BARCODE_CODE128, "1", -1, " --bg=", "GF9900", "Error 654: Malformed background colour 'GF9900' (hexadecimal only)" },
/* 4*/ { BARCODE_CODE128, "1", -1, " --fg=", "000000", "" },
/* 5*/ { BARCODE_CODE128, "1", -1, " --fg=", "00000000", "" },
/* 6*/ { BARCODE_CODE128, "1", -1, " --fg=", "000000F", "Error 651: Malformed foreground colour (6 or 8 characters only)" },
/* 7*/ { BARCODE_CODE128, "1", -1, " --fg=", "000000FG", "Error 653: Malformed foreground colour '000000FG' (hexadecimal only)" },
/* 8*/ { BARCODE_CODE128, "1", -1, " --compliantheight", "", "" },
/* 9*/ { BARCODE_CODE128, "1", -1, " --fontsize=", "10", "" },
/* 10*/ { BARCODE_CODE128, "1", -1, " --fontsize=", "101", "Warning 126: Font size out of range (0 to 100), ignoring" },
/* 11*/ { BARCODE_CODE128, "1", -1, " --nobackground", "", "" },
/* 12*/ { BARCODE_CODE128, "1", -1, " --noquietzones", "", "" },
/* 13*/ { BARCODE_CODE128, "1", -1, " --notext", "", "" },
/* 14*/ { BARCODE_CODE128, "1", -1, " --quietzones", "", "" },
/* 15*/ { BARCODE_CODE128, "1", -1, " --reverse", "", "" },
/* 16*/ { BARCODE_CODE128, "1", -1, " --werror", NULL, "" },
/* 17*/ { 19, "1", -1, " --werror", NULL, "Error 207: Codabar 18 not supported" },
/* 18*/ { BARCODE_GS1_128, "[01]12345678901231", -1, "", NULL, "" },
/* 19*/ { BARCODE_GS1_128, "0112345678901231", -1, "", NULL, "Error 252: Data does not start with an AI" },
/* 20*/ { BARCODE_GS1_128, "0112345678901231", -1, " --gs1nocheck", NULL, "Error 252: Data does not start with an AI" },
/* 21*/ { BARCODE_GS1_128, "[00]376104250021234569", -1, "", NULL, "" },
/* 22*/ { BARCODE_GS1_128, "[00]376104250021234568", -1, "", NULL, "Warning 261: AI (00) position 18: Bad checksum '8', expected '9'" },
/* 23*/ { BARCODE_GS1_128, "[00]376104250021234568", -1, " --gs1nocheck", NULL, "" },
/* 24*/ { BARCODE_GS1_128, "[00]376104250021234568", -1, " --werror", NULL, "Error 261: AI (00) position 18: Bad checksum '8', expected '9'" },
/* 25*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "1", "Error 155: Invalid Structured Append argument, expect \"index,count[,ID]\"" },
/* 26*/ { BARCODE_AZTEC, "1", -1, " --structapp=", ",", "Error 156: Structured Append index too short" },
/* 27*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "1234567890,", "Error 156: Structured Append index too long" },
/* 28*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,", "Error 159: Structured Append count too short" },
/* 29*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,1234567890", "Error 159: Structured Append count too long" },
/* 30*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,123456789,", "Error 158: Structured Append ID too short" },
/* 31*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,1234567890,", "Error 157: Structured Append count too long" },
/* 32*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,123456789,123456789012345678901234567890123", "Error 158: Structured Append ID too long" },
/* 33*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,123456789,12345678901234567890123456789012", "Error 701: Structured Append count out of range (2-26)" },
/* 34*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "26,26,12345678901234567890123456789012", "" },
/* 35*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "A,26,12345678901234567890123456789012", "Error 160: Invalid Structured Append index (digits only)" },
/* 36*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "26,A,12345678901234567890123456789012", "Error 161: Invalid Structured Append count (digits only)" },
/* 37*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "26,1,12345678901234567890123456789012", "Error 162: Invalid Structured Append count, must be >= 2" },
/* 38*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "0,2,12345678901234567890123456789012", "Error 163: Structured Append index out of range (1-2)" },
/* 39*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "3,2,12345678901234567890123456789012", "Error 163: Structured Append index out of range (1-2)" },
/* 40*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "2,3,12345678901234567890123456789012", "" },
/* 41*/ { BARCODE_PDF417, "1", -1, " --heightperrow", "", "" },
/* 0*/ { BARCODE_CODE128, "1", -1, " --bg=", "EF9900", "", 0 },
/* 1*/ { BARCODE_CODE128, "1", -1, " -bg=", "EF9900", "", 0 },
/* 2*/ { BARCODE_CODE128, "1", -1, " --bg=", "EF9900AA", "", 0 },
/* 3*/ { BARCODE_CODE128, "1", -1, " --bg=", "GF9900", "Error 654: Malformed background colour 'GF9900' (hexadecimal only)", 0 },
/* 4*/ { BARCODE_CODE128, "1", -1, " --fg=", "000000", "", 0 },
/* 5*/ { BARCODE_CODE128, "1", -1, " --fg=", "00000000", "", 0 },
/* 6*/ { BARCODE_CODE128, "1", -1, " --fg=", "000000F", "Error 651: Malformed foreground colour (6 or 8 characters only)", 0 },
/* 7*/ { BARCODE_CODE128, "1", -1, " --fg=", "000000FG", "Error 653: Malformed foreground colour '000000FG' (hexadecimal only)", 0 },
/* 8*/ { BARCODE_CODE128, "1", -1, " --compliantheight", "", "", 0 },
/* 9*/ { BARCODE_CODE128, "1", -1, " --fontsize=", "10", "", 0 },
/* 10*/ { BARCODE_CODE128, "1", -1, " --fontsize=", "101", "Warning 126: Font size out of range (0 to 100), ignoring", 0 },
/* 11*/ { BARCODE_CODE128, "1", -1, " --nobackground", "", "", 0 },
/* 12*/ { BARCODE_CODE128, "1", -1, " --noquietzones", "", "", 0 },
/* 13*/ { BARCODE_CODE128, "1", -1, " --notext", "", "", 0 },
/* 14*/ { BARCODE_CODE128, "1", -1, " --quietzones", "", "", 0 },
/* 15*/ { BARCODE_CODE128, "1", -1, " --reverse", "", "", 0 },
/* 16*/ { BARCODE_CODE128, "1", -1, " --werror", NULL, "", 0 },
/* 17*/ { 19, "1", -1, " --werror", NULL, "Error 207: Codabar 18 not supported", 0 },
/* 18*/ { BARCODE_GS1_128, "[01]12345678901231", -1, "", NULL, "", 0 },
/* 19*/ { BARCODE_GS1_128, "0112345678901231", -1, "", NULL, "Error 252: Data does not start with an AI", 0 },
/* 20*/ { BARCODE_GS1_128, "0112345678901231", -1, " --gs1nocheck", NULL, "Error 252: Data does not start with an AI", 0 },
/* 21*/ { BARCODE_GS1_128, "[00]376104250021234569", -1, "", NULL, "", 0 },
/* 22*/ { BARCODE_GS1_128, "[00]376104250021234568", -1, "", NULL, "Warning 261: AI (00) position 18: Bad checksum '8', expected '9'", 0 },
/* 23*/ { BARCODE_GS1_128, "[00]376104250021234568", -1, " --gs1nocheck", NULL, "", 0 },
/* 24*/ { BARCODE_GS1_128, "[00]376104250021234568", -1, " --werror", NULL, "Error 261: AI (00) position 18: Bad checksum '8', expected '9'", 0 },
/* 25*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "1", "Error 155: Invalid Structured Append argument, expect \"index,count[,ID]\"", 0 },
/* 26*/ { BARCODE_AZTEC, "1", -1, " --structapp=", ",", "Error 156: Structured Append index too short", 0 },
/* 27*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "1234567890,", "Error 156: Structured Append index too long", 0 },
/* 28*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,", "Error 159: Structured Append count too short", 0 },
/* 29*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,1234567890", "Error 159: Structured Append count too long", 0 },
/* 30*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,123456789,", "Error 158: Structured Append ID too short", 0 },
/* 31*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,1234567890,", "Error 157: Structured Append count too long", 0 },
/* 32*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,123456789,123456789012345678901234567890123", "Error 158: Structured Append ID too long", 0 },
/* 33*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "123456789,123456789,12345678901234567890123456789012", "Error 701: Structured Append count out of range (2-26)", 0 },
/* 34*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "26,26,12345678901234567890123456789012", "", 0 },
/* 35*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "A,26,12345678901234567890123456789012", "Error 160: Invalid Structured Append index (digits only)", 0 },
/* 36*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "26,A,12345678901234567890123456789012", "Error 161: Invalid Structured Append count (digits only)", 0 },
/* 37*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "26,1,12345678901234567890123456789012", "Error 162: Invalid Structured Append count, must be >= 2", 0 },
/* 38*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "0,2,12345678901234567890123456789012", "Error 163: Structured Append index out of range (1-2)", 0 },
/* 39*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "3,2,12345678901234567890123456789012", "Error 163: Structured Append index out of range (1-2)", 0 },
/* 40*/ { BARCODE_AZTEC, "1", -1, " --structapp=", "2,3,12345678901234567890123456789012", "", 0 },
/* 41*/ { BARCODE_PDF417, "1", -1, " --heightperrow", "", "", 0 },
/* 42*/ { -1, NULL, -1, " -v", NULL, "Zint version ", 1 },
/* 43*/ { -1, NULL, -1, " --version", NULL, "Zint version ", 1 },
/* 44*/ { -1, NULL, -1, " -h", NULL, "Encode input data in a barcode ", 1 },
/* 45*/ { -1, NULL, -1, " -e", NULL, "3: ISO/IEC 8859-1 ", 1 },
/* 46*/ { -1, NULL, -1, " -t", NULL, "1 CODE11 ", 1 },
};
int data_size = ARRAY_SIZE(data);
int i;
@ -1066,7 +1089,11 @@ static void test_other_opts(int index, int debug) {
strcat(cmd, " 2>&1");
assert_nonnull(exec(cmd, buf, sizeof(buf) - 1, debug, i), "i:%d exec(%s) NULL\n", i, cmd);
assert_zero(strcmp(buf, data[i].expected), "i:%d buf (%s) != expected (%s) (%s)\n", i, buf, data[i].expected, cmd);
if (data[i].strstr_cmp) {
assert_nonnull(strstr(buf, data[i].expected), "i:%d strstr buf (%s) != expected (%s) (%s)\n", i, buf, data[i].expected, cmd);
} else {
assert_zero(strcmp(buf, data[i].expected), "i:%d strcmp buf (%s) != expected (%s) (%s)\n", i, buf, data[i].expected, cmd);
}
}
testFinish();

Binary file not shown.