#include
#include
#include
#include
#include
#include
#include
#define SIZE 100
int travel(char *path)
{
char next_path[SIZE];
int check = 0;
DIR *dir;
struct dirent *entry;
struct stat buf;
if(lstat(path,&buf) < 0)
{
printf("stat directory or file \"%s\": %s (ERROR %d)\n", path, strerror(errno), errno);
return -1;
}
if(!S_ISDIR(buf.st_mode))
{
if(unlink(path) < 0)
printf("remove %s : %s ,%d\n",path,strerror(errno),errno);
return 0;
}
dir = opendir(path);
if (dir == NULL)
{
printf("$$$$Open directory \"%s\": %s (ERROR %d)\n",
path, strerror(errno), errno);
return 1;
}
while ((entry = readdir(dir)) != NULL)
{
if(strcmp(entry->d_name ,"." ) ==0 || strcmp(entry->d_name ,".." ) ==0 )
continue;
if (entry->d_type == DT_DIR)
{
sprintf(next_path,"%s/%s",path,entry->d_name);
travel(next_path);
}
else
{
sprintf(next_path,"%s/%s",path,entry->d_name);
if(unlink(next_path)<0)
{
printf("remove --%s error\n",entry->d_name);
return 0;
}
}
}
remove(path);
closedir(dir);
if(check == 1)
return 0;
return 0;
}
int main(int argc ,char *argv[])
{
char *file ;
char path[255];
char name[255];
int len = 0;
int i = 0;
if(argc == 1)
{
printf("more input please!\n");
exit(0);
}
if(argc == 2)
{
strcpy(name,argv[1]);
}
else
{
printf("input error!\n");
exit(0);
}
file = (char *)getcwd(argv[1],100);
path[0]='\0';
sprintf(path,"%s/%s",file,name);
travel(path);
return 0;
}