Conky: ロケールが小数点として「、」を使用している場合、if_match比較は失敗します

作成日 2013年07月15日  ·  19コメント  ·  ソース: brndnmtthws/conky

私のログから:

conky:不正な引数:「0,0」および「10.0」
conky:式 '0,0 <10.0'の比較に失敗しました

これらの比較はすべてこれに似ています:

$ {if_match $ {downspeedf enp2s0} <100.0}

引数が「、」で記述されている場合でも、比較は失敗します。 conkyのロケールをen_US.UTF-8に明示的に設定すると、今のところ機能します。

(これは1.9.0では発生しませんでした。)

bug

全てのコメント19件

私も同じ問題を抱えてる。

ここでも同じですが、conkyに特定のLOCALEを設定する方法を教えてください。

コマンドの前に例を付けます。

LC_ALL = Cコンキー

おかげで、しかし、比較は一般的に分数で失敗していることがわかりました:

conky:式'12、61> = 10 'の比較に失敗しました

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

申し訳ありませんが、ロケールが設定されていませんでした。 現在、次の起動スクリプトを使用しています。

#!/bin/bash

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

sleep 5 && conky

補足:algebra.ccにあるように見えます:enum arg_typeget_arg_type。 ロケール対応の数値パーサーを使用することをお勧めします。

この問題は、現在のバージョンのConkyでもまだ未解決ですか? その場合は、問題を更新してください。 それ以外の場合、問題は2週間でクローズされます。

@lasersご覧いただけますか?

@ su8やってみました。 ロケールに精通していない。 イタリアを試してみました。 表示するカンマがありませんでした。 多分私はそれを間違えました。

@ su8ここで1.9.0に試しました。 以前のタグにはcmakeものは含まれていません。 :-(

我ら。

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最新のコメントを見逃した場合に備えて、今すぐテストできます。

これをテストできますか:

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) {

できます。 数字もコンマで印刷されます。 レイジーは上記の例をコピーしました。

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

これはマスターでも起こります。 うーん。 実は、これはそのままで大丈夫だと思います。 ええと

私はそれをするのが面倒なので、この変更でプルリクエストを開きます:hamburger:

あなたは怠け者ではありません。 私はレーザーが怠け者です。 私は何かについて疑問に思っています。 これにコンマが含まれている場合、最初に文字を入れ替えるべきではありませんか?

  • カンマが検出された場合...

    • ピリオドをuniqcharに置き換えます

    • カンマをピリオドに置き換えます

    • uniq文字をコンマに置き換えます

    • 比較する

それは理にかなっていますか、それとも私は考えすぎていますか?

それが現在の国の基準ですが、なぜ他の国に変更するのですか?

Idk。 ここにヌーブ。 ご要望に応じてプルリクエストを行います。 if (*p == '.') {は何のためにありますか?

https://github.com/brndnmtthws/conky/pull/585経由でクローズ:wave:

このページは役に立ちましたか?
0 / 5 - 0 評価