]> gitweb.hamatoma.de Git - reqt/commitdiff
rebackgui: selecting target works (linux)
authorhama <hama@siduction.net>
Wed, 27 Apr 2016 21:40:45 +0000 (23:40 +0200)
committerhama <hama@siduction.net>
Wed, 27 Apr 2016 21:40:45 +0000 (23:40 +0200)
appl/rebackgui/BackupUtils.cpp
appl/rebackgui/BackupUtils.hpp
appl/rebackgui/mainwindow.cpp
appl/rebackgui/mainwindow.hpp
appl/rebackgui/osconnect.pl
appl/rebackgui/rebackgui.de.qm
appl/rebackgui/rebackgui.de.ts

index 0e9538df522e49782647f12940ded28dc9779373..91891b412f05b2c0a0c952b999a87223614972aa 100644 (file)
@@ -30,6 +30,39 @@ QString BackupUtils::dateToString(const QDateTime &dateTime)
        QString rc = dateTime.toString("yyyy.MM.dd/hh:mm:ss");
        return rc;
 }
+/**
+ * Finds the system independent name of a target directory.
+ *
+ * Under linux: the result is a combination of the filesystem label
+ * and the relative path.
+ *
+ * @param path  the path of the mounted backup directory.
+ * @return      the abstract backup directory
+ */
+QString BackupUtils::findAbstractTarget(const QString& path, ReLogger* logger)
+{
+       QString rc;
+#if defined __linux__
+       QStringList args;
+       args << "/usr/local/bin/osconnect.pl"
+               << "find-label" << path;
+       QByteArray output = ReProcess::executeAndRead("/usr/bin/perl", args, 20);
+       QByteArrayList lines = output.split('\n');
+       if (lines.count() < 2){
+               logger->log(LOG_ERROR, LOC_FIND_TARGET_1, "missing lines from osconnect.pl");
+       } else if (lines.at(1).startsWith("+++")) {
+               logger->logv(LOG_ERROR, LOC_FIND_TARGET_2, "mounting failed: %s",
+                                       lines.at(1).mid(3).constData());
+       } else {
+               rc = QString::fromUtf8(lines.at(0)) + ";"
+                               + QString::fromUtf8(lines.at(1));
+       }
+#elif defined _WIN32
+       rc = ";" + path.mid(2);
+#endif
+       return rc;
+}
+
 
 /**
  * Finds the real path of a target directory.
index 3c417972514f722a7a2fc4a26cc693c03b7214ff..1f97ee120d981985990865bd3f498126cbcd525a 100644 (file)
@@ -18,6 +18,7 @@ public:
        BackupUtils();
 public:
        static QString dateToString(const QDateTime& dateTime);
+       static QString findAbstractTarget(const QString& path, ReLogger* logger);
        static QString findTarget(const BackupItem& item, ReLogger* logger);
        static QString nameOfTargetDescription(const QString &path);
        static bool prepareTarget(const QString &path, BackupItem &item, ReLogger *logger);
index 2050c665f3f4ca925a653ae02b3a648288e4b229..df5bea340fd2a5cb325472fffa67cee520c617cc 100644 (file)
@@ -89,12 +89,12 @@ void MainWindow::expandFileList(const QString info){
  * Find the target identification.
  *
  * @param dir  the directory on the external medium (already mounted)
- * @return      the relative path
  */
-QString MainWindow::extractTarget(const QString& dir){
+void MainWindow::extractTarget(const QString& dir){
        QString rc;
        QString target;
 #if defined __linux__
+       target = BackupUtils::findAbstractTarget(dir, &m_logger);
 #elif defined _WIN32
        rc = dir;
        if (dir.length() >= 2 && dir.at(1) == ':')
@@ -104,7 +104,6 @@ QString MainWindow::extractTarget(const QString& dir){
        target = ";" + rc;
 #endif
        ui->lineEditTarget->setText(target);
-       return rc;
 }
 
 /**
@@ -596,7 +595,11 @@ void MainWindow::onSelectTarget(){
        QString dir = ui->lineEditTarget->text();
        int pos = dir.indexOf(';');
        if (pos < 0){
+#ifdef __linux__
+               dir = "/media";
+#else
                dir.clear();
+#endif
        } else {
                dir.remove(0, pos + 1);
                if (! ReFileUtils::isAbsolutPath(dir))
index 0b16df3dc1274672b20ec2fd1387c623d2b09379..1f63750ae98cdb99459544b1ea004a548e54ea7c 100644 (file)
@@ -40,7 +40,7 @@ public:
    void saveState();
 protected slots:
 private:
-   QString extractTarget(const QString& dir);
+   void extractTarget(const QString& dir);
    void initializeGui();
    bool initializeStart();
    void writeTargetConfiguration(BackupItem& item, const QString& target);
index 1cb22759273b110e25aab0e2b67ccc13bec31d8f..cf3470cc5232b0047403071928ca876fe7eee31a 100755 (executable)
@@ -1,19 +1,26 @@
 #! /usr/bin/perl
 
 use strict;
+use POSIX ();
 
 my $mode = shift;
 my %devs;
 my (%g_devOfPoint, %g_pointOfDev, %g_devOfLabel, %g_labelOfDev);
-
+&LogIt;
 if ($mode eq "find-label"){
-       my $targetPath = shift;
-       if (! -d $targetPath){
-               &Usage("not a directory: $targetPath");
+       if ($ENV{"DEBUG_LABEL"} ne ""){
+               my $var = $ENV{"DEBUG_LABEL"};
+               my @lines = split(/;/, $var);
+               print join("\n", @lines);
+       } else {
+               my $targetPath = shift;
+               if (! -d $targetPath){
+                       &Usage("not a directory: $targetPath");
+               }
+               &FindLabels;
+               &FindMountPoints;
+               &PrintLabelAndRelPath($targetPath);
        }
-       &FindLabels;
-       &FindMountPoints;
-       &PrintLabelAndRelPath($targetPath);
 } elsif ($mode eq "search-target"){
        my $label = shift;
        my $relPath = shift;
@@ -63,7 +70,6 @@ if ($mode eq "find-label"){
        &Usage("unknown mode");
 }
 
-
 sub Usage{
        my $msg = shift;
        print <<EOS;
@@ -100,7 +106,7 @@ EOS
 sub FindLabels{
 
        # /dev/sdb1: LABEL="EFI system" UUID="80F7-47BB" TYPE="vfat" ...
-       open(my $CMD, "blkid|") || die "cannot execute blkid: $!";
+       open(my $CMD, "blkid|") || die "+++ cannot execute blkid: $!";
        while(<$CMD>){
                if(/(\S+): LABEL="(.*?)"/){
                        $g_devOfLabel{$2} = $1;
@@ -108,12 +114,11 @@ sub FindLabels{
                }
        }
        close $CMD;
-       return %devs;
 }
 
 # stores the relation of devices and mount points.
 sub FindMountPoints{
-       open(my $CMD, "mount|") || die "cannot execute mount: $!";
+       open(my $CMD, "mount|") || die "+++ cannot execute mount: $!";
        my ($label, $relPath);
        while(<$CMD>){
                # /dev/sdb1 on /media/src type vfat (rw,...)
@@ -138,6 +143,7 @@ sub PrintLabelAndRelPath{
                                $label = $g_labelOfDev{$dev};
                                $relPath = substr($subdirOfMountpoint, length($path) + 1);
                                print "L=$label\n$relPath\n";
+                               last;
                        }
                }
        }
@@ -154,3 +160,10 @@ sub Exec{
        my $cmd = shift;
        system($cmd);
 }
+
+sub LogIt{
+       my $id = qx(id -u);
+       open(my $OUT, ">", "/tmp/info.txt");
+       print $OUT "id: $id euid: $>\n";
+       close $OUT;
+}
index ca4ccf55cbd745f203875ecdb6ddf58326a21cdd..8bda667832aa9decb021abce9f2f7b0eae927fae 100644 (file)
Binary files a/appl/rebackgui/rebackgui.de.qm and b/appl/rebackgui/rebackgui.de.qm differ
index b8a17ec871fa2b19dc6ee2a8cf27b3645dd4e029..3c5b08178836ce133be74d576500a61f4c41ea30 100644 (file)
@@ -36,7 +36,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <location filename="aboutdialog.ui" line="64"/>
         <source>Version:</source>
-        <translation></translation>
+        <translation>Version:</translation>
     </message>
     <message>
         <location filename="aboutdialog.ui" line="71"/>
@@ -209,7 +209,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <location filename="mainwindow.ui" line="252"/>
-        <location filename="mainwindow.ui" line="874"/>
+        <location filename="mainwindow.ui" line="881"/>
         <source>Calculates checksums for source and target files and reports differences</source>
         <translation>Berechnet Prüfsummen für Quell- und Zieldateien und meldet Unterschiede</translation>
     </message>
@@ -350,196 +350,226 @@ p, li { white-space: pre-wrap; }
         <translation>Fehlerprotokoll:</translation>
     </message>
     <message>
-        <location filename="mainwindow.ui" line="793"/>
+        <location filename="mainwindow.ui" line="800"/>
         <source>Fi&amp;le</source>
         <oldsource>File</oldsource>
         <translatorcomment>Bearbeiten</translatorcomment>
-        <translation type="unfinished">Datei</translation>
+        <translation>Datei</translation>
     </message>
     <message>
-        <location filename="mainwindow.ui" line="804"/>
+        <location filename="mainwindow.ui" line="811"/>
         <source>Edi&amp;t</source>
         <oldsource>Edit</oldsource>
-        <translation type="unfinished">Bearbeiten</translation>
+        <translation>Bearbeiten</translation>
     </message>
     <message>
-        <location filename="mainwindow.ui" line="809"/>
+        <location filename="mainwindow.ui" line="816"/>
         <source>Hel&amp;p</source>
         <oldsource>Help</oldsource>
-        <translation type="unfinished">Hilfe</translation>
+        <translation>Hilfe</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="825"/>
+        <source>A&amp;ction</source>
+        <translation>Aktion</translation>
     </message>
     <message>
-        <location filename="mainwindow.ui" line="841"/>
+        <location filename="mainwindow.ui" line="848"/>
         <source>&amp;Load Config</source>
         <oldsource>Load Config</oldsource>
-        <translation type="unfinished">Konfiguration laden</translation>
+        <translation>Konfiguration laden</translation>
     </message>
     <message>
-        <location filename="mainwindow.ui" line="846"/>
+        <location filename="mainwindow.ui" line="853"/>
         <source>&amp;Save Config</source>
         <oldsource>Save Config</oldsource>
-        <translation type="unfinished">Konfiguration sichern</translation>
+        <translation>Konfiguration sichern</translation>
     </message>
     <message>
-        <location filename="mainwindow.ui" line="851"/>
+        <location filename="mainwindow.ui" line="858"/>
         <source>&amp;Exit</source>
         <oldsource>Exit</oldsource>
-        <translation type="unfinished">Beenden</translation>
+        <translation>Beenden</translation>
     </message>
     <message>
-        <location filename="mainwindow.ui" line="856"/>
+        <location filename="mainwindow.ui" line="863"/>
         <source>&amp;Start backup</source>
         <oldsource>Start backup</oldsource>
-        <translation type="unfinished">Sicherung starten</translation>
+        <translation>Sicherung starten</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="868"/>
+        <source>St&amp;op</source>
+        <translation>Halt</translation>
     </message>
     <message>
-        <location filename="mainwindow.ui" line="866"/>
+        <location filename="mainwindow.ui" line="873"/>
         <source>&amp;About</source>
         <oldsource>About</oldsource>
-        <translation type="unfinished">Über</translation>
+        <translation>Über</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="878"/>
+        <source>&amp;Checksums</source>
+        <translation>Prüfsummen</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="886"/>
+        <source>C&amp;lean</source>
+        <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="mainwindow.ui" line="887"/>
+        <location filename="mainwindow.ui" line="894"/>
         <source>&amp;English</source>
         <oldsource>English</oldsource>
-        <translation type="unfinished"></translation>
+        <translation>Englisch</translation>
     </message>
     <message>
-        <location filename="mainwindow.ui" line="895"/>
+        <location filename="mainwindow.ui" line="902"/>
         <source>&amp;German</source>
         <oldsource>German</oldsource>
-        <translation type="unfinished"></translation>
+        <translation>Deutsch</translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="361"/>
-        <location filename="mainwindow.cpp" line="395"/>
-        <location filename="mainwindow.cpp" line="588"/>
+        <location filename="mainwindow.ui" line="910"/>
+        <source>&amp;Autosave</source>
+        <translation>&amp;Autom. speichern</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="397"/>
+        <location filename="mainwindow.cpp" line="432"/>
+        <location filename="mainwindow.cpp" line="626"/>
         <source>no backup item selected</source>
         <translation>Kein Sicherungselement ausgewählt</translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="366"/>
-        <location filename="mainwindow.cpp" line="400"/>
-        <location filename="mainwindow.cpp" line="593"/>
+        <location filename="mainwindow.cpp" line="402"/>
+        <location filename="mainwindow.cpp" line="437"/>
+        <location filename="mainwindow.cpp" line="631"/>
         <source>Target not available</source>
         <translation>Ziel nicht vorhanden</translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="305"/>
+        <location filename="mainwindow.cpp" line="340"/>
         <source>Select Source Directory</source>
         <translation>Quellverzeichnis auswählen</translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="568"/>
+        <location filename="mainwindow.cpp" line="605"/>
         <source>Select Target Directory</source>
         <translation>Zielverzeichnis auswählen</translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="574"/>
+        <location filename="mainwindow.cpp" line="611"/>
         <source>target initialized with %1</source>
         <translation>Ziel mit %1 vorbelegt</translation>
     </message>
+    <message>
+        <location filename="mainwindow.cpp" line="653"/>
+        <source>Aborted by the user</source>
+        <translation>Abbruch durch den Benutzer</translation>
+    </message>
 </context>
 <context>
     <name>QObject</name>
     <message>
-        <location filename="BackupEngine.cpp" line="154"/>
+        <location filename="BackupEngine.cpp" line="169"/>
         <source>cannot remove file (for making a directory (%1): %2</source>
         <translation>kann Datei nicht löschen, um ein Verzeichnis anzulegen (%1): %2</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="158"/>
+        <location filename="BackupEngine.cpp" line="173"/>
         <source>cannot make directory (%1): %2</source>
         <translation>kann Verzeichnis nicht anlegen (%1): %2</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="222"/>
-        <location filename="BackupEngine.cpp" line="425"/>
+        <location filename="BackupEngine.cpp" line="244"/>
+        <location filename="BackupEngine.cpp" line="452"/>
         <source>%1 of %2 (%3 of %4) %5 MB/sec runtime: %6</source>
         <translation>%1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="231"/>
+        <location filename="BackupEngine.cpp" line="255"/>
         <source>backup complete after %1. Errors: %2</source>
         <translation>Sicherung nach %1 fertiggestellt Fehler: %2</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="281"/>
+        <location filename="BackupEngine.cpp" line="305"/>
         <source>cannot build checksum: %1</source>
         <translation>Kann Prüfsumme nicht ermitteln: %1</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="347"/>
+        <location filename="BackupEngine.cpp" line="371"/>
         <source>Building source checksum complete after %1. Processed: %2</source>
         <translation>Erzeugen der Prüfsummen für die Quelldateien fertig nach %1. Bearbeitet: %2</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="407"/>
+        <location filename="BackupEngine.cpp" line="434"/>
         <source>checksum differs: </source>
         <translation>Prüfsummen unterscheiden sich:</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="436"/>
+        <location filename="BackupEngine.cpp" line="463"/>
         <source>Building target checksums complete after %1. Processed: %2 Errors: %3</source>
         <translation>Erzeugen der Prüfsummen für die Zieldateien fertig nach %1. Bearbeitet: %2 Fehler: %3</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="501"/>
+        <location filename="BackupEngine.cpp" line="530"/>
         <source>cannot delete (%1): %2</source>
         <translation>Kann nicht löschen (%1): %2</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="510"/>
+        <location filename="BackupEngine.cpp" line="539"/>
         <source>cannot remove directory (%1): %2</source>
         <translation>Kann Verzeichnis nicht erstellen (%1): %2</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="524"/>
+        <location filename="BackupEngine.cpp" line="553"/>
         <source>cannot create the shadow directory: %1</source>
         <translation>Kann das Schattenverzeichnis nicht erstellen: %1</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="530"/>
+        <location filename="BackupEngine.cpp" line="559"/>
         <source>cannot delete shadow file (%1): %2</source>
         <translation>Kann Schattendatei nicht löschen (%1): %2</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="534"/>
+        <location filename="BackupEngine.cpp" line="563"/>
         <source>cannot rename target file (%1): %2 -&gt; %3</source>
         <translation>Kann Zieldatei nicht umbenennen (%1): %2 -&gt; %3</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="548"/>
+        <location filename="BackupEngine.cpp" line="577"/>
         <source>%1 of %2 files  %3 files/sec runtime: %6</source>
         <translation>%1 von %2 Dateien  %3 Dateien/sec Laufzeit: %6</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="556"/>
+        <location filename="BackupEngine.cpp" line="585"/>
         <source>clean complete after %1. Errors: %2</source>
         <translation>Bereinigen fertig nach %1. Fehler: %2</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="602"/>
+        <location filename="BackupEngine.cpp" line="636"/>
         <source>Search finished: to process: %1 with %2 matching: %3 total: %4 subdirs: %5 runtime: %6</source>
         <translation>Suche beendet: zu behandeln: %1 mit %2 passend: %3 gesamt: %4 Unterverz: %5 Laufzeit: %6</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="897"/>
+        <location filename="BackupEngine.cpp" line="954"/>
         <source>kann Schattenverzeichnis nicht umbenennen: %1 -&gt; %2</source>
-        <translation type="unfinished"></translation>
+        <translation>kann Schattenverzeichnis nicht umbenennen: %1 -&gt; %2</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="907"/>
+        <location filename="BackupEngine.cpp" line="964"/>
         <source>cannot create shadow directory (%1): %2</source>
         <translation>Kann Schattenverzeichnis nicht erstellen (%1): %2</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="912"/>
+        <location filename="BackupEngine.cpp" line="969"/>
         <source>cannot move to shadow directory (%1): %2 -&gt; %3</source>
         <translation>Kann Datei nicht in Schattenverzeichnis verschieben (%1): %2 -&gt; %3</translation>
     </message>
     <message>
-        <location filename="BackupEngine.cpp" line="937"/>
+        <location filename="BackupEngine.cpp" line="994"/>
         <source>Search in target finished: to process: %1 with %2 dirs to delete: %3 total: %4 subdirs: %5 runtime: %6</source>
         <translation>Suche im Ziel bendet: zu behandeln: %1 mit %2 zu löschende Verzeichnisse: %3 gesamt: %4 Unterverz.: %5 Laufzeit: %6</translation>
     </message>
@@ -551,8 +581,8 @@ p, li { white-space: pre-wrap; }
     <message>
         <location filename="Configuration.cpp" line="119"/>
         <location filename="Configuration.cpp" line="205"/>
-        <location filename="../../base/ReFileUtils.cpp" line="191"/>
-        <location filename="../../base/ReFileUtils.cpp" line="195"/>
+        <location filename="../../base/ReFileUtils.cpp" line="208"/>
+        <location filename="../../base/ReFileUtils.cpp" line="212"/>
         <source>cannot open (%1): %2</source>
         <translation>Kann nicht öffnen (%1): %2</translation>
     </message>
@@ -573,22 +603,22 @@ p, li { white-space: pre-wrap; }
         <translation>Konfiguration gespeichert: %1</translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="244"/>
+        <location filename="mainwindow.cpp" line="279"/>
         <source>Search started...</source>
         <translation>Suche gestartet...</translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="782"/>
+        <location filename="mainwindow.cpp" line="871"/>
         <source>yes</source>
         <translation>Ja</translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="782"/>
+        <location filename="mainwindow.cpp" line="871"/>
         <source>no</source>
         <translation>nein</translation>
     </message>
     <message>
-        <location filename="../../base/ReFileUtils.cpp" line="187"/>
+        <location filename="../../base/ReFileUtils.cpp" line="190"/>
         <source>not found: %1</source>
         <translation>Nicht gefunden: %1</translation>
     </message>
@@ -597,37 +627,47 @@ p, li { white-space: pre-wrap; }
         <translation type="obsolete">Kann nicht schreiben(%1): %2 [%3/%4]</translation>
     </message>
     <message>
-        <location filename="../../base/ReFileUtils.cpp" line="176"/>
+        <location filename="../../base/ReFileUtils.cpp" line="179"/>
         <source>copy file failed (%1): %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Dateikopieren missglückt (%1): %2</translation>
     </message>
     <message>
-        <location filename="../../base/ReFileUtils.cpp" line="212"/>
+        <location filename="../../base/ReFileUtils.cpp" line="204"/>
+        <source>not a regular file: %1</source>
+        <translation>Keine normale Datei: %1</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReFileUtils.cpp" line="229"/>
         <source>cannot write (%1): %2 [%3/%4]</source>
         <translation>Kann nicht schreiben(%1): %2 [%3/%4]</translation>
     </message>
     <message>
-        <location filename="../../base/ReFileUtils.cpp" line="219"/>
+        <location filename="../../base/ReFileUtils.cpp" line="236"/>
         <source>file can be read only partitionally: %1 [%2/%3]</source>
         <translation>Datei kann nur teilweise gelesen werden: %1 [%2/%3]</translation>
     </message>
     <message>
-        <location filename="../../base/ReFileUtils.cpp" line="224"/>
+        <location filename="../../base/ReFileUtils.cpp" line="241"/>
         <source>cannot set date/time (%1): %2</source>
         <translation>Kann Datum/Zeit nicht setzen (%1): %2</translation>
     </message>
     <message>
-        <location filename="../../base/ReFileUtils.cpp" line="227"/>
+        <location filename="../../base/ReFileUtils.cpp" line="244"/>
         <source>cannot set permissions (%1): %2</source>
         <translation>Kann Dateirechte nicht setzen (%1): %2</translation>
     </message>
     <message>
-        <location filename="../../base/ReFileUtils.cpp" line="569"/>
+        <location filename="../../base/ReFileUtils.cpp" line="254"/>
+        <source>cannot set user/gid [%1/%2] (%3): %4</source>
+        <translation>Kann Benutzer/Gruppe nicht setzen  [%1/%2] (%3): %4</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReFileUtils.cpp" line="598"/>
         <source>can&apos;t create directory (%1): %2</source>
         <translation>Kann Verzeichnis nicht erzeugen (%1): %2</translation>
     </message>
     <message>
-        <location filename="../../base/ReFileUtils.cpp" line="575"/>
+        <location filename="../../base/ReFileUtils.cpp" line="604"/>
         <source>can&apos;t create directory (is a file): </source>
         <translation>Kann Verzeichnis nicht erzeugen (ist eine Datei): </translation>
     </message>