int main(int argc, char **argv) { int opt, lindex = -1; char *outfile = NULL; unsigned char *intext = NULL; int length = 0; while((opt = getopt_long(argc, argv, optstring, options, &lindex)) != -1) { switch(opt) { case 'h': if(lindex == 0) { usage(1, 1); } else { usage(1, 0); } exit(EXIT_SUCCESS); break; case 'o': outfile = optarg; break; case 's': size = atoi(optarg); if(size <= 0) { fprintf(stderr, "Invalid size: %d\n", size); exit(EXIT_FAILURE); } break; case 'v': version = atoi(optarg); if(version < 0) { fprintf(stderr, "Invalid version: %d\n", version); exit(EXIT_FAILURE); } break; case 'l': switch(*optarg) { case 'l': case 'L': level = QR_ECLEVEL_L; break; case 'm': case 'M': level = QR_ECLEVEL_M; break; case 'q': case 'Q': level = QR_ECLEVEL_Q; break; case 'h': case 'H': level = QR_ECLEVEL_H; break; default: fprintf(stderr, "Invalid level: %s\n", optarg); exit(EXIT_FAILURE); break; } break; case 'm': margin = atoi(optarg); if(margin < 0) { fprintf(stderr, "Invalid margin: %d\n", margin); exit(EXIT_FAILURE); } break; case 'd': dpi = atoi(optarg); if( dpi < 0 ) { fprintf(stderr, "Invalid DPI: %d\n", dpi); exit(EXIT_FAILURE); } break; case 't': if(strcasecmp(optarg, "png") == 0) { image_type = PNG_TYPE; } else if(strcasecmp(optarg, "eps") == 0) { image_type = EPS_TYPE; } else if(strcasecmp(optarg, "svg") == 0) { image_type = SVG_TYPE; } else if(strcasecmp(optarg, "ansi") == 0) { image_type = ANSI_TYPE; } else if(strcasecmp(optarg, "ansi256") == 0) { image_type = ANSI256_TYPE; } else if(strcasecmp(optarg, "asciii") == 0) { image_type = ASCIIi_TYPE; } else if(strcasecmp(optarg, "ascii") == 0) { image_type = ASCII_TYPE; } else if(strcasecmp(optarg, "utf8") == 0) { image_type = UTF8_TYPE; } else if(strcasecmp(optarg, "ansiutf8") == 0) { image_type = ANSIUTF8_TYPE; } else { fprintf(stderr, "Invalid image type: %s\n", optarg); exit(EXIT_FAILURE); } break; case 'S': structured = 1; break; case 'k': hint = QR_MODE_KANJI; break; case 'c': casesensitive = 1; break; case 'i': casesensitive = 0; break; case '8': eightbit = 1; break; case 'M': micro = 1; break; case 'f': if(color_set(fg_color, optarg)) { fprintf(stderr, "Invalid foreground color value.\n"); exit(EXIT_FAILURE); } break; case 'b': if(color_set(bg_color, optarg)) { fprintf(stderr, "Invalid background color value.\n"); exit(EXIT_FAILURE); } break; case 'V': usage(0, 0); exit(EXIT_SUCCESS); break; case 0: break; default: fprintf(stderr, "Try `qrencode --help' for more information.\n"); exit(EXIT_FAILURE); break; } } if(argc == 1) { usage(1, 0); exit(EXIT_SUCCESS); } if(outfile == NULL && image_type == PNG_TYPE) { fprintf(stderr, "No output filename is given.\n"); exit(EXIT_FAILURE); } if(optind < argc) { intext = (unsigned char *)argv[optind]; length = strlen((char *)intext); } if(intext == NULL) { intext = readStdin(&length); } if(micro && version > MQRSPEC_VERSION_MAX) { fprintf(stderr, "Version should be less or equal to %d.\n", MQRSPEC_VERSION_MAX); exit(EXIT_FAILURE); } else if(!micro && version > QRSPEC_VERSION_MAX) { fprintf(stderr, "Version should be less or equal to %d.\n", QRSPEC_VERSION_MAX); exit(EXIT_FAILURE); } if(margin < 0) { if(micro) { margin = 2; } else { margin = 4; } } if(micro) { if(version == 0) { fprintf(stderr, "Version must be specified to encode a Micro QR Code symbol.\n"); exit(EXIT_FAILURE); } if(structured) { fprintf(stderr, "Micro QR Code does not support structured symbols.\n"); exit(EXIT_FAILURE); } } if(structured) { if(version == 0) { fprintf(stderr, "Version must be specified to encode structured symbols.\n"); exit(EXIT_FAILURE); } qrencodeStructured(intext, length, outfile); } else { qrencode(intext, length, outfile); } return 0; }
int main(int argc, char **argv) { int opt, lindex = -1; char *outfile = NULL; char *intext = NULL; while((opt = getopt_long(argc, argv, optstring, options, &lindex)) != -1) { switch(opt) { case 'h': if(lindex == 0) { usage(1, 1); } else { usage(1, 0); } exit(0); break; case 'o': outfile = optarg; break; case 's': size = atoi(optarg); if(size <= 0) { fprintf(stderr, "Invalid size: %d\n", size); exit(EXIT_FAILURE); } break; case 'v': version = atoi(optarg); if(version < 0) { fprintf(stderr, "Invalid version: %d\n", version); exit(EXIT_FAILURE); } break; case 'l': switch(*optarg) { case 'l': case 'L': level = QR_ECLEVEL_L; break; case 'm': case 'M': level = QR_ECLEVEL_M; break; case 'q': case 'Q': level = QR_ECLEVEL_Q; break; case 'h': case 'H': level = QR_ECLEVEL_H; break; default: fprintf(stderr, "Invalid level: %s\n", optarg); exit(EXIT_FAILURE); break; } break; case 'm': margin = atoi(optarg); if(margin < 0) { fprintf(stderr, "Invalid margin: %d\n", margin); exit(EXIT_FAILURE); } break; case 'S': structured = 1; case 'k': hint = QR_MODE_KANJI; break; case 'c': casesensitive = 1; break; case 'i': casesensitive = 0; break; case '8': eightbit = 1; break; case 'V': usage(0, 0); exit(0); break; default: fprintf(stderr, "Try `qrencode --help' for more information.\n"); exit(EXIT_FAILURE); break; } } if(argc == 1) { usage(1, 0); exit(0); } if(outfile == NULL) { fprintf(stderr, "No output filename is given.\n"); exit(EXIT_FAILURE); } if(optind < argc) { intext = argv[optind]; } if(intext == NULL) { intext = readStdin(); } if(structured) { if(version == 0) { fprintf(stderr, "Version must be specified to encode structured symbols.\n"); exit(EXIT_FAILURE); } qrencodeStructured(intext, outfile); } else { qrencode(intext, outfile); } return 0; }