Beispiel #1
0
/* ----------------------------------------------------------------------------*/
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;
}
Beispiel #2
0
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;
}