#include <stdio.h>
#include "sys/types.h"
#include "dirent.h"
#include "unistd.h"
#include <string.h>
#include "fcntl.h"
#include <stdlib.h>
void my_remove(const char *path);
int main(int argc,const char *argv[])
{
if(argc >1)
{
for(int i=1;i<argc;i++)
{
my_remove(argv[i]);
}
}
return 0;
}
void my_remove(const char *path)
{
puts(path);
DIR *dir = opendir(path);
struct dirent *ptr = NULL;
if (dir == NULL)
{
printf("open dir %s failed\n", path);
return;
}
while (ptr = readdir(dir))
{
if (strncmp(ptr->d_name,".",1) == 0 || strncmp(ptr->d_name,"..",2) == 0)
{
continue;
}
if (ptr->d_type != DT_DIR)
{
char *pathname = (char *)malloc(200);
sprintf(pathname,"%s/%s",path,ptr->d_name);
puts(pathname);
unlink(pathname);
free(pathname);
}
else
{
char *pathname = (char *)malloc(200);
sprintf(pathname,"%s/%s",path,ptr->d_name);
puts(pathname);
if(rmdir(pathname) == -1)
{
my_remove(pathname);
}
free(pathname);
}
}
rmdir(path);
closedir(dir);
}