| 1 | #include "zlib.h" |
|---|
| 2 | #include "string.h" |
|---|
| 3 | #include "stdlib.h" |
|---|
| 4 | |
|---|
| 5 | #include <stdio.h> |
|---|
| 6 | #include <stdlib.h> |
|---|
| 7 | |
|---|
| 8 | int main(int argc, char *argv[]) |
|---|
| 9 | { |
|---|
| 10 | FILE *fp = fopen(argv[1], "rb"); |
|---|
| 11 | if (argc != 2 || fp==0) |
|---|
| 12 | { |
|---|
| 13 | fprintf(stderr, "%s [filename]\n", argv[0]); |
|---|
| 14 | return -1; // ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. |
|---|
| 15 | } |
|---|
| 16 | // ÆÄÀÏ »çÀÌÁ ±¸ÇÑ´Ù. |
|---|
| 17 | fseek (fp , 0 , SEEK_END); |
|---|
| 18 | long lSize = ftell (fp); |
|---|
| 19 | rewind (fp); |
|---|
| 20 | // ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ¿© Åë°·Î º¹»çÇÑ´Ù. |
|---|
| 21 | int nMode = 0; // ¾ÐÃà¾ÈµÈ ¸ðµå |
|---|
| 22 | int nBuffSize = lSize+5; // Çì´õ(1) + ÆÄÀÏ »çÀÌÁî(4) |
|---|
| 23 | unsigned char *buff = (unsigned char*)malloc(nBuffSize); |
|---|
| 24 | buff[0] = 0; |
|---|
| 25 | buff[1] = lSize / (256*256*256); |
|---|
| 26 | buff[2] = lSize / (256*256); |
|---|
| 27 | buff[3] = lSize / (256); |
|---|
| 28 | buff[4] = lSize % (256); |
|---|
| 29 | fread (&buff[5], 1, lSize, fp); |
|---|
| 30 | fclose(fp); |
|---|
| 31 | |
|---|
| 32 | // ¾ÐÃà ¹öÆÛ Áغñ |
|---|
| 33 | if (lSize > 20*1000000) // 20¹ÙÀÌÆ®º¸´Ù´Â ÆÄÀÏ »çÀÌÁî°¡ Å« °æ¿ì¿¡ ¼öÇà |
|---|
| 34 | { |
|---|
| 35 | long compressed_Size = lSize-9; |
|---|
| 36 | unsigned char *compressed_buff = (unsigned char*)malloc(compressed_Size); |
|---|
| 37 | if (compress(compressed_buff, &compressed_Size, &buff[5], lSize) == 0) // ¾ÐÃ༺°ø |
|---|
| 38 | { |
|---|
| 39 | nBuffSize = compressed_Size + 9; |
|---|
| 40 | buff[0] = nMode = 1; |
|---|
| 41 | buff[5] = compressed_Size / (256*256*256); |
|---|
| 42 | buff[6] = compressed_Size / (256*256); |
|---|
| 43 | buff[7] = compressed_Size / (256); |
|---|
| 44 | buff[8] = compressed_Size % (256); |
|---|
| 45 | memcpy(&buff[9], compressed_buff, compressed_Size); |
|---|
| 46 | } |
|---|
| 47 | free(compressed_buff); |
|---|
| 48 | } |
|---|
| 49 | // ¹è¿ À̸§À» °áÁ¤ÇÑ´Ù. |
|---|
| 50 | int nNameStart = 0; |
|---|
| 51 | int i = 0; |
|---|
| 52 | int nStrLen = (int)strlen(argv[1]); |
|---|
| 53 | for (i = 0 ; i < nStrLen; i++) |
|---|
| 54 | { |
|---|
| 55 | if (argv[1][i] == '/') nNameStart =i+1; |
|---|
| 56 | if (argv[1][i] == '.') argv[1][i] = 0; |
|---|
| 57 | } |
|---|
| 58 | printf("unsigned char %s[%d] = {", &argv[1][nNameStart], nBuffSize); |
|---|
| 59 | // À̹ÌÁö ¹è¿À» Àû´Â´Ù. |
|---|
| 60 | for (i = 0; i < nBuffSize; i++) |
|---|
| 61 | { |
|---|
| 62 | if (i%8 == 0) printf("\n\t"); |
|---|
| 63 | printf("0x%02X, ",buff[i]); |
|---|
| 64 | } |
|---|
| 65 | // À̹ÌÁö ¹è¿ ´Ý±â |
|---|
| 66 | printf("\n};\n"); |
|---|
| 67 | free(buff); |
|---|
| 68 | return 0; |
|---|
| 69 | } |
|---|