Subversion Repositories Kolibri OS

Rev

Rev 3247 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3245 Albom 1
 
2
{
3
4
 
5
    printf("  Error!\n\r");
6
#elif LANG_RUS
7
    printf("  Ошибка!\n\r");
8
#endif
9
10
 
11
12
 
13
{
14
15
 
16
int i;
17
int argc;
18
char *filename_in;
19
char *filename_out;
20
char *buffer;
21
22
 
23
kol_struct70	k70_out;
24
25
 
26
27
 
28
unsigned n; // количество раз копирования по 4 кбайта
29
30
 
31
32
 
33
   {
34
      #if LANG_ENG
35
	printf("  cp  \n\r");
36
      #elif LANG_RUS
37
	printf("  cp <источник> <результат>\n\r");
38
      #endif
39
40
 
41
42
 
43
   }
44
45
 
46
filename_out = (char*) malloc(4096);
47
48
 
49
   {
50
   strcpy(filename_in, cur_dir);
51
   if (filename_in[strlen(filename_in)-1] != '/')
52
	strcat(filename_in, "/"); // add slash
53
   strcat(filename_in, argv[0]);
54
   }
55
   else
56
   {
57
   strcpy(filename_in, argv[0]);
58
   }
59
60
 
61
   {
62
   strcpy(filename_out, cur_dir);
63
   if (filename_out[strlen(filename_out)-1] != '/')
64
	strcat(filename_out, "/"); // add slash
65
   strcat(filename_out, argv[1]);
66
   }
67
   else
68
   {
69
   strcpy(filename_out, argv[1]);
70
   }
71
72
 
73
 
74
k70_in.p04 = k70_in.p08 = k70_in.p12 = 0;
75
k70_in.p16 = (unsigned) &bdvk;
76
k70_in.p20 = 0;
77
k70_in.p21 = filename_in;
78
79
 
80
if ( 0 != result )
81
       {
82
       print_error();
83
84
 
85
       free(filename_in);
86
       free(filename_out);
87
       return FALSE;
88
       }
89
90
 
91
n = filesize / 4096;
92
93
 
94
95
 
96
k70_in.p08 = 0;
97
k70_in.p12 = 4096;
98
k70_in.p16 = (unsigned) buffer;
99
k70_in.p20 = 0;
100
k70_in.p21 = filename_in;
101
102
 
103
k70_out.p08 = 0;
104
k70_out.p12 = 4096;
105
k70_out.p16 = (unsigned) buffer;
106
k70_out.p20 = 0;
107
k70_out.p21 = filename_out;
108
109
 
110
for ( i = 0; i < n; i++)
111
    {
112
113
 
114
    result = kol_file_70(&k70_in); // чтение
115
    if (result != 0)
116
       {
117
       print_error();
118
119
 
120
       free(filename_in);
121
       free(filename_out);
122
       free(buffer);
123
       return FALSE;
124
       }
125
126
 
127
    result = kol_file_70(&k70_out); // запись
128
    if (result != 0)
129
       {
130
       print_error();
131
132
 
133
       free(filename_in);
134
       free(filename_out);
135
       free(buffer);
136
       return FALSE;
137
       }
138
139
 
140
       k70_out.p00 = 3; // меняем функцию с создания (2) на дозапись (3)
141
142
 
143
144
 
145
   {
146
147
 
148
   k70_out.p12 = filesize%4096;
149
150
 
151
   result = kol_file_70(&k70_in); // чтение
152
   if (result != 0)
153
       {
154
       print_error();
155
156
 
157
       free(filename_in);
158
       free(filename_out);
159
       free(buffer);
160
       return FALSE;
161
       }
162
163
 
164
    result = kol_file_70(&k70_out); // запись
165
    if (result != 0)
166
       {
167
       print_error();
168
169
 
170
       free(filename_in);
171
       free(filename_out);
172
       free(buffer);
173
       return FALSE;
174
       }
175
176
 
177
178
 
179
 
180
 
181
free(filename_in);
182
free(filename_out);
183
free(buffer);
184
185
 
186
 
187
}
188