Changeset 2387
- Timestamp:
- 03/21/04 19:57:09 (9 years ago)
- Files:
-
- 1 modified
-
lm-sensors/trunk/prog/sensors/main.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lm-sensors/trunk/prog/sensors/main.c
r2328 r2387 25 25 #include <locale.h> 26 26 #include <langinfo.h> 27 #include <iconv.h> 27 28 28 29 #include "lib/sensors.h" … … 155 156 } 156 157 158 static void set_degstr(void) 159 { 160 /* Size hardcoded for better performance. 161 Don't forget to count the trailing \0! */ 162 size_t deg_latin1_size = 3; 163 char *deg_latin1_text[2] = {"\260C", "\260F"}; 164 const char *deg_default_text[2] = {" C", " F"}; 165 size_t nconv; 166 size_t degstr_size = sizeof(degstr); 167 char *degstr_ptr = degstr; 168 169 iconv_t cd = iconv_open(nl_langinfo(CODESET), "ISO-8859-1"); 170 if (cd != (iconv_t) -1) { 171 nconv = iconv(cd, &(deg_latin1_text[fahrenheit]), °_latin1_size, 172 °str_ptr, °str_size); 173 iconv_close(cd); 174 175 if (nconv != (size_t) -1) 176 return; 177 } 178 179 /* There was an error during the conversion, use the default text */ 180 strcpy(degstr, deg_default_text[fahrenheit]); 181 } 182 157 183 int main (int argc, char *argv[]) 158 184 { … … 254 280 255 281 /* build the degrees string */ 256 if (strcmp(nl_langinfo(CODESET), "UTF-8") == 0) 257 sprintf(degstr, "%c%c", 0xc2, 0xb0); 258 else 259 sprintf(degstr, "%c", 176); 260 if (fahrenheit) { 261 strcat(degstr, "F"); 262 } else { 263 strcat(degstr, "C"); 264 } 282 set_degstr(); 265 283 266 284 if(do_the_real_work(&error)) {
