#include "zlib.h" #include "string.h" #include "stdlib.h" #include #include int main(int argc, char *argv[]) { FILE *fp = fopen(argv[1], "rb"); if (argc != 2 || fp==0) { fprintf(stderr, "%s [filename]\n", argv[0]); return -1; // ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. } // ÆÄÀÏ »çÀÌÁ ±¸ÇÑ´Ù. fseek (fp , 0 , SEEK_END); long lSize = ftell (fp); rewind (fp); // ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ¿© Åë°·Î º¹»çÇÑ´Ù. int nMode = 0; // ¾ÐÃà¾ÈµÈ ¸ðµå int nBuffSize = lSize+5; // Çì´õ(1) + ÆÄÀÏ »çÀÌÁî(4) unsigned char *buff = (unsigned char*)malloc(nBuffSize); buff[0] = 0; buff[1] = lSize / (256*256*256); buff[2] = lSize / (256*256); buff[3] = lSize / (256); buff[4] = lSize % (256); fread (&buff[5], 1, lSize, fp); fclose(fp); // ¾ÐÃà ¹öÆÛ Áغñ if (lSize > 20*1000000) // 20¹ÙÀÌÆ®º¸´Ù´Â ÆÄÀÏ »çÀÌÁî°¡ Å« °æ¿ì¿¡ ¼öÇà { long compressed_Size = lSize-9; unsigned char *compressed_buff = (unsigned char*)malloc(compressed_Size); if (compress(compressed_buff, &compressed_Size, &buff[5], lSize) == 0) // ¾ÐÃ༺°ø { nBuffSize = compressed_Size + 9; buff[0] = nMode = 1; buff[5] = compressed_Size / (256*256*256); buff[6] = compressed_Size / (256*256); buff[7] = compressed_Size / (256); buff[8] = compressed_Size % (256); memcpy(&buff[9], compressed_buff, compressed_Size); } free(compressed_buff); } // ¹è¿­ À̸§À» °áÁ¤ÇÑ´Ù. int nNameStart = 0; int i = 0; int nStrLen = (int)strlen(argv[1]); for (i = 0 ; i < nStrLen; i++) { if (argv[1][i] == '/') nNameStart =i+1; if (argv[1][i] == '.') argv[1][i] = 0; } printf("unsigned char %s[%d] = {", &argv[1][nNameStart], nBuffSize); // À̹ÌÁö ¹è¿­À» Àû´Â´Ù. for (i = 0; i < nBuffSize; i++) { if (i%8 == 0) printf("\n\t"); printf("0x%02X, ",buff[i]); } // À̹ÌÁö ¹è¿­ ´Ý±â printf("\n};\n"); free(buff); return 0; }