commit
3f54fdc898
|
@ -625,6 +625,24 @@ STATIC INT32 OsIsContainersWildcard(const CHAR *filename)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Delete a non directory file */
|
||||||
|
STATIC INT32 OsRmFileOnly(const CHAR *fullpath)
|
||||||
|
{
|
||||||
|
struct stat statInfo = {0};
|
||||||
|
INT32 ret = stat(fullpath, &statInfo);
|
||||||
|
if (ret == 0) {
|
||||||
|
if (!S_ISDIR(statInfo.st_mode)) {
|
||||||
|
ret = unlink(fullpath);
|
||||||
|
} else {
|
||||||
|
ret = 0;
|
||||||
|
PRINTK("rm: cannot remove '%s': Is a directory\n", fullpath);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
PRINTK("stat: get '%s' statInfo fail!\n", fullpath);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* Delete a matching file or directory */
|
/* Delete a matching file or directory */
|
||||||
|
|
||||||
STATIC INT32 OsWildcardDeleteFileOrDir(const CHAR *fullpath, wildcard_type mark)
|
STATIC INT32 OsWildcardDeleteFileOrDir(const CHAR *fullpath, wildcard_type mark)
|
||||||
|
@ -636,7 +654,7 @@ STATIC INT32 OsWildcardDeleteFileOrDir(const CHAR *fullpath, wildcard_type mark)
|
||||||
ret = OsShellCmdDoRmdir(fullpath);
|
ret = OsShellCmdDoRmdir(fullpath);
|
||||||
break;
|
break;
|
||||||
case RM_FILE:
|
case RM_FILE:
|
||||||
ret = unlink(fullpath);
|
ret = OsRmFileOnly(fullpath);
|
||||||
break;
|
break;
|
||||||
case RM_DIR:
|
case RM_DIR:
|
||||||
ret = rmdir(fullpath);
|
ret = rmdir(fullpath);
|
||||||
|
@ -649,8 +667,6 @@ STATIC INT32 OsWildcardDeleteFileOrDir(const CHAR *fullpath, wildcard_type mark)
|
||||||
perror("rm/rmdir error!");
|
perror("rm/rmdir error!");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
PRINTK("%s match successful!delete!\n", fullpath);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -728,6 +744,10 @@ STATIC INT32 OsWildcardExtractDirectory(CHAR *fullpath, VOID *dst, wildcard_type
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
ret = strcpy_s(src, PATH_MAX, f);
|
ret = strcpy_s(src, PATH_MAX, f);
|
||||||
if (ret != EOK) {
|
if (ret != EOK) {
|
||||||
goto closedir_out;
|
goto closedir_out;
|
||||||
|
@ -910,7 +930,7 @@ INT32 OsShellCmdRm(INT32 argc, const CHAR **argv)
|
||||||
if (OsIsContainersWildcard(fullpath)) {
|
if (OsIsContainersWildcard(fullpath)) {
|
||||||
ret = OsWildcardExtractDirectory(fullpath, NULL, RM_FILE);
|
ret = OsWildcardExtractDirectory(fullpath, NULL, RM_FILE);
|
||||||
} else {
|
} else {
|
||||||
ret = unlink(fullpath);
|
ret = OsRmFileOnly(fullpath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
|
|
Loading…
Reference in New Issue