Conky: تفشل مقارنة if_match إذا كانت اللغة تستخدم "،" كعلامة عشرية

تم إنشاؤها على ١٥ يوليو ٢٠١٣  ·  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 كومينتر

لدي نفس المشكلة.

نفس الشيء هنا ، هل يمكنك أن تخبر من فضلك كيفية تعيين LOCALE معين لـ conky؟

أنت تسبق الأمر بـ eg.

LC_ALL = C conky

شكرًا ، لكن اتضح أن المقارنة تفشل بشكل عام مع الأعداد الكسرية:

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_type get_arg_type. أوصي باستخدام محلل رقم علم الإعدادات المحلية.

هل ما زالت هذه المشكلة معلقة في الإصدار الحالي من Conky؟ إذا كان الأمر كذلك ، يرجى تحديث المشكلة. خلاف ذلك ، سيتم إغلاق المشكلة في غضون أسبوعين.

@ الليزر هل يمكنك إلقاء نظرة؟

@ su8 حاولت. ليس على دراية باللغة. حاولت ايطاليا. لم يتم عرض الفواصل. ربما فعلت ذلك خطأ.

@ su8 حاولت git bisect هنا إلى 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

هذا يحدث في السيد أيضا. همم. في الواقع ، أعتقد أن هذا جيد كما هو. دوه .

افتح طلب سحب بهذا التغيير لأنني كسول للقيام بذلك: هامبرغر:

أنت لست كسولاً. أنا ليزر كسول. أنا أتساءل عن شيء ما. إذا كان هذا يحتوي على فاصلة ، ألا يجب عليك تبديل الأحرف أولاً؟

  • إذا تم الكشف عن فاصلة ...

    • استبدل النقطة بـ uniq char

    • استبدل الفاصلة بنقطة

    • استبدل الحرف الفريد بفاصلة

    • قارن

هل هذا منطقي أم أنني أفكر كثيرًا؟

هذا هو معيار الدولة الحالي ، لماذا تغييره إلى معيار آخر؟

لا أعرف. مستجد هنا. سأقدم طلب سحب بناء على طلبك. ما هو if (*p == '.') { ل؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

zero77 picture zero77  ·  3تعليقات

Airblader picture Airblader  ·  4تعليقات

fonic picture fonic  ·  3تعليقات

ghost picture ghost  ·  4تعليقات

bad-interpreter picture bad-interpreter  ·  4تعليقات