MainWindow::~MainWindow() { delete ui; delete timer; delete formtoolbox; delete formephem; delete formglobecyl; delete cylequidist; delete satlist; delete seglist; opts.Save(); poi.Save(); imageptrs->DeleteImagePtrs(); // Deleting h5 files in program directory QDir workingdir("."); QStringList filters; filters << "*.h5" << "*.HDF" << "IMG_DK01*"; workingdir.setNameFilters(filters); QFileInfoList fileinfolist; workingdir.setFilter(QDir::Files | QDir::NoSymLinks); workingdir.setSorting(QDir::Name); fileinfolist = workingdir.entryInfoList(); for (int i = 0; i < fileinfolist.size(); ++i) { QFile h5file(fileinfolist.at(i).fileName()); if(h5file.remove()) qDebug() << QString("Deleting h5 and Himawari files : %1").arg(fileinfolist.at(i).fileName()); } QDir workingdir1("."); filters.clear(); filters << "S3A_OL_1_*"; workingdir1.setNameFilters(filters); workingdir1.setFilter(QDir::Dirs | QDir::NoSymLinks); QStringList infolist = workingdir1.entryList(); if(opts.remove_S3A_dirs) { for (int i = 0; i < infolist.size(); ++i) { QDir deletedir(infolist.at(i)); bool gelukt = deletedir.removeRecursively(); if(gelukt) qDebug() << "removing S3A dir : " << infolist.at(i); } } qDebug() << "================closing MainWindow================"; loggingFile.close(); }
/* recursive helper function to delete a directory */ static char* deletedir(const char *dir) { DIR *d; struct dirent *e; char buf[8192]; char path[4096]; d = opendir(dir); if (d == NULL) { /* silently return if we cannot find the directory; it's * probably already deleted */ if (errno == ENOENT) return(NULL); if (errno == ENOTDIR) { if (remove(dir) != 0 && errno != ENOENT) { snprintf(buf, sizeof(buf), "unable to remove file %s: %s", dir, strerror(errno)); return(strdup(buf)); } return NULL; } snprintf(buf, sizeof(buf), "unable to open dir %s: %s", dir, strerror(errno)); return(strdup(buf)); } while ((e = readdir(d)) != NULL) { /* ignore . and .. */ if (strcmp(e->d_name, ".") != 0 && strcmp(e->d_name, "..") != 0) { char* er; snprintf(path, sizeof(path), "%s/%s", dir, e->d_name); if ((er = deletedir(path)) != NULL) { closedir(d); return(er); } } } closedir(d); if (rmdir(dir) == -1 && errno != ENOENT) { snprintf(buf, sizeof(buf), "unable to remove directory %s: %s", dir, strerror(errno)); return(strdup(buf)); } return(NULL); }
char* db_destroy(char* dbname) { sabdb* stats; char* e; char buf[8096]; if (dbname[0] == '\0') return(strdup("database name should not be an empty string")); /* the argument is the database to destroy, see what Sabaoth can * tell us about it */ if ((e = msab_getStatus(&stats, dbname)) != NULL) { snprintf(buf, sizeof(buf), "internal error: %s", e); free(e); return(strdup(buf)); } if (stats == NULL) { snprintf(buf, sizeof(buf), "no such database: %s", dbname); return(strdup(buf)); } if (stats->state == SABdbRunning) { snprintf(buf, sizeof(buf), "database '%s' is still running, " "please stop database first", dbname); msab_freeStatus(&stats); return(strdup(buf)); } /* annoyingly we have to delete file by file, and * directories recursively... */ if ((e = deletedir(stats->path)) != NULL) { snprintf(buf, sizeof(buf), "failed to destroy '%s': %s", dbname, e); free(e); msab_freeStatus(&stats); return(strdup(buf)); } msab_freeStatus(&stats); return(NULL); }
void processcommand( char *command, char *P1, char *P2, char *P3 ) { if( strcmp(command, "createvfs") == 0 ) { int size = atoi(P2); if( (0 == strcmp(P1,"")) || 0 == P2 ) { printf("createvfs_FAILURE %s \n",ERR_VFS_CREATE_00); } else { createvfs (P1,size); } } else if( strcmp(command, "mountvfs") == 0 ) { if( (0 == strcmp(P1,"")) ) { printf("mountvfs_FAILURE %s \n",ERR_VFS_MOUNT_05); } else { if( 1 == ui_mountFlag ) { printf("mountvfs_FAILURE %s \n",ERR_VFS_MOUNT_04); } else { mountvfs (P1); } } } else if( strcmp(command, "unmountvfs") == 0 ) { if( (0 == strcmp(P1,"")) ) { printf("unmountvfs_FAILURE %s \n",ERR_VFS_UNMOUNT_00); } else { if( 0 == ui_mountFlag ) { printf("unmountvfs_FAILURE %s \n",ERR_VFS_UNMOUNT_04); } else { unmountvfs (P1); } } } else if( strcmp(command, "makedir") == 0 ) { if( (0 == strcmp(P1,"")) || (0 == strcmp(P2,"")) ) { printf("makedir_FAILURE %s \n",ERR_VFS_MAKEDIR_00); } else { if( 0 == ui_mountFlag ) { printf("makedir_FAILURE %s \n",ERR_VFS_MAKEDIR_05); } else { makedir (P1,P2); } } } else if( strcmp(command, "deletedir") == 0 ) deletedir (P1); else if( strcmp(command, "movedir") == 0 ) movedir (P1,P2); else if( strcmp(command, "listdir") == 0 ) { int flag = atoi(P2); listdir (P1,flag,P3); } else if( strcmp(command, "addfile") == 0 ) addfile (P1,P2,P3); else if( strcmp(command, "listfile") == 0 ) listfile (P1,P2); else if( strcmp(command, "updatefile") == 0 ) updatefile (P1,P2); else if( strcmp(command, "removefile") == 0 ) removefile (P1); else if( strcmp(command, "movefile") == 0 ) movefile (P1,P2); else if( strcmp(command, "copyfile") == 0 ) copyfile (P1,P2); else if( strcmp(command, "exportfile") == 0 ) exportfile (P1,P2); else if( strcmp(command, "searchfile") == 0 ) searchfile (P1,P2); else printf("Ignoring invalid command %s\n", command); }