Conky: if_match compare falhará se locale usar "," como marca decimal

Criado em 15 jul. 2013  ·  19Comentários  ·  Fonte: brndnmtthws/conky

Do meu log:

conky: Argumentos ruins: '0,0' e '10,0'
conky: a comparação falhou para a expressão '0,0 <10,0'

Essas comparações são todas semelhantes a esta:

$ {if_match $ {downspeedf enp2s0} <100,0}

A comparação ainda falha se o argumento for escrito com ",". Definir explicitamente o local de conky para en_US.UTF-8 funciona por enquanto.

(Isso não acontecia no 1.9.0.)

bug

Todos 19 comentários

Eu tenho o mesmo problema.

Mesmo aqui, você pode dizer por favor como definir um LOCALE específico para conky?

Você inicia o comando com, por exemplo.

LC_ALL = C conky

Obrigado, no entanto, a comparação está falhando em geral com os números fracionários:

conky: comparação falhou para a expressão '12,61> = 10'

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

Desculpe minha culpa, o local não foi definido funcionou agora. Eu uso o seguinte script de inicialização agora:

#!/bin/bash

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

sleep 5 && conky

Observação lateral: parece que está em algebra.cc: enum arg_type get_arg_type. Eu recomendo usar um analisador de número com reconhecimento de local.

Este problema ainda está pendente na versão atual do Conky? Em caso afirmativo, atualize o problema. Caso contrário, o problema será encerrado em 2 semanas.

@lasers Você pode dar uma olhada?

@ su8 eu tentei. Não estou familiarizado com o local. Itália experimentada. Não recebi vírgulas para exibir. Talvez eu tenha feito errado.

@ su8 Eu tentei git bisect aqui para 1.9.0 . As tags anteriores não contêm cmake stuffs. :-(

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 Caso você tenha perdido o comentário mais recente, posso testar isso agora.

Você pode testar isso:

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. Os números também são impressos com vírgulas. Lazy copiou o exemplo acima.

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

Isso também acontece no master. Hmm. Na verdade, acho que está tudo bem como está. Duh .

Abra uma solicitação pull com esta mudança, pois tenho preguiça de fazer isso: hambúrguer:

Você não é preguiçoso. Eu sou os lasers mais preguiçosos. Estou pensando em algo. Se contiver uma vírgula, você não deve trocar os caracteres primeiro?

  • Se vírgula detectada ...

    • Substitua o período por uniq char

    • Substitua a vírgula por um ponto

    • Substitua uniq char por vírgula

    • Comparar

Isso faz sentido ou estou pensando muito?

Esse é o padrão atual do país, por que mudá-lo para outro?

Sei lá. Noob aqui. Vou fazer uma solicitação de pull a seu pedido. Para que serve if (*p == '.') { ?

Esta página foi útil?
0 / 5 - 0 avaliações