Conky: if_match compare falla si la configuración regional usa "," como marca decimal

Creado en 15 jul. 2013  ·  19Comentarios  ·  Fuente: brndnmtthws/conky

De mi registro:

conky: malos argumentos: '0,0' y '10.0'
conky: la comparación falló para la expresión '0,0 <10.0'

Estas comparaciones son todas similares a esta:

$ {if_match $ {downspeedf enp2s0} <100.0}

La comparación aún falla si el argumento se escribe con ",". Establecer explícitamente la configuración regional de conky en en_US.UTF-8 funciona por ahora.

(Esto no sucedió en 1.9.0).

bug

Todos 19 comentarios

Tengo el mismo problema.

Lo mismo aquí, ¿puede decirnos cómo establecer un LOCAL específico para conky?

Se introduce el comando con, por ejemplo.

LC_ALL = C conky

Gracias, sin embargo, resulta que la comparación está fallando en general con números de fracción:

conky: la comparación falló para la expresión '12,61> = 10'

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

Perdón por mi culpa, la configuración regional no estaba configurada, funcionó ahora. Ahora uso el siguiente script de inicio:

#!/bin/bash

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

sleep 5 && conky

Nota al margen: parece que está en algebra.cc: enum arg_type get_arg_type. Recomiendo utilizar un analizador de números que reconozca la configuración regional.

¿Sigue pendiente este problema en la versión actual de Conky? Si es así, actualice el problema. De lo contrario, el problema se cerrará en 2 semanas.

@lasers ¿Puedes echar un vistazo?

@ su8 lo intenté. No familiarizado con la configuración regional. Probé Italia. No aparecieron comas. Quizás lo hice mal.

@ su8 Intenté git bisect aquí en 1.9.0 . Las etiquetas anteriores no contienen cmake . :-(

NOS.

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 En caso de que se haya perdido el último comentario, puedo probarlo ahora.

¿Puedes probar esto?

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

Funciona. Los números también se imprimen con coma. Lazy copió el ejemplo anterior.

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

Esto también sucede en el maestro. Hmm. De hecho, creo que esto está bien tal como está. Duh .

Abra una solicitud de extracción con este cambio porque me da pereza hacerlo: hamburguesa:

No eres vago. Soy láser más vago. Me pregunto sobre algo. Si contiene una coma, ¿no debería intercambiar caracteres primero?

  • Si se detecta una coma ...

    • Reemplazar período con uniq char

    • Reemplaza la coma con un punto

    • Reemplazar uniq char con coma

    • Comparar

¿Tiene sentido o estoy pensando demasiado?

Ese es el estándar actual del país, ¿por qué cambiarlo por otro?

No sé. Noob aquí. Haré una solicitud de extracción a su solicitud. ¿Para qué sirve if (*p == '.') { ?

Cerrado a través de https://github.com/brndnmtthws/conky/pull/585 : wave:

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

akorop picture akorop  ·  3Comentarios

bad-interpreter picture bad-interpreter  ·  4Comentarios

nwwt picture nwwt  ·  5Comentarios

Dimerbone picture Dimerbone  ·  4Comentarios

oberon-manjaro picture oberon-manjaro  ·  4Comentarios