Conky: perbandingan if_match gagal jika lokal menggunakan "," sebagai tanda desimal

Dibuat pada 15 Jul 2013  ·  19Komentar  ·  Sumber: brndnmtthws/conky

Dari log saya:

conky: Argumen buruk: '0,0' dan '10.0'
conky: perbandingan gagal untuk ekspresi '0,0 <10.0'

Perbandingan ini semuanya mirip dengan yang ini:

$ {if_match $ {downspeedf enp2s0} <100.0}

Perbandingan tetap gagal jika argumen ditulis dengan ",". Secara eksplisit menyetel lokal conky ke en_US.UTF-8 berfungsi untuk saat ini.

(Ini tidak terjadi di 1.9.0.)

bug

Semua 19 komentar

Saya memiliki masalah yang sama.

Sama di sini, dapatkah Anda memberi tahu cara menyetel LOCALE tertentu untuk conky?

Anda mengawali perintah dengan mis.

LC_ALL = C conky

Terima kasih, namun ternyata perbandingan gagal secara umum dengan bilangan pecahan:

conky: perbandingan gagal untuk ekspresi '12,61> = 10'

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

Maaf salah saya, lokal tidak disetel sekarang berfungsi. Saya menggunakan skrip startup berikut sekarang:

#!/bin/bash

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

sleep 5 && conky

Catatan tambahan: Sepertinya ada di algebra.cc: enum arg_type get_arg_type. Saya merekomendasikan untuk menggunakan parser nomor sadar lokal.

Apakah masalah ini masih beredar di versi Conky saat ini? Jika ya, perbarui masalahnya. Jika tidak, masalah akan ditutup dalam 2 minggu.

@lasers Bisakah Anda melihatnya?

@ su8 saya mencoba. Tidak terbiasa dengan bahasa lokal. Mencoba Italia. Tidak mendapatkan koma untuk ditampilkan. Mungkin saya salah melakukannya.

@ su8 Saya mencoba git bisect di sini menjadi 1.9.0 . Tag sebelumnya tidak berisi cmake barang. :-(

KAMI.

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 Untuk berjaga-jaga jika Anda melewatkan komentar terbaru, saya dapat menguji ini sekarang.

Bisakah Anda menguji ini:

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

Berhasil. Nomor-nomor itu dicetak dengan koma juga. Malas menyalin contoh di atas.

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

Ini juga terjadi di master. Hmm. Sebenarnya, saya pikir ini tidak masalah apa adanya. Duh .

Buka pull request dengan perubahan ini karena saya malas melakukannya: hamburger:

Anda tidak malas. Saya laser lebih malas. Saya bertanya-tanya tentang sesuatu. Jika ini berisi koma, haruskah Anda tidak menukar karakter terlebih dahulu?

  • Jika koma terdeteksi ...

    • Gantikan titik dengan karakter unik

    • Ganti koma dengan titik

    • Gantikan uniq char dengan koma

    • Membandingkan

Apakah itu masuk akal atau saya terlalu banyak berpikir?

Itu standar negara saat ini, mengapa mengubahnya ke yang lain?

Idk. Noob di sini. Saya akan membuat permintaan tarik atas permintaan Anda. Untuk apa if (*p == '.') { ?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat