MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / cmd_mv

Function cmd_mv

components/finsh/msh_file.c:242–298  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

240MSH_CMD_EXPORT_ALIAS(cmd_cp, cp, Copy SOURCE to DEST.);
241
242static int cmd_mv(int argc, char **argv)
243{
244 if (argc != 3)
245 {
246 rt_kprintf("Usage: mv SOURCE DEST\n");
247 rt_kprintf("Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n");
248 }
249 else
250 {
251 int fd;
252 char *dest = RT_NULL;
253
254 rt_kprintf("%s => %s\n", argv[1], argv[2]);
255
256 fd = open(argv[2], O_DIRECTORY, 0);
257 if (fd >= 0)
258 {
259 char *src;
260
261 close(fd);
262
263 /* it's a directory */
264 dest = (char *)rt_malloc(DFS_PATH_MAX);
265 if (dest == RT_NULL)
266 {
267 rt_kprintf("out of memory\n");
268 return -RT_ENOMEM;
269 }
270
271 src = argv[1] + rt_strlen(argv[1]);
272 while (src != argv[1])
273 {
274 if (*src == '/') break;
275 src --;
276 }
277
278 rt_snprintf(dest, DFS_PATH_MAX - 1, "%s/%s", argv[2], src);
279 }
280 else
281 {
282 fd = open(argv[2], O_RDONLY, 0);
283 if (fd >= 0)
284 {
285 close(fd);
286
287 unlink(argv[2]);
288 }
289
290 dest = argv[2];
291 }
292
293 rename(argv[1], dest);
294 if (dest != RT_NULL && dest != argv[2]) rt_free(dest);
295 }
296
297 return 0;
298}
299MSH_CMD_EXPORT_ALIAS(cmd_mv, mv, Rename SOURCE to DEST.);

Callers

nothing calls this directly

Calls 9

rt_kprintfFunction · 0.85
rt_mallocFunction · 0.85
rt_strlenFunction · 0.85
rt_snprintfFunction · 0.85
rt_freeFunction · 0.85
openFunction · 0.50
closeFunction · 0.50
unlinkFunction · 0.50
renameFunction · 0.50

Tested by

no test coverage detected