aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFritz Elfert <felfert@to.com>2001-03-06 17:13:01 +0000
committerFritz Elfert <felfert@to.com>2001-03-06 17:13:01 +0000
commitfd8c3ec28d9f721e15ee89de412ad565f94e79d3 (patch)
tree70360d190779249f9bd33150cfa0052d64d81e7a
parent276db8fe7efa26e83310ecffddca044751fd4ab3 (diff)
downloadplptools-fd8c3ec28d9f721e15ee89de412ad565f94e79d3.tar.gz
plptools-fd8c3ec28d9f721e15ee89de412ad565f94e79d3.tar.bz2
plptools-fd8c3ec28d9f721e15ee89de412ad565f94e79d3.zip
KPsion: added format stuff.
-rw-r--r--kde2/kpsion/kpsion.cpp223
-rw-r--r--kde2/kpsion/kpsion.h2
-rw-r--r--kde2/kpsion/main.cpp33
-rw-r--r--kde2/kpsion/wizards.cpp9
-rw-r--r--kde2/po/de/kpsion.po317
-rw-r--r--kde2/po/kpsion.pot301
-rw-r--r--ncpd/ncp.cc2
-rw-r--r--ncpd/socketchan.cc258
-rw-r--r--plpbackup/plpbackup.cc10
-rw-r--r--plpftp/ftp.cc4
-rw-r--r--plpnfsd/main.cc5
11 files changed, 737 insertions, 427 deletions
diff --git a/kde2/kpsion/kpsion.cpp b/kde2/kpsion/kpsion.cpp
index 2e605d9..fad18da 100644
--- a/kde2/kpsion/kpsion.cpp
+++ b/kde2/kpsion/kpsion.cpp
@@ -388,7 +388,7 @@ bool KPsionBackupListView::
autoSelect(QString drive) {
KPsionCheckListItem *latest = NULL;
time_t stamp = 0;
-
+
drive += ":";
// Find latest full backup for given drive
KPsionCheckListItem *i = firstChild();
@@ -485,6 +485,8 @@ KPsionMainWindow::KPsionMainWindow()
SLOT(iconClicked(QIconViewItem *)));
connect(view, SIGNAL(onItem(QIconViewItem *)),
SLOT(iconOver(QIconViewItem *)));
+ connect(this, SIGNAL(rearrangeIcons(bool)), view,
+ SLOT(arrangeItemsInGrid(bool)));
KConfig *config = kapp->config();
config->setGroup("Psion");
QStringList uids = config->readListEntry("MachineUIDs");
@@ -714,7 +716,7 @@ queryPsion() {
for (int i = 0; i < 26; i++) {
if ((devbits & 1) != 0) {
PlpDrive drive;
- if (plpRfsv->devinfo(i, drive) == rfsv::E_PSI_GEN_NONE)
+ if (plpRfsv->devinfo('A' + i, drive) == rfsv::E_PSI_GEN_NONE)
insertDrive('A' + i, drive.getName().c_str());
}
devbits >>= 1;
@@ -738,6 +740,70 @@ queryPsion() {
}
statusBar()->changeItem(i18n("Connected to %1").arg(machineName),
STID_CONNECTION);
+ if (args->isSet("backup")) {
+ bool any = false;
+
+ QCStringList argl = args->getOptionList("backup");
+ QCStringList::Iterator it;
+
+ for (it = argl.begin(); it != argl.end(); ++it) {
+ QString drv((*it).upper());
+
+ for (QIconViewItem *i = view->firstItem(); i; i = i->nextItem()) {
+ if (i->key() == drv) {
+ i->setSelected(true);
+ any = true;
+ }
+ }
+ }
+ if (any) {
+ fullBackup = true;
+ doBackup();
+ }
+ return;
+ }
+ if (args->isSet("restore")) {
+ bool any = false;
+
+ QCStringList argl = args->getOptionList("restore");
+ QCStringList::Iterator it;
+
+ for (it = argl.begin(); it != argl.end(); ++it) {
+ QString drv((*it).upper());
+ if (drv == "Z") {
+ KMessageBox::sorry(this, i18n(
+ "<QT>The selected drive <B>Z:</B> is "
+ "a <B>ROM</B> drive and therefore cannot be restored.</QT>"));
+ continue;
+ }
+ for (QIconViewItem *i = view->firstItem(); i; i = i->nextItem()) {
+ if (i->key() == drv) {
+ i->setSelected(true);
+ any = true;
+ }
+ }
+ }
+ if (any)
+ slotStartRestore();
+ return;
+ }
+ if (args->isSet("format")) {
+ bool any = false;
+ QCStringList argl = args->getOptionList("format");
+ QCStringList::Iterator it;
+
+ for (it = argl.begin(); it != argl.end(); ++it) {
+ QString drv((*it).upper());
+ for (QIconViewItem *i = view->firstItem(); i; i = i->nextItem()) {
+ if (i->key() == drv) {
+ i->setSelected(true);
+ any = true;
+ }
+ }
+ }
+ KMessageBox::sorry(this, "Formatting is not yet implemented");
+ return;
+ }
}
QString KPsionMainWindow::
@@ -941,9 +1007,9 @@ doBackup() {
if (i->isSelected()) {
QString drv = i->key();
drv += ":";
- int drvNum = *(drv.data()) - 'A';
+ int drvChar = drv[0].latin1();
PlpDrive drive;
- if (plpRfsv->devinfo(drvNum, drive) != rfsv::E_PSI_GEN_NONE) {
+ if (plpRfsv->devinfo(drvChar, drive) != rfsv::E_PSI_GEN_NONE) {
statusBar()->changeItem(i18n("Connected to %1").arg(machineName),
STID_CONNECTION);
emit enableProgressText(false);
@@ -1194,12 +1260,12 @@ askOverwrite(PlpDirent e) {
KDialogBase::Cancel, KDialogBase::No,
KDialogBase::Cancel, this, "overwriteDialog", true, true,
QString::null, QString::null, i18n("Overwrite &All"));
-
+
QWidget *contents = new QWidget(&dialog);
QHBoxLayout * lay = new QHBoxLayout(contents);
lay->setSpacing(KDialog::spacingHint()*2);
lay->setMargin(KDialog::marginHint()*2);
-
+
lay->addStretch(1);
QLabel *label1 = new QLabel(contents);
label1->setPixmap(QMessageBox::standardIcon(QMessageBox::Warning,
@@ -1218,10 +1284,10 @@ askOverwrite(PlpDirent e) {
" Attributes: %7</P>"
"Do you want to overwrite it?</QT>").arg(fn).arg(os).arg(od).arg(oa).arg(ns).arg(nd).arg(na), contents));
lay->addStretch(1);
-
+
dialog.setMainWidget(contents);
dialog.enableButtonSeparator(false);
-
+
int result = dialog.exec();
switch (result) {
case KDialogBase::Yes:
@@ -1234,7 +1300,7 @@ askOverwrite(PlpDirent e) {
default: // Huh?
break;
}
-
+
return false; // Default
}
@@ -1431,6 +1497,126 @@ slotStartFormat() {
return;
formatRunning = true;
switchActions();
+
+ killSave();
+
+ for (QIconViewItem *i = view->firstItem(); i; i = i->nextItem()) {
+ if (i->isSelected() && (i->key() != "Z")) {
+ int handle;
+ int count;
+ QString drive = i->key();
+ const char dchar = drive[0].latin1();
+ QString dname("");
+
+ PlpDrive drv;
+ if (plpRfsv->devinfo(dchar - 'A', drv) == rfsv::E_PSI_GEN_NONE)
+ dname = QString(drv.getName().c_str());
+
+ statusBar()->changeItem(i18n("Formatting drive %1:").arg(dchar),
+ STID_CONNECTION);
+ update();
+
+ emit setProgressText(QString(""));
+ emit setProgress(0);
+ emit enableProgressText(true);
+
+ Enum<rfsv::errs> res = plpRpcs->formatOpen(dchar, handle, count);
+ if (res != rfsv::E_PSI_GEN_NONE) {
+ KMessageBox::error(this, i18n(
+ "<QT>Could not format drive %1:<BR/>"
+ "%2</QT>").arg(dchar).arg(KGlobal::locale()->translate(res)));
+ emit setProgress(0);
+ emit enableProgressText(false);
+ statusBar()->changeItem(i18n("Connected to %1").arg(machineName),
+ STID_CONNECTION);
+ continue;
+ }
+ progressTotal = 0;
+ progressLocal = count;
+ progressLocalCount = 0;
+ progressLocalPercent = -1;
+ updateProgress(0);
+ for (int i = 0; i < count; i++) {
+ updateProgress(i);
+ res = plpRpcs->formatRead(handle);
+ if (res != rfsv::E_PSI_GEN_NONE) {
+ KMessageBox::error(this, i18n(
+ "<QT>Error during format of drive %1:<BR/>"
+ "%2</QT>").arg(dchar).arg(KGlobal::locale()->translate(res)));
+ emit setProgress(0);
+ emit enableProgressText(false);
+ statusBar()->changeItem(
+ i18n("Connected to %1").arg(machineName),
+ STID_CONNECTION);
+ count = 0;
+ continue;
+ }
+ }
+ setDriveName(dchar, dname);
+ }
+ }
+
+ runRestore();
+
+ formatRunning = false;
+ switchActions();
+
+ emit setProgress(0);
+ emit enableProgressText(false);
+ statusBar()->changeItem(i18n("Connected to %1").arg(machineName),
+ STID_CONNECTION);
+ statusBar()->message(i18n("Format done"), 2000);
+}
+
+void KPsionMainWindow::
+setDriveName(const char dchar, QString dname) {
+ KDialogBase dialog(this, "drivenameDialog", true, i18n("Assign drive name"),
+ KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok,
+ true);
+
+ QWidget *w = new QWidget(&dialog);
+ QGridLayout *gl = new QGridLayout(w, 1, 1, KDialog::marginHint()*2,
+ KDialog::spacingHint()*2);
+
+ QLabel *l = new QLabel(i18n(
+ "<QT>Formatting of drive %1: finished. Please assign a name for "
+ "that drive.</QT>").arg(dchar), w);
+ gl->addMultiCellWidget(l, 0, 0, 0, 1);
+
+ l = new QLabel(i18n("New name of drive %1:").arg(dchar), w);
+ gl->addWidget(l, 1, 0);
+
+ KLineEdit *e = new KLineEdit(dname, w, "nameEntry");
+ gl->addWidget(e, 1, 1);
+
+ gl->setColStretch(1, 1);
+ dialog.setMainWidget(w);
+
+ int result = dialog.exec();
+ QString newname = QString("%1:").arg(dchar);
+ QString dstr;
+ dstr = dchar;
+
+ switch (result) {
+ case QDialog::Accepted:
+ if (!e->text().isEmpty()) {
+ Enum<rfsv::errs> res;
+ res = plpRfsv->setVolumeName(dchar, e->text());
+ if (res == rfsv::E_PSI_GEN_NONE)
+ newname = QString("%1 (%2:)").arg(e->text()).arg(dchar);
+ }
+ drives.replace(dchar, newname);
+ for (QIconViewItem *i = view->firstItem(); i; i = i->nextItem()) {
+ if (i->key() == dstr) {
+ i->setText(newname);
+ break;
+ }
+ }
+ emit rearrangeIcons(true);
+ break;
+ default: // Huh?
+ break;
+ }
}
void KPsionMainWindow::
@@ -1546,6 +1732,25 @@ killSave() {
plpRpcs->stopProgram(pbuf);
}
}
+ time_t tstart = time(0) + 5;
+ while (true) {
+ kapp->processEvents();
+ usleep(100000);
+ kapp->processEvents();
+ if ((res = plpRpcs->queryDrive('C', tmp)) != rfsv::E_PSI_GEN_NONE) {
+ cerr << "Could not get process list, Error: " << res << endl;
+ return;
+ }
+ if (tmp.empty())
+ break;
+ if (time(0) > tstart) {
+ KMessageBox::error(this, i18n(
+ "<QT>Could not stop all processes.<BR/>"
+ "Please stop running programs manually on the Psion, "
+ "then klick <B>Ok</B>."));
+ time_t tstart = time(0) + 5;
+ }
+ }
return;
}
diff --git a/kde2/kpsion/kpsion.h b/kde2/kpsion/kpsion.h
index 2543fa6..ce9430e 100644
--- a/kde2/kpsion/kpsion.h
+++ b/kde2/kpsion/kpsion.h
@@ -168,6 +168,7 @@ signals:
void setProgress(int, int);
void setProgressText(const QString &);
void enableProgressText(bool);
+ void rearrangeIcons(bool);
public slots:
void slotStartRestore();
@@ -201,6 +202,7 @@ private:
void runRestore();
void createIndex();
bool askOverwrite(PlpDirent e);
+ void setDriveName(const char dchar, QString dname);
rfsv *plpRfsv;
rpcs *plpRpcs;
diff --git a/kde2/kpsion/main.cpp b/kde2/kpsion/main.cpp
index c9c0a0f..5ccffc6 100644
--- a/kde2/kpsion/main.cpp
+++ b/kde2/kpsion/main.cpp
@@ -44,15 +44,14 @@ extern "C" {
static KCmdLineOptions options[] = {
- {"a", 0, 0},
+// {"a", 0, 0},
{"autobackup", I18N_NOOP("perform scheduled backup"), 0},
- {"b <drive>", 0, 0},
- {"backup <drive>", I18N_NOOP("perform backup"), 0},
- {"r <drive>", 0, 0},
- {"restore <drive>", I18N_NOOP("perform restore"), 0},
- {"f <drive>", 0, 0},
- {"format <drive>", I18N_NOOP("format drive"), 0},
- {"+drive", I18N_NOOP("The drive letter to backup/restore or format."), 0},
+// {"b <drv>", 0, 0},
+ {"backup <drv>", I18N_NOOP("perform backup"), 0},
+// {"r <drv>", 0, 0},
+ {"restore <drv>", I18N_NOOP("perform restore"), 0},
+// {"f <drv>", 0, 0},
+ {"format <drv>", I18N_NOOP("format drive"), 0},
{ 0, 0, 0},
};
@@ -84,9 +83,25 @@ int main(int argc, char **argv) {
wiz->exec();
}
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+
+ int acnt = 0;
+ if (args->isSet("backup"))
+ acnt++;
+ if (args->isSet("restore"))
+ acnt++;
+ if (args->isSet("format"))
+ acnt++;
+ if (args->isSet("autobackup"))
+ acnt++;
+
+ if (acnt > 1)
+ KCmdLineArgs::usage(i18n(
+ "The options are mutually exclusive. "
+ "I.e. You cannot specify more than one action at once."));
+
KPsionMainWindow *w = new KPsionMainWindow();
- KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
if (args->isSet("autobackup") && (!w->isConnected()))
return 0;
w->resize(300, 170);
diff --git a/kde2/kpsion/wizards.cpp b/kde2/kpsion/wizards.cpp
index 24cd121..62734b5 100644
--- a/kde2/kpsion/wizards.cpp
+++ b/kde2/kpsion/wizards.cpp
@@ -37,6 +37,7 @@
#include <klocale.h>
#include <kfiledialog.h>
#include <kmessagebox.h>
+#include <kstddirs.h>
#include <qlayout.h>
#include <qwhatsthis.h>
@@ -53,13 +54,7 @@ FirstTimeWizard::FirstTimeWizard(QWidget *parent, const char *name)
QWhatsThis::add(cancelButton(),
i18n("<QT>If you click this button, the setup of <B>KPSion</B> will be aborted and next time you start <B>KPsion</B>, it will run this setup again.</QT>"));
- // Getting the users home directory from the passwd-entry is MUCH safer
- // than getting it from $HOME !!! (Environments can be tweaked)
- struct passwd *pw = getpwuid(getuid());
- bdirDefault = QString((pw) ? pw->pw_dir : 0L);
- if (bdirDefault.isEmpty())
- bdirDefault = QDir::homeDirPath();
- bdirDefault += "/KPsionBackup";
+ bdirDefault = locateLocal("data", "kpsion/backups");
bdirCreated = "";
// Page 1
diff --git a/kde2/po/de/kpsion.po b/kde2/po/de/kpsion.po
index 7146209..e3c6219 100644
--- a/kde2/po/de/kpsion.po
+++ b/kde2/po/de/kpsion.po
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: plptools 0.7\n"
-"POT-Creation-Date: 2001-03-05 09:37+0100\n"
-"PO-Revision-Date: 2001-03-05 09:39CET\n"
+"POT-Creation-Date: 2001-03-06 17:49+0100\n"
+"PO-Revision-Date: 2001-03-06 17:50CET\n"
"Last-Translator: Fritz Elfert <felfert@to.com>\n"
"Language-Team: Deutsch <de@li.org>\n"
"MIME-Version: 1.0\n"
@@ -43,11 +43,11 @@ msgstr ""
msgid "Idle"
msgstr "Bereit"
-#: kpsion.cpp:499 wizards.cpp:232
+#: kpsion.cpp:501 wizards.cpp:227
msgid "off"
msgstr "aus"
-#: kpsion.cpp:503
+#: kpsion.cpp:505
msgid ""
"<qt>Here, you see your Psion's drives.<br/>Every drive is represented by an "
"Icon. If you click on it, it gets selected for the next operation. E.g.: "
@@ -61,65 +61,74 @@ msgstr ""
"abzuwählen.<br/>Wählen Sie beliebig viele Laufwerke und dann eine "
"Operation.</qt>"
-#: kpsion.cpp:566
+#: kpsion.cpp:573
msgid "Start &Format"
msgstr "Starte &Formatierung"
-#: kpsion.cpp:568
+#: kpsion.cpp:575
msgid "Start Full &Backup"
msgstr "Starte &Komplett-Sicherung"
-#: kpsion.cpp:571
+#: kpsion.cpp:578
msgid "Start &Incremental Backup"
msgstr "Starte &inkrementelle Sicherung"
-#: kpsion.cpp:573
+#: kpsion.cpp:580
msgid "Start &Restore"
msgstr "Starte &Rücksicherung"
-#: kpsion.cpp:587
+#: kpsion.cpp:594
msgid "Full backup of selected drive(s)"
msgstr "Komplett-Sicherung der ausgewählten Laufwerke"
-#: kpsion.cpp:589
+#: kpsion.cpp:596
msgid "Incremental backup of selected drive(s)"
msgstr "Inkrementelle Sicherung der ausgewählten Laufwerke"
-#: kpsion.cpp:591
+#: kpsion.cpp:598
msgid "Restore selected drive(s)"
msgstr "Sichere ausgewählte Laufwerke zurück"
-#: kpsion.cpp:593
+#: kpsion.cpp:600
msgid "Format selected drive(s)"
msgstr "Formatiere ausgewählte Laufwerke"
-#: kpsion.cpp:664
+#: kpsion.cpp:671
msgid "Retrieving machine info ..."
msgstr "Ermittle Geräte-Info ..."
-#: kpsion.cpp:675
+#: kpsion.cpp:682
msgid "Could not get Psion machine info"
msgstr "Konnte Psion Geräteinfo nicht ermitteln"
-#: kpsion.cpp:688
+#: kpsion.cpp:695
msgid "an unknown machine"
msgstr "einem unbekannten Gerät"
-#: kpsion.cpp:701
+#: kpsion.cpp:708
msgid "Retrieving drive list ..."
msgstr "Ermittle Laufwerks-Liste ..."
-#: kpsion.cpp:704
+#: kpsion.cpp:711
msgid "Could not get list of drives"
msgstr "Konnte Liste der Laufwerke nicht ermitteln"
-#: kpsion.cpp:722 kpsion.cpp:913 kpsion.cpp:935 kpsion.cpp:958 kpsion.cpp:1068
-#: kpsion.cpp:1245 kpsion.cpp:1376 kpsion.cpp:1385
+#: kpsion.cpp:741 kpsion.cpp:1013 kpsion.cpp:1035 kpsion.cpp:1058
+#: kpsion.cpp:1168 kpsion.cpp:1345 kpsion.cpp:1476 kpsion.cpp:1485
+#: kpsion.cpp:1530 kpsion.cpp:1549 kpsion.cpp:1566
#, c-format
msgid "Connected to %1"
msgstr "Verbunden mit %1"
-#: kpsion.cpp:739
+#: kpsion.cpp:775
+msgid ""
+"<QT>The selected drive <B>Z:</B> is a <B>ROM</B> drive and therefore cannot "
+"be restored.</QT>"
+msgstr ""
+"<QT>Das gewählte Laufwerk <B>Z:</B> ist ein <B>ROM</B> Laufwerk und kann "
+"deshalb nicht rückgesichert werden.</QT>"
+
+#: kpsion.cpp:822
msgid ""
"A backup is running.\n"
"Do you really want to quit?"
@@ -127,7 +136,7 @@ msgstr ""
"Eine Sicherung läuft.\n"
"Wollen Sie wirklich das Programm beenden?"
-#: kpsion.cpp:741
+#: kpsion.cpp:824
msgid ""
"A restore is running.\n"
"Do you really want to quit?"
@@ -135,7 +144,7 @@ msgstr ""
"Eine Rücksicherung läuft.\n"
"Wollen Sie wirklich das Programm beenden?"
-#: kpsion.cpp:743
+#: kpsion.cpp:826
msgid ""
"A format is running.\n"
"Do you really want to quit?"
@@ -143,88 +152,88 @@ msgstr ""
"Eine Formatierung läuft.\n"
"Wollen Sie wirklich das Programm beenden?"
-#: kpsion.cpp:769
+#: kpsion.cpp:852
msgid "Connecting ..."
msgstr "Verbindungsaufbau ..."
-#: kpsion.cpp:771
+#: kpsion.cpp:854
msgid "RFSV could not connect to ncpd at %1:%2. "
msgstr "RFSV konnte ncpd auf %1:%2 nicht erreichen. "
-#: kpsion.cpp:774 kpsion.cpp:791 kpsion.cpp:810 kpsion.cpp:831
+#: kpsion.cpp:857 kpsion.cpp:879 kpsion.cpp:902 kpsion.cpp:927
msgid " (Retry in %1 seconds.)"
msgstr " (Wiederholung in %1 Sekunden.)"
-#: kpsion.cpp:786
+#: kpsion.cpp:874
#, c-format
msgid "RFSV could not establish link: %1."
msgstr "RFSV konnte keine Verbindung aufbauen: %1."
-#: kpsion.cpp:803
+#: kpsion.cpp:895
msgid "RPCS could not connect to ncpd at %1:%2."
msgstr "RPCS konnte ncpd auf %1:%2 nicht erreichen."
-#: kpsion.cpp:822
+#: kpsion.cpp:918
#, c-format
msgid "RPCS could not establish link: %1."
msgstr "RPCS konnte keine Verbindung aufbauen: %1."
-#: kpsion.cpp:917
+#: kpsion.cpp:1017
#, c-format
msgid "Could not retrieve drive details for drive %1"
msgstr "Konnte Details des Laufwerks %1 nicht ermitteln."
-#: kpsion.cpp:922
+#: kpsion.cpp:1022
#, c-format
msgid "Scanning drive %1"
msgstr "Durchsuche Laufwerk %1"
-#: kpsion.cpp:931
+#: kpsion.cpp:1031
msgid "%1 files need backup"
msgstr "%1 Dateien müssen gesichert werden"
-#: kpsion.cpp:937
+#: kpsion.cpp:1037
msgid "No files need backup"
msgstr "Keine Dateien zu sichern"
-#: kpsion.cpp:960
+#: kpsion.cpp:1060
#, c-format
msgid "Could not create backup folder %1"
msgstr "Konnte Sicherungs-Ordner %1 nicht anlegen."
-#: kpsion.cpp:984
+#: kpsion.cpp:1084
msgid "Backup %1% done"
msgstr "Sicherung %1% beendet"
-#: kpsion.cpp:1004
+#: kpsion.cpp:1104
msgid "<QT>Could not open<BR/><B>%1</B></QT>"
msgstr "<QT>Konnte<BR/><B>%1</B><BR/>nicht öffnen</QT>"
-#: kpsion.cpp:1024
+#: kpsion.cpp:1124
msgid "<QT>Could not read<BR/><B>%1</B></QT>"
msgstr "<QT>Konnte<BR/><B>%1</B><BR/>nicht lesen</QT>"
-#: kpsion.cpp:1037
+#: kpsion.cpp:1137
msgid "Resetting archive attributes"
msgstr "Setze Archiv-Attribute zurück"
-#: kpsion.cpp:1050
+#: kpsion.cpp:1150
msgid "<QT>Could not set attributes of<BR/><B>%1</B></QT>"
msgstr "<QT>Konnte Attribute der Datei<BR/><B>%1</B><BR/>nicht setzen</QT>"
-#: kpsion.cpp:1072
+#: kpsion.cpp:1172
msgid "Backup done"
msgstr "Sicherung beendet"
-#: kpsion.cpp:1076
+#: kpsion.cpp:1176
msgid "Restore"
msgstr "Rücksicherung"
-#: kpsion.cpp:1080
+#: kpsion.cpp:1180
msgid "Start"
msgstr "Start"
-#: kpsion.cpp:1083
+#: kpsion.cpp:1183
msgid ""
"Select items in the list of available backups, then click here to start "
"restore of these items."
@@ -232,21 +241,21 @@ msgstr ""
"Wählen Sie in der Liste der verfügbaren Sicherungen Dateien aus und "
"klicken Sie dann hier um die gewählten Dateien zu restaurieren."
-#: kpsion.cpp:1130 kpsion.cpp:1343
+#: kpsion.cpp:1230 kpsion.cpp:1443
msgid "<QT>Could not get attributes of<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr ""
"<QT>Konnte Attribute der Datei<BR/><B>%1</B> nicht abfragen<BR/>Grund: "
"%2</QT>"
-#: kpsion.cpp:1159
+#: kpsion.cpp:1259
msgid "Overwrite"
msgstr "Überschreiben"
-#: kpsion.cpp:1162
+#: kpsion.cpp:1262
msgid "Overwrite &All"
msgstr "Überschreibe &Alles"
-#: kpsion.cpp:1175
+#: kpsion.cpp:1275
msgid ""
"<QT>The file <B>%1</B> exists already on the Psion with different size "
"and/or attributes.<P><B>On the Psion:</B><BR/> Size: %2<BR/> Date: %3<BR/> "
@@ -254,50 +263,50 @@ msgid ""
"Attributes: %7</P>Do you want to overwrite it?</QT>"
msgstr ""
"<QT>Die Datei <B>%1</B> existiert bereits auf dem Psion mit abweichender "
-"Größe und/oder Attributen.<P><B>Auf dem Psion:</B><BR/> Größe: "
-"%2<BR/> Datum: %3<BR/> Attribute: "
-"%4</P><P><B>Sicherungsdatei:</B><BR/> Größe: %5<BR/> Datum: "
-"%6<BR/> Attribute: %7</P>Wollen Sie die Datei überschreiben?</QT>"
+"Größe und/oder Attributen.<P><B>Auf dem Psion:</B><BR/> Größe: %2<BR/> "
+"Datum: %3<BR/> Attribute: %4</P><P><B>Sicherungsdatei:</B><BR/> Größe: "
+"%5<BR/> Datum: %6<BR/> Attribute: %7</P>Wollen Sie die Datei "
+"überschreiben?</QT>"
-#: kpsion.cpp:1213
+#: kpsion.cpp:1313
msgid "Reading backups ..."
msgstr "Lese Sicherungsdaten ..."
-#: kpsion.cpp:1218
+#: kpsion.cpp:1318
msgid "Selecting backups ..."
msgstr "Wähle Sicherungsdaten ..."
-#: kpsion.cpp:1250
+#: kpsion.cpp:1350
msgid "Restore %1% done"
msgstr "Rücksicherung %1% abgeschlossen"
-#: kpsion.cpp:1298
+#: kpsion.cpp:1398
msgid "<QT>Could not create directory<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr "<QT>Konnte den Ordner<BR/><B>%1</B> nicht anlegen.<BR/>Grund: %2</QT>"
-#: kpsion.cpp:1313
+#: kpsion.cpp:1413
msgid "<QT>Could not create<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr "<QT>Konnte<BR/><B>%1</B> nicht anlegen<BR/>Grund: %2</QT>"
-#: kpsion.cpp:1335
+#: kpsion.cpp:1435
msgid "<QT>Could not write to<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr "<QT>Konnte nicht auf <BR/><B>%1</B> schreiben<BR/>Grund: %2</QT>"
-#: kpsion.cpp:1353
+#: kpsion.cpp:1453
msgid "<QT>Could not set attributes of<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr "<QT>Konnte Attribute der Datei<BR/><B>%1</B>nicht setzen.<BR/>Grund: %2</QT>"
-#: kpsion.cpp:1360
+#: kpsion.cpp:1460
msgid "<QT>Could not set modification time of<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr ""
"<QT>Konnte Änderungsdatum der Datei<BR/><B>%1</B> nicht setzen<BR/>Grund: "
"%2</QT>"
-#: kpsion.cpp:1387
+#: kpsion.cpp:1487
msgid "Restore done"
msgstr "Rücksicherung abgeschlossen"
-#: kpsion.cpp:1393
+#: kpsion.cpp:1493
msgid ""
"<QT>This erases <B>ALL</B> data on the drive(s).<BR/>Do you really want to "
"proceed?"
@@ -305,12 +314,50 @@ msgstr ""
"<QT>Hierdurch werden <B>ALLE</B> Daten auf dem(den) Laufwerk(en) "
"gelöscht.<BR/>Wollen Sie wirklich fortfahren?</QT>"
-#: kpsion.cpp:1510
+#: kpsion.cpp:1515
+msgid "Formatting drive %1:"
+msgstr "Formatiere Laufwerk %1:"
+
+#: kpsion.cpp:1526
+msgid "<QT>Could not format drive %1:<BR/>%2</QT>"
+msgstr "<QT>Konnte Laufwerk %1 nicht formatieren:<BR/>%2</QT>"
+
+#: kpsion.cpp:1544
+msgid "<QT>Error during format of drive %1:<BR/>%2</QT>"
+msgstr "<QT>Fehler beim Formatieren von Laufwerk %1:<BR/>%2</QT>"
+
+#: kpsion.cpp:1568
+msgid "Format done"
+msgstr "Formatierung beendet"
+
+#: kpsion.cpp:1573
+msgid "Assign drive name"
+msgstr "Weise Laufwerksnamen zu"
+
+#: kpsion.cpp:1582
+msgid ""
+"<QT>Formatting of drive %1: finished. Please assign a name for that "
+"drive.</QT>"
+msgstr ""
+"<QT>Die Formatierung des Laufwerks %1 ist beendet. Bitte weisen Sie dem "
+"Laufwerk nun einen Namen zu.</QT>"
+
+#: kpsion.cpp:1586
+msgid "New name of drive %1:"
+msgstr "Neuer Name für Laufwerk %1:"
+
+#: kpsion.cpp:1730
#, c-format
msgid "Stopping %1"
msgstr "Stoppe %1"
-#: kpsion.cpp:1532
+#: kpsion.cpp:1748
+msgid ""
+"<QT>Could not stop all processes.<BR/>Please stop running programs manually "
+"on the Psion, then klick <B>Ok</B>."
+msgstr ""
+
+#: kpsion.cpp:1771
#, c-format
msgid "Starting %1"
msgstr "Starte %1"
@@ -347,22 +394,26 @@ msgstr "Führe Rücksicherung durch"
msgid "format drive"
msgstr "Formatiere Laufwerk"
-#: main.cpp:55
-msgid "The drive letter to backup/restore or format."
-msgstr "Der Buchstabe des zu bearbeitenden Laufwerks."
-
-#: main.cpp:60
+#: main.cpp:59
msgid "KPsion"
msgstr "KPsion"
-#: main.cpp:61
+#: main.cpp:60
msgid "Psion connectivity utility"
msgstr "Werkzeug für Psion PDA"
-#: main.cpp:66
+#: main.cpp:65
msgid "Original Developer/Maintainer"
msgstr "Original Entwickler/Betreuer"
+#: main.cpp:100
+msgid ""
+"The options are mutually exclusive. I.e. You cannot specify more than one "
+"action at once."
+msgstr ""
+"Die Optionen schließen sich gegenseitig aus. D.h. sie können nicht mehrere "
+"unterschiedliche Aktionen gleichzeitig angeben."
+
#: setupdialog.cpp:20
msgid "&General"
msgstr "&Allgemein"
@@ -371,11 +422,11 @@ msgstr "&Allgemein"
msgid "Backup &directory"
msgstr "&Ordner für Sicherungen"
-#: setupdialog.cpp:30 wizards.cpp:109
+#: setupdialog.cpp:30 wizards.cpp:104
msgid "Browse"
msgstr "Durchsuchen"
-#: setupdialog.cpp:33 wizards.cpp:182
+#: setupdialog.cpp:33 wizards.cpp:177
msgid "Backup &generations"
msgstr "Sicherungs-&Generationen"
@@ -401,19 +452,19 @@ msgstr "%1 %2 von %3"
msgid "KPsionStatusBarProgress"
msgstr "KPsionStatusBarProgress"
-#: wizards.cpp:48
+#: wizards.cpp:49
msgid "KPsion Setup"
msgstr "KPsion Einstellungen"
-#: wizards.cpp:50 wizards.cpp:433
+#: wizards.cpp:51 wizards.cpp:428
msgid "Click this button to continue with the next page."
msgstr "Betätigen Sie diese Schaltfläche um mit der nächsten Seite fortzufahren."
-#: wizards.cpp:52 wizards.cpp:435
+#: wizards.cpp:53 wizards.cpp:430
msgid "Click this button, to go to a previous page."
msgstr "Betätigen Sie diese Schaltfläche, um zur vorigen Seite zu kommen."
-#: wizards.cpp:54
+#: wizards.cpp:55
msgid ""
"<QT>If you click this button, the setup of <B>KPSion</B> will be aborted and "
"next time you start <B>KPsion</B>, it will run this setup again.</QT>"
@@ -422,7 +473,7 @@ msgstr ""
"<B>KPsion</B> abgebrochen. Beim nächsten Start von <B>KPsion</B> wird dann "
"die Konfiguration erneut gestartet.</QT>"
-#: wizards.cpp:71
+#: wizards.cpp:66
msgid ""
"<QT><H2>Welcome to KPsion!</H2>It looks like you started <B>KPsion</B> the "
"first time. At least, i could not find any valid configuration.</BR>On the "
@@ -435,11 +486,11 @@ msgstr ""
"sammeln, die für die Arbeit mit <B>KPsion</B> nötig sind.</BR> </BR>Viel "
"Spaß.</QT>"
-#: wizards.cpp:88
+#: wizards.cpp:83
msgid "<QT><BIG><B>Welcome<B></BIG></QT>"
msgstr "<QT><BIG><B>Willkommen<B></BIG></QT>"
-#: wizards.cpp:96
+#: wizards.cpp:91
msgid ""
"<QT>First, we need a folder for storing backups of your Psion. You probably "
"don't want others to have access to it, so it's best to choose a location "
@@ -453,11 +504,11 @@ msgstr ""
"adäquate Stelle oder akzeptieren Sie einfach die unten angezeigte "
"Vorgabe.</QT>"
-#: wizards.cpp:112
+#: wizards.cpp:107
msgid "This is the name of the backup folder."
msgstr "Dies ist der Name des Sicherungs-Ordners."
-#: wizards.cpp:114
+#: wizards.cpp:109
msgid ""
"Click here, for opening a dialog which lets you easily select the backup "
"folder."
@@ -465,11 +516,11 @@ msgstr ""
"Aktivieren Sie diese Schaltfläche, um einen Dialog zu öffnen welcher es "
"Ihnen auf einfache Weise erlaubt, den Sicherungs-Ordner zu wählen."
-#: wizards.cpp:129
+#: wizards.cpp:124
msgid "<QT><BIG><B>Step 1</B></BIG> - Specify backup directory</QT>"
msgstr "<QT><BIG><B>Schritt 1</B></BIG> - Angabe des Sicherungs-Ordners</QT>"
-#: wizards.cpp:136
+#: wizards.cpp:131
msgid ""
"<QT>Next, please specify some information regarding backup "
"policy:<UL><LI>How many generations of backups do you want to "
@@ -481,63 +532,63 @@ msgstr ""
"aufheben?</LI><LI>Soll ich Sie an Sicherungen erinnern?</LI><LI>Wenn ja, in "
"welchen Intervallen?</LI></UL></QT>"
-#: wizards.cpp:146
+#: wizards.cpp:141
msgid "&Incremental backup reminder"
msgstr "Erinnerung an &inkrementelle Sicherung"
-#: wizards.cpp:149 wizards.cpp:167
+#: wizards.cpp:144 wizards.cpp:162
msgid "none"
msgstr "keine"
-#: wizards.cpp:150 wizards.cpp:168
+#: wizards.cpp:145 wizards.cpp:163
msgid "daily"
msgstr "täglich"
-#: wizards.cpp:151 wizards.cpp:169
+#: wizards.cpp:146 wizards.cpp:164
msgid "every 2 days"
msgstr "alle 2 Tage"
-#: wizards.cpp:152 wizards.cpp:170
+#: wizards.cpp:147 wizards.cpp:165
msgid "every 3 days"
msgstr "alle 3 Tage"
-#: wizards.cpp:153 wizards.cpp:171
+#: wizards.cpp:148 wizards.cpp:166
msgid "every 4 days"
msgstr "alle 4 Tage"
-#: wizards.cpp:154 wizards.cpp:172
+#: wizards.cpp:149 wizards.cpp:167
msgid "every 5 days"
msgstr "alle 5 Tage"
-#: wizards.cpp:155 wizards.cpp:173
+#: wizards.cpp:150 wizards.cpp:168
msgid "every 6 days"
msgstr "alle 6 Tage"
-#: wizards.cpp:156 wizards.cpp:174
+#: wizards.cpp:151 wizards.cpp:169
msgid "weekly"
msgstr "wöchentlich"
-#: wizards.cpp:157 wizards.cpp:175
+#: wizards.cpp:152 wizards.cpp:170
msgid "every 2 weeks"
msgstr "alle 2 Wochen"
-#: wizards.cpp:158 wizards.cpp:176
+#: wizards.cpp:153 wizards.cpp:171
msgid "every 3 weeks"
msgstr "alle 3 Wochen"
-#: wizards.cpp:159 wizards.cpp:177
+#: wizards.cpp:154 wizards.cpp:172
msgid "monthly"
msgstr "monatlich"
-#: wizards.cpp:164
+#: wizards.cpp:159
msgid "&Full backup reminder"
msgstr "Erinnerung an &Komplett-Sicherung"
-#: wizards.cpp:200
+#: wizards.cpp:195
msgid "<QT><BIG><B>Step 2</B></BIG> - Backup policy</QT>"
msgstr "<QT><BIG><B>Schritt 2</B></BIG> - Sicherungs-Strategie</QT>"
-#: wizards.cpp:208
+#: wizards.cpp:203
msgid ""
"<QT>If no connection could be established on startup, <B>KPsion</B> will "
"attempt to connect in regular intervals. Please specify the interval after "
@@ -558,55 +609,55 @@ msgstr ""
"Schnittstellengeschwindigkeit angeben</LI><LI>die Rechte zum Öffnen des "
"angegebenen Ports besitzen</LI></UL></QT>"
-#: wizards.cpp:223
+#: wizards.cpp:218
msgid "&Connection retry interval (sec.)"
msgstr "&Verbindungsaufbau-Intervall (in sek.)"
-#: wizards.cpp:229
+#: wizards.cpp:224
msgid "Serial &device"
msgstr "&Serielle Schnittstelle"
-#: wizards.cpp:233
+#: wizards.cpp:228
msgid "/dev/ttyS0"
msgstr "/dev/ttyS0"
-#: wizards.cpp:234
+#: wizards.cpp:229
msgid "/dev/ttyS1"
msgstr "/dev/ttyS1"
-#: wizards.cpp:235
+#: wizards.cpp:230
msgid "/dev/ttyS2"
msgstr "/dev/ttyS2"
-#: wizards.cpp:236
+#: wizards.cpp:231
msgid "/dev/ttyS3"
msgstr "/dev/ttyS3"
-#: wizards.cpp:237
+#: wizards.cpp:232
msgid "/dev/ircomm0"
msgstr "/dev/ircomm0"
-#: wizards.cpp:238
+#: wizards.cpp:233
msgid "/dev/ircomm1"
msgstr "/dev/ircomm1"
-#: wizards.cpp:239
+#: wizards.cpp:234
msgid "/dev/ircomm2"
msgstr "/dev/ircomm2"
-#: wizards.cpp:240
+#: wizards.cpp:235
msgid "/dev/ircomm3"
msgstr "/dev/ircomm3"
-#: wizards.cpp:245
+#: wizards.cpp:240
msgid "Serial &speed"
msgstr "Schnittstellen-&Geschwindigkeit"
-#: wizards.cpp:269
+#: wizards.cpp:264
msgid "<QT><BIG><B>Step 3</B></BIG> - Connection parameters</QT>"
msgstr "<QT><BIG><B>Schritt 3</B></BIG> - Verbindungs-Parameter</QT>"
-#: wizards.cpp:277
+#: wizards.cpp:272
msgid ""
"<QT>That's it!<BR/>Next, i will start <B>KPsion</B> and if your Psion is "
"already connected and it's communication turned on (use <B>Ctrl-T</B> at "
@@ -622,15 +673,15 @@ msgstr ""
"durchzuführen.<BR/>Bitte betätigen Sie nun die Schaltfläche "
"<B>Abschließen</B>.</QT>"
-#: wizards.cpp:296
+#: wizards.cpp:291
msgid "<QT><BIG><B>Finished</B></BIG></QT>"
msgstr "<QT><BIG><B>Fertig<B></BIG></QT>"
-#: wizards.cpp:304
+#: wizards.cpp:299
msgid "Backup folder"
msgstr "Sicherungs-Ordner"
-#: wizards.cpp:314
+#: wizards.cpp:309
msgid ""
"<QT>You are about to abort the initial setup of <B>KPsion</B>. No "
"configuration will be stored and you will have to repeat this procedure when "
@@ -641,17 +692,17 @@ msgstr ""
"Vorgang wiederholen müssen, wenn Sie <B>KPsion</B> das nächste Mal "
"starten.<BR/>Wollen Sie das Programm wirklich verlassen?</QT>"
-#: wizards.cpp:369
+#: wizards.cpp:364
msgid "<QT>The folder <B>%1</B> does <B>not</B> exist.<BR/>Shall it be created?</QT>"
msgstr ""
"<QT>Der Ordner <B>%1</B> existiert <B>nicht</B>.<BR/>Soll er angelegt "
"werden?</QT>"
-#: wizards.cpp:374
+#: wizards.cpp:369
msgid "<QT>The specified folder<BR/><B>%1</B><BR/>could <B>not</B> be created"
msgstr "<QT>Der angegebene Ordner<BR/><B>%1</B><BR/>konnte nicht angelegt werden"
-#: wizards.cpp:379
+#: wizards.cpp:374
msgid ""
", because you either don't have sufficient rights to do that, or the "
"filesystem is readonly."
@@ -659,15 +710,15 @@ msgstr ""
", weil Sie entweder nicht die nötigen Rechte besitzen, oder das Dateisystem "
"nur lesbar ist."
-#: wizards.cpp:383
+#: wizards.cpp:378
msgid ", because the filesystem has not enough space."
msgstr ", weil auf dem Dateisystem kein Platz mehr ist."
-#: wizards.cpp:389
+#: wizards.cpp:384
msgid ", because there already exists another object with the same name."
msgstr ", weil schon ein anderes Objekt mit dem selben Namen existiert."
-#: wizards.cpp:399
+#: wizards.cpp:394
msgid ""
", because you specified a path which probably contains a dangling symbolic "
"link."
@@ -675,7 +726,7 @@ msgstr ""
", weil Sie eine Pfad angegeben haben, der eine nicht aufgelöste symbolische "
"Verknüpfung enthält."
-#: wizards.cpp:402
+#: wizards.cpp:397
msgid ""
", because you specified a path which contains an element which is not a "
"folder."
@@ -683,21 +734,21 @@ msgstr ""
", weil Sie eine Pfad angegeben haben, der ein Element enthält, welches kein "
"Ordner ist."
-#: wizards.cpp:406
+#: wizards.cpp:401
msgid ", because you specified a path which contains too many symbolic links."
msgstr ""
", weil Sie eine Pfad angegeben haben, der zu viele symbolische "
"Verknüpfungen enthält."
-#: wizards.cpp:413
+#: wizards.cpp:408
msgid "<BR/>Please select another folder.</QT>"
msgstr "<BR/>Bitte wählen Sie einen anderen Ordner.</QT>"
-#: wizards.cpp:429
+#: wizards.cpp:424
msgid "New Psion detected"
msgstr "Neuer Psion erkannt"
-#: wizards.cpp:437
+#: wizards.cpp:432
msgid ""
"<QT>If you click this button, the setup for the new connected Psion will be "
"aborted and next time you connect this Psion again, <B>KPsion</B> will run "
@@ -707,7 +758,7 @@ msgstr ""
"den neuen Psion nicht gespeichert. Beim nächsten Verbindungsaufbau mit "
"diesem Psion wird <B>KPsion</B> dann erneut diesen Dialog präsentieren.</QT>"
-#: wizards.cpp:446
+#: wizards.cpp:441
msgid ""
"<QT>The Psion with the unique ID <B>%1</B> is connected the first time. "
"Please assign a name to it.</QT>"
@@ -715,19 +766,19 @@ msgstr ""
"<QT>Zum Psion mit der ID <B>%1</B> wurde erstmalig Verbindung aufgenommen. "
"Bitte weisen Sie diesem Gerät einen Namen zu.</QT>"
-#: wizards.cpp:453
+#: wizards.cpp:448
msgid "&Name of new Psion"
msgstr "&Name des neuen Psion"
-#: wizards.cpp:455
+#: wizards.cpp:450
msgid "My new Psion"
msgstr "Mein neuer Psion"
-#: wizards.cpp:472
+#: wizards.cpp:467
msgid "<QT><BIG><B>New Psion detected<B></BIG></QT>"
msgstr "<QT><BIG><B>Neuer Psion erkannt<B></BIG></QT>"
-#: wizards.cpp:480
+#: wizards.cpp:475
msgid ""
"<QT>Please select the Drive(s), you want to be backed up when running in "
"unattended backup mode.</QT>"
@@ -735,19 +786,19 @@ msgstr ""
"<QT>Bitte wählen sie die Laufwerke aus, die bei einer automatischen "
"Sicherung gesichertwerden sollen.</QT>"
-#: wizards.cpp:488
+#: wizards.cpp:483
msgid "Available drives"
msgstr "Verfügbare Laufwerke"
-#: wizards.cpp:512
+#: wizards.cpp:507
msgid "<QT><BIG><B>Specify drives to backup<B></BIG></QT>"
msgstr "<QT><BIG><B>Wahl der zu sichernden Laufwerke<B></BIG></QT>"
-#: wizards.cpp:536
+#: wizards.cpp:531
msgid "The name cannot be empty."
msgstr "Der Name darf nicht leer sein."
-#: wizards.cpp:543
+#: wizards.cpp:538
msgid ""
"<QT>The name <B>%1</B> is already assigned to another machine.<BR/>Please "
"choose a different name.</QT>"
diff --git a/kde2/po/kpsion.pot b/kde2/po/kpsion.pot
index 7c0bd61..61591be 100644
--- a/kde2/po/kpsion.pot
+++ b/kde2/po/kpsion.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2001-03-05 09:37+0100\n"
+"POT-Creation-Date: 2001-03-06 17:49+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -40,11 +40,11 @@ msgstr ""
msgid "Idle"
msgstr ""
-#: kpsion.cpp:499 wizards.cpp:232
+#: kpsion.cpp:501 wizards.cpp:227
msgid "off"
msgstr ""
-#: kpsion.cpp:503
+#: kpsion.cpp:505
msgid ""
"<qt>Here, you see your Psion's drives.<br/>Every drive is represented by an "
"Icon. If you click on it, it gets selected for the next operation. E.g.: "
@@ -52,182 +52,189 @@ msgid ""
"again.<br/>Select as many drives a you want, then choose an operation.</qt>"
msgstr ""
-#: kpsion.cpp:566
+#: kpsion.cpp:573
msgid "Start &Format"
msgstr ""
-#: kpsion.cpp:568
+#: kpsion.cpp:575
msgid "Start Full &Backup"
msgstr ""
-#: kpsion.cpp:571
+#: kpsion.cpp:578
msgid "Start &Incremental Backup"
msgstr ""
-#: kpsion.cpp:573
+#: kpsion.cpp:580
msgid "Start &Restore"
msgstr ""
-#: kpsion.cpp:587
+#: kpsion.cpp:594
msgid "Full backup of selected drive(s)"
msgstr ""
-#: kpsion.cpp:589
+#: kpsion.cpp:596
msgid "Incremental backup of selected drive(s)"
msgstr ""
-#: kpsion.cpp:591
+#: kpsion.cpp:598
msgid "Restore selected drive(s)"
msgstr ""
-#: kpsion.cpp:593
+#: kpsion.cpp:600
msgid "Format selected drive(s)"
msgstr ""
-#: kpsion.cpp:664
+#: kpsion.cpp:671
msgid "Retrieving machine info ..."
msgstr ""
-#: kpsion.cpp:675
+#: kpsion.cpp:682
msgid "Could not get Psion machine info"
msgstr ""
-#: kpsion.cpp:688
+#: kpsion.cpp:695
msgid "an unknown machine"
msgstr ""
-#: kpsion.cpp:701
+#: kpsion.cpp:708
msgid "Retrieving drive list ..."
msgstr ""
-#: kpsion.cpp:704
+#: kpsion.cpp:711
msgid "Could not get list of drives"
msgstr ""
-#: kpsion.cpp:722 kpsion.cpp:913 kpsion.cpp:935 kpsion.cpp:958 kpsion.cpp:1068
-#: kpsion.cpp:1245 kpsion.cpp:1376 kpsion.cpp:1385
+#: kpsion.cpp:741 kpsion.cpp:1013 kpsion.cpp:1035 kpsion.cpp:1058
+#: kpsion.cpp:1168 kpsion.cpp:1345 kpsion.cpp:1476 kpsion.cpp:1485
+#: kpsion.cpp:1530 kpsion.cpp:1549 kpsion.cpp:1566
#, c-format
msgid "Connected to %1"
msgstr ""
-#: kpsion.cpp:739
+#: kpsion.cpp:775
+msgid ""
+"<QT>The selected drive <B>Z:</B> is a <B>ROM</B> drive and therefore cannot "
+"be restored.</QT>"
+msgstr ""
+
+#: kpsion.cpp:822
msgid ""
"A backup is running.\n"
"Do you really want to quit?"
msgstr ""
-#: kpsion.cpp:741
+#: kpsion.cpp:824
msgid ""
"A restore is running.\n"
"Do you really want to quit?"
msgstr ""
-#: kpsion.cpp:743
+#: kpsion.cpp:826
msgid ""
"A format is running.\n"
"Do you really want to quit?"
msgstr ""
-#: kpsion.cpp:769
+#: kpsion.cpp:852
msgid "Connecting ..."
msgstr ""
-#: kpsion.cpp:771
+#: kpsion.cpp:854
msgid "RFSV could not connect to ncpd at %1:%2. "
msgstr ""
-#: kpsion.cpp:774 kpsion.cpp:791 kpsion.cpp:810 kpsion.cpp:831
+#: kpsion.cpp:857 kpsion.cpp:879 kpsion.cpp:902 kpsion.cpp:927
msgid " (Retry in %1 seconds.)"
msgstr ""
-#: kpsion.cpp:786
+#: kpsion.cpp:874
#, c-format
msgid "RFSV could not establish link: %1."
msgstr ""
-#: kpsion.cpp:803
+#: kpsion.cpp:895
msgid "RPCS could not connect to ncpd at %1:%2."
msgstr ""
-#: kpsion.cpp:822
+#: kpsion.cpp:918
#, c-format
msgid "RPCS could not establish link: %1."
msgstr ""
-#: kpsion.cpp:917
+#: kpsion.cpp:1017
#, c-format
msgid "Could not retrieve drive details for drive %1"
msgstr ""
-#: kpsion.cpp:922
+#: kpsion.cpp:1022
#, c-format
msgid "Scanning drive %1"
msgstr ""
-#: kpsion.cpp:931
+#: kpsion.cpp:1031
msgid "%1 files need backup"
msgstr ""
-#: kpsion.cpp:937
+#: kpsion.cpp:1037
msgid "No files need backup"
msgstr ""
-#: kpsion.cpp:960
+#: kpsion.cpp:1060
#, c-format
msgid "Could not create backup folder %1"
msgstr ""
-#: kpsion.cpp:984
+#: kpsion.cpp:1084
msgid "Backup %1% done"
msgstr ""
-#: kpsion.cpp:1004
+#: kpsion.cpp:1104
msgid "<QT>Could not open<BR/><B>%1</B></QT>"
msgstr ""
-#: kpsion.cpp:1024
+#: kpsion.cpp:1124
msgid "<QT>Could not read<BR/><B>%1</B></QT>"
msgstr ""
-#: kpsion.cpp:1037
+#: kpsion.cpp:1137
msgid "Resetting archive attributes"
msgstr ""
-#: kpsion.cpp:1050
+#: kpsion.cpp:1150
msgid "<QT>Could not set attributes of<BR/><B>%1</B></QT>"
msgstr ""
-#: kpsion.cpp:1072
+#: kpsion.cpp:1172
msgid "Backup done"
msgstr ""
-#: kpsion.cpp:1076
+#: kpsion.cpp:1176
msgid "Restore"
msgstr ""
-#: kpsion.cpp:1080
+#: kpsion.cpp:1180
msgid "Start"
msgstr ""
-#: kpsion.cpp:1083
+#: kpsion.cpp:1183
msgid ""
"Select items in the list of available backups, then click here to start "
"restore of these items."
msgstr ""
-#: kpsion.cpp:1130 kpsion.cpp:1343
+#: kpsion.cpp:1230 kpsion.cpp:1443
msgid "<QT>Could not get attributes of<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr ""
-#: kpsion.cpp:1159
+#: kpsion.cpp:1259
msgid "Overwrite"
msgstr ""
-#: kpsion.cpp:1162
+#: kpsion.cpp:1262
msgid "Overwrite &All"
msgstr ""
-#: kpsion.cpp:1175
+#: kpsion.cpp:1275
msgid ""
"<QT>The file <B>%1</B> exists already on the Psion with different size "
"and/or attributes.<P><B>On the Psion:</B><BR/> Size: %2<BR/> Date: %3<BR/> "
@@ -235,55 +242,91 @@ msgid ""
"Attributes: %7</P>Do you want to overwrite it?</QT>"
msgstr ""
-#: kpsion.cpp:1213
+#: kpsion.cpp:1313
msgid "Reading backups ..."
msgstr ""
-#: kpsion.cpp:1218
+#: kpsion.cpp:1318
msgid "Selecting backups ..."
msgstr ""
-#: kpsion.cpp:1250
+#: kpsion.cpp:1350
msgid "Restore %1% done"
msgstr ""
-#: kpsion.cpp:1298
+#: kpsion.cpp:1398
msgid "<QT>Could not create directory<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr ""
-#: kpsion.cpp:1313
+#: kpsion.cpp:1413
msgid "<QT>Could not create<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr ""
-#: kpsion.cpp:1335
+#: kpsion.cpp:1435
msgid "<QT>Could not write to<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr ""
-#: kpsion.cpp:1353
+#: kpsion.cpp:1453
msgid "<QT>Could not set attributes of<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr ""
-#: kpsion.cpp:1360
+#: kpsion.cpp:1460
msgid ""
"<QT>Could not set modification time of<BR/><B>%1</B><BR/>Reason: %2</QT>"
msgstr ""
-#: kpsion.cpp:1387
+#: kpsion.cpp:1487
msgid "Restore done"
msgstr ""
-#: kpsion.cpp:1393
+#: kpsion.cpp:1493
msgid ""
"<QT>This erases <B>ALL</B> data on the drive(s).<BR/>Do you really want to "
"proceed?"
msgstr ""
-#: kpsion.cpp:1510
+#: kpsion.cpp:1515
+msgid "Formatting drive %1:"
+msgstr ""
+
+#: kpsion.cpp:1526
+msgid "<QT>Could not format drive %1:<BR/>%2</QT>"
+msgstr ""
+
+#: kpsion.cpp:1544
+msgid "<QT>Error during format of drive %1:<BR/>%2</QT>"
+msgstr ""
+
+#: kpsion.cpp:1568
+msgid "Format done"
+msgstr ""
+
+#: kpsion.cpp:1573
+msgid "Assign drive name"
+msgstr ""
+
+#: kpsion.cpp:1582
+msgid ""
+"<QT>Formatting of drive %1: finished. Please assign a name for that "
+"drive.</QT>"
+msgstr ""
+
+#: kpsion.cpp:1586
+msgid "New name of drive %1:"
+msgstr ""
+
+#: kpsion.cpp:1730
#, c-format
msgid "Stopping %1"
msgstr ""
-#: kpsion.cpp:1532
+#: kpsion.cpp:1748
+msgid ""
+"<QT>Could not stop all processes.<BR/>Please stop running programs manually "
+"on the Psion, then klick <B>Ok</B>."
+msgstr ""
+
+#: kpsion.cpp:1771
#, c-format
msgid "Starting %1"
msgstr ""
@@ -320,22 +363,24 @@ msgstr ""
msgid "format drive"
msgstr ""
-#: main.cpp:55
-msgid "The drive letter to backup/restore or format."
-msgstr ""
-
-#: main.cpp:60
+#: main.cpp:59
msgid "KPsion"
msgstr ""
-#: main.cpp:61
+#: main.cpp:60
msgid "Psion connectivity utility"
msgstr ""
-#: main.cpp:66
+#: main.cpp:65
msgid "Original Developer/Maintainer"
msgstr ""
+#: main.cpp:100
+msgid ""
+"The options are mutually exclusive. I.e. You cannot specify more than one "
+"action at once."
+msgstr ""
+
#: setupdialog.cpp:20
msgid "&General"
msgstr ""
@@ -344,11 +389,11 @@ msgstr ""
msgid "Backup &directory"
msgstr ""
-#: setupdialog.cpp:30 wizards.cpp:109
+#: setupdialog.cpp:30 wizards.cpp:104
msgid "Browse"
msgstr ""
-#: setupdialog.cpp:33 wizards.cpp:182
+#: setupdialog.cpp:33 wizards.cpp:177
msgid "Backup &generations"
msgstr ""
@@ -374,25 +419,25 @@ msgstr ""
msgid "KPsionStatusBarProgress"
msgstr ""
-#: wizards.cpp:48
+#: wizards.cpp:49
msgid "KPsion Setup"
msgstr ""
-#: wizards.cpp:50 wizards.cpp:433
+#: wizards.cpp:51 wizards.cpp:428
msgid "Click this button to continue with the next page."
msgstr ""
-#: wizards.cpp:52 wizards.cpp:435
+#: wizards.cpp:53 wizards.cpp:430
msgid "Click this button, to go to a previous page."
msgstr ""
-#: wizards.cpp:54
+#: wizards.cpp:55
msgid ""
"<QT>If you click this button, the setup of <B>KPSion</B> will be aborted and "
"next time you start <B>KPsion</B>, it will run this setup again.</QT>"
msgstr ""
-#: wizards.cpp:71
+#: wizards.cpp:66
msgid ""
"<QT><H2>Welcome to KPsion!</H2>It looks like you started <B>KPsion</B> the "
"first time. At least, i could not find any valid configuration.</BR>On the "
@@ -400,11 +445,11 @@ msgid ""
"working with <B>KPsion</B>.</BR> </BR>Have fun.</QT>"
msgstr ""
-#: wizards.cpp:88
+#: wizards.cpp:83
msgid "<QT><BIG><B>Welcome<B></BIG></QT>"
msgstr ""
-#: wizards.cpp:96
+#: wizards.cpp:91
msgid ""
"<QT>First, we need a folder for storing backups of your Psion. You probably "
"don't want others to have access to it, so it's best to choose a location "
@@ -412,21 +457,21 @@ msgid ""
"select a suitable location or simply accept the default shown below.</QT>"
msgstr ""
-#: wizards.cpp:112
+#: wizards.cpp:107
msgid "This is the name of the backup folder."
msgstr ""
-#: wizards.cpp:114
+#: wizards.cpp:109
msgid ""
"Click here, for opening a dialog which lets you easily select the backup "
"folder."
msgstr ""
-#: wizards.cpp:129
+#: wizards.cpp:124
msgid "<QT><BIG><B>Step 1</B></BIG> - Specify backup directory</QT>"
msgstr ""
-#: wizards.cpp:136
+#: wizards.cpp:131
msgid ""
"<QT>Next, please specify some information regarding backup "
"policy:<UL><LI>How many generations of backups do you want to "
@@ -434,63 +479,63 @@ msgid ""
"intervals do you want to happen backups?</LI></UL></QT>"
msgstr ""
-#: wizards.cpp:146
+#: wizards.cpp:141
msgid "&Incremental backup reminder"
msgstr ""
-#: wizards.cpp:149 wizards.cpp:167
+#: wizards.cpp:144 wizards.cpp:162
msgid "none"
msgstr ""
-#: wizards.cpp:150 wizards.cpp:168
+#: wizards.cpp:145 wizards.cpp:163
msgid "daily"
msgstr ""
-#: wizards.cpp:151 wizards.cpp:169
+#: wizards.cpp:146 wizards.cpp:164
msgid "every 2 days"
msgstr ""
-#: wizards.cpp:152 wizards.cpp:170
+#: wizards.cpp:147 wizards.cpp:165
msgid "every 3 days"
msgstr ""
-#: wizards.cpp:153 wizards.cpp:171
+#: wizards.cpp:148 wizards.cpp:166
msgid "every 4 days"
msgstr ""
-#: wizards.cpp:154 wizards.cpp:172
+#: wizards.cpp:149 wizards.cpp:167
msgid "every 5 days"
msgstr ""
-#: wizards.cpp:155 wizards.cpp:173
+#: wizards.cpp:150 wizards.cpp:168
msgid "every 6 days"
msgstr ""
-#: wizards.cpp:156 wizards.cpp:174
+#: wizards.cpp:151 wizards.cpp:169
msgid "weekly"
msgstr ""
-#: wizards.cpp:157 wizards.cpp:175
+#: wizards.cpp:152 wizards.cpp:170
msgid "every 2 weeks"
msgstr ""
-#: wizards.cpp:158 wizards.cpp:176
+#: wizards.cpp:153 wizards.cpp:171
msgid "every 3 weeks"
msgstr ""
-#: wizards.cpp:159 wizards.cpp:177
+#: wizards.cpp:154 wizards.cpp:172
msgid "monthly"
msgstr ""
-#: wizards.cpp:164
+#: wizards.cpp:159
msgid "&Full backup reminder"
msgstr ""
-#: wizards.cpp:200
+#: wizards.cpp:195
msgid "<QT><BIG><B>Step 2</B></BIG> - Backup policy</QT>"
msgstr ""
-#: wizards.cpp:208
+#: wizards.cpp:203
msgid ""
"<QT>If no connection could be established on startup, <B>KPsion</B> will "
"attempt to connect in regular intervals. Please specify the interval after "
@@ -501,55 +546,55 @@ msgid ""
"rate</LI><LI>have permission to use the specified port</LI></UL></QT>"
msgstr ""
-#: wizards.cpp:223
+#: wizards.cpp:218
msgid "&Connection retry interval (sec.)"
msgstr ""
-#: wizards.cpp:229
+#: wizards.cpp:224
msgid "Serial &device"
msgstr ""
-#: wizards.cpp:233
+#: wizards.cpp:228
msgid "/dev/ttyS0"
msgstr ""
-#: wizards.cpp:234
+#: wizards.cpp:229
msgid "/dev/ttyS1"
msgstr ""
-#: wizards.cpp:235
+#: wizards.cpp:230
msgid "/dev/ttyS2"
msgstr ""
-#: wizards.cpp:236
+#: wizards.cpp:231
msgid "/dev/ttyS3"
msgstr ""
-#: wizards.cpp:237
+#: wizards.cpp:232
msgid "/dev/ircomm0"
msgstr ""
-#: wizards.cpp:238
+#: wizards.cpp:233
msgid "/dev/ircomm1"
msgstr ""
-#: wizards.cpp:239
+#: wizards.cpp:234
msgid "/dev/ircomm2"
msgstr ""
-#: wizards.cpp:240
+#: wizards.cpp:235
msgid "/dev/ircomm3"
msgstr ""
-#: wizards.cpp:245
+#: wizards.cpp:240
msgid "Serial &speed"
msgstr ""
-#: wizards.cpp:269
+#: wizards.cpp:264
msgid "<QT><BIG><B>Step 3</B></BIG> - Connection parameters</QT>"
msgstr ""
-#: wizards.cpp:277
+#: wizards.cpp:272
msgid ""
"<QT>That's it!<BR/>Next, i will start <B>KPsion</B> and if your Psion is "
"already connected and it's communication turned on (use <B>Ctrl-T</B> at "
@@ -558,112 +603,112 @@ msgid ""
"Backup.<BR/>Please click <B>Finish</B> now.</QT>"
msgstr ""
-#: wizards.cpp:296
+#: wizards.cpp:291
msgid "<QT><BIG><B>Finished</B></BIG></QT>"
msgstr ""
-#: wizards.cpp:304
+#: wizards.cpp:299
msgid "Backup folder"
msgstr ""
-#: wizards.cpp:314
+#: wizards.cpp:309
msgid ""
"<QT>You are about to abort the initial setup of <B>KPsion</B>. No "
"configuration will be stored and you will have to repeat this procedure when "
"you start <B>KPsion</B> next time.<BR/>Do you really want to exit now?</QT>"
msgstr ""
-#: wizards.cpp:369
+#: wizards.cpp:364
msgid ""
"<QT>The folder <B>%1</B> does <B>not</B> exist.<BR/>Shall it be created?</QT>"
msgstr ""
-#: wizards.cpp:374
+#: wizards.cpp:369
msgid "<QT>The specified folder<BR/><B>%1</B><BR/>could <B>not</B> be created"
msgstr ""
-#: wizards.cpp:379
+#: wizards.cpp:374
msgid ""
", because you either don't have sufficient rights to do that, or the "
"filesystem is readonly."
msgstr ""
-#: wizards.cpp:383
+#: wizards.cpp:378
msgid ", because the filesystem has not enough space."
msgstr ""
-#: wizards.cpp:389
+#: wizards.cpp:384
msgid ", because there already exists another object with the same name."
msgstr ""
-#: wizards.cpp:399
+#: wizards.cpp:394
msgid ""
", because you specified a path which probably contains a dangling symbolic "
"link."
msgstr ""
-#: wizards.cpp:402
+#: wizards.cpp:397
msgid ""
", because you specified a path which contains an element which is not a "
"folder."
msgstr ""
-#: wizards.cpp:406
+#: wizards.cpp:401
msgid ", because you specified a path which contains too many symbolic links."
msgstr ""
-#: wizards.cpp:413
+#: wizards.cpp:408
msgid "<BR/>Please select another folder.</QT>"
msgstr ""
-#: wizards.cpp:429
+#: wizards.cpp:424
msgid "New Psion detected"
msgstr ""
-#: wizards.cpp:437
+#: wizards.cpp:432
msgid ""
"<QT>If you click this button, the setup for the new connected Psion will be "
"aborted and next time you connect this Psion again, <B>KPsion</B> will run "
"this setup again.</QT>"
msgstr ""
-#: wizards.cpp:446
+#: wizards.cpp:441
msgid ""
"<QT>The Psion with the unique ID <B>%1</B> is connected the first time. "
"Please assign a name to it.</QT>"
msgstr ""
-#: wizards.cpp:453
+#: wizards.cpp:448
msgid "&Name of new Psion"
msgstr ""
-#: wizards.cpp:455
+#: wizards.cpp:450
msgid "My new Psion"
msgstr ""
-#: wizards.cpp:472
+#: wizards.cpp:467
msgid "<QT><BIG><B>New Psion detected<B></BIG></QT>"
msgstr ""
-#: wizards.cpp:480
+#: wizards.cpp:475
msgid ""
"<QT>Please select the Drive(s), you want to be backed up when running in "
"unattended backup mode.</QT>"
msgstr ""
-#: wizards.cpp:488
+#: wizards.cpp:483
msgid "Available drives"
msgstr ""
-#: wizards.cpp:512
+#: wizards.cpp:507
msgid "<QT><BIG><B>Specify drives to backup<B></BIG></QT>"
msgstr ""
-#: wizards.cpp:536
+#: wizards.cpp:531
msgid "The name cannot be empty."
msgstr ""
-#: wizards.cpp:543
+#: wizards.cpp:538
msgid ""
"<QT>The name <B>%1</B> is already assigned to another machine.<BR/>Please "
"choose a different name.</QT>"
diff --git a/ncpd/ncp.cc b/ncpd/ncp.cc
index b3cf009..bf99cac 100644
--- a/ncpd/ncp.cc
+++ b/ncpd/ncp.cc
@@ -247,7 +247,7 @@ decodeControlMessage(bufferStore & buff)
// sent, which is rather crude, but works for Series 3
// and probably 5. If Symbian have changed EPOC Connect
// for the Series 5mx/7, this may need to change.
- //
+ //
if (ver == PV_SERIES_5 || ver == PV_SERIES_3) {
bufferStore b;
protocolVersion = ver;
diff --git a/ncpd/socketchan.cc b/ncpd/socketchan.cc
index fa1a40f..36dd8b5 100644
--- a/ncpd/socketchan.cc
+++ b/ncpd/socketchan.cc
@@ -35,188 +35,186 @@
#include "ppsocket.h"
socketChan:: socketChan(ppsocket * _skt, ncp * _ncpController):
- channel(_ncpController)
+ channel(_ncpController)
{
- skt = _skt;
- connectName = 0;
- connectTry = 0;
- connected = false;
+ skt = _skt;
+ connectName = 0;
+ connectTry = 0;
+ connected = false;
}
socketChan::~socketChan()
{
- skt->closeSocket();
- delete skt;
- if (connectName)
- free(connectName);
+ skt->closeSocket();
+ delete skt;
+ if (connectName)
+ free(connectName);
}
void socketChan::
ncpDataCallback(bufferStore & a)
{
- if (connectName != 0) {
- skt->sendBufferStore(a);
- } else
- cerr << "socketchan: Connect without name!!!\n";
+ if (connectName != 0) {
+ skt->sendBufferStore(a);
+ } else
+ cerr << "socketchan: Connect without name!!!\n";
}
char *socketChan::
getNcpConnectName()
{
- return connectName;
+ return connectName;
}
// NCP Command processing
bool socketChan::
ncpCommand(bufferStore & a)
{
-cerr << "socketChan:: received NCP command (" << a << ")" << endl;
- // str is guaranteed to begin with NCP$, and all NCP commands are
- // greater than or equal to 8 characters in length.
- const char *str = a.getString();
- // unsigned long len = a.getLen();
- bool ok = false;
-
- if (!strncmp(str+4, "INFO", 4)) {
- // Send information discovered during the receipt of the
- // NCON_MSG_NCP_INFO message.
- a.init();
- switch (ncpProtocolVersion()) {
- case PV_SERIES_3:
- a.addStringT("Series 3");
- break;
- case PV_SERIES_5:
- a.addStringT("Series 5");
- break;
- default:
- cerr << "ncpd: protocol version not known" << endl;
- a.addStringT("Unknown!");
- break;
- }
- skt->sendBufferStore(a);
- ok = true;
- } else if (!strncmp(str+4, "CONN", 4)) {
- // Connect to a channel that was placed in 'pending' mode, by
- // checking the channel table against the ID...
- // DO ME LATER
- ok = true;
- } else if (!strncmp(str+4, "CHAL", 4)) {
- // Challenge
- // The idea is that the channel stays in 'secure' mode until a
- // valid RESP is received
- // DO ME LATER
- ok = true;
- } else if (!strncmp(str+4, "RESP", 4)) {
- // Reponse - here is the plaintext as sent in the CHAL - the
- // channel will only open up if this matches what ncpd has for
- // the encrypted plaintext.
- // DO ME LATER
- ok = true;
+ cerr << "socketChan:: received NCP command (" << a << ")" << endl;
+ // str is guaranteed to begin with NCP$, and all NCP commands are
+ // greater than or equal to 8 characters in length.
+ const char *str = a.getString();
+ // unsigned long len = a.getLen();
+ bool ok = false;
+
+ if (!strncmp(str+4, "INFO", 4)) {
+ // Send information discovered during the receipt of the
+ // NCON_MSG_NCP_INFO message.
+ a.init();
+ switch (ncpProtocolVersion()) {
+ case PV_SERIES_3:
+ a.addStringT("Series 3");
+ break;
+ case PV_SERIES_5:
+ a.addStringT("Series 5");
+ break;
+ default:
+ cerr << "ncpd: protocol version not known" << endl;
+ a.addStringT("Unknown!");
+ break;
}
- return ok;
+ skt->sendBufferStore(a);
+ ok = true;
+ } else if (!strncmp(str+4, "CONN", 4)) {
+ // Connect to a channel that was placed in 'pending' mode, by
+ // checking the channel table against the ID...
+ // DO ME LATER
+ ok = true;
+ } else if (!strncmp(str+4, "CHAL", 4)) {
+ // Challenge
+ // The idea is that the channel stays in 'secure' mode until a
+ // valid RESP is received
+ // DO ME LATER
+ ok = true;
+ } else if (!strncmp(str+4, "RESP", 4)) {
+ // Reponse - here is the plaintext as sent in the CHAL - the
+ // channel will only open up if this matches what ncpd has for
+ // the encrypted plaintext.
+ // DO ME LATER
+ ok = true;
+ }
+ return ok;
}
void socketChan::
ncpConnectAck()
{
- bufferStore a;
- a.addStringT("Ok");
- skt->sendBufferStore(a);
- connected = true;
- connectTry = 3;
+ bufferStore a;
+ a.addStringT("Ok");
+ skt->sendBufferStore(a);
+ connected = true;
+ connectTry = 3;
}
void socketChan::
ncpConnectTerminate()
{
-// bufferStore a;
- connectTry = 0;
-// a.addStringT("Close");
-// skt->sendBufferStore(a);
- skt->closeSocket();
- terminateWhenAsked();
+ connectTry = 0;
+ skt->closeSocket();
+ terminateWhenAsked();
}
void socketChan::
ncpRegisterAck()
{
- connectTry++;
- ncpConnect();
+ connectTry++;
+ ncpConnect();
}
void socketChan::
ncpConnectNak()
{
- if (!connectName || (connectTry > 1))
- ncpConnectTerminate();
- else {
- connectTry++;
- ncpRegister();
- }
+ if (!connectName || (connectTry > 1))
+ ncpConnectTerminate();
+ else {
+ connectTry++;
+ ncpRegister();
+ }
}
void socketChan::
socketPoll()
{
- if (connectName == 0) {
- bufferStore a;
- if (skt->getBufferStore(a, false) == 1) {
- // A client has connected, and is announcing who it
- // is... e.g. "SYS$RFSV.*"
- //
- // An NCP Channel can be in 'Control' or 'Data' mode.
- // Initially, it is in 'Control' mode, and can accept
- // certain commands.
- //
- // When a command is received that ncpd does not
- // understand, this is assumed to be a request to
- // connect to the remote service of that name, and enter
- // 'data' mode.
- //
- // Later, there might be an explicit command to enter
- // 'data' mode, and also a challenge-response protocol
- // before any connection can be made.
- //
- // All commands begin with "NCP$".
-
- // There is a magic process name called "NCP$INFO.*"
- // which is announced by the rfsvfactory. This causes a
- // response to be issued containing the NCP version
- // number. The rfsvfactory will create the correct type
- // of RFSV protocol handler, which will then announce
- // itself. So, first time in here, we might get the
- // NCP$INFO.*
- if (a.getLen() > 8 && !strncmp(a.getString(), "NCP$", 4)) {
- if (!ncpCommand(a))
- cerr << "ncpd: command " << a << " unrecognised." << endl;
- return;
- }
-
- // This isn't a command, it's a remote process. Connect.
- connectName = strdup(a.getString());
- connectTry++;
- ncpConnect();
- }
- } else if (connected) {
- bufferStore a;
- int res = skt->getBufferStore(a, false);
- if (res == -1) {
- ncpDisconnect();
- skt->closeSocket();
- } else if (res == 1) {
-// if (a.getLen() > 4 &&
-// !strncmp(a.getString(), "Close", 5)) {
-// ncpDisconnect();
-// } else {
- ncpSend(a);
-// }
- }
+ if (connectName == 0) {
+ bufferStore a;
+ if (skt->getBufferStore(a, false) == 1) {
+ // A client has connected, and is announcing who it
+ // is... e.g. "SYS$RFSV.*"
+ //
+ // An NCP Channel can be in 'Control' or 'Data' mode.
+ // Initially, it is in 'Control' mode, and can accept
+ // certain commands.
+ //
+ // When a command is received that ncpd does not
+ // understand, this is assumed to be a request to
+ // connect to the remote service of that name, and enter
+ // 'data' mode.
+ //
+ // Later, there might be an explicit command to enter
+ // 'data' mode, and also a challenge-response protocol
+ // before any connection can be made.
+ //
+ // All commands begin with "NCP$".
+
+ // There is a magic process name called "NCP$INFO.*"
+ // which is announced by the rfsvfactory. This causes a
+ // response to be issued containing the NCP version
+ // number. The rfsvfactory will create the correct type
+ // of RFSV protocol handler, which will then announce
+ // itself. So, first time in here, we might get the
+ // NCP$INFO.*
+ if (a.getLen() > 8 && !strncmp(a.getString(), "NCP$", 4)) {
+ if (!ncpCommand(a))
+ cerr << "ncpd: command " << a << " unrecognized." << endl;
+ return;
+ }
+
+ // This isn't a command, it's a remote process. Connect.
+ connectName = strdup(a.getString());
+ connectTry++;
+ ncpConnect();
}
+ } else if (connected) {
+ bufferStore a;
+ int res = skt->getBufferStore(a, false);
+ if (res == -1) {
+ ncpDisconnect();
+ skt->closeSocket();
+ } else if (res == 1) {
+ ncpSend(a);
+ }
+ }
}
bool socketChan::
isConnected()
const {
- return connected;
+ return connected;
}
+
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * End:
+ */
diff --git a/plpbackup/plpbackup.cc b/plpbackup/plpbackup.cc
index adf8742..b10eff1 100644
--- a/plpbackup/plpbackup.cc
+++ b/plpbackup/plpbackup.cc
@@ -127,7 +127,7 @@ runrestore(rfsv *a, rpcs *r) {
return 1;
}
ip >> cmd >> arg;
-
+
if (strcmp(cmd, "#plpbackup") || strcmp(arg, "processlist")) {
ip.close();
cerr << "Error: " << psfile <<
@@ -247,7 +247,7 @@ mkdirp(char *path) {
*p = '\0';
switch (mkdir(path, S_IRWXU|S_IRWXG)) {
struct stat stbuf;
-
+
case 0:
break;
default:
@@ -346,7 +346,7 @@ main(int argc, char **argv)
cerr << "Could not get user's home directory from /etc/passwd" << endl;
exit(-1);
}
-
+
skt = new ppsocket();
if (!skt->connect(NULL, sockNum)) {
cerr << "plpbackup: could not connect to ncpd" << endl;
@@ -395,7 +395,7 @@ main(int argc, char **argv)
}
} else
cout << "all drives";
-
+
cout << " to " << dstPath << endl;
}
if (verbose > 0) {
@@ -415,7 +415,7 @@ main(int argc, char **argv)
if (a->devlist(devbits) == rfsv::E_PSI_GEN_NONE) {
for (i = 0; i < 26; i++) {
PlpDrive psidr;
- if ((devbits & 1) && a->devinfo(i, psidr) == rfsv::E_PSI_GEN_NONE) {
+ if ((devbits & 1) && a->devinfo(i + 'A', psidr) == rfsv::E_PSI_GEN_NONE) {
if (psidr.getMediaType() != 7) {
sprintf(drive, "%c:\0", 'A' + i);
if (verbose > 0)
diff --git a/plpftp/ftp.cc b/plpftp/ftp.cc
index 013a063..8141f2b 100644
--- a/plpftp/ftp.cc
+++ b/plpftp/ftp.cc
@@ -249,7 +249,7 @@ session(rfsv & a, rpcs & r, int xargc, char **xargv)
for (i = 0; i < 26; i++) {
PlpDrive drive;
- if ((devbits & 1) && a.devinfo(i, drive) == rfsv::E_PSI_GEN_NONE) {
+ if ((devbits & 1) && a.devinfo(i + 'A', drive) == rfsv::E_PSI_GEN_NONE) {
defDrive[0] = 'A' + i;
break;
}
@@ -419,7 +419,7 @@ session(rfsv & a, rpcs & r, int xargc, char **xargv)
PlpDrive drive;
if ((devbits & 1) != 0) {
- if (a.devinfo(i, drive) == rfsv::E_PSI_GEN_NONE)
+ if (a.devinfo(i + 'A', drive) == rfsv::E_PSI_GEN_NONE)
cout << (char) ('A' + i) << " " <<
hex << setw(4) << setfill('0') << drive.getMediaType() << " " <<
setw(12) << setfill(' ') << setiosflags(ios::left) <<
diff --git a/plpnfsd/main.cc b/plpnfsd/main.cc
index 89010fe..508649f 100644
--- a/plpnfsd/main.cc
+++ b/plpnfsd/main.cc
@@ -406,11 +406,10 @@ long rfsv_getattr(const char *name, long *attr, long *size, long *time) {
long rfsv_statdev(char letter) {
PlpDrive drive;
- u_int32_t devnum = letter - 'A';
if (!a)
return -1;
- return (a->devinfo(devnum, drive) != rfsv::E_PSI_GEN_NONE);
+ return (a->devinfo(letter, drive) != rfsv::E_PSI_GEN_NONE);
}
long rfsv_rename(const char *oldname, const char *newname) {
@@ -433,7 +432,7 @@ long rfsv_drivelist(int *cnt, device **dlist) {
PlpDrive drive;
if ((devbits & 1) &&
- ((a->devinfo(i, drive) == rfsv::E_PSI_GEN_NONE))) {
+ ((a->devinfo(i + 'A', drive) == rfsv::E_PSI_GEN_NONE))) {
device *next = *dlist;
*dlist = (device *)malloc(sizeof(device));