#1 Le 09/12/2023, à 10:36
- ar barzh paour
[BUG en cours] manquent des accents avec lshw -html
le bug est en cours (2023-12-11)
https://bugs.launchpad.net/ubuntu/+sour … ug/2046151
je me suis aperçu qu'il manquait dans les résultats de lshw -html certains accents
ce qui rend quelquefois pénible la lecture du résultat ou bien qui peut induire en erreur
avez-vous le même résultat que moi ?
lshw version 02.19.git.2021.06.19.996aaad9c7-2build1
sur
Linux probook.local 6.2.0-37-generic
ubuntu 22.04.3
un exemple correct sans -html
jpb@probook:~$ sudo lshw
*-core
description: Carte mère
produit: 3074
fabricant: Hewlett-Packard
identifiant matériel: 0
version: KBC Version 24.0E
numéro de série: CNU0161MH1
*-memory
description: Mémoire Système
identifiant matériel: 4
emplacement: Carte mère
taille: 4GiB
avec l'option -html , certains accents des valeurs disparaissent , les champ "titre" ont bien les accents
jpb@probook:~$ sudo lshw -html
ce qui donne (pour plus de clarté j'ai supprimé toutes les balises html)
id: core
description: Carte mre ( au lieu de Carte mère )
produit: 3074
fabricant: Hewlett-Packard
identifiant
matériel: 0
version: KBC Version 24.0E
numéro de série: CNU0161MH1
id: memory
description: Mmoire Systme ( au lieu de Mémoire Système )
identifiant
matériel: 4
emplacement: Carte mre ( au lieu de mère )
taille: 4GiB
description: Priphrique de stockage de masse ( au lieu de Périphérique )
description: Interface rseau sans fil ( au lieu de réseau )
nom logique: /media/jpb/site-AVé
mais avec -html il manque le "é"
nom logique: /media/jpb/site-AV
bien qu'il me donne quand même plus loin
pour la configuration de ce disque
configuration:
label = site-AVé
lastmountpoint = /media/jpb/site-AVé
Dernière modification par ar barzh paour (Le 01/03/2024, à 07:48)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#2 Le 09/12/2023, à 12:18
- Nuliel
Re : [BUG en cours] manquent des accents avec lshw -html
Bonjour,
avez-vous le même résultat que moi ?
Pour carte mère j'ai la même chose
nuliel@nuliel-Latitude-E7270:~$ sudo lshw -html | grep -i carte
<tr><td class="first">description: </td><td class="second">Carte mre</td></tr>
<tr><td class="first">emplacement: </td><td class="second">Carte mre</td></tr>
nuliel@nuliel-Latitude-E7270:~$
Pourtant en faisant
nuliel@nuliel-Latitude-E7270:~$ dpkg -S lshw
language-pack-gnome-en-base: /usr/share/locale-langpack/en_GB/LC_MESSAGES/lshw.mo
language-pack-gnome-en-base: /usr/share/locale-langpack/en_AU/LC_MESSAGES/lshw.mo
language-pack-gnome-fr-base: /usr/share/locale-langpack/fr/LC_MESSAGES/lshw.mo
lshw: /usr/share/man/man1/lshw.1.gz
lshw: /usr/share/doc/lshw/changelog.Debian.gz
lshw: /usr/share/doc/lshw
lshw: /usr/bin/lshw
lshw: /usr/share/doc/lshw/copyright
on trouve le fichier de traduction et on trouve la bonne chaine, avec l'accent:
nuliel@nuliel-Latitude-E7270:~$ strings -e S /usr/share/locale-langpack/fr/LC_MESSAGES/lshw.mo | grep -i "carte mère"
Carte mère
Carte mère
Vu que tu as certains accents mais pas tous, je pense qu'il faudrait regarder au niveau de lshw lui-même (son code source) et pas au niveau de la traduction qui a l'air ok.
Et en regardant le code source https://github.com/lyonel/lshw, on trouve aussi des fichiers de traduction fr qui contiennent carte mère avec accent
Dernière modification par Nuliel (Le 09/12/2023, à 12:32)
Hors ligne
#3 Le 10/12/2023, à 18:40
- ar barzh paour
Re : [BUG en cours] manquent des accents avec lshw -html
je ne sais pas trop quoi répondre
lshw tout seul c'est OK, mais avec l'option -html c'est pas bon
j'ai essayé de passer un bug, mais à chaque fois que j'ai voulu "passer un bug", c'est la galère et j'abondonne
Dernière modification par ar barzh paour (Le 10/12/2023, à 18:43)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#4 Le 10/12/2023, à 19:22
- iznobe
Re : [BUG en cours] manquent des accents avec lshw -html
Bonjour , à mon avis c' est plutot parce que lorsqu ' on utilise une sortie au format html ( ou XML aussi ) , le traitement ne fait pas qu ' ajouter les balises .
il transforme aussi les retours et les traductions .
Exemple :
iznobe@iznobe-PC:~$ sudo lshw -json | grep -i carte
"description" : "Carte mère",
"slot" : "Carte mère",
iznobe@iznobe-PC:~$
ici le traitement au format json ne modifie pas les accents , au format HTML selon comment est configuré le " transformateur " HTML , il ne supporte pas les caracteres accentués et donc vire simplement ce caractere qu ' il ne connait pas .
Faudrait inspecter le code source et verifier comment on passe sur une sortie en HTML par exemple . ou encore demander au dev de modifier ( si possible ) pour que ca prenne aussi en charge les carateres avec accents .
Dernière modification par iznobe (Le 10/12/2023, à 19:25)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#5 Le 10/12/2023, à 20:15
- Astrolivier
Re : [BUG en cours] manquent des accents avec lshw -html
salut,
https://github.com/lyonel/lshw/blob/mas … e/print.cc
if (html)
cout << " <tbody>" << endl;
if (node.getDescription() != "")
{
tab(level + 1, false);
if (html)
cout << "<tr><td class=\"first\">";
cout << _("description") << ": ";
if (html)
{
cout << "</td><td class=\"second\">";
cout << escape(node.getDescription());
cout << "</td></tr>";
}
else
cout << node.getDescription();
cout << endl;
}
n'y aurait-il pas une raison pour laquelle escape(node.getDescription() n'aimerait pas l'utf8 ou un truc du genre ?
S'il faut absolument faire des sacrifices pour assurer le progrès de l'humanité, ne serait-il pas indispensable de s'en tenir au principe selon lequel c'est à ceux dont on exige le sacrifice que la décision doit revenir en dernier ressort ? (howard zinn)
Hors ligne
#6 Le 10/12/2023, à 20:47
- Nuliel
Re : [BUG en cours] manquent des accents avec lshw -html
Je me suis renseigné et vu https://www.gnu.org/software/gettext/ma … l#Overview je pense finalement que ce n'est pas au niveau du code source que se trouve le problème. Si je comprends bien, au niveau du code source il n'y a que de l'anglais qui est marqué comme "à traduire" ou pas, c'est la librairie gettext qui se débrouille de traduire à l'exécution.
Mais je saurais pas dire comment régler ce problème
@Astrolivier: quand on regarde la chaine traduite de Carte mère dans fr.mo en hexadécimal, on a:
43 61 72 74 65 20 6d c3 a8 72 65
C a r t e m è r e
c3 a8 <- è
Pour moi la fonction escape peut pas être échappée involontairement
Dernière modification par Nuliel (Le 10/12/2023, à 20:55)
Hors ligne
#7 Le 11/12/2023, à 09:09
- iznobe
Re : [BUG en cours] manquent des accents avec lshw -html
Bonjour le soucis serait donc dans la fonction " gettext " à laquelle il faut faire prendre en compte les caracteres accentués .
Selon le format de sortie utilisé , il devrait y avoir possibilitté de lui donner des parametres .
A voir aussi ce que fait exactement la fonction " escape " mais de memoire si c ' est comme HTML / PHP , ca vire les trucs suceptible de faire des injections de code , donc theoriquement pas les caracteres accentués .
NOTE : une autre possibilité a envisager , serait que le fait que la langue d ' origine etant l ' anglais ca ne convertit pas correctement en francais tous les caracteres , mais là difficile d ' intervenir de toute maniere .
Le plus simple est à mon avis de faire remonter l' info , le dev du paquet lshw en aura pour quelques minutes à corriger .
Dernière modification par iznobe (Le 11/12/2023, à 09:11)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#8 Le 11/12/2023, à 09:20
- Astrolivier
Re : [BUG en cours] manquent des accents avec lshw -html
ce n'est que mon avis de débutant !
dans le bout de code que j'ai mis au dessus on a node.getdescription(). cette méthode n'a rien de particulier et revoie des accents sans le html (le else) et pas d'accent en html (le if)
la seule différence c'est la fonction escape que voici (dans outils.cc)
string escape(const string & s)
{
string result = "";
for (unsigned int i = 0; i < s.length(); i++)
// #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
if (s[i] == 0x9
|| s[i] == 0xA
|| s[i] == 0xD
|| s[i] >= 0x20)
switch (s[i])
{
case '<':
result += "<";
break;
case '>':
result += ">";
break;
case '&':
result += "&";
break;
case '"':
result += """;
break;
default:
result += s[i];
}
return result;
}
je ne vois pas pourquoi cette fonction enlèverait le "è" (ou coderait sur un seul octet) mais force est de constater. et tu (Nuliel) as montré que les trad (mo et tout) étaient correctes. ça ne passe pas par un interpréteur html donc pas de soucis de ce côté là.
j'en sais pas plus (enfin ce serait cool de corriger un bug dans lshw ! même s'il y a peu de chance)
Dernière modification par Astrolivier (Le 11/12/2023, à 09:36)
S'il faut absolument faire des sacrifices pour assurer le progrès de l'humanité, ne serait-il pas indispensable de s'en tenir au principe selon lequel c'est à ceux dont on exige le sacrifice que la décision doit revenir en dernier ressort ? (howard zinn)
Hors ligne
#9 Le 11/12/2023, à 12:07
- nany
Re : [BUG en cours] manquent des accents avec lshw -html
Bonjour,
Et en regardant le code source https://github.com/lyonel/lshw
Peut-être vaudrait-il mieux regarder le code source de lshw pour Ubuntu : https://git.launchpad.net/ubuntu/+source/lshw/ ?
L’affichage de class="first" (qui mets les accents) est différent de celui de class="second" (qui efface les lettres accentuées).
Or, comme l’a souligné Astrolivier, la différence réside dans la fonction escape. Mais cette fonction est identique à ce qu’a mis Astrolivier ci-dessus.
Bon courage.
PS : j’ai créé un rapport de bug, n’hésitez pas à vous ajouter comme personne affectée (en cliquant sur Does this bug affect you?).
Dernière modification par nany (Le 11/12/2023, à 13:21)
En ligne
#10 Le 11/12/2023, à 14:29
- iznobe
Re : [BUG en cours] manquent des accents avec lshw -html
Bonjour nany et merci pour les eclaircissements .
j ' ai co-signé la déclaration de bug .
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#11 Le 11/12/2023, à 15:09
- Astrolivier
Re : [BUG en cours] manquent des accents avec lshw -html
faut vivre avec son temps, j'ai demandé à chat gpt
The escape function you've posted seems to be designed to escape characters that are considered special in HTML, replacing them with their corresponding HTML entities. However, the function as it stands will skip characters with ASCII values less than 0x20 (excluding tabs, newlines, and carriage returns).
If you want to include accentuated characters like é or è, you need to adjust the condition that checks if a character is greater than or equal to 0x20. You may also want to consider handling Unicode characters appropriately.
Here's a modified version of your function to include characters with ASCII values less than 0x20:
cpp
#include <string>
std::string escape(const std::string &s) {
std::string result = "";
for (unsigned int i = 0; i < s.length(); i++) {
// #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
if (s[i] == 0x9 || s[i] == 0xA || s[i] == 0xD || (s[i] >= 0x20 && s[i] <= 0xD7FF) || (s[i] >= 0xE000 && s[i] <= 0xFFFD) || (s[i] >= 0x10000 && s[i] <= 0x10FFFF)) {
switch (s[i]) {
case '<':
result += "<";
break;
case '>':
result += ">";
break;
case '&':
result += "&";
break;
case '"':
result += """;
break;
default:
result += s[i];
}
}
}
return result;
}
This modification includes characters with ASCII values less than 0x20 while still excluding control characters such as tabs, newlines, and carriage returns. If you want to include all characters, you might need to adjust the conditions further based on your specific requirements. Additionally, if you're dealing with Unicode characters, consider using wide characters (wchar_t) and appropriate functions from the wctype.h library for more robust handling.
maintenant j'essaie de comprendre la réponse
(ah oui désolé je préfère l'anglais technique donc je lui ai causé en anglais, mais la condition en code reste la même)
edit : merde j'ai fait bugger chat gpt en voulant avoir des détails sur la condition
User
you just gave me back the original function with 's(i) >= 0x20' condition that you told me was the problem. I can't make sense of it. why this condition is not allowing the printing of accuentated charactersChatGPT
I apologize for the confusion in my responses. The condition s(i) >= 0x20 is not inherently problematic for including accented characters. I misunderstood your question, and I appreciate your patience.
In the original code, the condition
Error in input stream
1 / 2
There was an error generating a response
ps : j'ai modifié les crochets en (i) à cause des balises bbcode
edit 2 :
bon ben c'est bien la fonction escape a priori. je vous mets le gdb, j'ai fait un breakpoint à la fonction escape et je vous mets le résultat ou j'ai passé "heèèeeh" (j'ai pas envie de passer mon sytème en fr) comme string et ça ne passe pas dans result quand c'est un caractère accentué. il passe direct de la condition " if (s(i) == 0x9" à l'iteration suivante de la boucle for. il manque le switch.
comme ça je pense que s.length est trop court et fait coder sur un octet lors de l'initialisation de la string (s=""), ce qui fait que la condition s(i) >= 0x20 est aussi limité à 255 (0xFF)
:~/Programmes/lshw$ gdb --args ./src/lshw -html
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./src/lshw...
(gdb) break /home/poney2204/Programmes/lshw/src/core/osutils.cc:479
Breakpoint 1 at 0x6f4da: file osutils.cc, line 480.
(gdb) run
Starting program: /home/poney2204/Programmes/lshw/src/lshw -html
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
WARNING: you should run this program as super-user.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="lshw-B.02.19.91" />
<style type="text/css">
.first {font-weight: bold; margin-left: none; padding-right: 1em;vertical-align: top; }
.second {padding-left: 1em; width: 100%; vertical-align: center; }
.id {font-family: monospace;}
.indented {margin-left: 2em; border-left: dotted thin #dde; padding-bottom: 1em; }
.node {border: solid thin #ffcc66; padding: 1em; background: #ffffcc; }
.node-unclaimed {border: dotted thin #c3c3c3; padding: 1em; background: #fafafa; color: red; }
.node-disabled {border: solid thin #f55; padding: 1em; background: #fee; color: gray; }
</style>
<title>poney2204-inspiron</title>
</head>
<body>
<div class="indented">
<table width="100%" class="node" summary="attributes of poney2204-inspiron">
<thead><tr><td class="first">id:</td><td class="second"><div class="id">poney2204-inspiron</div></td></tr></thead>
<tbody>
Breakpoint 1, escape (s="Computer") at osutils.cc:480
480 {
(gdb) step
481 string result = "";
(gdb) step
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<std::allocator<char> > (this=0x7fffffffdb50, __s=0x555555634a08 "", __a=...) at /usr/include/c++/11/bits/basic_string.h:533
533 basic_string(const _CharT* __s, const _Alloc& __a = _Alloc())
(gdb) step
534 : _M_dataplus(_M_local_data(), __a)
(gdb) info locals
__end = <optimized out>
(gdb) step
536 const _CharT* __end = __s ? __s + traits_type::length(__s)
(gdb) step
std::char_traits<char>::length (__s=0x555555634a08 "") at /usr/include/c++/11/bits/char_traits.h:396
396 if (__constant_string_p(__s))
(gdb) step
std::__constant_string_p<char> (__s=0x555555634a08 "") at /usr/include/c++/11/bits/char_traits.h:290
290 return __builtin_is_constant_evaluated();
(gdb) step
std::char_traits<char>::length (__s=0x555555634a08 "") at /usr/include/c++/11/bits/char_traits.h:396
396 if (__constant_string_p(__s))
(gdb) step
399 return __builtin_strlen(__s);
(gdb) step
__strlen_sse2 () at ../sysdeps/x86_64/multiarch/strlen-vec.S:41
41 ../sysdeps/x86_64/multiarch/strlen-vec.S: Aucun fichier ou dossier de ce type.
(gdb) step
85 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
86 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
87 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
88 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
89 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
90 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
91 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
93 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
95 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
126 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
127 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
128 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
129 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
130 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
131 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
__strlen_sse2 () at ../sysdeps/x86_64/multiarch/strlen-vec.S:133
133 in ../sysdeps/x86_64/multiarch/strlen-vec.S
(gdb) step
std::char_traits<char>::length (__s=0x555555634a08 "") at /usr/include/c++/11/bits/char_traits.h:399
399 return __builtin_strlen(__s);
(gdb) step
400 }
(gdb) step
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<std::allocator<char> > (this=0x7fffffffdb50, __s=0x555555634a08 "", __a=...) at /usr/include/c++/11/bits/basic_string.h:539
539 _M_construct(__s, __end, random_access_iterator_tag());
(gdb) step
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*> (this=0x7fffffffdb50, __beg=0x555555634a08 "", __end=0x555555634a08 "") at /usr/include/c++/11/bits/basic_string.tcc:206
206 basic_string<_CharT, _Traits, _Alloc>::
(gdb) step
211 if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end)
(gdb) step
__gnu_cxx::__is_null_pointer<char const> (__ptr=0x555555634a08 "") at /usr/include/c++/11/ext/type_traits.h:153
153 { return __ptr == 0; }
(gdb) step
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*> (this=0x7fffffffdb50, __beg=0x555555634a08 "", __end=0x555555634a08 "") at /usr/include/c++/11/bits/basic_string.tcc:211
211 if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end)
(gdb) step
215 size_type __dnew = static_cast<size_type>(std::distance(__beg, __end));
(gdb) step
std::distance<char const*> (__first=0x555555634a08 "", __last=0x555555634a08 "") at /usr/include/c++/11/bits/stl_iterator_base_funcs.h:142
142 std::__iterator_category(__first));
(gdb) step
std::__iterator_category<char const*> () at /usr/include/c++/11/bits/stl_iterator_base_types.h:239
239 { return typename iterator_traits<_Iter>::iterator_category(); }
(gdb) step
std::distance<char const*> (__first=0x555555634a08 "", __last=0x555555634a08 "") at /usr/include/c++/11/bits/stl_iterator_base_funcs.h:141
141 return std::__distance(__first, __last,
(gdb) step
std::__distance<char const*> (__first=0x555555634a08 "", __last=0x555555634a08 "") at /usr/include/c++/11/bits/stl_iterator_base_funcs.h:104
104 return __last - __first;
(gdb) step
105 }
(gdb) step
std::distance<char const*> (__first=0x555555634a08 "", __last=0x555555634a08 "") at /usr/include/c++/11/bits/stl_iterator_base_funcs.h:143
143 }
(gdb) step
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*> (this=0x7fffffffdb50, __beg=0x555555634a08 "", __end=0x555555634a08 "") at /usr/include/c++/11/bits/basic_string.tcc:215
215 size_type __dnew = static_cast<size_type>(std::distance(__beg, __end));
(gdb) step
217 if (__dnew > size_type(_S_local_capacity))
(gdb) step
225 { this->_S_copy_chars(_M_data(), __beg, __end); }
(gdb) step
232 _M_set_length(__dnew);
(gdb) step
233 }
(gdb) step
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<std::allocator<char> > (this=0x7fffffffdb50, __s=0x555555634a08 "", __a=...) at /usr/include/c++/11/bits/basic_string.h:540
540 }
(gdb) step
escape (s="Computer") at osutils.cc:483
483 for (unsigned int i = 0; i < s.length(); i++)
(gdb) info locals
i = 32767
result = ""
(gdb) call s.assign("heèèeeh")
$1 = "heèèeeh"
(gdb) step
485 if (s[i] == 0x9
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
486 || s[i] == 0xA
(gdb) step
487 || s[i] == 0xD
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
489 switch (s[i])
(gdb) step
504 result += s[i];
(gdb) step
483 for (unsigned int i = 0; i < s.length(); i++)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
486 || s[i] == 0xA
(gdb) step
487 || s[i] == 0xD
(gdb) watch result
Hardware watchpoint 2: result
(gdb) watch result
Hardware watchpoint 3: result
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
489 switch (s[i])
(gdb) step
504 result += s[i];
(gdb) step
Hardware watchpoint 2: result
Old value = "h"
New value = "h"
Hardware watchpoint 3: result
Old value = "h"
New value = "h"
0x00007ffff7ebdab5 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char) () from /lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) step
Single stepping until exit from function _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc,
which has no line number information.
Hardware watchpoint 2: result
Old value = "h"
New value = "he"
Hardware watchpoint 3: result
Old value = "h"
New value = "he"
0x00007ffff7ebdabc in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char) () from /lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) step
Single stepping until exit from function _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc,
which has no line number information.
Hardware watchpoint 2: result
Old value = "he"
New value = "he"
Hardware watchpoint 3: result
Old value = "he"
New value = "he"
0x00007ffff7ebdac1 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char) () from /lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) step
Single stepping until exit from function _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc,
which has no line number information.
escape (s="heèèeeh") at osutils.cc:483
483 for (unsigned int i = 0; i < s.length(); i++)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
486 || s[i] == 0xA
(gdb) step
487 || s[i] == 0xD
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
483 for (unsigned int i = 0; i < s.length(); i++)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
486 || s[i] == 0xA
(gdb) step
487 || s[i] == 0xD
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
483 for (unsigned int i = 0; i < s.length(); i++)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
486 || s[i] == 0xA
(gdb) step
487 || s[i] == 0xD
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
483 for (unsigned int i = 0; i < s.length(); i++)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
486 || s[i] == 0xA
(gdb) step
487 || s[i] == 0xD
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
483 for (unsigned int i = 0; i < s.length(); i++)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
486 || s[i] == 0xA
(gdb) step
487 || s[i] == 0xD
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
489 switch (s[i])
(gdb) step
504 result += s[i];
(gdb) step
Hardware watchpoint 2: result
Old value = "he"
New value = "he"
Hardware watchpoint 3: result
Old value = "he"
New value = "he"
0x00007ffff7ebdab5 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char) () from /lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) step
Single stepping until exit from function _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc,
which has no line number information.
Hardware watchpoint 2: result
Old value = "he"
New value = "hee"
Hardware watchpoint 3: result
Old value = "he"
New value = "hee"
0x00007ffff7ebdabc in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char) () from /lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) step
Single stepping until exit from function _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc,
which has no line number information.
Hardware watchpoint 2: result
Old value = "hee"
New value = "hee"
Hardware watchpoint 3: result
Old value = "hee"
New value = "hee"
0x00007ffff7ebdac1 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char) () from /lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) step
Single stepping until exit from function _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc,
which has no line number information.
escape (s="heèèeeh") at osutils.cc:483
483 for (unsigned int i = 0; i < s.length(); i++)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
486 || s[i] == 0xA
(gdb) step
487 || s[i] == 0xD
(gdb) step
488 || s[i] >= 0x20)
(gdb) step
485 if (s[i] == 0x9
(gdb) step
489 switch (s[i])
(gdb) step
504 result += s[i];
(gdb) step
Hardware watchpoint 2: result
Old value = "hee"
New value = "hee"
Hardware watchpoint 3: result
Old value = "hee"
New value = "hee"
0x00007ffff7ebdab5 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char) () from /lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) step
Single stepping until exit from function _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc,
which has no line number information.
Hardware watchpoint 2: result
Old value = "hee"
New value = "heee"
Hardware watchpoint 3: result
Old value = "hee"
New value = "heee"
0x00007ffff7ebdabc in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char) () from /lib/x86_64-linux-gnu/libstdc++.so.6
(gdb)
Dernière modification par Astrolivier (Le 11/12/2023, à 23:29)
S'il faut absolument faire des sacrifices pour assurer le progrès de l'humanité, ne serait-il pas indispensable de s'en tenir au principe selon lequel c'est à ceux dont on exige le sacrifice que la décision doit revenir en dernier ressort ? (howard zinn)
Hors ligne
#12 Le 13/12/2023, à 12:58
- Astrolivier
Re : [BUG en cours] manquent des accents avec lshw -html
j'ai trouvé d'où venait l'erreur. dans la fonction escape est fait une condition if qui sélectionne quelques caractères et tous ceux au dessus de 0x20. ça marche pour l'ascii mais la manière de coder une std::string renvoie des nombres négatifs sur les caractères accentués (ou le chinois, j'ai testé ). donc on rajoute la condition <0 et c'est bon.
j'ai fait un fork de lshw ici avec la modif... mais j'arrive pas à tester. j'ai essayé sur un 23.10 tout en français et lshw me sort de l'anglais. bref, est-ce que quelqu'un voudrait tester la nouvelle version pour vérifier avant que je me ridiculise d'un pull request !
https://github.com/olivierPrigent/lshw/tree/master
git clone https://github.com/olivierPrigent/lshw.git
une fois dans le dossier
make
lancer
lshw
S'il faut absolument faire des sacrifices pour assurer le progrès de l'humanité, ne serait-il pas indispensable de s'en tenir au principe selon lequel c'est à ceux dont on exige le sacrifice que la décision doit revenir en dernier ressort ? (howard zinn)
Hors ligne
#13 Le 13/12/2023, à 15:33
- O_20_100_O
Re : [BUG en cours] manquent des accents avec lshw -html
Bonjour,
Ça marche !
id:
elitedesk
produit: HP EliteDesk 800 G3 DM 35W (Y3A16AV)description: Carte mère
produit: 829A
fabriquant: HP
identifiant matériel:id:
memory
description: Mémoire Système
Dernière modification par O_20_100_O (Le 13/12/2023, à 16:15)
Hors ligne
#14 Le 13/12/2023, à 16:45
- ar barzh paour
Re : [BUG en cours] manquent des accents avec lshw -html
@Atrolivier
ça me dépasse un peu mais
@nany
merci pour la déclaration de bug
je me suis ajouté dans la liste des personnes affectés à ce bug
@iznobe (post 7)
Le plus simple est à mon avis de faire remonter l' info , le dev du paquet lshw en aura pour quelques minutes à corriger
il y a actuellement une trentaine de signalisation de bug concernant lswh
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#15 Le 13/12/2023, à 16:50
- Astrolivier
Re : [BUG en cours] manquent des accents avec lshw -html
super, merci beaucoup
S'il faut absolument faire des sacrifices pour assurer le progrès de l'humanité, ne serait-il pas indispensable de s'en tenir au principe selon lequel c'est à ceux dont on exige le sacrifice que la décision doit revenir en dernier ressort ? (howard zinn)
Hors ligne