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