void Thread::run() { extern int dialog_auswertung; extern QString parameter[15]; if (qdummy == "0") { //Zurücksetzen der bekannten oder unbekannten Fehlermeldung werte_uebergeben(1,4); dialog_auswertung = fsarchiver_aufruf(anzahl,parameter[0].toLatin1().data(),parameter[1].toLatin1().data(),parameter[2].toLatin1().data(),parameter[3].toLatin1().data(),parameter[4].toLatin1().data (),parameter[5].toLatin1().data(),parameter[6].toLatin1().data(),parameter[7].toLatin1().data(),parameter[8].toLatin1().data(),parameter[9].toLatin1().data(),parameter[10].toLatin1().data(),parameter[11].toLatin1().data(),parameter[12].toLatin1().data(),parameter[13].toLatin1().data(),parameter[14].toLatin1().data()); if (dialog_auswertung != 0){ //verhindert das Blockieren des Programmes Abfrage in der while Schleife in dir.cpp und mainwindow.cpp float endeThread = werte_holen(4); // Wenn vom Programm bereits eine Fehlermeldung zurückgeschrieben wurde, wird die Fehlermeldungnummer nicht durch 100 ersetzt. if (endeThread ==0) werte_uebergeben(100,4); } } int pos = qdummy.indexOf("dd"); if (qdummy != "0" && pos > -1) //thread Festplatte klonen, Image erstellen dialog_auswertung = system (qdummy.toLatin1().data()); }
int archwriter_write_buffer(carchwriter *ai, struct s_writebuf *wb) { struct statvfs64 statvfsbuf; char textbuf[128]; long lres; assert(ai); assert(wb); if (wb->size == 0) { errprintf("wb->size=%ld\n", (long)wb->size); return -1; } if ((lres=write(ai->archfd, (char*)wb->data, (long)wb->size))!=(long)wb->size) { errprintf("write(size=%ld) returned %ld\n", (long)wb->size, (long)lres); if ((lres>0) && (lres < (long)wb->size)) // probably "no space left" { if (fstatvfs64(ai->archfd, &statvfsbuf)!=0) { sysprintf("fstatvfs(fd=%d) failed\n", ai->archfd); return -1; } u64 freebytes = statvfsbuf.f_bfree * statvfsbuf.f_bsize; errprintf("Can't write to the archive file. Space on device is %s. \n" "If the archive is being written to a FAT filesystem, you may have reached \n" "the maximum filesize that it can handle (in general 2 GB)\n", format_size(freebytes, textbuf, sizeof(textbuf), 'h')); werte_uebergeben (109,4); return -1; } else // another error { sysprintf("write(size=%ld) failed\n", (long)wb->size); return -1; } } return 0; }
int archinfo_show_fshead(cdico *dicofshead, int fsid) { char magic[FSA_SIZEOF_MAGIC+1]; char fsbuf[FSA_MAX_FSNAMELEN]; u64 temp64; u64 fsbytestotal; u64 fsbytesused; char buffer[256]; char fslabel[256]; char fsuuid[256]; char fsorigdev[256]; // init memset(magic, 0, sizeof(magic)); if (!dicofshead) { errprintf("dicofshead is null\n"); return -1; } if (dico_get_data(dicofshead, 0, FSYSHEADKEY_FILESYSTEM, fsbuf, sizeof(fsbuf), NULL)!=0) { errprintf("cannot find FSYSHEADKEY_FILESYSTEM in filesystem-header\n"); return -1; } if (dico_get_u64(dicofshead, 0, FSYSHEADKEY_BYTESTOTAL, &fsbytestotal)!=0) { errprintf("cannot find FSYSHEADKEY_BYTESTOTAL in filesystem-header\n"); return -1; } if (dico_get_u64(dicofshead, 0, FSYSHEADKEY_BYTESUSED, &fsbytesused)!=0) { errprintf("cannot find FSYSHEADKEY_BYTESUSED in filesystem-header\n"); return -1; } if (dico_get_string(dicofshead, 0, FSYSHEADKEY_FSLABEL, fslabel, sizeof(fslabel))<0) snprintf(fslabel, sizeof(fslabel), "<none>"); if (dico_get_string(dicofshead, 0, FSYSHEADKEY_ORIGDEV, fsorigdev, sizeof(fsorigdev))<0) snprintf(fsorigdev, sizeof(fsorigdev), "<unknown>"); // filesystem uuid: maybe an ntfs uuid or an unix uuid snprintf(fsuuid, sizeof(fsuuid), "<none>"); if (dico_get_u64(dicofshead, 0, FSYSHEADKEY_NTFSUUID, &temp64)==0) snprintf(fsuuid, sizeof(fsuuid), "%016llX", (long long unsigned int)temp64); else if (dico_get_string(dicofshead, 0, FSYSHEADKEY_FSUUID, buffer, sizeof(buffer))==0 && strlen(buffer)==36) snprintf(fsuuid, sizeof(fsuuid), "%s", buffer); printf("===================== filesystem information ====================\n"); printf("Filesystem id in archive: \t%ld\n", (long)fsid); printf("Filesystem format: \t\t%s\n", fsbuf); printf("Filesystem label: \t\t%s\n", fslabel); printf("Filesystem uuid: \t\t%s\n", fsuuid); printf("Original device: \t\t%s\n", fsorigdev); printf("Original filesystem size: \t%s (%lld bytes)\n", format_size(fsbytestotal, buffer, sizeof(buffer), 'h'), (long long)fsbytestotal); printf("Space used in filesystem: \t%s (%lld bytes)\n", format_size(fsbytesused, buffer, sizeof(buffer), 'h'), (long long)fsbytesused); printf("\n"); meldungen_uebergeben(fsorigdev,2); werte_uebergeben(200,15); return 0; }
void DialogDIR::thread2Ready() { endeThread_ = endeThread_ + 1; extern int dialog_auswertung; QString err_regfile_; int err_regfile; int meldung = werte_holen(4); if (endeThread_ == 1) { if (dialog_auswertung ==0){ progressBar->setValue(100); SekundeRemaining ->setText("0"); int cnt_regfile = werte_holen(6); QString cnt_regfile_ = QString::number(cnt_regfile); int cnt_dir = werte_holen(7); QString cnt_dir_ = QString::number(cnt_dir); int cnt_hardlinks = werte_holen(8); cnt_hardlinks = cnt_hardlinks + werte_holen(9); QString cnt_hardlinks_ = QString::number(cnt_hardlinks); int cnt_special = werte_holen(10); QString cnt_special_; cnt_special_ = QString::number(cnt_special); QMessageBox::about(this, tr("Note", "Hinweis"), tr("The restoring of the directory was successful.\n", "Die Wiederherstellung des Verzeichnisses war erfolgreich.\n") + cnt_regfile_ + tr(" files, ", " Dateien, ") + cnt_dir_ + tr(" directories, ", " Verzeichnisse, ") + cnt_hardlinks_ + tr(" links and ", " Links und ") + cnt_special_ + tr(" specials have been restored.", " spezielle Daten wurden wieder hergestellt.")); } if (flag_end_dir == 1) { QMessageBox::about(this, tr("Note", "Hinweis"), tr("The restore of the folder was break by user!\n", "Die Wiederherstellung des Verzeichnisses wurde vom Benutzer abgebrochen!\n") ); meldung = 0; } if (meldung == 100) { // Anzahl nicht korrekt gesicherte Dateien ausgeben err_regfile = werte_holen(1); err_regfile_ = QString::number(err_regfile); int err_dir = werte_holen(2); QString err_dir_ = QString::number(err_dir); int err_hardlinks = werte_holen(3); err_hardlinks = err_hardlinks + werte_holen(5); QString err_hardlinks_ = QString::number(err_hardlinks); QMessageBox::about(this,tr("Note", "Hinweis"), err_regfile_ + tr(" files,", " Dateien, ") + err_dir_ + tr(" directories, and ", " Verzeichnisse und ") + err_hardlinks_ + tr(" links were not correctly restored. The restoring of the lists was only partially successful", " Links wurden nicht korrekt wiederhergestellt. Die Wiederherstellung der Verzeichnisse war nur teilweise erfolgreich\n")); } if (meldung == 103) { QMessageBox::about(this, tr("Note", "Hinweis"), tr("You have entered an incorrect password.\n", "Sie haben ein falsches Passwort eingegeben.\n")); werte_uebergeben(100,4); endeThread_ = 0; lineKey->setText (""); } if (meldung == 104) { QMessageBox::about(this, tr("Note", "Hinweis"), tr("You have tried to restore a directory. The selected file can only restore partitions.\n", "Sie haben versucht ein Verzeichnis wiederherzustellen. Die gewählte Datei kann nur Partitionen wiederherstellen.\n")); } if (meldung == 106) { QMessageBox::about(this, tr("Note", "Hinweis"), tr("Error in fsarchiver. The directory can not be restored!", "Fehler in fsarchiver. Das Verzeichnis kann nicht wiederhergestellt werden!!\n")); endeThread_ = 0; } if (meldung == 107) { QMessageBox::about(this, tr("Note", "Hinweis"), tr("Error! The restoring of the folder was only partially successful!", "Fehler! Das Verzeichnis wurde nur teilweise wiederhergestellt. \n")); endeThread_ = 0; } } thread_run_dir = 0; thread2.exit(); dialog_auswertung = 5; bt_save->setEnabled(true); bt_end->setEnabled(true); }