Subversion Repositories Kolibri OS

Rev

Rev 3247 | Rev 6857 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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