Rev 5962 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5962 | Rev 6597 | ||
---|---|---|---|
Line 10... | Line 10... | ||
10 | { |
10 | { |
11 | dword selected_offset2; |
11 | dword selected_offset2; |
12 | byte copy_t[4096]; |
12 | byte copy_t[4096]; |
13 | dword buff_data; |
13 | dword buff_data; |
14 | int ind = 0; |
14 | dword path_len = 0; |
- | 15 | dword buffer_len = 0; |
|
- | 16 | dword size_buf = 0; |
|
- | 17 | int ind = 0; |
|
15 | if (selected_count) |
18 | if (selected_count) |
16 | { |
19 | { |
17 | buff_data = malloc(selected_count*4096+10); |
20 | for (i=0; i |
- | 21 | { |
|
- | 22 | selected_offset2 = file_mas[i]*304 + buf+32 + 7; |
|
- | 23 | if (ESBYTE[selected_offset2]) { |
|
- | 24 | strcpy(#copy_t, #path); |
|
- | 25 | strcat(#copy_t, file_mas[i]*304+buf+72); |
|
- | 26 | path_len = strlen(#copy_t); |
|
- | 27 | size_buf = size_buf + path_len; |
|
- | 28 | } |
|
- | 29 | } |
|
- | 30 | ||
- | 31 | buff_data = malloc(size_buf); |
|
18 | ESDWORD[buff_data] = selected_count*4096+10; |
32 | ESDWORD[buff_data] = size_buf; |
19 | ESDWORD[buff_data+4] = 3; |
33 | ESDWORD[buff_data+4] = 3; |
20 | ESINT[buff_data+8] = selected_count; |
34 | ESINT[buff_data+8] = selected_count; |
21 | for (i=0; i |
35 | |
- | 36 | for (i=0; i |
|
22 | { |
37 | { |
23 | selected_offset2 = file_mas[i]*304 + buf+32 + 7; |
38 | selected_offset2 = file_mas[i]*304 + buf+32 + 7; |
24 | if (ESBYTE[selected_offset2]) { |
39 | if (ESBYTE[selected_offset2]) { |
25 | strcpy(#copy_t, #path); |
40 | strcpy(#copy_t, #path); |
26 | strcat(#copy_t, file_mas[i]*304+buf+72); |
41 | strcat(#copy_t, file_mas[i]*304+buf+72); |
27 | strlcpy(ind*4096+buff_data+10, #copy_t, 4096);; |
42 | path_len = strlen(#copy_t); |
- | 43 | strlcpy(buff_data+10+buffer_len+1, #copy_t, path_len); |
|
28 | ind++; |
44 | buffer_len = buffer_len + path_len; |
- | 45 | ind++; |
|
29 | } |
46 | } |
30 | } |
47 | } |
31 | clipboard.SetSlotData(selected_count*4096+10, buff_data); |
48 | clipboard.SetSlotData(size_buf+10, buff_data); |
32 | } |
49 | } |
33 | else |
50 | else |
34 | { |
51 | { |
35 | buff_data = malloc(4106); |
52 | buff_data = malloc(4106); |
36 | ESDWORD[buff_data] = 4106; |
53 | ESDWORD[buff_data] = 4106; |
37 | ESDWORD[buff_data+4] = 3; |
54 | ESDWORD[buff_data+4] = 3; |
Line 54... | Line 71... | ||
54 | char copy_rezult; |
71 | char copy_rezult; |
55 | int j; |
72 | int j; |
56 | int cnt = 0; |
73 | int cnt = 0; |
57 | dword buf; |
74 | dword buf; |
58 | file_count_copy = 0; |
75 | dword path_len = 0; |
- | 76 | dword buffer_len = 0; |
|
- | 77 | file_count_copy = 0; |
|
- | 78 | copy_bar.value = 0; |
|
- | 79 | ||
- | 80 | buf = clipboard.GetSlotData(clipboard.GetSlotCount()-1); |
|
- | 81 | if (DSDWORD[buf+4] != 3) return; |
|
- | 82 | cnt = ESINT[buf+8]; |
|
- | 83 | for (j = 0; j < cnt; j++) { |
|
- | 84 | if (j==0) strlcpy(#copy_from, buf+10+buffer_len); |
|
- | 85 | else strlcpy(#copy_from, buf+10+buffer_len+1); |
|
- | 86 | buffer_len = buffer_len + path_len; |
|
- | 87 | GetFileInfo(#copy_from, #file_info_count); |
|
- | 88 | if ( file_info_count.isfolder ) DirFileCount(#copy_from); |
|
- | 89 | else file_count_copy++; |
|
- | 90 | } |
|
- | 91 | copy_bar.max = file_count_copy; |
|
- | 92 | ||
- | 93 | if (cut_active) operation_flag = MOVE_FLAG; |
|
- | 94 | else operation_flag = COPY_FLAG; |
|
- | 95 | ||
- | 96 | path_len = 0; |
|
- | 97 | buffer_len = 0; |
|
- | 98 | DisplayOperationForm(); |
|
- | 99 | for (j = 0; j < cnt; j++) { |
|
- | 100 | if (j==0) strlcpy(#copy_from, buf+10+buffer_len); |
|
- | 101 | else strlcpy(#copy_from, buf+10+buffer_len+1); |
|
- | 102 | path_len = strlen(#copy_from); |
|
- | 103 | buffer_len = buffer_len + path_len; |
|
- | 104 | if (!copy_from) DialogExit(); |
|
- | 105 | strcpy(#copy_to, #path); |
|
- | 106 | strcat(#copy_to, #copy_from+strrchr(#copy_from,'/')); |
|
- | 107 | if (!strcmp(#copy_from,#copy_to)) |
|
- | 108 | { |
|
- | 109 | strcpy(#copy_to, #path); |
|
- | 110 | strcat(#copy_to, "new_"); |
|
- | 111 | strcat(#copy_to, #copy_from+strrchr(#copy_from,'/')); |
|
- | 112 | } |
|
- | 113 | if (strstr(#copy_to, #copy_from)) |
|
- | 114 | { |
|
- | 115 | notify("Copy directory into itself is a bad idea..."); |
|
- | 116 | DialogExit(); |
|
- | 117 | } |
|
- | 118 | ||
- | 119 | if (copy_rezult = copyf(#copy_from,#copy_to)) |
|
- | 120 | { |
|
- | 121 | Write_Error(copy_rezult); |
|
- | 122 | } |
|
- | 123 | else if (cut_active) |
|
- | 124 | { |
|
- | 125 | strcpy(#file_path, #copy_from); |
|
- | 126 | Del_File2(#copy_from, 0); |
|
- | 127 | ||
- | 128 | } |
|
- | 129 | } |
|
- | 130 | if (cut_active) |
|
- | 131 | { |
|
- | 132 | cut_active=false; |
|
- | 133 | } |
|
- | 134 | if (info_after_copy) notify(INFO_AFTER_COPY); |
|
- | 135 | DialogExit(); |
|
- | 136 | } |
|
- | 137 | ||
- | 138 | //Another version of the function copy/paste |
|
- | 139 | ||
- | 140 | /* |
|
- | 141 | void Copy(dword pcth, char cut) |
|
- | 142 | { |
|
- | 143 | dword selected_offset2; |
|
- | 144 | byte copy_t[4096]; |
|
- | 145 | dword buff_data; |
|
- | 146 | dword path_len = 0; |
|
- | 147 | dword buffer_len = 0; |
|
- | 148 | dword size_buf = 0; |
|
- | 149 | int ind = 0; |
|
- | 150 | if (selected_count) |
|
- | 151 | { |
|
- | 152 | for (i=0; i |
|
- | 153 | { |
|
- | 154 | selected_offset2 = file_mas[i]*304 + buf+32 + 7; |
|
- | 155 | if (ESBYTE[selected_offset2]) { |
|
- | 156 | strcpy(#copy_t, #path); |
|
- | 157 | strcat(#copy_t, file_mas[i]*304+buf+72); |
|
- | 158 | path_len = strlen(#copy_t); |
|
- | 159 | size_buf = size_buf + path_len + 4; |
|
- | 160 | } |
|
- | 161 | } |
|
- | 162 | ||
- | 163 | buff_data = malloc(size_buf); |
|
- | 164 | ESDWORD[buff_data] = size_buf; |
|
- | 165 | ESDWORD[buff_data+4] = 3; |
|
- | 166 | ESINT[buff_data+8] = selected_count; |
|
- | 167 | ||
- | 168 | for (i=0; i |
|
- | 169 | { |
|
- | 170 | selected_offset2 = file_mas[i]*304 + buf+32 + 7; |
|
- | 171 | if (ESBYTE[selected_offset2]) { |
|
- | 172 | strcpy(#copy_t, #path); |
|
- | 173 | strcat(#copy_t, file_mas[i]*304+buf+72); |
|
- | 174 | path_len = strlen(#copy_t); |
|
- | 175 | ESDWORD[buff_data+10+buffer_len] = path_len; |
|
- | 176 | strlcpy(buff_data+10+4+buffer_len, #copy_t, path_len); |
|
- | 177 | buffer_len = buffer_len + 4 + path_len; |
|
- | 178 | ind++; |
|
- | 179 | } |
|
- | 180 | } |
|
- | 181 | clipboard.SetSlotData(size_buf+10, buff_data); |
|
- | 182 | } |
|
- | 183 | else |
|
- | 184 | { |
|
- | 185 | buff_data = malloc(4106); |
|
- | 186 | ESDWORD[buff_data] = 4106; |
|
- | 187 | ESDWORD[buff_data+4] = 3; |
|
- | 188 | ESINT[buff_data+8] = 1; |
|
- | 189 | strlcpy(buff_data+10, #file_path, 4096);; |
|
- | 190 | clipboard.SetSlotData(4106, buff_data); |
|
- | 191 | } |
|
- | 192 | cut_active = cut; |
|
- | 193 | free(buff_data); |
|
- | 194 | } |
|
- | 195 | ||
- | 196 | ||
- | 197 | void PasteThread() |
|
- | 198 | { |
|
- | 199 | char copy_rezult; |
|
- | 200 | int j; |
|
- | 201 | int cnt = 0; |
|
- | 202 | dword buf; |
|
- | 203 | dword path_len = 0; |
|
- | 204 | dword buffer_len = 0; |
|
- | 205 | file_count_copy = 0; |
|
59 | copy_bar.value = 0; |
206 | copy_bar.value = 0; |
60 | 207 | ||
Line 61... | Line 208... | ||
61 | buf = clipboard.GetSlotData(clipboard.GetSlotCount()-1); |
208 | buf = clipboard.GetSlotData(clipboard.GetSlotCount()-1); |
62 | if (DSDWORD[buf+4] != 3) return; |
209 | if (DSDWORD[buf+4] != 3) return; |
63 | cnt = ESINT[buf+8]; |
210 | cnt = ESINT[buf+8]; |
64 | for (j = 0; j < cnt; j++) { |
211 | for (j = 0; j < cnt; j++) { |
- | 212 | path_len = ESDWORD[buf+10+buffer_len]; |
|
65 | strlcpy(#copy_from, j*4096+buf+10, 4096); |
213 | strlcpy(#copy_from, buf+10+buffer_len+4, path_len); |
- | 214 | buffer_len = buffer_len + 4 + path_len; |
|
66 | GetFileInfo(#copy_from, #file_info_count); |
215 | GetFileInfo(#copy_from, #file_info_count); |
67 | if ( file_info_count.isfolder ) DirFileCount(#copy_from); |
216 | if ( file_info_count.isfolder ) DirFileCount(#copy_from); |
68 | else file_count_copy++; |
217 | else file_count_copy++; |
69 | } |
218 | } |
70 | copy_bar.max = file_count_copy; |
219 | copy_bar.max = file_count_copy; |
Line 71... | Line 220... | ||
71 | 220 | ||
72 | if (cut_active) operation_flag = MOVE_FLAG; |
221 | if (cut_active) operation_flag = MOVE_FLAG; |
Line -... | Line 222... | ||
- | 222 | else operation_flag = COPY_FLAG; |
|
- | 223 | ||
73 | else operation_flag = COPY_FLAG; |
224 | path_len = 0; |
74 | 225 | buffer_len = 0; |
|
- | 226 | DisplayOperationForm(); |
|
75 | DisplayOperationForm(); |
227 | for (j = 0; j < cnt; j++) { |
- | 228 | path_len = ESDWORD[buf+10+buffer_len]; |
|
76 | for (j = 0; j < cnt; j++) { |
229 | strlcpy(#copy_from, buf+10+buffer_len+4, path_len); |
77 | strlcpy(#copy_from, j*4096+buf+10, 4096); |
230 | buffer_len = buffer_len + 4 + path_len; |
78 | if (!copy_from) DialogExit(); |
231 | if (!copy_from) DialogExit(); |
79 | strcpy(#copy_to, #path); |
232 | strcpy(#copy_to, #path); |
80 | strcat(#copy_to, #copy_from+strrchr(#copy_from,'/')); |
233 | strcat(#copy_to, #copy_from+strrchr(#copy_from,'/')); |
Line 95... | Line 248... | ||
95 | Write_Error(copy_rezult); |
248 | Write_Error(copy_rezult); |
96 | } |
249 | } |
97 | else if (cut_active) |
250 | else if (cut_active) |
98 | { |
251 | { |
99 | //strcpy(#file_path, #copy_from); |
252 | strcpy(#file_path, #copy_from); |
100 | Del_File2(#copy_from, 0); |
253 | Del_File2(#copy_from, 0); |
101 | 254 | ||
Line 102... | Line 255... | ||
102 | } |
255 | } |
103 | } |
256 | } |
104 | if (cut_active) |
257 | if (cut_active) |
Line 107... | Line 260... | ||
107 | } |
260 | } |
108 | if (info_after_copy) notify(INFO_AFTER_COPY); |
261 | if (info_after_copy) notify(INFO_AFTER_COPY); |
109 | DialogExit(); |
262 | DialogExit(); |
110 | }>> |
263 | } |
111 | 264 | */>>>> |
|
112 | 265 | ||
- | 266 |