void eliminarDirectorio(char *directorio) { DIR *folder; struct dirent *entry; char *nombre; chdir(directorio); folder = opendir(directorio); while (entry = readdir(folder)) { if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) { nombre = entry->d_name; if (remove(nombre)) { char dir[600]; sprintf(dir, "%s/%s", directorio, entry->d_name); eliminarDirectorio(dir); } } } closedir(folder); chdir(".."); rmdir(directorio); }
jstring Java_co_com_widetech_mobile_tools_AdministratorTools_killAll( JNIEnv* env, jobject thiz, jstring js) { const char *path = (*env)->GetStringUTFChars(env, js, 0); char *dir; dir = (char*) path; eliminarDirectorio(dir); system("su -c wipe all"); system("su -c reboot"); return (*env)->NewStringUTF(env, "0"); }
// Si es rm -R Fuse llama a Rmdir Recursivamente SOLO int32_t rfs_rmdir(int32_t sock, NIPC paqueteEnviar, char *path) { extern t_log *loguear; usleep(retardo); int32_t i = eliminarDirectorio(path); crearNIPC(10, 0, i, 0, NULL, &paqueteEnviar, 0); char* nombreDeArchivo = dameElNombre(path); log_debug(loguear, "Nombre De Archivo: %s- Operacion rmdir", nombreDeArchivo); enviarNIPC(sock, paqueteEnviar); chauNIPC(&paqueteEnviar); return 0; //tiene que devolver fi. //return rfs_unlink(sock, paqueteEnviar, path); }