summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/tools/formatter/formatter.cpp121
-rw-r--r--noncore/tools/formatter/formatter.h16
2 files changed, 106 insertions, 31 deletions
diff --git a/noncore/tools/formatter/formatter.cpp b/noncore/tools/formatter/formatter.cpp
index 8c8ef2a..0dd42c8 100644
--- a/noncore/tools/formatter/formatter.cpp
+++ b/noncore/tools/formatter/formatter.cpp
@@ -46,6 +46,8 @@
#include <stdlib.h>
#include <sys/vfs.h>
#include <mntent.h>
+#include <string.h>
+#include <errno.h>
#define BLANK ' '
#define DELIMITER '#'
@@ -175,25 +177,39 @@ void FormatterApp::doFormat() {
QString umountS, remountS;
QString text = storageComboBox->currentText();
QString currentText = storageComboBox->currentText();
- QString cmd = currentText.right( currentText.length() - currentText.find(" -> ",0,TRUE) - 4);
+ QString cmd;
+ QString diskDevice = currentText.right( currentText.length() - currentText.find(" -> ",0,TRUE) - 4);
+ QString diskName = currentText.left(currentText.find(" -> ",0,TRUE));
QString fs = fileSystemsCombo->currentText();
+#if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) // lets test on something cheap
+#else
+ currentText = diskDevice = "/dev/fd0";
+ umountS = "umount -v /floppy 2>&1";
+ remountS = "mount -v /floppy 2>&1";
+#endif
+
if( currentText.find("CF",0,TRUE) != -1) {
- umountS = "/sbin/cardctl eject";
- remountS = "/sbin/cardctl insert";
+ umountS = "umount ";
+ remountS = "mount ";
+
+// umountS = "/sbin/cardctl eject";
+// remountS = "/sbin/cardctl insert";
}
if( currentText.find("SD",0,TRUE) != -1) {
- umountS = "/etc/sdcontrol compeject";
- remountS = "/etc/sdcontrol insert";
+ umountS = "umount ";
+ remountS = "mount ";
+// umountS = "/etc/sdcontrol compeject";
+// remountS = "/etc/sdcontrol insert";
}
- switch ( QMessageBox::warning(this,tr("Format?!?"),tr("Really format\n") + currentText +
- tr("\nwith ") + fs + tr(" filesystem?!?"),tr("Yes"),tr("No"),0,1,1) ) {
+ switch ( QMessageBox::warning(this,tr("Format?!?"),tr("Really format\n") +diskName+" "+ currentText +
+ tr("\nwith ") + fs + tr(" filesystem?!?\nYou will loose all data!!"),tr("Yes"),tr("No"),0,1,1) ) {
case 0: {
if(fs == "vfat")
- cmd = "mkdosfs " + cmd;
+ cmd = "mkdosfs -v " + diskDevice+" 2>&1";
else if(fs == "ext2")
- cmd = "mke2fs " + cmd;
+ cmd = "mke2fs -v " + diskDevice+" 2>&1";
else {
QMessageBox::warning(this, tr("Formatter"),tr("Could not format.\nUnknown type"), tr("Ok"));
break;
@@ -205,58 +221,95 @@ void FormatterApp::doFormat() {
qApp->processEvents();
FILE *fp;
char line[130];
- outDlg->OutputEdit->append( tr("Trying to eject.") + currentText );
+ outDlg->OutputEdit->append( tr("Trying to umount.") + currentText );
+ outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
+
sleep(1);
+ qDebug("Command is "+umountS);
fp = popen( (const char *) umountS, "r");
+ qDebug("%d", fp);
if ( !fp ) {
- qDebug("Could not execute '" + umountS + "'! err=%d", fp);
- QMessageBox::warning( this, tr("CardMonitor"), tr("Card eject failed!"), tr("&OK") );
+ qDebug("Could not execute '" + umountS + "'! err=%d\n" +(QString)strerror(errno), err);
+ QMessageBox::warning( this, tr("Formatter"), tr("umount failed!"), tr("&OK") );
pclose(fp);
return;
} else {
- outDlg->OutputEdit->append( currentText + tr("\nhas been successfully ejected."));
-
+// outDlg->OutputEdit->append( currentText + tr("\nhas been successfully umounted."));
+// outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
while ( fgets( line, sizeof line, fp)) {
- outDlg->OutputEdit->append(line);
+ if( ((QString)line).find("busy",0,TRUE) != -1) {
+ qDebug("Could not find '" + umountS);
+ QMessageBox::warning( this, tr("Formatter"), tr("Could not umount.\nDevice is busy!"), tr("&OK") );
+ pclose(fp);
+ return;
+ } else {
+ QString lineStr = line;
+ lineStr=lineStr.left(lineStr.length()-1);
+ outDlg->OutputEdit->append(lineStr);
+ outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
+ }
}
}
pclose(fp);
-// err = system( (const char *) umountS);
qDebug("Command would be: "+cmd);
outDlg->OutputEdit->append( tr("Trying to format.") );
+ outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
fp = popen( (const char *) cmd, "r");
while ( fgets( line, sizeof line, fp)) {
- outDlg->OutputEdit->append(line);
+ if( ((QString)line).find("No such device",0,TRUE) != -1) {
+ qDebug("No such device '" + umountS);
+ QMessageBox::warning( this, tr("Formatter"), tr("No such device!"), tr("&OK") );
+ pclose(fp);
+// outDlg->OutputEdit->append("No such device");
+// outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
+ return;
+ } else {
+ QString lineStr = line;
+ lineStr=lineStr.left(lineStr.length()-1);
+ outDlg->OutputEdit->append(lineStr);
+ outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
+ }
}
outDlg->OutputEdit->append( currentText + tr("\nhas been successfully formatted."));
+ outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
pclose(fp);
- outDlg->OutputEdit->append( tr("Trying to insert.") + currentText );
+ outDlg->OutputEdit->append( tr("Trying to mount.") + currentText );
+ outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
fp = popen( (const char *) remountS, "r");
if ( !fp) {
- qDebug("Could not execute '" + remountS + "'! err=%d", err);
- QMessageBox::warning( this, tr("Formatter"), tr("Card insert failed!"), tr("&OK") );
+ qDebug("Could not execute '" + remountS + "'! err=%d\n" +(QString)strerror(errno), err);
+ QMessageBox::warning( this, tr("Formatter"), tr("Card mount failed!"), tr("&OK") );
} else {
- outDlg->OutputEdit->append( currentText + tr("\nhas been successfully inserted."));
+ outDlg->OutputEdit->append( currentText + tr("\nhas been successfully mounted."));
while ( fgets( line, sizeof line, fp)) {
- outDlg->OutputEdit->append(line);
+ QString lineStr = line;
+ lineStr=lineStr.left(lineStr.length()-1);
+ outDlg->OutputEdit->append(lineStr);
+ outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
}
}
pclose(fp);
sleep(1);
outDlg->OutputEdit->append(tr("You can now close the output window."));
- outDlg->close();
- if(outDlg)
- delete outDlg;
+ outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
+// outDlg->close();
+// if(outDlg)
+// delete outDlg;
}
break;
};
}
+bool FormatterApp::doFdisk() {
+ return FALSE;
+
+}
+
void FormatterApp::fillCombos() {
StorageInfo storageInfo;
@@ -406,7 +459,7 @@ QString FormatterApp::getFileSystemType(const QString &currentText) {
return "";
}
-void FormatterApp::doFsck() {
+bool FormatterApp::doFsck() {
QString selectedDevice = deviceComboBox->currentText();
QString fsType = getFileSystemType((const QString &)selectedDevice);
@@ -416,4 +469,20 @@ void FormatterApp::doFsck() {
if(fsType == "ext2") cmd = "e2fsck -cpvy ";
cmd += selectedDevice;
+
+ return FALSE;
+}
+
+bool FormatterApp::doFsckCheck() {
+ return FALSE;
+}
+
+int FormatterApp::formatCheck(const QString &deviceStr) {
+
+ return -1;
+}
+
+int FormatterApp::runCommand(const QString &command) {
+
+ return -1;
}
diff --git a/noncore/tools/formatter/formatter.h b/noncore/tools/formatter/formatter.h
index a566ec0..871054d 100644
--- a/noncore/tools/formatter/formatter.h
+++ b/noncore/tools/formatter/formatter.h
@@ -44,16 +44,22 @@ protected:
QGridLayout *FormatterAppLayout, *tabLayout, *tabLayout_2;
QString getFileSystemType(const QString &);
-protected slots:
- void doFormat();
void fillCombos();
+ void parsetab();
+ bool doFdisk();
+ int formatCheck(const QString &);
+ int runCommand(const QString &);
+
+protected slots:
void cleanUp();
+ void doFormat();
+ void editFstab();
+ bool doFsck();
+ bool doFsckCheck();
+
void fsComboSelected(int);
void storageComboSelected(int );
void deviceComboSelected(int );
- void editFstab();
- void parsetab();
- void doFsck();
};
#endif // FORMATTERAPP_H