@@ -71,15 +71,39 @@ int main(int argc, char *argv[]){
7171 char * outbuf ;
7272 if (strcmp (argv [1 ], "bmp" ) == 0 ){
7373 if (argc > 3 ){
74- if (strcmp (argv [3 ], "-l" ) == 0 ){
75- outbuf = bmp_js_v (buf , filesize );
76- out = fopen (bmp_filename (argv [2 ], getlen (argv [2 ])), "wb" );
77- for (int i = 0 ; i < filesize + BMP_JS_HEADER_V ; i ++ ){
78- fprintf (out , "%c" , outbuf [i ]);
74+ if (argc > 4 ){
75+ FILE * im = fopen (argv [4 ], "rb" );
76+ if (im ){
77+ fseek (im , 0 , SEEK_END );
78+ int imsize = ftell (im );
79+ rewind (im );
80+ char * imbuf = (char * )malloc (imsize * sizeof (char ));
81+ fread (imbuf , 1 , imsize , im );
82+ fclose (im );
83+ outbuf = bmp_js_i (buf , filesize , imbuf , imsize );
84+ out = fopen (bmp_filename (argv [2 ], getlen (argv [2 ])), "wb" );
85+ for (int i = 0 ; i < (filesize + imsize + BMP_JS_HEADER_I ); i ++ ){
86+ fprintf (out , "%c" , outbuf [i ]);
87+ }
88+ free (imbuf );
89+ }else {
90+ _help (argv [4 ], 3 );
91+ return 2 ;
7992 }
93+ }else if (strcmp (argv [3 ] , "-i" ) == 0 ){
94+ _help (argv [3 ], 2 );
95+ return 2 ;
8096 }else {
81- _help (argv [3 ], 1 );
82- return 3 ;
97+ if (strcmp (argv [3 ], "-l" ) == 0 ){
98+ outbuf = bmp_js_v (buf , filesize );
99+ out = fopen (bmp_filename (argv [2 ], getlen (argv [2 ])), "wb" );
100+ for (int i = 0 ; i < filesize + BMP_JS_HEADER_V ; i ++ ){
101+ fprintf (out , "%c" , outbuf [i ]);
102+ }
103+ }else {
104+ _help (argv [3 ], 1 );
105+ return 3 ;
106+ }
83107 }
84108 }else {
85109 outbuf = bmp_js (buf , filesize );
0 commit comments