/* ----------------------------------------------------------------------------*/ int main(int argc, char **argv) { int c; int8_t result = 0; bool printLog = false; const char *argument = "ho:l:i:"; const char *outputFile = NULL; const char *inputFile = NULL; const char *logFile = NULL; FILE *input = stdout; FILE *output = stdin; FILE *logput = stdout; while((c = getopt(argc, argv, argument)) != -1) { switch(c) { case 'i': inputFile = optarg; break; case 'o': outputFile = optarg; break; case 'l': printLog = true; logFile = optarg; break; case 'h': print_help(); return 0; case '?': if(optopt == 'i' || optopt == 'o' || optopt == 'l') { fprintf(stderr, "CHYBA: Prepinac -%c vyzaduje argument.\n", optopt); return -1; } else if(isprint(optopt)) { fprintf(stderr, "CHYBA: Neznamy prepinac'-%c'.\n", optopt); return -1; } else { fprintf(stderr, "CHYBA: Neznamy znak '\\x%x'.\n", optopt); return -1; } break; default: fprintf(stderr,"CHYBA: Neznama chyba\n"); break; } } if(outputFile != NULL) { // otevreni vystupniho obrazku output = fopen(outputFile, "wb"); if(!output) { fprintf(stderr, "CHYBA: Nepovedlo se otevrit vystupni obrazek!\n"); result = -1; } } if(inputFile != NULL) { // otevreni vstupniho obrazku input = fopen(inputFile, "rb"); if(!input) { fprintf(stderr, "CHYBA: Nepovedlo se otevrit vstupni obtrazek!\n"); result = -1; } } //------------------------------ prace s obrazkem -----------------------------// if(result != -1) { tGIF2BMP gif2bmpSt; if((result = gif2bmp(&gif2bmpSt, input, output)) != -1 && printLog == true) { if(logFile != NULL) { // otevreni vstupniho obrazku logput = fopen(logFile, "w"); if(!logput) { fprintf(stderr, "CHYBA: Nepovedlo se otevrit vystupni soubor pro log!\n"); result = -1; } } if(result != -1) { fprintf(logput, "login = xsendl00\nuncodedSize = %lld\ncodedSize = %lld\n", gif2bmpSt.gifSize, gif2bmpSt.bmpSize); } } } //-----------------------------------------------------------------------------// fclose(output); // uzavreni vystupniho obrazku fclose(input); // uzavreni vstupniho obrazku if(printLog != false) { fclose(logput); // uzavreni vystupni zpravy } fprintf(stderr,"Jsme na konci!\n"); return result; }
int main(int argc, char *argv[]) { FILE *in = stdin; FILE *out = stdout; FILE *log_out = NULL; char ch; bool print = false; bool rgb = false; bool test = false; bool log = false; int ret = 0; tGIF *img = NULL; while ((ch = getopt(argc, argv, "i:o:l:ptrh")) != EOF) { switch (ch) { case 'i': if ((in = fopen(optarg, "rb")) == NULL) { perror("fopen()"); return 2; } break; case 'o': if ((out = fopen(optarg, "wb")) == NULL) { perror("fopen()"); return 2; } break; case 'l': log = true; if ((log_out = fopen(optarg, "w")) == NULL) { perror("fopen()"); return 2; } break; case 'p': print = true; break; case 't': test = true; break; case 'r': rgb = true; break; case 'h': usage(argv[0]); return 0; default: fprintf(stderr, "Unknown option: '%s'\n", optarg); return 1; } } argc -= optind; argv += optind; if (print) ret = gif_print_info(in); else if (rgb) // save RGB values for each pixel ret = gif_save_rgb(in, out); else if (test) { // load image into memory if ((img = gif_load(in)) == NULL) ret = 1; // if we got here the we've read the image successfully gif_unload(img); } else { tGIF2BMP gifToBmp; if (gif2bmp(&gifToBmp, in, out) != 0) ret = 1; if (log) { fprintf(log_out, "login = %s\n", LOGIN); fprintf(log_out, "uncodedSize = %ld\n", gifToBmp.bmpSize); fprintf(log_out, "codedSize = %ld\n", gifToBmp.gifSize); } } SAVE_FCLOSE(in); SAVE_FCLOSE(out); SAVE_FCLOSE(log_out); return ret; }