Backup für Hausfrauen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
willy4711

Re: Backup für Hausfrauen

Beitrag von willy4711 » 12.12.2018 13:06:59

OK - mit nano alle "Tüttelchen" neu gesetzt--> Keine Fehlermeldung mehr :hail:
stand der Regel:

Code: Alles auswählen

ACTION=="add", ATTR{idVendor}=="8564", ATTR{idProduct}=="1000", RUN+="/opt/FreeFileSync/FreeFileSync"
jetzt wäre nur noch (auch für whisper :mrgreen: ) zu klären, warum das Programm (oder halt was anderes)nicht startet.

DeletedUserReAsG

Re: Backup für Hausfrauen

Beitrag von DeletedUserReAsG » 12.12.2018 17:43:55

… mich würde nun aber schon interessieren, wer bei dir aus dem " dann das hier falsche “ gemacht hat. Oder aus dem - das hier falsche –. Vielleicht war’s ja ein Feature eines „Tutorial“-Schreibers, der seine Leser vor der fiesen Situation bewahren wollte, durch stumpfe Copypasta am Ende gar nix gelernt zu haben. Wer weiß, wer weiß – ich übernehme die Idee mal so :mrgreen:

willy4711

Re: Backup für Hausfrauen

Beitrag von willy4711 » 12.12.2018 18:20:52

niemand hat geschrieben: ↑ zum Beitrag ↑
12.12.2018 17:43:55
… mich würde nun aber schon interessieren, wer bei dir aus dem " dann das hier falsche “ gemacht hat. Oder aus dem - das hier falsche –. Vielleicht war’s ja ein Feature eines „Tutorial“-Schreibers, der seine Leser vor der fiesen Situation bewahren wollte, durch stumpfe Copypasta am Ende gar nix gelernt zu haben. Wer weiß, wer weiß – ich übernehme die Idee mal so :mrgreen:
willy4711 hat geschrieben: ↑ zum Beitrag ↑
11.12.2018 23:49:53
Habe hier eventuell eine Lösung gefunden, die bei mir aber leider mit einer Fehlermeldung endet, die ich nicht verstehe:
https://d0wn.biz/debian-script-ausfuehr ... eckt-wird/
Bin nach der Anleitung dort vorgegangen:
Ist das verwerflich ? Das Thema hat mich interessiert und da habe ich halt gezielt nach udev Regeln gesucht. Habe mich damit halt noch nicht beschäftigt. Es gibt halt Dinge, die man noch nicht gemacht hat (z.B. Eine Udev- Regel erstellen). Und jetzt bin ich (ein ganz klein Bisschen) schlauer. :roll: Schritt für Schritt:

DeletedUserReAsG

Re: Backup für Hausfrauen

Beitrag von DeletedUserReAsG » 12.12.2018 19:13:42

Wenn ich in Erwägung ziehe, die Idee, solche Zeichen in Tutorials/Anleitungen zu ersetzen, um die Leute, die stumpf copypasten, auszusortieren (weil: sind nicht Zielgruppe), finde ich sie sicher nicht verwerflich :)

willy4711

Re: Backup für Hausfrauen

Beitrag von willy4711 » 12.12.2018 19:26:46

Ja Ja . ich weiß, du bist der Größte. Hätte mich nicht einmischen sollen, da ja soviel zielführende Vorschläge von anderen gekommen sind.
Irgendwie ist das zum Kotzen.

DeletedUserReAsG

Re: Backup für Hausfrauen

Beitrag von DeletedUserReAsG » 12.12.2018 19:35:54

Du solltest dir keinen Kram zusammendichten und ihn mir unterstellen. Ich meine, was ist dein Problem damit, dass ich die Idee gut finde? Selbst du schreibst doch, dass du wieder etwas gelernt hast (und sei’s nur, dass Non-ASCII-Zeichen in Configs in den allermeisten Fällen falsch sind).

Egal, BTT.

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: Backup für Hausfrauen

Beitrag von Lohengrin » 13.12.2018 08:04:49

niemand hat geschrieben: ↑ zum Beitrag ↑
12.12.2018 19:35:54
Egal, BTT.
Da kann ich über, da kann ich über!

Es geht um „ also U+201E, in UTF-8 e2 80 9e
Und es kommt deshalb zu folgender Fehlermeldung.

Code: Alles auswählen

invalid key/value pair in file /etc/udev/rules.d/91-FreeFileSync.rules on line 1, starting at character 1 ('\342')
Oktal 342 ist hex e2, das linke (Ist es das nullte? Die Bits werden von rechts nach links gezählt, aber die Bytes von links nach rechts. Das erste ist es auf gar keinen Fall.) Byte von U+201E in UTF-8. Da steht aber nicht byte. Da steht character, also Zeichen.
Das ist ein Fehler in der Fehlermeldung.
Das Zeichen ist drei Byte lang, und ein Byte mit oktal 342 ist in UTF-8 kein Zeichen. Das Zeichen oktal 342 ist U+E2, in UTF-8 c3 a2, aber darum geht es hier gar nicht.
MMn muss es

Code: Alles auswählen

invalid key/value pair in file /etc/udev/rules.d/91-FreeFileSync.rules on line 0, starting at byte 0 ('\342')
heißen.
TRex hat geschrieben: ↑ zum Beitrag ↑
11.12.2018 21:50:54
Oh Klasse, ist das der Thread, wo ich all die Antworten hinschiebe, die nicht direkt auf schwesterelisa antworteten? :D
Jetzt schon. :mrgreen:
Zuletzt geändert von Lohengrin am 13.12.2018 08:34:48, insgesamt 1-mal geändert.
Harry, hol schon mal das Rasiermesser!

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Backup für Hausfrauen

Beitrag von uname » 13.12.2018 08:32:35

Hat wohl alles mit der ursprünglichen Frage nichts mehr zu tun.

@Lohengrin
Du kannst ja mal einen Bugreport schreiben.
Wenn ich es richtig im Quellcode von Debiansystemd lese, ist dein Vorschlag in src/udev/udev-rules.c wohl nicht vorgesehen.
Kann natürlich auch daran liegen, dass die Programmiersprache C die Zeichenkette char* verwendet und nicht zwischen Char und Byte unterscheidet.
Um es vollständig zu verstehen bitte auch die Funktion static int get_key(struct udev *udev, char **line, char **key, enum operation_type *op, char **value) anschauen.
Ich liebe die Programmiersprache C. Sie ist einfach so schön übersichtlich und selbsterklärend.

filename: Dateiname
lineno: Zeilennummer
Position: linepos - line + 1
tmp: betroffenes Zeichen

Code: Alles auswählen

static void add_rule(struct udev_rules *rules, char *line,
                     const char *filename, unsigned int filename_off, unsigned int lineno) {
        char *linepos;
        const char *attr;
        struct rule_tmp rule_tmp = {
                .rules = rules,
                .rule.type = TK_RULE,
        };

        /* the offset in the rule is limited to unsigned short */
        if (filename_off < USHRT_MAX)
                rule_tmp.rule.rule.filename_off = filename_off;
        rule_tmp.rule.rule.filename_line = lineno;

        linepos = line;
        for (;;) {
                char *key;
                char *value;
                enum operation_type op;

                if (get_key(rules->udev, &linepos, &key, &op, &value) != 0) {
                        /* Avoid erroring on trailing whitespace. This is probably rare
                         * so save the work for the error case instead of always trying
                         * to strip the trailing whitespace with strstrip(). */
                        while (isblank(*linepos))
                                linepos++;

                        /* If we aren't at the end of the line, this is a parsing error.
                         * Make a best effort to describe where the problem is. */
                        if (!strchr(NEWLINE, *linepos)) {
                                char buf[2] = {*linepos};
                                _cleanup_free_ char *tmp;

                                tmp = cescape(buf);
                                log_error("invalid key/value pair in file %s on line %u, starting at character %tu ('%s')",
                                          filename, lineno, linepos - line + 1, tmp);
                                if (*linepos == '#')
                                        log_error("hint: comments can only start at beginning of line");
                        }
                        break;      
                 }
 ...
 ...      
 ...
     }
         /* add rule token and sort tokens */
        rule_tmp.rule.rule.token_count = 1 + rule_tmp.token_cur;
        if (add_token(rules, &rule_tmp.rule) != 0 || sort_token(rules, &rule_tmp) != 0)
                LOG_RULE_ERROR("failed to add rule token");
}

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: Backup für Hausfrauen

Beitrag von Lohengrin » 13.12.2018 09:38:34

uname hat geschrieben: ↑ zum Beitrag ↑
13.12.2018 08:32:35
Du kannst ja mal einen Bugreport schreiben.
Lieber nicht! Ich hatte vor zwei Monaten die Überraschung mit tr und kurz darauf nochwas von der Sorte.
Ich denke gerade wieder, dass es ein großer Fehler war, überhaupt in etwas anderem als Bytes zu rechnen. Dass das ph in Stephan Müller zwei Zeichen sind, aber das ü nicht, ist willkürlich. Wieso soll der chinesische Friede ein Zeichen, aber das deutsche Ei zwei Zeichen sein?

Bei dieser Fehlermeldung war das nullte Byte hex e2, und das ist ein Fehler. Ob das mit den nächsten Bytes zusammen irgendwas Sinnvolles in UTF-8 ergibt, tut nichts zur Sache.
uname hat geschrieben: ↑ zum Beitrag ↑
13.12.2018 08:32:35
Position: linepos - line + 1
Na toll! Da haben die extra eine Eins dazugezählt, damit die falsche Zählung der Spalte in der Fehlermeldung erscheint.
Seltsamerweise war lineno schon vorher falsch.
Harry, hol schon mal das Rasiermesser!

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Backup für Hausfrauen

Beitrag von uname » 13.12.2018 12:42:31

Lohengrin hat geschrieben:Na toll! Da haben die extra eine Eins dazugezählt, damit die falsche Zählung der Spalte in der Fehlermeldung erscheint.
In der IT zählt man von 0. Der Mensch zählt ab 1.
Das ist aber prinzipiell auch notwendig, um z. B. ein Byte (0 bis 255) mit insgesamt 256 Möglichkeiten korrekt durchzählen zu können.
In der Grundschule 1. Klasse wäre es auch weitaus einfacher, wenn man von 0 bis 9 zählen würde und den Übertrag auf 10 getrennt und korrekt als Übertrag behandeln würde.
Aber wir haben nunmal 10 Finger und können an der Einerposition mit den Fingern sogar die 10 (zehn) ohne Übertrag darstellen. Das muss doch die ABC-Schützen verwirren.

Sei froh, dass wir uns den Quellcode durchlesen und analysieren können. Bei Windows wären wir nur frustriert ;-)

Antworten