Conky: Der Vergleich von if_match schlägt fehl, wenn das Gebietsschema "," als Dezimalzeichen verwendet

Erstellt am 15. Juli 2013  ·  19Kommentare  ·  Quelle: brndnmtthws/conky

Aus meinem Log:

conky: Schlechte Argumente: '0,0' und '10.0'
conky: Vergleich fehlgeschlagen für Ausdruck '0,0 <10,0'

Diese Vergleiche sind alle diesem ähnlich:

$ {if_match $ {downspeedf enp2s0} <100.0}

Der Vergleich schlägt immer noch fehl, wenn das Argument mit "," geschrieben ist. Das explizite Festlegen des Gebietsschemas von conky auf en_US.UTF-8 funktioniert vorerst.

(Dies ist in 1.9.0 nicht geschehen.)

bug

Alle 19 Kommentare

Ich habe das gleiche Problem.

Kannst du hier bitte sagen, wie man eine bestimmte LOCALE für conky einstellt?

Sie stellen dem Befehl z.

LC_ALL = C conky

Vielen Dank, aber es stellt sich heraus, dass der Vergleich mit Bruchzahlen im Allgemeinen fehlschlägt:

conky: Vergleich fehlgeschlagen für Ausdruck '12,61> = 10'

${if_match ${top cpu 1} >= 10 }${color red}\
${else}${color}\
${endif}\

Entschuldigung, meine Schuld, das Gebietsschema wurde nicht festgelegt. Es hat jetzt funktioniert. Ich verwende jetzt folgendes Startskript:

#!/bin/bash

export LANG=en_US.UTF-8
export LC_ALL=C

sleep 5 && conky

Randnotiz: Es sieht so aus, als wäre es in algebra.cc: enum arg_type get_arg_type. Ich empfehle, einen Gebietsschema-fähigen Nummernparser zu verwenden.

Ist dieses Problem in der aktuellen Version von Conky noch offen? Wenn ja, aktualisieren Sie bitte das Problem. Andernfalls wird die Ausgabe in 2 Wochen geschlossen.

@lasers Kannst du einen Blick darauf werfen?

@ su8 Ich habe es versucht. Nicht mit dem Gebietsschema vertraut. Versuchte Italien. Kommas wurden nicht angezeigt. Vielleicht habe ich es falsch gemacht.

@ su8 Ich habe versucht, Git Bisect hier auf 1.9.0 . Frühere Tags enthalten keine cmake Sachen. :-(

UNS.

0B // False
56.9K // True
16.9K // False
544B // False
74.9K // True
88.4K // True
13.9K // False

DK.

conky: Bad arguments: '0,0' and '50.0'
conky: compare failed for expression '0,0>50.0'
0B // True
conky: Bad arguments: '0,0' and '50.0'
conky: compare failed for expression '0,3>50.0'
307B // True
^Cconky: Bad arguments: '0,3' and '50.0'
conky: compare failed for expression '0,3>50.0'
350B // True

@ su8 Nur für den Fall, dass Sie den letzten Kommentar verpasst haben, kann ich dies jetzt testen.

Können Sie das testen:

diff --git a/src/algebra.cc b/src/algebra.cc
index 66dfd2d6..4e1d36e2 100644
--- a/src/algebra.cc
+++ b/src/algebra.cc
@@ -155,7 +155,7 @@ enum arg_type get_arg_type(const char *arg) {
   if (p == e + 1) {
     return ARG_LONG;
   }
-  if (*p == '.') {
+  if (*p == '.' || *p == ',') {
     p++;
     while (p <= e) {
       if (isdigit((unsigned char)*p) == 0) {

Es klappt. Die Zahlen werden auch mit Komma gedruckt. Lazy hat das obige Beispiel kopiert.

56,9K // True
16,9K // False
544B // False
74,9K // True
88,4K // True
13,9K // False

Dies geschieht auch im Master. Hmm. Eigentlich denke ich, dass das so wie es ist in Ordnung ist. Duh .

Öffnen Sie eine Pull-Anfrage mit dieser Änderung, da ich faul bin: Hamburger:

Du bist nicht faul. Ich bin Laser fauler. Ich wundere mich über etwas. Wenn dies ein Komma enthält, sollten Sie die Zeichen nicht zuerst vertauschen?

  • Wenn Komma erkannt wird ...

    • Ersetzen Sie den Punkt durch uniq char

    • Ersetzen Sie das Komma durch einen Punkt

    • Ersetzen Sie uniq char durch Komma

    • Vergleichen Sie

Ist das sinnvoll oder denke ich zu viel nach?

Das ist der aktuelle Länderstandard. Warum sollte er auf einen anderen geändert werden?

Idk. Noob hier. Ich werde auf Ihre Anfrage eine Pull-Anfrage stellen. Wofür ist if (*p == '.') { ?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

nwwt picture nwwt  ·  5Kommentare

leahneukirchen picture leahneukirchen  ·  3Kommentare

oberon-manjaro picture oberon-manjaro  ·  4Kommentare

ghost picture ghost  ·  4Kommentare

LeoIannacone picture LeoIannacone  ·  3Kommentare