Rev 8430 | Rev 8542 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8430 | Rev 8466 | ||
---|---|---|---|
1 | /* Copyright (C) 2019-2020 Logaev Maxim (turbocat2001), GPLv3 */ |
1 | /* Copyright (C) 2019-2020 Logaev Maxim (turbocat2001), GPLv3 */ |
2 | 2 | ||
3 | #include |
3 | #include |
4 | #include |
4 | #include |
5 | #include |
5 | #include |
6 | #include |
6 | #include |
7 | #include |
7 | #include |
8 | #include |
- | |
9 | #include |
8 | #include |
10 | #include |
9 | #include |
11 | #include |
10 | #include |
12 | #include |
11 | #include |
- | 12 | #include |
|
13 | 13 | ||
14 | #define TRUE 1; |
14 | #define TRUE 1; |
15 | #define FALSE 0; |
15 | #define FALSE 0; |
16 | #define MAX_HASH_LEN 65 // ªá¨¬ «ì ï ¤«¨ áâப¨ |
16 | #define MAX_HASH_LEN 65 // ªá¨¬ «ì ï ¤«¨ áâப¨ |
17 | #define WINDOW_W 665 |
17 | #define WINDOW_W 665 |
18 | #define VERSION "%s - thashview 2.5" |
18 | #define VERSION "%s - thashview 2.6" |
- | 19 | #define EDIT_TEXT_SIZE 0x10000000 |
|
19 | 20 | ||
20 | struct kolibri_system_colors sys_color_table; |
21 | struct kolibri_system_colors sys_color_table; |
21 | - | ||
22 | char hex[]={"abcdefABCDEF1234567890"}; //«ï ¯à®¢¥àª¨ ¢¢®¤¨¬ëå ᨬ¢®«®¢ |
22 | |
23 | char hash_str_md5[MAX_HASH_LEN]= "Click the 'MD5:' button to show the md5-checksum! "; //뢮¤ MD5 |
23 | char hash_str_md5[MAX_HASH_LEN]= "Click the 'MD5:' button to show the md5-checksum! "; //뢮¤ MD5 |
24 | char hash_str_sha1[MAX_HASH_LEN]= "Click the 'SHA1:' button to show the sha1-checksum! "; //뢮¤ SHA1 |
24 | char hash_str_sha1[MAX_HASH_LEN]= "Click the 'SHA1:' button to show the sha1-checksum! "; //뢮¤ SHA1 |
25 | char hash_str_sha256[MAX_HASH_LEN]="Click the 'SHA256:' button to show the sha256-checksum!"; //뢮¤ SHA256 |
25 | char hash_str_sha256[MAX_HASH_LEN]="Click the 'SHA256:' button to show the sha256-checksum!"; //뢮¤ SHA256 |
26 | char edit_box_buff[MAX_HASH_LEN]; // ãää¥à ¤«ï ¢¢®¤ |
26 | char edit_box_buff[MAX_HASH_LEN]; // ãää¥à ¤«ï ¢¢®¤ |
27 | char *filename; // ¬ï ®¡à ¡ âë¢ ¥¬®£® ä ©« |
27 | char *filename; // ¬ï ®¡à ¡ âë¢ ¥¬®£® ä ©« |
28 | char *title; // £®«®¢®ª ®ª |
28 | char *title; // £®«®¢®ª ®ª |
29 | 29 | ||
30 | enum MYCOLORS // ¢¥â |
30 | enum MYCOLORS // ¢¥â |
31 | { |
31 | { |
32 | GREEN = 0x00067D06, |
32 | GREEN = 0x067D06 | EDIT_TEXT_SIZE, |
33 | RED = 0x00FF0000, |
33 | RED = 0xFF0000 | EDIT_TEXT_SIZE, |
34 | BLACK = 0x00000000, |
34 | BLACK = 0x000000 | EDIT_TEXT_SIZE, |
35 | WHITE = 0xFFFFFFFF, |
35 | WHITE = 0xFFFFFF, |
36 | GREY = 0x00DDD7CF |
36 | GREY = 0x919191 |
37 | }; |
37 | }; |
38 | 38 | ||
39 | unsigned int str_pos=0; // ®§¨æ¨ï ªãàá®à ¯à¨ ¯¥ç ⨠¢ áâப¥ ¢¢®¤ |
39 | edit_box hash_edit_box={WINDOW_W-140,10,121,WHITE,0,0,GREY,EDIT_TEXT_SIZE, MAX_HASH_LEN-1, edit_box_buff,NULL,ed_focus}; // ®§¤ ñ¬ áâàãªâãàã edit_box |
40 | int md5_flag=0, sha1_flag=0, sha256_flag=0; // « £¨ ¯®ª §ë¢ î騥 ¡ë« «¨ 㦥 à ááç¨â ª®â஫ì ï á㬬 ¢ äãªæ¨¨ check_sum() |
- | |
41 | int edit_box_text_color=BLACK; // § ç «ìë© æ¢¥â ⥪áâ ¢ áâப¥ ¢¢®¤ |
- | |
42 | - | ||
43 | enum MYKEYS // ®¤ë ª« ¢¨è |
- | |
44 | { |
- | |
45 | CTRL_V=22, |
- | |
46 | BACKSPACE=8 |
- | |
47 | }; |
40 | int md5_flag=0, sha1_flag=0, sha256_flag=0; // « £¨ ¯®ª §ë¢ î騥 ¡ë« «¨ 㦥 à ááç¨â ª®â஫ì ï á㬬 ¢ äãªæ¨¨ check_sum() |
48 | 41 | ||
49 | enum BUTTONS // ®¯ª¨ ¢ ¨âà¥ä¥©á¥ |
42 | enum BUTTONS // ®¯ª¨ ¢ ¨âà¥ä¥©á¥ |
50 | { |
43 | { |
51 | BTN_QUIT=1, //ë室 |
44 | BTN_QUIT=1, //ë室 |
52 | BTN_MD5 = 10, // ááç¨â âì md5-ª®â஫ìãî á㬬ã |
45 | BTN_MD5 = 10, // ááç¨â âì md5-ª®â஫ìãî á㬬ã |
53 | BTN_SHA1 = 20, // ááç¨â âì sha1-ª®â஫ìãî á㬬ã |
46 | BTN_SHA1 = 20, // ááç¨â âì sha1-ª®â஫ìãî á㬬ã |
54 | BTN_SHA256 = 30, // ááç¨â âì sha256-ª®â஫ìãî á㬬ã |
47 | BTN_SHA256 = 30, // ááç¨â âì sha256-ª®â஫ìãî á㬬ã |
55 | BTN_COPY_MD5= 11, //ª®¯¨à®¢ âì ¢ ¡ãää¥à ®¡¬¥ |
48 | BTN_COPY_MD5= 11, //ª®¯¨à®¢ âì ¢ ¡ãää¥à ®¡¬¥ |
56 | BTN_COPY_SHA1= 21, |
49 | BTN_COPY_SHA1= 21, |
57 | BTN_COPY_SHA256=31, |
50 | BTN_COPY_SHA256=31, |
58 | BTN_CMP=40, //à ¢¨âì edit_box ¨ ª®â஫ìãî á㬬ã |
51 | BTN_CMP=40, //à ¢¨âì edit_box ¨ ª®â஫ìãî á㬬ã |
59 | BTN_PASTE=50 //áâ ¢¨âì ¢ edit_box(¯®ª ¢ à §à ¡®âª¥) |
52 | BTN_PASTE=50 //áâ ¢¨âì ¢ edit_box(¯®ª ¢ à §à ¡®âª¥) |
60 | }; |
53 | }; |
61 | 54 | ||
62 | void notify_show(char *text) |
55 | void notify_show(char *text) |
63 | { |
56 | { |
64 | start_app("/sys/@notify", text); |
57 | start_app("/sys/@notify", text); |
65 | } |
58 | } |
66 | 59 | ||
67 | void* safe_malloc(size_t size) // ¥§®¯ áë© malloc. ®ª §ë¢ ¥â 㢥¤®¬«¥¨¥ ®¡ ®è¨¡ª¥ ¨ § ªàë¢ ¥â ¯à®£à ¬¬ã ¥á«¨ ¯ ¬ïâì ¥ ¡ë« ¢ë¤¥«¥ |
60 | void* safe_malloc(size_t size) // ¥§®¯ áë© malloc. ®ª §ë¢ ¥â 㢥¤®¬«¥¨¥ ®¡ ®è¨¡ª¥ ¨ § ªàë¢ ¥â ¯à®£à ¬¬ã ¥á«¨ ¯ ¬ïâì ¥ ¡ë« ¢ë¤¥«¥ |
68 | { |
61 | { |
69 | void *p=malloc(size); |
62 | void *p=malloc(size); |
70 | if(p==NULL) |
63 | if(p==NULL) |
71 | { |
64 | { |
72 | notify_show("'Memory allocation error!' -E"); |
65 | notify_show("'Memory allocation error!' -E"); |
73 | exit(0); |
66 | exit(0); |
74 | } |
67 | } |
75 | else |
68 | else |
76 | { |
69 | { |
77 | return p; |
70 | return p; |
78 | } |
71 | } |
79 | } |
72 | } |
80 | 73 | ||
81 | void global_var_init(unsigned int size) // ¨æ¨ «¨§¨àãîâáï £«®¡ «ìë¥ ¬ áᨢë |
74 | void global_var_init(unsigned int size) // ¨æ¨ «¨§¨àãîâáï £«®¡ «ìë¥ ¬ áᨢë |
82 | { |
75 | { |
83 | filename=safe_malloc(size); |
76 | filename=safe_malloc(size); |
84 | title=safe_malloc(size+20); |
77 | title=safe_malloc(size+20); |
85 | } |
78 | } |
86 | 79 | ||
87 | /* ãªæ¨¨ £¥¥à 樨 ª®â஫ìëå á㬬 */ |
80 | /* ãªæ¨¨ £¥¥à 樨 ª®â஫ìëå á㬬 */ |
88 | void md5_hash(FILE* input, BYTE* hash ) |
81 | void md5_hash(FILE* input, BYTE* hash ) |
89 | { |
82 | { |
90 | int input_size; |
83 | int input_size; |
91 | BYTE *temp_buffer; |
84 | BYTE *temp_buffer; |
92 | temp_buffer=safe_malloc(1024); |
85 | temp_buffer=safe_malloc(1024); |
93 | MD5_CTX ctx; |
86 | MD5_CTX ctx; |
94 | md5_init(&ctx); |
87 | md5_init(&ctx); |
95 | while((input_size = fread(temp_buffer, 1, 1024, input)) > 0){ |
88 | while((input_size = fread(temp_buffer, 1, 1024, input)) > 0){ |
96 | md5_update(&ctx, temp_buffer, input_size); |
89 | md5_update(&ctx, temp_buffer, input_size); |
97 | } |
90 | } |
98 | md5_final(&ctx, hash); |
91 | md5_final(&ctx, hash); |
99 | free(temp_buffer); |
92 | free(temp_buffer); |
100 | } |
93 | } |
101 | 94 | ||
102 | void sha1_hash(FILE* input, BYTE* hash ) |
95 | void sha1_hash(FILE* input, BYTE* hash ) |
103 | { |
96 | { |
104 | int input_size; |
97 | int input_size; |
105 | BYTE *buffer; |
98 | BYTE *buffer; |
106 | buffer=safe_malloc(1024); |
99 | buffer=safe_malloc(1024); |
107 | SHA1_CTX ctx; |
100 | SHA1_CTX ctx; |
108 | sha1_init(&ctx); |
101 | sha1_init(&ctx); |
109 | while((input_size = fread(buffer, 1, 1024, input)) > 0){ |
102 | while((input_size = fread(buffer, 1, 1024, input)) > 0){ |
110 | sha1_update(&ctx, buffer, input_size); |
103 | sha1_update(&ctx, buffer, input_size); |
111 | } |
104 | } |
112 | sha1_final(&ctx, hash); |
105 | sha1_final(&ctx, hash); |
113 | free(buffer); |
106 | free(buffer); |
114 | } |
107 | } |
115 | 108 | ||
116 | void sha256_hash(FILE* input, BYTE* hash ) |
109 | void sha256_hash(FILE* input, BYTE* hash ) |
117 | { |
110 | { |
118 | int input_size; |
111 | int input_size; |
119 | BYTE *buffer; |
112 | BYTE *buffer; |
120 | buffer=safe_malloc(1024); |
113 | buffer=safe_malloc(1024); |
121 | SHA256_CTX ctx; |
114 | SHA256_CTX ctx; |
122 | sha256_init(&ctx); |
115 | sha256_init(&ctx); |
123 | while((input_size = fread(buffer, 1, 1024, input)) > 0){ |
116 | while((input_size = fread(buffer, 1, 1024, input)) > 0){ |
124 | sha256_update(&ctx, buffer, input_size); |
117 | sha256_update(&ctx, buffer, input_size); |
125 | } |
118 | } |
126 | sha256_final(&ctx, hash); |
119 | sha256_final(&ctx, hash); |
127 | free(buffer); |
120 | free(buffer); |
128 | } |
121 | } |
129 | 122 | ||
130 | 123 | ||
131 | BYTE* check_sum(int alg) // ¥¥à¨à㥬 ª®â஫ìë¥ áã¬¬ë ¨á¯®«ì§ãï ®¤¨ ¨§ «£®à¨â¬®¢ |
124 | BYTE* check_sum(int alg) // ¥¥à¨à㥬 ª®â஫ìë¥ áã¬¬ë ¨á¯®«ì§ãï ®¤¨ ¨§ «£®à¨â¬®¢ |
132 | { |
125 | { |
133 | FILE* input_file; |
126 | FILE* input_file; |
134 | BYTE *hash; |
127 | BYTE *hash; |
135 | input_file=fopen(filename,"rb"); |
128 | input_file=fopen(filename,"rb"); |
136 | hash = safe_malloc(alg); |
129 | hash = safe_malloc(alg); |
137 | switch (alg) |
130 | switch (alg) |
138 | { |
131 | { |
139 | case MD5_BLOCK_SIZE : |
132 | case MD5_BLOCK_SIZE : |
140 | md5_hash(input_file, hash); |
133 | md5_hash(input_file, hash); |
141 | md5_flag=1; |
134 | md5_flag=1; |
142 | break; |
135 | break; |
143 | 136 | ||
144 | case SHA1_BLOCK_SIZE : |
137 | case SHA1_BLOCK_SIZE : |
145 | sha1_hash(input_file, hash); |
138 | sha1_hash(input_file, hash); |
146 | sha1_flag=1; |
139 | sha1_flag=1; |
147 | break; |
140 | break; |
148 | 141 | ||
149 | case SHA256_BLOCK_SIZE : |
142 | case SHA256_BLOCK_SIZE : |
150 | sha256_hash(input_file, hash); |
143 | sha256_hash(input_file, hash); |
151 | sha256_flag=1; |
144 | sha256_flag=1; |
152 | break; |
145 | break; |
153 | } |
146 | } |
154 | fclose(input_file); |
147 | fclose(input_file); |
155 | return hash; |
148 | return hash; |
156 | } |
149 | } |
157 | 150 | ||
158 | void sprint_hash(BYTE *hash, char* hash_str, int hash_size) //८¡à 㥬 ¤¢®¨çë¥ ¤ ë¥ ¨§ hash ¢ áâபã hash_str |
151 | void sprint_hash(BYTE *hash, char* hash_str, int hash_size) //८¡à 㥬 ¤¢®¨çë¥ ¤ ë¥ ¨§ hash ¢ áâபã hash_str |
159 | { |
152 | { |
160 | char block[3]; |
153 | char block[3]; |
161 | memset(hash_str, 0, MAX_HASH_LEN); // ç¨é ¥¬ áâப㠤«ï strcat |
154 | memset(hash_str, 0, MAX_HASH_LEN); // ç¨é ¥¬ áâப㠤«ï strcat |
162 | for(int i=0; i |
155 | for(int i=0; i |
163 | { |
156 | { |
164 | sprintf(block,"%02x", hash[i]); |
157 | sprintf(block,"%02x", hash[i]); |
165 | strcat(hash_str,block); |
158 | strcat(hash_str,block); |
166 | } |
159 | } |
167 | free(hash); |
160 | free(hash); |
168 | } |
161 | } |
169 | 162 | ||
170 | void redraw_window() //¨á㥬 ®ª® |
163 | void redraw_window() //¨á㥬 ®ª® |
171 | { |
164 | { |
172 | sprintf(title,VERSION, filename); // áâ ¢«¨¢ ¥¬ § £®«®¢®ª ®ª |
165 | sprintf(title,VERSION, filename); // áâ ¢«¨¢ ¥¬ § £®«®¢®ª ®ª |
173 | pos_t win_pos = get_mouse_pos(0); // ®«ãç ¥¬ ª®®à¤¨ âë ªãàá®à |
166 | pos_t win_pos = get_mouse_pos(0); // ®«ãç ¥¬ ª®®à¤¨ âë ªãàá®à |
174 | begin_draw(); // ç¨ ¥¬ à¨á®¢ ¨¥ ¨â¥à䥩á ) |
167 | begin_draw(); // ç¨ ¥¬ à¨á®¢ ¨¥ ¨â¥à䥩á ) |
175 | sys_create_window(win_pos.x, win_pos.y, WINDOW_W, 150, title, sys_color_table.work_area, 0x14); // ®§¤ ñ¬ ®ª®. |
168 | sys_create_window(win_pos.x, win_pos.y, WINDOW_W, 150, title, sys_color_table.work_area, 0x14); // ®§¤ ñ¬ ®ª®. |
176 | - | ||
177 | draw_bar(10, 121, 525,20, WHITE); // ®§¤ ñ¬ ¯àאַ㣮«ì¨ª ¤«ï ¯®«ï ¢¢®¤ |
- | |
178 | draw_text_sys(edit_box_buff,15, 125, 0, 0x90000000| edit_box_text_color); // 뢮¤¨¬ ⥪áâ ¨§ ¡ãää¥à ¢¢®¤ |
169 | |
179 | draw_text_sys("|",10+(8*str_pos),125,0,0x90000000 | BLACK); |
170 | edit_box_draw(&hash_edit_box); // ¨á㥬 edit_box |
180 | 171 | ||
181 | define_button((10 << 16) + 60, (30 << 16) + 20, BTN_MD5, GREEN); // ¯à¥¤¥«ï¥¬ ª®¯ªã md5 |
172 | define_button(X_W(10,60), Y_H(30,20), BTN_MD5, GREEN); // ¯à¥¤¥«ï¥¬ ª®¯ªã md5 |
182 | define_button((10 << 16) + 60, (60 << 16) + 20, BTN_SHA1, GREEN);// ¯à¥¤¥«ï¥¬ ª®¯ªã sha1 |
173 | define_button(X_W(10,60), Y_H(60,20), BTN_SHA1, GREEN);// ¯à¥¤¥«ï¥¬ ª®¯ªã sha1 |
183 | define_button((10 << 16) + 60, (90 << 16) + 20, BTN_SHA256, GREEN);// ¯à¥¤¥«ï¥¬ ª®¯ªã sha256 |
174 | define_button(X_W(10,60), Y_H(90,20), BTN_SHA256, GREEN);// ¯à¥¤¥«ï¥¬ ª®¯ªã sha256 |
184 | 175 | ||
185 | draw_text_sys("MD5:", 15, 34, 0, 0x90000000 | sys_color_table.work_button_text); // ¨é¥¬ ⥪áâ ª®¯ª å |
176 | draw_text_sys("MD5:", 15, 34, 0, 0x90000000 | sys_color_table.work_button_text); // ¨é¥¬ ⥪áâ ª®¯ª å |
186 | draw_text_sys("SHA1:", 15, 64, 0, 0x90000000 | sys_color_table.work_button_text); |
177 | draw_text_sys("SHA1:", 15, 64, 0, 0x90000000 | sys_color_table.work_button_text); |
187 | draw_text_sys("SHA256:", 15,94, 0, 0x90000000 | sys_color_table.work_button_text); |
178 | draw_text_sys("SHA256:", 15,94, 0, 0x90000000 | sys_color_table.work_button_text); |
188 | 179 | ||
189 | draw_text_sys(hash_str_md5, 80, 34, 0, 0x90000000 | sys_color_table.work_text); // 뢮¤¨¬ ª®â஫ìë¥ áã¬¬ë ¢ ®ª® |
180 | draw_text_sys(hash_str_md5, 80, 34, 0, 0x90000000 | sys_color_table.work_text); // 뢮¤¨¬ ª®â஫ìë¥ áã¬¬ë ¢ ®ª® |
190 | draw_text_sys(hash_str_sha1, 80, 64, 0, 0x90000000 | sys_color_table.work_text); |
181 | draw_text_sys(hash_str_sha1, 80, 64, 0, 0x90000000 | sys_color_table.work_text); |
191 | draw_text_sys(hash_str_sha256, 80, 94, 0, 0x90000000| sys_color_table.work_text); |
182 | draw_text_sys(hash_str_sha256, 80, 94, 0, 0x90000000| sys_color_table.work_text); |
192 | 183 | ||
193 | define_button((610 << 16) + 42, (30 << 16) + 20, BTN_COPY_MD5, sys_color_table.work_button); // ¯à¥¤¥«ï¥¬ ª®¯ª¨ ¤«ï ª®¯¨à®¢ ¨ï |
184 | define_button(X_W(610,42), Y_H(30, 20), BTN_COPY_MD5, sys_color_table.work_button); // ¯à¥¤¥«ï¥¬ ª®¯ª¨ ¤«ï ª®¯¨à®¢ ¨ï |
194 | define_button((610<< 16) + 42, (60 << 16) + 20, BTN_COPY_SHA1, sys_color_table.work_button); |
185 | define_button(X_W(610,42), Y_H(60, 20), BTN_COPY_SHA1, sys_color_table.work_button); |
195 | define_button((610<< 16) + 42, (90 << 16) + 20, BTN_COPY_SHA256, sys_color_table.work_button); |
186 | define_button(X_W(610,42), Y_H(90, 20), BTN_COPY_SHA256, sys_color_table.work_button); |
196 | 187 | ||
197 | draw_text_sys("Copy", 615, 34, 0, 0x90000000 | sys_color_table.work_button_text); // ¨è¥¬ copy ¢á¥å ª®¯ª å ¤«ï ª®¯¨à®¢ ¨ï |
188 | draw_text_sys("Copy", 615, 34, 0, 0x90000000 | sys_color_table.work_button_text); // ¨è¥¬ copy ¢á¥å ª®¯ª å ¤«ï ª®¯¨à®¢ ¨ï |
198 | draw_text_sys("Copy", 615, 64, 0, 0x90000000 | sys_color_table.work_button_text); |
189 | draw_text_sys("Copy", 615, 64, 0, 0x90000000 | sys_color_table.work_button_text); |
199 | draw_text_sys("Copy", 615, 94, 0, 0x90000000 | sys_color_table.work_button_text); |
190 | draw_text_sys("Copy", 615, 94, 0, 0x90000000 | sys_color_table.work_button_text); |
200 | 191 | ||
201 | define_button((592<< 16) + 60, (120 << 16) + 20, BTN_CMP, GREEN); // ¯à¥¤¥«ï¥¬ ª®¯ªã ¤«ï áà ¢¥¨ï ª®â®«ìëå á㬬 |
192 | define_button(X_W(592,60), Y_H(120,20), BTN_CMP, GREEN); // ¯à¥¤¥«ï¥¬ ª®¯ªã ¤«ï áà ¢¥¨ï ª®â®«ìëå á㬬 |
202 | draw_text_sys("Compare", 595, 124 , 0,0x90000000 | sys_color_table.work_button_text); // ¨è¥¬ â¥ªá ª®¯ª¥. |
- | |
203 | 193 | draw_text_sys("Compare", 595, 124 , 0,0x90000000 | sys_color_table.work_button_text); // ¨è¥¬ â¥ªá ª®¯ª¥. |
|
204 | define_button((540 << 16) + 45, (120 << 16) + 20, BTN_PASTE, sys_color_table.work_button); //®¯ª ¤«ï ¢áâ ¢ª¨ (¥à ¡®â ¥â) |
194 | define_button(X_W(540, 45), Y_H(120,20), BTN_PASTE, sys_color_table.work_button); //®¯ª ¤«ï ¢áâ ¢ª¨ (¥à ¡®â ¥â) |
205 | draw_text_sys("Paste", 543, 124 , 0,0x90000000 | sys_color_table.work_button_text); // ¥ªáâ paste ª®¯ª¥ |
195 | draw_text_sys("Paste", 543, 124 , 0,0x90000000 | sys_color_table.work_button_text); // ¥ªáâ paste ª®¯ª¥ |
206 | end_draw(); |
196 | end_draw(); |
207 | } |
197 | } |
208 | - | ||
209 | 198 | ||
210 | void paste_to_edit_buffer() // áâ ¢¨âì ¨§ ¡ãää¥à ®¡¬¥ |
199 | void paste_to_edit_buffer() // áâ ¢¨âì ¨§ ¡ãää¥à ®¡¬¥ |
211 | { |
200 | { |
212 | char *temp_buff=NULL; |
201 | char *temp_buff=NULL; |
213 | if(kol_clip_num()>0) |
202 | if(kol_clip_num()>0) |
214 | { |
203 | { |
215 | temp_buff=kol_clip_get(kol_clip_num()-1); |
204 | temp_buff=kol_clip_get(kol_clip_num()-1); |
216 | memset(edit_box_buff,0,MAX_HASH_LEN); |
205 | memset(edit_box_buff,0,MAX_HASH_LEN); |
217 | if(DATA(int, temp_buff,0)>0 && DATA(int,temp_buff,4)==TEXT && DATA(int,temp_buff,8)==CP866) |
206 | if(DATA(int, temp_buff,0)>0 && DATA(int,temp_buff,4)==TEXT && DATA(int,temp_buff,8)==CP866) |
218 | { |
207 | { |
219 | strncpy(edit_box_buff,temp_buff+12, MAX_HASH_LEN-1); |
208 | strncpy(edit_box_buff,temp_buff+12, MAX_HASH_LEN-1); |
220 | str_pos=strlen(edit_box_buff); |
209 | edit_box_set_text(&hash_edit_box,edit_box_buff); |
221 | notify_show("'Pasted from clipboard!' -I"); |
210 | notify_show("'Pasted from clipboard!' -I"); |
222 | edit_box_text_color=BLACK; |
211 | hash_edit_box.text_color = BLACK; |
223 | user_free(temp_buff); |
212 | user_free(temp_buff); |
224 | } |
213 | } |
225 | } |
214 | } |
226 | } |
215 | } |
227 | - | ||
228 | 216 | ||
229 | void copy_to_clipboard(char *text) // ®¯¨à«¢ âì ¢ ¡ãää¥à ®¡¬¥ |
217 | void copy_to_clipboard(char *text) // ®¯¨à«¢ âì ¢ ¡ãää¥à ®¡¬¥ |
230 | { |
218 | { |
231 | if(55!=strlen(text)) |
219 | if(55!=strlen(text)) |
232 | { |
220 | { |
233 | char *temp_buffer=safe_malloc(MAX_HASH_LEN+12); |
221 | char *temp_buffer=safe_malloc(MAX_HASH_LEN+12); |
234 | memset(temp_buffer, 0, MAX_HASH_LEN); |
222 | memset(temp_buffer, 0, MAX_HASH_LEN); |
235 | DATA(char,temp_buffer,4)=TEXT; |
223 | DATA(char,temp_buffer,4)=TEXT; |
236 | DATA(char,temp_buffer,8)=CP866; |
224 | DATA(char,temp_buffer,8)=CP866; |
237 | strncpy(temp_buffer+12, text, MAX_HASH_LEN-1); |
225 | strncpy(temp_buffer+12, text, MAX_HASH_LEN-1); |
238 | kol_clip_set(strlen(text)+12, temp_buffer); |
226 | kol_clip_set(strlen(text)+12, temp_buffer); |
239 | notify_show("'Copied to clipboard!' -I"); |
227 | notify_show("'Copied to clipboard!' -I"); |
240 | free(temp_buffer); |
228 | free(temp_buffer); |
241 | } |
229 | } |
242 | } |
230 | } |
243 | 231 | ||
244 | void print_pending_calc(char *str) // 뢮¤¨¬ á®®¡é¥¨¥ ® ⮬ çâ® ª®â஫ì ï á㬬¬ ¢ëç¨á«ï¥âáï. |
232 | void print_pending_calc(char *str) // 뢮¤¨¬ á®®¡é¥¨¥ ® ⮬ çâ® ª®â஫ì ï á㬬¬ ¢ëç¨á«ï¥âáï. |
245 | { |
233 | { |
246 | strcpy(str, "Please wait! Calculating checksum... "); |
234 | strcpy(str, "Please wait! Calculating checksum... "); |
247 | redraw_window(); |
235 | redraw_window(); |
248 | } |
236 | } |
249 | 237 | ||
250 | bool calc_and_cmp(char *hash_str_universal,int alg) // ëç¨á«ï¥¬ ª®â஫ìãî á㬬㠨 áà ¢¨¢ ¥¬ á edit_box_buff. |
238 | bool calc_and_cmp(char *hash_str_universal,int alg) // ëç¨á«ï¥¬ ª®â஫ìãî á㬬㠨 áà ¢¨¢ ¥¬ á edit_box_buff. |
251 | { |
239 | { |
252 | print_pending_calc(hash_str_universal); |
240 | print_pending_calc(hash_str_universal); |
253 | sprint_hash(check_sum(alg),hash_str_universal, alg); |
241 | sprint_hash(check_sum(alg),hash_str_universal, alg); |
254 | return !strcmp(edit_box_buff, hash_str_universal); |
242 | return !strcmp(edit_box_buff, hash_str_universal); |
255 | } |
243 | } |
256 | 244 | ||
257 | bool hash_compare() // « ¢ ï äãªæ¨ï ¤«ï áà ¢¥¨ï |
245 | bool hash_compare() // « ¢ ï äãªæ¨ï ¤«ï áà ¢¥¨ï |
258 | { |
246 | { |
259 | int alg=strlen(edit_box_buff)/2; |
247 | int alg=strlen(edit_box_buff)/2; |
260 | 248 | ||
261 | switch (alg) // ᫨ ¢ëç¨á«¥¨ï ¥éñ ¥¡ë«® |
249 | switch (alg) // ᫨ ¢ëç¨á«¥¨ï ¥éñ ¥¡ë«® |
262 | { |
250 | { |
263 | case MD5_BLOCK_SIZE: |
251 | case MD5_BLOCK_SIZE: |
264 | if(md5_flag) |
252 | if(md5_flag){ |
265 | { |
- | |
266 | return !strcmp(edit_box_buff,hash_str_md5); |
253 | return !strcmp(edit_box_buff,hash_str_md5); |
267 | } |
- | |
268 | else |
254 | }else{ |
269 | { |
- | |
270 | return calc_and_cmp(hash_str_md5,alg); |
255 | return calc_and_cmp(hash_str_md5,alg); |
271 | } |
256 | } |
272 | break; |
257 | break; |
273 | 258 | ||
274 | case SHA1_BLOCK_SIZE: |
259 | case SHA1_BLOCK_SIZE: |
275 | if(sha1_flag) |
260 | if(sha1_flag){ |
276 | { |
- | |
277 | return !strcmp(edit_box_buff,hash_str_sha1); |
261 | return !strcmp(edit_box_buff,hash_str_sha1); |
278 | } |
- | |
279 | else |
262 | }else{ |
280 | { |
- | |
281 | return calc_and_cmp(hash_str_sha1,alg); |
263 | return calc_and_cmp(hash_str_sha1,alg); |
282 | } |
264 | } |
283 | break; |
265 | break; |
284 | 266 | ||
285 | case SHA256_BLOCK_SIZE: |
267 | case SHA256_BLOCK_SIZE: |
286 | 268 | ||
287 | if(sha256_flag) |
- | |
288 | { |
269 | if(sha256_flag){ |
289 | return !strcmp(edit_box_buff,hash_str_sha256); |
- | |
290 | } |
270 | return !strcmp(edit_box_buff,hash_str_sha256); |
291 | else |
- | |
292 | { |
271 | }else{ |
293 | return calc_and_cmp(hash_str_sha256,alg); |
272 | return calc_and_cmp(hash_str_sha256,alg); |
294 | } |
273 | } |
295 | break; |
274 | break; |
296 | 275 | ||
297 | default: |
276 | default: |
298 | return FALSE; |
277 | return FALSE; |
299 | break; |
278 | break; |
300 | } |
279 | } |
301 | } |
280 | } |
302 | - | ||
303 | void edit_box(oskey_t key) //ãªæ¨ï ॠ«¨§ãîé ï áâப㠢¢®¤ |
- | |
304 | { |
- | |
305 | edit_box_text_color=BLACK; |
- | |
306 | if(key.code==CTRL_V) // ᫨ ¦ â® Ctrl+V â® ¢áâ ¢¨âì ¨§ ¡ãä¥à ®¡¬¥ |
- | |
307 | { |
- | |
308 | paste_to_edit_buffer(); |
- | |
309 | } |
- | |
310 | if(key.code==BACKSPACE && str_pos>0) // ᫨ backspace ⮠㤠«¨âì ¯®á«¥¤¨© ᨬ¢®« |
- | |
311 | { |
- | |
312 | str_pos--; |
- | |
313 | edit_box_buff[str_pos]='\0'; |
- | |
314 | - | ||
315 | } |
- | |
316 | else if(str_pos |
- | |
317 | { |
- | |
318 | if(strchr(hex,key.code)!=NULL) |
- | |
319 | { |
- | |
320 | edit_box_buff[str_pos]=key.code; |
- | |
321 | str_pos++; |
- | |
322 | } |
- | |
323 | } |
- | |
324 | } |
- | |
325 | 281 | ||
326 | int main(int argc, char** argv) |
282 | int main(int argc, char** argv) |
- | 283 | { |
|
327 | { |
284 | kolibri_boxlib_init(); // £à㦠¥¬ boxlib |
328 | if(argc<2) // ᫨ à£ã¬¥â®¢ ¥â, â® § ¯ã᪠¥¬ ¤¨ «®£ ¢ë¡®à ä ©« |
285 | if(argc<2) // ᫨ à£ã¬¥â®¢ ¥â, â® § ¯ã᪠¥¬ ¤¨ «®£ ¢ë¡®à ä ©« |
329 | { |
286 | { |
330 | kolibri_dialog_init(); // ¨æ¨ «¨§ æ¨ï ¡¨¡«¨®â¥ª¨ |
287 | kolibri_dialog_init(); // § £à㦠¥¬ proc_lib(libdialog) |
331 | open_dialog* dialog = kolibri_new_open_dialog(OPEN,0, 0, 420, 320); |
288 | open_dialog* dialog = kolibri_new_open_dialog(OPEN,0, 0, 420, 320); |
332 | OpenDialog_init(dialog); |
289 | OpenDialog_init(dialog); |
333 | OpenDialog_start(dialog); |
290 | OpenDialog_start(dialog); |
334 | if(dialog->status==SUCCESS) // ᫨ ä ©« ¢ë¡à |
291 | if(dialog->status==SUCCESS) // ᫨ ä ©« ¢ë¡à |
335 | { |
292 | { |
336 | global_var_init(strlen(dialog->openfile_path)); |
293 | global_var_init(strlen(dialog->openfile_path)); |
337 | strcpy(filename, dialog->openfile_path); |
294 | strcpy(filename, dialog->openfile_path); |
338 | } |
295 | } |
339 | else // ᫨ ä ©« ¥ ¢ë¡à |
296 | else // ᫨ ä ©« ¥ ¢ë¡à |
340 | { |
297 | { |
341 | notify_show("'No file selected!' -E"); |
298 | notify_show("'No file selected!' -E"); |
342 | exit(0); |
299 | exit(0); |
343 | } |
300 | } |
344 | free(dialog); |
301 | free(dialog); |
345 | } |
302 | } |
346 | else |
303 | else |
347 | { |
304 | { |
348 | global_var_init(strlen(argv[1])); |
305 | global_var_init(strlen(argv[1])); |
349 | strcpy(filename, argv[1]); |
306 | strcpy(filename, argv[1]); |
350 | } |
307 | } |
351 | 308 | ||
352 | if(NULL==fopen(filename,"rb")) // ᫨ ä ©« ¥â ¨«¨ ¥ ®âªàë¢ ¥âáï |
309 | if(NULL==fopen(filename,"rb")) // ᫨ ä ©« ¥â ¨«¨ ¥ ®âªàë¢ ¥âáï |
353 | { |
310 | { |
354 | notify_show("'File not found!' -E"); |
311 | notify_show("'File not found!' -E"); |
355 | exit(0); |
312 | exit(0); |
356 | } |
313 | } |
357 | 314 | ||
358 | if(GetScreenSize()/65536 |
315 | if(GetScreenSize()/65536 |
359 | { |
316 | { |
360 | notify_show("'Low screen resolution! Program will not display correctrly!' -W"); |
317 | notify_show("'Low screen resolution! Program will not display correctrly!' -W"); |
361 | } |
318 | } |
362 | 319 | ||
363 | int gui_event; // ¥à¥¬¥ ï ¤«ï åà ¥¨ï ᮡëâ¨ï |
320 | int gui_event; // ¥à¥¬¥ ï ¤«ï åà ¥¨ï ᮡëâ¨ï |
364 | uint32_t pressed_button = 0; // ®¤ ¦ ⮩ ª®¯ª¨ ¢ ®ª¥ |
321 | uint32_t pressed_button = 0; // ®¤ ¦ ⮩ ª®¯ª¨ ¢ ®ª¥ |
365 | 322 | ||
366 | get_system_colors(&sys_color_table); |
323 | get_system_colors(&sys_color_table); |
- | 324 | hash_edit_box.shift_color=sys_color_table.work_button; |
|
- | 325 | ||
367 | set_event_mask(0xC0000027);// áâ ¢«¨¢ ¥¬ ¬ áªã ᮡë⨩ |
326 | set_event_mask(0xC0000027);// áâ ¢«¨¢ ¥¬ ¬ áªã ᮡë⨩ |
368 | do // ¨ª« ®¡à ¡®âª¨ ᮡë⨩ |
327 | do // ¨ª« ®¡à ¡®âª¨ ᮡë⨩ |
369 | { |
328 | { |
370 | gui_event = get_os_event(); // ®«ãç ¥¬ ᮡë⨥ |
329 | gui_event = get_os_event(); // ®«ãç ¥¬ ᮡë⨥ |
371 | switch(gui_event) // ¡à ¡ âë¢ ¥¬ ᮡëâ¨ï |
330 | switch(gui_event) // ¡à ¡ âë¢ ¥¬ ᮡëâ¨ï |
372 | { |
331 | { |
373 | case KOLIBRI_EVENT_NONE: |
332 | case KOLIBRI_EVENT_NONE: |
374 | break; |
333 | break; |
375 | case KOLIBRI_EVENT_REDRAW: |
334 | case KOLIBRI_EVENT_REDRAW: |
376 | redraw_window(); |
335 | redraw_window(); |
377 | break; |
336 | break; |
- | 337 | case KOLIBRI_EVENT_MOUSE: |
|
- | 338 | edit_box_mouse(&hash_edit_box); |
|
- | 339 | break; |
|
378 | case KOLIBRI_EVENT_KEY: |
340 | case KOLIBRI_EVENT_KEY: |
379 | edit_box(get_key()); // ®«ãç ¥¬ ¦ âãî ª« ¢¨èã ¨ § ¤¥©áâ¢ã¥¬ áâப㠢¢®¤ |
341 | hash_edit_box.text_color = BLACK; |
380 | redraw_window(); |
342 | edit_box_key(&hash_edit_box,get_key().val); |
381 | break; |
343 | break; |
382 | case KOLIBRI_EVENT_BUTTON: // ®¡ë⨥ ®¡à ¡®âª¨ ª®¯®ª |
344 | case KOLIBRI_EVENT_BUTTON: // ®¡ë⨥ ®¡à ¡®âª¨ ª®¯®ª |
383 | pressed_button = get_os_button(); // ®«ã票¥ ª®¤ ¦ ⮩ ª®¯ª¨. |
345 | pressed_button = get_os_button(); // ®«ã票¥ ª®¤ ¦ ⮩ ª®¯ª¨. |
384 | switch (pressed_button) // ஢¥àª ª ª ï ª®¯ª ¡ë« ¦ â |
346 | switch (pressed_button) // ஢¥àª ª ª ï ª®¯ª ¡ë« ¦ â |
385 | { |
347 | { |
386 | case BTN_MD5: |
348 | case BTN_MD5: |
387 | print_pending_calc(hash_str_md5); |
349 | print_pending_calc(hash_str_md5); |
388 | sprint_hash(check_sum(MD5_BLOCK_SIZE),hash_str_md5, MD5_BLOCK_SIZE); |
350 | sprint_hash(check_sum(MD5_BLOCK_SIZE),hash_str_md5, MD5_BLOCK_SIZE); |
389 | redraw_window(); |
351 | redraw_window(); |
390 | break; |
352 | break; |
391 | 353 | ||
392 | case BTN_SHA1: |
354 | case BTN_SHA1: |
393 | print_pending_calc(hash_str_sha1); |
355 | print_pending_calc(hash_str_sha1); |
394 | sprint_hash(check_sum(SHA1_BLOCK_SIZE),hash_str_sha1, SHA1_BLOCK_SIZE); |
356 | sprint_hash(check_sum(SHA1_BLOCK_SIZE),hash_str_sha1, SHA1_BLOCK_SIZE); |
395 | redraw_window(); |
357 | redraw_window(); |
396 | break; |
358 | break; |
397 | 359 | ||
398 | case BTN_SHA256: |
360 | case BTN_SHA256: |
399 | print_pending_calc(hash_str_sha256); |
361 | print_pending_calc(hash_str_sha256); |
400 | sprint_hash(check_sum(SHA256_BLOCK_SIZE),hash_str_sha256, SHA256_BLOCK_SIZE); |
362 | sprint_hash(check_sum(SHA256_BLOCK_SIZE),hash_str_sha256, SHA256_BLOCK_SIZE); |
401 | redraw_window(); |
363 | redraw_window(); |
402 | break; |
364 | break; |
403 | 365 | ||
404 | case BTN_COPY_MD5: |
366 | case BTN_COPY_MD5: |
405 | redraw_window(); |
- | |
406 | copy_to_clipboard(hash_str_md5); |
367 | copy_to_clipboard(hash_str_md5); |
- | 368 | redraw_window(); |
|
407 | break; |
369 | break; |
408 | 370 | ||
409 | case BTN_COPY_SHA1: |
371 | case BTN_COPY_SHA1: |
410 | redraw_window(); |
- | |
411 | copy_to_clipboard(hash_str_sha1); |
372 | copy_to_clipboard(hash_str_sha1); |
- | 373 | redraw_window(); |
|
412 | break; |
374 | break; |
413 | 375 | ||
414 | case BTN_COPY_SHA256: |
376 | case BTN_COPY_SHA256: |
415 | redraw_window(); |
- | |
416 | copy_to_clipboard(hash_str_sha256); |
377 | copy_to_clipboard(hash_str_sha256); |
- | 378 | redraw_window(); |
|
417 | break; |
379 | break; |
418 | 380 | ||
419 | case BTN_PASTE: |
381 | case BTN_PASTE: |
420 | paste_to_edit_buffer(); |
382 | paste_to_edit_buffer(); |
421 | redraw_window(); |
383 | redraw_window(); |
422 | break; |
384 | break; |
423 | 385 | ||
424 | case BTN_CMP: |
386 | case BTN_CMP: |
425 | if(hash_compare()) |
387 | if(hash_compare()) |
426 | { |
388 | { |
427 | notify_show("'The checksum matches :)' -OK"); |
389 | notify_show("'The checksum matches :)' -OK"); |
428 | edit_box_text_color=GREEN; // áâ ¢«¨¢ ¥¬ ⥪áâ ¢¢®¤ §¥«ñë¬ ¥á«¨ ª®â஫ì ï á㬬 ᮢ¯ ¤ ¥â |
390 | hash_edit_box.text_color = GREEN; // áâ ¢«¨¢ ¥¬ ⥪áâ ¢¢®¤ §¥«ñë¬ ¥á«¨ ª®â஫ì ï á㬬 ᮢ¯ ¤ ¥â |
429 | } |
- | |
430 | else |
391 | }else{ |
431 | { |
- | |
432 | notify_show("'The checksum does not match! :(' -W"); |
392 | notify_show("'The checksum does not match! :(' -W"); |
433 | edit_box_text_color=RED; // áâ ¢«¨¢ ¥¬ ⥪áâ ¢¢®¤ ªà áë¬ ¥á«¨ ª®â஫ì ï áã¬¬ë ¥ ᮢ¯ ¤ ¥â |
393 | hash_edit_box.text_color = RED; // áâ ¢«¨¢ ¥¬ ⥪áâ ¢¢®¤ ªà áë¬ ¥á«¨ ª®â஫ì ï áã¬¬ë ¥ ᮢ¯ ¤ ¥â |
434 | } |
394 | } |
435 | redraw_window(); |
395 | redraw_window(); |
436 | break; |
396 | break; |
437 | 397 | ||
438 | case BTN_QUIT: |
398 | case BTN_QUIT: |
439 | exit(0); |
399 | exit(0); |
440 | break; |
400 | break; |
441 | } |
401 | } |
442 | } |
402 | } |
443 | }while(1); |
403 | }while(1); |
444 | exit(0); |
404 | exit(0); |
445 | } |
405 | } |
446 | >2)>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><> |
406 | >2)> |