diff options
132 files changed, 30315 insertions, 7947 deletions
@@ -5,4 +5,6 @@ config.h *~ arch/this build/ +test/build-* +po/*.old diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..43026ff5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "deps/uber-graph"] + path = deps/uber-graph + url = https://github.com/chergert/uber-graph.git diff --git a/AUTHORS.md b/AUTHORS.md new file mode 100644 index 00000000..dc7b7ded --- /dev/null +++ b/AUTHORS.md @@ -0,0 +1,54 @@ +HardInfo was started in 2003, by Leandro Pereira, and has received +contributions from many people over the years. + +There was a time it didn't even use a version control system. The early +notes and changelogs were lost. Some important contributions were made +by simply submitting bug reports or comments. For these reasons, it +would be difficult to gather the names of all the people that +contributed to the project. + +Here is an incomplete list of contributors: + +* Leandro A. F. Pereira <leandro@hardinfo.org> +* Stewart Adam <s.adam@diffingo.com> +* Pascal F. Martin <pascalmartin@earthlink.net> +* Burt P. <pburt0@gmail.com> +* TotalCaesar659 <x24cm5b8c54q6szxw@yandex.ru> +* Andrey Esin <gmlastik@gmail.com> +* Julian Ospald <julian.ospald@googlemail.com> +* Julien Lavergne <gilir@ubuntu.com> +* Fernando López <fernando.e.lopez@gmail.com> +* PICCORO Lenz McKAY <mckaygerhard@gmail.com> +* Alexander Münch <git@thehacker.biz> +* Simon Quigley <tsimonq2@ubuntu.com> +* AsciiWolf <mail@asciiwolf.com> +* George Schneeloch <george@editshare.com> +* Mattia Rizzolo <mattia@mapreri.org> +* Yo <yoldc22@free.fr> +* "jamesbond" (http://chiselapp.com/user/jamesbond/) + +Includes code from or based on: + +* uber-graph by Christian Hergert <chris@dronelabs.com>, and others. +* BinReloc by Hongli Lai <h.lai@chello.nl> +* decode-dimms.pl by Philip Edelbrock <phil@netroedge.com>, + Christian Zuckschwerdt <zany@triq.net>, and + Burkart Lingner <burkart@bollchen.de> +* x86cpucaps by Osamu Kayasono <jacobi@jcom.home.ne.jp> +* MD5 implementation by Colin Plumb (see md5.c for details) +* SHA1 implementation by Steve Reid (see sha1.c for details) +* Blowfish implementation by Paul Kocher (see blowfish.c for details) +* Raytracing benchmark by John Walker (see fbench.c for details) +* FFT benchmark by Scott Robert Ladd (see fftbench.c for details) +* Vendor list based on GtkSysInfo by Pissens Sebastien + +Artwork: + +* Jakub Szypulka +* Tango Project +* The GNOME Project +* VMWare, Inc. (USB icon from VMWare Workstation 6) + +See also: + +* https://github.com/lpereira/hardinfo/graphs/contributors diff --git a/CMakeLists.txt b/CMakeLists.txt index ae29a99e..d4c60fec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,10 @@ cmake_policy(VERSION 2.6) set(HARDINFO_VERSION "0.6-alpha") option(HARDINFO_NOSYNC "Disable database sync via libsoup" 1) +option(HARDINFO_GTK3 "Attempt to build for GTK3 (0/off for GTK2)" 0) +set(OVRARCH "" CACHE STRING "Override HARDINFO_ARCH value") +set(OVRCPUINFO "" CACHE STRING "Specify a different file for /proc/cpuinfo") +set(OVRDTRROOT "" CACHE STRING "Specify a different path for /proc/device-tree") SET( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ) include(GNUInstallDirs) @@ -20,8 +24,8 @@ endif() if(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "i[3-6]86") set(HARDINFO_ARCH "x86") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "x86_64") - set(HARDINFO_ARCH "x86_64") -elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "ppc{32,64}") + set(HARDINFO_ARCH "x86") +elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "(ppc|ppc32|ppc64|ppc64le)") set(HARDINFO_ARCH "ppc") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "mips") set(HARDINFO_ARCH "mips") @@ -31,7 +35,7 @@ elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "sparc{32,64}") set(HARDINFO_ARCH "sparc") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "arm.*") set(HARDINFO_ARCH "arm") -elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "aarch64*") +elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "aarch64.*") set(HARDINFO_ARCH "arm") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "ia64") set(HARDINFO_ARCH "ia64") @@ -41,12 +45,28 @@ elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "s390.*") set(HARDINFO_ARCH "s390") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "m68k") set(HARDINFO_ARCH "m68k") -elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "sh{3,4}") +elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "sh[3-5]") set(HARDINFO_ARCH "sh") +elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "(riscv|riscv32|riscv64)") + set(HARDINFO_ARCH "riscv") else() message(FATAL_ERROR "Unsupported architecture: ${CMAKE_HOST_SYSTEM_PROCESSOR}") endif() +if (OVRARCH) + set(HARDINFO_ARCH ${OVRARCH}) +endif() +if (OVRCPUINFO) + add_definitions(-DPROC_CPUINFO=${OVRCPUINFO}) + message(STATUS "/proc/cpuinfo override: ${OVRCPUINFO}") +endif() +if (OVRDTRROOT) + add_definitions(-DDTR_ROOT=${OVRDTRROOT}) + message(STATUS "/proc/device-tree override: ${OVRDTRROOT}") +endif() +add_definitions(-DLOCALEDIR="${CMAKE_INSTALL_PREFIX}/share/locale") +message(STATUS "LOCALEDIR = ${CMAKE_INSTALL_PREFIX}/share/locale") + message(STATUS "Building HardInfo for architecture: ${HARDINFO_OS}-${HARDINFO_ARCH}") add_definitions("-std=gnu89") @@ -54,18 +74,30 @@ add_definitions("-std=gnu89") add_subdirectory(po) include(FindPkgConfig) -pkg_check_modules(GTK REQUIRED gtk+-2.0>=2.10 glib-2.0>=2.10 gthread-2.0>=2.10 gmodule-export-2.0>=2.10) +if (HARDINFO_GTK3) + message(STATUS "Building for GTK3 (experimental!)") + pkg_check_modules(GTK REQUIRED gtk+-3.0>=3.0 cairo>=1.0 cairo-png>=1.0 glib-2.0>=2.10 gthread-2.0>=2.10 gmodule-export-2.0>=2.10) + add_definitions(-DGTK_DISABLE_SINGLE_INCLUDES) +else() + message(STATUS "Building for GTK2") + pkg_check_modules(GTK REQUIRED gtk+-2.0>=2.10 glib-2.0>=2.10 gthread-2.0>=2.10 gmodule-export-2.0>=2.10) +endif() + if(NOT HARDINFO_NOSYNC) pkg_check_modules(LIBSOUP libsoup-2.4>=2.24) endif() +include(FindZLIB REQUIRED) + include_directories( ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/includes ${CMAKE_SOURCE_DIR}/includes/${HARDINFO_ARCH} + ${CMAKE_SOURCE_DIR}/deps/uber-graph/uber ${CMAKE_BINARY_DIR} ${GTK_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} + ${ZLIB_INCLUDE_DIRS} ) link_directories( ${GTK_LIBRARY_DIRS} @@ -83,6 +115,10 @@ set(HARDINFO_RESOURCES "benchmark.data" ) +set(HARDINFO_MANPAGES + "hardinfo.1" +) + set(MODULE_computer_SOURCES modules/computer.c modules/computer/alsa.c @@ -101,10 +137,13 @@ set(MODULE_computer_SOURCES ) set(MODULE_devices_SOURCES modules/devices.c + modules/devices/cpu_util.c modules/devices/${HARDINFO_ARCH}/processor.c modules/devices/battery.c modules/devices/devmemory.c modules/devices/dmi.c + modules/devices/devicetree.c + modules/devices/devicetree/dt_util.c modules/devices/inputdevices.c modules/devices/pci.c modules/devices/printers.c @@ -120,7 +159,7 @@ set(MODULE_network_SOURCES modules/network/nfs.c modules/network/samba.c ) -set(MODULE_benchmark_SOURCES +set(MODULE_benchmark_SOURCES_GTKANY modules/benchmark.c modules/benchmark/blowfish.c modules/benchmark/cryptohash.c @@ -129,12 +168,20 @@ set(MODULE_benchmark_SOURCES modules/benchmark/fftbench.c modules/benchmark/fft.c modules/benchmark/fib.c - modules/benchmark/guibench.c modules/benchmark/md5.c modules/benchmark/nqueens.c modules/benchmark/raytrace.c modules/benchmark/sha1.c + modules/benchmark/zlib.c +) +set(MODULE_benchmark_SOURCES_GTK2 + modules/benchmark/guibench.c ) +if (HARDINFO_GTK3) + set(MODULE_benchmark_SOURCES ${MODULE_benchmark_SOURCES_GTKANY}) +else() + set(MODULE_benchmark_SOURCES ${MODULE_benchmark_SOURCES_GTKANY} ${MODULE_benchmark_SOURCES_GTK2}) +endif() set_source_files_properties( modules/benchmark/blowfish.c @@ -150,16 +197,48 @@ foreach (_module ${HARDINFO_MODULES}) set_target_properties(${_module} PROPERTIES PREFIX "") endforeach() -add_library(hardinfo-shell STATIC - shell/callbacks.c - shell/iconcache.c - shell/loadgraph.c - shell/menu.c - shell/report.c - shell/shell.c - shell/stock.c +if (HARDINFO_GTK3) +add_library(uber-graph STATIC + deps/uber-graph/uber/g-ring.c + deps/uber-graph/uber/uber-frame-source.c + deps/uber-graph/uber/uber-graph.c + deps/uber-graph/uber/uber-heat-map.c + deps/uber-graph/uber/uber-label.c + deps/uber-graph/uber/uber-line-graph.c + deps/uber-graph/uber/uber-range.c + deps/uber-graph/uber/uber-scale.c + deps/uber-graph/uber/uber-scatter.c + deps/uber-graph/uber/uber-timeout-interval.c + deps/uber-graph/uber/uber-window.c +) +endif() + +if (HARDINFO_GTK3) +add_executable(hardinfo + hardinfo/binreloc.c + hardinfo/expr.c + hardinfo/hardinfo.c + hardinfo/socket.c + hardinfo/util.c + hardinfo/vendor.c + hardinfo/info.c + shell/callbacks.c + shell/iconcache.c + shell/menu.c + shell/report.c + shell/shell.c + shell/stock.c shell/syncmanager.c + shell/loadgraph-uber.c +) +target_link_libraries(hardinfo + uber-graph + ${GTK_LIBRARIES} + ${LIBSOUP_LIBRARIES} + m + ${ZLIB_LIBRARIES} ) +else() add_executable(hardinfo hardinfo/binreloc.c hardinfo/expr.c @@ -167,13 +246,23 @@ add_executable(hardinfo hardinfo/socket.c hardinfo/util.c hardinfo/vendor.c + hardinfo/info.c + shell/callbacks.c + shell/iconcache.c + shell/menu.c + shell/report.c + shell/shell.c + shell/stock.c + shell/syncmanager.c + shell/loadgraph.c ) target_link_libraries(hardinfo ${GTK_LIBRARIES} ${LIBSOUP_LIBRARIES} - hardinfo-shell m + ${ZLIB_LIBRARIES} ) +endif() configure_file(config.h.cmake ${CMAKE_BINARY_DIR}/config.h @ONLY) configure_file(hardinfo.desktop.cmake ${CMAKE_BINARY_DIR}/hardinfo.desktop @ONLY) @@ -201,3 +290,7 @@ install(DIRECTORY doc PATTERN "*.{hlp,png}" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) +install(FILES ${HARDINFO_MANPAGES} + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/man/man1 + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ +) diff --git a/CONTRIBUTING b/CONTRIBUTING new file mode 100644 index 00000000..0b82439a --- /dev/null +++ b/CONTRIBUTING @@ -0,0 +1,16 @@ +Project +======= + +Issues and Pull Requests via GitHub: + +* https://github.com/lpereira/hardinfo + +Translators +=========== + +If possible, run `bash updatepo.sh` in the po/ directory before begining. +This will regenerate hardinfo.pot and update all the .po files. +Nothing is lost if this isn't done, but it prevents wasting time translating +strings that have changed, or are no longer used. + +DO NOT use `make pot`! diff --git a/README b/README deleted file mode 100644 index 5484dfe0..00000000 --- a/README +++ /dev/null @@ -1,71 +0,0 @@ - - *** This project is not dead, but needs a maintainer *** - *** Please contact the author if you're interested *** - - -HardInfo is a system profiler and benchmark for Linux systems. It is able to -obtain information from both hardware and basic software, and organize them -in a simple to use GUI. - -Features include: -- Report generation (in either HTML or plain text) -- Benchmark result synchronization -- Ability to explore the information on remote computers - - -DEPENDENCIES ------------- - -Required: -- GTK+ 2.10 (or newer) -- GLib 2.10 (or newer) - -Optional (for synchronization/remote): -- Libsoup 2.24 (or newer) - -If having trouble building with libsoup, disable it with: - cmake -DHARDINFO_NOSYNC=1 - -BUILDING --------- - -HardInfo previously used a hand-made Makefile and configure scripts, but it -is now using CMake. This makes the job of maintaining HardInfo simpler and -also produces better binaries. - -To build, it is recommended to create a build directory and build from -there: - - hardinfo $ mkdir build - hardinfo $ cd build - build $ cmake .. - build $ make - -There are some variables that can be changed: - - CMAKE_BUILD_TYPE Can be either Release or Debug - [Default: Release] Debug builds prints messages to console - and are not recommended for general use - CMAKE_INSTALL_PREFIX Sets the installation prefix. - [Default: /usr/local] - -To set a variable, pass use cmake's -D command-line parameter. For example: - - build $ cmake .. -DCMAKE_BUILD_TYPE=Debug - -SETTING UP ----------- - -Most things in HardInfo are detected automatically. However, some things -depends on manual set up. They are: - -Sensors -------- - -lm-sensors: If your computer is compatible with lm-sensors module, use the -"sensors-detect" program included with the lm-sensors package, and be sure -to have the detected kernel modules loaded. - -hddtemp: To obtain the hard disk drive temperature, be sure to run hddtemp -in daemon mode, using the default port. - diff --git a/README.md b/README.md new file mode 100644 index 00000000..04f172f2 --- /dev/null +++ b/README.md @@ -0,0 +1,78 @@ +HARDINFO +======== + +HardInfo is a system profiler and benchmark for Linux systems. It is able to +obtain information from both hardware and basic software, and organize them +in a simple to use GUI. + +Features include: +- Report generation (in either HTML or plain text) +- Benchmark result synchronization +- Ability to explore the information on remote computers + +Status +------ + +Capabilities: Hardinfo currently decteds software and detected hardware by the OS, mostly almost all. +Features: the remote sync was disable due server was lost +Development: currently are made by contribution, a stable and fixed/dedicated maintainer are required. + +DEPENDENCIES +------------ + +Required: +- GTK+ 2.10 (or newer) +- GLib 2.10 (or newer) +- Zlib (for zlib benchmark) + +Optional (for synchronization/remote): +- Libsoup 2.24 (or newer) + +BUILDING +-------- + +Create a build directory and build from there: + +``` bash + hardinfo $ mkdir build + hardinfo $ cd build + build $ cmake .. + build $ make +``` + +There are some variables that can be changed: + + * `CMAKE_BUILD_TYPE` : Can be either Release or Debug + * `[Default: Release]` Debug builds prints messages to console and are not recommended for general use + * `CMAKE_INSTALL_PREFIX` : Sets the installation prefix. + * `[Default: /usr/local]` : distributions generalli changes to `/usr` + * `HARDINFO_NOSYNC` : Disables network synchronization + * `[Default: 1]` : Disabled by default due the server service was lost. + +To set a variable, pass use cmake's -D command-line parameter. For example: + +` build $ cmake .. -DCMAKE_BUILD_TYPE=Debug ` + +Network sync are enabled if libsoup are detected, if having trouble building with libsoup, disable it with: + +` build $ cmake -DHARDINFO_NOSYNC=1` + +SETTING UP +---------- + +Most things in HardInfo are detected automatically. However, some things +depends on manual set up. They are: + +### Sensors + +**lm-sensors**: If your computer is compatible with lm-sensors module, use by example the +`sensors-detect` program included with the lm-sensors package of Debian based distros, and be sure +to have the detected kernel modules loaded. + +**hddtemp**: To obtain the hard disk drive temperature, be sure to run hddtemp +in daemon mode, using the default port. + +### Memory Speed + +The module `eeeprom` mus be loaded to display info about memory hardware instaled. +Load with `modprobe eeprom` and refres the module screen. diff --git a/benchmark.conf b/benchmark.conf index ef2162da..de59c9d9 100644 --- a/benchmark.conf +++ b/benchmark.conf @@ -1,311 +1,315 @@ [param] last_update=1241368430 [FPU FFT] -2x Intel(R) Pentium(R) DualCPUT3200@ 2.00GHz=5.500|2000 MHz|Unknown +Intel(R) Pentium(R) DualCPUT3200@ 2.00GHz=5.500|2x 2000 MHz|Unknown Intel(R) Celeron(R) CPU 2.53GHz=10.122|2527 MHz|Unknown Genuine Intel(R) CPU T1350@ 1.86GHz=83.465|1867 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-60=8.225|2000 MHz|Unknown -2x AMD Turion(tm) X2 Dual-Core Mobile RM-70=8.312|500 MHz|Unknown -2x Intel(R) Core(TM) Duo CPUT2350@ 1.86GHz=5.356|1867 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T5750@ 2.00GHz=4.231|1994 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T9500@ 2.60GHz=3.124|2593 MHz|Unknown -2x AMD Athlon(tm) X2 Dual-Core QL-60=9.080|1900 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T5250@ 1.50GHz=5.507|1000 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-60=8.225|2x 2000 MHz|Unknown +AMD Turion(tm) X2 Dual-Core Mobile RM-70=8.312|2x 500 MHz|Unknown +Intel(R) Core(TM) Duo CPUT2350@ 1.86GHz=5.356|2x 1867 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T5750@ 2.00GHz=4.231|2x 1994 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T9500@ 2.60GHz=3.124|2x 2593 MHz|Unknown +AMD Athlon(tm) X2 Dual-Core QL-60=9.080|2x 1900 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T5250@ 1.50GHz=5.507|2x 1000 MHz|Unknown Mobile AMD Athlon(tm) XP-M Processor 3000+=43.154|799 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=7.997|1000 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=7.997|2x 1000 MHz|Unknown AMD Athlon(tm) XP processor 1800+=25.139|1533 MHz|Unknown -2x Genuine Intel(R) CPU2140@ 1.60GHz=5.442|1595 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ6600@ 2.40GHz=1.631|1603 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU P7350@ 2.00GHz=4.758|2000 MHz|Unknown -2x Genuine Intel(R) CPU T2080@ 1.73GHz=4.985|800 MHz|Unknown +Genuine Intel(R) CPU2140@ 1.60GHz=5.442|2x 1595 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ6600@ 2.40GHz=1.631|4x 1603 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU P7350@ 2.00GHz=4.758|2x 2000 MHz|Unknown +Genuine Intel(R) CPU T2080@ 1.73GHz=4.985|2x 800 MHz|Unknown Intel(R) Celeron(R) CPU 2.50GHz=14.459|2492 MHz|Unknown Intel(R) Pentium(R) M processor 1.86GHz=11.875|1867 MHz|Unknown -2x Intel(R) Core(TM)2 CPU T5200@ 1.60GHz=6.486|1067 MHz|Unknown -2x Intel(R) Core(TM)2 CPU6320@ 1.86GHz=4.908|1600 MHz|Unknown +Intel(R) Core(TM)2 CPU T5200@ 1.60GHz=6.486|2x 1067 MHz|Unknown +Intel(R) Core(TM)2 CPU6320@ 1.86GHz=4.908|2x 1600 MHz|Unknown AMD Athlon(tm) XP=84.350|906 MHz|Unknown AMD Athlon(tm) 64 Processor 3000+=25.187|1800 MHz|Unknown -2x Intel(R) Pentium(R) 4 CPU 2.60GHz=8.536|2600 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=1.485|2003 MHz|Unknown +Intel(R) Pentium(R) 4 CPU 2.60GHz=8.536|2x 2600 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=1.485|4x 2003 MHz|Unknown Intel(R) Pentium(R) M processor 1600MHz=13.500|1600 MHz|Unknown -2x Pentium(R) Dual-Core CPU T4200@ 2.00GHz=4.615|1200 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPU @ 2.40GHz=1.696|2400 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ8300@ 2.50GHz=1.659|2497 MHz|Unknown -2x Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=3.065|2800 MHz|Unknown +Pentium(R) Dual-Core CPU T4200@ 2.00GHz=4.615|2x 1200 MHz|Unknown +Intel(R) Core(TM)2 Quad CPU @ 2.40GHz=1.696|4x 2400 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ8300@ 2.50GHz=1.659|4x 2497 MHz|Unknown +Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=3.065|2x 2800 MHz|Unknown Intel(R) Celeron(R) D CPU 3.20GHz=8.552|3196 MHz|Unknown AMD Sempron(tm) 2600+=20.952|1840 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 4400+=6.805|1000 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 4400+=6.805|2x 1000 MHz|Unknown Intel(R) Celeron(R) CPU 2.66GHz=9.887|2666 MHz|Unknown -2x Intel(R) Core(TM) Duo CPUT2450@ 2.00GHz=4.331|800 MHz|Unknown +Intel(R) Core(TM) Duo CPUT2450@ 2.00GHz=4.331|2x 800 MHz|Unknown Intel(R) Celeron(R) M CPU520@ 1.60GHz=11.346|1600 MHz|Unknown Intel(R) Pentium(R) 4 CPU 3.06GHz=12.724|3058 MHz|Unknown -2x Intel(R) Core(TM)2 CPU4300@ 1.80GHz=5.368|1200 MHz|Unknown -2x Intel(R) Core(TM)2 CPU6400@ 2.13GHz=4.678|2128 MHz|Unknown +Intel(R) Core(TM)2 CPU4300@ 1.80GHz=5.368|2x 1200 MHz|Unknown +Intel(R) Core(TM)2 CPU6400@ 2.13GHz=4.678|2x 2128 MHz|Unknown AMD Turion(tm) 64 Mobile Technology MK-36=19.958|800 MHz|Unknown -2x Intel(R) Core(TM)2 CPU6600@ 2.40GHz=3.546|1596 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=4.160|2001 MHz|Unknown +Intel(R) Core(TM)2 CPU6600@ 2.40GHz=3.546|2x 1596 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=4.160|2x 2001 MHz|Unknown Intel(R) Celeron(R) M processor900MHz=24.212|900 MHz|Unknown AMD Sempron(tm) Processor 3400+=17.114|1000 MHz|Unknown AMD Athlon(tm) XP 2500+=27.327|1792 MHz|Unknown AMD Sempron(tm) Processor 3000+=18.941|1800 MHz|Unknown AMD Athlon(tm) XP 2200+=22.197|1782 MHz|Unknown -2x Intel(R) Pentium(R) 4 CPU 3.06GHz=7.454|3065 MHz|Unknown -2x AMD Processor model unknown=5.242|3006 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-62=7.519|800 MHz|Unknown +Intel(R) Pentium(R) 4 CPU 3.06GHz=7.454|2x 3065 MHz|Unknown +AMD Processor model unknown=5.242|2x 3006 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-62=7.519|2x 800 MHz|Unknown +ARM Cortex-A53 r0p4 (Aarch32)=11.95|4x 1200 MHz|Unknown +ARM ARM1176 r0p7 (Aarch32)=114.57|900 MHz|Unknown [CPU CryptoHash] -4x Intel(R) Atom(TM) CPU330 @ 1.60GHz=105.569|1596 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T5250@ 1.50GHz=102.949|1000 MHz|Unknown +Intel(R) Atom(TM) CPU330 @ 1.60GHz=105.569|4x 1596 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T5250@ 1.50GHz=102.949|2x 1000 MHz|Unknown Intel(R) Celeron(R) M processor900MHz=24.338|900 MHz|Unknown -2x Intel(R) Core(TM)2 CPU E8400@ 3.00GHz=163.391|3000 MHz|Unknown -2x Intel(R) Xeon(R) CPU E5405@ 2.00GHz=117.480|1995 MHz|Unknown -2x Intel(R) Core(TM) Duo CPUT2450@ 2.00GHz=127.241|800 MHz|Unknown +Intel(R) Core(TM)2 CPU E8400@ 3.00GHz=163.391|2x 3000 MHz|Unknown +Intel(R) Xeon(R) CPU E5405@ 2.00GHz=117.480|2x 1995 MHz|Unknown +Intel(R) Core(TM) Duo CPUT2450@ 2.00GHz=127.241|2x 800 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.00GHz=24.650|1994 MHz|Unknown -4x AMD Phenom(tm) 9350e Quad-Core Processor=237.011|2000 MHz|Unknown -2x AMD Turion(tm) X2 Ultra Dual-Core Mobile ZM-82=100.065|600 MHz|Unknown +AMD Phenom(tm) 9350e Quad-Core Processor=237.011|4x 2000 MHz|Unknown +AMD Turion(tm) X2 Ultra Dual-Core Mobile ZM-82=100.065|2x 600 MHz|Unknown AMD Athlon(tm) XP 3000+=66.539|2158 MHz|Unknown Intel(R) Celeron(R) M CPU520@ 1.60GHz=52.308|1600 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=264.055|2669 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=264.055|4x 2669 MHz|Unknown AMD Athlon(tm) XP 1900+=31.633|1593 MHz|Unknown -2x Intel(R) Pentium(R) 4 CPU 3.20GHz=66.611|2400 MHz|Unknown +Intel(R) Pentium(R) 4 CPU 3.20GHz=66.611|2x 2400 MHz|Unknown AMD Sempron(tm) 2600+=53.870|1840 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 3800+=94.123|2200 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-62=119.427|800 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 3800+=94.123|2x 2200 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-62=119.427|2x 800 MHz|Unknown AMD Athlon(tm) XP 2000+=45.755|1667 MHz|Unknown AMD Athlon(tm) 64 Processor 3500+=62.204|1000 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-56=92.191|800 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=97.036|1000 MHz|Unknown -2x Intel(R) Pentium(R) D CPU 3.00GHz=96.755|3000 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-56=92.191|2x 800 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=97.036|2x 1000 MHz|Unknown +Intel(R) Pentium(R) D CPU 3.00GHz=96.755|2x 3000 MHz|Unknown Mobile AMD Sempron(tm) Processor 3600+=54.437|800 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ9650@ 3.00GHz=303.512|2997 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ9650@ 3.00GHz=303.512|4x 2997 MHz|Unknown AMD Sempron(tm) Processor 3600+=43.977|1000 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T9400@ 2.53GHz=148.711|800 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-58=101.693|1900 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU P7350@ 2.00GHz=103.950|2000 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T9400@ 2.53GHz=148.711|2x 800 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-58=101.693|2x 1900 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU P7350@ 2.00GHz=103.950|2x 2000 MHz|Unknown VIA Esther processor 1500MHz=7.752|1499 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU P8600@ 2.40GHz=150.445|800 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T7700@ 2.40GHz=142.537|800 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T5550@ 1.83GHz=122.423|1829 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=121.915|2001 MHz|Unknown -2x Intel(R) Core(TM)2 CPU6700@ 2.66GHz=163.639|2667 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU P8600@ 2.40GHz=150.445|2x 800 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T7700@ 2.40GHz=142.537|2x 800 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T5550@ 1.83GHz=122.423|2x 1829 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=121.915|2x 2001 MHz|Unknown +Intel(R) Core(TM)2 CPU6700@ 2.66GHz=163.639|2x 2667 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.40GHz=30.963|2400 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=296.869|2003 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=296.869|4x 2003 MHz|Unknown AMD Athlon(tm) 64 Processor 3200+=42.300|1000 MHz|Unknown -2x Intel(R) Pentium(R) DualCPUT3200@ 2.00GHz=88.536|2000 MHz|Unknown +Intel(R) Pentium(R) DualCPUT3200@ 2.00GHz=88.536|2x 2000 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.26GHz=29.413|2267 MHz|Unknown AMD Sempron(tm) Processor 3400+=53.845|1000 MHz|Unknown AMD Sempron(tm) Processor 3000+=47.787|1800 MHz|Unknown AMD Athlon(tm) XP 2400+=61.644|1991 MHz|Unknown -2x Intel(R) Atom(TM) CPU Z530 @ 1.60GHz=54.891|1067 MHz|Unknown +Intel(R) Atom(TM) CPU Z530 @ 1.60GHz=54.891|2x 1067 MHz|Unknown Pentium III (Coppermine)=26.992|700 MHz|Unknown -8x Intel(R) Core(TM) i7 CPU 920@ 2.67GHz=390.240|3799 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 6000+=146.744|3051 MHz|Unknown +Intel(R) Core(TM) i7 CPU 920@ 2.67GHz=390.240|8x 3799 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 6000+=146.744|2x 3051 MHz|Unknown AMD Turion(tm) 64 Mobile Technology ML-37=42.208|2000 MHz|Unknown -2x Intel(R) Xeon(R) CPU3040@ 1.86GHz=127.825|1862 MHz|Unknown +Intel(R) Xeon(R) CPU3040@ 1.86GHz=127.825|2x 1862 MHz|Unknown AMD Athlon(tm) XP 2500+=39.659|1792 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T9500@ 2.60GHz=172.640|2593 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T9500@ 2.60GHz=172.640|2x 2593 MHz|Unknown [CPU N-Queens] -2x AMD Athlon(tm) 64 X2 Dual Core Processor 5400+=15.057|1000 MHz|Unknown -2x Genuine Intel(R) CPU T2080@ 1.73GHz=33.309|800 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T5450@ 1.66GHz=14.488|1000 MHz|Unknown -4x Intel(R) Core(TM)2 QuadCPU Q9300@ 2.50GHz=14.100|3000 MHz|Unknown -2x Intel(R) Atom(TM) CPU Z530 @ 1.60GHz=18.703|1067 MHz|Unknown -4x Intel(R) Atom(TM) CPU330 @ 1.60GHz=26.065|1596 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 5400+=15.057|2x 1000 MHz|Unknown +Genuine Intel(R) CPU T2080@ 1.73GHz=33.309|2x 800 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T5450@ 1.66GHz=14.488|2x 1000 MHz|Unknown +Intel(R) Core(TM)2 QuadCPU Q9300@ 2.50GHz=14.100|4x 3000 MHz|Unknown +Intel(R) Atom(TM) CPU Z530 @ 1.60GHz=18.703|2x 1067 MHz|Unknown +Intel(R) Atom(TM) CPU330 @ 1.60GHz=26.065|4x 1596 MHz|Unknown AMD Athlon(tm) XP 1600+=19.852|1398 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=17.009|2669 MHz|Unknown -2x Intel(R) Pentium(R) 4 CPU 2.60GHz=14.827|2600 MHz|Unknown -2x Intel(R) Core(TM)2 CPU6320@ 1.86GHz=16.536|1600 MHz|Unknown -2x Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=7.020|2800 MHz|Unknown -4x Intel(R) Core(TM)2 QuadCPU Q9450@ 2.66GHz=12.973|2000 MHz|Unknown -2x Intel(R) Core(TM)2 CPU E8400@ 3.00GHz=7.841|3000 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=17.009|4x 2669 MHz|Unknown +Intel(R) Pentium(R) 4 CPU 2.60GHz=14.827|2x 2600 MHz|Unknown +Intel(R) Core(TM)2 CPU6320@ 1.86GHz=16.536|2x 1600 MHz|Unknown +Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=7.020|2x 2800 MHz|Unknown +Intel(R) Core(TM)2 QuadCPU Q9450@ 2.66GHz=12.973|4x 2000 MHz|Unknown +Intel(R) Core(TM)2 CPU E8400@ 3.00GHz=7.841|2x 3000 MHz|Unknown Pentium III (Coppermine)=27.983|700 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=19.510|1000 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-50=23.257|800 MHz|Unknown -2x Intel(R) Pentium(R) D CPU 3.40GHz=13.512|2400 MHz|Unknown -2x Pentium III (Coppermine)=35.147|999 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 3600+=22.980|1000 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 5200+=14.954|2705 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual-Core Processor TK-55=20.494|800 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU E6850@ 3.00GHz=7.522|1998 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU P8400@ 2.26GHz=10.388|800 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=18.246|2003 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=19.510|2x 1000 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-50=23.257|2x 800 MHz|Unknown +Intel(R) Pentium(R) D CPU 3.40GHz=13.512|2x 2400 MHz|Unknown +Pentium III (Coppermine)=35.147|2x 999 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 3600+=22.980|2x 1000 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 5200+=14.954|2x 2705 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual-Core Processor TK-55=20.494|2x 800 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU E6850@ 3.00GHz=7.522|2x 1998 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU P8400@ 2.26GHz=10.388|2x 800 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=18.246|4x 2003 MHz|Unknown AMD Athlon(tm) XP 1900+=26.739|1593 MHz|Unknown -2x Intel(R) Core(TM) Duo CPUT2350@ 1.86GHz=22.009|1867 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU E8400@ 3.00GHz=7.663|2997 MHz|Unknown +Intel(R) Core(TM) Duo CPUT2350@ 1.86GHz=22.009|2x 1867 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU E8400@ 3.00GHz=7.663|2x 2997 MHz|Unknown AMD Athlon(tm) XP 2800+=13.555|2087 MHz|Unknown -2x Genuine Intel(R) CPU T2500@ 2.00GHz=28.389|1000 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-58=20.024|1900 MHz|Unknown -2x Intel(R) Pentium(R) 4 CPU 3.40GHz=15.298|2400 MHz|Unknown +Genuine Intel(R) CPU T2500@ 2.00GHz=28.389|2x 1000 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-58=20.024|2x 1900 MHz|Unknown +Intel(R) Pentium(R) 4 CPU 3.40GHz=15.298|2x 2400 MHz|Unknown Intel(R) Celeron(R) M processor900MHz=33.259|900 MHz|Unknown -2x AMD Athlon(tm) X2 Dual-Core QL-60=20.337|1900 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T5850@ 2.16GHz=10.372|2167 MHz|Unknown +AMD Athlon(tm) X2 Dual-Core QL-60=20.337|2x 1900 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T5850@ 2.16GHz=10.372|2x 2167 MHz|Unknown Mobile AMD Athlon(tm) XP-M Processor 3000+=52.785|799 MHz|Unknown -4x AMD Phenom(tm) 9500 Quad-Core Processor=10.061|1100 MHz|Unknown +AMD Phenom(tm) 9500 Quad-Core Processor=10.061|4x 1100 MHz|Unknown Intel(R) Celeron(R) M processor 1.40GHz=94.050|1395 MHz|Unknown Mobile AMD Athlon(tm) XP 2800+=13.362|1459 MHz|Unknown AMD Athlon(tm) 64 Processor 3000+=18.076|1800 MHz|Unknown -2x Genuine Intel(R) CPU L2400@ 1.66GHz=19.551|1000 MHz|Unknown +Genuine Intel(R) CPU L2400@ 1.66GHz=19.551|2x 1000 MHz|Unknown AMD Sempron(tm) Processor 2800+=17.227|1999 MHz|Unknown AMD Sempron(tm) 2600+=14.693|1840 MHz|Unknown Intel(R) Pentium(R) M processor 1600MHz=15.228|1600 MHz|Unknown Genuine Intel(R) CPU 575@ 2.00GHz=15.876|1995 MHz|Unknown -2x Genuine Intel(R) CPU T2300@ 1.66GHz=27.251|1000 MHz|Unknown +Genuine Intel(R) CPU T2300@ 1.66GHz=27.251|2x 1000 MHz|Unknown Intel(R) Pentium(R) M processor 1.70GHz=22.545|600 MHz|Unknown AMD Athlon(tm) XP processor 1800+=17.547|1533 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T5750@ 2.00GHz=11.140|1994 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=11.387|2001 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T5750@ 2.00GHz=11.140|2x 1994 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=11.387|2x 2001 MHz|Unknown Intel(R) Pentium(R) 4 CPU 1500MHz=28.460|1495 MHz|Unknown [FPU Raytracing] -2x Intel(R) Core(TM) Duo CPUT2450@ 2.00GHz=28.359|800 MHz|Unknown +Intel(R) Core(TM) Duo CPUT2450@ 2.00GHz=28.359|2x 800 MHz|Unknown AMD Athlon(tm) XP 2200+=29.739|1782 MHz|Unknown -2x Intel(R) Pentium(R) DualCPUT2370@ 1.73GHz=25.822|1733 MHz|Unknown +Intel(R) Pentium(R) DualCPUT2370@ 1.73GHz=25.822|2x 1733 MHz|Unknown AMD Sempron(tm) Processor 3200+=30.191|1000 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual-Core Processor TK-55=16.469|800 MHz|Unknown -2x Intel(R) Core(TM)2 CPU6600@ 2.40GHz=11.244|1596 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T5270@ 1.40GHz=32.813|800 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual-Core Processor TK-53=18.472|800 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual-Core Processor TK-55=16.469|2x 800 MHz|Unknown +Intel(R) Core(TM)2 CPU6600@ 2.40GHz=11.244|2x 1596 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T5270@ 1.40GHz=32.813|2x 800 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual-Core Processor TK-53=18.472|2x 800 MHz|Unknown Intel(R) Pentium(R) M processor 1.86GHz=28.196|1867 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T5750@ 2.00GHz=16.383|1994 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T5750@ 2.00GHz=16.383|2x 1994 MHz|Unknown AMD Turion(tm) 64 Mobile Technology ML-32=28.432|800 MHz|Unknown Intel(R) Celeron(R) CPU530@ 1.73GHz=17.548|2593 MHz|Unknown -8x Intel(R) Core(TM) i7 CPU 920@ 2.67GHz=4.731|3799 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ9650@ 3.00GHz=18.842|2997 MHz|Unknown +Intel(R) Core(TM) i7 CPU 920@ 2.67GHz=4.731|8x 3799 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ9650@ 3.00GHz=18.842|4x 2997 MHz|Unknown AMD Turion(tm) 64 Mobile Technology MK-36=30.838|800 MHz|Unknown -2x Intel(R) Pentium(R) D CPU 3.40GHz=25.418|2400 MHz|Unknown -2x AMD Athlon(tm) X2 Dual-Core QL-60=18.295|1900 MHz|Unknown +Intel(R) Pentium(R) D CPU 3.40GHz=25.418|2x 2400 MHz|Unknown +AMD Athlon(tm) X2 Dual-Core QL-60=18.295|2x 1900 MHz|Unknown Intel(R) Pentium(R) III CPU - S 1400MHz=33.361|1392 MHz|Unknown -4x AMD Phenom(tm) II X4 20 Processor=13.290|3654 MHz|Unknown -2x Intel(R) Core(TM)2 CPU E8400@ 3.00GHz=15.790|3000 MHz|Unknown +AMD Phenom(tm) II X4 20 Processor=13.290|4x 3654 MHz|Unknown +Intel(R) Core(TM)2 CPU E8400@ 3.00GHz=15.790|2x 3000 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.66GHz=32.384|2676 MHz|Unknown -2x Intel(R) Pentium(R) 4 CPU 2.60GHz=57.371|2600 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU P9500@ 2.53GHz=5.507|2535 MHz|Unknown +Intel(R) Pentium(R) 4 CPU 2.60GHz=57.371|2x 2600 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU P9500@ 2.53GHz=5.507|2x 2535 MHz|Unknown Intel(R) Celeron(R) M processor900MHz=64.668|900 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 4800+=12.799|2512 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 4800+=12.799|2x 2512 MHz|Unknown Intel(R) Pentium(R) M processor 1.73GHz=27.691|798 MHz|Unknown -2x Genuine Intel(R) CPU T2080@ 1.73GHz=31.108|800 MHz|Unknown +Genuine Intel(R) CPU T2080@ 1.73GHz=31.108|2x 800 MHz|Unknown AMD Athlon(tm) 64 Processor 4000+=20.492|1000 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.53GHz=36.544|2525 MHz|Unknown Intel(R) Celeron(R) CPU560@ 2.13GHz=21.147|2128 MHz|Unknown -2x Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=18.268|2800 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T9400@ 2.53GHz=5.586|800 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 6400+=10.933|1000 MHz|Unknown +Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=18.268|2x 2800 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T9400@ 2.53GHz=5.586|2x 800 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 6400+=10.933|2x 1000 MHz|Unknown Intel(R) Celeron(R) M CPU420@ 1.60GHz=36.998|1599 MHz|Unknown -2x Intel(R) Xeon(R) CPU E5405@ 2.00GHz=17.808|1995 MHz|Unknown -2x Genuine Intel(R) CPU2140@ 1.60GHz=22.055|1595 MHz|Unknown +Intel(R) Xeon(R) CPU E5405@ 2.00GHz=17.808|2x 1995 MHz|Unknown +Genuine Intel(R) CPU2140@ 1.60GHz=22.055|2x 1595 MHz|Unknown Intel(R) Pentium(R) M processor 1700MHz=27.284|600 MHz|Unknown Pentium II (Deschutes)=124.072|401 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T8100@ 2.10GHz=23.759|2094 MHz|Unknown -2x Intel(R) Core(TM)2 CPU4300@ 1.80GHz=18.171|1200 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T8100@ 2.10GHz=23.759|2x 2094 MHz|Unknown +Intel(R) Core(TM)2 CPU4300@ 1.80GHz=18.171|2x 1200 MHz|Unknown AMD Athlon(tm) XP 3000+=23.066|2158 MHz|Unknown -3x AMD Phenom(tm) 8450 Triple-Core Processor=18.564|1100 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU P8400@ 2.26GHz=12.067|800 MHz|Unknown +AMD Phenom(tm) 8450 Triple-Core Processor=18.564|3x 1100 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU P8400@ 2.26GHz=12.067|2x 800 MHz|Unknown AMD Athlon(tm) XP 1800+=31.725|1540 MHz|Unknown Intel(R) Celeron(R) CPU550@ 2.00GHz=23.904|1995 MHz|Unknown -2x Intel(R) Pentium(R) 4 CPU 3.20GHz=31.439|2400 MHz|Unknown +Intel(R) Pentium(R) 4 CPU 3.20GHz=31.439|2x 2400 MHz|Unknown Intel(R) Pentium(R) M processor 1.80GHz=27.133|600 MHz|Unknown Intel(R) Celeron(R) CPU 2.80GHz=81.047|2793 MHz|Unknown Genuine Intel(R) CPU T1350@ 1.86GHz=222.178|1867 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.80GHz=28.658|2791 MHz|Unknown [CPU Blowfish] -2x Intel(R) Pentium(R) D CPU 3.00GHz=10.838|3000 MHz|Unknown +Intel(R) Pentium(R) D CPU 3.00GHz=10.838|2x 3000 MHz|Unknown Intel(R) Celeron(R) CPU540@ 1.86GHz=25.494|1861 MHz|Unknown -2x AMD Turion(tm) 64 X2 TL-58=12.576|800 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 3800+=10.707|2200 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 6400+=6.421|1000 MHz|Unknown -2x Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=6.809|2800 MHz|Unknown +AMD Turion(tm) 64 X2 TL-58=12.576|2x 800 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 3800+=10.707|2x 2200 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 6400+=6.421|2x 1000 MHz|Unknown +Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=6.809|2x 2800 MHz|Unknown Intel(R) Pentium(R) M processor 1.70GHz=28.279|600 MHz|Unknown -3x AMD Phenom(tm) 8650 Triple-Core Processor=5.965|2300 MHz|Unknown +AMD Phenom(tm) 8650 Triple-Core Processor=5.965|3x 2300 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.40GHz=24.567|2400 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 4400+=7.918|1000 MHz|Unknown -4x AMD Phenom(tm) II X4 940 Processor=3.488|800 MHz|Unknown -2x Pentium III (Coppermine)=17.808|999 MHz|Unknown -2x Intel(R) Pentium(R) 4 CPU 3.20GHz=12.058|2400 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 4400+=7.918|2x 1000 MHz|Unknown +AMD Phenom(tm) II X4 940 Processor=3.488|4x 800 MHz|Unknown +Pentium III (Coppermine)=17.808|2x 999 MHz|Unknown +Intel(R) Pentium(R) 4 CPU 3.20GHz=12.058|2x 2400 MHz|Unknown Intel(R) Pentium(R) 4 CPU 1500MHz=46.556|1495 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-58=10.104|1900 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-58=10.104|2x 1900 MHz|Unknown Intel(R) Celeron(R) M processor 1.40GHz=80.940|1395 MHz|Unknown Mobile AMD Athlon(tm) XP 2800+=18.040|1459 MHz|Unknown Intel(R) Celeron(R) CPU420@ 1.60GHz=21.238|1600 MHz|Unknown -4x AMD Phenom(tm) 9750 Quad-Core Processor=4.291|1200 MHz|Unknown -2x Intel(R) Atom(TM) CPU N280 @ 1.66GHz=16.764|1000 MHz|Unknown -2x AMD Athlon(tm) X2 Dual-Core QL-60=10.585|1900 MHz|Unknown -2x Intel(R) Pentium(R) DualCPUT2370@ 1.73GHz=9.581|1733 MHz|Unknown +AMD Phenom(tm) 9750 Quad-Core Processor=4.291|4x 1200 MHz|Unknown +Intel(R) Atom(TM) CPU N280 @ 1.66GHz=16.764|2x 1000 MHz|Unknown +AMD Athlon(tm) X2 Dual-Core QL-60=10.585|2x 1900 MHz|Unknown +Intel(R) Pentium(R) DualCPUT2370@ 1.73GHz=9.581|2x 1733 MHz|Unknown AMD Athlon(tm) XP 1900+=31.620|1593 MHz|Unknown AMD Athlon(tm) XP 1800+=23.128|1540 MHz|Unknown Intel(R) Pentium(R) M processor 1.73GHz=19.657|798 MHz|Unknown AMD Sempron(tm) Processor 3200+=25.468|1000 MHz|Unknown VIA Esther processor 1500MHz=41.594|1499 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=3.174|2669 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 5000+=7.489|1000 MHz|Unknown -2x Intel(R) Xeon(R) CPU3040@ 1.86GHz=9.113|1862 MHz|Unknown -2x Intel(R) Pentium(R) DualCPUT2310@ 1.46GHz=11.596|1463 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU P8400@ 2.26GHz=8.293|800 MHz|Unknown -2x AMD Turion(tm) X2 Dual-Core Mobile RM-74=8.970|600 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=3.174|4x 2669 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 5000+=7.489|2x 1000 MHz|Unknown +Intel(R) Xeon(R) CPU3040@ 1.86GHz=9.113|2x 1862 MHz|Unknown +Intel(R) Pentium(R) DualCPUT2310@ 1.46GHz=11.596|2x 1463 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU P8400@ 2.26GHz=8.293|2x 800 MHz|Unknown +AMD Turion(tm) X2 Dual-Core Mobile RM-74=8.970|2x 600 MHz|Unknown Genuine Intel(R) CPU 575@ 2.00GHz=20.357|1995 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-62=8.836|800 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-56=10.790|800 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-62=8.836|2x 800 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-56=10.790|2x 800 MHz|Unknown Intel(R) Celeron(R) CPU 2.80GHz=40.872|2793 MHz|Unknown -2x Intel(R) Pentium(R) 4 CPU 2.80GHz=11.699|2800 MHz|Unknown -2x Genuine Intel(R) CPU2140@ 1.60GHz=10.672|1595 MHz|Unknown -2x AMD Athlon(tm) 7750 Dual-Core Processor=7.449|1350 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU E8400@ 3.00GHz=5.538|2997 MHz|Unknown -2x Intel(R) Core(TM)2 CPU T7400@ 2.16GHz=9.372|2161 MHz|Unknown +Intel(R) Pentium(R) 4 CPU 2.80GHz=11.699|2x 2800 MHz|Unknown +Genuine Intel(R) CPU2140@ 1.60GHz=10.672|2x 1595 MHz|Unknown +AMD Athlon(tm) 7750 Dual-Core Processor=7.449|2x 1350 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU E8400@ 3.00GHz=5.538|2x 2997 MHz|Unknown +Intel(R) Core(TM)2 CPU T7400@ 2.16GHz=9.372|2x 2161 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.53GHz=48.077|2525 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ9550@ 2.83GHz=3.244|2830 MHz|Unknown -2x Intel(R) Core(TM)2 CPU6700@ 2.66GHz=6.902|2667 MHz|Unknown -2x AMD Turion(tm) X2 Dual-Core Mobile RM-72=11.859|500 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T9400@ 2.53GHz=6.757|800 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 4800+=8.735|2512 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ9550@ 2.83GHz=3.244|4x 2830 MHz|Unknown +Intel(R) Core(TM)2 CPU6700@ 2.66GHz=6.902|2x 2667 MHz|Unknown +AMD Turion(tm) X2 Dual-Core Mobile RM-72=11.859|2x 500 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T9400@ 2.53GHz=6.757|2x 800 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 4800+=8.735|2x 2512 MHz|Unknown Intel(R) Celeron(R) M CPU520@ 1.60GHz=22.072|1600 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ8300@ 2.50GHz=3.346|2497 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ8300@ 2.50GHz=3.346|4x 2497 MHz|Unknown [CPU SHA1] [CPU MD5] [CPU Fibonacci] -4x AMD Phenom(tm) 9500 Quad-Core Processor=3.061|1100 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=4.572|2001 MHz|Unknown -2x Intel(R) Pentium(R) 4 CPU 2.80GHz=4.603|2800 MHz|Unknown +AMD Phenom(tm) 9500 Quad-Core Processor=3.061|4x 1100 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=4.572|2x 2001 MHz|Unknown +Intel(R) Pentium(R) 4 CPU 2.80GHz=4.603|2x 2800 MHz|Unknown AMD Athlon(tm) Processor=7.342|1210 MHz|Unknown -2x Intel(R) Core(TM)2 CPU T5200@ 1.60GHz=7.274|1067 MHz|Unknown -4x Intel(R) Atom(TM) CPU330 @ 1.60GHz=8.789|1596 MHz|Unknown -4x AMD Phenom(tm) 9150e Quad-Core Processor=3.281|900 MHz|Unknown +Intel(R) Core(TM)2 CPU T5200@ 1.60GHz=7.274|2x 1067 MHz|Unknown +Intel(R) Atom(TM) CPU330 @ 1.60GHz=8.789|4x 1596 MHz|Unknown +AMD Phenom(tm) 9150e Quad-Core Processor=3.281|4x 900 MHz|Unknown AMD Turion(tm) 64 Mobile Technology MK-36=6.202|800 MHz|Unknown AMD Athlon(tm) 64 Processor 3200+=5.764|1000 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=2.759|2003 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T7500@ 2.20GHz=4.090|800 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=2.759|4x 2003 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T7500@ 2.20GHz=4.090|2x 800 MHz|Unknown AMD Athlon(tm) XP=33.451|906 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=3.537|2669 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=3.537|4x 2669 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.00GHz=8.698|1994 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU E6550@ 2.33GHz=3.657|2700 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T7100@ 1.80GHz=4.788|1801 MHz|Unknown -2x Dual Core AMD Opteron(tm) Processor 165=4.257|1979 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU E6550@ 2.33GHz=3.657|2x 2700 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T7100@ 1.80GHz=4.788|2x 1801 MHz|Unknown +Dual Core AMD Opteron(tm) Processor 165=4.257|2x 1979 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.40GHz=6.348|2400 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU P8600@ 2.40GHz=3.374|800 MHz|Unknown -2x AMD Turion(tm) X2 Dual-Core Mobile RM-70=4.974|500 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU P8600@ 2.40GHz=3.374|2x 800 MHz|Unknown +AMD Turion(tm) X2 Dual-Core Mobile RM-70=4.974|2x 500 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.53GHz=10.356|2525 MHz|Unknown Unknown CPU Type=5.728|1660 MHz|Unknown -2x Pentium III (Coppermine)=10.217|999 MHz|Unknown -2x Intel(R) Core(TM)2 CPU T5600@ 1.83GHz=5.239|1000 MHz|Unknown +Pentium III (Coppermine)=10.217|2x 999 MHz|Unknown +Intel(R) Core(TM)2 CPU T5600@ 1.83GHz=5.239|2x 1000 MHz|Unknown Intel(R) Celeron(R) CPU 3.06GHz=3.961|3059 MHz|Unknown -4x AMD Phenom(tm) 9850 Quad-Core Processor=2.594|1300 MHz|Unknown -2x Intel(R) Pentium(R) 4 CPU 3.00GHz=4.977|3458 MHz|Unknown +AMD Phenom(tm) 9850 Quad-Core Processor=2.594|4x 1300 MHz|Unknown +Intel(R) Pentium(R) 4 CPU 3.00GHz=4.977|2x 3458 MHz|Unknown AMD Sempron(tm) Processor LE-1200=6.085|2109 MHz|Unknown Intel(R) Pentium(R) 4 CPU 2.80GHz=5.654|2791 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=4.124|1000 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=4.124|2x 1000 MHz|Unknown AMD Athlon(tm) XP 1600+=6.387|1398 MHz|Unknown -2x Genuine Intel(R) CPU T2050@ 1.60GHz=6.104|800 MHz|Unknown +Genuine Intel(R) CPU T2050@ 1.60GHz=6.104|2x 800 MHz|Unknown Intel(R) Celeron(R) CPU560@ 2.13GHz=4.776|2128 MHz|Unknown -3x AMD Phenom(tm) 8650 Triple-Core Processor=3.093|2300 MHz|Unknown -8x Intel(R) Core(TM) i7 CPU 920@ 2.67GHz=2.787|3799 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 5000+=3.110|1000 MHz|Unknown +AMD Phenom(tm) 8650 Triple-Core Processor=3.093|3x 2300 MHz|Unknown +Intel(R) Core(TM) i7 CPU 920@ 2.67GHz=2.787|8x 3799 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 5000+=3.110|2x 1000 MHz|Unknown AMD Athlon(tm) XP 2500+=7.183|1792 MHz|Unknown -2x Intel(R) Xeon(R) CPU3040@ 1.86GHz=4.808|1862 MHz|Unknown -2x AMD Athlon(tm) X2 Dual-Core QL-60=4.354|1900 MHz|Unknown -2x Intel(R) Core(TM)2 CPU T7400@ 2.16GHz=4.984|2161 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-60=4.189|2000 MHz|Unknown -2x AMD Turion(tm) 64 X2 Mobile Technology TL-52=5.447|1600 MHz|Unknown -2x AMD Athlon(tm) 64 X2 Dual Core Processor 6000+=2.747|3051 MHz|Unknown -2x Intel(R) Atom(TM) CPU N280 @ 1.66GHz=8.973|1000 MHz|Unknown -4x Intel(R) Core(TM)2 Quad CPUQ9550@ 2.83GHz=2.724|2830 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU T7300@ 2.00GHz=4.773|2001 MHz|Unknown +Intel(R) Xeon(R) CPU3040@ 1.86GHz=4.808|2x 1862 MHz|Unknown +AMD Athlon(tm) X2 Dual-Core QL-60=4.354|2x 1900 MHz|Unknown +Intel(R) Core(TM)2 CPU T7400@ 2.16GHz=4.984|2x 2161 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-60=4.189|2x 2000 MHz|Unknown +AMD Turion(tm) 64 X2 Mobile Technology TL-52=5.447|2x 1600 MHz|Unknown +AMD Athlon(tm) 64 X2 Dual Core Processor 6000+=2.747|2x 3051 MHz|Unknown +Intel(R) Atom(TM) CPU N280 @ 1.66GHz=8.973|2x 1000 MHz|Unknown +Intel(R) Core(TM)2 Quad CPUQ9550@ 2.83GHz=2.724|4x 2830 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU T7300@ 2.00GHz=4.773|2x 2001 MHz|Unknown AMD Sempron(tm) Processor 3600+=5.696|1000 MHz|Unknown AMD Athlon(tm)=4.475|2305 MHz|Unknown -2x AMD Athlon(tm) X2 Dual Core Processor BE-2300=4.373|1899 MHz|Unknown -2x Intel(R) Core(TM)2 Duo CPU E6750@ 2.66GHz=4.096|2671 MHz|Unknown -[CPU ZLib] +AMD Athlon(tm) X2 Dual Core Processor BE-2300=4.373|2x 1899 MHz|Unknown +Intel(R) Core(TM)2 Duo CPU E6750@ 2.66GHz=4.096|2x 2671 MHz|Unknown +[CPU Zlib] +ARM Cortex-A53 r0p4 (Aarch32)=0.18|4x 1200 MHz|Unknown +ARM ARM1176 r0p7 (Aarch32)=0.01|900 MHz|Unknown diff --git a/cmake/GNUInstallDirs.cmake b/cmake/GNUInstallDirs.cmake index c3bb203a..8f555154 100644 --- a/cmake/GNUInstallDirs.cmake +++ b/cmake/GNUInstallDirs.cmake @@ -32,15 +32,34 @@ # Copyright 2011 Nikita Krupen'ko <krnekit@gmail.com> # Copyright 2011 Kitware, Inc. # -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Kitware, Inc. nor the names of Contributors +# may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. #============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) # Installation directories # diff --git a/cmake/Translations.cmake b/cmake/Translations.cmake index 476fb374..dd06cee4 100644 --- a/cmake/Translations.cmake +++ b/cmake/Translations.cmake @@ -20,7 +20,6 @@ macro(add_translations_catalog NLS_PACKAGE) add_custom_target (pot COMMENT “Building translation catalog.”) find_program (XGETTEXT_EXECUTABLE xgettext) - set(C_SOURCE "") foreach(FILES_INPUT ${ARGN}) @@ -36,6 +35,6 @@ macro(add_translations_catalog NLS_PACKAGE) add_custom_command (TARGET pot COMMAND ${XGETTEXT_EXECUTABLE} -d ${NLS_PACKAGE} -o ${CMAKE_CURRENT_SOURCE_DIR}/${NLS_PACKAGE}.pot - ${VALA_SOURCE} ${C_SOURCE} --keyword="_" --keyword="N_" --from-code=UTF-8 + ${VALA_SOURCE} ${C_SOURCE} -k_ -kN_ -kC_:1c,2 -kNC_:1c,2 -c/ --from-code=UTF-8 ) endmacro() diff --git a/config.h.cmake b/config.h.cmake index 1621a890..496f7535 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -6,7 +6,7 @@ #define ARCH "ARCH_@HARDINFO_ARCH@" #define OS "@HARDINFO_OS@" #define PLATFORM OS "-" ARCH -#define KERNEL "@CMAKE_SYSTEM_VERSION@" +#define KERNEL "" #define HOSTNAME "" #define ARCH_@HARDINFO_ARCH@ diff --git a/hardinfo.1 b/hardinfo.1 new file mode 100644 index 00000000..2425457f --- /dev/null +++ b/hardinfo.1 @@ -0,0 +1,69 @@ +.\" Manpage for hardinfo. +.\" https://github.com/lpereira/hardinfo/. +.TH HARDINFO "1" "July 2017" "0.6" "User Commands" +.SH NAME +\fBHardInfo\fR \- System profiler and benchmark for Linux systems. +.SH USAGE +\fBhardinfo\fR [OPTION...] +.SH DESCRIPTION +Is a system profiler and benchmark for Linux systems, that gathers information about the +hardware and operating system, performs benchmarks, and generates reports. +The information gathered is presented on an simple and intuitive GUI. + +Information is grouped in \fIfour main groups\fR: \fBComputer\fR, \fBDevices\fR, \fBNetwork\fR, and \fBBenchmarks\fR. + +The \fBComputer group\fR contains mostly information about basic software. This includes but +is not limited to information about the operating system (kernel version, C library, +distribution, etc.), kernel modules, locale information, filesystem usage, users/groups, and +development tools. + +The \fBDevices group\fR contains information about the hardware, as detected by the operating +system. \fBHardinfo\fR is incapable of detecting hardware by itself, it merely lists what the +operating system was able to find. This includes, but does not limit to, information about the +processor (including cache layout, known bugs, and feature flags with their explanation), +devices (such as USB, PCI, and Input devices), among other things. + +The \fBNetwork group\fR lists information about network interfaces, routing table, DNS servers, +and other networking-related topics. + +The \fBBenchmarks group\fR allow performing simple benchmarks to test CPU and FPU capabilities, +as well as some of the graphical user interface capabilities as well. In previous versions, it +was possible to send the benchmark results to a central server, so it was possible to compare +the benchmarks with other \fBHardinfo\fR users; this service has been deactivated in the mean time. + +\fIReports\fR can be generated either by invoking \fBHardinfo\fR with special command-line parameters +(see below), or by clicking the "Generate Report" button in the GUI. Reports can be customized +in the GUI and saved in either HTML or plain text formats. + +.SH OPTIONS +.TP +\fB\-h\fR, \fB\-\-help\fR +Show help options +.TP +\fB\-r\fR, \fB\-\-generate\-report\fR +creates a report and prints to standard output +.TP +\fB\-f\fR, \fB\-\-report\-format\fR +chooses a report format (text, html) +.TP +\fB\-b\fR, \fB\-\-run\-benchmark\fR +run benchmark; requires benchmark.so to be loaded +.TP +\fB\-l\fR, \fB\-\-list\-modules\fR +lists modules +.TP +\fB\-m\fR, \fB\-\-load\-module\fR +specify module to load +.TP +\fB\-a\fR, \fB\-\-autoload\-deps\fR +automatically load module dependencies +.TP +\fB\-v\fR, \fB\-\-version\fR +shows program version and quit +.SH AUTHORS/CONTRIBUTORS +For current maintainers committing, see AUTHORS.md file and more info are at \fIhttps://github.com/lpereira/hardinfo/graphs/contributors\fR . +More contributions are in each files source headers. +.SH COPYRIGHT +\fBHardInfo\fR its Copyright \(co 2003, 2009\-2017 Leandro A. F. Pereira \fI<leandro@hardinfo.org>\fR. +This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +This manpage was created by PICCORO Lenz McKAY \fI<mckaygerhard@gmail.com>\fR for the hardinfo project. diff --git a/hardinfo.desktop.cmake b/hardinfo.desktop.cmake index 4a94f8c5..53dbee55 100644 --- a/hardinfo.desktop.cmake +++ b/hardinfo.desktop.cmake @@ -12,3 +12,4 @@ Terminal=false Type=Application StartupNotify=true Categories=System; +Keywords=linux;kernel;system;hardware;cpu;processor;capabilities;frequency;memory;ram;board;resources;sensors;devices;usb;pci;display;network;benchmark;test; diff --git a/hardinfo/hardinfo.c b/hardinfo/hardinfo.c index 3d7a9c6f..4401a551 100644 --- a/hardinfo/hardinfo.c +++ b/hardinfo/hardinfo.c @@ -33,7 +33,8 @@ int main(int argc, char **argv) { GSList *modules; - bindtextdomain("hardinfo", "/usr/share/locale"); + setlocale(LC_ALL, ""); + bindtextdomain("hardinfo", LOCALEDIR); textdomain("hardinfo"); DEBUG("HardInfo version " VERSION ". Debug version."); @@ -43,19 +44,19 @@ int main(int argc, char **argv) /* show version information and quit */ if (params.show_version) { - g_print("HardInfo version " VERSION "\n"); - g_print - (_("Copyright (C) 2003-2009 Leandro A. F. Pereira. See COPYING for details.\n\n")); + g_print("HardInfo version " VERSION "\n"); + g_print + (_(/*/ %d will be latest year of copyright*/ "Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n\n"), HARDINFO_COPYRIGHT_LATEST_YEAR ); g_print(_("Compile-time options:\n" " Release version: %s (%s)\n" " BinReloc enabled: %s\n" " Data prefix: %s\n" " Library prefix: %s\n" - " Compiled on: %s %s (%s)\n"), + " Compiled for: %s\n"), RELEASE ? _("Yes") : "No (" VERSION ")", ARCH, ENABLE_BINRELOC ? _("Yes") : _("No"), - PREFIX, LIBPREFIX, PLATFORM, KERNEL, HOSTNAME); + PREFIX, LIBPREFIX, PLATFORM); DEBUG(" Debugging is enabled."); @@ -73,7 +74,7 @@ int main(int argc, char **argv) /* list all module names */ if (params.list_modules) { g_print(_("Modules:\n" - "%-20s%-15s%-12s\n"), _("File Name"), _("Name"), _("Version")); + "%-20s %-15s %-12s\n"), _("File Name"), _("Name"), _("Version")); for (modules = modules_load_all(); modules; modules = modules->next) { @@ -81,7 +82,7 @@ int main(int argc, char **argv) ModuleAbout *ma = module_get_about(module); gchar *name = g_path_get_basename(g_module_name(module->dll)); - g_print("%-20s%-15s%-12s\n", name, module->name, ma->version); + g_print("%-20s %-15s %-12s\n", name, module->name, ma->version); g_free(name); } @@ -111,13 +112,13 @@ int main(int argc, char **argv) /* initialize vendor database */ vendor_init(); - + /* initialize moreinfo */ moreinfo_init(); if (params.run_benchmark) { gchar *result; - + result = module_call_method_param("benchmark::runBenchmark", params.run_benchmark); if (!result) { g_error(_("Unknown benchmark ``%s'' or libbenchmark.so not loaded"), params.run_benchmark); diff --git a/hardinfo/info.c b/hardinfo/info.c new file mode 100644 index 00000000..ef64a420 --- /dev/null +++ b/hardinfo/info.c @@ -0,0 +1,248 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2017 Leandro A. F. Pereira <leandro@hardinfo.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" + +static const gchar *info_column_titles[] = { + "TextValue", "Value", "Progress", "Extra1", "Extra2" +}; + +struct Info *info_new(void) +{ + struct Info *info = g_new0(struct Info, 1); + + info->groups = g_array_new(FALSE, FALSE, sizeof(struct InfoGroup)); + info->view_type = SHELL_VIEW_NORMAL; + info->column_headers_visible = FALSE; + info->zebra_visible = FALSE; + info->normalize_percentage = TRUE; + + return info; +} + +void info_add_group(struct Info *info, const gchar *group_name, ...) +{ + struct InfoGroup group = { + .name = group_name, + .fields = g_array_new(FALSE, FALSE, sizeof(struct InfoField)) + }; + va_list ap; + + va_start(ap, group_name); + while (1) { + struct InfoField field = va_arg(ap, struct InfoField ); + + if (!field.name) + break; + g_array_append_val(group.fields, field); + } + va_end(ap); + + g_array_append_val(info->groups, group); +} + +struct InfoField info_field(const gchar *name, gchar *value) +{ + return (struct InfoField) { + .name = name, + .value = value, + }; +} + +struct InfoField info_field_update(const gchar *name, int update_interval) +{ + return (struct InfoField) { + .name = name, + .value = "...", + .update_interval = update_interval, + }; +} + +struct InfoField info_field_printf(const gchar *name, const gchar *format, ...) +{ + gchar *value; + va_list ap; + + va_start(ap, format); + value = g_strdup_vprintf(format, ap); + va_end(ap); + + return (struct InfoField) { + .name = name, + .value = value, + .free_value_on_flatten = TRUE, + }; +} + +struct InfoField info_field_last(void) +{ + return (struct InfoField) {}; +} + +void info_add_computed_group(struct Info *info, const gchar *name, const gchar *value) +{ + /* This is a scaffolding method: HardInfo should move away from pre-computing + * the strings in favor of storing InfoGroups instead; while modules are not + * fully converted, use this instead. */ + struct InfoGroup group = { + .name = name, + .computed = value, + }; + + g_array_append_val(info->groups, group); +} + +void info_set_column_title(struct Info *info, const gchar *column, const gchar *title) +{ + int i; + + for (i = 0; i < G_N_ELEMENTS(info_column_titles); i++) { + if (g_str_equal(info_column_titles[i], column)) { + info->column_titles[i] = title; + return; + } + } +} + +void info_set_column_headers_visible(struct Info *info, gboolean setting) +{ + info->column_headers_visible = setting; +} + +void info_set_zebra_visible(struct Info *info, gboolean setting) +{ + info->zebra_visible = setting; +} + +void info_set_normalize_percentage(struct Info *info, gboolean setting) +{ + info->normalize_percentage = setting; +} + +void info_set_view_type(struct Info *info, ShellViewType setting) +{ + info->view_type = setting; +} + +void info_set_reload_interval(struct Info *info, int setting) +{ + info->reload_interval = setting; +} + +static void flatten_group(GString *output, const struct InfoGroup *group) +{ + guint i; + + g_string_append_printf(output, "[%s]\n", group->name); + + if (group->fields) { + for (i = 0; i < group->fields->len; i++) { + struct InfoField field; + + field = g_array_index(group->fields, struct InfoField, i); + + g_string_append_printf(output, "%s=%s\n", field.name, field.value); + + if (field.free_value_on_flatten) + g_free(field.value); + } + } else if (group->computed) { + g_string_append_printf(output, "%s\n", group->computed); + } +} + +static void flatten_shell_param(GString *output, const struct InfoGroup *group) +{ + guint i; + + if (!group->fields) + return; + + for (i = 0; i < group->fields->len; i++) { + struct InfoField field; + + field = g_array_index(group->fields, struct InfoField, i); + + if (field.update_interval) { + g_string_append_printf(output, "UpdateInterval$%s=%d\n", + field.name, field.update_interval); + } + } +} + +static void flatten_shell_param_global(GString *output, const struct Info *info) +{ + int i; + + g_string_append_printf(output, "ViewType=%d\n", info->view_type); + g_string_append_printf(output, "ShowColumnHeaders=%s\n", + info->column_headers_visible ? "true" : "false"); + + if (info->zebra_visible) + g_string_append(output, "Zebra=1\n"); + + if (info->reload_interval) + g_string_append_printf(output, "ReloadInterval=%d\n", info->reload_interval); + + if (!info->normalize_percentage) + g_string_append(output, "NormalizePercentage=false\n"); + + for (i = 0; i < G_N_ELEMENTS(info_column_titles); i++) { + if (!info->column_titles[i]) + continue; + + g_string_append_printf(output, "ColumnTitle$%s=%s\n", + info_column_titles[i], info->column_titles[i]); + } +} + +gchar *info_flatten(struct Info *info) +{ + /* This is a scaffolding method: eventually the HardInfo shell should + * understand a struct Info instead of parsing these strings, which are + * brittle and unnecessarily complicates things. Being a temporary + * method, no attention is paid to improve the memory allocation + * strategy. */ + GString *values; + GString *shell_param; + guint i; + + values = g_string_new(NULL); + shell_param = g_string_new(NULL); + + if (info->groups) { + for (i = 0; i < info->groups->len; i++) { + struct InfoGroup group = + g_array_index(info->groups, struct InfoGroup, i); + + flatten_group(values, &group); + flatten_shell_param(shell_param, &group); + + if (group.fields) + g_array_free(group.fields, TRUE); + } + + g_array_free(info->groups, TRUE); + } + + flatten_shell_param_global(shell_param, info); + g_string_append_printf(values, "[$ShellParam$]\n%s", shell_param->str); + + g_string_free(shell_param, TRUE); + return g_string_free(values, FALSE); +} diff --git a/hardinfo/util.c b/hardinfo/util.c index dd5af1a4..6ddf56ad 100644 --- a/hardinfo/util.c +++ b/hardinfo/util.c @@ -91,40 +91,49 @@ gchar *find_program(gchar *program_name) gchar *seconds_to_string(unsigned int seconds) { unsigned int hours, minutes, days; + const gchar *days_fmt, *hours_fmt, *minutes_fmt, *seconds_fmt; + gchar *full_fmt, *ret = g_strdup(""); minutes = seconds / 60; + seconds %= 60; hours = minutes / 60; minutes %= 60; days = hours / 24; hours %= 24; - gchar *wminutes; - gchar *whours; - gchar *wdays; - - wdays = ngettext("%d day, ", "%d days, ", days); - whours = ngettext("%d hour, ", "%d hours, ", hours); - wminutes = ngettext("%d minute", "%d minutes", minutes); - if (days < 1) { - if (hours < 1) - return g_strdup_printf(ngettext("%d minute", "%d minutes", minutes), minutes); - return g_strdup_printf(whours, wminutes); + days_fmt = ngettext("%d day", "%d days", days); + hours_fmt = ngettext("%d hour", "%d hours", hours); + minutes_fmt = ngettext("%d minute", "%d minutes", minutes); + seconds_fmt = ngettext("%d second", "%d seconds", seconds); + + if (days) { + full_fmt = g_strdup_printf("%s %s %s %s", days_fmt, hours_fmt, minutes_fmt, seconds_fmt); + ret = g_strdup_printf(full_fmt, days, hours, minutes, seconds); + } else if (hours) { + full_fmt = g_strdup_printf("%s %s %s", hours_fmt, minutes_fmt, seconds_fmt); + ret = g_strdup_printf(full_fmt, hours, minutes, seconds); + } else if (minutes) { + full_fmt = g_strdup_printf("%s %s", minutes_fmt, seconds_fmt); + ret = g_strdup_printf(full_fmt, minutes, seconds); + } else { + ret = g_strdup_printf(seconds_fmt, seconds); } - return g_strdup_printf(wdays, whours, wminutes); + g_free(full_fmt); + return ret; } gchar *size_human_readable(gfloat size) { if (size < KiB) - return g_strdup_printf(_("%.1f B"), size); + return g_strdup_printf(_("%.1f B"), size); if (size < MiB) - return g_strdup_printf(_("%.1f KiB"), size / KiB); + return g_strdup_printf(_("%.1f KiB"), size / KiB); if (size < GiB) - return g_strdup_printf(_("%.1f MiB"), size / MiB); + return g_strdup_printf(_("%.1f MiB"), size / MiB); if (size < TiB) - return g_strdup_printf(_("%.1f GiB"), size / GiB); + return g_strdup_printf(_("%.1f GiB"), size / GiB); if (size < PiB) - return g_strdup_printf(_("%.1f TiB"), size / TiB); + return g_strdup_printf(_("%.1f TiB"), size / TiB); return g_strdup_printf(_("%.1f PiB"), size / PiB); } @@ -160,15 +169,24 @@ void remove_linefeed(gchar * str) void widget_set_cursor(GtkWidget * widget, GdkCursorType cursor_type) { GdkCursor *cursor; - - if ((cursor = gdk_cursor_new(cursor_type))) { - gdk_window_set_cursor(GDK_WINDOW(widget->window), cursor); - gdk_display_flush(gtk_widget_get_display(widget)); + GdkDisplay *display; + GdkWindow *gdk_window; + + display = gtk_widget_get_display(widget); + cursor = gdk_cursor_new_for_display(display, cursor_type); + gdk_window = gtk_widget_get_window(widget); + if (cursor) { + gdk_window_set_cursor(gdk_window, cursor); + gdk_display_flush(display); +#if GTK_CHECK_VERSION(3, 0, 0) + g_object_unref(cursor); +#else gdk_cursor_unref(cursor); +#endif } while (gtk_events_pending()) - gtk_main_iteration(); + gtk_main_iteration(); } static gboolean __nonblock_cb(gpointer data) @@ -721,6 +739,8 @@ static ShellModule *module_load(gchar * filename) entries = get_module_entries(); while (entries[i].name) { + if (*entries[i].name == '#') { i++; continue; } /* skip */ + ShellModuleEntry *entry = g_new0(ShellModuleEntry, 1); if (params.gui_running) { @@ -966,105 +986,6 @@ gint tree_view_get_visible_height(GtkTreeView * tv) return nrows * rect.height; } -void tree_view_save_image(gchar * filename) -{ - /* this is ridiculously complicated :/ why in the hell gtk+ makes this kind of - thing so difficult? */ - - /* FIXME: this does not work if the window (or part of it) isn't visible. does - anyone know how to fix this? :/ */ - Shell *shell = shell_get_main_shell(); - GtkWidget *widget = shell->info->view; - - PangoLayout *layout; - PangoContext *context; - PangoRectangle rect; - - GdkPixmap *pm; - GdkPixbuf *pb; - GdkGC *gc; - GdkColor black = { 0, 0, 0, 0 }; - GdkColor white = { 0, 65535, 65535, 65535 }; - - gint w, h, visible_height; - gchar *tmp; - - gboolean tv_enabled; - - /* present the window */ - gtk_window_present(GTK_WINDOW(shell->window)); - - /* if the treeview is disabled, we need to enable it so we get the - correct colors when saving. we make it insensitive later on if it - was this way before entering this function */ - tv_enabled = GTK_WIDGET_IS_SENSITIVE(widget); - gtk_widget_set_sensitive(widget, TRUE); - - gtk_widget_queue_draw(widget); - - /* unselect things in the information treeview */ - gtk_range_set_value(GTK_RANGE - (GTK_SCROLLED_WINDOW(shell->info->scroll)-> - vscrollbar), 0.0); - gtk_tree_selection_unselect_all(gtk_tree_view_get_selection - (GTK_TREE_VIEW(widget))); - while (gtk_events_pending()) - gtk_main_iteration(); - - /* initialize stuff */ - gc = gdk_gc_new(widget->window); - gdk_gc_set_background(gc, &black); - gdk_gc_set_foreground(gc, &white); - - context = gtk_widget_get_pango_context(widget); - layout = pango_layout_new(context); - - visible_height = tree_view_get_visible_height(GTK_TREE_VIEW(widget)); - - /* draw the title */ - tmp = g_strdup_printf("<b><big>%s</big></b>\n<small>%s</small>", - shell->selected->name, - shell->selected->notefunc(shell->selected-> - number)); - pango_layout_set_markup(layout, tmp, -1); - pango_layout_set_width(layout, widget->allocation.width * PANGO_SCALE); - pango_layout_set_alignment(layout, PANGO_ALIGN_CENTER); - pango_layout_get_pixel_extents(layout, NULL, &rect); - - w = widget->allocation.width; - h = visible_height + rect.height; - - pm = gdk_pixmap_new(widget->window, w, rect.height, -1); - gdk_draw_rectangle(GDK_DRAWABLE(pm), gc, TRUE, 0, 0, w, rect.height); - gdk_draw_layout_with_colors(GDK_DRAWABLE(pm), gc, 0, 0, layout, - &white, &black); - - /* copy the pixmap from the treeview and from the title */ - pb = gdk_pixbuf_get_from_drawable(NULL, - widget->window, - NULL, 0, 0, 0, 0, w, h); - pb = gdk_pixbuf_get_from_drawable(pb, - pm, - NULL, - 0, 0, - 0, visible_height, w, rect.height); - - /* save the pixbuf to a png file */ - gdk_pixbuf_save(pb, filename, "png", NULL, - "compression", "9", - "tEXt::hardinfo::version", VERSION, - "tEXt::hardinfo::arch", ARCH, NULL); - - /* unref */ - g_object_unref(pb); - g_object_unref(layout); - g_object_unref(pm); - g_object_unref(gc); - g_free(tmp); - - gtk_widget_set_sensitive(widget, tv_enabled); -} - static gboolean __idle_free_do(gpointer ptr) { g_free(ptr); @@ -1402,3 +1323,59 @@ gboolean g_strv_contains(const gchar * const * strv, const gchar *str) { return 0; } #endif + +/* Hardinfo labels that have # are truncated and/or hidden. + * Labels can't have $ because that is the delimiter in + * moreinfo. */ +gchar *hardinfo_clean_label(const gchar *v, int replacing) { + gchar *clean, *p; + + p = clean = g_strdup(v); + while (*p != 0) { + switch(*p) { + case '#': case '$': + *p = '_'; + break; + default: + break; + } + p++; + } + if (replacing) + g_free((gpointer)v); + return clean; +} + +/* hardinfo uses the values as {ht,x}ml, apparently */ +gchar *hardinfo_clean_value(const gchar *v, int replacing) { + gchar *clean, *tmp; + gchar **vl; + if (v == NULL) return NULL; + + vl = g_strsplit(v, "&", -1); + if (g_strv_length(vl) > 1) + clean = g_strjoinv("&", vl); + else + clean = g_strdup(v); + g_strfreev(vl); + + vl = g_strsplit(clean, "<", -1); + if (g_strv_length(vl) > 1) { + tmp = g_strjoinv("<", vl); + g_free(clean); + clean = tmp; + } + g_strfreev(vl); + + vl = g_strsplit(clean, ">", -1); + if (g_strv_length(vl) > 1) { + tmp = g_strjoinv(">", vl); + g_free(clean); + clean = tmp; + } + g_strfreev(vl); + + if (replacing) + g_free((gpointer)v); + return clean; +} diff --git a/hardinfo/vendor.c b/hardinfo/vendor.c index 86dba97a..47def3f9 100644 --- a/hardinfo/vendor.c +++ b/hardinfo/vendor.c @@ -28,7 +28,8 @@ static const Vendor vendors[] = { {"ATI", "ATI Technologies", "www.ati.com"}, - {"nVidia", "NVIDIA", "www.nvidia.com"}, + {"nVidia", "nVidia", "www.nvidia.com"}, + {"NVidia", "nVidia", "www.nvidia.com"}, {"3Com", "3Com", "www.3com.com"}, {"Intel", "Intel", "www.intel.com"}, {"Cirrus Logic", "Cirrus Logic", "www.cirrus.com"}, @@ -93,6 +94,27 @@ static const Vendor vendors[] = { {"American Megatrends", "American Megatrends", "www.ami.com"}, {"Award", "Award Software International", "www.award-bios.com"}, {"Phoenix", "Phoenix Technologies", "www.phoenix.com"}, + /* x86 vendor strings */ + { "AMDisbetter!", "Advanced Micro Devices", "www.amd.com" }, + { "AuthenticAMD", "Advanced Micro Devices", "www.amd.com" }, + { "CentaurHauls", "VIA (formerly Centaur Technology)", "www.via.tw" }, + { "CyrixInstead", "Cyrix", "" }, + { "GenuineIntel", "Intel", "www.intel.com" }, + { "TransmetaCPU", "Transmeta", "" }, + { "GenuineTMx86", "Transmeta", "" }, + { "Geode by NSC", "National Semiconductor", "" }, + { "NexGenDriven", "NexGen", "" }, + { "RiseRiseRise", "Rise Technology", "" }, + { "SiS SiS SiS", "Silicon Integrated Systems", "" }, + { "UMC UMC UMC", "United Microelectronics Corporation", "" }, + { "VIA VIA VIA", "VIA", "www.via.tw" }, + { "Vortex86 SoC", "DMP Electronics", "" }, + /* x86 VM vendor strings */ + { "KVMKVMKVM", "KVM", "" }, + { "Microsoft Hv", "Microsoft Hyper-V", "www.microsoft.com" }, + { "lrpepyh vr", "Parallels", "" }, + { "VMwareVMware", "VMware", "" }, + { "XenVMMXenVMM", "Xen HVM", "" }, }; static GSList *vendor_list = NULL; @@ -110,48 +132,48 @@ void vendor_init(void) DEBUG("initializing vendor list"); sync_manager_add_entry(&se); - + path = g_build_filename(g_get_home_dir(), ".hardinfo", "vendor.conf", NULL); if (!g_file_test(path, G_FILE_TEST_EXISTS)) { DEBUG("local vendor.conf not found, trying system-wise"); g_free(path); path = g_build_filename(params.path_data, "vendor.conf", NULL); } - + if (g_file_test(path, G_FILE_TEST_EXISTS)) { GKeyFile *vendors; gchar *tmp; gint num_vendors; - + DEBUG("loading %s", path); - + vendors = g_key_file_new(); if (g_key_file_load_from_file(vendors, path, 0, NULL)) { num_vendors = g_key_file_get_integer(vendors, "vendors", "number", NULL); - + for (i = num_vendors - 1; i >= 0; i--) { Vendor *v = g_new0(Vendor, 1); - + tmp = g_strdup_printf("vendor%d", i); - + v->id = g_key_file_get_string(vendors, tmp, "id", NULL); v->name = g_key_file_get_string(vendors, tmp, "name", NULL); v->url = g_key_file_get_string(vendors, tmp, "url", NULL); - + vendor_list = g_slist_prepend(vendor_list, v); - + g_free(tmp); } } - + g_key_file_free(vendors); } else { DEBUG("system-wise vendor.conf not found, using internal database"); - + for (i = G_N_ELEMENTS(vendors) - 1; i >= 0; i--) { vendor_list = g_slist_prepend(vendor_list, (gpointer) &vendors[i]); } - } + } g_free(path); } @@ -159,20 +181,20 @@ void vendor_init(void) const gchar *vendor_get_name(const gchar * id) { GSList *vendor; - + if (!id) { return NULL; } - + for (vendor = vendor_list; vendor; vendor = vendor->next) { Vendor *v = (Vendor *)vendor->data; - + if (v && v->id && strstr(id, v->id)) { - return g_strdup(v->name); + return v->name; } } - return id; + return id; /* What about const? */ } const gchar *vendor_get_url(const gchar * id) @@ -182,12 +204,12 @@ const gchar *vendor_get_url(const gchar * id) if (!id) { return NULL; } - + for (vendor = vendor_list; vendor; vendor = vendor->next) { Vendor *v = (Vendor *)vendor->data; - + if (v && v->id && strstr(id, v->id)) { - return g_strdup(v->url); + return v->url; } } diff --git a/includes/alpha/processor-platform.h b/includes/alpha/processor-platform.h index 2ff3a728..778a1a88 100644 --- a/includes/alpha/processor-platform.h +++ b/includes/alpha/processor-platform.h @@ -23,6 +23,7 @@ struct _Processor { gchar *model_name; gfloat bogomips, cpu_mhz; gchar *strmodel; + gchar *cycle_frequency_hz_str; }; #endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/arm/processor-platform.h b/includes/arm/processor-platform.h index 290b9a62..0ffdac24 100644 --- a/includes/arm/processor-platform.h +++ b/includes/arm/processor-platform.h @@ -19,15 +19,18 @@ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ +#include "cpu_util.h" + struct _Processor { gchar *model_name; - gchar *decoded_name; + gchar *linux_name; gchar *flags; gfloat bogomips; - gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ - gint cpukhz_max, cpukhz_min, cpukhz_cur; /* for arm/processor.c */ gint id; + gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ + cpu_topology_data *cputopo; + cpufreq_data *cpufreq; gchar *cpu_implementer; gchar *cpu_architecture; diff --git a/includes/benchmark.h b/includes/benchmark.h index 8047d5c6..39de042b 100644 --- a/includes/benchmark.h +++ b/includes/benchmark.h @@ -10,6 +10,7 @@ enum { BENCHMARK_CRYPTOHASH, BENCHMARK_FIB, BENCHMARK_NQUEENS, + BENCHMARK_ZLIB, BENCHMARK_FFT, BENCHMARK_RAYTRACE, BENCHMARK_GUI, @@ -24,6 +25,7 @@ void benchmark_fish(void); void benchmark_gui(void); void benchmark_nqueens(void); void benchmark_raytrace(void); +void benchmark_zlib(void); gdouble benchmark_parallel_for(guint start, guint end, gpointer callback, gpointer callback_data); diff --git a/includes/callbacks.h b/includes/callbacks.h index d53e1861..392d5767 100644 --- a/includes/callbacks.h +++ b/includes/callbacks.h @@ -24,7 +24,6 @@ void cb_about(); void cb_about_module(GtkAction *action); void cb_generate_report(); -void cb_save_graphic(); void cb_quit(); void cb_refresh(); void cb_copy_to_clipboard(); diff --git a/includes/computer.h b/includes/computer.h index c23acab6..5a69a171 100644 --- a/includes/computer.h +++ b/includes/computer.h @@ -20,44 +20,6 @@ #include "hardinfo.h" -#define DB_PREFIX "/etc/" - -static struct { - gchar *file, *codename; -} distro_db[] = { - { DB_PREFIX "fatdog-version", "fatdog" }, - { DB_PREFIX "debian_version", "deb" }, - { DB_PREFIX "slackware-version", "slk" }, - { DB_PREFIX "mandrake-release", "mdk" }, - { DB_PREFIX "mandriva-release", "mdv" }, - { DB_PREFIX "fedora-release", "fdra" }, - { DB_PREFIX "coas", "coas" }, - { DB_PREFIX "environment.corel", "corel"}, - { DB_PREFIX "gentoo-release", "gnt" }, - { DB_PREFIX "conectiva-release", "cnc" }, - { DB_PREFIX "versão-conectiva", "cnc" }, - { DB_PREFIX "turbolinux-release", "tl" }, - { DB_PREFIX "yellowdog-release", "yd" }, - { DB_PREFIX "sabayon-release", "sbn" }, - { DB_PREFIX "arch-release", "arch" }, - { DB_PREFIX "enlisy-release", "enlsy"}, - { DB_PREFIX "SuSE-release", "suse" }, - { DB_PREFIX "sun-release", "sun" }, - { DB_PREFIX "zenwalk-version", "zen" }, - { DB_PREFIX "DISTRO_SPECS", "ppy" }, - { DB_PREFIX "puppyversion", "ppy" }, - { DB_PREFIX "distro-release", "fl" }, - { DB_PREFIX "vine-release", "vine" }, - { DB_PREFIX "PartedMagic-version", "pmag" }, - /* - * RedHat must be the *last* one to be checked, since - * some distros (like Mandrake) includes a redhat-relase - * file too. - */ - { DB_PREFIX "redhat-release", "rh" }, - { NULL, NULL } -}; - typedef struct _Computer Computer; typedef struct _OperatingSystem OperatingSystem; typedef struct _MemoryInfo MemoryInfo; diff --git a/includes/cpu_util.h b/includes/cpu_util.h new file mode 100644 index 00000000..da581a78 --- /dev/null +++ b/includes/cpu_util.h @@ -0,0 +1,49 @@ +#ifndef __CPU_UTIL_H__ +#define __CPU_UTIL_H__ + +#include "hardinfo.h" + +#ifndef PROC_CPUINFO +#define PROC_CPUINFO "/proc/cpuinfo" +#endif + +#define STRIFNULL(f,cs) if (f == NULL) f = g_strdup(cs); +#define UNKIFNULL(f) STRIFNULL(f, _("(Unknown)") ) +#define EMPIFNULL(f) STRIFNULL(f, "") + +const gchar *byte_order_str(void); + +/* from /sys/devices/system/cpu/cpu%d/%s */ +gchar* get_cpu_str(const gchar* file, gint cpuid); +gint get_cpu_int(const char* item, int cpuid, int null_val); + +/* space delimted list of flags, finds flag */ +int processor_has_flag(gchar * strflags, gchar * strflag); + +typedef struct { + gint id; + gint cpukhz_max, cpukhz_min, cpukhz_cur; + gchar *scaling_driver, *scaling_governor; + gint transition_latency; +} cpufreq_data; + +typedef struct { + gint id; /* thread */ + gint socket_id; + gint core_id; + gint book_id; + gint drawer_id; +} cpu_topology_data; + +cpufreq_data *cpufreq_new(gint id); +void cpufreq_update(cpufreq_data *cpufd, int cur_only); +void cpufreq_free(cpufreq_data *cpufd); + +gchar *cpufreq_section_str(cpufreq_data *cpufd); + +cpu_topology_data *cputopo_new(gint id); +void cputopo_free(cpu_topology_data *cputd); + +gchar *cputopo_section_str(cpu_topology_data *cputd); + +#endif diff --git a/includes/devices.h b/includes/devices.h index 09c1c36f..00787331 100644 --- a/includes/devices.h +++ b/includes/devices.h @@ -38,10 +38,13 @@ typedef struct _Processor Processor; /* Processor */ GSList *processor_scan(void); void get_processor_strfamily(Processor * processor); -void cpu_flags_init(void); -gchar *processor_get_capabilities_from_flags(gchar * strflags); gchar *processor_get_detailed_info(Processor * processor); gchar *processor_get_info(GSList * processors); +gchar *processor_name(GSList * processors); +gchar *processor_name_default(GSList * processors); +gchar *processor_describe(GSList * processors); +gchar *processor_describe_default(GSList * processors); +gchar *processor_describe_by_counting_names(GSList * processors); /* Memory */ void init_memory_labels(void); @@ -92,4 +95,6 @@ extern gchar *dmi_info; extern gchar *spd_info; #endif +extern gchar *dtree_info; + #endif /* __DEVICES_H__ */ diff --git a/includes/dt_util.h b/includes/dt_util.h new file mode 100644 index 00000000..7ef6808b --- /dev/null +++ b/includes/dt_util.h @@ -0,0 +1,89 @@ + +#ifndef _DT_UTIL_H_ +#define _DT_UTIL_H_ + +#include <stdint.h> + +/* some not-quite-complete stuff that can be disabled */ +#define DTEX_PHREFS 1 + +#ifndef DTR_ROOT +#define DTR_ROOT dtr_find_device_tree_root() +#endif + +enum { + DT_TYPE_ERR, + + DT_NODE, + DTP_UNK, /* arbitrary-length byte sequence */ + DTP_EMPTY, /* empty property */ + DTP_STR, /* null-delimited list of strings */ + DTP_HEX, /* list of 32-bit values displayed in hex */ + DTP_UINT, /* unsigned int list */ + DTP_INTRUPT, /* interrupt-specifier list */ + DTP_INTRUPT_EX, /* extended interrupt-specifier list */ + DTP_OVR, /* all in /__overrides__ */ + DTP_PH, /* phandle */ + DTP_PH_REF, /* reference to phandle */ + DTP_REG, /* <#address-cells, #size-cells> */ + DTP_CLOCKS, /* <phref, #clock-cells> */ + DTP_GPIOS, /* <phref, #gpio-cells> */ + DTP_DMAS, /* dma-specifier list */ +}; + +/* simplest, no aliases, doesn't require an existing dt. + * use dtr_get_prop_str() for complete. */ +char* dtr_get_string(const char *p, int decode); + +typedef uint32_t dt_uint; /* big-endian */ + +typedef struct _dtr dtr; +typedef struct _dtr_obj dtr_obj; + +dtr *dtr_new(const char *base_path); /* NULL for DTR_ROOT */ +void dtr_free(dtr *); +int dtr_was_found(dtr *); +const char *dtr_base_path(dtr *); +char *dtr_messages(dtr *); /* returns a message log */ + +dtr_obj *dtr_obj_read(dtr *, const char *dtp); +void dtr_obj_free(dtr_obj *); +int dtr_obj_type(dtr_obj *); +char *dtr_obj_alias(dtr_obj *); +char *dtr_obj_symbol(dtr_obj *); +char *dtr_obj_path(dtr_obj *); /* device tree path */ +char *dtr_obj_full_path(dtr_obj *); /* system path */ + +/* find property/node 'name' relative to node + * if node is NULL, then from root */ +dtr_obj *dtr_get_prop_obj(dtr *, dtr_obj *node, const char *name); +char *dtr_get_prop_str(dtr *, dtr_obj *node, const char *name); +uint32_t dtr_get_prop_u32(dtr *, dtr_obj *node, const char *name); + +/* attempts to render the object as a string */ +char* dtr_str(dtr_obj *obj); + +int dtr_guess_type(dtr_obj *obj); +char *dtr_elem_phref(dtr *, dt_uint e, int show_path); +char *dtr_elem_hex(dt_uint e); +char *dtr_elem_byte(uint8_t e); +char *dtr_elem_uint(dt_uint e); +char *dtr_list_byte(uint8_t *bytes, unsigned long count); +char *dtr_list_hex(dt_uint *list, unsigned long count); + +int dtr_cellv_find(dtr_obj *obj, char *qprop, int limit); + +char *dtr_maps_info(dtr *); /* returns hardinfo shell section */ + +const char *dtr_find_device_tree_root(void); + +/* write to the message log */ +void dtr_msg(dtr *s, char *fmt, ...); + +#define sp_sep(STR) (strlen(STR) ? " " : "") +/* appends an element to a string, adding a space if + * the string is not empty. + * ex: ret = appf(ret, "%s=%s\n", name, value); */ +char *appf(char *src, char *fmt, ...); + +#endif diff --git a/includes/gettext.h b/includes/gettext.h new file mode 100644 index 00000000..fcdb2051 --- /dev/null +++ b/includes/gettext.h @@ -0,0 +1,47 @@ + +#ifndef __GETTEXT_H__ +#define __GETTEXT_H__ + +#include <string.h> +#include <libintl.h> +#include <locale.h> + +static const char * +__pgettext_expr (const char *msgctxt, const char *msgid) +{ + size_t msgctxt_len = strlen (msgctxt) + 1; + size_t msgid_len = strlen (msgid) + 1; + const char *translation; +#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS + char msg_ctxt_id[msgctxt_len + msgid_len]; +#else + char buf[1024]; + char *msg_ctxt_id = + (msgctxt_len + msgid_len <= sizeof (buf) + ? buf + : (char *) malloc (msgctxt_len + msgid_len)); + if (msg_ctxt_id != NULL) +#endif + { + int found_translation; + memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); + msg_ctxt_id[msgctxt_len - 1] = '\004'; + memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); + translation = gettext (msg_ctxt_id); + found_translation = (translation != msg_ctxt_id); +#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS + if (msg_ctxt_id != buf) + free (msg_ctxt_id); +#endif + if (found_translation) + return translation; + } + return msgid; +} + +#define _(STRING) gettext(STRING) +#define N_(STRING) (STRING) +#define C_(CTX, STRING) __pgettext_expr(CTX, STRING) +#define NC_(CTX, STRING) (STRING) + +#endif diff --git a/includes/hardinfo.h b/includes/hardinfo.h index 70329ac7..f42f1e6c 100644 --- a/includes/hardinfo.h +++ b/includes/hardinfo.h @@ -23,10 +23,14 @@ #include "config.h" #include "shell.h" #include "vendor.h" -#include <libintl.h> -#include <locale.h> -#define _(STRING) gettext(STRING) -#define N_(STRING) (STRING) +#include "gettext.h" +#include "info.h" + +#define HARDINFO_COPYRIGHT_LATEST_YEAR 2017 + +#ifndef LOCALEDIR +#define LOCALEDIR "/usr/share/locale" +#endif typedef enum { MODULE_FLAG_NONE = 0, @@ -88,7 +92,6 @@ gchar *strreplace(gchar *string, gchar *replace, gchar *replacement); /* Widget utility functions */ void widget_set_cursor(GtkWidget *widget, GdkCursorType cursor_type); gint tree_view_get_visible_height(GtkTreeView *tv); -void tree_view_save_image(gchar *filename); /* File Chooser utility functions */ void file_chooser_open_expander(GtkWidget *chooser); @@ -167,4 +170,12 @@ gchar *moreinfo_lookup(gchar *key); gboolean g_strv_contains(const gchar * const * strv, const gchar *str); #endif +/* Hardinfo labels that have # are truncated and/or hidden. + * Labels can't have $ because that is the delimiter in + * moreinfo. + * replacing = true will free v */ +gchar *hardinfo_clean_label(const gchar *v, int replacing); +/* hardinfo uses the values as {ht,x}ml, apparently */ +gchar *hardinfo_clean_value(const gchar *v, int replacing); + #endif /* __HARDINFO_H__ */ diff --git a/includes/ia64/processor-platform.h b/includes/ia64/processor-platform.h index 1e30c5fc..5d525639 100644 --- a/includes/ia64/processor-platform.h +++ b/includes/ia64/processor-platform.h @@ -19,11 +19,22 @@ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ +#include "cpu_util.h" + struct _Processor { + gint id; + gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ + cpu_topology_data *cputopo; + cpufreq_data *cpufreq; + gchar *model_name; gchar *vendor_id; - gfloat bogomips, cpu_mhz; + gfloat bogomips; gchar *strmodel; + + gchar *family, *arch, *archrev, *features; + gint model, revision; + gint cpu_regs; }; #endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/info.h b/includes/info.h new file mode 100644 index 00000000..253c06e0 --- /dev/null +++ b/includes/info.h @@ -0,0 +1,73 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2017 Leandro A. F. Pereira <leandro@hardinfo.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#pragma once + +#include <glib.h> + +struct Info { + GArray *groups; + + const gchar *column_titles[5]; + + ShellViewType view_type; + + int reload_interval; + + gboolean column_headers_visible; + gboolean zebra_visible; + gboolean normalize_percentage; +}; + +struct InfoGroup { + const gchar *name; + + GArray *fields; + + /* scaffolding fields */ + const gchar *computed; +}; + +struct InfoField { + const gchar *name; + gchar *value; + + int update_interval; + + gboolean free_value_on_flatten; +}; + +struct Info *info_new(void); + +void info_add_group(struct Info *info, const gchar *group_name, ...); +void info_add_computed_group(struct Info *info, const gchar *name, const gchar *value); + +struct InfoField info_field(const gchar *name, gchar *value); +struct InfoField info_field_printf(const gchar *name, const gchar *format, ...) + __attribute__((format(printf, 2, 3))); +struct InfoField info_field_update(const gchar *name, int update_interval); +struct InfoField info_field_last(void); + +void info_set_column_title(struct Info *info, const gchar *column, const gchar *title); +void info_set_column_headers_visible(struct Info *info, gboolean setting); +void info_set_zebra_visible(struct Info *info, gboolean setting); +void info_set_normalize_percentage(struct Info *info, gboolean setting); +void info_set_view_type(struct Info *info, ShellViewType setting); +void info_set_reload_interval(struct Info *info, int setting); + +gchar *info_flatten(struct Info *info); diff --git a/includes/loadgraph.h b/includes/loadgraph.h index 1eae976f..d79ca39b 100644 --- a/includes/loadgraph.h +++ b/includes/loadgraph.h @@ -14,7 +14,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with the Simple Load Graph; if not, write to the Free * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA. + * 02111-1307 USA. */ @@ -24,12 +24,6 @@ #include <stdlib.h> #include <gtk/gtk.h> #include <math.h> -/*#include <libintl.h> -#include <locale.h> -#define _(STRING) gettext(STRING) -#define N_(STRING) (STRING)*/ - - typedef struct _LoadGraph LoadGraph; @@ -39,37 +33,20 @@ typedef enum { LG_COLOR_RED = 0xB04F4F } LoadGraphColor; -struct _LoadGraph { - GdkPixmap *buf; - GtkWidget *area; - - GdkGC *grid; - GdkGC *trace; - GdkGC *fill; - - gint *data; - gfloat scale; +LoadGraph *load_graph_new(gint size); +void load_graph_destroy(LoadGraph *lg); +void load_graph_configure_expose(LoadGraph *lg); +GtkWidget *load_graph_get_framed(LoadGraph *lg); - gint size; - gint width, height; - LoadGraphColor color; - - gint max_value, remax_count; - - PangoLayout *layout; - gchar *suffix; -}; +void load_graph_update(LoadGraph *lg, gdouble value); +void load_graph_update_ex(LoadGraph *lg, guint line, gdouble value); -LoadGraph *load_graph_new(gint size); -void load_graph_destroy(LoadGraph *lg); -void load_graph_configure_expose(LoadGraph *lg); -GtkWidget *load_graph_get_framed(LoadGraph *lg); +void load_graph_set_color(LoadGraph *lg, LoadGraphColor color); +void load_graph_clear(LoadGraph *lg); -void load_graph_update(LoadGraph *lg, gint value); -void load_graph_set_color(LoadGraph *lg, LoadGraphColor color); -void load_graph_clear(LoadGraph *lg); +void load_graph_set_data_suffix(LoadGraph *lg, gchar *suffix); +gchar *load_graph_get_data_suffix(LoadGraph *lg); -void load_graph_set_data_suffix(LoadGraph *lg, gchar *suffix); -gchar *load_graph_get_data_suffix(LoadGraph *lg); +gint load_graph_get_height(LoadGraph *lg); -#endif /* __LOADGRAPH_H__ */ +#endif /* __LOADGRAPH_H__ */ diff --git a/includes/m68k/processor-platform.h b/includes/m68k/processor-platform.h index 40bd2f96..9aea1dfe 100644 --- a/includes/m68k/processor-platform.h +++ b/includes/m68k/processor-platform.h @@ -23,7 +23,7 @@ struct _Processor { gchar *model_name; gfloat bogomips, cpu_mhz; - gchar *has_fpu; + gchar *fpu_name, *mmu_name, *calibration; }; #endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/parisc/processor-platform.h b/includes/parisc/processor-platform.h index bfe8c45c..c55c69ec 100644 --- a/includes/parisc/processor-platform.h +++ b/includes/parisc/processor-platform.h @@ -19,15 +19,24 @@ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ +#include "cpu_util.h" + struct _Processor { + gint id; + gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ + cpu_topology_data *cputopo; + cpufreq_data *cpufreq; + gchar *model_name; gchar *vendor_id; gchar *flags; - gfloat bogomips, cpu_mhz; - + gfloat bogomips; gchar *has_fpu; - gchar *strmodel; + + gchar *cpu_family; + gchar *icache_str, *dcache_str; + gchar *hversion, *sversion; }; #endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/ppc/processor-platform.h b/includes/ppc/processor-platform.h index 90095750..d3d1a568 100644 --- a/includes/ppc/processor-platform.h +++ b/includes/ppc/processor-platform.h @@ -19,11 +19,18 @@ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ +#include "cpu_util.h" + struct _Processor { + gint id; + gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ + cpu_topology_data *cputopo; + cpufreq_data *cpufreq; + gchar *model_name; - gchar *vendor_id; - gint cache_size; - gfloat bogomips, cpu_mhz; + gchar *revision; + /* gint cache_size; */ + gfloat bogomips; }; #endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/riscv/processor-platform.h b/includes/riscv/processor-platform.h new file mode 100644 index 00000000..07cbf86e --- /dev/null +++ b/includes/riscv/processor-platform.h @@ -0,0 +1,36 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@hardinfo.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __PROCESSOR_PLATFORM_H__ +#define __PROCESSOR_PLATFORM_H__ + +#include "cpu_util.h" + +struct _Processor { + gint id; /* hart */ + gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ + cpu_topology_data *cputopo; + cpufreq_data *cpufreq; + + gchar *model_name; + gchar *mmu, *isa, *uarch; + gchar *flags; /* expanded from isa */ + gfloat bogomips; /* not used */ +}; + +#endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/s390/processor-platform.h b/includes/s390/processor-platform.h index 511fae6b..9164a7f2 100644 --- a/includes/s390/processor-platform.h +++ b/includes/s390/processor-platform.h @@ -19,10 +19,18 @@ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ +#include "cpu_util.h" + struct _Processor { - gchar *vendor_id, *model_name; - gint cache_size; - gfloat bogomips, cpu_mhz; + gint id; + gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ + cpu_topology_data *cputopo; + cpufreq_data *cpufreq; + + gchar *model_name; /* vendor_id */ + gchar *proc_str; + gfloat bogomips; + }; #endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/sh/processor-platform.h b/includes/sh/processor-platform.h index 9bdae18b..26b58ec5 100644 --- a/includes/sh/processor-platform.h +++ b/includes/sh/processor-platform.h @@ -23,6 +23,10 @@ struct _Processor { gchar *model_name; gchar *vendor_id; gfloat bogomips, cpu_mhz; + + gfloat bus_mhz, mod_mhz; + + gchar *family; }; #endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/sparc/processor-platform.h b/includes/sparc/processor-platform.h index bcf4c782..31748a5b 100644 --- a/includes/sparc/processor-platform.h +++ b/includes/sparc/processor-platform.h @@ -23,6 +23,7 @@ struct _Processor { gchar *model_name; gchar *has_fpu; gfloat cpu_mhz; + gchar *cpucaps; }; #endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/uidefs.h b/includes/uidefs.h index 3bb1c88f..70d2de17 100644 --- a/includes/uidefs.h +++ b/includes/uidefs.h @@ -1,5 +1,5 @@ #ifndef __UIDEFS_H__ -#define __UIDEFS_H__ +#define __UIDEFS_H__ #include "config.h" @@ -12,7 +12,7 @@ #ifdef HAS_LIBSOUP #define SYNC_MANAGER_ITEMS " <separator/>" \ -" <menuitem name=\"SyncManager\" action=\"SyncManagerAction\" />" +" <menuitem name=\"SyncManager\" action=\"SyncManagerAction\" />" #else /* !HAS_LIBSOUP */ #define SYNC_MANAGER_ITEMS @@ -24,10 +24,6 @@ char *uidefs_str = "<ui>" \ " <menuitem name=\"Report\" action=\"ReportAction\" />" \ " <menuitem name=\"Copy\" action=\"CopyAction\" />" \ SYNC_MANAGER_ITEMS -/* - * Save Image is not ready for prime time. Yet. - * "<menuitem name=\"SaveGraph\" action=\"SaveGraphAction\" />" \ - */ " <separator/>" \ " <menuitem name=\"Quit\" action=\"QuitAction\" />" \ " </menu>" \ diff --git a/includes/x86/processor-platform.h b/includes/x86/processor-platform.h index bc27b620..57a9830c 100644 --- a/includes/x86/processor-platform.h +++ b/includes/x86/processor-platform.h @@ -19,6 +19,8 @@ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ +#include "cpu_util.h" + typedef struct _ProcessorCache ProcessorCache; struct _ProcessorCache { @@ -38,9 +40,12 @@ struct _Processor { gchar *pm; /* power management features */ gint cache_size; gfloat bogomips; + gchar *microcode; + gint id; gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ - gint cpukhz_max, cpukhz_min, cpukhz_cur; /* for arm/processor.c */ + cpu_topology_data *cputopo; + cpufreq_data *cpufreq; gchar *has_fpu; gchar *bug_fdiv, *bug_hlt, *bug_f00f, *bug_coma; @@ -48,9 +53,8 @@ struct _Processor { gint model, family, stepping; gchar *strmodel; - gint id; - GSList *cache; + }; #endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/x86_64 b/includes/x86_64 deleted file mode 120000 index de1ff735..00000000 --- a/includes/x86_64 +++ /dev/null @@ -1 +0,0 @@ -./x86
\ No newline at end of file diff --git a/modules/benchmark.c b/modules/benchmark.c index 94997df8..50fddf4d 100644 --- a/modules/benchmark.c +++ b/modules/benchmark.c @@ -36,6 +36,7 @@ void scan_bfsh(gboolean reload); void scan_cryptohash(gboolean reload); void scan_fib(gboolean reload); void scan_nqueens(gboolean reload); +void scan_zlib(gboolean reload); void scan_gui(gboolean reload); gchar *callback_fft(); @@ -44,6 +45,7 @@ gchar *callback_bfsh(); gchar *callback_fib(); gchar *callback_cryptohash(); gchar *callback_nqueens(); +gchar *callback_zlib(); gchar *callback_gui(); static ModuleEntry entries[] = { @@ -51,9 +53,12 @@ static ModuleEntry entries[] = { {N_("CPU CryptoHash"), "cryptohash.png", callback_cryptohash, scan_cryptohash, MODULE_FLAG_NONE}, {N_("CPU Fibonacci"), "nautilus.png", callback_fib, scan_fib, MODULE_FLAG_NONE}, {N_("CPU N-Queens"), "nqueens.png", callback_nqueens, scan_nqueens, MODULE_FLAG_NONE}, + {N_("CPU Zlib"), "file-roller.png", callback_zlib, scan_zlib, MODULE_FLAG_NONE}, {N_("FPU FFT"), "fft.png", callback_fft, scan_fft, MODULE_FLAG_NONE}, {N_("FPU Raytracing"), "raytrace.png", callback_raytr, scan_raytr, MODULE_FLAG_NONE}, +#if !GTK_CHECK_VERSION(3,0,0) {N_("GPU Drawing"), "module.png", callback_gui, scan_gui, MODULE_FLAG_NO_REMOTE}, +#endif {NULL} }; @@ -187,30 +192,30 @@ static gchar *__benchmark_include_results(gdouble result, { GKeyFile *conf; gchar **machines; - gchar *path, *results = g_strdup(""), *return_value, *processor_frequency; + gchar *path, *results = g_strdup(""), *return_value, *processor_frequency, *processor_name; int i; conf = g_key_file_new(); path = g_build_filename(g_get_home_dir(), ".hardinfo", "benchmark.conf", NULL); if (!g_file_test(path, G_FILE_TEST_EXISTS)) { - DEBUG("local benchmark.conf not found, trying system-wide"); - g_free(path); - path = g_build_filename(params.path_data, "benchmark.conf", NULL); + DEBUG("local benchmark.conf not found, trying system-wide"); + g_free(path); + path = g_build_filename(params.path_data, "benchmark.conf", NULL); } g_key_file_load_from_file(conf, path, 0, NULL); machines = g_key_file_get_keys(conf, benchmark, NULL, NULL); for (i = 0; machines && machines[i]; i++) { - gchar *value, *cleaned_machine; + gchar *value, *cleaned_machine; - value = g_key_file_get_value(conf, benchmark, machines[i], NULL); - cleaned_machine = clean_cpuname(machines[i]); - results = h_strconcat(results, cleaned_machine, "=", value, "\n", NULL); + value = g_key_file_get_value(conf, benchmark, machines[i], NULL); + cleaned_machine = clean_cpuname(machines[i]); + results = h_strconcat(results, cleaned_machine, "=", value, "\n", NULL); - g_free(value); - g_free(cleaned_machine); + g_free(value); + g_free(cleaned_machine); } g_strfreev(machines); @@ -218,30 +223,37 @@ static gchar *__benchmark_include_results(gdouble result, g_key_file_free(conf); if (result > 0.0f) { - processor_frequency = module_call_method("devices::getProcessorFrequency"); - return_value = g_strdup_printf(_("[$ShellParam$]\n" - "Zebra=1\n" - "OrderType=%d\n" - "ViewType=3\n" - "ColumnTitle$Extra1=CPU Clock\n" - "ColumnTitle$Progress=Results\n" - "ColumnTitle$TextValue=CPU\n" - "ShowColumnHeaders=true\n" - "[%s]\n" - "<big><b>This Machine</b></big>=%.3f|%s MHz\n" - "%s"), order_type, benchmark, result, processor_frequency, results); + processor_name = module_call_method("devices::getProcessorName"); + processor_frequency = module_call_method("devices::getProcessorFrequencyDesc"); + return_value = g_strdup_printf("[$ShellParam$]\n" + "Zebra=1\n" + "OrderType=%d\n" + "ViewType=3\n" + "ColumnTitle$Extra1=%s\n" /* CPU Clock */ + "ColumnTitle$Progress=%s\n" /* Results */ + "ColumnTitle$TextValue=%s\n" /* CPU */ + "ShowColumnHeaders=true\n" + "[%s]\n" + "<big><b>%s</b></big>=%.3f|%s\n" + "%s", order_type, + _("CPU Config"), _("Results"), _("CPU"), + benchmark, + processor_name, result, processor_frequency, results); g_free(processor_frequency); + g_free(processor_name); } else { - return_value = g_strdup_printf(_("[$ShellParam$]\n" - "Zebra=1\n" - "OrderType=%d\n" - "ViewType=3\n" - "ColumnTitle$Extra1=CPU Clock\n" - "ColumnTitle$Progress=Results\n" - "ColumnTitle$TextValue=CPU\n" - "ShowColumnHeaders=true\n" - "[%s]\n" - "%s"), order_type, benchmark, results); + return_value = g_strdup_printf("[$ShellParam$]\n" + "Zebra=1\n" + "OrderType=%d\n" + "ViewType=3\n" + "ColumnTitle$Extra1=%s\n" /* CPU Clock */ + "ColumnTitle$Progress=%s\n" /* Results */ + "ColumnTitle$TextValue=%s\n" /* CPU */ + "ShowColumnHeaders=true\n" + "[%s]\n%s", + order_type, + _("CPU Config"), _("Results"), _("CPU"), + benchmark, results); } return return_value; } @@ -306,6 +318,12 @@ gchar *callback_fib() "CPU Fibonacci"); } +gchar *callback_zlib() +{ + return benchmark_include_results(bench_results[BENCHMARK_ZLIB], + "CPU Zlib"); +} + typedef struct _BenchmarkDialog BenchmarkDialog; struct _BenchmarkDialog { GtkWidget *dialog; @@ -348,7 +366,7 @@ static gboolean do_benchmark_handler(GIOChannel *source, static void do_benchmark(void (*benchmark_function)(void), int entry) { int old_priority = 0; - + if (params.gui_running && !sending_benchmark_results) { gchar *argv[] = { params.argv0, "-b", entries[entry].name, "-m", "benchmark.so", "-a", NULL }; @@ -364,7 +382,7 @@ static void do_benchmark(void (*benchmark_function)(void), int entry) shell_view_set_enabled(FALSE); shell_status_update(bench_status); - + g_free(bench_status); bench_image = icon_cache_get_image("benchmark.png"); @@ -388,7 +406,7 @@ static void do_benchmark(void (*benchmark_function)(void), int entry) benchmark_dialog = g_new0(BenchmarkDialog, 1); benchmark_dialog->dialog = bench_dialog; benchmark_dialog->result = -1.0f; - + if (!g_path_is_absolute(params.argv0)) { spawn_flags |= G_SPAWN_SEARCH_PATH; } @@ -432,7 +450,7 @@ static void do_benchmark(void (*benchmark_function)(void), int entry) return; } - + gtk_widget_destroy(bench_dialog); g_free(benchmark_dialog); shell_status_set_enabled(TRUE); @@ -504,12 +522,20 @@ void scan_fib(gboolean reload) SCAN_END(); } +void scan_zlib(gboolean reload) +{ + SCAN_START(); + do_benchmark(benchmark_zlib, BENCHMARK_ZLIB); + SCAN_END(); +} + const gchar *hi_note_func(gint entry) { switch (entry) { case BENCHMARK_CRYPTOHASH: return _("Results in MiB/second. Higher is better."); + case BENCHMARK_ZLIB: case BENCHMARK_GUI: return _("Results in HIMarks. Higher is better."); @@ -595,7 +621,7 @@ static gchar *get_benchmark_results() g_free(machineram); sending_benchmark_results = FALSE; - + return result; } diff --git a/modules/benchmark/zlib.c b/modules/benchmark/zlib.c new file mode 100644 index 00000000..eeec9d0e --- /dev/null +++ b/modules/benchmark/zlib.c @@ -0,0 +1,71 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2017 Leandro A. F. Pereira <leandro@hardinfo.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <glib.h> +#include <stdlib.h> +#include <zlib.h> + +#include "benchmark.h" + +static gpointer zlib_for(unsigned int start, unsigned int end, void *data, gint thread_number) +{ + char *compressed; + uLong bound = compressBound(bound); + unsigned int i; + + compressed = malloc(bound); + if (!compressed) + return NULL; + + for (i = start; i <= end; i++) { + char uncompressed[65536]; + uLong compressedBound = bound; + uLong destBound = sizeof(uncompressed); + + compress(compressed, &compressedBound, data, 65536); + uncompress(uncompressed, &destBound, compressed, compressedBound); + } + + free(compressed); + + return NULL; +} + +void +benchmark_zlib(void) +{ + gdouble elapsed = 0; + gchar *tmpsrc, *bdata_path; + + bdata_path = g_build_filename(params.path_data, "benchmark.data", NULL); + if (!g_file_get_contents(bdata_path, &tmpsrc, NULL, NULL)) { + g_free(bdata_path); + return; + } + + shell_view_set_enabled(FALSE); + shell_status_update("Running Zlib benchmark..."); + + elapsed = benchmark_parallel_for(0, 50000, zlib_for, tmpsrc); + + g_free(bdata_path); + g_free(tmpsrc); + + gdouble marks = (50000. * 65536.) / (elapsed * 840205128.); + bench_results[BENCHMARK_ZLIB] = marks; +} diff --git a/modules/computer.c b/modules/computer.c index eda405e8..513d94f5 100644 --- a/modules/computer.c +++ b/modules/computer.c @@ -16,13 +16,14 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include <config.h> +#include <gtk/gtk.h> +#include <stdarg.h> #include <stdlib.h> #include <string.h> -#include <gtk/gtk.h> -#include <config.h> -#include <time.h> #include <string.h> #include <sys/stat.h> +#include <time.h> #include <hardinfo.h> #include <iconcache.h> @@ -31,21 +32,22 @@ #include <vendor.h> #include "computer.h" +#include "info.h" /* Callbacks */ -gchar *callback_summary(); -gchar *callback_os(); -gchar *callback_modules(); -gchar *callback_boots(); -gchar *callback_locales(); -gchar *callback_fs(); -gchar *callback_display(); -gchar *callback_network(); -gchar *callback_users(); -gchar *callback_groups(); -gchar *callback_env_var(); +gchar *callback_summary(void); +gchar *callback_os(void); +gchar *callback_modules(void); +gchar *callback_boots(void); +gchar *callback_locales(void); +gchar *callback_fs(void); +gchar *callback_display(void); +gchar *callback_network(void); +gchar *callback_users(void); +gchar *callback_groups(void); +gchar *callback_env_var(void); #if GLIB_CHECK_VERSION(2,14,0) -gchar *callback_dev(); +gchar *callback_dev(void); #endif /* GLIB_CHECK_VERSION(2,14,0) */ /* Scan callbacks */ @@ -81,6 +83,7 @@ static ModuleEntry entries[] = { {NULL}, }; + gchar *module_list = NULL; Computer *computer = NULL; @@ -89,7 +92,7 @@ gchar *hi_more_info(gchar * entry) gchar *info = moreinfo_lookup_with_prefix("COMP", entry); if (info) - return g_strdup(info); + return g_strdup(info); return g_strdup_printf("[%s]", entry); } @@ -99,22 +102,22 @@ gchar *hi_get_field(gchar * field) gchar *tmp; if (g_str_equal(field, _("Memory"))) { - MemoryInfo *mi = computer_get_memory(); - tmp = g_strdup_printf(_("%dMB (%dMB used)"), mi->total, mi->used); - g_free(mi); + MemoryInfo *mi = computer_get_memory(); + tmp = g_strdup_printf(_("%dMB (%dMB used)"), mi->total, mi->used); + g_free(mi); } else if (g_str_equal(field, _("Uptime"))) { - tmp = computer_get_formatted_uptime(); + tmp = computer_get_formatted_uptime(); } else if (g_str_equal(field, _("Date/Time"))) { - time_t t = time(NULL); + time_t t = time(NULL); - tmp = g_new0(gchar, 64); - strftime(tmp, 64, "%c", localtime(&t)); + tmp = g_new0(gchar, 64); + strftime(tmp, 64, "%c", localtime(&t)); } else if (g_str_equal(field, _("Load Average"))) { - tmp = computer_get_formatted_loadavg(); + tmp = computer_get_formatted_loadavg(); } else if (g_str_equal(field, _("Available entropy in /dev/random"))) { - tmp = computer_get_entropy_avail(); + tmp = computer_get_entropy_avail(); } else { - tmp = g_strdup_printf("Unknown field: %s", field); + tmp = g_strdup_printf("Unknown field: %s", field); } return tmp; } @@ -189,7 +192,7 @@ static gchar *dev_list = NULL; void scan_dev(gboolean reload) { SCAN_START(); - + int i; struct { gchar *compiler_name; @@ -198,8 +201,13 @@ void scan_dev(gboolean reload) gboolean stdout; } detect_lang[] = { { N_("Scripting Languages"), NULL, FALSE }, - { N_("CPython"), "python -V", "\\d+\\.\\d+\\.\\d+", TRUE }, + { N_("Gambas3 (gbr3)"), "gbr3 --version", "\\d+\\.\\d+\\.\\d+", TRUE }, + { N_("Python"), "python -V", "\\d+\\.\\d+\\.\\d+", FALSE }, + { N_("Python2"), "python2 -V", "\\d+\\.\\d+\\.\\d+", FALSE }, + { N_("Python3"), "python3 -V", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Perl"), "perl -v", "\\d+\\.\\d+\\.\\d+", TRUE }, + { N_("Perl6 (VM)"), "perl6 -v", "(?<=This is ).*", TRUE }, + { N_("Perl6"), "perl6 -v", "(?<=implementing Perl )\\w*\\.\\w*", TRUE }, { N_("PHP"), "php --version", "\\d+\\.\\d+\\.\\S+", TRUE}, { N_("Ruby"), "ruby --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Bash"), "bash --version", "\\d+\\.\\d+\\.\\S+", TRUE}, @@ -207,6 +215,7 @@ void scan_dev(gboolean reload) { N_("C (GCC)"), "gcc -v", "\\d+\\.\\d+\\.\\d+", FALSE }, { N_("C (Clang)"), "clang -v", "\\d+\\.\\d+", FALSE }, { N_("D (dmd)"), "dmd --help", "\\d+\\.\\d+", TRUE }, + { N_("Gambas3 (gbc3)"), "gbc3 --version", "\\d+\\.\\d+\\.\\d+", FALSE }, { N_("Java"), "javac -version", "\\d+\\.\\d+\\.\\d+", FALSE }, { N_("CSharp (Mono, old)"), "mcs --version", "\\d+\\.\\d+\\.\\d+\\.\\d+", TRUE }, { N_("CSharp (Mono)"), "gmcs --version", "\\d+\\.\\d+\\.\\d+\\.\\d+", TRUE }, @@ -216,36 +225,38 @@ void scan_dev(gboolean reload) { N_("Go"), "go version", "\\d+\\.\\d+\\.?\\d* ", TRUE }, { N_("Tools"), NULL, FALSE }, { N_("make"), "make --version", "\\d+\\.\\d+", TRUE }, - { N_("GDB"), "gdb --version", "\\d+\\.\\S+", TRUE }, + { N_("GDB"), "gdb --version", "(?<=^GNU gdb ).*", TRUE }, { N_("strace"), "strace -V", "\\d+\\.\\d+\\.?\\d*", TRUE }, { N_("valgrind"), "valgrind --version", "\\d+\\.\\d+\\.\\S+", TRUE }, { N_("QMake"), "qmake --version", "\\d+\\.\\S+", TRUE}, { N_("CMake"), "cmake --version", "\\d+\\.\\d+\\.?\\d*", TRUE}, + { N_("Gambas3 IDE"), "gambas3 --version", "\\d+\\.\\d+\\.\\d+", FALSE }, }; - + g_free(dev_list); - + dev_list = g_strdup(""); - + for (i = 0; i < G_N_ELEMENTS(detect_lang); i++) { gchar *version = NULL; - gchar *output; + gchar *output, *ignored; gchar *temp; GRegex *regex; GMatchInfo *match_info; gboolean found; - + if (!detect_lang[i].regex) { - dev_list = h_strdup_cprintf("[%s]\n", dev_list, detect_lang[i].compiler_name); + dev_list = h_strdup_cprintf("[%s]\n", dev_list, _(detect_lang[i].compiler_name)); continue; } - + if (detect_lang[i].stdout) { - found = g_spawn_command_line_sync(detect_lang[i].version_command, &output, NULL, NULL, NULL); + found = g_spawn_command_line_sync(detect_lang[i].version_command, &output, &ignored, NULL, NULL); } else { - found = g_spawn_command_line_sync(detect_lang[i].version_command, NULL, &output, NULL, NULL); + found = g_spawn_command_line_sync(detect_lang[i].version_command, &ignored, &output, NULL, NULL); } - + g_free(ignored); + if (found) { regex = g_regex_new(detect_lang[i].regex, 0, 0, NULL); @@ -253,41 +264,131 @@ void scan_dev(gboolean reload) if (g_match_info_matches(match_info)) { version = g_match_info_fetch(match_info, 0); } - + g_match_info_free(match_info); g_regex_unref(regex); g_free(output); } - - if (version) { - dev_list = h_strdup_cprintf("%s=%s\n", dev_list, detect_lang[i].compiler_name, version); - g_free(version); - } else { - dev_list = h_strdup_cprintf(_("%s=Not found\n"), dev_list, detect_lang[i].compiler_name); - } - + + if (version == NULL) + version = strdup(_("Not found")); + + dev_list = h_strdup_cprintf("%s=%s\n", dev_list, detect_lang[i].compiler_name, version); + g_free(version); + temp = g_strdup_printf(_("Detecting version: %s"), detect_lang[i].compiler_name); shell_status_update(temp); g_free(temp); } - + SCAN_END(); } -gchar *callback_dev() +gchar *callback_dev(void) { - return g_strdup_printf(_("[$ShellParam$]\n" - "ColumnTitle$TextValue=Program\n" - "ColumnTitle$Value=Version\n" - "ShowColumnHeaders=true\n" - "%s"), dev_list); + return g_strdup_printf( + "[$ShellParam$]\n" + "ColumnTitle$TextValue=%s\n" /* Program */ + "ColumnTitle$Value=%s\n" /* Version */ + "ShowColumnHeaders=true\n" + "%s", + _("Program"), _("Version"), + dev_list); } #endif /* GLIB_CHECK_VERSION(2,14,0) */ +static gchar *detect_machine_type(void) +{ + GDir *dir; + gchar *chassis; + + if (g_file_get_contents("/sys/devices/virtual/dmi/id/chassis_type", &chassis, NULL, NULL)) { + static const char *types[] = { + N_("Invalid chassis type (0)"), + N_("Unknown chassis type"), /* 1 is "Other", but not helpful in HardInfo */ + N_("Unknown chassis type"), + N_("Desktop"), + N_("Low-profile Desktop"), + N_("Pizza Box"), + N_("Mini Tower"), + N_("Tower"), + N_("Portable"), + N_("Laptop"), + N_("Notebook"), + N_("Handheld"), + N_("Docking Station"), + N_("All-in-one"), + N_("Subnotebook"), + N_("Space-saving"), + N_("Lunch Box"), + N_("Main Server Chassis"), + N_("Expansion Chassis"), + N_("Sub Chassis"), + N_("Bus Expansion Chassis"), + N_("Peripheral Chassis"), + N_("RAID Chassis"), + N_("Rack Mount Chassis"), + N_("Sealed-case PC"), + }; + int chassis_type = atoi(idle_free(chassis)); + + if (chassis_type >= 0 && chassis_type < G_N_ELEMENTS(types)) + return g_strdup(_(types[chassis_type])); + } + + if (g_file_test("/proc/pmu/info", G_FILE_TEST_EXISTS)) + return g_strdup(_("Laptop")); + + dir = g_dir_open("/proc/acpi/battery", 0, NULL); + if (dir) { + const gchar *name = g_dir_read_name(dir); + + g_dir_close(dir); + + if (name) + return g_strdup(_("Laptop")); + } + + dir = g_dir_open("/sys/class/power_supply", 0, NULL); + if (dir) { + const gchar *name; + + while ((name = g_dir_read_name(dir))) { + gchar *contents; + gchar type[PATH_MAX]; + int r; + + r = snprintf(type, sizeof(type), "%s/%s/type", + "/sys/class/power_supply", name); + if (r < 0 || r > PATH_MAX) + continue; + + if (g_file_get_contents(type, &contents, NULL, NULL)) { + if (g_str_has_prefix(contents, "Battery")) { + g_free(contents); + g_dir_close(dir); + + return g_strdup(_("Laptop")); + } + + g_free(contents); + } + } + + g_dir_close(dir); + } + + /* FIXME: check if batteries are found using /proc/apm */ + + /* FIXME: use dmidecode if available to get chassis type */ + + return g_strdup(_("Unknown physical machine type")); +} + /* Table based off imvirt by Thomas Liske <liske@ibh.de> Copyright (c) 2008 IBH IT-Service GmbH under GPLv2. */ -gchar *computer_get_virtualization() +gchar *computer_get_virtualization(void) { gboolean found = FALSE; gint i, j; @@ -324,18 +425,18 @@ gchar *computer_get_virtualization() { " hypervisor", "Virtual (hypervisor present)"} , { NULL } }; - + DEBUG("Detecting virtual machine"); if (g_file_test("/proc/xen", G_FILE_TEST_EXISTS)) { DEBUG("/proc/xen found; assuming Xen"); return g_strdup("Xen"); } - + for (i = 0; files[i+1]; i++) { gchar buffer[512]; FILE *file; - + if ((file = fopen(files[i], "r"))) { while (!found && fgets(buffer, 512, file)) { for (j = 0; vm_types[j+1].str; j++) { @@ -345,200 +446,191 @@ gchar *computer_get_virtualization() } } } - + fclose(file); - + if (found) { DEBUG("%s found (by reading file %s)", vm_types[j].vmtype, files[i]); return g_strdup(vm_types[j].vmtype); } } - + } - + DEBUG("no virtual machine detected; assuming physical machine"); - - return g_strdup(_("Physical machine")); -} - -gchar *callback_summary() -{ - gchar *processor_name, *alsa_cards; - gchar *input_devices, *printers; - gchar *storage_devices, *summary; - gchar *virt; - - processor_name = module_call_method("devices::getProcessorName"); - alsa_cards = computer_get_alsacards(computer); - input_devices = module_call_method("devices::getInputDevices"); - printers = module_call_method("devices::getPrinters"); - storage_devices = module_call_method("devices::getStorageDevices"); - virt = computer_get_virtualization(); - - summary = g_strdup_printf(_("[$ShellParam$]\n" - "UpdateInterval$Memory=1000\n" - "UpdateInterval$Date/Time=1000\n" - "#ReloadInterval=5000\n" - "[Computer]\n" - "Processor=%s\n" - "Memory=...\n" - "Machine Type=%s\n" - "Operating System=%s\n" - "User Name=%s\n" - "Date/Time=...\n" - "[Display]\n" - "Resolution=%dx%d pixels\n" - "OpenGL Renderer=%s\n" - "X11 Vendor=%s\n" - "\n%s\n" - "[Input Devices]\n%s\n" - "\n%s\n" - "\n%s\n"), - processor_name, - virt, - computer->os->distro, - computer->os->username, - computer->display->width, - computer->display->height, - computer->display->ogl_renderer, - computer->display->vendor, - alsa_cards, - input_devices, printers, storage_devices); - - g_free(processor_name); - g_free(alsa_cards); - g_free(input_devices); - g_free(printers); - g_free(storage_devices); - g_free(virt); - - return summary; -} - -gchar *callback_os() -{ - return g_strdup_printf(_("[$ShellParam$]\n" - "UpdateInterval$Uptime=10000\n" - "UpdateInterval$Load Average=1000\n" - "UpdateInterval$Available entropy in /dev/random=1000\n" - "[Version]\n" - "Kernel=%s\n" - "Version=%s\n" - "C Library=%s\n" - "Distribution=%s\n" - "[Current Session]\n" - "Computer Name=%s\n" - "User Name=%s\n" - "#Language=%s\n" - "Home Directory=%s\n" - "Desktop Environment=%s\n" - "[Misc]\n" - "Uptime=...\n" - "Load Average=...\n" - "Available entropy in /dev/random=..."), - computer->os->kernel, - computer->os->kernel_version, - computer->os->libc, - computer->os->distro, - computer->os->hostname, - computer->os->username, - computer->os->language, - computer->os->homedir, - computer->os->desktop); -} - -gchar *callback_modules() -{ - return g_strdup_printf(_("[Loaded Modules]\n" - "%s" - "[$ShellParam$]\n" - "ViewType=1\n" - "ColumnTitle$TextValue=Name\n" - "ColumnTitle$Value=Description\n" - "ShowColumnHeaders=true\n"), module_list); -} - -gchar *callback_boots() -{ - return g_strdup_printf(_("[$ShellParam$]\n" - "ColumnTitle$TextValue=Date & Time\n" - "ColumnTitle$Value=Kernel Version\n" - "ShowColumnHeaders=true\n" - "\n" - "%s"), computer->os->boots); -} - -gchar *callback_locales() -{ - return g_strdup_printf(_("[$ShellParam$]\n" - "ViewType=1\n" - "ColumnTitle$TextValue=Language Code\n" - "ColumnTitle$Value=Name\n" - "ShowColumnHeaders=true\n" - "[Available Languages]\n" - "%s"), computer->os->languages); -} - -gchar *callback_fs() -{ - return g_strdup_printf(_("[$ShellParam$]\n" - "ViewType=4\n" - "ReloadInterval=5000\n" - "Zebra=1\n" - "NormalizePercentage=false\n" - "ColumnTitle$Extra1=Mount Point\n" - "ColumnTitle$Progress=Usage\n" - "ColumnTitle$TextValue=Device\n" - "ShowColumnHeaders=true\n" - "[Mounted File Systems]\n%s\n"), fs_list); -} - -gchar *callback_display() -{ - return g_strdup_printf(_("[Display]\n" - "Resolution=%dx%d pixels\n" - "Vendor=%s\n" - "Version=%s\n" - "[Monitors]\n" - "%s" - "[Extensions]\n" - "%s" - "[OpenGL]\n" - "Vendor=%s\n" - "Renderer=%s\n" - "Version=%s\n" - "Direct Rendering=%s\n"), - computer->display->width, - computer->display->height, - computer->display->vendor, - computer->display->version, - computer->display->monitors, - computer->display->extensions, - computer->display->ogl_vendor, - computer->display->ogl_renderer, - computer->display->ogl_version, - computer->display->dri ? _("Y_es") : _("No")); -} - -gchar *callback_users() -{ - return g_strdup_printf("[$ShellParam$]\n" - "ReloadInterval=10000\n" - "ViewType=1\n" - "[Users]\n" - "%s\n", users); -} - -gchar *callback_groups() -{ - return g_strdup_printf(_("[$ShellParam$]\n" - "ReloadInterval=10000\n" - "ColumnTitle$TextValue=Name\n" - "ColumnTitle$Value=Group ID\n" - "ShowColumnHeaders=true\n" - "[Groups]\n" - "%s\n"), groups); + + return detect_machine_type(); +} + +gchar *callback_summary(void) +{ + struct Info *info = info_new(); + + info_add_group(info, _("Computer"), + info_field_printf(_("Processor"), "%s", + module_call_method("devices::getProcessorName")), + info_field_update(_("Memory"), 1000), + info_field_printf(_("Machine Type"), "%s", + computer_get_virtualization()), + info_field(_("Operating System"), computer->os->distro), + info_field(_("User Name"), computer->os->username), + info_field_update(_("Date/Time"), 1000), + info_field_last()); + + info_add_group(info, _("Display"), + info_field_printf(_("Resolution"), _(/* label for resolution */ "%dx%d pixels"), + computer->display->width, computer->display->height), + info_field(_("OpenGL Renderer"), computer->display->ogl_renderer), + info_field(_("X11 Vendor"), computer->display->vendor), + info_field_last()); + + info_add_computed_group(info, _("Audio Devices"), + idle_free(computer_get_alsacards(computer))); + info_add_computed_group(info, _("Input Devices"), + idle_free(module_call_method("devices::getInputDevices"))); + info_add_computed_group(info, _("Printers"), + idle_free(module_call_method("devices::getPrinters"))); + info_add_computed_group(info, _("Storage"), + idle_free(module_call_method("devices::getStorageDevices"))); + + return info_flatten(info); +} + +gchar *callback_os(void) +{ + struct Info *info = info_new(); + + info_add_group(info, _("Version"), + info_field(_("Kernel"), computer->os->kernel), + info_field(_("Version"), computer->os->kernel_version), + info_field(_("C Library"), computer->os->libc), + info_field(_("Distribution"), computer->os->distro), + info_field_last()); + + info_add_group(info, _("Current Session"), + info_field(_("Computer Name"), computer->os->hostname), + info_field(_("User Name"), computer->os->username), + info_field(_("Language"), computer->os->language), + info_field(_("Home Directory"), computer->os->homedir), + info_field_last()); + + info_add_group(info, _("Misc"), + info_field_update(_("Uptime"), 1000), + info_field_update(_("Load Average"), 10000), + info_field_update(_("Available entropy in /dev/random"), 1000), + info_field_last()); + + return info_flatten(info); +} + +gchar *callback_modules(void) +{ + struct Info *info = info_new(); + + info_add_computed_group(info, _("Loaded Modules"), module_list); + + info_set_column_title(info, "TextValue", _("Name")); + info_set_column_title(info, "Value", _("Description")); + info_set_column_headers_visible(info, TRUE); + info_set_view_type(info, SHELL_VIEW_DUAL); + + return info_flatten(info); +} + +gchar *callback_boots(void) +{ + struct Info *info = info_new(); + + info_add_computed_group(info, _("Boots"), computer->os->boots); + + info_set_column_title(info, "TextValue", _("Date & Time")); + info_set_column_title(info, "Value", _("Kernel Version")); + info_set_column_headers_visible(info, TRUE); + + return info_flatten(info); +} + +gchar *callback_locales(void) +{ + struct Info *info = info_new(); + + info_add_computed_group(info, _("Available Languages"), computer->os->languages); + + info_set_column_title(info, "TextValue", _("Language Code")); + info_set_column_title(info, "Value", _("Name")); + info_set_view_type(info, SHELL_VIEW_DUAL); + info_set_column_headers_visible(info, TRUE); + + return info_flatten(info); +} + +gchar *callback_fs(void) +{ + struct Info *info = info_new(); + + info_add_computed_group(info, _("Mounted File Systems"), fs_list); + + info_set_column_title(info, "Extra1", _("Mount Point")); + info_set_column_title(info, "Progress", _("Usage")); + info_set_column_title(info, "TextValue", _("Device")); + info_set_column_headers_visible(info, TRUE); + info_set_view_type(info, SHELL_VIEW_PROGRESS_DUAL); + info_set_zebra_visible(info, TRUE); + info_set_normalize_percentage(info, FALSE); + + return info_flatten(info); +} + +gchar *callback_display(void) +{ + struct Info *info = info_new(); + + info_add_group(info, _("Display"), + info_field_printf(_("Resolution"), _(/* resolution WxH unit */ "%dx%d pixels"), + computer->display->width, computer->display->height), + info_field(_("Vendor"), computer->display->vendor), + info_field(_("Version"), computer->display->version), + info_field_last()); + + info_add_computed_group(info, _("Monitors"), computer->display->monitors); + + info_add_group(info, _("OpenGL"), + info_field(_("Vendor"), computer->display->ogl_vendor), + info_field(_("Renderer"), computer->display->ogl_renderer), + info_field(_("Version"), computer->display->ogl_version), + info_field(_("Direct Rendering"), + computer->display->dri ? _("Yes") : _("No")), + info_field_last()); + + info_add_computed_group(info, _("Extensions"), computer->display->extensions); + + return info_flatten(info); +} + +gchar *callback_users(void) +{ + struct Info *info = info_new(); + + info_add_computed_group(info, _("Users"), users); + info_set_view_type(info, SHELL_VIEW_DUAL); + info_set_reload_interval(info, 10000); + + return info_flatten(info); +} + +gchar *callback_groups(void) +{ + struct Info *info = info_new(); + + info_add_computed_group(info, _("Group"), groups); + + info_set_column_title(info, "TextValue", _("Name")); + info_set_column_title(info, "Value", _("Group ID")); + info_set_column_headers_visible(info, TRUE); + info_set_reload_interval(info, 10000); + + return info_flatten(info); } gchar *get_os_kernel(void) @@ -569,16 +661,16 @@ gchar *get_display_summary(void) gchar *get_kernel_module_description(gchar *module) { gchar *description; - + if (!_module_hash_table) { scan_modules(FALSE); } - + description = g_hash_table_lookup(_module_hash_table, module); if (!description) { return NULL; } - + return g_strdup(description); } @@ -587,19 +679,19 @@ gchar *get_audio_cards(void) if (!computer->alsa) { computer->alsa = computer_get_alsainfo(); } - + return computer_get_alsacards(computer); } ShellModuleMethod *hi_exported_methods(void) { static ShellModuleMethod m[] = { - {"getOSKernel", get_os_kernel}, - {"getOS", get_os}, - {"getDisplaySummary", get_display_summary}, - {"getAudioCards", get_audio_cards}, - {"getKernelModuleDescription", get_kernel_module_description}, - {NULL} + {"getOSKernel", get_os_kernel}, + {"getOS", get_os}, + {"getDisplaySummary", get_display_summary}, + {"getAudioCards", get_audio_cards}, + {"getKernelModuleDescription", get_kernel_module_description}, + {NULL} }; return m; @@ -629,30 +721,34 @@ gchar **hi_module_get_dependencies(void) gchar *hi_module_get_summary(void) { - return g_strdup("[Operating System]\n" + return g_strdup_printf("[%s]\n" "Icon=os.png\n" "Method=computer::getOS\n" - "[CPU]\n" + "[%s]\n" "Icon=processor.png\n" - "Method=devices::getProcessorName\n" - "[RAM]\n" + "Method=devices::getProcessorNameAndDesc\n" + "[%s]\n" "Icon=memory.png\n" "Method=devices::getMemoryTotal\n" - "[Motherboard]\n" + "[%s]\n" "Icon=module.png\n" "Method=devices::getMotherboard\n" - "[Graphics]\n" + "[%s]\n" "Icon=monitor.png\n" "Method=computer::getDisplaySummary\n" - "[Storage]\n" + "[%s]\n" "Icon=hdd.png\n" "Method=devices::getStorageDevices\n" - "[Printers]\n" + "[%s]\n" "Icon=printer.png\n" "Method=devices::getPrinters\n" - "[Audio]\n" + "[%s]\n" "Icon=audio.png\n" - "Method=computer::getAudioCards\n"); + "Method=computer::getAudioCards\n", + _("Operating System"), + _("CPU"), _("RAM"), _("Motherboard"), _("Graphics"), + _("Storage"), _("Printers"), _("Audio") + ); } void hi_module_deinit(void) @@ -672,7 +768,7 @@ void hi_module_deinit(void) g_free(computer->os->boots); g_free(computer->os); } - + if (computer->display) { g_free(computer->display->ogl_vendor); g_free(computer->display->ogl_renderer); @@ -684,15 +780,15 @@ void hi_module_deinit(void) g_free(computer->display->monitors); g_free(computer->display); } - + if (computer->alsa) { g_slist_free(computer->alsa->cards); g_free(computer->alsa); } - + g_free(computer->date_time); g_free(computer); - + moreinfo_del_with_prefix("COMP"); } @@ -704,11 +800,11 @@ void hi_module_init(void) ModuleAbout *hi_module_get_about(void) { static ModuleAbout ma[] = { - { - .author = "Leandro A. F. Pereira", - .description = N_("Gathers high-level computer information"), - .version = VERSION, - .license = "GNU GPL version 2"} + { + .author = "Leandro A. F. Pereira", + .description = N_("Gathers high-level computer information"), + .version = VERSION, + .license = "GNU GPL version 2"} }; return ma; diff --git a/modules/computer/alsa.c b/modules/computer/alsa.c index e1e7b946..00c1fceb 100644 --- a/modules/computer/alsa.c +++ b/modules/computer/alsa.c @@ -23,16 +23,16 @@ gchar * computer_get_alsacards(Computer * computer) { GSList *p; - gchar *tmp = g_strdup(_("[Audio Devices]\n")); + gchar *tmp = g_strdup_printf("[%s]\n", _("Audio Devices")); gint n = 0; if (computer->alsa) { - for (p = computer->alsa->cards; p; p = p->next) { - AlsaCard *ac = (AlsaCard *) p->data; + for (p = computer->alsa->cards; p; p = p->next) { + AlsaCard *ac = (AlsaCard *) p->data; - tmp = h_strdup_cprintf(_("Audio Adapter#%d=%s\n"), - tmp, ++n, ac->friendly_name); - } + tmp = h_strdup_cprintf("%s#%d=%s\n", tmp, + _("Audio Adapter"), ++n, ac->friendly_name); + } } return tmp; @@ -48,22 +48,22 @@ computer_get_alsainfo(void) cards = fopen("/proc/asound/cards", "r"); if (!cards) - return NULL; + return NULL; ai = g_new0(AlsaInfo, 1); while (fgets(buffer, 128, cards)) { - gchar **tmp; + gchar **tmp; - ac = g_new0(AlsaCard, 1); + ac = g_new0(AlsaCard, 1); - tmp = g_strsplit(buffer, ":", 0); + tmp = g_strsplit(buffer, ":", 0); - ac->friendly_name = g_strdup(tmp[1]); - ai->cards = g_slist_append(ai->cards, ac); + ac->friendly_name = g_strdup(tmp[1]); + ai->cards = g_slist_append(ai->cards, ac); - g_strfreev(tmp); - (void)fgets(buffer, 128, cards); /* skip next line */ + g_strfreev(tmp); + (void)fgets(buffer, 128, cards); /* skip next line */ } fclose(cards); diff --git a/modules/computer/boots.c b/modules/computer/boots.c index 478e89ac..d8a6d32a 100644 --- a/modules/computer/boots.c +++ b/modules/computer/boots.c @@ -30,22 +30,22 @@ scan_boots_real(void) scan_os(FALSE); if (!computer->os->boots) - computer->os->boots = g_strdup(_("[Boots]\n")); + computer->os->boots = g_strdup_printf("[%s]\n", _("Boots")); else return; - + last = popen("last", "r"); if (last) { while (fgets(buffer, 256, last)) { if (strstr(buffer, "system boot")) { gchar **tmp, *buf = buffer; - + strend(buffer, '\n'); - + while (*buf) { if (*buf == ' ' && *(buf + 1) == ' ') { memmove(buf, buf + 1, strlen(buf) + 1); - + buf--; } else { buf++; @@ -53,13 +53,14 @@ scan_boots_real(void) } tmp = g_strsplit(buffer, " ", 0); - computer->os->boots = h_strdup_cprintf("\n%s %s %s %s=%s|%s", - computer->os->boots, - tmp[4], tmp[5], tmp[6], tmp[7], tmp[3], tmp[8]); + computer->os->boots = + h_strdup_cprintf("\n%s %s %s %s=%s|%s", + computer->os->boots, + tmp[4], tmp[5], tmp[6], tmp[7], tmp[3], tmp[8]); g_strfreev(tmp); } } - + pclose(last); } } diff --git a/modules/computer/environment.c b/modules/computer/environment.c index 2a8d235c..dc0fb6f3 100644 --- a/modules/computer/environment.c +++ b/modules/computer/environment.c @@ -23,19 +23,19 @@ static gchar *_env = NULL; void scan_env_var(gboolean reload) { SCAN_START(); - + gchar **envlist; gint i; - + g_free(_env); - - _env = g_strdup(_("[Environment Variables]\n")); + + _env = g_strdup_printf("[%s]\n", _("Environment Variables") ); for (i = 0, envlist = g_listenv(); envlist[i]; i++) { _env = h_strdup_cprintf("%s=%s\n", _env, envlist[i], g_getenv(envlist[i])); } g_strfreev(envlist); - + SCAN_END(); } diff --git a/modules/computer/filesystem.c b/modules/computer/filesystem.c index a7162777..397dc636 100644 --- a/modules/computer/filesystem.c +++ b/modules/computer/filesystem.c @@ -16,8 +16,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Some code from xfce4-mount-plugin, version 0.4.3 - * Copyright (C) 2005 Jean-Baptiste jb_dul@yahoo.com - * Distributed under the terms of GNU GPL 2. + * Copyright (C) 2005 Jean-Baptiste jb_dul@yahoo.com + * Distributed under the terms of GNU GPL 2. */ #include <string.h> @@ -41,62 +41,64 @@ scan_filesystems(void) mtab = fopen("/etc/mtab", "r"); if (!mtab) - return; + return; while (fgets(buf, 1024, mtab)) { - gfloat size, used, avail; - gchar **tmp; - - tmp = g_strsplit(buf, " ", 0); - if (!statfs(tmp[1], &sfs)) { - gfloat use_ratio; - - size = (float) sfs.f_bsize * (float) sfs.f_blocks; - avail = (float) sfs.f_bsize * (float) sfs.f_bavail; - used = size - avail; - - if (size == 0.0f) { - continue; - } - - if (avail == 0.0f) { - use_ratio = 100.0f; - } else { - use_ratio = 100.0f * (used / size); - } - - gchar *strsize = size_human_readable(size), - *stravail = size_human_readable(avail), - *strused = size_human_readable(used); - - gchar *strhash; - - strreplacechr(tmp[0], "#", '_'); - strhash = g_strdup_printf("[%s]\n" - "Filesystem=%s\n" - "Mounted As=%s\n" - "Mount Point=%s\n" - "Size=%s\n" - "Used=%s\n" - "Available=%s\n", - tmp[0], - tmp[2], - strstr(tmp[3], "rw") ? "Read-Write" : - "Read-Only", tmp[1], strsize, strused, - stravail); - gchar *key = g_strdup_printf("FS%d", ++count); - moreinfo_add_with_prefix("COMP", key, strhash); - g_free(key); - - fs_list = h_strdup_cprintf("$FS%d$%s=%.2f %% (%s of %s)|%s\n", - fs_list, - count, tmp[0], use_ratio, stravail, strsize, tmp[1]); - - g_free(strsize); - g_free(stravail); - g_free(strused); - } - g_strfreev(tmp); + gfloat size, used, avail; + gchar **tmp; + + tmp = g_strsplit(buf, " ", 0); + if (!statfs(tmp[1], &sfs)) { + gfloat use_ratio; + + size = (float) sfs.f_bsize * (float) sfs.f_blocks; + avail = (float) sfs.f_bsize * (float) sfs.f_bavail; + used = size - avail; + + if (size == 0.0f) { + continue; + } + + if (avail == 0.0f) { + use_ratio = 100.0f; + } else { + use_ratio = 100.0f * (used / size); + } + + gchar *strsize = size_human_readable(size), + *stravail = size_human_readable(avail), + *strused = size_human_readable(used); + + gchar *strhash; + + strreplacechr(tmp[0], "#", '_'); + strhash = g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n", + tmp[0], /* path */ + _("Filesystem"), tmp[2], + _("Mounted As"), ( strstr(tmp[3], "rw") != NULL) ? _("Read-Write") : _("Read-Only"), + _("Mount Point"), tmp[1], + _("Size"), strsize, + _("Used"), strused, + _("Available"), stravail); + gchar *key = g_strdup_printf("FS%d", ++count); + moreinfo_add_with_prefix("COMP", key, strhash); + g_free(key); + + fs_list = h_strdup_cprintf("$FS%d$%s=%.2f %% (%s of %s)|%s\n", + fs_list, + count, tmp[0], use_ratio, stravail, strsize, tmp[1]); + + g_free(strsize); + g_free(stravail); + g_free(strused); + } + g_strfreev(tmp); } fclose(mtab); diff --git a/modules/computer/languages.c b/modules/computer/languages.c index 5877c41c..d4681839 100644 --- a/modules/computer/languages.c +++ b/modules/computer/languages.c @@ -20,6 +20,7 @@ #include "hardinfo.h" #include "computer.h" +#include "cpu_util.h" /* for UNKIFNULL() */ void scan_languages(OperatingSystem * os) @@ -67,43 +68,64 @@ scan_languages(OperatingSystem * os) g_strfreev(tmp); } else { - gchar *currlocale; - - retval = h_strdup_cprintf("$%s$%s=%s\n", retval, name, name, title); - -#define FIELD(f) f ? f : "(Unknown)" - currlocale = g_strdup_printf("[Locale Information]\n" - "Name=%s (%s)\n" - "Source=%s\n" - "Address=%s\n" - "Email=%s\n" - "Language=%s\n" - "Territory=%s\n" - "Revision=%s\n" - "Date=%s\n" - "Codeset=%s\n", - name, FIELD(title), - FIELD(source), FIELD(address), - FIELD(email), FIELD(language), - FIELD(territory), FIELD(revision), - FIELD(date), FIELD(codeset)); -#undef FIELD - - moreinfo_add_with_prefix("COMP", name, currlocale); - - g_free(title); - g_free(source); - g_free(address); - g_free(email); - g_free(language); - g_free(territory); - g_free(revision); - g_free(date); - g_free(codeset); - - title = source = address = email = language = territory = \ - revision = date = codeset = NULL; - } + gchar *currlocale; + + retval = h_strdup_cprintf("$%s$%s=%s\n", retval, name, name, title); + + UNKIFNULL(title); + UNKIFNULL(source); + UNKIFNULL(address); + UNKIFNULL(email); + UNKIFNULL(language); + UNKIFNULL(territory); + UNKIFNULL(revision); + UNKIFNULL(date); + UNKIFNULL(codeset); + + /* values may have & */ + title = hardinfo_clean_value(title, 1); + source = hardinfo_clean_value(source, 1); + address = hardinfo_clean_value(address, 1); + email = hardinfo_clean_value(email, 1); + language = hardinfo_clean_value(language, 1); + territory = hardinfo_clean_value(territory, 1); + + currlocale = g_strdup_printf("[%s]\n" + /* Name */ "%s=%s (%s)\n" + /* Source */ "%s=%s\n" + /* Address */ "%s=%s\n" + /* Email */ "%s=%s\n" + /* Language */ "%s=%s\n" + /* Territory */"%s=%s\n" + /* Revision */ "%s=%s\n" + /* Date */ "%s=%s\n" + /* Codeset */ "%s=%s\n", + _("Locale Information"), + _("Name"), name, title, + _("Source"), source, + _("Address"), address, + _("E-mail"), email, + _("Language"), language, + _("Territory"), territory, + _("Revision"), revision, + _("Date"), date, + _("Codeset"), codeset ); + + moreinfo_add_with_prefix("COMP", name, currlocale); + + g_free(title); + g_free(source); + g_free(address); + g_free(email); + g_free(language); + g_free(territory); + g_free(revision); + g_free(date); + g_free(codeset); + + title = source = address = email = language = territory = \ + revision = date = codeset = NULL; + } } fclose(locale); diff --git a/modules/computer/memory.c b/modules/computer/memory.c index 3d320e8a..dc8599c2 100644 --- a/modules/computer/memory.c +++ b/modules/computer/memory.c @@ -28,23 +28,26 @@ computer_get_memory(void) procmem = fopen("/proc/meminfo", "r"); if (!procmem) - return NULL; + return NULL; mi = g_new0(MemoryInfo, 1); while (fgets(buffer, 128, procmem)) { - gchar **tmp = g_strsplit(buffer, ":", 2); - - tmp[0] = g_strstrip(tmp[0]); - tmp[1] = g_strstrip(tmp[1]); - - get_int("MemTotal", mi->total); - get_int("MemFree", mi->free); - get_int("Cached", mi->cached); - - g_strfreev(tmp); + gchar **tmp = g_strsplit(buffer, ":", 2); + if (tmp[1] == NULL) { + g_strfreev(tmp); + continue; + } + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); + + get_int("MemTotal", mi->total); + get_int("MemFree", mi->free); + get_int("Cached", mi->cached); + + g_strfreev(tmp); } fclose(procmem); - + mi->used = mi->total - mi->free; mi->total /= 1000; diff --git a/modules/computer/modules.c b/modules/computer/modules.c index bbc05f42..df876e3a 100644 --- a/modules/computer/modules.c +++ b/modules/computer/modules.c @@ -20,6 +20,7 @@ #include "hardinfo.h" #include "computer.h" +#include "cpu_util.h" /* for STRIFNULL() */ #define GET_STR(field_name,ptr) \ if (!ptr && strstr(tmp[0], field_name)) { \ @@ -42,7 +43,7 @@ scan_modules_do(void) } g_free(module_list); - + module_list = NULL; moreinfo_del_with_prefix("COMP:MOD"); @@ -51,7 +52,7 @@ scan_modules_do(void) return; lsmod = popen(lsmod_path, "r"); if (!lsmod) { - g_free(lsmod_path); + g_free(lsmod_path); return; } @@ -99,7 +100,7 @@ scan_modules_do(void) remove_quotes(license); */ /* old modutils displays <none> when there's no value for a - given field; this is not desirable in the module name + given field; this is not desirable in the module name display, so change it to an empty string */ if (description && g_str_equal(description, "<none>")) { g_free(description); @@ -121,38 +122,45 @@ scan_modules_do(void) modname, description ? description : ""); -#define NONE_IF_NULL(var) (var) ? (var) : "N/A" - - /* create the module information string */ - strmodule = g_strdup_printf("[Module Information]\n" - "Path=%s\n" - "Used Memory=%.2fKiB\n" - "[Description]\n" - "Name=%s\n" - "Description=%s\n" - "Version Magic=%s\n" - "[Copyright]\n" - "Author=%s\n" - "License=%s\n", - NONE_IF_NULL(filename), - memory / 1024.0, - modname, - NONE_IF_NULL(description), - NONE_IF_NULL(vermagic), - NONE_IF_NULL(author), - NONE_IF_NULL(license)); - - /* if there are dependencies, append them to that string */ - if (deps && strlen(deps)) { - gchar **tmp = g_strsplit(deps, ",", 0); - - strmodule = h_strconcat(strmodule, - "\n[Dependencies]\n", - g_strjoinv("=\n", tmp), - "=\n", NULL); - g_strfreev(tmp); - g_free(deps); - } + STRIFNULL(filename, _("(Not available)") ); + STRIFNULL(description, _("(Not available)") ); + STRIFNULL(vermagic, _("(Not available)") ); + STRIFNULL(author, _("(Not available)") ); + STRIFNULL(license, _("(Not available)") ); + + /* create the module information string */ + strmodule = g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%.2f %s\n" + "[%s]\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "[%s]\n" + "%s=%s\n" + "%s=%s\n", + _("Module Information"), + _("Path"), filename, + _("Used Memory"), memory / 1024.0, _("KiB"), + _("Description"), + _("Name"), modname, + _("Description"), description, + _("Version Magic"), vermagic, + _("Copyright"), + _("Author"), author, + _("License"), license ); + + /* if there are dependencies, append them to that string */ + if (deps && strlen(deps)) { + gchar **tmp = g_strsplit(deps, ",", 0); + + strmodule = h_strconcat(strmodule, + "\n[", _("Dependencies"), "]\n", + g_strjoinv("=\n", tmp), + "=\n", NULL); + g_strfreev(tmp); + g_free(deps); + } moreinfo_add_with_prefix("COMP", hashkey, strmodule); g_free(hashkey); @@ -164,6 +172,6 @@ scan_modules_do(void) g_free(filename); } pclose(lsmod); - + g_free(lsmod_path); } diff --git a/modules/computer/os.c b/modules/computer/os.c index 3caf6c26..a8886f64 100644 --- a/modules/computer/os.c +++ b/modules/computer/os.c @@ -16,6 +16,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include <gdk/gdkx.h> #include <string.h> #include <sys/utsname.h> #include "hardinfo.h" @@ -24,219 +25,350 @@ static gchar * get_libc_version(void) { - FILE *libc; - gchar buf[256], *tmp, *p; - char *libc_paths[] = { - "/lib/ld-uClibc.so.0", "/lib64/ld-uClibc.so.0", - "/lib/libc.so.6", "/lib64/libc.so.6" - }; - int i; - - for (i=0; i < 4; i++) { - if (g_file_test(libc_paths[i], G_FILE_TEST_EXISTS)) break; - } - switch (i) { - case 0: case 1: return g_strdup("uClibc Library"); - case 2: case 3: break; // gnu libc, continue processing - default: goto err; - } - - libc = popen(libc_paths[i], "r"); - if (!libc) goto err; - - (void)fgets(buf, 256, libc); - if (pclose(libc)) goto err; - - tmp = strstr(buf, "version "); - if (!tmp) goto err; - - p = strchr(tmp, ','); - if (p) *p = '\0'; - else goto err; - - return g_strdup_printf(_("GNU C Library version %s (%sstable)"), - strchr(tmp, ' ') + 1, - strstr(buf, " stable ") ? "" : _("un")); - err: + static const struct { + const char *test_cmd; + const char *match_str; + const char *lib_name; + gboolean try_ver_str; + gboolean use_stderr; + } libs[] = { + { "ldd --version", "GLIBC", N_("GNU C Library"), TRUE, FALSE}, + { "ldd --version", "GNU libc", N_("GNU C Library"), TRUE, FALSE}, + { "ldconfig -V", "GLIBC", N_("GNU C Library"), TRUE, FALSE}, + { "ldconfig -V", "GNU libc", N_("GNU C Library"), TRUE, FALSE}, + { "ldconfig -v", "uClibc", N_("uClibc or uClibc-ng"), FALSE, FALSE}, + { "diet", "diet version", N_("diet libc"), TRUE, TRUE}, + { NULL } + }; + int i; + + for (i = 0; libs[i].test_cmd; i++) { + gboolean spawned; + gchar *out, *err, *p; + + spawned = g_spawn_command_line_sync(libs[i].test_cmd, + &out, &err, NULL, NULL); + if (!spawned) + continue; + + if (libs[i].use_stderr) { + p = strend(idle_free(err), '\n'); + g_free(out); + } else { + p = strend(idle_free(out), '\n'); + g_free(err); + } + + if (!p || !strstr(p, libs[i].match_str)) + continue; + + if (libs[i].try_ver_str) { + /* skip the first word, likely "ldconfig" or name of utility */ + const gchar *ver_str = strchr(p, ' '); + + if (ver_str) { + return g_strdup_printf("%s / %s", _(libs[i].lib_name), + ver_str + 1); + } + } + + return g_strdup(_(libs[i].lib_name)); + } + return g_strdup(_("Unknown")); } -#include <gdk/gdkx.h> +static gchar *detect_kde_version(void) +{ + const gchar *cmd; + const gchar *tmp = g_getenv("KDE_SESSION_VERSION"); + gchar *out; + gboolean spawned; + + if (tmp && tmp[0] == '4') { + cmd = "kwin --version"; + } else { + cmd = "kcontrol --version"; + } + + spawned = g_spawn_command_line_sync(cmd, &out, NULL, NULL, NULL); + if (!spawned) + return NULL; + + tmp = strstr(idle_free(out), "KDE: "); + return tmp ? g_strdup(tmp + strlen("KDE: ")) : NULL; +} + +static gchar * +detect_gnome_version(void) +{ + gchar *tmp; + gchar *out; + gboolean spawned; + + spawned = g_spawn_command_line_sync( + "gnome-shell --version", &out, NULL, NULL, NULL); + if (spawned) { + tmp = strstr(idle_free(out), _("GNOME Shell ")); + + if (tmp) { + tmp += strlen(_("GNOME Shell ")); + return g_strdup_printf("GNOME %s", strend(tmp, '\n')); + } + } + + spawned = g_spawn_command_line_sync( + "gnome-about --gnome-version", &out, NULL, NULL, NULL); + if (spawned) { + tmp = strstr(idle_free(out), _("Version: ")); + + if (tmp) { + tmp += strlen(_("Version: ")); + return g_strdup_printf("GNOME %s", strend(tmp, '\n')); + } + } + + return NULL; +} -void -detect_desktop_environment(OperatingSystem * os) +static gchar * +detect_window_manager(void) { - const gchar *tmp = g_getenv("GNOME_DESKTOP_SESSION_ID"); - FILE *version; - char vers[16]; + GdkScreen *screen = gdk_screen_get_default(); + const gchar *windowman; + const gchar *curdesktop; + + if (!screen || !GDK_IS_SCREEN(screen)) + return NULL; + + windowman = gdk_x11_screen_get_window_manager_name(screen); + if (g_str_equal(windowman, "Xfwm4")) + return g_strdup("XFCE 4"); + + curdesktop = g_getenv("XDG_CURRENT_DESKTOP"); + if (curdesktop) { + const gchar *desksession = g_getenv("DESKTOP_SESSION"); + + if (desksession && !g_str_equal(curdesktop, desksession)) + return g_strdup(desksession); + } + + return g_strdup_printf(_("Unknown (Window Manager: %s)"), windowman); +} + +static gchar * +desktop_with_session_type(const gchar *desktop_env) +{ + const char *tmp; + + tmp = g_getenv("XDG_SESSION_TYPE"); if (tmp) { - /* FIXME: this might not be true, as the gnome-panel in path - may not be the one that's running. - see where the user's running panel is and run *that* to - obtain the version. */ - version = popen("gnome-about --gnome-version", "r"); - if (version) { - (void)fscanf(version, _("Version: %s"), vers); - if (pclose(version)) - goto unknown; - } else { - goto unknown; - } - - os->desktop = g_strdup_printf("GNOME %s", vers); - } else if (g_getenv("KDE_FULL_SESSION")) { - - if (g_getenv("KDE_SESSION_VERSION") && strstr(g_getenv("KDE_SESSION_VERSION"),(gchar *)"4")) { - version = popen("kwin --version", "r"); - } else { - version = popen("kcontrol --version", "r"); - } - - if (version) { - char buf[32]; - - (void)fgets(buf, 32, version); - - (void)fscanf(version, "KDE: %s", vers); - if (pclose(version)) - goto unknown; - } else { - goto unknown; - } - - os->desktop = g_strdup_printf("KDE %s", vers); - } else { - unknown: - os->desktop = NULL; - - if (!g_getenv("DISPLAY")) { - os->desktop = g_strdup(_("Terminal")); - } else { - GdkScreen *screen = gdk_screen_get_default(); - - if (screen && GDK_IS_SCREEN(screen)) { - const gchar *windowman; - - windowman = gdk_x11_screen_get_window_manager_name(screen); - if (g_str_equal(windowman, "Xfwm4")) { - /* FIXME: check if xprop -root | grep XFCE_DESKTOP_WINDOW is defined */ - os->desktop = g_strdup("XFCE 4"); - } else if ((tmp = g_getenv("XDG_CURRENT_DESKTOP"))) { - os->desktop = g_strdup(tmp); - if ((tmp = g_getenv("DESKTOP_SESSION")) && !g_str_equal(os->desktop, tmp)) { - g_free(os->desktop); - os->desktop = g_strdup(tmp); - } - } - - if (!os->desktop) { - os->desktop = g_strdup_printf(_("Unknown (Window Manager: %s)"), - windowman); - } - } else { - os->desktop = g_strdup(_("Unknown")); - } - } + if (!g_str_equal(tmp, "unspecified")) + return g_strdup_printf(_(/*/{desktop environment} on {session type}*/ "%s on %s"), desktop_env, tmp); + } + + return g_strdup(desktop_env); +} + +static gchar * +detect_xdg_environment(const gchar *env_var) +{ + const gchar *tmp; + + tmp = g_getenv(env_var); + if (!tmp) + return NULL; + + if (g_str_equal(tmp, "GNOME") || g_str_equal(tmp, "gnome")) { + gchar *maybe_gnome = detect_gnome_version(); + + if (maybe_gnome) + return maybe_gnome; } + if (g_str_equal(tmp, "KDE") || g_str_equal(tmp, "kde")) { + gchar *maybe_kde = detect_kde_version(); + + if (maybe_kde) + return maybe_kde; + } + + return g_strdup(tmp); +} + +static gchar * +detect_desktop_environment(void) +{ + const gchar *tmp; + gchar *windowman; + + windowman = detect_xdg_environment("XDG_CURRENT_DESKTOP"); + if (windowman) + return windowman; + windowman = detect_xdg_environment("XDG_SESSION_DESKTOP"); + if (windowman) + return windowman; + + tmp = g_getenv("KDE_FULL_SESSION"); + if (tmp) { + gchar *maybe_kde = detect_kde_version(); + + if (maybe_kde) + return maybe_kde; + } + tmp = g_getenv("GNOME_DESKTOP_SESSION_ID"); + if (tmp) { + gchar *maybe_gnome = detect_gnome_version(); + + if (maybe_gnome) + return maybe_gnome; + } + + windowman = detect_window_manager(); + if (windowman) + return windowman; + + if (!g_getenv("DISPLAY")) + return g_strdup(_("Terminal")); + + return g_strdup(_("Unknown")); } gchar * computer_get_entropy_avail(void) { + gchar tab_entropy_fstr[][32] = { + N_(/*/bits of entropy for rng (0)*/ "(None or not available)"), + N_(/*/bits of entropy for rng (low/poor value)*/ "%d bits (low)"), + N_(/*/bits of entropy for rng (medium value)*/ "%d bits (medium)"), + N_(/*/bits of entropy for rng (high/good value)*/ "%d bits (healthy)") + }; gint bits = h_sysfs_read_int("/proc/sys/kernel/random", "entropy_avail"); - if (bits < 200) - return g_strdup_printf("%d bits (low)", bits); - if (bits < 3000) - return g_strdup_printf("%d bits (medium)", bits); - return g_strdup_printf("%d bits (healthy)", bits); + if (bits > 3000) return g_strdup_printf(_(tab_entropy_fstr[3]), bits); + if (bits > 200) return g_strdup_printf(_(tab_entropy_fstr[2]), bits); + if (bits > 1) return g_strdup_printf(_(tab_entropy_fstr[1]), bits); + return g_strdup_printf(_(tab_entropy_fstr[0]), bits); } -OperatingSystem * -computer_get_os(void) +gchar * +computer_get_language(void) { - struct utsname utsbuf; - OperatingSystem *os; + gchar *tab_lang_env[] = + { "LANGUAGE", "LANG", "LC_ALL", "LC_MESSAGES", NULL }; + gchar *lc = NULL, *env = NULL, *ret = NULL; + gint i = 0; + + lc = setlocale(LC_ALL, NULL); + + while (tab_lang_env[i] != NULL) { + env = g_strdup( g_getenv(tab_lang_env[i]) ); + if (env != NULL) break; + i++; + } + + if (env != NULL) + if (lc != NULL) + ret = g_strdup_printf("%s (%s)", lc, env); + else + ret = g_strdup_printf("%s", env); + else + if (lc != NULL) + ret = g_strdup_printf("%s", lc); + + if (ret == NULL) + ret = g_strdup( _("(Unknown)") ); + + return ret; +} + +static gchar * +detect_distro(void) +{ + static const struct { + const gchar *file; + const gchar *codename; + const gchar *override; + } distro_db[] = { +#define DB_PREFIX "/etc/" + { DB_PREFIX "arch-release", "arch", "Arch Linux" }, + { DB_PREFIX "fatdog-version", "fatdog" }, + { DB_PREFIX "debian_version", "deb" }, + { DB_PREFIX "slackware-version", "slk" }, + { DB_PREFIX "mandrake-release", "mdk" }, + { DB_PREFIX "mandriva-release", "mdv" }, + { DB_PREFIX "fedora-release", "fdra" }, + { DB_PREFIX "coas", "coas" }, + { DB_PREFIX "environment.corel", "corel"}, + { DB_PREFIX "gentoo-release", "gnt" }, + { DB_PREFIX "conectiva-release", "cnc" }, + { DB_PREFIX "versão-conectiva", "cnc" }, + { DB_PREFIX "turbolinux-release", "tl" }, + { DB_PREFIX "yellowdog-release", "yd" }, + { DB_PREFIX "sabayon-release", "sbn" }, + { DB_PREFIX "arch-release", "arch" }, + { DB_PREFIX "enlisy-release", "enlsy" }, + { DB_PREFIX "SuSE-release", "suse" }, + { DB_PREFIX "sun-release", "sun" }, + { DB_PREFIX "zenwalk-version", "zen" }, + { DB_PREFIX "DISTRO_SPECS", "ppy", "Puppy Linux" }, + { DB_PREFIX "puppyversion", "ppy", "Puppy Linux" }, + { DB_PREFIX "distro-release", "fl" }, + { DB_PREFIX "vine-release", "vine" }, + { DB_PREFIX "PartedMagic-version", "pmag" }, + /* + * RedHat must be the *last* one to be checked, since + * some distros (like Mandrake) includes a redhat-relase + * file too. + */ + { DB_PREFIX "redhat-release", "rh" }, +#undef DB_PREFIX + { NULL, NULL } + }; + gchar *contents; int i; - os = g_new0(OperatingSystem, 1); + if (g_spawn_command_line_sync("lsb_release -d", &contents, NULL, NULL, NULL)) { + gchar *tmp = strstr(idle_free(contents), "Description:\t"); - /* Attempt to get the Distribution name; try using /etc/lsb-release first, - then doing the legacy method (checking for /etc/$DISTRO-release files) */ - if (g_file_test("/etc/lsb-release", G_FILE_TEST_EXISTS)) { - FILE *release; - gchar buffer[128]; + if (tmp) + return g_strdup(tmp + strlen("Description:\t")); + } - release = popen("lsb_release -d", "r"); - if (release) { - (void)fgets(buffer, 128, release); - pclose(release); + for (i = 0; distro_db[i].file; i++) { + if (!g_file_get_contents(distro_db[i].file, &contents, NULL, NULL)) + continue; - os->distro = buffer; - os->distro = g_strdup(os->distro + strlen("Description:\t")); + if (distro_db[i].override) { + g_free(contents); + return g_strdup(distro_db[i].override); } - } else if (g_file_test("/etc/arch-release", G_FILE_TEST_EXISTS)) { - os->distrocode = g_strdup("arch"); - os->distro = g_strdup("Arch Linux"); - } else { - for (i = 0;; i++) { - if (distro_db[i].file == NULL) { - os->distrocode = g_strdup("unk"); - os->distro = g_strdup(_("Unknown distribution")); - break; - } - if (g_file_test(distro_db[i].file, G_FILE_TEST_EXISTS)) { - FILE *distro_ver; - char buf[128]; - - distro_ver = fopen(distro_db[i].file, "r"); - if (distro_ver) { - (void)fgets(buf, 128, distro_ver); - fclose(distro_ver); - } else { - continue; - } - - buf[strlen(buf) - 1] = 0; - - if (!os->distro) { - /* - * HACK: Some Debian systems doesn't include - * the distribuition name in /etc/debian_release, - * so add them here. - */ - if (!strncmp(distro_db[i].codename, "deb", 3) && - ((buf[0] >= '0' && buf[0] <= '9') || buf[0] != 'D')) { - os->distro = g_strdup_printf - ("Debian GNU/Linux %s", buf); - } else { - os->distro = g_strdup(buf); - } - } - - if (g_str_equal(distro_db[i].codename, "ppy")) { - gchar *tmp; - tmp = g_strdup_printf("Puppy Linux"); - g_free(os->distro); - os->distro = tmp; - } - - if (g_str_equal(distro_db[i].codename, "fatdog")) { - gchar *tmp; - tmp = g_strdup_printf("Fatdog64 [%.10s]", os->distro); - g_free(os->distro); - os->distro = tmp; - } - - os->distrocode = g_strdup(distro_db[i].codename); - - break; - } + if (g_str_equal(distro_db[i].codename, "deb")) { + /* HACK: Some Debian systems doesn't include the distribuition + * name in /etc/debian_release, so add them here. */ + if (isdigit(contents[0]) || contents[0] != 'D') + return g_strdup_printf("Debian GNU/Linux %s", (char*)idle_free(contents)); } + + if (g_str_equal(distro_db[i].codename, "fatdog")) + return g_strdup_printf("Fatdog64 [%.10s]", (char*)idle_free(contents)); + + return contents; } - os->distro = g_strstrip(os->distro); + return g_strdup(_("Unknown")); +} + +OperatingSystem * +computer_get_os(void) +{ + struct utsname utsbuf; + OperatingSystem *os; + int i; + + os = g_new0(OperatingSystem, 1); + + os->distro = g_strstrip(detect_distro()); /* Kernel and hostname info */ uname(&utsbuf); @@ -244,13 +376,16 @@ computer_get_os(void) os->kernel = g_strdup_printf("%s %s (%s)", utsbuf.sysname, utsbuf.release, utsbuf.machine); os->hostname = g_strdup(utsbuf.nodename); - os->language = g_strdup(g_getenv("LC_MESSAGES")); + os->language = computer_get_language(); os->homedir = g_strdup(g_get_home_dir()); os->username = g_strdup_printf("%s (%s)", g_get_user_name(), g_get_real_name()); os->libc = get_libc_version(); scan_languages(os); - detect_desktop_environment(os); + + os->desktop = detect_desktop_environment(); + if (os->desktop) + os->desktop = desktop_with_session_type(idle_free(os->desktop)); os->entropy_avail = computer_get_entropy_avail(); diff --git a/modules/computer/uptime.c b/modules/computer/uptime.c index 8eb563fa..5f0f1942 100644 --- a/modules/computer/uptime.c +++ b/modules/computer/uptime.c @@ -26,11 +26,11 @@ computer_get_uptime(void) gulong minutes; if ((procuptime = fopen("/proc/uptime", "r")) != NULL) { - (void)fscanf(procuptime, "%lu", &minutes); - ui->minutes = minutes / 60; - fclose(procuptime); + (void)fscanf(procuptime, "%lu", &minutes); + ui->minutes = minutes / 60; + fclose(procuptime); } else { - return NULL; + return NULL; } ui->hours = ui->minutes / 60; @@ -45,32 +45,27 @@ gchar * computer_get_formatted_uptime() { UptimeInfo *ui; - gchar *tmp; + const gchar *days_fmt, *hours_fmt, *minutes_fmt; + gchar *full_fmt = NULL, *ret = NULL; ui = computer_get_uptime(); - /* FIXME: Use ngettext */ -#define plural(x) ((x > 1) ? "s" : "") + days_fmt = ngettext("%d day", "%d days", ui->days); + hours_fmt = ngettext("%d hour", "%d hours", ui->hours); + minutes_fmt = ngettext("%d minute", "%d minutes", ui->minutes); if (ui->days < 1) { - if (ui->hours < 1) { - tmp = - g_strdup_printf("%d minute%s", ui->minutes, - plural(ui->minutes)); - } else { - tmp = - g_strdup_printf("%d hour%s, %d minute%s", ui->hours, - plural(ui->hours), ui->minutes, - plural(ui->minutes)); - } + if (ui->hours < 1) { + ret = g_strdup_printf(minutes_fmt, ui->minutes); + } else { + full_fmt = g_strdup_printf("%s %s", hours_fmt, minutes_fmt); + ret = g_strdup_printf(full_fmt, ui->hours, ui->minutes); + } } else { - tmp = - g_strdup_printf("%d day%s, %d hour%s and %d minute%s", - ui->days, plural(ui->days), ui->hours, - plural(ui->hours), ui->minutes, - plural(ui->minutes)); + full_fmt = g_strdup_printf("%s %s %s", days_fmt, hours_fmt, minutes_fmt); + ret = g_strdup_printf(full_fmt, ui->days, ui->hours, ui->minutes); } - + g_free(full_fmt); g_free(ui); - return tmp; + return ret; } diff --git a/modules/computer/users.c b/modules/computer/users.c index e8f891ac..f47320bb 100644 --- a/modules/computer/users.c +++ b/modules/computer/users.c @@ -39,15 +39,16 @@ scan_users_do(void) while (passwd_) { gchar *key = g_strdup_printf("USER%s", passwd_->pw_name); - gchar *val = g_strdup_printf("[User Information]\n" - "User ID=%d\n" - "Group ID=%d\n" - "Home directory=%s\n" - "Default shell=%s\n", - (gint) passwd_->pw_uid, - (gint) passwd_->pw_gid, - passwd_->pw_dir, - passwd_->pw_shell); + gchar *val = g_strdup_printf("[%s]\n" + "%s=%d\n" + "%s=%d\n" + "%s=%s\n" + "%s=%s\n", + _("User Information"), + _("User ID"), (gint) passwd_->pw_uid, + _("Group ID"), (gint) passwd_->pw_gid, + _("Home Directory"), passwd_->pw_dir, + _("Default Shell"), passwd_->pw_shell); moreinfo_add_with_prefix("COMP", key, val); strend(passwd_->pw_gecos, ','); @@ -55,6 +56,6 @@ scan_users_do(void) passwd_ = getpwent(); g_free(key); } - + endpwent(); } diff --git a/modules/devices.c b/modules/devices.c index 87bb8a80..9c7a184d 100644 --- a/modules/devices.c +++ b/modules/devices.c @@ -37,6 +37,7 @@ #include <socket.h> #include "devices.h" +#include "dt_util.h" gchar *callback_processors(); gchar *callback_memory(); @@ -51,6 +52,7 @@ gchar *callback_usb(); gchar *callback_dmi(); gchar *callback_spd(); #endif +gchar *callback_dtree(); gchar *callback_device_resources(); void scan_processors(gboolean reload); @@ -66,6 +68,7 @@ void scan_usb(gboolean reload); void scan_dmi(gboolean reload); void scan_spd(gboolean reload); #endif +void scan_dtree(gboolean reload); void scan_device_resources(gboolean reload); gboolean root_required_for_resources(void); @@ -73,6 +76,7 @@ gboolean root_required_for_resources(void); gchar *hi_more_info(gchar *entry); enum { + ENTRY_DTREE, ENTRY_PROCESSOR, ENTRY_MEMORY, ENTRY_PCI, @@ -100,9 +104,14 @@ static ModuleEntry entries[] = { #if defined(ARCH_x86) || defined(ARCH_x86_64) [ENTRY_DMI] = {N_("DMI"), "computer.png", callback_dmi, scan_dmi, MODULE_FLAG_NONE}, [ENTRY_SPD] = {N_("Memory SPD"), "memory.png", callback_spd, scan_spd, MODULE_FLAG_NONE}, + [ENTRY_DTREE] = {"#"}, +#else + [ENTRY_DMI] = {"#"}, + [ENTRY_SPD] = {"#"}, + [ENTRY_DTREE] = {N_("Device Tree"), "devices.png", callback_dtree, scan_dtree, MODULE_FLAG_NONE}, #endif /* x86 or x86_64 */ [ENTRY_RESOURCES] = {N_("Resources"), "resources.png", callback_device_resources, scan_device_resources, MODULE_FLAG_NONE}, - {NULL} + { NULL } }; static GSList *processors = NULL; @@ -117,21 +126,127 @@ gchar *lginterval = NULL; #include <vendor.h> -gchar *get_processor_name(void) +static gint proc_cmp_model_name(Processor *a, Processor *b) { + return g_strcmp0(a->model_name, b->model_name); +} + +static gint proc_cmp_max_freq(Processor *a, Processor *b) { + if (a->cpu_mhz == b->cpu_mhz) + return 0; + if (a->cpu_mhz > b->cpu_mhz) + return -1; + return 1; +} + +gchar *processor_describe_default(GSList * processors) { - scan_processors(FALSE); + int packs, cores, threads; + const gchar *packs_fmt, *cores_fmt, *threads_fmt; + gchar *ret, *full_fmt; - Processor *p = (Processor *) processors->data; + cpu_procs_cores_threads(&packs, &cores, &threads); - if (g_slist_length(processors) > 1) { - return idle_free(g_strdup_printf("%dx %s", - g_slist_length(processors), - p->model_name)); + /* if topology info was available, else fallback to old method */ + if (cores > 0) { + packs_fmt = ngettext("%d physical processor", "%d physical processors", packs); + cores_fmt = ngettext("%d core", "%d cores", cores); + threads_fmt = ngettext("%d thread", "%d threads", threads); + full_fmt = g_strdup_printf(_(/*/NP procs; NC cores; NT threads*/ "%s; %s; %s"), packs_fmt, cores_fmt, threads_fmt); + ret = g_strdup_printf(full_fmt, packs, cores, threads); + g_free(full_fmt); + return ret; } else { - return p->model_name; + return processor_describe_by_counting_names(processors); + } +} + +gchar *processor_name_default(GSList * processors) +{ + gchar *ret = g_strdup(""); + GSList *tmp, *l; + Processor *p; + gchar *cur_str = NULL; + gint cur_count = 0; + + tmp = g_slist_copy(processors); + tmp = g_slist_sort(tmp, (GCompareFunc)proc_cmp_model_name); + + for (l = tmp; l; l = l->next) { + p = (Processor*)l->data; + if (cur_str == NULL) { + cur_str = p->model_name; + cur_count = 1; + } else { + if(g_strcmp0(cur_str, p->model_name)) { + ret = h_strdup_cprintf("%s%s", ret, strlen(ret) ? "; " : "", cur_str); + cur_str = p->model_name; + cur_count = 1; + } else { + cur_count++; + } + } + } + ret = h_strdup_cprintf("%s%s", ret, strlen(ret) ? "; " : "", cur_str); + g_slist_free(tmp); + return ret; +} + +/* TODO: prefix counts are threads when they should be cores. */ +gchar *processor_describe_by_counting_names(GSList * processors) +{ + gchar *ret = g_strdup(""); + GSList *tmp, *l; + Processor *p; + gchar *cur_str = NULL; + gint cur_count = 0; + + tmp = g_slist_copy(processors); + tmp = g_slist_sort(tmp, (GCompareFunc)proc_cmp_model_name); + + for (l = tmp; l; l = l->next) { + p = (Processor*)l->data; + if (cur_str == NULL) { + cur_str = p->model_name; + cur_count = 1; + } else { + if(g_strcmp0(cur_str, p->model_name)) { + ret = h_strdup_cprintf("%s%dx %s", ret, strlen(ret) ? " + " : "", cur_count, cur_str); + cur_str = p->model_name; + cur_count = 1; + } else { + cur_count++; + } + } } + ret = h_strdup_cprintf("%s%dx %s", ret, strlen(ret) ? " + " : "", cur_count, cur_str); + g_slist_free(tmp); + return ret; +} + +gchar *get_processor_name(void) +{ + scan_processors(FALSE); + return processor_name(processors); +} + +gchar *get_processor_desc(void) +{ + scan_processors(FALSE); + return processor_describe(processors); +} + +gchar *get_processor_name_and_desc(void) +{ + scan_processors(FALSE); + gchar* name = processor_name(processors); + gchar* desc = processor_describe(processors); + gchar* nd = g_strdup_printf("%s\n%s", name, desc); + g_free(name); + g_free(desc); + return nd; } + gchar *get_storage_devices(void) { scan_storage(FALSE); @@ -160,175 +275,127 @@ gchar *get_processor_count(void) return g_strdup_printf("%d", g_slist_length(processors)); } -gchar *get_processor_frequency(void) +/* TODO: maybe move into processor.c along with processor_name() etc. + * Could mention the big.LITTLE cluster arangement for ARM that kind of thing. + * TODO: prefix counts are threads when they should be cores. */ +gchar *processor_frequency_desc(GSList * processors) +{ + gchar *ret = g_strdup(""); + GSList *tmp, *l; + Processor *p; + float cur_val = -1; + gint cur_count = 0; + + tmp = g_slist_copy(processors); + tmp = g_slist_sort(tmp, (GCompareFunc)proc_cmp_max_freq); + + for (l = tmp; l; l = l->next) { + p = (Processor*)l->data; + if (cur_val == -1) { + cur_val = p->cpu_mhz; + cur_count = 1; + } else { + if(cur_val != p->cpu_mhz) { + ret = h_strdup_cprintf("%s%dx %.2f %s", ret, strlen(ret) ? " + " : "", cur_count, cur_val, _("MHz") ); + cur_val = p->cpu_mhz; + cur_count = 1; + } else { + cur_count++; + } + } + } + ret = h_strdup_cprintf("%s%dx %.2f %s", ret, strlen(ret) ? " + " : "", cur_count, cur_val, _("MHz")); + g_slist_free(tmp); + return ret; +} + +gchar *get_processor_frequency_desc(void) +{ + scan_processors(FALSE); + return processor_frequency_desc(processors); +} + +gchar *get_processor_max_frequency(void) { + GSList *l; Processor *p; + float max_freq = 0; scan_processors(FALSE); - p = (Processor *)processors->data; - if (p->cpu_mhz == 0.0f) { + for (l = processors; l; l = l->next) { + p = (Processor*)l->data; + if (p->cpu_mhz > max_freq) + max_freq = p->cpu_mhz; + } + + if (max_freq == 0.0f) { return g_strdup(N_("Unknown")); } else { - return g_strdup_printf("%.0f", p->cpu_mhz); + return g_strdup_printf("%.2f %s", max_freq, _("MHz") ); } } gchar *get_pci_device_description(gchar *pci_id) { gchar *description; - + if (!_pci_devices) { scan_pci(FALSE); } - + if ((description = g_hash_table_lookup(_pci_devices, pci_id))) { return g_strdup(description); } - + return NULL; } gchar *get_memory_total(void) { scan_memory(FALSE); - return moreinfo_lookup ("DEV:Total Memory"); //hi_more_info(N_("Total Memory")); -} - -/* information table from: http://elinux.org/RPi_HardwareHistory */ -static struct { - char *value, *intro, *model, *pcb, *mem, *mfg; -} rpi_boardinfo[] = { -/* Value Introduction Model Name PCB rev. Memory Manufacturer * - * Raspberry Pi %s */ - { "Beta", "Q1 2012", "B (Beta)", "?", "256MB", "(Beta board)" }, - { "0002", "Q1 2012", "B", "1.0", "256MB", "?" }, - { "0003", "Q3 2012", "B (ECN0001)", "1.0", "256MB", "(Fuses mod and D14 removed)" }, - { "0004", "Q3 2012", "B", "2.0", "256MB", "Sony" }, - { "0005", "Q4 2012", "B", "2.0", "256MB", "Qisda" }, - { "0006", "Q4 2012", "B", "2.0", "256MB", "Egoman" }, - { "0007", "Q1 2013", "A", "2.0", "256MB", "Egoman" }, - { "0008", "Q1 2013", "A", "2.0", "256MB", "Sony" }, - { "0009", "Q1 2013", "A", "2.0", "256MB", "Qisda" }, - { "000d", "Q4 2012", "B", "2.0", "512MB", "Egoman" }, - { "000e", "Q4 2012", "B", "2.0", "512MB", "Sony" }, - { "000f", "Q4 2012", "B", "2.0", "512MB", "Qisda" }, - { "0010", "Q3 2014", "B+", "1.0", "512MB", "Sony" }, - { "0011", "Q2 2014", "Compute Module 1", "1.0", "512MB", "Sony" }, - { "0012", "Q4 2014", "A+", "1.1", "256MB", "Sony" }, - { "0013", "Q1 2015", "B+", "1.2", "512MB", "?" }, - { "0014", "Q2 2014", "Compute Module 1", "1.0", "512MB", "Embest" }, - { "0015", "?", "A+", "1.1", "256MB/512MB", "Embest" }, - { "a01040", "Unknown", "2 Model B", "1.0", "1GB", "Sony" }, - { "a01041", "Q1 2015", "2 Model B", "1.1", "1GB", "Sony" }, - { "a21041", "Q1 2015", "2 Model B", "1.1", "1GB", "Embest" }, - { "a22042", "Q3 2016", "2 Model B", "1.2", "1GB", "Embest" }, /* (with BCM2837) */ - { "900021", "Q3 2016", "A+", "1.1", "512MB", "Sony" }, - { "900032", "Q2 2016?", "B+", "1.2", "512MB", "Sony" }, - { "900092", "Q4 2015", "Zero", "1.2", "512MB", "Sony" }, - { "900093", "Q2 2016", "Zero", "1.3", "512MB", "Sony" }, - { "920093", "Q4 2016?", "Zero", "1.3", "512MB", "Embest" }, - { "9000c1", "Q1 2017", "Zero W", "1.1", "512MB", "Sony" }, - { "a02082", "Q1 2016", "3 Model B", "1.2", "1GB", "Sony" }, - { "a020a0", "Q1 2017", "Compute Module 3 or CM3 Lite", "1.0", "1GB", "Sony" }, - { "a22082", "Q1 2016", "3 Model B", "1.2", "1GB", "Embest" }, - { "a32082", "Q4 2016", "3 Model B", "1.2", "1GB", "Sony Japan" }, - { NULL, NULL, NULL, NULL, NULL, NULL } -}; - -static gchar *rpi_get_boardname(void) { - int i = 0, c = 0; - gchar *ret = NULL; - gchar *soc = NULL; - gchar *revision = NULL; - int overvolt = 0; - FILE *cpuinfo; - gchar buffer[128]; - - cpuinfo = fopen("/proc/cpuinfo", "r"); - if (!cpuinfo) - return NULL; - while (fgets(buffer, 128, cpuinfo)) { - gchar **tmp = g_strsplit(buffer, ":", 2); - tmp[0] = g_strstrip(tmp[0]); - tmp[1] = g_strstrip(tmp[1]); - get_str("Revision", revision); - get_str("Hardware", soc); - } - fclose(cpuinfo); - - if (revision == NULL || soc == NULL) { - g_free(soc); - g_free(revision); - return NULL; - } - - if (g_str_has_prefix(revision, "1000")) - overvolt = 1; - - while (rpi_boardinfo[i].value != NULL) { - if (overvolt) - /* +4 to ignore the 1000 prefix */ - c = g_strcmp0(revision+4, rpi_boardinfo[i].value); - else - c = g_strcmp0(revision, rpi_boardinfo[i].value); - - if (c == 0) { - ret = g_strdup_printf("Raspberry Pi %s (%s) pcb-rev:%s soc:%s mem:%s mfg-by:%s%s", - rpi_boardinfo[i].model, rpi_boardinfo[i].intro, - rpi_boardinfo[i].pcb, soc, - rpi_boardinfo[i].mem, rpi_boardinfo[i].mfg, - (overvolt) ? " (over-volted)" : "" ); - break; - } - i++; - } - g_free(soc); - g_free(revision); - return ret; + return moreinfo_lookup ("DEV:MemTotal"); } gchar *get_motherboard(void) { - char *board_name, *board_vendor; + char *board_name, *board_vendor, *product_version; + #if defined(ARCH_x86) || defined(ARCH_x86_64) scan_dmi(FALSE); board_name = moreinfo_lookup("DEV:DMI:Board:Name"); board_vendor = moreinfo_lookup("DEV:DMI:Board:Vendor"); - - if (board_name && board_vendor && *board_name && *board_vendor) - return g_strconcat(board_vendor, " ", board_name, NULL); - else if (board_name && *board_name) - return g_strconcat(board_name, _(" (vendor unknown)"), NULL); - else if (board_vendor && *board_vendor) - return g_strconcat(board_vendor, _(" (model unknown)"), NULL); -#else - /* use device tree "model" */ - if (g_file_get_contents("/proc/device-tree/model", &board_vendor, NULL, NULL)) { - - /* if a raspberry pi, try and get a more detailed name */ - if (g_str_has_prefix(board_vendor, "Raspberry Pi")) { - board_name = rpi_get_boardname(); - if (board_name != NULL) { - g_free(board_vendor); - return board_name; - } - } + product_version = moreinfo_lookup("DEV:DMI:Product:Version#1"); - return board_vendor; - } + if (!board_name || !*board_name) + board_name = _(" (model unknown)"); + if (!board_vendor || !*board_vendor) + board_vendor = _(" (vendor unknown)"); + + if (product_version && *product_version) + return g_strdup_printf("%s / %s (%s)", product_version, board_name, board_vendor); + + return g_strconcat(board_vendor, " ", board_name, NULL); #endif + /* use device tree "model" */ + board_vendor = dtr_get_string("/model", 0); + if (board_vendor != NULL) + return board_vendor; + return g_strdup(_("Unknown")); } ShellModuleMethod *hi_exported_methods(void) { static ShellModuleMethod m[] = { - {"getProcessorCount", get_processor_count}, + {"getProcessorCount", get_processor_count}, {"getProcessorName", get_processor_name}, - {"getProcessorFrequency", get_processor_frequency}, + {"getProcessorDesc", get_processor_desc}, + {"getProcessorNameAndDesc", get_processor_name_and_desc}, + {"getProcessorFrequency", get_processor_max_frequency}, + {"getProcessorFrequencyDesc", get_processor_frequency_desc}, {"getMemoryTotal", get_memory_total}, {"getStorageDevices", get_storage_devices}, {"getPrinters", get_printers}, @@ -344,7 +411,7 @@ ShellModuleMethod *hi_exported_methods(void) gchar *hi_more_info(gchar * entry) { gchar *info = moreinfo_lookup_with_prefix("DEV", entry); - + if (info) return g_strdup(info); @@ -377,6 +444,13 @@ void scan_spd(gboolean reload) } #endif +void scan_dtree(gboolean reload) +{ + SCAN_START(); + __scan_dtree(); + SCAN_END(); +} + void scan_processors(gboolean reload) { SCAN_START(); @@ -462,15 +536,28 @@ gchar *callback_spd() } #endif +gchar *callback_dtree() +{ + return g_strdup_printf("%s" + "[$ShellParam$]\n" + "ViewType=1\n", dtree_info); +} + gchar *callback_memory() { return g_strdup_printf("[Memory]\n" - "%s\n" - "[$ShellParam$]\n" - "ViewType=2\n" - "LoadGraphSuffix= kB\n" - "RescanInterval=2000\n" - "%s\n", meminfo, lginterval); + "%s\n" + "[$ShellParam$]\n" + "ViewType=2\n" + "LoadGraphSuffix= kB\n" + "RescanInterval=2000\n" + "ColumnTitle$TextValue=%s\n" + "ColumnTitle$Extra1=%s\n" + "ColumnTitle$Value=%s\n" + "ShowColumnHeaders=true\n" + "%s\n", meminfo, + _("Field"), _("Description"), _("Value"), /* column labels */ + lginterval); } gchar *callback_battery() @@ -489,8 +576,20 @@ gchar *callback_pci() gchar *callback_sensors() { - return g_strdup_printf("[$ShellParam$]\n" - "ReloadInterval=5000\n" "%s", sensors); + return g_strdup_printf("[Sensors]\n" + "%s\n" + "[$ShellParam$]\n" + "ViewType=2\n" + "LoadGraphSuffix=\n" + "ColumnTitle$TextValue=%s\n" + "ColumnTitle$Value=%s\n" + "ColumnTitle$Extra1=%s\n" + "ShowColumnHeaders=true\n" + "RescanInterval=5000\n" + "%s", + sensors, + _("Sensor"), _("Value"), _("Type"), /* column labels */ + lginterval); } gchar *callback_printers() @@ -564,7 +663,7 @@ void hi_module_init(void) .save_to = "cpuflags.conf", .get_data = NULL }; - + sync_manager_add_entry(&se); } #endif /* defined(ARCH_x86) */ @@ -606,7 +705,7 @@ const gchar *hi_note_func(gint entry) { if (entry == ENTRY_RESOURCES) { if (root_required_for_resources()) { - return g_strdup_printf(_("Resource information requires superuser privileges")); + return g_strdup(_("Resource information requires superuser privileges")); } } return NULL; diff --git a/modules/devices/alpha/processor.c b/modules/devices/alpha/processor.c index f55526f7..c7862232 100644 --- a/modules/devices/alpha/processor.c +++ b/modules/devices/alpha/processor.c @@ -18,6 +18,7 @@ #include "hardinfo.h" #include "devices.h" +#include "cpu_util.h" GSList * processor_scan(void) @@ -25,54 +26,69 @@ processor_scan(void) Processor *processor; FILE *cpuinfo; gchar buffer[128]; + long long hz = 0; - cpuinfo = fopen("/proc/cpuinfo", "r"); + cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) - return NULL; + return NULL; processor = g_new0(Processor, 1); while (fgets(buffer, 128, cpuinfo)) { - gchar **tmp = g_strsplit(buffer, ":", 2); + gchar **tmp = g_strsplit(buffer, ":", 2); - if (tmp[0] && tmp[1]) { - tmp[0] = g_strstrip(tmp[0]); - tmp[1] = g_strstrip(tmp[1]); + if (tmp[0] && tmp[1]) { + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); - get_str("cpu model", processor->model_name); - get_float("BogoMIPS", processor->bogomips); - get_str("platform string", processor->strmodel); + get_str("cpu model", processor->model_name); + get_float("BogoMIPS", processor->bogomips); + get_str("platform string", processor->strmodel); + get_str("cycle frequency [Hz]", processor->cycle_frequency_hz_str); - } - g_strfreev(tmp); + } + g_strfreev(tmp); } - + + fclose(cpuinfo); + gchar *tmp = g_strconcat("Alpha ", processor->model_name, NULL); g_free(processor->model_name); processor->model_name = tmp; - processor->cpu_mhz = 0.0f; - fclose(cpuinfo); + if (processor->cycle_frequency_hz_str) { + hz = atoll(processor->cycle_frequency_hz_str); + processor->cpu_mhz = hz; + processor->cpu_mhz /= 1000000; + } else + processor->cpu_mhz = 0.0f; return g_slist_append(NULL, processor); } +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); +} + gchar * processor_get_info(GSList *processors) { - Processor *processor = (Processor *)processors->data; + Processor *processor = (Processor *)processors->data; - return g_strdup_printf("[Processor]\n" - "Model=%s\n" - "Platform String=%s\n" - "BogoMIPS=%.2f" - "Byte Order=%s\n", - processor->model_name, - processor->strmodel, - processor->bogomips, -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - "Little Endian" -#else - "Big Endian" -#endif - ); + return g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%s\n" + "%s=%.2f %s\n" /* frequency */ + "%s=%.2f\n" /* bogomips */ + "%s=%s\n", /* byte order */ + _("Processor"), + _("Model"), processor->model_name, + _("Platform String"), processor->strmodel, + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("BogoMips"), processor->bogomips, + _("Byte Order"), byte_order_str() + ); } diff --git a/modules/devices/arm/arm_data.c b/modules/devices/arm/arm_data.c index 2e2cbe60..60e8ea34 100644 --- a/modules/devices/arm/arm_data.c +++ b/modules/devices/arm/arm_data.c @@ -23,6 +23,13 @@ #include <string.h> #include "arm_data.h" +#ifndef C_ +#define C_(Ctx, String) String +#endif +#ifndef NC_ +#define NC_(Ctx, String) String +#endif + /* sources: * https://unix.stackexchange.com/a/43563 * git:linux/arch/arm/kernel/setup.c @@ -32,47 +39,46 @@ static struct { char *name, *meaning; } tab_flag_meaning[] = { /* arm/hw_cap */ - { "swp", "SWP instruction (atomic read-modify-write)" }, - { "half", "Half-word loads and stores" }, - { "thumb", "Thumb (16-bit instruction set)" }, - { "26bit", "26-Bit Model (Processor status register folded into program counter)" }, - { "fastmult", "32x32->64-bit multiplication" }, - { "fpa", "Floating point accelerator" }, - { "vfp", "VFP (early SIMD vector floating point instructions)" }, - { "edsp", "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" }, - { "java", "Jazelle (Java bytecode accelerator)" }, - { "iwmmxt", "SIMD instructions similar to Intel MMX" }, - { "crunch", "MaverickCrunch coprocessor (if kernel support enabled)" }, - { "thumbee", "ThumbEE" }, - { "neon", "Advanced SIMD/NEON on AArch32" }, - { "evtstrm", "kernel event stream using generic architected timer" }, - { "vfpv3", "VFP version 3" }, - { "vfpv3d16", "VFP version 3 with 16 D-registers" }, - { "vfpv4", "VFP version 4 with fast context switching" }, - { "vfpd32", "VFP with 32 D-registers" }, - { "tls", "TLS register" }, - { "idiva", "SDIV and UDIV hardware division in ARM mode" }, - { "idivt", "SDIV and UDIV hardware division in Thumb mode" }, - { "lpae", "40-bit Large Physical Address Extension" }, + { "swp", NC_("arm-flag", /*/flag:swp*/ "SWP instruction (atomic read-modify-write)") }, + { "half", NC_("arm-flag", /*/flag:half*/ "Half-word loads and stores") }, + { "thumb", NC_("arm-flag", /*/flag:thumb*/ "Thumb (16-bit instruction set)") }, + { "26bit", NC_("arm-flag", /*/flag:26bit*/ "26-Bit Model (Processor status register folded into program counter)") }, + { "fastmult", NC_("arm-flag", /*/flag:fastmult*/ "32x32->64-bit multiplication") }, + { "fpa", NC_("arm-flag", /*/flag:fpa*/ "Floating point accelerator") }, + { "vfp", NC_("arm-flag", /*/flag:vfp*/ "VFP (early SIMD vector floating point instructions)") }, + { "edsp", NC_("arm-flag", /*/flag:edsp*/ "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)") }, + { "java", NC_("arm-flag", /*/flag:java*/ "Jazelle (Java bytecode accelerator)") }, + { "iwmmxt", NC_("arm-flag", /*/flag:iwmmxt*/ "SIMD instructions similar to Intel MMX") }, + { "crunch", NC_("arm-flag", /*/flag:crunch*/ "MaverickCrunch coprocessor (if kernel support enabled)") }, + { "thumbee", NC_("arm-flag", /*/flag:thumbee*/ "ThumbEE") }, + { "neon", NC_("arm-flag", /*/flag:neon*/ "Advanced SIMD/NEON on AArch32") }, + { "evtstrm", NC_("arm-flag", /*/flag:evtstrm*/ "Kernel event stream using generic architected timer") }, + { "vfpv3", NC_("arm-flag", /*/flag:vfpv3*/ "VFP version 3") }, + { "vfpv3d16", NC_("arm-flag", /*/flag:vfpv3d16*/ "VFP version 3 with 16 D-registers") }, + { "vfpv4", NC_("arm-flag", /*/flag:vfpv4*/ "VFP version 4 with fast context switching") }, + { "vfpd32", NC_("arm-flag", /*/flag:vfpd32*/ "VFP with 32 D-registers") }, + { "tls", NC_("arm-flag", /*/flag:tls*/ "TLS register") }, + { "idiva", NC_("arm-flag", /*/flag:idiva*/ "SDIV and UDIV hardware division in ARM mode") }, + { "idivt", NC_("arm-flag", /*/flag:idivt*/ "SDIV and UDIV hardware division in Thumb mode") }, + { "lpae", NC_("arm-flag", /*/flag:lpae*/ "40-bit Large Physical Address Extension") }, /* arm/hw_cap2 */ - { "pmull", "64x64->128-bit F2m multiplication (arch>8)" }, - { "aes", "Crypto:AES (arch>8)" }, - { "sha1", "Crypto:SHA1 (arch>8)" }, - { "sha2", "Crypto:SHA2 (arch>8)" }, - { "crc32", "CRC32 checksum instructions (arch>8)" }, + { "pmull", NC_("arm-flag", /*/flag:pmull*/ "64x64->128-bit F2m multiplication (arch>8)") }, + { "aes", NC_("arm-flag", /*/flag:aes*/ "Crypto:AES (arch>8)") }, + { "sha1", NC_("arm-flag", /*/flag:sha1*/ "Crypto:SHA1 (arch>8)") }, + { "sha2", NC_("arm-flag", /*/flag:sha2*/ "Crypto:SHA2 (arch>8)") }, + { "crc32", NC_("arm-flag", /*/flag:crc32*/ "CRC32 checksum instructions (arch>8)") }, /* arm64/hw_cap */ - { "fp", "" }, - { "asimd", "Advanced SIMD/NEON on AArch64 (arch>8)" }, - { "atomics", "" }, - { "fphp", "" }, - { "asimdhp", "" }, - { "cpuid", "" }, - { "asimdrdm", "" }, - { "jscvt", "" }, - { "fcma", "" }, - { "lrcpc", "" }, - - { NULL, NULL}, + { "fp", NULL }, + { "asimd", NC_("arm-flag", /*/flag:asimd*/ "Advanced SIMD/NEON on AArch64 (arch>8)") }, + { "atomics", NULL }, + { "fphp", NULL }, + { "asimdhp", NULL }, + { "cpuid", NULL }, + { "asimdrdm", NULL }, + { "jscvt", NULL }, + { "fcma", NULL }, + { "lrcpc", NULL }, + { NULL, NULL } }; static struct { @@ -108,9 +114,11 @@ static struct { /*d */ { 0xd01, "Cortex-A32" }, /*dt*/ { 0xd03, "Cortex-A53" }, /*d */ { 0xd04, "Cortex-A35" }, + /*d */ { 0xd05, "Cortex-A55" }, /*d */ { 0xd07, "Cortex-A57 MPCore" }, /*d */ { 0xd08, "Cortex-A72" }, /*d */ { 0xd09, "Cortex-A73" }, + /*d */ { 0xd0a, "Cortex-A75" }, { 0, NULL}, }; @@ -143,8 +151,11 @@ const char *arm_flag_meaning(const char *flag) { int i = 0; if (flag) while(tab_flag_meaning[i].name != NULL) { - if (strcmp(tab_flag_meaning[i].name, flag) == 0) - return tab_flag_meaning[i].meaning; + if (strcmp(tab_flag_meaning[i].name, flag) == 0) { + if (tab_flag_meaning[i].meaning != NULL) + return C_("arm-flag", tab_flag_meaning[i].meaning); + else return NULL; + } i++; } return NULL; @@ -220,7 +231,7 @@ char *arm_decoded_name(const char *imp, const char *part, const char *var, const p = strtol(rev, NULL, 0); imp_name = (char*) arm_implementer(imp); part_desc = (char*) arm_part(imp, part); - arch_name = (char *) arm_arch(arch); + arch_name = (char*) arm_arch(arch); if (imp_name || part_desc) { if (arch_name != arch) sprintf(dnbuff, "%s %s r%dp%d (%s)", diff --git a/modules/devices/arm/processor.c b/modules/devices/arm/processor.c index ad7adf7f..e9446229 100644 --- a/modules/devices/arm/processor.c +++ b/modules/devices/arm/processor.c @@ -18,6 +18,8 @@ #include "hardinfo.h" #include "devices.h" +#include "cpu_util.h" +#include "dt_util.h" #include "arm_data.h" #include "arm_data.c" @@ -34,34 +36,6 @@ static const gchar *arm_mode_str[] = { "A32 on A64", }; -static gint get_cpu_int(const gchar* file, gint cpuid) { - gchar *tmp0 = NULL; - gchar *tmp1 = NULL; - gint ret = 0; - - tmp0 = g_strdup_printf("/sys/devices/system/cpu/cpu%d/%s", cpuid, file); - g_file_get_contents(tmp0, &tmp1, NULL, NULL); - if (tmp1) - ret = atol(tmp1); - g_free(tmp0); - g_free(tmp1); - return ret; -} - -int processor_has_flag(gchar * strflags, gchar * strflag) -{ - gchar **flags; - gint ret = 0; - if (strflags == NULL || strflag == NULL) - return 0; - flags = g_strsplit(strflags, " ", 0); - ret = g_strv_contains((const gchar * const *)flags, strflag); - g_strfreev(flags); - return ret; -} - -#define PROC_CPUINFO "/proc/cpuinfo" - GSList * processor_scan(void) { @@ -70,7 +44,6 @@ processor_scan(void) FILE *cpuinfo; gchar buffer[128]; gchar *rep_pname = NULL; - gchar *tmpfreq_str = NULL; GSList *pi = NULL; cpuinfo = fopen(PROC_CPUINFO, "r"); @@ -101,7 +74,7 @@ processor_scan(void) processor->id = atol(tmp[1]); if (rep_pname) - processor->model_name = g_strdup(rep_pname); + processor->linux_name = g_strdup(rep_pname); g_strfreev(tmp); continue; @@ -117,11 +90,11 @@ processor_scan(void) processor->id = 0; if (rep_pname) - processor->model_name = g_strdup(rep_pname); + processor->linux_name = g_strdup(rep_pname); } if (processor) { - get_str("model name", processor->model_name); + get_str("model name", processor->linux_name); get_str("Features", processor->flags); get_float("BogoMIPS", processor->bogomips); @@ -166,29 +139,26 @@ processor_scan(void) processor = (Processor *) pi->data; /* strings can't be null or segfault later */ -#define STRIFNULL(f,cs) if (processor->f == NULL) processor->f = g_strdup(cs); -#define UNKIFNULL(f) STRIFNULL(f, "(Unknown)") -#define EMPIFNULL(f) STRIFNULL(f, "") - STRIFNULL(model_name, "ARM Processor"); - EMPIFNULL(flags); - UNKIFNULL(cpu_implementer); - UNKIFNULL(cpu_architecture); - UNKIFNULL(cpu_variant); - UNKIFNULL(cpu_part); - UNKIFNULL(cpu_revision); - - processor->decoded_name = arm_decoded_name( + STRIFNULL(processor->linux_name, _("ARM Processor") ); + EMPIFNULL(processor->flags); + UNKIFNULL(processor->cpu_implementer); + UNKIFNULL(processor->cpu_architecture); + UNKIFNULL(processor->cpu_variant); + UNKIFNULL(processor->cpu_part); + UNKIFNULL(processor->cpu_revision); + + processor->model_name = arm_decoded_name( processor->cpu_implementer, processor->cpu_part, processor->cpu_variant, processor->cpu_revision, - processor->cpu_architecture, processor->model_name); - UNKIFNULL(decoded_name); - - /* freq */ - processor->cpukhz_cur = get_cpu_int("cpufreq/scaling_cur_freq", processor->id); - processor->cpukhz_min = get_cpu_int("cpufreq/scaling_min_freq", processor->id); - processor->cpukhz_max = get_cpu_int("cpufreq/scaling_max_freq", processor->id); - if (processor->cpukhz_max) - processor->cpu_mhz = processor->cpukhz_max / 1000; + processor->cpu_architecture, processor->linux_name); + UNKIFNULL(processor->model_name); + + /* topo & freq */ + processor->cpufreq = cpufreq_new(processor->id); + processor->cputopo = cputopo_new(processor->id); + + if (processor->cpufreq->cpukhz_max) + processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; else processor->cpu_mhz = 0.0f; @@ -236,78 +206,168 @@ gchar *processor_get_capabilities_from_flags(gchar * strflags) gchar * processor_get_detailed_info(Processor *processor) { - gchar *tmp_flags, *tmp_imp, *tmp_part, *tmp_arch, *ret; + gchar *tmp_flags, *tmp_imp, *tmp_part, *tmp_arch, *tmp_cpufreq, *tmp_topology, *ret; tmp_flags = processor_get_capabilities_from_flags(processor->flags); tmp_imp = (char*)arm_implementer(processor->cpu_implementer); tmp_part = (char*)arm_part(processor->cpu_implementer, processor->cpu_part); tmp_arch = (char*)arm_arch_more(processor->cpu_architecture); - ret = g_strdup_printf("[Processor]\n" - "Linux Name=%s\n" - "Decoded Name=%s\n" - "Mode=%s\n" - "BogoMips=%.2f\n" - "Endianesss=" -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - "Little Endian" -#else - "Big Endian" -#endif - "\n" - "[Frequency Scaling]\n" - "Minimum=%d kHz\n" - "Maximum=%d kHz\n" - "Current=%d kHz\n" - "[ARM]\n" - "Implementer=[%s] %s\n" - "Part=[%s] %s\n" - "Architecture=[%s] %s\n" - "Variant=%s\n" - "Revision=%s\n" - "[Capabilities]\n" + tmp_topology = cputopo_section_str(processor->cputopo); + tmp_cpufreq = cpufreq_section_str(processor->cpufreq); + + ret = g_strdup_printf("[%s]\n" + "%s=%s\n" /* linux name */ + "%s=%s\n" /* decoded name */ + "%s=%s\n" /* mode */ + "%s=%.2f %s\n" /* frequency */ + "%s=%.2f\n" /* bogomips */ + "%s=%s\n" /* byte order */ + "%s" /* topology */ + "%s" /* frequency scaling */ + "[%s]\n" /* ARM */ + "%s=[%s] %s\n" /* implementer */ + "%s=[%s] %s\n" /* part */ + "%s=[%s] %s\n" /* architecture */ + "%s=%s\n" /* variant */ + "%s=%s\n" /* revision */ + "[%s]\n" /* flags */ "%s" - "%s", - processor->model_name, - processor->decoded_name, - arm_mode_str[processor->mode], - processor->bogomips, - processor->cpukhz_min, - processor->cpukhz_max, - processor->cpukhz_cur, - processor->cpu_implementer, (tmp_imp) ? tmp_imp : "", - processor->cpu_part, (tmp_part) ? tmp_part : "", - processor->cpu_architecture, (tmp_arch) ? tmp_arch : "", - processor->cpu_variant, - processor->cpu_revision, - tmp_flags, + "%s", /* empty */ + _("Processor"), + _("Linux Name"), processor->linux_name, + _("Decoded Name"), processor->model_name, + _("Mode"), arm_mode_str[processor->mode], + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("BogoMips"), processor->bogomips, + _("Byte Order"), byte_order_str(), + tmp_topology, + tmp_cpufreq, + _("ARM"), + _("Implementer"), processor->cpu_implementer, (tmp_imp) ? tmp_imp : "", + _("Part"), processor->cpu_part, (tmp_part) ? tmp_part : "", + _("Architecture"), processor->cpu_architecture, (tmp_arch) ? tmp_arch : "", + _("Variant"), processor->cpu_variant, + _("Revision"), processor->cpu_revision, + _("Capabilities"), tmp_flags, ""); g_free(tmp_flags); + g_free(tmp_cpufreq); + g_free(tmp_topology); + return ret; +} +gchar *processor_name(GSList *processors) { + /* compatible contains a list of compatible hardware, so be careful + * with matching order. + * ex: "ti,omap3-beagleboard-xm", "ti,omap3450", "ti,omap3"; + * matches "omap3 family" first. + * ex: "brcm,bcm2837", "brcm,bcm2836"; + * would match 2836 when it is a 2837. + */ +#define UNKSOC "(Unknown)" + const struct { + char *search_str; + char *vendor; + char *soc; + } dt_compat_searches[] = { + { "brcm,bcm2837", "Broadcom", "BCM2837" }, + { "brcm,bcm2836", "Broadcom", "BCM2836" }, + { "brcm,bcm2835", "Broadcom", "BCM2835" }, + { "ti,omap5432", "Texas Instruments", "OMAP5432" }, + { "ti,omap5430", "Texas Instruments", "OMAP5430" }, + { "ti,omap4470", "Texas Instruments", "OMAP4470" }, + { "ti,omap4460", "Texas Instruments", "OMAP4460" }, + { "ti,omap4430", "Texas Instruments", "OMAP4430" }, + { "ti,omap3620", "Texas Instruments", "OMAP3620" }, + { "ti,omap3450", "Texas Instruments", "OMAP3450" }, + { "ti,omap5", "Texas Instruments", "OMAP5-family" }, + { "ti,omap4", "Texas Instruments", "OMAP4-family" }, + { "ti,omap3", "Texas Instruments", "OMAP3-family" }, + { "ti,omap2", "Texas Instruments", "OMAP2-family" }, + { "ti,omap1", "Texas Instruments", "OMAP1-family" }, + { "qcom,msm8939", "Qualcomm", "Snapdragon 615"}, + { "qcom,msm", "Qualcomm", "Snapdragon-family"}, + { "nvidia,tegra" "nVidia", "Tegra-family" }, + { "bcm,", "Broadcom", UNKSOC }, + { "nvidia," "nVidia", UNKSOC }, + { "rockchip," "Rockchip", UNKSOC }, + { "ti,", "Texas Instruments", UNKSOC }, + { "qcom,", "Qualcom", UNKSOC }, + { NULL, NULL } + }; + gchar *ret = NULL; + gchar *compat = NULL; + int i; + + compat = dtr_get_string("/compatible", 1); + + if (compat != NULL) { + i = 0; + while(dt_compat_searches[i].search_str != NULL) { + if (strstr(compat, dt_compat_searches[i].search_str) != NULL) { + ret = g_strdup_printf("%s %s", dt_compat_searches[i].vendor, dt_compat_searches[i].soc); + break; + } + i++; + } + } + g_free(compat); + UNKIFNULL(ret); + return ret; +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_by_counting_names(processors); +} + +gchar *processor_meta(GSList * processors) { + gchar *meta_soc = processor_name(processors); + gchar *meta_cpu_desc = processor_describe(processors); + gchar *meta_cpu_topo = processor_describe_default(processors); + gchar *meta_clocks = processor_frequency_desc(processors); + gchar *ret = NULL; + UNKIFNULL(meta_cpu_desc); + ret = g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n", + _("SOC/Package"), + _("Name"), meta_soc, + _("Description"), meta_cpu_desc, + _("Topology"), meta_cpu_topo, + _("Clocks"), meta_clocks ); + g_free(meta_soc); + g_free(meta_cpu_desc); + g_free(meta_cpu_topo); + g_free(meta_clocks); return ret; } gchar *processor_get_info(GSList * processors) { Processor *processor; - - if (g_slist_length(processors) > 1) { gchar *ret, *tmp, *hashkey; + gchar *meta; /* becomes owned by more_info? no need to free? */ GSList *l; - tmp = g_strdup(""); + tmp = g_strdup_printf("$CPU_META$%s=\n", _("SOC/Package Information") ); + + meta = processor_meta(processors); + moreinfo_add_with_prefix("DEV", "CPU_META", meta); for (l = processors; l; l = l->next) { processor = (Processor *) l->data; - tmp = g_strdup_printf(_("%s$CPU%d$%s=%.2fMHz\n"), + tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", tmp, processor->id, processor->model_name, - processor->cpu_mhz); + processor->cpu_mhz, _("MHz")); hashkey = g_strdup_printf("CPU%d", processor->id); moreinfo_add_with_prefix("DEV", hashkey, processor_get_detailed_info(processor)); - g_free(hashkey); + g_free(hashkey); } ret = g_strdup_printf("[$ShellParam$]\n" @@ -317,8 +377,4 @@ gchar *processor_get_info(GSList * processors) g_free(tmp); return ret; - } - - processor = (Processor *) processors->data; - return processor_get_detailed_info(processor); } diff --git a/modules/devices/cpu_util.c b/modules/devices/cpu_util.c new file mode 100644 index 00000000..f5bddd5c --- /dev/null +++ b/modules/devices/cpu_util.c @@ -0,0 +1,225 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@hardinfo.org> + * This file by Burt P. <pburt0@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <string.h> +#include "hardinfo.h" +#include "cpu_util.h" + +#include "cpubits.c" + +#define CPU_TOPO_NULL -9877 + +const gchar *byte_order_str() { +#if G_BYTE_ORDER == G_LITTLE_ENDIAN + return _("Little Endian"); +#else + return _("Big Endian"); +#endif +} + +int processor_has_flag(gchar * strflags, gchar * strflag) +{ + gchar **flags; + gint ret = 0; + if (strflags == NULL || strflag == NULL) + return 0; + flags = g_strsplit(strflags, " ", 0); + ret = g_strv_contains((const gchar * const *)flags, strflag); + g_strfreev(flags); + return ret; +} + +gchar* get_cpu_str(const gchar* file, gint cpuid) { + gchar *tmp0 = NULL; + gchar *tmp1 = NULL; + tmp0 = g_strdup_printf("/sys/devices/system/cpu/cpu%d/%s", cpuid, file); + g_file_get_contents(tmp0, &tmp1, NULL, NULL); + g_free(tmp0); + return tmp1; +} + +gint get_cpu_int(const char* item, int cpuid, int null_val) { + gchar *fc = NULL; + int ret = null_val; + fc = get_cpu_str(item, cpuid); + if (fc) { + ret = atol(fc); + g_free(fc); + } + return ret; +} + +/* cpubits is 32768 bits long + * core_ids are not unique among physical_ids + * hack up cpubits into 128 packs of 256 cores + * to make cores unique in cpubits */ +#define MAX_CORES_PER_PACK 256 +#define MAX_PACKS 128 + +int cpu_procs_cores_threads(int *p, int *c, int *t) { + cpubits *threads, *cores, *packs; + char *tmp; + int i, m, pack_id, core_id; + g_file_get_contents("/sys/devices/system/cpu/present", &tmp, NULL, NULL); + if (tmp != NULL) { + threads = cpubits_from_str(tmp); + cores = cpubits_from_str(""); + packs = cpubits_from_str(""); + m = cpubits_max(threads); + for (i = 0; i <= m; i++) { + pack_id = get_cpu_int("topology/physical_package_id", i, CPU_TOPO_NULL); + core_id = get_cpu_int("topology/core_id", i, CPU_TOPO_NULL); + if (pack_id >= 0) { CPUBIT_SET(packs, pack_id); } + if (core_id >= 0) { CPUBIT_SET(cores, (pack_id * MAX_CORES_PER_PACK) + core_id ); } + } + *t = cpubits_count(threads); + *c = cpubits_count(cores); + *p = cpubits_count(packs); + if (!*c) *c = 1; + if (!*p) *p = 1; + free(threads); + free(cores); + free(packs); + free(tmp); + return 1; + } else { + *p = *c = *t = -1; + return 0; + } +} + +cpufreq_data *cpufreq_new(gint id) +{ + cpufreq_data *cpufd; + cpufd = malloc(sizeof(cpufreq_data)); + if (cpufd) { + memset(cpufd, 0, sizeof(cpufreq_data)); + cpufd->id = id; + cpufreq_update(cpufd, 0); + } + return cpufd; +} + +void cpufreq_update(cpufreq_data *cpufd, int cur_only) +{ + if (cpufd) { + cpufd->cpukhz_cur = get_cpu_int("cpufreq/scaling_cur_freq", cpufd->id, 0); + if (cur_only) return; + cpufd->scaling_driver = get_cpu_str("cpufreq/scaling_driver", cpufd->id); + cpufd->scaling_governor = get_cpu_str("cpufreq/scaling_governor", cpufd->id); + cpufd->transition_latency = get_cpu_int("cpufreq/cpuinfo_transition_latency", cpufd->id, 0); + cpufd->cpukhz_min = get_cpu_int("cpufreq/scaling_min_freq", cpufd->id, 0); + cpufd->cpukhz_max = get_cpu_int("cpufreq/scaling_max_freq", cpufd->id, 0); + if (cpufd->scaling_driver == NULL) cpufd->scaling_driver = g_strdup("(Unknown)"); + if (cpufd->scaling_governor == NULL) cpufd->scaling_governor = g_strdup("(Unknown)"); + } +} + +void cpufreq_free(cpufreq_data *cpufd) +{ + if (cpufd) { + g_free(cpufd->scaling_driver); + g_free(cpufd->scaling_governor); + } + g_free(cpufd); +} + +cpu_topology_data *cputopo_new(gint id) +{ + cpu_topology_data *cputd; + cputd = malloc(sizeof(cpu_topology_data)); + if (cputd) { + memset(cputd, 0, sizeof(cpu_topology_data)); + cputd->id = id; + cputd->socket_id = get_cpu_int("topology/physical_package_id", id, CPU_TOPO_NULL); + cputd->core_id = get_cpu_int("topology/core_id", id, CPU_TOPO_NULL); + cputd->book_id = get_cpu_int("topology/book_id", id, CPU_TOPO_NULL); + cputd->drawer_id = get_cpu_int("topology/drawer_id", id, CPU_TOPO_NULL); + } + return cputd; + +} + +void cputopo_free(cpu_topology_data *cputd) +{ + g_free(cputd); +} + +gchar *cpufreq_section_str(cpufreq_data *cpufd) +{ + if (cpufd == NULL) + return g_strdup(""); + + if (cpufd->cpukhz_min || cpufd->cpukhz_max || cpufd->cpukhz_cur) { + return g_strdup_printf( + "[%s]\n" + "%s=%d %s\n" + "%s=%d %s\n" + "%s=%d %s\n" + "%s=%d %s\n" + "%s=%s\n" + "%s=%s\n", + _("Frequency Scaling"), + _("Minimum"), cpufd->cpukhz_min, _("kHz"), + _("Maximum"), cpufd->cpukhz_max, _("kHz"), + _("Current"), cpufd->cpukhz_cur, _("kHz"), + _("Transition Latency"), cpufd->transition_latency, _("ns"), + _("Governor"), cpufd->scaling_governor, + _("Driver"), cpufd->scaling_driver); + } else { + return g_strdup_printf( + "[%s]\n" + "%s=%s\n", + _("Frequency Scaling"), + _("Driver"), cpufd->scaling_driver); + } +} + +gchar *cputopo_section_str(cpu_topology_data *cputd) +{ + static const char na[] = N_("(Not Available)"); + char sock_str[64] = "", core_str[64] = ""; + char book_str[64] = "", drawer_str[64] = ""; + + if (cputd == NULL) + return g_strdup(""); + + if (cputd->socket_id != CPU_TOPO_NULL && cputd->socket_id != -1) + sprintf(sock_str, "%s=%d\n", _("Socket"), cputd->socket_id); + else + sprintf(sock_str, "%s=%s\n", _("Socket"), na); + + if (cputd->core_id != CPU_TOPO_NULL) + sprintf(core_str, "%s=%d\n", _("Core"), cputd->core_id); + else + sprintf(core_str, "%s=%s\n", _("Core"), na); + + if (cputd->book_id != CPU_TOPO_NULL) + sprintf(core_str, "%s=%d\n", _("Book"), cputd->book_id); + if (cputd->book_id != CPU_TOPO_NULL) + sprintf(core_str, "%s=%d\n", _("Drawer"), cputd->drawer_id); + + return g_strdup_printf( + "[%s]\n" + "%s=%d\n" + "%s%s%s%s", + _("Topology"), + _("ID"), cputd->id, + sock_str, core_str, book_str, drawer_str ); +} diff --git a/modules/devices/cpubits.c b/modules/devices/cpubits.c new file mode 100644 index 00000000..ba9bffc7 --- /dev/null +++ b/modules/devices/cpubits.c @@ -0,0 +1,113 @@ +/* + * rpiz - https://github.com/bp0/rpiz + * Copyright (C) 2017 Burt P. <pburt0@gmail.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include <stdint.h> + +typedef uint32_t cpubits; +uint32_t cpubits_count(cpubits *b); +cpubits *cpubits_from_str(char *str); +char *cpubits_to_str(cpubits *bits, char *str, int max_len); + +#define CPUBITS_SIZE 4096 /* bytes, multiple of sizeof(uint32_t) */ +#define CPUBIT_SET(BITS, BIT) (BITS[BIT/32] |= (1 << BIT%32)) +#define CPUBIT_GET(BITS, BIT) ((BITS[BIT/32] & (1 << BIT%32)) >> BIT%32) +#define CPUBITS_CLEAR(BITS) memset(BITS, 0, CPUBITS_SIZE) + +uint32_t cpubits_count(cpubits *b) { + static const uint32_t max = CPUBITS_SIZE * 8; + uint32_t count = 0, i = 0; + while (i < max) { + count += CPUBIT_GET(b, i); + i++; + } + return count; +} + +int cpubits_max(cpubits *b) { + int i = CPUBITS_SIZE * 8; + while (i >= 0) { + if (CPUBIT_GET(b, i)) + break; + i--; + } + return i; +} + +cpubits *cpubits_from_str(char *str) { + char *v, *nv, *hy; + int r0, r1; + cpubits *newbits = malloc(CPUBITS_SIZE); + if (newbits) { + memset(newbits, 0, CPUBITS_SIZE); + if (str != NULL) { + v = (char*)str; + while ( *v != 0 ) { + nv = strchr(v, ','); /* strchrnul() */ + if (nv == NULL) nv = strchr(v, 0); /* equivalent */ + hy = strchr(v, '-'); + if (hy && hy < nv) { + r0 = strtol(v, NULL, 0); + r1 = strtol(hy + 1, NULL, 0); + } else { + r0 = r1 = strtol(v, NULL, 0); + } + for (; r0 <= r1; r0++) { + CPUBIT_SET(newbits, r0); + } + v = (*nv == ',') ? nv + 1 : nv; + } + } + } + return newbits; +} + +char *cpubits_to_str(cpubits *bits, char *str, int max_len) { + static const uint32_t max = CPUBITS_SIZE * 8; + uint32_t i = 1, seq_start = 0, seq_last = 0, seq = 0, l = 0; + char buffer[65536] = ""; + if (CPUBIT_GET(bits, 0)) { + seq = 1; + strcpy(buffer, "0"); + } + while (i < max) { + if (CPUBIT_GET(bits, i) ) { + seq_last = i; + if (!seq) { + seq = 1; + seq_start = i; + l = strlen(buffer); + sprintf(buffer + l, "%s%d", l ? "," : "", i); + } + } else { + if (seq && seq_last != seq_start) { + l = strlen(buffer); + sprintf(buffer + l, "-%d", seq_last); + } + seq = 0; + } + i++; + } + if (str == NULL) + return strdup(buffer); + else { + strncpy(str, buffer, max_len); + return str; + } +} diff --git a/modules/devices/devicetree.c b/modules/devices/devicetree.c new file mode 100644 index 00000000..6fce066a --- /dev/null +++ b/modules/devices/devicetree.c @@ -0,0 +1,272 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@hardinfo.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * Device Tree support by Burt P. <pburt0@gmail.com> + * Sources: + * http://elinux.org/Device_Tree_Usage + * http://elinux.org/Device_Tree_Mysteries + */ +#include <unistd.h> +#include <sys/types.h> +#include <stdint.h> +#include "hardinfo.h" +#include "devices.h" +#include "cpu_util.h" +#include "dt_util.h" + +#include "devicetree/rpi_data.c" +#include "devicetree/pmac_data.c" + +dtr *dt; +gchar *dtree_info = NULL; + +gchar *get_node(char *np) { + gchar *nodes = NULL, *props = NULL, *ret = NULL; + gchar *tmp = NULL, *pstr = NULL, *lstr = NULL; + gchar *dir_path; + gchar *node_path; + const gchar *fn; + GDir *dir; + dtr_obj *node, *child; + + props = g_strdup_printf("[%s]\n", _("Properties") ); + nodes = g_strdup_printf("[%s]\n", _("Children") ); + node = dtr_obj_read(dt, np); + dir_path = dtr_obj_full_path(node); + + dir = g_dir_open(dir_path, 0 , NULL); + if (dir) { + while((fn = g_dir_read_name(dir)) != NULL) { + child = dtr_get_prop_obj(dt, node, fn); + pstr = hardinfo_clean_value(dtr_str(child), 1); + lstr = hardinfo_clean_label(fn, 0); + if (dtr_obj_type(child) == DT_NODE) { + tmp = g_strdup_printf("%s%s=%s\n", + nodes, lstr, pstr); + g_free(nodes); + nodes = tmp; + } else { + tmp = g_strdup_printf("%s%s=%s\n", + props, lstr, pstr); + g_free(props); + props = tmp; + } + dtr_obj_free(child); + g_free(pstr); + g_free(lstr); + } + } + g_dir_close(dir); + g_free(dir_path); + + lstr = dtr_obj_alias(node); + pstr = dtr_obj_symbol(node); + ret = g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s%s", + _("Node"), + _("Node Path"), dtr_obj_path(node), + _("Alias"), (lstr != NULL) ? lstr : _("(None)"), + _("Symbol"), (pstr != NULL) ? pstr : _("(None)"), + props, nodes); + + dtr_obj_free(node); + g_free(props); + g_free(nodes); + return ret; +} + +/* different from dtr_get_string() in that it re-uses the existing dt */ +char *get_dt_string(char *path, int decode) { + dtr_obj *obj; + char *ret = NULL; + if (decode) { + obj = dtr_get_prop_obj(dt, NULL, path); + ret = dtr_str(obj); + dtr_obj_free(obj); + } else + ret = dtr_get_prop_str(dt, NULL, path); + return ret; +} + +gchar *get_summary() { + char *model = NULL, *compat = NULL; + char *tmp[10]; + char *ret = NULL; + + model = get_dt_string("/model", 0); + compat = get_dt_string("/compatible", 1); + UNKIFNULL(model); + EMPIFNULL(compat); + + /* Expand on the DT information from known machines, like RPi. + * RPi stores a revision value in /proc/cpuinfo that can be used + * to look up details. This is just a nice place to pull it all + * together for DT machines, with a nice fallback. + * PPC Macs could be handled this way too. They store + * machine identifiers in /proc/cpuinfo. */ + if ( strstr(model, "Raspberry Pi") != NULL + || strstr(compat, "raspberrypi") != NULL ) { + tmp[0] = get_dt_string("/serial-number", 1); + tmp[1] = get_dt_string("/soc/gpu/compatible", 1); + tmp[9] = rpi_board_details(); + tmp[8] = g_strdup_printf( + "[%s]\n" "%s=%s\n" "%s=%s\n", + _("Platform"), + _("Compatible"), compat, + _("GPU-compatible"), tmp[1] ); + if (tmp[9] != NULL) { + ret = g_strdup_printf("%s%s", tmp[9], tmp[8]); + } else { + ret = g_strdup_printf( + "[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s", + _("Raspberry Pi or Compatible"), + _("Model"), model, + _("Serial Number"), tmp[0], + _("RCode"), _("No revision code available; unable to lookup model details."), + tmp[8]); + } + free(tmp[0]); free(tmp[1]); + free(tmp[9]); free(tmp[8]); + } + + /* Power Macintosh */ + if (strstr(compat, "PowerBook") != NULL + || strstr(compat, "MacRISC") != NULL + || strstr(compat, "Power Macintosh") != NULL) { + tmp[9] = ppc_mac_details(); + if (tmp[9] != NULL) { + tmp[0] = get_dt_string("/serial-number", 1); + ret = g_strdup_printf( + "%s[%s]\n" "%s=%s\n", tmp[9], + _("More"), + _("Serial Number"), tmp[0] ); + free(tmp[0]); + } + free(tmp[9]); + } + + /* fallback */ + if (ret == NULL) { + tmp[0] = get_dt_string("/serial-number", 1); + EMPIFNULL(tmp[0]); + ret = g_strdup_printf( + "[%s]\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n", + _("Board"), + _("Model"), model, + _("Serial Number"), tmp[0], + _("Compatible"), compat); + free(tmp[0]); + } + free(model); + return ret; +} + +void mi_add(const char *key, const char *value) { + gchar *ckey, *rkey; + + ckey = hardinfo_clean_label(key, 0); + rkey = g_strdup_printf("%s:%s", "DTREE", ckey); + + dtree_info = h_strdup_cprintf("$%s$%s=\n", dtree_info, rkey, ckey); + moreinfo_add_with_prefix("DEV", rkey, g_strdup(value)); + + g_free(ckey); + g_free(rkey); +} + +void add_keys(char *np) { + gchar *dir_path, *dt_path; + gchar *ftmp, *ntmp; + gchar *n_info; + const gchar *fn; + GDir *dir; + dtr_obj *obj; + + /* add self */ + obj = dtr_obj_read(dt, np); + dt_path = dtr_obj_path(obj); + n_info = get_node(dt_path); + mi_add(dt_path, n_info); + + dir_path = g_strdup_printf("%s/%s", dtr_base_path(dt), np); + dir = g_dir_open(dir_path, 0 , NULL); + if (dir) { + while((fn = g_dir_read_name(dir)) != NULL) { + ftmp = g_strdup_printf("%s/%s", dir_path, fn); + if ( g_file_test(ftmp, G_FILE_TEST_IS_DIR) ) { + if (strcmp(np, "/") == 0) + ntmp = g_strdup_printf("/%s", fn); + else + ntmp = g_strdup_printf("%s/%s", np, fn); + add_keys(ntmp); + g_free(ntmp); + } + g_free(ftmp); + } + } + g_dir_close(dir); +} + +char *msg_section(int dump) { + gchar *aslbl = NULL; + gchar *messages = dtr_messages(dt); + gchar *ret = g_strdup_printf("[%s]\n", _("Messages")); + gchar **lines = g_strsplit(messages, "\n", 0); + int i = 0; + while(lines[i] != NULL) { + aslbl = hardinfo_clean_label(lines[i], 0); + ret = appf(ret, "%s=\n", aslbl); + g_free(aslbl); + i++; + } + g_strfreev(lines); + if (dump) + printf("%s", messages); + g_free(messages); + return ret; +} + +void __scan_dtree() +{ + dt = dtr_new(NULL); + gchar *summary = get_summary(); + gchar *maps = dtr_maps_info(dt); + gchar *messages = NULL; + + dtree_info = g_strdup("[Device Tree]\n"); + mi_add("Summary", summary); + mi_add("Maps", maps); + + if(dtr_was_found(dt)) + add_keys("/"); + messages = msg_section(0); + mi_add("Messages", messages); + + //printf("%s\n", dtree_info); + + g_free(summary); + g_free(maps); + g_free(messages); + dtr_free(dt); +} diff --git a/modules/devices/devicetree/dt_util.c b/modules/devices/devicetree/dt_util.c new file mode 100644 index 00000000..9678042d --- /dev/null +++ b/modules/devices/devicetree/dt_util.c @@ -0,0 +1,1040 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@hardinfo.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * Device Tree support by Burt P. <pburt0@gmail.com> + * Sources: + * http://elinux.org/Device_Tree_Usage + * http://elinux.org/Device_Tree_Mysteries + */ +#include <unistd.h> +#include <sys/types.h> +#include <endian.h> +#include "hardinfo.h" +#include "dt_util.h" + +static struct { + char *name; int type; +} prop_types[] = { + { "name", DTP_STR }, + { "compatible", DTP_STR }, + { "model", DTP_STR }, + { "reg", DTP_REG }, + { "clocks", DTP_CLOCKS }, + { "gpios", DTP_GPIOS }, + { "cs-gpios", DTP_GPIOS }, + { "phandle", DTP_PH }, + { "interrupts", DTP_INTRUPT }, + { "interrupts-extended", DTP_INTRUPT_EX }, + { "interrupt-parent", DTP_PH_REF }, + { "interrupt-controller", DTP_EMPTY }, + { "regulator-min-microvolt", DTP_UINT }, + { "regulator-max-microvolt", DTP_UINT }, + { "clock-frequency", DTP_UINT }, + { "dmas", DTP_DMAS }, + { "dma-channels", DTP_UINT }, + { "dma-requests", DTP_UINT }, + { NULL, 0 }, +}; + +static struct { + char *name; uint32_t v; +} default_values[] = { + { "#address-cells", 2 }, + { "#size-cells", 1 }, + { "#dma-cells", 1 }, + { NULL, 0 }, +}; + +struct _dtr_map { + uint32_t v; /* phandle */ + char *label; /* alias */ + char *path; + struct _dtr_map *next; +}; +typedef struct _dtr_map dtr_map; + +struct _dtr { + dtr_map *aliases; + dtr_map *symbols; + dtr_map *phandles; + char *base_path; + char *log; +}; + +struct _dtr_obj { + char *path; + union { + void *data; + char *data_str; + dt_uint *data_int; + }; + char *name; + uint32_t length; + int type; + char *prefix; /* if the name has a manufacturer's prefix or null */ + char *np_name; /* the name without any prefix. points into .prefix or .name, do not free */ + const char *alias; /* null until first dtr_obj_alias(). do not free */ + const char *symbol; /* null until first dtr_obj_symbol(). do not free */ + dtr *dt; +}; + +dtr_map *dtr_map_add(dtr_map *map, uint32_t v, const char *label, const char *path) { + dtr_map *it; + dtr_map *nmap = malloc(sizeof(dtr_map)); + memset(nmap, 0, sizeof(dtr_map)); + nmap->v = v; + + if (label != NULL) nmap->label = strdup(label); + if (path != NULL) nmap->path = strdup(path); + if (map == NULL) + return nmap; + + it = map; + while(it->next != NULL) + it = it->next; + it->next = nmap; + + return nmap; +} + +void dtr_map_free(dtr_map *map) { + dtr_map *it; + while(map != NULL) { + it = map->next; + free(map->label); + free(map->path); + free(map); + map = it; + } +} + +/* simple sort for maps + * sv: 1 = sort by v, 0 = sort by label */ +void dtr_map_sort(dtr_map *map, int sv) +{ + int done = 0, cmp; + dtr_map *this, *next, *top, *next_top; + uint32_t tmp_v; + char *tmp_l, *tmp_p; + if (map == NULL) return; + do { + this = map; + next_top = NULL; + while(this != NULL) { + next = this->next; + if (this == top) + break; + if (next == NULL) + break; + if (sv) + cmp = (this->v > next->v) ? 1 : 0; + else + cmp = strcmp(this->label, next->label); + if (cmp > 0) { + tmp_v = this->v; this->v = next->v; next->v = tmp_v; + tmp_l = this->label; this->label = next->label; next->label = tmp_l; + tmp_p = this->path; this->path = next->path; next->path = tmp_p; + next_top = this; + } + this = next; + } + if (next_top == NULL) + done = 1; + else + top = next_top; + } while (!done); +} + +const char *dtr_phandle_lookup(dtr *s, uint32_t v) { + dtr_map *phi = s->phandles; + /* 0 and 0xffffffff are invalid phandle values */ + /* TODO: perhaps "INVALID" or something */ + if (v == 0 || v == 0xffffffff) + return NULL; + while(phi != NULL) { + if (phi->v == v) + return phi->path; + phi = phi->next; + } + return NULL; +} + +const char *dtr_alias_lookup(dtr *s, const char* label) { + dtr_map *ali = s->aliases; + while(ali != NULL) { + if (strcmp(ali->label, label) == 0) + return ali->path; + ali = ali->next; + } + return NULL; +} + +const char *dtr_alias_lookup_by_path(dtr *s, const char* path) { + dtr_map *ali = s->aliases; + while(ali != NULL) { + if (strcmp(ali->path, path) == 0) + return ali->label; + ali = ali->next; + } + return NULL; +} + +const char *dtr_symbol_lookup_by_path(dtr *s, const char* path) { + dtr_map *ali = s->symbols; + while(ali != NULL) { + if (strcmp(ali->path, path) == 0) + return ali->label; + ali = ali->next; + } + return NULL; +} + +void _dtr_read_aliases(dtr *); +void _dtr_read_symbols(dtr *); +void _dtr_map_phandles(dtr *, char *np); + +const char *dtr_find_device_tree_root() { + char *candidates[] = { + "/proc/device-tree", + "/sys/firmware/devicetree/base", + /* others? */ + NULL + }; + int i = 0; + while (candidates[i] != NULL) { + if(access(candidates[i], F_OK) != -1) + return candidates[i]; + i++; + } + return NULL; +} + +dtr *dtr_new_x(const char *base_path, int fast) { + dtr *dt = malloc(sizeof(dtr)); + if (dt != NULL) { + memset(dt, 0, sizeof(dtr)); + dt->log = strdup(""); + + if (base_path == NULL) + base_path = DTR_ROOT; + + if (base_path != NULL) + dt->base_path = strdup(base_path); + else { + dtr_msg(dt, "%s", "Device Tree not found."); + return dt; + } + + /* build alias and phandle lists */ + dt->aliases = NULL; + dt->symbols = NULL; + dt->phandles = NULL; + if (!fast) { + _dtr_read_aliases(dt); + _dtr_read_symbols(dt); + _dtr_map_phandles(dt, ""); + } + } + return dt; +} + +dtr *dtr_new(const char *base_path) { + return dtr_new_x(base_path, 0); +} + +void dtr_free(dtr *s) { + if (s != NULL) { + dtr_map_free(s->aliases); + dtr_map_free(s->symbols); + dtr_map_free(s->phandles); + free(s->base_path); + free(s->log); + free(s); + } +} + +int dtr_was_found(dtr *s) { + if (s != NULL) { + if (s->base_path != NULL) + return 1; + } + return 0; +} + +void dtr_msg(dtr *s, char *fmt, ...) { + gchar *buf, *tmp; + va_list args; + + va_start(args, fmt); + buf = g_strdup_vprintf(fmt, args); + va_end(args); + + tmp = g_strdup_printf("%s%s", s->log, buf); + g_free(s->log); + s->log = tmp; +} + +char *dtr_messages(dtr *s) { + if (s != NULL) + return strdup(s->log); + else + return NULL; +} + +const char *dtr_base_path(dtr *s) { + if (s) + return s->base_path; + return NULL; +} + +/*glib, but _dt_obj *prop uses malloc() and std types */ +dtr_obj *dtr_obj_read(dtr *s, const char *dtp) { + char *full_path; + char *slash, *coma; + dtr_obj *obj; + + if (dtp == NULL) + return NULL; + + obj = malloc(sizeof(dtr_obj)); + if (obj != NULL) { + memset(obj, 0, sizeof(dtr_obj)); + + obj->dt = s; + if (*dtp != '/') { + /* doesn't start with slash, use alias */ + obj->path = (char*)dtr_alias_lookup(s, dtp); + if (obj->path != NULL) + obj->path = strdup(obj->path); + else { + dtr_obj_free(obj); + return NULL; + } + } else + obj->path = strdup(dtp); + + /* find name after last slash, or start */ + slash = strrchr(obj->path, '/'); + if (slash != NULL) + obj->name = strdup(slash + 1); + else + obj->name = strdup(obj->path); + + /* find manufacturer prefix */ + obj->prefix = strdup(obj->name); + coma = strchr(obj->prefix, ','); + if (coma != NULL) { + /* coma -> null; .np_name starts after */ + *coma = 0; + obj->np_name = coma + 1; + } else { + obj->np_name = obj->name; + free(obj->prefix); + obj->prefix = NULL; + } + + /* read data */ + full_path = g_strdup_printf("%s%s", s->base_path, obj->path); + if ( g_file_test(full_path, G_FILE_TEST_IS_DIR) ) { + obj->type = DT_NODE; + } else { + if (!g_file_get_contents(full_path, (gchar**)&obj->data, (gsize*)&obj->length, NULL)) { + dtr_obj_free(obj); + g_free(full_path); + return NULL; + } + obj->type = dtr_guess_type(obj); + } + g_free(full_path); + + return obj; + } + return NULL; +} + +void dtr_obj_free(dtr_obj *s) { + if (s != NULL) { + free(s->path); + free(s->name); + free(s->prefix); + free(s->data); + free(s); + } +} + +int dtr_obj_type(dtr_obj *s) { + if (s) + return s->type; + return DT_TYPE_ERR; +} + +char *dtr_obj_alias(dtr_obj *s) { + if (s) { + if (s->alias == NULL) + s->alias = dtr_alias_lookup_by_path(s->dt, s->path); + return (char*)s->alias; + } + return NULL; +} + +char *dtr_obj_symbol(dtr_obj *s) { + if (s) { + if (s->symbol == NULL) + s->symbol = dtr_symbol_lookup_by_path(s->dt, s->path); + return (char*)s->symbol; + } + return NULL; +} + +char *dtr_obj_path(dtr_obj *s) { + if (s) + return s->path; + return NULL; +} + +char *dtr_obj_full_path(dtr_obj *s) { + if (s) { + if (strcmp(s->path, "/") == 0) + return g_strdup_printf("%s", s->dt->base_path); + else + return g_strdup_printf("%s%s", s->dt->base_path, s->path); + } + return NULL; +} + +dtr_obj *dtr_get_prop_obj(dtr *s, dtr_obj *node, const char *name) { + dtr_obj *prop; + char *ptmp; + ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); + prop = dtr_obj_read(s, ptmp); + g_free(ptmp); + return prop; +} + +char *dtr_get_prop_str(dtr *s, dtr_obj *node, const char *name) { + dtr_obj *prop; + char *ptmp; + char *ret = NULL; + + ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); + prop = dtr_obj_read(s, ptmp); + if (prop != NULL && prop->data != NULL) { + ret = strdup(prop->data_str); + dtr_obj_free(prop); + } + g_free(ptmp); + return ret; +} + +char *dtr_get_string(const char *p, int decode) { + dtr *dt = dtr_new_x(NULL, 1); + dtr_obj *obj; + char *ret = NULL; + if (decode) { + obj = dtr_get_prop_obj(dt, NULL, p); + ret = dtr_str(obj); + dtr_obj_free(obj); + } else + ret = dtr_get_prop_str(dt, NULL, p); + dtr_free(dt); + return ret; +} + +uint32_t dtr_get_prop_u32(dtr *s, dtr_obj *node, const char *name) { + dtr_obj *prop; + char *ptmp; + uint32_t ret = 0; + + ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); + prop = dtr_obj_read(s, ptmp); + if (prop != NULL && prop->data != NULL) { + ret = be32toh(*prop->data_int); + dtr_obj_free(prop); + } + g_free(ptmp); + return ret; +} + +int dtr_guess_type(dtr_obj *obj) { + char *tmp, *dash; + int i = 0, anc = 0, might_be_str = 1; + + if (obj->length == 0) + return DTP_EMPTY; + + /* special #(.*)-cells names are UINT */ + if (*obj->name == '#') { + dash = strrchr(obj->name, '-'); + if (dash != NULL) { + if (strcmp(dash, "-cells") == 0) + return DTP_UINT; + } + } + + /* /aliases/* and /__symbols__/* are always strings */ + if (strncmp(obj->path, "/aliases/", strlen("/aliases/") ) == 0) + return DTP_STR; + if (strncmp(obj->path, "/__symbols__/", strlen("/__symbols__/") ) == 0) + return DTP_STR; + + /* /__overrides__/* */ + if (strncmp(obj->path, "/__overrides__/", strlen("/__overrides__/") ) == 0) + if (strcmp(obj->name, "name") != 0) + return DTP_OVR; + + /* lookup known type */ + while (prop_types[i].name != NULL) { + if (strcmp(obj->name, prop_types[i].name) == 0) + return prop_types[i].type; + i++; + } + + /* maybe a string? */ + for (i = 0; i < obj->length; i++) { + tmp = obj->data_str + i; + if ( isalnum(*tmp) ) anc++; /* count the alpha-nums */ + if ( isprint(*tmp) || *tmp == 0 ) + continue; + might_be_str = 0; + break; + } + if (might_be_str && + ( anc >= obj->length - 2 /* all alpha-nums but ^/ and \0$ */ + || anc >= 5 ) /*arbitrary*/) + return DTP_STR; + + /* multiple of 4 bytes, try list of hex values */ + if (!(obj->length % 4)) + return DTP_HEX; + + return DTP_UNK; +} + +char *dtr_elem_phref(dtr *s, dt_uint e, int show_path) { + const char *ph_path, *al_label; + char *ret = NULL; + ph_path = dtr_phandle_lookup(s, be32toh(e)); + if (ph_path != NULL) { + /* TODO: alias or symbol? */ + al_label = dtr_symbol_lookup_by_path(s, ph_path); + if (al_label != NULL) { + if (show_path) + ret = g_strdup_printf("&%s (%s)", al_label, ph_path); + else + ret = g_strdup_printf("&%s", al_label); + } else { + if (show_path) + ret = g_strdup_printf("0x%x (%s)", be32toh(e), ph_path); + } + } + if (ret == NULL) + ret = dtr_elem_hex(e); + return ret; +} + +char *dtr_elem_hex(dt_uint e) { + return g_strdup_printf("0x%x", be32toh(e) ); +} + +char *dtr_elem_byte(uint8_t e) { + return g_strdup_printf("%x", e); +} + +char *dtr_elem_uint(dt_uint e) { + return g_strdup_printf("%u", be32toh(e) ); +} + +char *dtr_list_byte(uint8_t *bytes, unsigned long count) { + char *ret, *dest; + char buff[4] = ""; /* max element: " 00\0" */ + uint32_t v; + unsigned long i, l; + l = count * 4 + 1; + ret = malloc(l); + memset(ret, 0, l); + strcpy(ret, "["); + dest = ret + 1; + for (i = 0; i < count; i++) { + v = bytes[i]; + sprintf(buff, "%s%02x", (i) ? " " : "", v); + l = strlen(buff); + strncpy(dest, buff, l); + dest += l; + } + strcpy(dest, "]"); + return ret; +} + +char *dtr_list_hex(dt_uint *list, unsigned long count) { + char *ret, *dest; + char buff[12] = ""; /* max element: " 0x00000000\0" */ + unsigned long i, l; + l = count * 12 + 1; + dest = ret = malloc(l); + memset(ret, 0, l); + for (i = 0; i < count; i++) { + sprintf(buff, "%s0x%x", (i) ? " " : "", be32toh(list[i])); + l = strlen(buff); + strncpy(dest, buff, l); + dest += l; + } + return ret; +} + +/*cstd, except for g_strescape()*/ +char *dtr_list_str0(const char *data, uint32_t length) { + char *tmp, *esc, *next_str; + char ret[1024] = ""; + uint32_t l, tl; + + /* treat as null-separated string list */ + tl = 0; + strcpy(ret, ""); + tmp = ret; + next_str = (char*)data; + while(next_str != NULL) { + l = strlen(next_str); + esc = g_strescape(next_str, NULL); + sprintf(tmp, "%s\"%s\"", + strlen(ret) ? ", " : "", esc); + free(esc); + tmp += strlen(tmp); + tl += l + 1; next_str += l + 1; + if (tl >= length) break; + } + + return strdup(ret); +} + +char *dtr_list_override(dtr_obj *obj) { + /* <phref, string "property:value"> ... */ + char *ret = NULL; + char *ph, *str; + char *src; + int l, consumed = 0; + src = obj->data_str; + while (consumed + 5 <= obj->length) { + ph = dtr_elem_phref(obj->dt, *(dt_uint*)src, 1); + src += 4; consumed += 4; + l = strlen(src) + 1; /* consume the null */ + str = dtr_list_str0(src, l); + ret = appf(ret, "<%s -> %s>", ph, str); + src += l; consumed += l; + free(ph); + free(str); + } + if (consumed < obj->length) { + str = dtr_list_byte(src, obj->length - consumed); + ret = appf(ret, "%s", str); + free(str); + } + return ret; +} + +uint32_t dtr_get_phref_prop(dtr *s, uint32_t phandle, char *prop) { + const char *ph_path; + char *tmp; + uint32_t ret; + ph_path = dtr_phandle_lookup(s, phandle); + tmp = g_strdup_printf("%s/%s", ph_path, prop); + ret = dtr_get_prop_u32(s, NULL, tmp); + free(tmp); + return ret; +} + +char *dtr_list_phref(dtr_obj *obj, char *ext_cell_prop) { + /* <phref, #XXX-cells> */ + int count = obj->length / 4; + int i = 0, ext_cells = 0; + char *ph_path; + char *ph, *ext, *ret = NULL; + while (i < count) { + if (ext_cell_prop == NULL) + ext_cells = 0; + else + ext_cells = dtr_get_phref_prop(obj->dt, be32toh(obj->data_int[i]), ext_cell_prop); + ph = dtr_elem_phref(obj->dt, obj->data_int[i], 0); i++; + if (ext_cells > count - i) ext_cells = count - i; + ext = dtr_list_hex((obj->data_int + i), ext_cells); i+=ext_cells; + ret = appf(ret, "<%s%s%s>", + ph, (ext_cells) ? " " : "", ext); + g_free(ph); + g_free(ext); + } + return ret; +} + +char *dtr_list_interrupts(dtr_obj *obj) { + char *ext, *ret = NULL; + uint32_t iparent, icells; + int count, i = 0; + + iparent = dtr_inh_find(obj, "interrupt-parent", 0); + if (!iparent) { + dtr_msg(obj->dt, "Did not find an interrupt-parent for %s", obj->path); + goto intr_err; + } + icells = dtr_get_phref_prop(obj->dt, iparent, "#interrupt-cells"); + if (!icells) { + dtr_msg(obj->dt, "Invalid #interrupt-cells value %d for %s", icells, obj->path); + goto intr_err; + } + + count = obj->length / 4; + while (i < count) { + icells = MIN(icells, count - i); + ext = dtr_list_hex((obj->data_int + i), icells); i+=icells; + ret = appf(ret, "<%s>", ext); + } + return ret; + +intr_err: + return dtr_list_hex(obj->data_int, obj->length); + +} + +char *dtr_list_reg(dtr_obj *obj) { + char *tup_str, *ret = NULL; + uint32_t acells, scells, tup_len; + uint32_t tups, extra, consumed; /* extra and consumed are bytes */ + uint32_t *next; + + acells = dtr_inh_find(obj, "#address-cells", 2); + scells = dtr_inh_find(obj, "#size-cells", 2); + tup_len = acells + scells; + tups = obj->length / (tup_len * 4); + extra = obj->length % (tup_len * 4); + consumed = 0; /* bytes */ + + //printf("list reg: %s\n ... acells: %u, scells: %u, extra: %u\n", obj->path, acells, scells, extra); + + if (extra) { + /* error: length is not a multiple of tuples */ + dtr_msg(obj->dt, "Data length (%u) is not a multiple of (#address-cells:%u + #size-cells:%u) for %s\n", + obj->length, acells, scells, obj->path); + return dtr_list_hex(obj->data, obj->length / 4); + } + + next = obj->data_int; + consumed = 0; + while (consumed + (tup_len * 4) <= obj->length) { + tup_str = dtr_list_hex(next, tup_len); + ret = appf(ret, "<%s>", tup_str); + free(tup_str); + consumed += (tup_len * 4); + next += tup_len; + } + + //printf(" ... %s\n", ret); + return ret; +} + +char* dtr_str(dtr_obj *obj) { + char *ret; + int type; + + if (obj == NULL) return NULL; + type = obj->type; + + if (type == DTP_PH_REF) { + if (!DTEX_PHREFS || obj->length != 4) + type = DTP_HEX; + } + + switch(type) { + case DT_NODE: + ret = strdup("{node}"); + break; + case DTP_EMPTY: + ret = strdup("{empty}"); + break; + case DTP_STR: + ret = dtr_list_str0(obj->data_str, obj->length); + break; + case DTP_OVR: + ret = dtr_list_override(obj); + break; + case DTP_REG: + /* <#address-cells #size-cells> */ + ret = dtr_list_reg(obj); + break; + case DTP_INTRUPT: + ret = dtr_list_interrupts(obj); + break; + case DTP_INTRUPT_EX: + /* <phref, #interrupt-cells"> */ + ret = dtr_list_phref(obj, "#interrupt-cells"); + break; + case DTP_CLOCKS: + /* <phref, #clock-cells"> */ + ret = dtr_list_phref(obj, "#clock-cells"); + break; + case DTP_GPIOS: + /* <phref, #gpio-cells"> */ + ret = dtr_list_phref(obj, "#gpio-cells"); + break; + case DTP_DMAS: + /* <phref, #dma-cells"> */ + ret = dtr_list_phref(obj, "#dma-cells"); + break; + case DTP_PH: + case DTP_HEX: + if (obj->length % 4) + ret = dtr_list_byte((uint8_t*)obj->data, obj->length); + else + ret = dtr_list_hex(obj->data, obj->length / 4); + break; + case DTP_PH_REF: + ret = dtr_elem_phref(obj->dt, *obj->data_int, 1); + break; + case DTP_UINT: + ret = dtr_elem_uint(*obj->data_int); + break; + case DTP_UNK: + default: + if (obj->length > 64) /* maybe should use #define at the top */ + ret = g_strdup_printf(ret, "{data} (%lu bytes)", obj->length); + else + ret = dtr_list_byte((uint8_t*)obj->data, obj->length); + break; + } + + return ret; +} + +dtr_obj *dtr_get_parent_obj(dtr_obj *obj) { + char *slash, *parent; + dtr_obj *ret = NULL; + + if (obj == NULL) + return NULL; + + parent = strdup(obj->path); + slash = strrchr(parent, '/'); + if (slash != NULL) { + *slash = 0; + if (strlen(parent) > 0) + ret = dtr_obj_read(obj->dt, parent); + else + ret = dtr_obj_read(obj->dt, "/"); + } + free(parent); + return ret; +} + +/* find the value of a path-inherited property by climbing the path */ +int dtr_inh_find(dtr_obj *obj, char *qprop, int limit) { + dtr_obj *tobj, *pobj, *qobj; + uint32_t ret = 0; + int i, found = 0; + + if (!limit) limit = 1000; + + tobj = obj; + while (tobj != NULL) { + pobj = dtr_get_parent_obj(tobj); + if (tobj != obj) + dtr_obj_free(tobj); + if (!limit || pobj == NULL) break; + qobj = dtr_get_prop_obj(obj->dt, pobj, qprop); + if (qobj != NULL) { + ret = be32toh(*qobj->data_int); + found = 1; + dtr_obj_free(qobj); + break; + } + tobj = pobj; + limit--; + } + dtr_obj_free(pobj); + + if (!found) { + i = 0; + while(default_values[i].name != NULL) { + if (strcmp(default_values[i].name, qprop) == 0) { + ret = default_values[i].v; + dtr_msg(obj->dt, "Using default value %d for %s in %s\n", ret, qprop, obj->path); + break; + } + i++; + } + } + + return ret; +} + +void _dtr_read_aliases(dtr *s) { + gchar *dir_path; + GDir *dir; + const gchar *fn; + dtr_obj *anode, *prop; + dtr_map *al; + anode = dtr_obj_read(s, "/aliases"); + + dir_path = g_strdup_printf("%s/aliases", s->base_path); + dir = g_dir_open(dir_path, 0 , NULL); + if (dir) { + while((fn = g_dir_read_name(dir)) != NULL) { + prop = dtr_get_prop_obj(s, anode, fn); + if (prop->type == DTP_STR) { + if (*prop->data_str == '/') { + al = dtr_map_add(s->aliases, 0, prop->name, prop->data_str); + if (s->aliases == NULL) + s->aliases = al; + } + } + dtr_obj_free(prop); + } + } + g_dir_close(dir); + g_free(dir_path); + dtr_obj_free(anode); + dtr_map_sort(s->aliases, 0); +} + +void _dtr_read_symbols(dtr *s) { + gchar *dir_path; + GDir *dir; + const gchar *fn; + dtr_obj *anode, *prop; + dtr_map *al; + anode = dtr_obj_read(s, "/__symbols__"); + + dir_path = g_strdup_printf("%s/__symbols__", s->base_path); + dir = g_dir_open(dir_path, 0 , NULL); + if (dir) { + while((fn = g_dir_read_name(dir)) != NULL) { + prop = dtr_get_prop_obj(s, anode, fn); + if (prop->type == DTP_STR) { + if (*prop->data_str == '/') { + al = dtr_map_add(s->symbols, 0, prop->name, prop->data_str); + if (s->symbols == NULL) + s->symbols = al; + } + } + dtr_obj_free(prop); + } + } + g_dir_close(dir); + g_free(dir_path); + dtr_obj_free(anode); + dtr_map_sort(s->symbols, 0); +} + +/* TODO: rewrite */ +void _dtr_map_phandles(dtr *s, char *np) { + gchar *dir_path; + gchar *ftmp, *ntmp, *ptmp; + const gchar *fn; + GDir *dir; + dtr_obj *prop, *ph_prop; + dtr_map *ph; + uint32_t phandle; + + if (np == NULL) np = ""; + dir_path = g_strdup_printf("%s/%s", s->base_path, np); + + prop = dtr_obj_read(s, np); + dir = g_dir_open(dir_path, 0 , NULL); + if (dir) { + while((fn = g_dir_read_name(dir)) != NULL) { + ftmp = g_strdup_printf("%s/%s", dir_path, fn); + if ( g_file_test(ftmp, G_FILE_TEST_IS_DIR) ) { + ntmp = g_strdup_printf("%s/%s", np, fn); + ptmp = g_strdup_printf("%s/phandle", ntmp); + ph_prop = dtr_obj_read(s, ptmp); + if (ph_prop != NULL) { + ph = dtr_map_add(s->phandles, be32toh(*ph_prop->data_int), NULL, ntmp); + if (s->phandles == NULL) + s->phandles = ph; + } + _dtr_map_phandles(s, ntmp); + g_free(ptmp); + g_free(ntmp); + dtr_obj_free(ph_prop); + } + g_free(ftmp); + } + } + g_dir_close(dir); + dtr_obj_free(prop); + dtr_map_sort(s->phandles, 1); +} + +/* + * Maybe these should move to devicetree.c, but would have to expose + * struct internals. + */ + +/* kvl: 0 = key is label, 1 = key is v */ +char *dtr_map_info_section(dtr *s, dtr_map *map, char *title, int kvl) { + gchar *tmp, *ret; + const gchar *sym; + ret = g_strdup_printf("[%s]\n", _(title)); + dtr_map *it = map; + while(it != NULL) { + if (kvl) { + sym = dtr_symbol_lookup_by_path(s, it->path); + if (sym != NULL) + tmp = g_strdup_printf("%s0x%x (%s)=%s\n", ret, + it->v, sym, it->path); + else + tmp = g_strdup_printf("%s0x%x=%s\n", ret, + it->v, it->path); + } else + tmp = g_strdup_printf("%s%s=%s\n", ret, + it->label, it->path); + g_free(ret); + ret = tmp; + it = it->next; + } + + return ret; +} + +char *dtr_maps_info(dtr *s) { + gchar *ph_map, *al_map, *sy_map, *ret; + + ph_map = dtr_map_info_section(s, s->phandles, _("phandle Map"), 1); + al_map = dtr_map_info_section(s, s->aliases, _("Alias Map"), 0); + sy_map = dtr_map_info_section(s, s->symbols, _("Symbol Map"), 0); + ret = g_strdup_printf("%s%s%s", ph_map, sy_map, al_map); + g_free(ph_map); + g_free(al_map); + g_free(sy_map); + return ret; +} + +char *appf(char *src, char *fmt, ...) { + gchar *buf, *ret; + va_list args; + + va_start(args, fmt); + buf = g_strdup_vprintf(fmt, args); + va_end(args); + + if (src != NULL) { + ret = g_strdup_printf("%s%s%s", src, sp_sep(src), buf); + g_free(buf); + g_free(src); + } else + ret = buf; + + return ret; +} + diff --git a/modules/devices/devicetree/pmac_data.c b/modules/devices/devicetree/pmac_data.c new file mode 100644 index 00000000..b236aef1 --- /dev/null +++ b/modules/devices/devicetree/pmac_data.c @@ -0,0 +1,98 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@hardinfo.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "cpu_util.h" /* for PROC_CPUINFO */ + +static gchar *ppc_mac_details(void) { + int i = 0; + gchar *ret = NULL; + gchar *platform = NULL; + gchar *model = NULL; + gchar *machine = NULL; + gchar *motherboard = NULL; + gchar *detected_as = NULL; + gchar *pmac_flags = NULL; + gchar *l2_cache = NULL; + gchar *pmac_gen = NULL; + + FILE *cpuinfo; + gchar buffer[128]; + + cpuinfo = fopen(PROC_CPUINFO, "r"); + if (!cpuinfo) + return NULL; + while (fgets(buffer, 128, cpuinfo)) { + gchar **tmp = g_strsplit(buffer, ":", 2); + if (tmp[1] == NULL) { + g_strfreev(tmp); + continue; + } + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); + get_str("platform", platform); + get_str("model", model); + get_str("machine", machine); + get_str("motherboard", motherboard); + get_str("detected as", detected_as); + get_str("pmac flags", pmac_flags); + get_str("L2 cache", l2_cache); + get_str("pmac-generation", pmac_gen); + } + fclose(cpuinfo); + + if (machine == NULL) + goto pmd_exit; + + UNKIFNULL(platform); + UNKIFNULL(model); + UNKIFNULL(motherboard); + UNKIFNULL(detected_as); + UNKIFNULL(pmac_flags); + UNKIFNULL(l2_cache); + UNKIFNULL(pmac_gen); + + ret = g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n", + _("Apple Power Macintosh"), + _("Platform"), platform, + _("Model"), model, + _("Machine"), machine, + _("Motherboard"), motherboard, + _("Detected as"), detected_as, + _("PMAC Flags"), pmac_flags, + _("L2 Cache"), l2_cache, + _("PMAC Generation"), pmac_gen ); + +pmd_exit: + g_free(platform); + g_free(model); + g_free(machine); + g_free(motherboard); + g_free(detected_as); + g_free(pmac_flags); + g_free(l2_cache); + g_free(pmac_gen); + return ret; +} diff --git a/modules/devices/devicetree/rpi_data.c b/modules/devices/devicetree/rpi_data.c new file mode 100644 index 00000000..d0132e3a --- /dev/null +++ b/modules/devices/devicetree/rpi_data.c @@ -0,0 +1,166 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@hardinfo.org> + * This file from: rpiz - https://github.com/bp0/rpiz + * Copyright (C) 2017 Burt P. <pburt0@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +static char unk[] = "(Unknown)"; + +/* information table from: http://elinux.org/RPi_HardwareHistory */ +static struct { + char *value, *intro, *model, *pcb, *mem, *mfg, *soc; +} rpi_boardinfo[] = { +/* Value Introduction Model Name PCB rev. Memory(spec) Manufacturer SOC(spec) * + * Raspberry Pi %s */ + { unk, unk, unk, unk, unk, unk, NULL }, + { "Beta", "Q1 2012", "B (Beta)", unk, "256MB", "(Beta board)", NULL }, + { "0002", "Q1 2012", "B", "1.0", "256MB", unk, "BCM2835" }, + { "0003", "Q3 2012", "B (ECN0001)", "1.0", "256MB", "(Fuses mod and D14 removed)", NULL }, + { "0004", "Q3 2012", "B", "2.0", "256MB", "Sony", NULL }, + { "0005", "Q4 2012", "B", "2.0", "256MB", "Qisda", NULL }, + { "0006", "Q4 2012", "B", "2.0", "256MB", "Egoman", NULL }, + { "0007", "Q1 2013", "A", "2.0", "256MB", "Egoman", NULL }, + { "0008", "Q1 2013", "A", "2.0", "256MB", "Sony", NULL }, + { "0009", "Q1 2013", "A", "2.0", "256MB", "Qisda", NULL }, + { "000d", "Q4 2012", "B", "2.0", "512MB", "Egoman", NULL }, + { "000e", "Q4 2012", "B", "2.0", "512MB", "Sony", NULL }, + { "000f", "Q4 2012", "B", "2.0", "512MB", "Qisda", NULL }, + { "0010", "Q3 2014", "B+", "1.0", "512MB", "Sony", NULL }, + { "0011", "Q2 2014", "Compute Module 1", "1.0", "512MB", "Sony", NULL }, + { "0012", "Q4 2014", "A+", "1.1", "256MB", "Sony", NULL }, + { "0013", "Q1 2015", "B+", "1.2", "512MB", unk, NULL }, + { "0014", "Q2 2014", "Compute Module 1", "1.0", "512MB", "Embest", NULL }, + { "0015", unk, "A+", "1.1", "256MB/512MB", "Embest", NULL }, + { "a01040", unk, "2 Model B", "1.0", "1GB", "Sony", "BCM2836" }, + { "a01041", "Q1 2015", "2 Model B", "1.1", "1GB", "Sony", "BCM2836" }, + { "a21041", "Q1 2015", "2 Model B", "1.1", "1GB", "Embest", "BCM2836" }, + { "a22042", "Q3 2016", "2 Model B", "1.2", "1GB", "Embest", "BCM2837" }, /* (with BCM2837) */ + { "900021", "Q3 2016", "A+", "1.1", "512MB", "Sony", NULL }, + { "900032", "Q2 2016?", "B+", "1.2", "512MB", "Sony", NULL }, + { "900092", "Q4 2015", "Zero", "1.2", "512MB", "Sony", NULL }, + { "900093", "Q2 2016", "Zero", "1.3", "512MB", "Sony", NULL }, + { "920093", "Q4 2016?", "Zero", "1.3", "512MB", "Embest", NULL }, + { "9000c1", "Q1 2017", "Zero W", "1.1", "512MB", "Sony", NULL }, + { "a02082", "Q1 2016", "3 Model B", "1.2", "1GB", "Sony", "BCM2837" }, + { "a020a0", "Q1 2017", "Compute Module 3 or CM3 Lite", "1.0", "1GB", "Sony", NULL }, + { "a22082", "Q1 2016", "3 Model B", "1.2", "1GB", "Embest", "BCM2837" }, + { "a32082", "Q4 2016", "3 Model B", "1.2", "1GB", "Sony Japan", NULL }, + { NULL, NULL, NULL, NULL, NULL, NULL, NULL } +}; + + +/* return number of chars to skip */ +static int rpi_ov_check(const char *r_code) { + /* sources differ. prefix is either 1000... or just 1... */ + //if (strncmp(r, "1000", 4) == 0) + // return 4; + if (strncmp(r_code, "1", 1) == 0) + return 1; + return 0; +} + +static int rpi_code_match(const char* code0, const char* code1) { + int c0, c1; + if (code0 == NULL || code1 == NULL) return 0; + c0 = strtol(code0, NULL, 16); + c1 = strtol(code1, NULL, 16); + if (c0 && c1) + return (c0 == c1) ? 1 : 0; + else + return (strcmp(code0, code1) == 0) ? 1 : 0; +} + +static int rpi_find_board(const char *r_code) { + int i = 0; + char *r = (char*)r_code; + if (r_code == NULL) + return 0; + /* ignore the overvolt prefix */ + r += rpi_ov_check(r_code); + while (rpi_boardinfo[i].value != NULL) { + if (rpi_code_match(r, rpi_boardinfo[i].value)) + return i; + + i++; + } + return 0; +} + +/* ------------------------- */ + +#include "cpu_util.h" /* for PROC_CPUINFO */ + +static gchar *rpi_board_details(void) { + int i = 0; + gchar *ret = NULL; + gchar *soc = NULL; + gchar *serial = NULL; + gchar *revision = NULL; + int ov = 0; + FILE *cpuinfo; + gchar buffer[128]; + + cpuinfo = fopen(PROC_CPUINFO, "r"); + if (!cpuinfo) + return NULL; + while (fgets(buffer, 128, cpuinfo)) { + gchar **tmp = g_strsplit(buffer, ":", 2); + if (tmp[1] == NULL) { + g_strfreev(tmp); + continue; + } + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); + get_str("Revision", revision); + get_str("Hardware", soc); + get_str("Serial", serial); + } + fclose(cpuinfo); + + if (revision == NULL || soc == NULL) { + g_free(soc); + g_free(revision); + return NULL; + } + + ov = rpi_ov_check(revision); + i = rpi_find_board(revision); + ret = g_strdup_printf("[%s]\n" + "%s=%s %s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n", + _("Raspberry Pi"), + _("Board Name"), _("Raspberry Pi"), rpi_boardinfo[i].model, + _("PCB Revision"), rpi_boardinfo[i].pcb, + _("Introduction"), rpi_boardinfo[i].intro, + _("Manufacturer"), rpi_boardinfo[i].mfg, + _("RCode"), rpi_boardinfo[i].value, + _("SOC (spec)"), rpi_boardinfo[i].soc, + _("Memory (spec)"), rpi_boardinfo[i].mem, + _("Serial Number"), serial, + _("Permanent overvolt bit"), (ov) ? C_("rpi-ov-bit", "Set") : C_("rpi-ov-bit", "Not set") ); + + g_free(soc); + g_free(revision); + return ret; +} diff --git a/modules/devices/devmemory.c b/modules/devices/devmemory.c index 7131536c..080e2bbe 100644 --- a/modules/devices/devmemory.c +++ b/modules/devices/devmemory.c @@ -23,10 +23,10 @@ GHashTable *memlabels = NULL; void scan_memory_do(void) { - gchar **keys, *tmp; + gchar **keys, *tmp, *tmp_label; static gint offset = -1; gint i; - + if (offset == -1) { /* gah. linux 2.4 adds three lines of data we don't need in /proc/meminfo */ @@ -38,38 +38,42 @@ void scan_memory_do(void) offset = 0; } } - + g_file_get_contents("/proc/meminfo", &meminfo, NULL, NULL); - + keys = g_strsplit(meminfo, "\n", 0); g_free(meminfo); g_free(lginterval); - + meminfo = g_strdup(""); lginterval = g_strdup(""); - + for (i = offset; keys[i]; i++) { gchar **newkeys = g_strsplit(keys[i], ":", 0); - + if (!newkeys[0]) { g_strfreev(newkeys); break; } - + + g_strstrip(newkeys[0]); g_strstrip(newkeys[1]); - - if ((tmp = g_hash_table_lookup(memlabels, newkeys[0]))) { - g_free(newkeys[0]); - newkeys[0] = g_strdup(tmp); - } - + + /* try to find a localizable label */ + tmp = g_hash_table_lookup(memlabels, newkeys[0]); + if (tmp) + tmp_label = _(tmp); + else + tmp_label = ""; /* or newkeys[0] */ + /* although it doesn't matter... */ + moreinfo_add_with_prefix("DEV", newkeys[0], g_strdup(newkeys[1])); - tmp = g_strconcat(meminfo, newkeys[0], "=", newkeys[1], "\n", NULL); + tmp = g_strconcat(meminfo, newkeys[0], "=", newkeys[1], "|", tmp_label, "\n", NULL); g_free(meminfo); meminfo = tmp; - + tmp = g_strconcat(lginterval, "UpdateInterval$", newkeys[0], "=1000\n", NULL); g_free(lginterval); @@ -86,21 +90,21 @@ void init_memory_labels(void) char *proc_label; char *real_label; } proc2real[] = { - { "MemTotal", N_("Total Memory") }, - { "MemFree", N_("Free Memory") }, - { "SwapCached", N_("Cached Swap") }, - { "HighTotal", N_("High Memory") }, - { "HighFree", N_("Free High Memory") }, - { "LowTotal", N_("Low Memory") }, - { "LowFree", N_("Free Low Memory") }, - { "SwapTotal", N_("Virtual Memory") }, - { "SwapFree", N_("Free Virtual Memory") }, + { "MemTotal", N_("Total Memory") }, + { "MemFree", N_("Free Memory") }, + { "SwapCached", N_("Cached Swap") }, + { "HighTotal", N_("High Memory") }, + { "HighFree", N_("Free High Memory") }, + { "LowTotal", N_("Low Memory") }, + { "LowFree", N_("Free Low Memory") }, + { "SwapTotal", N_("Virtual Memory") }, + { "SwapFree", N_("Free Virtual Memory") }, { NULL }, }; gint i; memlabels = g_hash_table_new(g_str_hash, g_str_equal); - + for (i = 0; proc2real[i].proc_label; i++) { g_hash_table_insert(memlabels, proc2real[i].proc_label, _(proc2real[i].real_label)); diff --git a/modules/devices/dmi.c b/modules/devices/dmi.c index 61cea65d..5f87df13 100644 --- a/modules/devices/dmi.c +++ b/modules/devices/dmi.c @@ -22,7 +22,7 @@ #include <sys/types.h> #include "devices.h" - + typedef struct _DMIInfo DMIInfo; struct _DMIInfo { @@ -35,10 +35,14 @@ DMIInfo dmi_info_table[] = { { "$BIOS", NULL, NULL }, { "Date", "/sys/class/dmi/id/bios_date", "bios-release-date" }, { "Vendor", "/sys/class/dmi/id/bios_vendor", "bios-vendor" }, - { "Version", "/sys/class/dmi/id/bios_version", "bios-version" }, + { "Version#0", "/sys/class/dmi/id/bios_version", "bios-version" }, { "$Board", NULL, NULL }, { "Name", "/sys/class/dmi/id/board_name", "baseboard-product-name" }, { "Vendor", "/sys/class/dmi/id/board_vendor", "baseboard-manufacturer" }, + { "$Product", NULL, NULL }, + { "Name", "/sys/class/dmi/id/product_name", "system-product-name" }, + { "Family", "/sys/class/dmi/id/product_family", "system-product-family" }, + { "Version#1", "/sys/class/dmi/id/product_version", "system-product-version" }, }; gchar *dmi_info = NULL; @@ -62,16 +66,16 @@ gboolean dmi_get_info_dmidecode() g_free(dmi_info); dmi_info = NULL; } - + for (i = 0; i < G_N_ELEMENTS(dmi_info_table); i++) { info = &dmi_info_table[i]; - + if (*(info->name) == '$') { group = info->name + 1; dmi_info = h_strdup_cprintf("[%s]\n", dmi_info, group); } else { gchar *temp; - + if (!info->param) continue; @@ -84,7 +88,7 @@ gboolean dmi_get_info_dmidecode() dmi_failed = TRUE; break; } - + add_to_moreinfo(group, info->name, buffer); const gchar *url = vendor_get_url(buffer); @@ -115,14 +119,14 @@ gboolean dmi_get_info_dmidecode() dmi_failed = TRUE; break; } - } + } } - + if (dmi_failed) { g_free(dmi_info); dmi_info = NULL; } - + return !dmi_failed; } @@ -132,17 +136,17 @@ gboolean dmi_get_info_sys() gchar buffer[256]; const gchar *group = NULL; DMIInfo *info; - gboolean dmi_failed = FALSE; + gboolean dmi_succeeded = FALSE; gint i; - + if (dmi_info) { g_free(dmi_info); dmi_info = NULL; } - + for (i = 0; i < G_N_ELEMENTS(dmi_info_table); i++) { info = &dmi_info_table[i]; - + if (*(info->name) == '$') { group = info->name + 1; dmi_info = h_strdup_cprintf("[%s]\n", dmi_info, group); @@ -152,7 +156,7 @@ gboolean dmi_get_info_sys() fclose(dmi_file); add_to_moreinfo(group, info->name, buffer); - + const gchar *url = vendor_get_url(buffer); if (url) { const gchar *vendor = vendor_get_name(buffer); @@ -176,31 +180,34 @@ gboolean dmi_get_info_sys() info->name, g_strstrip(buffer)); } + dmi_succeeded = TRUE; } else { - dmi_failed = TRUE; - break; + dmi_info = h_strdup_cprintf("%s=%s\n", + dmi_info, + info->name, + _("(Not available; Perhaps try running HardInfo as root.)") ); } - } + } } - - if (dmi_failed) { + + if (!dmi_succeeded) { g_free(dmi_info); dmi_info = NULL; } - - return !dmi_failed; + + return dmi_succeeded; } void __scan_dmi() { gboolean dmi_ok; - + dmi_ok = dmi_get_info_sys(); - + if (!dmi_ok) { dmi_ok = dmi_get_info_dmidecode(); } - + if (!dmi_ok) { dmi_info = g_strdup("[No DMI information]\n" "There was an error retrieving the information.=\n" diff --git a/modules/devices/ia64/processor.c b/modules/devices/ia64/processor.c index 55e5e3a8..c4d06a71 100644 --- a/modules/devices/ia64/processor.c +++ b/modules/devices/ia64/processor.c @@ -18,61 +18,198 @@ #include "hardinfo.h" #include "devices.h" +#include "cpu_util.h" GSList * processor_scan(void) { - Processor *processor; + GSList *procs = NULL; + Processor *processor = NULL; FILE *cpuinfo; gchar buffer[128]; + gchar *rep_pname = NULL; + GSList *pi = NULL; - cpuinfo = fopen("/proc/cpuinfo", "r"); + cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) - return NULL; + return NULL; - processor = g_new0(Processor, 1); +#define CHECK_FOR(k) (g_str_has_prefix(tmp[0], k)) while (fgets(buffer, 128, cpuinfo)) { - gchar **tmp = g_strsplit(buffer, ":", 2); + gchar **tmp = g_strsplit(buffer, ":", 2); + if (tmp[0] && tmp[1]) { + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); + } else { + g_strfreev(tmp); + continue; + } + + get_str("Processor", rep_pname); + + if ( CHECK_FOR("processor") ) { + /* finish previous */ + if (processor) { + procs = g_slist_append(procs, processor); + } + + /* start next */ + processor = g_new0(Processor, 1); + processor->id = atol(tmp[1]); + + if (rep_pname) + processor->model_name = g_strdup(rep_pname); - if (tmp[0] && tmp[1]) { - tmp[0] = g_strstrip(tmp[0]); - tmp[1] = g_strstrip(tmp[1]); + g_strfreev(tmp); + continue; + } - get_str("vendor", processor->model_name); - get_str("arch", processor->vendor_id); - get_str("family", processor->strmodel); - get_float("BogoMIPS", processor->bogomips); + if (!processor && + ( CHECK_FOR("vendor") + || CHECK_FOR("arch") + || CHECK_FOR("family") ) ) { - } - g_strfreev(tmp); + /* single proc/core may not have "processor : n" */ + processor = g_new0(Processor, 1); + processor->id = 0; + + if (rep_pname) + processor->model_name = g_strdup(rep_pname); + } + + if (processor) { + get_str("vendor", processor->vendor_id); + get_str("archrev", processor->archrev); + get_str("arch", processor->arch); + get_str("family", processor->family); + get_str("features", processor->features); + get_int("model", processor->model); + get_int("revision", processor->revision); + get_float("BogoMIPS", processor->bogomips); + get_float("cpu MHz", processor->cpu_mhz); + get_int("cpu regs", processor->cpu_regs); + } + g_strfreev(tmp); } - processor->cpu_mhz = 0.0f; - + if (processor) + procs = g_slist_append(procs, processor); + + g_free(rep_pname); fclose(cpuinfo); - return g_slist_append(NULL, processor); + /* TODO: redup */ + + /* data not from /proc/cpuinfo */ + for (pi = procs; pi; pi = pi->next) { + processor = (Processor *) pi->data; + + /* strings can't be null or segfault later */ + STRIFNULL(processor->model_name, _("IA64 Processor") ); + UNKIFNULL(processor->vendor_id); + STRIFNULL(processor->arch, "IA-64"); + STRIFNULL(processor->archrev, "0"); + UNKIFNULL(processor->family); + UNKIFNULL(processor->features); + + /* topo & freq */ + processor->cpufreq = cpufreq_new(processor->id); + processor->cputopo = cputopo_new(processor->id); + + if (processor->cpufreq->cpukhz_max) + processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; + + } + + return procs; +} + +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); } gchar * -processor_get_info(GSList *processors) +processor_get_detailed_info(Processor *processor) { - Processor *processor = (Processor *)processors->data; - - return g_strdup_printf("[Processor]\n" - "Model=%s\n" - "Architecture=%s\n" - "Family=%sMHz\n" - "BogoMIPS=%s\n" - "Byte Order=%s\n", - processor->model_name, - processor->vendor_id, - processor->strmodel, - processor->bogomips, -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - "Little Endian" -#else - "Big Endian" -#endif - ); + gchar *tmp_cpufreq, *tmp_topology, *ret; + + tmp_topology = cputopo_section_str(processor->cputopo); + tmp_cpufreq = cpufreq_section_str(processor->cpufreq); + + ret = g_strdup_printf("[%s]\n" + "%s=%s\n" /* name */ + "%s=%s\n" /* vendor */ + "%s=%s\n" /* arch */ + "%s=%s\n" /* archrev */ + "%s=%s\n" /* family */ + "%s=%d\n" /* model no. */ + "%s=%d\n" /* revision */ + "%s=%.2f %s\n" /* frequency */ + "%s=%.2f\n" /* bogomips */ + "%s=%s\n" /* byte order */ + "%s=%d\n" /* regs */ + "%s=%s\n" /* features */ + "%s" /* topology */ + "%s" /* frequency scaling */ + "%s",/* empty */ + _("Processor"), + _("Name"), processor->model_name, + _("Vendor"), processor->vendor_id, + _("Architecture"), processor->arch, + _("Architecture Revision"), processor->archrev, + _("Family"), processor->family, + _("Model"), processor->model, + _("Revision"), processor->revision, + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("BogoMips"), processor->bogomips, + _("Byte Order"), byte_order_str(), + _("CPU regs"), processor->cpu_regs, + _("Features"), processor->features, + tmp_topology, + tmp_cpufreq, + ""); + g_free(tmp_cpufreq); + g_free(tmp_topology); + return ret; +} + +gchar *processor_get_info(GSList * processors) +{ + Processor *processor; + + if (g_slist_length(processors) > 1) { + gchar *ret, *tmp, *hashkey; + GSList *l; + + tmp = g_strdup(""); + + for (l = processors; l; l = l->next) { + processor = (Processor *) l->data; + + tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", + tmp, processor->id, + processor->model_name, + processor->cpu_mhz, _("MHz")); + + hashkey = g_strdup_printf("CPU%d", processor->id); + moreinfo_add_with_prefix("DEV", hashkey, + processor_get_detailed_info(processor)); + g_free(hashkey); + } + + ret = g_strdup_printf("[$ShellParam$]\n" + "ViewType=1\n" + "[Processors]\n" + "%s", tmp); + g_free(tmp); + + return ret; + } + + processor = (Processor *) processors->data; + return processor_get_detailed_info(processor); } diff --git a/modules/devices/inputdevices.c b/modules/devices/inputdevices.c index d3f8847f..cf1728a9 100644 --- a/modules/devices/inputdevices.c +++ b/modules/devices/inputdevices.c @@ -85,55 +85,55 @@ __scan_input_devices(void) if (name && strstr(name, "PC Speaker")) { d = 3; // INPUT_PCSPKR } - - tmp = g_strdup_printf("INP%d", ++n); - input_list = h_strdup_cprintf("$%s$%s=\n", - input_list, - tmp, name); - input_icons = h_strdup_cprintf("Icon$%s$%s=%s\n", - input_icons, - tmp, name, - input_devices[d].icon); - gchar *strhash = g_strdup_printf("[Device Information]\n" - "Name=%s\n" - "Type=%s\n" - "Bus=0x%x\n", - name, - input_devices[d].name, - bus); - - const gchar *url = vendor_get_url(name); - if (url) { - strhash = h_strdup_cprintf("Vendor=%s (%s)\n", - strhash, - vendor_get_name(name), - url); - } else { - strhash = h_strdup_cprintf("Vendor=%x\n", - strhash, - vendor); - } - strhash = h_strdup_cprintf("Product=0x%x\n" - "Version=0x%x\n", - strhash, product, version); - - if (phys && phys[1] != 0) { - strhash = h_strdup_cprintf("Connected to=%s\n", - strhash, phys); - } - - if (phys && strstr(phys, "ir")) { - strhash = h_strdup_cprintf("InfraRed port=yes\n", - strhash); - } - - moreinfo_add_with_prefix("DEV", tmp, strhash); - g_free(tmp); + tmp = g_strdup_printf("INP%d", ++n); + input_list = h_strdup_cprintf("$%s$%s=\n", + input_list, + tmp, name); + input_icons = h_strdup_cprintf("Icon$%s$%s=%s\n", + input_icons, + tmp, name, + input_devices[d].icon); + + const gchar *v_url = (gchar*)vendor_get_url(name); + const gchar *v_name = (gchar*)vendor_get_name(name); + gchar *v_str = NULL; + if (v_url != NULL) + v_str = g_strdup_printf("[0x%x] %s (%s)", vendor, v_name, v_url); + else + v_str = g_strdup_printf("0x%x", vendor); + v_str = hardinfo_clean_value(v_str, 1); + name = hardinfo_clean_value(name, 1); + + gchar *strhash = g_strdup_printf("[%s]\n" + /* Name */ "%s=%s\n" + /* Type */ "%s=%s\n" + /* Bus */ "%s=0x%x\n" + /* Vendor */ "%s=%s\n" + /* Product */"%s=0x%x\n" + /* Version */"%s=0x%x\n", + _("Device Information"), + _("Name"), name, + _("Type"), input_devices[d].name, + _("Bus"), bus, + _("Vendor"), v_str, + _("Product"), product, + _("Version"), version ); - g_free(phys); - g_free(name); - } + if (phys && phys[1] != 0) { + strhash = h_strdup_cprintf("%s=%s\n", strhash, _("Connected to"), phys); + } + + if (phys && strstr(phys, "ir")) { + strhash = h_strdup_cprintf("%s=%s\n", strhash, _("InfraRed port"), _("Yes") ); + } + + moreinfo_add_with_prefix("DEV", tmp, strhash); + g_free(tmp); + g_free(v_str); + g_free(phys); + g_free(name); + } } fclose(dev); diff --git a/modules/devices/m68k/processor.c b/modules/devices/m68k/processor.c index d9902428..e030732a 100644 --- a/modules/devices/m68k/processor.c +++ b/modules/devices/m68k/processor.c @@ -18,6 +18,7 @@ #include "hardinfo.h" #include "devices.h" +#include "cpu_util.h" GSList * processor_scan(void) @@ -26,54 +27,66 @@ processor_scan(void) FILE *cpuinfo; gchar buffer[128]; - cpuinfo = fopen("/proc/cpuinfo", "r"); + cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) - return NULL; + return NULL; processor = g_new0(Processor, 1); while (fgets(buffer, 128, cpuinfo)) { - gchar **tmp = g_strsplit(buffer, ":", 2); + gchar **tmp = g_strsplit(buffer, ":", 2); - if (tmp[0] && tmp[1]) { - tmp[0] = g_strstrip(tmp[0]); - tmp[1] = g_strstrip(tmp[1]); + if (tmp[0] && tmp[1]) { + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); - get_str("CPU", processor->model_name); - get_float("Clocking", processor->cpu_mhz); - get_float("bogomips", processor->bogomips); - - get_str("FPU", processor->has_fpu); - } - g_strfreev(tmp); + get_str("CPU", processor->model_name); + get_str("MMU", processor->mmu_name); + get_str("FPU", processor->fpu_name); + get_float("Clocking", processor->cpu_mhz); + get_float("BogoMips", processor->bogomips); + get_str("Calibration", processor->calibration); + } + g_strfreev(tmp); } - + gchar *tmp; tmp = g_strconcat("Motorola ", processor->model_name, NULL); g_free(processor->model_name); processor->model_name = tmp; - + fclose(cpuinfo); return g_slist_append(NULL, processor); } +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); +} + gchar * processor_get_info(GSList *processors) { - Processor *processor = (Processor *)processors->data; - - return g_strdup_printf("[Processor]\n" - "Name=%s\n" - "Frequency=%.2fMHz\n" - "BogoMips=%.2f\n" - "Byte Order=%s\n", - processor->model_name, - processor->cpu_mhz, - processor->bogomips, -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - "Little Endian" -#else - "Big Endian" -#endif - ); + Processor *processor = (Processor *)processors->data; + + return g_strdup_printf("[%s]\n" + "%s=%s\n" /* cpu */ + "%s=%s\n" /* mmu */ + "%s=%s\n" /* fpu */ + "%s=%.2f %s\n" /* frequency */ + "%s=%.2f\n" /* bogomips */ + "%s=%s\n" /* byte order */ + "%s=%s\n", /* calibration */ + _("Processor"), + _("Model"), processor->model_name, + _("MMU"), processor->mmu_name, + _("FPU"), processor->fpu_name, + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("BogoMips"), processor->bogomips, + _("Byte Order"), byte_order_str(), + _("Calibration"), processor->calibration + ); } diff --git a/modules/devices/mips/processor.c b/modules/devices/mips/processor.c index 86c9b958..b31af7dd 100644 --- a/modules/devices/mips/processor.c +++ b/modules/devices/mips/processor.c @@ -18,6 +18,7 @@ #include "hardinfo.h" #include "devices.h" +#include "cpu_util.h" GSList * processor_scan(void) @@ -26,24 +27,24 @@ processor_scan(void) FILE *cpuinfo; gchar buffer[128]; - cpuinfo = fopen("/proc/cpuinfo", "r"); + cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) - return NULL; + return NULL; processor = g_new0(Processor, 1); while (fgets(buffer, 128, cpuinfo)) { - gchar **tmp = g_strsplit(buffer, ":", 2); + gchar **tmp = g_strsplit(buffer, ":", 2); - if (tmp[0] && tmp[1]) { - tmp[0] = g_strstrip(tmp[0]); - tmp[1] = g_strstrip(tmp[1]); + if (tmp[0] && tmp[1]) { + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); - get_str("system type", processor->model_name); - get_str("cpu model", processor->vendor_id); - get_float("cpu MHz", processor->cpu_mhz); - get_float("BogoMIPS", processor->bogomips); - } - g_strfreev(tmp); + get_str("system type", processor->vendor_id); + get_str("cpu model", processor->model_name); + get_float("cpu MHz", processor->cpu_mhz); + get_float("BogoMIPS", processor->bogomips); + } + g_strfreev(tmp); } fclose(cpuinfo); @@ -51,25 +52,30 @@ processor_scan(void) return g_slist_append(NULL, processor); } +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); +} + gchar * processor_get_info(GSList *processors) { - Processor *processor = (Processor *)processors->data; - - return g_strdup_printf("[Processor]\n" - "System Type=%s\n" - "CPU Model=%s\n" - "Frequency=%.2fMHz\n" - "BogoMIPS=%.2f\n" - "Byte Order=%s\n", - processor->model_name, - processor->vendor_id, - processor->cpu_mhz, - processor->bogomips, -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - "Little Endian" -#else - "Big Endian" -#endif - ); + Processor *processor = (Processor *)processors->data; + + return g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%s\n" + "%s=%.2f %s\n" /* frequency */ + "%s=%.2f\n" /* bogomips */ + "%s=%s\n", /* byte order */ + _("Processor"), + _("Model"), processor->model_name, + _("System Type"), processor->vendor_id, + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("BogoMips"), processor->bogomips, + _("Byte Order"), byte_order_str() + ); } diff --git a/modules/devices/parisc/processor.c b/modules/devices/parisc/processor.c index 83672126..9ca38d12 100644 --- a/modules/devices/parisc/processor.c +++ b/modules/devices/parisc/processor.c @@ -18,70 +18,193 @@ #include "hardinfo.h" #include "devices.h" +#include "cpu_util.h" GSList * -processors_scan(void) +processor_scan(void) { - Processor *processor; + GSList *procs = NULL; + Processor *processor = NULL; FILE *cpuinfo; gchar buffer[128]; + gchar *rep_pname = NULL; + GSList *pi = NULL; - cpuinfo = fopen("/proc/cpuinfo", "r"); + cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) - return NULL; + return NULL; - processor = g_new0(Processor, 1); +#define CHECK_FOR(k) (g_str_has_prefix(tmp[0], k)) while (fgets(buffer, 128, cpuinfo)) { - gchar **tmp = g_strsplit(buffer, ":", 2); - - if (tmp[0] && tmp[1]) { - tmp[0] = g_strstrip(tmp[0]); - tmp[1] = g_strstrip(tmp[1]); - - get_str("cpu family", processor->model_name); - get_str("cpu", processor->vendor_id); - get_float("cpu MHz", processor->cpu_mhz); - get_float("bogomips", processor->bogomips); - - get_str("model name", processor->strmodel); - - get_int("I-cache", processor->has_fpu); - get_int("D-cache", processor->flags); - - } - g_strfreev(tmp); + gchar **tmp = g_strsplit(buffer, ":", 2); + if (tmp[0] && tmp[1]) { + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); + } else { + g_strfreev(tmp); + continue; + } + + get_str("Processor", rep_pname); + + if ( CHECK_FOR("processor") ) { + /* finish previous */ + if (processor) { + procs = g_slist_append(procs, processor); + } + + /* start next */ + processor = g_new0(Processor, 1); + processor->id = atol(tmp[1]); + + if (rep_pname) + processor->model_name = g_strdup(rep_pname); + + g_strfreev(tmp); + continue; + } + + if (!processor && + ( CHECK_FOR("cpu family") + || CHECK_FOR("cpu MHz") + || CHECK_FOR("cpu") ) ) { + + /* single proc/core may not have "processor : n" */ + processor = g_new0(Processor, 1); + processor->id = 0; + + if (rep_pname) + processor->model_name = g_strdup(rep_pname); + } + + if (processor) { + get_str("cpu family", processor->cpu_family); + get_float("cpu MHz", processor->cpu_mhz); + get_str("cpu", processor->model_name); + get_float("bogomips", processor->bogomips); + get_str("model name", processor->strmodel); + get_str("I-cache", processor->icache_str); + get_str("D-cache", processor->dcache_str); + get_str("hversion", processor->hversion); + get_str("sversion", processor->sversion); + } + g_strfreev(tmp); } + if (processor) + procs = g_slist_append(procs, processor); + + g_free(rep_pname); fclose(cpuinfo); - return g_slist_append(NULL, processor); + /* TODO: redup */ + + /* data not from /proc/cpuinfo */ + for (pi = procs; pi; pi = pi->next) { + processor = (Processor *) pi->data; + + /* strings can't be null or segfault later */ + STRIFNULL(processor->model_name, _("PA-RISC Processor") ); + STRIFNULL(processor->cpu_family, "PA-RISC"); + UNKIFNULL(processor->strmodel); + + /* topo & freq */ + processor->cpufreq = cpufreq_new(processor->id); + processor->cputopo = cputopo_new(processor->id); + + if (processor->cpufreq->cpukhz_max) + processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; + + } + + return procs; +} + +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); } gchar * -processor_get_info(GSList *processors) +processor_get_detailed_info(Processor *processor) +{ + gchar *tmp_cpufreq, *tmp_topology, *ret; + + tmp_topology = cputopo_section_str(processor->cputopo); + tmp_cpufreq = cpufreq_section_str(processor->cpufreq); + + ret = g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" /* model name */ + "%s=%.2f %s\n" /* frequency */ + "%s=%.2f\n" /* bogomips */ + "%s=%s\n" /* byte order */ + "%s=%s\n" /* hversion */ + "%s=%s\n" /* sversion */ + "[%s]\n" + "I-Cache=%s\n" + "D-Cache=%s\n" + "%s" /* topology */ + "%s" /* frequency scaling */ + "%s",/* empty */ + _("Processor"), + _("Model"), processor->model_name, + _("Architecture"), processor->cpu_family, + _("System"), processor->strmodel, + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("BogoMips"), processor->bogomips, + _("Byte Order"), byte_order_str(), + _("HVersion"), processor->hversion, + _("SVersion"), processor->sversion, + _("Cache"), + processor->icache_str, + processor->dcache_str, + tmp_topology, + tmp_cpufreq, + ""); + + g_free(tmp_cpufreq); + g_free(tmp_topology); + return ret; +} + +gchar *processor_get_info(GSList * processors) { - Processor *processor = (Processor *)processors->data; - - return g_strdup_printf("[Processor]\n" - "CPU Family=%s\n" - "CPU=%s\n" - "Frequency=%.2fMHz\n" - "Bogomips=%.2f\n" - "Model Name=%s\n" - "Byte Order=%s\n" - "[Cache]\n" - "I-Cache=%s\n" - "D-Cache=%s\n", - processor->model_name, - processor->vendor_id, - processor->cpu_mhz, - processor->bogomips, - processor->strmodel, -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - "Little Endian", -#else - "Big Endian", -#endif - processor->has_fpu, - processor->flags); + Processor *processor; + + if (g_slist_length(processors) > 1) { + gchar *ret, *tmp, *hashkey; + GSList *l; + + tmp = g_strdup(""); + + for (l = processors; l; l = l->next) { + processor = (Processor *) l->data; + + tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", + tmp, processor->id, + processor->model_name, + processor->cpu_mhz, _("MHz")); + + hashkey = g_strdup_printf("CPU%d", processor->id); + moreinfo_add_with_prefix("DEV", hashkey, + processor_get_detailed_info(processor)); + g_free(hashkey); + } + + ret = g_strdup_printf("[$ShellParam$]\n" + "ViewType=1\n" + "[Processors]\n" + "%s", tmp); + g_free(tmp); + + return ret; + } + + processor = (Processor *) processors->data; + return processor_get_detailed_info(processor); } diff --git a/modules/devices/pci.c b/modules/devices/pci.c index 91ff914d..c1965a63 100644 --- a/modules/devices/pci.c +++ b/modules/devices/pci.c @@ -40,13 +40,13 @@ scan_pci_do(void) gchar buffer[256], *buf, *strhash = NULL, *strdevice = NULL; gchar *category = NULL, *name = NULL, *icon, *lspci_path, *command_line = NULL; gint n = 0, x = 0; - + if ((lspci_path = find_program("lspci")) == NULL) { goto pci_error; } else { command_line = g_strdup_printf("%s -v", lspci_path); } - + if (!_pci_devices) { _pci_devices = g_hash_table_new(g_str_hash, g_str_equal); } @@ -60,11 +60,11 @@ scan_pci_do(void) } } else { gchar *tmp; - + tmp = g_strdup_printf("%s -i '%s'", command_line, buf); g_free(buf); buf = tmp; - + DEBUG("using updated PCI IDs (from %s)", buf); if (!(lspci = popen(tmp, "r"))) { g_free(buf); @@ -103,30 +103,31 @@ scan_pci_do(void) g_strfreev(list); if (irq) - strdevice = h_strdup_cprintf("IRQ=%d\n", strdevice, irq); + strdevice = h_strdup_cprintf("%s=%d\n", strdevice, _("IRQ"), irq); if (freq) - strdevice = h_strdup_cprintf("Frequency=%dMHz\n", strdevice, freq); + strdevice = h_strdup_cprintf("%s=%d %s\n", strdevice, _("Frequency"), freq, _("MHz") ); if (latency) - strdevice = h_strdup_cprintf("Latency=%d\n", strdevice, latency); + strdevice = h_strdup_cprintf("%s=%d\n", strdevice, _("Latency"), latency); - strdevice = h_strdup_cprintf("Bus Master=%s\n", strdevice, bus_master ? "Yes" : "No"); + strdevice = h_strdup_cprintf("%s=%s\n", strdevice, _("Bus Master"), bus_master ? _("Yes") : _("No") ); } else if (!strncmp(buf, "Kernel modules", 14)) { WALK_UNTIL(' '); WALK_UNTIL(':'); buf++; - - strdevice = h_strdup_cprintf("Kernel modules=%s\n", strdevice, buf); + + strdevice = h_strdup_cprintf("%s=%s\n", strdevice, _("Kernel modules"), buf); } else if (!strncmp(buf, "Subsystem", 9)) { WALK_UNTIL(' '); buf++; const gchar *oem_vendor_url = vendor_get_url(buf); - if (oem_vendor_url) - strdevice = h_strdup_cprintf("OEM Vendor=%s (%s)\n", + if (oem_vendor_url) + strdevice = h_strdup_cprintf(_("%s=%s (%s)\n"), strdevice, + _("OEM Vendor"), vendor_get_name(buf), oem_vendor_url); } else if (!strncmp(buf, "Capabilities", 12) - && !strstr(buf, "only to root") && + && !strstr(buf, "only to root") && !strstr(buf, "access denied")) { WALK_UNTIL(' '); WALK_UNTIL(']'); @@ -144,13 +145,13 @@ scan_pci_do(void) WALK_UNTIL('['); sscanf(buf, "[size=%d%c", &mem, &unit); - strdevice = h_strdup_cprintf("Memory#%d=%d%cB (%s%s)\n", - strdevice, ++x, + strdevice = h_strdup_cprintf("%s#%d=%d%cB (%s%s)\n", + strdevice, _("Memory"), ++x, mem, (unit == ']') ? ' ' : unit, _32bit ? "32-bit, " : "", - prefetch ? "prefetchable" : - "non-prefetchable"); + prefetch ? _("prefetchable") : + _("non-prefetchable") ); } else if (!strncmp(buf, "I/O ports at", 12)) { guint io_addr, io_size; @@ -158,8 +159,8 @@ scan_pci_do(void) sscanf(buf, "I/O ports at %x [size=%d]", &io_addr, &io_size); strdevice = - h_strdup_cprintf("I/O ports at#%d=0x%x - 0x%x\n", - strdevice, ++x, io_addr, + h_strdup_cprintf("%s#%d=0x%x - 0x%x\n", + strdevice, _("I/O ports at"), ++x, io_addr, io_addr + io_size - 1); } else if ((buf[0] >= '0' && buf[0] <= '9') && (buf[4] == ':' || buf[2] == ':')) { gint bus, device, function, domain; @@ -197,51 +198,57 @@ scan_pci_do(void) else if (strstr(category, "Multimedia")) icon = "media"; else if (strstr(category, "USB")) icon = "usb"; else icon = "pci"; - + name = g_strdup(buf); g_hash_table_insert(_pci_devices, g_strdup_printf("0000:%02x:%02x.%x", bus, device, function), name); - strhash = g_strdup_printf("PCI%d", n); - strdevice = g_strdup_printf("[Device Information]\n" - "Name=%s\n" - "Class=%s\n" - "Domain=%d\n" - "Bus, device, function=%d, %d, %d\n", - name, category, domain, bus, - device, function); - + strhash = g_strdup_printf("PCI%d", n); + strdevice = g_strdup_printf("[%s]\n" + /* Name */ "%s=%s\n" + /* Class */ "%s=%s\n" + /* Domain */ "%s=%d\n" + /* Bus, device, function */ + "%s=%d, %d, %d\n", + _("Device Information"), + _("Name"), name, + _("Class"), category, + _("Domain"), domain, + _("Bus, device, function"), + bus, device, function); + const gchar *url = vendor_get_url(name); if (url) { - strdevice = h_strdup_cprintf("Vendor=%s (%s)\n", + strdevice = h_strdup_cprintf("%s=%s (%s)\n", strdevice, + _("Vendor"), vendor_get_name(name), url); } - + g_hash_table_insert(_pci_devices, g_strdup_printf("0000:%02x:%02x.%x", bus, device, function), g_strdup(name)); - + pci_list = h_strdup_cprintf("$PCI%d$%s=%s\n", pci_list, n, category, name); n++; } } - + if (pclose(lspci)) { pci_error: /* error (no pci, perhaps?) */ - pci_list = g_strconcat(pci_list, "No PCI devices found=\n", NULL); + pci_list = g_strconcat(pci_list, _("No PCI devices found"), "=\n", NULL); } else if (strhash) { - /* insert the last device */ + /* insert the last device */ moreinfo_add_with_prefix("DEV", strhash, strdevice); g_free(strhash); g_free(category); g_free(name); } - + g_free(lspci_path); g_free(command_line); } diff --git a/modules/devices/ppc/processor.c b/modules/devices/ppc/processor.c index a7988f97..3360a136 100644 --- a/modules/devices/ppc/processor.c +++ b/modules/devices/ppc/processor.c @@ -18,68 +18,189 @@ #include "hardinfo.h" #include "devices.h" +#include "cpu_util.h" GSList * processor_scan(void) { - Processor *processor; + GSList *procs = NULL; + Processor *processor = NULL; FILE *cpuinfo; gchar buffer[128]; + gchar *rep_pname = NULL; + GSList *pi = NULL; - cpuinfo = fopen("/proc/cpuinfo", "r"); + cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) - return NULL; + return NULL; - processor = g_new0(Processor, 1); +#define CHECK_FOR(k) (g_str_has_prefix(tmp[0], k)) while (fgets(buffer, 128, cpuinfo)) { - gchar **tmp = g_strsplit(buffer, ":", 2); + gchar **tmp = g_strsplit(buffer, ":", 2); + if (tmp[0] && tmp[1]) { + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); + } else { + g_strfreev(tmp); + continue; + } + + get_str("Processor", rep_pname); + + if ( CHECK_FOR("processor") ) { + /* finish previous */ + if (processor) { + procs = g_slist_append(procs, processor); + } + + /* start next */ + processor = g_new0(Processor, 1); + processor->id = atol(tmp[1]); + + if (rep_pname) + processor->model_name = g_strdup(rep_pname); - if (tmp[0] && tmp[1]) { - tmp[0] = g_strstrip(tmp[0]); - tmp[1] = g_strstrip(tmp[1]); + g_strfreev(tmp); + continue; + } - get_str("cpu", processor->model_name); - get_str("machine", processor->vendor_id); - get_int("L2 cache", processor->cache_size); - get_float("clock", processor->cpu_mhz); - get_float("bogomips", processor->bogomips); + if (!processor && + ( CHECK_FOR("cpu") + || CHECK_FOR("clock") + || CHECK_FOR("revision") ) ) { - } - g_strfreev(tmp); + /* single proc/core may not have "processor : n" */ + processor = g_new0(Processor, 1); + processor->id = 0; + + if (rep_pname) + processor->model_name = g_strdup(rep_pname); + } + + if (processor) { + get_str("cpu", processor->model_name); + get_str("revision", processor->revision); + get_float("clock", processor->cpu_mhz); + get_float("BogoMIPS", processor->bogomips); + } + g_strfreev(tmp); } - - gchar *tmp = g_strdup_printf("PowerPC %s (%.2fMHz)", - processor->model_name, - processor->cpu_mhz); - g_free(processor->model_name); - processor->model_name = tmp; + if (processor) + procs = g_slist_append(procs, processor); + + g_free(rep_pname); fclose(cpuinfo); - return g_slist_append(NULL, processor); + /* re-duplicate missing data for /proc/cpuinfo variant that de-duplicated it */ +#define REDUP(f) if (dproc->f && !processor->f) processor->f = g_strdup(dproc->f); + Processor *dproc; + GSList *l; + l = procs = g_slist_reverse(procs); + while (l) { + processor = l->data; + if (processor->model_name) { + dproc = processor; + } else if (dproc) { + REDUP(model_name); + REDUP(revision); + } + l = g_slist_next(l); + } + procs = g_slist_reverse(procs); + + /* data not from /proc/cpuinfo */ + for (pi = procs; pi; pi = pi->next) { + processor = (Processor *) pi->data; + + /* strings can't be null or segfault later */ + STRIFNULL(processor->model_name, _("POWER Processor") ); + UNKIFNULL(processor->revision); + + /* topo & freq */ + processor->cpufreq = cpufreq_new(processor->id); + processor->cputopo = cputopo_new(processor->id); + + if (processor->cpufreq->cpukhz_max) + processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; + + } + + return procs; +} + +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); } gchar * -processor_get_info(GSList *processors) +processor_get_detailed_info(Processor *processor) { - Processor *processor = (Processor *)processors->data; - - return g_strdup_printf("[Processor]\n" - "Machine=%s\n" - "CPU=%s\n" - "L2 Cache=%dkB\n" - "Frequency=%.2fMHz\n" - "BogoMips=%.2f\n" - "Byte Order=%s\n", - processor->vendor_id, - processor->model_name, - processor->cache_size, - processor->cpu_mhz, - processor->bogomips, -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - "Little Endian" -#else - "Big Endian" -#endif - ); + gchar *tmp_cpufreq, *tmp_topology, *ret; + + tmp_topology = cputopo_section_str(processor->cputopo); + tmp_cpufreq = cpufreq_section_str(processor->cpufreq); + + ret = g_strdup_printf("[%s]\n" + "%s=%s\n" /* model */ + "%s=%s\n" /* revision */ + "%s=%.2f %s\n" /* frequency */ + "%s=%.2f\n" /* bogomips */ + "%s=%s\n" /* byte order */ + "%s" /* topology */ + "%s" /* frequency scaling */ + "%s",/* empty */ + _("Processor"), + _("Model"), processor->model_name, + _("Revision"), processor->revision, + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("BogoMips"), processor->bogomips, + _("Byte Order"), byte_order_str(), + tmp_topology, + tmp_cpufreq, + ""); + g_free(tmp_cpufreq); + g_free(tmp_topology); + return ret; +} + +gchar *processor_get_info(GSList * processors) +{ + Processor *processor; + + if (g_slist_length(processors) > 1) { + gchar *ret, *tmp, *hashkey; + GSList *l; + + tmp = g_strdup(""); + + for (l = processors; l; l = l->next) { + processor = (Processor *) l->data; + + tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", + tmp, processor->id, + processor->model_name, + processor->cpu_mhz, _("MHz")); + + hashkey = g_strdup_printf("CPU%d", processor->id); + moreinfo_add_with_prefix("DEV", hashkey, + processor_get_detailed_info(processor)); + g_free(hashkey); + } + + ret = g_strdup_printf("[$ShellParam$]\n" + "ViewType=1\n" + "[Processors]\n" + "%s", tmp); + g_free(tmp); + + return ret; + } + + processor = (Processor *) processors->data; + return processor_get_detailed_info(processor); } diff --git a/modules/devices/riscv/processor.c b/modules/devices/riscv/processor.c new file mode 100644 index 00000000..afddf89d --- /dev/null +++ b/modules/devices/riscv/processor.c @@ -0,0 +1,233 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@hardinfo.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* source: https://github.com/riscv/riscv-linux/blob/riscv-next/arch/riscv/kernel/cpu.c */ + +#include "hardinfo.h" +#include "devices.h" +#include "cpu_util.h" + +#include "riscv_data.h" +#include "riscv_data.c" + +GSList * +processor_scan(void) +{ + GSList *procs = NULL; + Processor *processor = NULL; + FILE *cpuinfo; + gchar buffer[128]; + gchar *rep_pname = NULL; + gchar *tmpfreq_str = NULL; + GSList *pi = NULL; + + cpuinfo = fopen(PROC_CPUINFO, "r"); + if (!cpuinfo) + return NULL; + +#define CHECK_FOR(k) (g_str_has_prefix(tmp[0], k)) + while (fgets(buffer, 128, cpuinfo)) { + gchar **tmp = g_strsplit(buffer, ":", 2); + if (tmp[0] && tmp[1]) { + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); + } else { + g_strfreev(tmp); + continue; + } + + //get_str("Processor", rep_pname); + + if ( CHECK_FOR("hart") ) { + /* finish previous */ + if (processor) { + procs = g_slist_append(procs, processor); + } + + /* start next */ + processor = g_new0(Processor, 1); + processor->id = atol(tmp[1]); + + if (rep_pname) + processor->model_name = g_strdup(rep_pname); + + g_strfreev(tmp); + continue; + } + + if (!processor && + ( CHECK_FOR("mmu") + || CHECK_FOR("isa") + || CHECK_FOR("uarch") ) ) { + + /* single proc/core may not have "hart : n" */ + processor = g_new0(Processor, 1); + processor->id = 0; + + if (rep_pname) + processor->model_name = g_strdup(rep_pname); + } + + if (processor) { + get_str("mmu", processor->mmu); + get_str("isa", processor->isa); + get_str("uarch", processor->uarch); + } + g_strfreev(tmp); + } + + if (processor) + procs = g_slist_append(procs, processor); + + g_free(rep_pname); + fclose(cpuinfo); + + /* TODO: redup */ + + /* data not from /proc/cpuinfo */ + for (pi = procs; pi; pi = pi->next) { + processor = (Processor *) pi->data; + + /* strings can't be null or segfault later */ + STRIFNULL(processor->model_name, _("RISC-V Processor") ); + UNKIFNULL(processor->mmu); + UNKIFNULL(processor->isa); + UNKIFNULL(processor->uarch); + + processor->flags = riscv_isa_to_flags(processor->isa); + + /* topo & freq */ + processor->cpufreq = cpufreq_new(processor->id); + processor->cputopo = cputopo_new(processor->id); + + if (processor->cpufreq->cpukhz_max) + processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; + else + processor->cpu_mhz = 0.0f; + } + + return procs; +} + +gchar *processor_get_capabilities_from_flags(gchar * strflags) +{ + gchar **flags, **old; + gchar *tmp = NULL; + gint j = 0; + + flags = g_strsplit(strflags, " ", 0); + old = flags; + + while (flags[j]) { + const gchar *meaning = riscv_ext_meaning( flags[j] ); + + if (meaning) { + tmp = h_strdup_cprintf("%s=%s\n", tmp, flags[j], meaning); + } else { + tmp = h_strdup_cprintf("%s=\n", tmp, flags[j]); + } + j++; + } + if (tmp == NULL || g_strcmp0(tmp, "") == 0) + tmp = g_strdup_printf("%s=%s\n", "empty", _("Empty List")); + + g_strfreev(old); + return tmp; +} + +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); +} + +gchar * +processor_get_detailed_info(Processor *processor) +{ + gchar *tmp_flags, *tmp_cpufreq, *tmp_topology, *ret; + tmp_flags = processor_get_capabilities_from_flags(processor->flags); + tmp_topology = cputopo_section_str(processor->cputopo); + tmp_cpufreq = cpufreq_section_str(processor->cpufreq); + + ret = g_strdup_printf("[%s]\n" + "%s=%s\n" /* model */ + "%s=%s\n" /* isa */ + "%s=%s\n" /* uarch */ + "%s=%s\n" /* mmu */ + "%s=%.2f %s\n" /* frequency */ + "%s=%s\n" /* byte order */ + "%s" /* topology */ + "%s" /* frequency scaling */ + "[%s]\n" /* extensions */ + "%s" + "%s",/* empty */ + _("Processor"), + _("Model"), processor->model_name, + _("Architecture"), processor->isa, + _("uarch"), processor->uarch, + _("MMU"), processor->mmu, + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("Byte Order"), byte_order_str(), + tmp_topology, + tmp_cpufreq, + _("Capabilities"), tmp_flags, + ""); + g_free(tmp_flags); + g_free(tmp_cpufreq); + g_free(tmp_topology); + return ret; +} + +gchar *processor_get_info(GSList * processors) +{ + Processor *processor; + + if (g_slist_length(processors) > 1) { + gchar *ret, *tmp, *hashkey; + GSList *l; + + tmp = g_strdup(""); + + for (l = processors; l; l = l->next) { + processor = (Processor *) l->data; + + tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", + tmp, processor->id, + processor->model_name, + processor->cpu_mhz, _("MHz")); + + hashkey = g_strdup_printf("CPU%d", processor->id); + moreinfo_add_with_prefix("DEV", hashkey, + processor_get_detailed_info(processor)); + g_free(hashkey); + } + + ret = g_strdup_printf("[$ShellParam$]\n" + "ViewType=1\n" + "[Processors]\n" + "%s", tmp); + g_free(tmp); + + return ret; + } + + processor = (Processor *) processors->data; + return processor_get_detailed_info(processor); +} diff --git a/modules/devices/riscv/riscv_data.c b/modules/devices/riscv/riscv_data.c new file mode 100644 index 00000000..4ae68ef4 --- /dev/null +++ b/modules/devices/riscv/riscv_data.c @@ -0,0 +1,212 @@ +/* + * rpiz - https://github.com/bp0/rpiz + * Copyright (C) 2017 Burt P. <pburt0@gmail.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <ctype.h> +#include "riscv_data.h" + +#ifndef C_ +#define C_(Ctx, String) String +#endif +#ifndef NC_ +#define NC_(Ctx, String) String +#endif + +static struct { + char *name, *meaning; +} tab_ext_meaning[] = { + { "RV32", NC_("rv-ext", /*/ext:RV32*/ "RISC-V 32-bit") }, + { "RV64", NC_("rv-ext", /*/ext:RV64*/ "RISC-V 64-bit") }, + { "RV128", NC_("rv-ext", /*/ext:RV128*/ "RISC-V 128-bit") }, + { "E", NC_("rv-ext", /*/ext:E*/ "Base embedded integer instructions (15 registers)") }, + { "I", NC_("rv-ext", /*/ext:I*/ "Base integer instructions (31 registers)") }, + { "M", NC_("rv-ext", /*/ext:M*/ "Hardware integer multiply and divide") }, + { "A", NC_("rv-ext", /*/ext:A*/ "Atomic memory operations") }, + { "C", NC_("rv-ext", /*/ext:C*/ "Compressed 16-bit instructions") }, + { "F", NC_("rv-ext", /*/ext:F*/ "Floating-point instructions, single-precision") }, + { "D", NC_("rv-ext", /*/ext:D*/ "Floating-point instructions, double-precision") }, + { "Q", NC_("rv-ext", /*/ext:Q*/ "Floating-point instructions, quad-precision") }, + { "B", NC_("rv-ext", /*/ext:B*/ "Bit manipulation instructions") }, + { "V", NC_("rv-ext", /*/ext:V*/ "Vector operations") }, + { "T", NC_("rv-ext", /*/ext:T*/ "Transactional memory") }, + { "P", NC_("rv-ext", /*/ext:P*/ "Packed SIMD instructions") }, + { "L", NC_("rv-ext", /*/ext:L*/ "Decimal floating-point instructions") }, + { "J", NC_("rv-ext", /*/ext:J*/ "Dynamically translated languages") }, + { "N", NC_("rv-ext", /*/ext:N*/ "User-level interrupts") }, + { NULL, NULL } +}; + +static char all_extensions[1024] = ""; + +#define APPEND_EXT(f) strcat(all_extensions, f); strcat(all_extensions, " "); +const char *riscv_ext_list() { + int i = 0, built = 0; + built = strlen(all_extensions); + if (!built) { + while(tab_ext_meaning[i].name != NULL) { + APPEND_EXT(tab_ext_meaning[i].name); + i++; + } + } + return all_extensions; +} + +const char *riscv_ext_meaning(const char *ext) { + int i = 0, l = 0; + char *c = NULL; + if (ext) { + c = strchr(ext, ':'); /* allow extension:version, ignore version */ + if (c != NULL) + l = c - ext; + else + l = strlen(ext); + while(tab_ext_meaning[i].name != NULL) { + if (strncasecmp(tab_ext_meaning[i].name, ext, l) == 0) { + if (tab_ext_meaning[i].meaning != NULL) + return C_("rv-ext", tab_ext_meaning[i].meaning); + else return NULL; + } + i++; + } + } + return NULL; +} + +/* see RISC-V spec 2.2: Chapter 22: ISA Subset Naming Conventions */ + +/* Spec says case-insensitve, but I prefer single-letter extensions + * capped and version string (like "2p1") with a lowercase p. */ +#define RV_FIX_CASE(fstr,vo) \ + p = fstr; while (*p != 0 && *p != ':') { if (!vo) *p = toupper(*p); p++; } \ + if (*p == ':') while (*p != 0) { if (*p == 'P') *p = 'p'; p++; } + +static int riscv_isa_next(const char *isap, char *flag) { + char *p = NULL, *start = NULL; + char *next_sep = NULL, *next_digit = NULL; + int skip_len = 0, tag_len = 0, ver_len = 0; + char ext_str[32], ver_str[32]; + + if (isap == NULL) + return 0; + + /* find start by skipping any '_' */ + start = (char*)isap; + while (*start != 0 && *start == '_') { start++; skip_len++; }; + if (*start == 0) + return 0; + + /* find next '_' or \0 */ + p = start; while (*p != 0 && *p != '_') { p++; }; next_sep = p; + + /* find next digit that may be a version, find length of version */ + p = start; while (*p != 0 && !isdigit(*p)) { p++; }; + if (isdigit(*p)) next_digit = p; + if (next_digit) { + while (*p != 0 && (isdigit(*p) || *p == 'p' || *p == 'P') ) { + if ((*p == 'p' || *p == 'P') && !isdigit(*(p+1)) ) + break; + ver_len++; + p++; + } + } + + /* is next version nearer than next separator */ + p = start; + if (next_digit && next_digit < next_sep) + tag_len = next_digit - p; + else { + tag_len = next_sep - p; + ver_len = 0; + } + + switch(*p) { + case 'S': case 's': /* supervisor extension */ + case 'X': case 'x': /* custom extension */ + /* custom supervisor extension (SX..) handled by S */ + break; + default: /* single character (standard) extension */ + tag_len = 1; + if (next_digit != p+1) ver_len = 0; + break; + } + + memset(ext_str, 0, 32); + memset(ver_str, 0, 32); + if (ver_len) { + strncpy(ext_str, p, tag_len); + strncpy(ver_str, next_digit, ver_len); + sprintf(flag, "%s:%s", ext_str, ver_str); + if (tag_len == 1) { + RV_FIX_CASE(flag, 0); + } else { + RV_FIX_CASE(flag, 1); + } + return skip_len + tag_len + ver_len; + } else { + strncpy(ext_str, p, tag_len); + sprintf(flag, "%s", ext_str); + if (tag_len == 1) { RV_FIX_CASE(flag, 0); } + return skip_len + tag_len; + } +} + +#define FSTR_SIZE 1024 +#define RV_CHECK_FOR(e) ( strncasecmp(ps, e, 2) == 0 ) +#define ADD_EXT_FLAG(ext) el = strlen(ext); strncpy(pd, ext, el); strncpy(pd + el, " ", 1); pd += el + 1; +char *riscv_isa_to_flags(const char *isa) { + char *flags = NULL, *ps = (char*)isa, *pd = NULL; + char flag_buf[64] = ""; + int isa_len = 0, tl = 0, el = 0; /* el used in macro */ + + if (isa) { + isa_len = strlen(isa); + flags = malloc(FSTR_SIZE); + if (flags) { + memset(flags, 0, FSTR_SIZE); + ps = (char*)isa; + pd = flags; + if ( RV_CHECK_FOR("RV") ) + { ps += 2; } + if ( RV_CHECK_FOR("32") ) + { ADD_EXT_FLAG("RV32"); ps += 2; } + else if ( RV_CHECK_FOR("64") ) + { ADD_EXT_FLAG("RV64"); ps += 2; } + else if ( RV_CHECK_FOR("128") ) + { ADD_EXT_FLAG("RV128"); ps += 3; } + + while( (tl = riscv_isa_next(ps, flag_buf)) ) { + if (flag_buf[0] == 'G') { /* G = IMAFD */ + flag_buf[0] = 'I'; ADD_EXT_FLAG(flag_buf); + flag_buf[0] = 'M'; ADD_EXT_FLAG(flag_buf); + flag_buf[0] = 'A'; ADD_EXT_FLAG(flag_buf); + flag_buf[0] = 'F'; ADD_EXT_FLAG(flag_buf); + flag_buf[0] = 'D'; ADD_EXT_FLAG(flag_buf); + } else { + ADD_EXT_FLAG(flag_buf); + } + ps += tl; + if (ps - isa >= isa_len) break; /* just in case */ + } + } + } + return flags; +} diff --git a/modules/devices/riscv/riscv_data.h b/modules/devices/riscv/riscv_data.h new file mode 100644 index 00000000..1d3a0a48 --- /dev/null +++ b/modules/devices/riscv/riscv_data.h @@ -0,0 +1,33 @@ +/* + * rpiz - https://github.com/bp0/rpiz + * Copyright (C) 2017 Burt P. <pburt0@gmail.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef _RISCVDATA_H_ +#define _RISCVDATA_H_ + +/* convert RISC-V ISA string to flags list */ +char *riscv_isa_to_flags(const char *isa); + +/* all known extensions as flags list */ +const char *riscv_ext_list(void); + +/* get meaning of flag */ +const char *riscv_ext_meaning(const char *ext); + +#endif diff --git a/modules/devices/s390/processor.c b/modules/devices/s390/processor.c index 99f1c8bd..cf45c33c 100644 --- a/modules/devices/s390/processor.c +++ b/modules/devices/s390/processor.c @@ -18,61 +18,163 @@ #include "hardinfo.h" #include "devices.h" +#include "string.h" +#include "cpu_util.h" GSList * processor_scan(void) { - Processor *processor; + GSList *procs = NULL; + Processor *processor = NULL; FILE *cpuinfo; gchar buffer[128]; + gchar *vendor_id = NULL; + gint num_procs = 0; + gfloat bogomips = 0.0f; + GSList *pi = NULL; - cpuinfo = fopen("/proc/cpuinfo", "r"); + cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) - return NULL; + return NULL; - processor = g_new0(Processor, 1); +#define CHECK_FOR(k) (g_str_has_prefix(tmp[0], k)) while (fgets(buffer, 128, cpuinfo)) { - gchar **tmp = g_strsplit(buffer, ":", 2); + gchar **tmp = g_strsplit(buffer, ":", 2); + if (tmp[0] && tmp[1]) { + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); + } else { + g_strfreev(tmp); + continue; + } + + get_str("vendor_id", vendor_id); + get_int("# processors", num_procs); + get_int("bogomips per cpu", bogomips); + + if ( CHECK_FOR("processor") ) { + /* finish previous */ + if (processor) { + procs = g_slist_append(procs, processor); + } + + /* start next */ + processor = g_new0(Processor, 1); + if (strlen(tmp[0]) >= 10) + processor->id = atol(tmp[0] + 10); /* processor n: ... */ + else + processor->id = 0; /* idk */ + processor->proc_str = g_strdup(tmp[1]); - if (tmp[0] && tmp[1]) { - tmp[0] = g_strstrip(tmp[0]); - tmp[1] = g_strstrip(tmp[1]); + if (vendor_id) + processor->model_name = g_strdup(vendor_id); + if (bogomips) + processor->bogomips = bogomips; - get_str("vendor_id", processor->vendor_id); - get_float("# processors", processor->cache_size); - get_int("bogomips per cpu", processor->bogomips); + g_strfreev(tmp); + continue; + } - } - g_strfreev(tmp); + g_strfreev(tmp); } - processor->cpu_mhz = 0.0f; - - processor->model_name = g_strconcat("S390 ", processor->vendor_id, NULL); - g_free(processor->vendor_id); + if (processor) + procs = g_slist_append(procs, processor); + g_free(vendor_id); fclose(cpuinfo); - return g_slist_append(NULL, processor); + /* data not from /proc/cpuinfo */ + for (pi = procs; pi; pi = pi->next) { + processor = (Processor *) pi->data; + + /* strings can't be null or segfault later */ + STRIFNULL(processor->model_name, _("S390 Processor") ); + UNKIFNULL(processor->proc_str); + + /* topo & freq */ + processor->cpufreq = cpufreq_new(processor->id); + processor->cputopo = cputopo_new(processor->id); + + if (processor->cpufreq->cpukhz_max) + processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; + else + processor->cpu_mhz = 0.0f; + + } + + return procs; +} + +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); } gchar * -processor_get_info(GSList *processors) +processor_get_detailed_info(Processor *processor) +{ + gchar *tmp_cpufreq, *tmp_topology, *ret; + tmp_topology = cputopo_section_str(processor->cputopo); + tmp_cpufreq = cpufreq_section_str(processor->cpufreq); + + ret = g_strdup_printf("[%s]\n" + "%s=%s\n" /* model */ + "%s=%s\n" /* proc string */ + "%s=%.2f\n" /* bogomips */ + "%s=%s\n" /* byte order */ + "%s" /* topology */ + "%s", /* frequency scaling */ + _("Processor"), + _("Model"), processor->model_name, + _("ID String"), processor->proc_str, + _("BogoMips"), processor->bogomips, + _("Byte Order"), byte_order_str(), + tmp_topology, + tmp_cpufreq + ); + g_free(tmp_cpufreq); + g_free(tmp_topology); + return ret; +} + +gchar *processor_get_info(GSList * processors) { - Processor *processor = (Processor *)processors->data; - - return g_strdup_printf("[Processor]\n" - "Model=%s\n" - "Processors=%d\n" - "BogoMips per CPU=%.2f" - "Byte Order=%s\n", - processor->model_name, - processor->cache_size, - processor->bogomips, -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - "Little Endian" -#else - "Big Endian" -#endif - ); + Processor *processor; + + if (g_slist_length(processors) > 1) { + gchar *ret, *tmp, *hashkey; + GSList *l; + + tmp = g_strdup(""); + + for (l = processors; l; l = l->next) { + processor = (Processor *) l->data; + + tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", + tmp, processor->id, + processor->model_name, + processor->cpu_mhz, _("MHz")); + + hashkey = g_strdup_printf("CPU%d", processor->id); + moreinfo_add_with_prefix("DEV", hashkey, + processor_get_detailed_info(processor)); + g_free(hashkey); + } + + ret = g_strdup_printf("[$ShellParam$]\n" + "ViewType=1\n" + "[Processors]\n" + "%s", tmp); + g_free(tmp); + + return ret; + } + + processor = (Processor *) processors->data; + return processor_get_detailed_info(processor); } + diff --git a/modules/devices/sensors.c b/modules/devices/sensors.c index 84e89361..c9d78ff7 100644 --- a/modules/devices/sensors.c +++ b/modules/devices/sensors.c @@ -27,8 +27,7 @@ gchar *sensors = NULL; GHashTable *sensor_compute = NULL; GHashTable *sensor_labels = NULL; -static void read_sensor_labels(gchar * driver) -{ +static void read_sensor_labels(gchar *driver) { FILE *conf; gchar buf[256], *line, *p; gboolean lock = FALSE; @@ -38,7 +37,8 @@ static void read_sensor_labels(gchar * driver) conf = fopen("/etc/sensors3.conf", "r"); /* If it fails, try to open sensors.conf */ - if (!conf) conf = fopen("/etc/sensors.conf", "r"); + if (!conf) + conf = fopen("/etc/sensors.conf", "r"); if (!conf) { /* Cannot open config file. */ @@ -46,117 +46,129 @@ static void read_sensor_labels(gchar * driver) } while (fgets(buf, 256, conf)) { - line = buf; - - remove_linefeed(line); - strend(line, '#'); - - if (*line == '\0') { - continue; - } else if (lock && strstr(line, "label")) { /* label lines */ - gchar **names = g_strsplit(strstr(line, "label") + 5, " ", 0); - gchar *name = NULL, *value = NULL; - - for (i = 0; names[i]; i++) { - if (names[i][0] == '\0') - continue; - - if (!name) - name = g_strdup(names[i]); - else if (!value) - value = g_strdup(names[i]); - else - value = g_strconcat(value, " ", names[i], NULL); - } - - remove_quotes(value); - g_hash_table_insert(sensor_labels, name, value); - - g_strfreev(names); - } else if (lock && strstr(line, "ignore")) { /* ignore lines */ - p = strstr(line, "ignore") + 6; - if (!strchr(p, ' ')) - continue; - - while (*p == ' ') - p++; - g_hash_table_insert(sensor_labels, g_strdup(p), "ignore"); - } else if (lock && strstr(line, "compute")) { /* compute lines */ - gchar **formulas = - g_strsplit(strstr(line, "compute") + 7, " ", 0); - gchar *name = NULL, *formula = NULL; - - for (i = 0; formulas[i]; i++) { - if (formulas[i][0] == '\0') - continue; - if (formulas[i][0] == ',') - break; - - if (!name) - name = g_strdup(formulas[i]); - else if (!formula) - formula = g_strdup(formulas[i]); - else - formula = g_strconcat(formula, formulas[i], NULL); - } - - g_strfreev(formulas); - g_hash_table_insert(sensor_compute, name, - math_string_to_postfix(formula)); - } else if (g_str_has_prefix(line, "chip")) { /* chip lines (delimiter) */ - if (lock == FALSE) { - gchar **chips = g_strsplit(line, " ", 0); - - for (i = 1; chips[i]; i++) { - strend(chips[i], '*'); - - if (g_str_has_prefix(chips[i] + 1, driver)) { - lock = TRUE; - break; - } - } - - g_strfreev(chips); - } else { - break; - } - } + line = buf; + + remove_linefeed(line); + strend(line, '#'); + + if (*line == '\0') { + continue; + } else if (lock && strstr(line, "label")) { /* label lines */ + gchar **names = g_strsplit(strstr(line, "label") + 5, " ", 0); + gchar *name = NULL, *value = NULL; + + for (i = 0; names[i]; i++) { + if (names[i][0] == '\0') + continue; + + if (!name) + name = g_strdup(names[i]); + else if (!value) + value = g_strdup(names[i]); + else + value = g_strconcat(value, " ", names[i], NULL); + } + + remove_quotes(value); + g_hash_table_insert(sensor_labels, name, value); + + g_strfreev(names); + } else if (lock && strstr(line, "ignore")) { /* ignore lines */ + p = strstr(line, "ignore") + 6; + if (!strchr(p, ' ')) + continue; + + while (*p == ' ') + p++; + g_hash_table_insert(sensor_labels, g_strdup(p), "ignore"); + } else if (lock && strstr(line, "compute")) { /* compute lines */ + gchar **formulas = g_strsplit(strstr(line, "compute") + 7, " ", 0); + gchar *name = NULL, *formula = NULL; + + for (i = 0; formulas[i]; i++) { + if (formulas[i][0] == '\0') + continue; + if (formulas[i][0] == ',') + break; + + if (!name) + name = g_strdup(formulas[i]); + else if (!formula) + formula = g_strdup(formulas[i]); + else + formula = g_strconcat(formula, formulas[i], NULL); + } + + g_strfreev(formulas); + g_hash_table_insert(sensor_compute, name, + math_string_to_postfix(formula)); + } else if (g_str_has_prefix(line, + "chip")) { /* chip lines (delimiter) */ + if (lock == FALSE) { + gchar **chips = g_strsplit(line, " ", 0); + + for (i = 1; chips[i]; i++) { + strend(chips[i], '*'); + + if (g_str_has_prefix(chips[i] + 1, driver)) { + lock = TRUE; + break; + } + } + + g_strfreev(chips); + } else { + break; + } + } } fclose(conf); } -static gchar *get_sensor_label(gchar * sensor) -{ +static void add_sensor(const char *type, + const char *sensor, + const char *driver, + double value, + const char *unit) { + char key[64]; + + sensors = h_strdup_cprintf("%s/%s=%.2f%s|%s\n", sensors, + driver, sensor, value, unit, type); + + snprintf(key, sizeof(key), "%s/%s", driver, sensor); + moreinfo_add_with_prefix("DEV", key, g_strdup_printf("%.2f%s", value, unit)); + + lginterval = h_strdup_cprintf("UpdateInterval$%s=1000\n", lginterval, key); +} + +static gchar *get_sensor_label(gchar *sensor) { gchar *ret; ret = g_hash_table_lookup(sensor_labels, sensor); if (!ret) - ret = g_strdup(sensor); + ret = g_strdup(sensor); else - ret = g_strdup(ret); + ret = g_strdup(ret); return ret; } -static float adjust_sensor(gchar * name, float value) -{ +static float adjust_sensor(gchar *name, float value) { GSList *postfix; postfix = g_hash_table_lookup(sensor_compute, name); if (!postfix) - return value; + return value; return math_postfix_eval(postfix, value); } -static char *get_sensor_path(int number, const char *prefix) -{ +static char *get_sensor_path(int number, const char *prefix) { return g_strdup_printf("/sys/class/hwmon/hwmon%d/%s", number, prefix); } -static char *determine_driver_for_hwmon_path(char *path) -{ +static char *determine_driver_for_hwmon_path(char *path) { char *tmp, *driver; tmp = g_strdup_printf("%s/device/driver", path); @@ -190,165 +202,171 @@ struct HwmonSensor { const char *friendly_name; const char *path_format; const char *key_format; - const char *value_format; + const char *unit; const float adjust_ratio; const int begin_at; }; static const struct HwmonSensor hwmon_sensors[] = { - { "Cooling Fans", "%s/fan%d_input", "fan%d", "%s (%s)=%.0fRPM\n", 1.0, 1 }, - { "Temperature", "%s/temp%d_input", "temp%d", "%s (%s)=%.2f\302\260C\n", 1000.0, 1 }, - { "Voltage Values", "%s/in%d_input", "in%d", "%s (%s)=%.3fV\n", 1000.0, 0 }, - { NULL, NULL, NULL, NULL, 0.0, 0 }, + { + "Fan", + "%s/fan%d_input", + "fan%d", + "RPM", + 1.0, + 1 + }, + { + "Temperature", + "%s/temp%d_input", + "temp%d", + "\302\260C", + 1000.0, + 1 + }, + { + "Voltage", + "%s/in%d_input", + "in%d", + "V", + 1000.0, + 0 + }, + { } }; -static const char *hwmon_prefix[] = { "device", "", NULL }; +static const char *hwmon_prefix[] = {"device", "", NULL}; -static void read_sensors_hwmon(void) -{ +static void read_sensors_hwmon(void) { int hwmon, count; gchar *path_hwmon, *path_sensor, *tmp, *driver, *name, *mon; const char **prefix; - + for (prefix = hwmon_prefix; *prefix; prefix++) { - hwmon = 0; - path_hwmon = get_sensor_path(hwmon, *prefix); - while (path_hwmon && g_file_test(path_hwmon, G_FILE_TEST_EXISTS)) { - const struct HwmonSensor *sensor; - - driver = determine_driver_for_hwmon_path(path_hwmon); - DEBUG("hwmon%d has driver=%s", hwmon, driver); - - if (!sensor_labels) { - read_sensor_labels(driver); - } - - for (sensor = hwmon_sensors; sensor->friendly_name; sensor++) { - char *output = NULL; - DEBUG("current sensor type=%s", sensor->friendly_name); - - for (count = sensor->begin_at;; count++) { - path_sensor = g_strdup_printf(sensor->path_format, path_hwmon, count); - DEBUG("should be reading from %s", path_sensor); - if (!g_file_get_contents(path_sensor, &tmp, NULL, NULL)) { - g_free(path_sensor); - if (count<256) - continue; // brute-force find all - else - break; - } - - mon = g_strdup_printf(sensor->key_format, count); - name = get_sensor_label(mon); - if (!g_str_equal(name, "ignore")) { - output = h_strdup_cprintf(sensor->value_format, - output, name, driver, - adjust_sensor(mon, - atof(tmp) / sensor->adjust_ratio)); - } - - g_free(tmp); - g_free(mon); - g_free(name); - g_free(path_sensor); - } - - if (output) { - sensors = g_strconcat(sensors, "[", sensor->friendly_name, "]\n", output, "\n", NULL); - g_free(output); - } - } - - g_free(path_hwmon); - g_free(driver); - - path_hwmon = get_sensor_path(++hwmon, *prefix); - } - - g_free(path_hwmon); - } + hwmon = 0; + path_hwmon = get_sensor_path(hwmon, *prefix); + while (path_hwmon && g_file_test(path_hwmon, G_FILE_TEST_EXISTS)) { + const struct HwmonSensor *sensor; + + driver = determine_driver_for_hwmon_path(path_hwmon); + DEBUG("hwmon%d has driver=%s", hwmon, driver); + + if (!sensor_labels) { + read_sensor_labels(driver); + } + + for (sensor = hwmon_sensors; sensor->friendly_name; sensor++) { + DEBUG("current sensor type=%s", sensor->friendly_name); + + for (count = sensor->begin_at;; count++) { + path_sensor = + g_strdup_printf(sensor->path_format, path_hwmon, count); + DEBUG("should be reading from %s", path_sensor); + if (!g_file_get_contents(path_sensor, &tmp, NULL, NULL)) { + g_free(path_sensor); + if (count < 256) + continue; // brute-force find all + else + break; + } + + mon = g_strdup_printf(sensor->key_format, count); + name = get_sensor_label(mon); + if (!g_str_equal(name, "ignore")) { + float adjusted = adjust_sensor(mon, + atof(tmp) / sensor->adjust_ratio); + + add_sensor(sensor->friendly_name, + name, + driver, + adjusted, + sensor->unit); + } + + g_free(tmp); + g_free(mon); + g_free(name); + g_free(path_sensor); + } + } + + g_free(path_hwmon); + g_free(driver); + + path_hwmon = get_sensor_path(++hwmon, *prefix); + } + + g_free(path_hwmon); + } } -static void read_sensors_acpi(void) -{ +static void read_sensors_acpi(void) { const gchar *path_tz = "/proc/acpi/thermal_zone"; if (g_file_test(path_tz, G_FILE_TEST_EXISTS)) { - GDir *tz; - - if ((tz = g_dir_open(path_tz, 0, NULL))) { - const gchar *entry; - gchar *temp = g_strdup(""); - - while ((entry = g_dir_read_name(tz))) { - gchar *path = - g_strdup_printf("%s/%s/temperature", path_tz, entry); - gchar *contents; + GDir *tz; - if (g_file_get_contents(path, &contents, NULL, NULL)) { - int temperature; + if ((tz = g_dir_open(path_tz, 0, NULL))) { + const gchar *entry; - sscanf(contents, "temperature: %d C", &temperature); + while ((entry = g_dir_read_name(tz))) { + gchar *path = + g_strdup_printf("%s/%s/temperature", path_tz, entry); + gchar *contents; - temp = h_strdup_cprintf("\n%s=%d\302\260C\n", - temp, entry, temperature); + if (g_file_get_contents(path, &contents, NULL, NULL)) { + int temperature; - g_free(contents); - } - } + sscanf(contents, "temperature: %d C", &temperature); - if (*temp != '\0') - sensors = - h_strdup_cprintf("\n[ACPI Thermal Zone]\n%s", - sensors, temp); + add_sensor("Temperature", + entry, + "ACPI Thermal Zone", + temperature, + "\302\260C"); + } + } - g_dir_close(tz); - } + g_dir_close(tz); + } } - } -static void read_sensors_sys_thermal(void) -{ +static void read_sensors_sys_thermal(void) { const gchar *path_tz = "/sys/class/thermal"; if (g_file_test(path_tz, G_FILE_TEST_EXISTS)) { - GDir *tz; - - if ((tz = g_dir_open(path_tz, 0, NULL))) { - const gchar *entry; - gchar *temp = g_strdup(""); + GDir *tz; - while ((entry = g_dir_read_name(tz))) { - gchar *path = - g_strdup_printf("%s/%s/temp", path_tz, entry); - gchar *contents; + if ((tz = g_dir_open(path_tz, 0, NULL))) { + const gchar *entry; + gchar *temp = g_strdup(""); - if (g_file_get_contents(path, &contents, NULL, NULL)) { - int temperature; + while ((entry = g_dir_read_name(tz))) { + gchar *path = g_strdup_printf("%s/%s/temp", path_tz, entry); + gchar *contents; - sscanf(contents, "%d", &temperature); + if (g_file_get_contents(path, &contents, NULL, NULL)) { + int temperature; - temp = h_strdup_cprintf("\n%s=%.2f\302\260C\n", - temp, entry, (1.0*temperature/1000)); + sscanf(contents, "%d", &temperature); - g_free(contents); - } - } + add_sensor("Temperature", + entry, + "thermal", + temperature / 1000.0, + "\302\260C"); - if (*temp != '\0') - sensors = - h_strdup_cprintf("\n[ACPI Thermal Zone (sysfs)]\n%s", - sensors, temp); + g_free(contents); + } + } - g_dir_close(tz); - } + g_dir_close(tz); + } } - } -static void read_sensors_omnibook(void) -{ +static void read_sensors_omnibook(void) { const gchar *path_ob = "/proc/omnibook/temperature"; gchar *contents; @@ -357,88 +375,79 @@ static void read_sensors_omnibook(void) sscanf(contents, "CPU temperature: %d C", &temperature); - sensors = h_strdup_cprintf("\n[Omnibook]\n" - "CPU temperature=%d\302\260C\n", - sensors, temperature); + add_sensor("Temperature", + "CPU", + "omnibook", + temperature, + "\302\260C\n"); g_free(contents); } } -static void read_sensors_hddtemp(void) -{ +static void read_sensors_hddtemp(void) { Socket *s; - static gchar *old = NULL; gchar buffer[1024]; gint len = 0; - if ((s = sock_connect("127.0.0.1", 7634))) { - while (!len) - len = sock_read(s, buffer, sizeof(buffer)); - sock_close(s); - - if (len > 2 && buffer[0] == '|' && buffer[1] == '/') { - gchar **disks; - int i; - - g_free(old); - - old = g_strdup("[Hard Disk Temperature]\n"); - - disks = g_strsplit(buffer, "\n", 0); - for (i = 0; disks[i]; i++) { - gchar **fields = g_strsplit(disks[i] + 1, "|", 5); - - /* - * 0 -> /dev/hda - * 1 -> FUJITSU MHV2080AH - * 2 -> 41 - * 3 -> C - */ - old = h_strdup_cprintf("\n%s (%s)=%s\302\260%s\n", - old, - fields[1], fields[0], - fields[2], fields[3]); - - g_strfreev(fields); - } + if (!(s = sock_connect("127.0.0.1", 7634))) + return; - g_strfreev(disks); - } - } else { - g_free(old); - old = NULL; - } + while (!len) + len = sock_read(s, buffer, sizeof(buffer)); + sock_close(s); + + if (len > 2 && buffer[0] == '|' && buffer[1] == '/') { + gchar **disks; + int i; + + disks = g_strsplit(buffer, "\n", 0); + for (i = 0; disks[i]; i++) { + gchar **fields = g_strsplit(disks[i] + 1, "|", 5); + + /* + * 0 -> /dev/hda + * 1 -> FUJITSU MHV2080AH + * 2 -> 41 + * 3 -> C + */ + const gchar *unit = strcmp(fields[3], "C") + ? "\302\260C" : "\302\260F"; + add_sensor("Hard Drive", + fields[1], + "hddtemp", + atoi(fields[2]), + unit); + + g_strfreev(fields); + } - if (old) { - sensors = g_strconcat(sensors, "\n", old, NULL); + g_strfreev(disks); } } -void scan_sensors_do(void) -{ +void scan_sensors_do(void) { g_free(sensors); - sensors = g_strdup(""); + g_free(lginterval); + lginterval = g_strdup(""); + read_sensors_hwmon(); read_sensors_acpi(); read_sensors_sys_thermal(); read_sensors_omnibook(); read_sensors_hddtemp(); - /* FIXME: Add support for ibm acpi and more sensors */ } -void sensors_init(void) -{ - sensor_labels = g_hash_table_new_full(g_str_hash, g_str_equal, - g_free, g_free); +void sensors_init(void) { + sensor_labels = + g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); sensor_compute = g_hash_table_new(g_str_hash, g_str_equal); } -void sensors_shutdown(void) -{ +void sensors_shutdown(void) { g_hash_table_destroy(sensor_labels); g_hash_table_destroy(sensor_compute); } diff --git a/modules/devices/sh/processor.c b/modules/devices/sh/processor.c index cbd9a60a..9da2f9b0 100644 --- a/modules/devices/sh/processor.c +++ b/modules/devices/sh/processor.c @@ -18,6 +18,7 @@ #include "hardinfo.h" #include "devices.h" +#include "cpu_util.h" GSList * processor_scan(void) @@ -26,50 +27,67 @@ processor_scan(void) FILE *cpuinfo; gchar buffer[128]; - cpuinfo = fopen("/proc/cpuinfo", "r"); + cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) - return NULL; + return NULL; processor = g_new0(Processor, 1); while (fgets(buffer, 128, cpuinfo)) { - gchar **tmp = g_strsplit(buffer, ":", 2); + gchar **tmp = g_strsplit(buffer, ":", 2); - if (tmp[0] && tmp[1]) { - tmp[0] = g_strstrip(tmp[0]); - tmp[1] = g_strstrip(tmp[1]); + if (tmp[0] && tmp[1]) { + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); - get_str("machine", processor->model_name); - get_str("cpu type", processor->vendor_id); - get_float("bogomips", processor->bogomips); - processor->cpu_mhz = processor->bogomips; - } - g_strfreev(tmp); + get_str("machine", processor->vendor_id); + get_str("cpu type", processor->model_name); + get_str("cpu family", processor->family); + get_float("cpu clock", processor->cpu_mhz); + get_float("bus clock", processor->bus_mhz); + get_float("module clock", processor->mod_mhz); + get_float("bogomips", processor->bogomips); + } + g_strfreev(tmp); } fclose(cpuinfo); + STRIFNULL(processor->model_name, _("SuperH Processor")); + UNKIFNULL(processor->vendor_id); + return g_slist_append(NULL, processor); } +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); +} + gchar * processor_get_info(GSList *processors) { - Processor *processor = (Processor *)processors->data; - - return g_strdup_printf("[Processor]\n" - "System Type=%s\n" - "CPU Model=%s\n" - "Frequency=%.2fMHz\n" - "BogoMIPS=%.2f\n" - "Byte Order=%s\n", - processor->model_name, - processor->vendor_id, - processor->cpu_mhz, - processor->bogomips, -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - "Little Endian" -#else - "Big Endian" -#endif - ); + Processor *processor = (Processor *)processors->data; + + return g_strdup_printf("[%s]\n" + "%s=%s\n" /* cpu type */ + "%s=%s\n" /* machine */ + "%s=%s\n" /* family */ + "%s=%.2f %s\n" /* frequency */ + "%s=%.2f %s\n" /* bus frequency */ + "%s=%.2f %s\n" /* module frequency */ + "%s=%.2f\n" /* bogomips */ + "%s=%s\n", /* byte order */ + _("Processor"), + _("Name"), processor->model_name, + _("Machine"), processor->vendor_id, + _("Family"), processor->family, + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("Bus Frequency"), processor->bus_mhz, _("MHz"), + _("Module Frequency"), processor->mod_mhz, _("MHz"), + _("BogoMips"), processor->bogomips, + _("Byte Order"), byte_order_str() + ); } diff --git a/modules/devices/sparc/processor.c b/modules/devices/sparc/processor.c index 594117a7..32c7aa94 100644 --- a/modules/devices/sparc/processor.c +++ b/modules/devices/sparc/processor.c @@ -18,6 +18,7 @@ #include "hardinfo.h" #include "devices.h" +#include "cpu_util.h" GSList * processor_scan(void) @@ -26,22 +27,23 @@ processor_scan(void) FILE *cpuinfo; gchar buffer[128]; - cpuinfo = fopen("/proc/cpuinfo", "r"); + cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) - return NULL; + return NULL; processor = g_new0(Processor, 1); while (fgets(buffer, 128, cpuinfo)) { - gchar **tmp = g_strsplit(buffer, ":", 2); + gchar **tmp = g_strsplit(buffer, ":", 2); - if (tmp[0] && tmp[1]) { - tmp[0] = g_strstrip(tmp[0]); - tmp[1] = g_strstrip(tmp[1]); + if (tmp[0] && tmp[1]) { + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); - get_str("cpu", processor->model_name); - get_str("fpu", processor->has_fpu); - } - g_strfreev(tmp); + get_str("cpucaps", processor->cpucaps); + get_str("cpu", processor->model_name); + get_str("fpu", processor->has_fpu); + } + g_strfreev(tmp); } fclose(cpuinfo); @@ -51,14 +53,28 @@ processor_scan(void) return g_slist_append(NULL, processor); } +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); +} + gchar * processor_get_info(GSList *processors) { - Processor *processor = (Processor *)processors->data; - - return g_strdup_printf("[Processor]\n" - "CPU=%s\n" - "FPU=%s\n", - processor->model_name, - processor->has_fpu); + Processor *processor = (Processor *)processors->data; + + return g_strdup_printf("[%s]\n" + "%s=%s\n" /* cpu */ + "%s=%s\n" /* fpu */ + "%s=%s\n" /* byte order */ + "%s=%s\n", /* caps */ + _("Processor"), + _("CPU"), processor->model_name, + _("FPU"), processor->has_fpu, + _("Byte Order"), byte_order_str(), + _("Capabilities"), processor->cpucaps + ); } diff --git a/modules/devices/spd-decode.c b/modules/devices/spd-decode.c index ac1dd52b..2db4895b 100644 --- a/modules/devices/spd-decode.c +++ b/modules/devices/spd-decode.c @@ -11,12 +11,12 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. @@ -1497,13 +1497,16 @@ void scan_spd_do(void) g_slist_free(dimm_list); g_free(spd_info); - spd_info = g_strdup_printf("[SPD]\n" - "%s\n" - "[$ShellParam$]\n" - "ViewType=1\n" - "ColumnTitle$TextValue=Bank\n" - "ColumnTitle$Extra1=Size\n" - "ColumnTitle$Extra2=Manufacturer\n" - "ColumnTitle$Value=Model\n" "ShowColumnHeaders=true\n", list); + spd_info = g_strdup_printf("[%s]\n" + "%s\n" + "[$ShellParam$]\n" + "ViewType=1\n" + "ColumnTitle$TextValue=%s\n" /* Bank */ + "ColumnTitle$Extra1=%s\n" /* Size */ + "ColumnTitle$Extra2=%s\n" /* Manufacturer */ + "ColumnTitle$Value=%s\n" /* Model */ + "ShowColumnHeaders=true\n", + _("SPD"), list, + _("Bank"), _("Size"), _("Manufacturer"), _("Model") ); g_free(list); } diff --git a/modules/devices/usb.c b/modules/devices/usb.c index 3a93a3b6..e5088bd2 100644 --- a/modules/devices/usb.c +++ b/modules/devices/usb.c @@ -41,51 +41,59 @@ void __scan_usb_sysfs_add_device(gchar * endpoint, int n) version = h_sysfs_read_float(endpoint, "version"); if (!(mxpwr = h_sysfs_read_string(endpoint, "bMaxPower"))) { - mxpwr = g_strdup("0 mA"); + mxpwr = g_strdup_printf("%d %s", 0 , _("mA") ); } if (!(manufacturer = h_sysfs_read_string(endpoint, "manufacturer"))) { - manufacturer = g_strdup("Unknown"); + manufacturer = g_strdup(_("(Unknown)")); } if (!(product = h_sysfs_read_string(endpoint, "product"))) { - if (classid == 9) { - product = g_strdup_printf("USB %.2f Hub", version); - } else { - product = g_strdup_printf("Unknown USB %.2f Device (class %d)", version, classid); - } + if (classid == 9) { + product = g_strdup_printf(_(/*/%.2f is version*/ "USB %.2f Hub"), version); + } else { + product = g_strdup_printf(_("Unknown USB %.2f Device (class %d)"), version, classid); + } } - const gchar *url = vendor_get_url(manufacturer); - if (url) { - tmp = g_strdup_printf("%s (%s)", vendor_get_name(manufacturer), url); - - g_free(manufacturer); - manufacturer = tmp; + const gchar *v_url = vendor_get_url(manufacturer); + const gchar *v_name = vendor_get_name(manufacturer); + gchar *v_str; + if (v_url != NULL) { + v_str = g_strdup_printf("%s (%s)", v_name, v_url); + } else { + v_str = g_strdup_printf("%s", manufacturer); } tmp = g_strdup_printf("USB%d", n); usb_list = h_strdup_cprintf("$%s$%s=\n", usb_list, tmp, product); - strhash = g_strdup_printf("[Device Information]\n" - "Product=%s\n" - "Manufacturer=%s\n" - "Speed=%.2fMbit/s\n" - "Max Current=%s\n" - "[Misc]\n" - "USB Version=%.2f\n" - "Class=0x%x\n" - "Vendor=0x%x\n" - "Product ID=0x%x\n" - "Bus=%d\n", - product, - manufacturer, - speed, - mxpwr, - version, classid, vendor, prodid, bus); + strhash = g_strdup_printf("[%s]\n" + /* Product */ "%s=%s\n" + /* Manufacturer */ "%s=%s\n" + /* Speed */ "%s=%.2f %s\n" + /* Max Current */ "%s=%s\n" + "[%s]\n" + /* USB Version */ "%s=%.2f\n" + /* Class */ "%s=0x%x\n" + /* Vendor */ "%s=0x%x\n" + /* Product ID */ "%s=0x%x\n" + /* Bus */ "%s=%d\n", + _("Device Information"), + _("Product"), product, + _("Manufacturer"), v_str, + _("Speed"), speed, _("Mbit/s"), + _("Max Current"), mxpwr, + _("Misc"), + _("USB Version"), version, + _("Class"), classid, + _("Vendor ID"), vendor, + _("Product ID"), prodid, + _("Bus"), bus); moreinfo_add_with_prefix("DEV", tmp, strhash); g_free(tmp); + g_free(v_str); g_free(manufacturer); g_free(product); g_free(mxpwr); @@ -106,7 +114,7 @@ gboolean __scan_usb_sysfs(void) moreinfo_del_with_prefix("DEV:USB"); g_free(usb_list); } - usb_list = g_strdup("[USB Devices]\n"); + usb_list = g_strdup_printf("[%s]\n", _("USB Devices")); while ((filename = (gchar *) g_dir_read_name(sysfs))) { gchar *endpoint = @@ -145,7 +153,7 @@ gboolean __scan_usb_procfs(void) moreinfo_del_with_prefix("DEV:USB"); g_free(usb_list); } - usb_list = g_strdup("[USB Devices]\n"); + usb_list = g_strdup_printf("[%s]\n", _("USB Devices")); while (fgets(buffer, 128, dev)) { tmp = buffer; @@ -179,50 +187,68 @@ gboolean __scan_usb_procfs(void) if (product && *product == '\0') { g_free(product); if (classid == 9) { - product = g_strdup_printf("USB %.2f Hub", ver); + product = g_strdup_printf(_("USB %.2f Hub"), ver); } else { - product = g_strdup_printf("Unknown USB %.2f Device (class %d)", ver, classid); + product = g_strdup_printf(_("Unknown USB %.2f Device (class %d)"), ver, classid); } } - if (classid == 9) { /* hub */ - usb_list = h_strdup_cprintf("[%s#%d]\n", usb_list, product, n); - } else { /* everything else */ - usb_list = h_strdup_cprintf("$%s$%s=\n", usb_list, tmp, product); - - const gchar *url = vendor_get_url(manuf); - if (url) { - gchar *tmp = g_strdup_printf("%s (%s)", vendor_get_name(manuf), - url); - g_free(manuf); - manuf = tmp; - } - - gchar *strhash = g_strdup_printf("[Device Information]\n" "Product=%s\n", - product); - if (manuf && strlen(manuf)) - strhash = h_strdup_cprintf("Manufacturer=%s\n", strhash, manuf); - - strhash = h_strdup_cprintf("[Port #%d]\n" - "Speed=%.2fMbit/s\n" - "Max Current=%s\n" - "[Misc]\n" - "USB Version=%.2f\n" - "Revision=%.2f\n" - "Class=0x%x\n" - "Vendor=0x%x\n" - "Product ID=0x%x\n" - "Bus=%d\n" "Level=%d\n", - strhash, port, speed, mxpwr, ver, rev, classid, vendor, prodid, bus, level); - - moreinfo_add_with_prefix("DEV", tmp, strhash); - g_free(tmp); - } + if (classid == 9) { /* hub */ + usb_list = h_strdup_cprintf("[%s#%d]\n", usb_list, product, n); + } else { /* everything else */ + usb_list = h_strdup_cprintf("$%s$%s=\n", usb_list, tmp, product); + + EMPIFNULL(manuf); + const gchar *v_url = vendor_get_url(manuf); + const gchar *v_name = vendor_get_name(manuf); + gchar *v_str = NULL; + if (strlen(manuf)) { + if (v_url != NULL) + v_str = g_strdup_printf("%s (%s)", v_name, v_url); + else + v_str = g_strdup_printf("%s", manuf); + } + UNKIFNULL(v_str); + UNKIFNULL(product); + + gchar *strhash = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s\n", + _("Device Information"), + _("Product"), product, + _("Manufacturer"), v_str); + + strhash = h_strdup_cprintf("[%s #%d]\n" + /* Speed */ "%s=%.2f %s\n" + /* Max Current */ "%s=%s\n" + "[%s]\n" + /* USB Version */ "%s=%.2f\n" + /* Revision */ "%s=%.2f\n" + /* Class */ "%s=0x%x\n" + /* Vendor */ "%s=0x%x\n" + /* Product ID */ "%s=0x%x\n" + /* Bus */ "%s=%d\n" + /* Level */ "%s=%d\n", + strhash, + _("Port"), port, + _("Speed"), speed, _("Mbit/s"), + _("Max Current"), mxpwr, + _("Misc"), + _("USB Version"), ver, + _("Revision"), rev, + _("Class"), classid, + _("Vendor ID"), vendor, + _("Product ID"), prodid, + _("Bus"), bus, + _("Level"), level); + + moreinfo_add_with_prefix("DEV", tmp, strhash); + g_free(v_str); + g_free(tmp); + } g_free(manuf); g_free(product); - manuf = g_strdup(""); - product = g_strdup(""); + manuf = NULL; + product = NULL; port = classid = 0; } } @@ -274,35 +300,63 @@ void __scan_usb_lsusb_add_device(char *buffer, int bufsize, FILE * lsusb, int us } if (dev_class && strstr(dev_class, "0 (Defined at Interface level)")) { - g_free(dev_class); - if (int_class) { - dev_class = int_class; - } else { - dev_class = g_strdup("Unknown"); - } + g_free(dev_class); + if (int_class) { + dev_class = int_class; + } else { + dev_class = g_strdup(_("(Unknown)")); + } } else - dev_class = g_strdup("Unknown"); + dev_class = g_strdup(_("(Unknown)")); tmp = g_strdup_printf("USB%d", usb_device_number); usb_list = h_strdup_cprintf("$%s$%s=\n", usb_list, tmp, name); - strhash = g_strdup_printf("[Device Information]\n" - "Product=%s\n" - "Manufacturer=%s\n" - "Max Current=%s\n" - "[Misc]\n" - "USB Version=%s\n" - "Class=%s\n" - "Vendor=0x%x\n" - "Product ID=0x%x\n" - "Bus=%d\n", - product ? g_strstrip(product) : "Unknown", - vendor ? g_strstrip(vendor) : "Unknown", - max_power ? g_strstrip(max_power) : "Unknown", - version ? g_strstrip(version) : "Unknown", - dev_class ? g_strstrip(dev_class) : "Unknown", vendor_id, product_id, bus); + const gchar *v_url = vendor_get_url(vendor); + const gchar *v_name = vendor_get_name(vendor); + gchar *v_str; + if (v_url != NULL) { + v_str = g_strdup_printf("%s (%s)", v_name, v_url); + } else { + v_str = g_strdup_printf("%s", g_strstrip(vendor) ); + } + + if (max_power != NULL) { + int mA = atoi(g_strstrip(max_power)); + gchar *trent_steel = g_strdup_printf("%d %s", mA, _("mA")); + g_free(max_power); + max_power = trent_steel; + } + + UNKIFNULL(product); + UNKIFNULL(v_str); + UNKIFNULL(max_power); + UNKIFNULL(version); + UNKIFNULL(dev_class); + + strhash = g_strdup_printf("[%s]\n" + /* Product */ "%s=%s\n" + /* Manufacturer */ "%s=%s\n" + /* Max Current */ "%s=%s\n" + "[%s]\n" + /* USB Version */ "%s=%s\n" + /* Class */ "%s=%s\n" + /* Vendor ID */ "%s=0x%x\n" + /* Product ID */ "%s=0x%x\n" + /* Bus */ "%s=%d\n", + _("Device Information"), + _("Product"), g_strstrip(product), + _("Vendor"), v_str, + _("Max Current"), g_strstrip(max_power), + _("Misc"), + _("USB Version"), g_strstrip(version), + _("Class"), g_strstrip(dev_class), + _("Vendor ID"), vendor_id, + _("Product ID"), product_id, + _("Bus"), bus); moreinfo_add_with_prefix("DEV", tmp, strhash); + g_free(v_str); g_free(vendor); g_free(product); g_free(max_power); @@ -356,25 +410,25 @@ gboolean __scan_usb_lsusb(void) if (usb_list) { moreinfo_del_with_prefix("DEV:USB"); - g_free(usb_list); + g_free(usb_list); } - usb_list = g_strdup("[USB Devices]\n"); + usb_list = g_strdup_printf("[%s]\n", _("USB Devices")); while (fgets(buffer, sizeof(buffer), temp_lsusb)) { if (g_str_has_prefix(buffer, "Bus ")) { __scan_usb_lsusb_add_device(buffer, sizeof(buffer), temp_lsusb, ++usb_device_number); } } - + fclose(temp_lsusb); - + return usb_device_number > 0; } void __scan_usb(void) { if (!__scan_usb_procfs()) { - if (!__scan_usb_sysfs()) { + if (!__scan_usb_sysfs()) { __scan_usb_lsusb(); } } diff --git a/modules/devices/x86/processor.c b/modules/devices/x86/processor.c index 25dc6c4a..ad3c7ca4 100644 --- a/modules/devices/x86/processor.c +++ b/modules/devices/x86/processor.c @@ -18,6 +18,10 @@ #include "hardinfo.h" #include "devices.h" +#include "cpu_util.h" + +#include "x86_data.h" +#include "x86_data.c" /* * This function is partly based on x86cpucaps @@ -148,10 +152,10 @@ static gchar *__cache_get_info_as_string(Processor *processor) for (cache_list = processor->cache; cache_list; cache_list = cache_list->next) { cache = (ProcessorCache *)cache_list->data; - result = h_strdup_cprintf("Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n", + result = h_strdup_cprintf(_("Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n"), result, cache->level, - cache->type, + C_("cache-type", cache->type), cache->ways_of_associativity, cache->number_of_sets, cache->size); @@ -160,6 +164,14 @@ static gchar *__cache_get_info_as_string(Processor *processor) return result; } +/* This is not used directly, but creates translatable strings for + * the type string returned from /sys/.../cache */ +static const char* cache_types[] = { + NC_("cache-type", /*/cache type, as appears in: Level 1 (Data)*/ "Data"), + NC_("cache-type", /*/cache type, as appears in: Level 1 (Instruction)*/ "Instruction"), + NC_("cache-type", /*/cache type, as appears in: Level 2 (Unified)*/ "Unified") +}; + static void __cache_obtain_info(Processor *processor) { ProcessorCache *cache; @@ -214,33 +226,6 @@ fail: g_free(endpoint); } -int processor_has_flag(gchar * strflags, gchar * strflag) -{ - gchar **flags; - gint ret = 0; - if (strflags == NULL || strflag == NULL) - return 0; - flags = g_strsplit(strflags, " ", 0); - ret = g_strv_contains((const gchar * const *)flags, strflag); - g_strfreev(flags); - return ret; -} - -static gint get_cpu_int(const gchar* file, gint cpuid) { - gchar *tmp0 = NULL; - gchar *tmp1 = NULL; - gint ret = 0; - - tmp0 = g_strdup_printf("/sys/devices/system/cpu/cpu%d/%s", cpuid, file); - g_file_get_contents(tmp0, &tmp1, NULL, NULL); - if (tmp1) - ret = atol(tmp1); - - g_free(tmp0); - g_free(tmp1); - return ret; -} - GSList *processor_scan(void) { GSList *procs = NULL, *l = NULL; @@ -248,7 +233,7 @@ GSList *processor_scan(void) FILE *cpuinfo; gchar buffer[512]; - cpuinfo = fopen("/proc/cpuinfo", "r"); + cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; @@ -280,6 +265,7 @@ GSList *processor_scan(void) get_str("flags", processor->flags); get_str("bugs", processor->bugs); get_str("power management", processor->pm); + get_str("microcode", processor->microcode); get_int("cache size", processor->cache_size); get_float("cpu MHz", processor->cpu_mhz); get_float("bogomips", processor->bogomips); @@ -290,6 +276,7 @@ GSList *processor_scan(void) get_str("hlt_bug", processor->bug_hlt); get_str("f00f_bug", processor->bug_f00f); get_str("coma_bug", processor->bug_coma); + /* sep_bug? */ get_int("model", processor->model); get_int("cpu family", processor->family); @@ -298,6 +285,8 @@ GSList *processor_scan(void) g_strfreev(tmp); } + fclose(cpuinfo); + /* finish last */ if (processor) procs = g_slist_append(procs, processor); @@ -305,9 +294,17 @@ GSList *processor_scan(void) for (l = procs; l; l = l->next) { processor = (Processor *) l->data; + STRIFNULL(processor->microcode, _("(Not Available)") ); + get_processor_strfamily(processor); __cache_obtain_info(processor); +#define NULLIFNOTYES(f) if (processor->f) if (strcmp(processor->f, "yes") != 0) { g_free(processor->f); processor->f = NULL; } + NULLIFNOTYES(bug_fdiv); + NULLIFNOTYES(bug_hlt); + NULLIFNOTYES(bug_f00f); + NULLIFNOTYES(bug_coma); + if (processor->bugs == NULL || g_strcmp0(processor->bugs, "") == 0) { g_free(processor->bugs); /* make bugs list on old kernels that don't offer one */ @@ -337,291 +334,38 @@ GSList *processor_scan(void) g_strchug(processor->pm); } - /* freq */ - processor->cpukhz_cur = get_cpu_int("cpufreq/scaling_cur_freq", processor->id); - processor->cpukhz_min = get_cpu_int("cpufreq/scaling_min_freq", processor->id); - processor->cpukhz_max = get_cpu_int("cpufreq/scaling_max_freq", processor->id); - if (processor->cpukhz_max) - processor->cpu_mhz = processor->cpukhz_max / 1000; - } - - fclose(cpuinfo); - - return procs; -} - -/* - * Sources: - * - Linux' cpufeature.h - * - http://gentoo-wiki.com/Cpuinfo - * - Intel IA-32 Architecture Software Development Manual - * - https://unix.stackexchange.com/questions/43539/what-do-the-flags-in-proc-cpuinfo-mean - */ -static struct { - char *name, *meaning; -} flag_meaning[] = { - { "3dnow", "3DNow! Technology" }, - { "3dnowext", "Extended 3DNow! Technology" }, - { "fpu", "Floating Point Unit" }, - { "vme", "Virtual 86 Mode Extension" }, - { "de", "Debug Extensions - I/O breakpoints" }, - { "pse", "Page Size Extensions (4MB pages)" }, - { "tsc", "Time Stamp Counter and RDTSC instruction" }, - { "msr", "Model Specific Registers" }, - { "pae", "Physical Address Extensions" }, - { "mce", "Machine Check Architecture" }, - { "cx8", "CMPXCHG8 instruction" }, - { "apic", "Advanced Programmable Interrupt Controller" }, - { "sep", "Fast System Call (SYSENTER/SYSEXIT)" }, - { "mtrr", "Memory Type Range Registers" }, - { "pge", "Page Global Enable" }, - { "mca", "Machine Check Architecture" }, - { "cmov", "Conditional Move instruction" }, - { "pat", "Page Attribute Table" }, - { "pse36", "36bit Page Size Extensions" }, - { "psn", "96 bit Processor Serial Number" }, - { "mmx", "MMX technology" }, - { "mmxext", "Extended MMX Technology" }, - { "cflush", "Cache Flush" }, - { "dtes", "Debug Trace Store" }, - { "fxsr", "FXSAVE and FXRSTOR instructions" }, - { "kni", "Streaming SIMD instructions" }, - { "xmm", "Streaming SIMD instructions" }, - { "ht", "HyperThreading" }, - { "mp", "Multiprocessing Capable" }, - { "sse", "SSE instructions" }, - { "sse2", "SSE2 (WNI) instructions" }, - { "acc", "Automatic Clock Control" }, - { "ia64", "IA64 Instructions" }, - { "syscall", "SYSCALL and SYSEXIT instructions" }, - { "nx", "No-execute Page Protection" }, - { "xd", "Execute Disable" }, - { "clflush", "Cache Line Flush instruction" }, - { "acpi", "Thermal Monitor and Software Controlled Clock" }, - { "dts", "Debug Store" }, - { "ss", "Self Snoop" }, - { "tm", "Thermal Monitor" }, - { "pbe", "Pending Break Enable" }, - { "pb", "Pending Break Enable" }, - { "pn", "Processor serial number" }, - { "ds", "Debug Store" }, - { "xmm2", "Streaming SIMD Extensions-2" }, - { "xmm3", "Streaming SIMD Extensions-3" }, - { "selfsnoop", "CPU self snoop" }, - { "rdtscp", "RDTSCP" }, - { "recovery", "CPU in recovery mode" }, - { "longrun", "Longrun power control" }, - { "lrti", "LongRun table interface" }, - { "cxmmx", "Cyrix MMX extensions" }, - { "k6_mtrr", "AMD K6 nonstandard MTRRs" }, - { "cyrix_arr", "Cyrix ARRs (= MTRRs)" }, - { "centaur_mcr","Centaur MCRs (= MTRRs)" }, - { "constant_tsc","TSC ticks at a constant rate" }, - { "up", "smp kernel running on up" }, - { "fxsave_leak","FXSAVE leaks FOP/FIP/FOP" }, - { "arch_perfmon","Intel Architectural PerfMon" }, - { "pebs", "Precise-Event Based Sampling" }, - { "bts", "Branch Trace Store" }, - { "sync_rdtsc", "RDTSC synchronizes the CPU" }, - { "rep_good", "rep microcode works well on this CPU" }, - { "mwait", "Monitor/Mwait support" }, - { "ds_cpl", "CPL Qualified Debug Store" }, - { "est", "Enhanced SpeedStep" }, - { "tm2", "Thermal Monitor 2" }, - { "cid", "Context ID" }, - { "xtpr", "Send Task Priority Messages" }, - { "xstore", "on-CPU RNG present (xstore insn)" }, - { "xstore_en", "on-CPU RNG enabled" }, - { "xcrypt", "on-CPU crypto (xcrypt insn)" }, - { "xcrypt_en", "on-CPU crypto enabled" }, - { "ace2", "Advanced Cryptography Engine v2" }, - { "ace2_en", "ACE v2 enabled" }, - { "phe", "PadLock Hash Engine" }, - { "phe_en", "PHE enabled" }, - { "pmm", "PadLock Montgomery Multiplier" }, - { "pmm_en", "PMM enabled" }, - { "lahf_lm", "LAHF/SAHF in long mode" }, - { "cmp_legacy", "HyperThreading not valid" }, - { "lm", "LAHF/SAHF in long mode" }, - { "ds_cpl", "CPL Qualified Debug Store" }, - { "vmx", "Virtualization support (Intel)" }, - { "svm", "Virtualization support (AMD)" }, - { "est", "Enhanced SpeedStep" }, - { "tm2", "Thermal Monitor 2" }, - { "ssse3", "Supplemental Streaming SIMD Extension 3" }, - { "cx16", "CMPXCHG16B instruction" }, - { "xptr", "Send Task Priority Messages" }, - { "pebs", "Precise Event Based Sampling" }, - { "bts", "Branch Trace Store" }, - { "ida", "Intel Dynamic Acceleration" }, - { "arch_perfmon","Intel Architectural PerfMon" }, - { "pni", "Streaming SIMD Extension 3 (Prescott New Instruction)" }, - { "rep_good", "rep microcode works well on this CPU" }, - { "ts", "Thermal Sensor" }, - { "sse3", "Streaming SIMD Extension 3" }, - { "sse4", "Streaming SIMD Extension 4" }, - { "tni", "Tejas New Instruction" }, - { "nni", "Nehalem New Instruction" }, - { "tpr", "Task Priority Register" }, - { "vid", "Voltage Identifier" }, - { "fid", "Frequency Identifier" }, - { "dtes64", "64-bit Debug Store" }, - { "monitor", "Monitor/Mwait support" }, - { "sse4_1", "Streaming SIMD Extension 4.1" }, - { "sse4_2", "Streaming SIMD Extension 4.2" }, - { "nopl", "NOPL instructions" }, - { "cxmmx", "Cyrix MMX extensions" }, - { "xtopology", "CPU topology enum extensions" }, - { "nonstop_tsc", "TSC does not stop in C states" }, - { "eagerfpu", "Non lazy FPU restor" }, - { "pclmulqdq", "Perform a Carry-Less Multiplication of Quadword instruction" }, - { "smx", "Safer mode: TXT (TPM support)" }, - { "pdcm", "Performance capabilities" }, - { "pcid", "Process Context Identifiers" }, - { "x2apic", "x2APIC" }, - { "popcnt", "Set bit count instructions" }, - { "aes", "Advanced Encryption Standard" }, - { "aes-ni", "Advanced Encryption Standard (New Instructions)" }, - { "xsave", "Save Processor Extended States" }, - { "avx", "Advanced Vector Instructions" }, - { NULL, NULL }, -}; - -static struct { - char *name, *meaning; -} bug_meaning[] = { - { "f00f", "Intel F00F bug" }, - { "fdiv", "FPU FDIV" }, - { "coma", "Cyrix 6x86 coma" }, - { "tlb_mmatch", "AMD Erratum 383" }, - { "apic_c1e", "AMD Erratum 400" }, - { "11ap", "Bad local APIC aka 11AP" }, - { "fxsave_leak", "FXSAVE leaks FOP/FIP/FOP" }, - { "clflush_monitor", "AAI65, CLFLUSH required before MONITOR" }, - { "sysret_ss_attrs", "SYSRET doesn't fix up SS attrs" }, - { "espfix", "IRET to 16-bit SS corrupts ESP/RSP high bits" }, - { "null_seg", "Nulling a selector preserves the base" }, /* see: detect_null_seg_behavior() */ - { "swapgs_fence","SWAPGS without input dep on GS" }, - { "monitor", "IPI required to wake up remote CPU" }, - { "amd_e400", "AMD Erratum 400" }, - { NULL, NULL }, -}; - -/* from arch/x86/kernel/cpu/powerflags.h */ -static struct { - char *name, *meaning; -} pm_meaning[] = { - { "ts", "temperature sensor" }, - { "fid", "frequency id control" }, - { "vid", "voltage id control" }, - { "ttp", "thermal trip" }, - { "tm", "hardware thermal control" }, - { "stc", "software thermal control" }, - { "100mhzsteps", "100 MHz multiplier control" }, - { "hwpstate", "hardware P-state control" }, -/* { "", "tsc invariant mapped to constant_tsc" }, */ - { "cpb", "core performance boost" }, - { "eff_freq_ro", "Readonly aperf/mperf" }, - { "proc_feedback", "processor feedback interface" }, - { "acc_power", "accumulated power mechanism" }, - { NULL, NULL }, -}; - -GHashTable *cpu_flags = NULL; - -static void -populate_cpu_flags_list_internal() -{ - int i; - - DEBUG("using internal CPU flags database"); + /* topo & freq */ + processor->cpufreq = cpufreq_new(processor->id); + processor->cputopo = cputopo_new(processor->id); - for (i = 0; flag_meaning[i].name != NULL; i++) { - g_hash_table_insert(cpu_flags, flag_meaning[i].name, - flag_meaning[i].meaning); + if (processor->cpufreq->cpukhz_max) + processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; } - for (i = 0; bug_meaning[i].name != NULL; i++) { - g_hash_table_insert(cpu_flags, bug_meaning[i].name, - bug_meaning[i].meaning); - } - for (i = 0; pm_meaning[i].name != NULL; i++) { - g_hash_table_insert(cpu_flags, pm_meaning[i].name, - pm_meaning[i].meaning); - } -} - -void cpu_flags_init(void) -{ - gint i; - gchar *path; - - cpu_flags = g_hash_table_new(g_str_hash, g_str_equal); - - path = g_build_filename(g_get_home_dir(), ".hardinfo", "cpuflags.conf", NULL); - if (!g_file_test(path, G_FILE_TEST_EXISTS)) { - populate_cpu_flags_list_internal(); - } else { - GKeyFile *flags_file; - DEBUG("using %s as CPU flags database", path); - - flags_file = g_key_file_new(); - if (g_key_file_load_from_file(flags_file, path, 0, NULL)) { - gchar **flag_keys; - - flag_keys = g_key_file_get_keys(flags_file, "flags", - NULL, NULL); - if (!flag_keys) { - DEBUG("error while using %s as CPU flags database, falling back to internal", - path); - populate_cpu_flags_list_internal(); - } else { - for (i = 0; flag_keys[i]; i++) { - gchar *meaning; - - meaning = g_key_file_get_string(flags_file, "flags", - flag_keys[i], NULL); - - g_hash_table_insert(cpu_flags, g_strdup(flag_keys[i]), meaning); - - /* can't free meaning */ - } - - g_strfreev(flag_keys); - } - } - - g_key_file_free(flags_file); - } - - g_free(path); + return procs; } -gchar *processor_get_capabilities_from_flags(gchar * strflags) +gchar *processor_get_capabilities_from_flags(gchar *strflags, gchar *lookup_prefix) { - /* FIXME: - * - Separate between processor capabilities, additional instructions and whatnot. - */ gchar **flags, **old; + gchar tmp_flag[64] = ""; + const gchar *meaning; gchar *tmp = NULL; gint j = 0; - if (!cpu_flags) { - cpu_flags_init(); - } - flags = g_strsplit(strflags, " ", 0); old = flags; while (flags[j]) { - gchar *meaning = g_hash_table_lookup(cpu_flags, flags[j]); + sprintf(tmp_flag, "%s%s", lookup_prefix, flags[j]); + meaning = x86_flag_meaning(tmp_flag); - if (meaning) { - tmp = h_strdup_cprintf("%s=%s\n", tmp, flags[j], meaning); + if (meaning) { + tmp = h_strdup_cprintf("%s=%s\n", tmp, flags[j], meaning); } else { - tmp = h_strdup_cprintf("%s=\n", tmp, flags[j]); + tmp = h_strdup_cprintf("%s=\n", tmp, flags[j]); } - j++; + j++; } if (tmp == NULL || g_strcmp0(tmp, "") == 0) tmp = g_strdup_printf("%s=%s\n", "empty", _("Empty List")); @@ -632,96 +376,120 @@ gchar *processor_get_capabilities_from_flags(gchar * strflags) gchar *processor_get_detailed_info(Processor * processor) { - gchar *tmp_flags, *tmp_bugs, *tmp_pm, *ret, *cache_info; + gchar *tmp_flags, *tmp_bugs, *tmp_pm, *tmp_cpufreq, *tmp_topology, *ret, *cache_info; - tmp_flags = processor_get_capabilities_from_flags(processor->flags); - tmp_bugs = processor_get_capabilities_from_flags(processor->bugs); - tmp_pm = processor_get_capabilities_from_flags(processor->pm); + tmp_flags = processor_get_capabilities_from_flags(processor->flags, ""); + tmp_bugs = processor_get_capabilities_from_flags(processor->bugs, "bug:"); + tmp_pm = processor_get_capabilities_from_flags(processor->pm, "pm:"); cache_info = __cache_get_info_as_string(processor); - ret = g_strdup_printf(_("[Processor]\n" - "Name=%s\n" - "Family, model, stepping=%d, %d, %d (%s)\n" - "Vendor=%s\n" - "[Configuration]\n" - "Cache Size=%dkb\n" - "Frequency=%.2fMHz\n" - "BogoMIPS=%.2f\n" - "Byte Order=%s\n" - "[Frequency Scaling]\n" - "Minimum=%d kHz\n" - "Maximum=%d kHz\n" - "Current=%d kHz\n" - "[Features]\n" - "Has FPU=%s\n" - "[Cache]\n" - "%s\n" - "[Power Management]\n" - "%s" - "[Bugs]\n" - "%s" - "[Capabilities]\n" - "%s"), - processor->model_name, - processor->family, - processor->model, - processor->stepping, - processor->strmodel, - vendor_get_name(processor->vendor_id), - processor->cache_size, - processor->cpu_mhz, processor->bogomips, -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - "Little Endian", -#else - "Big Endian", -#endif - processor->cpukhz_min, - processor->cpukhz_max, - processor->cpukhz_cur, - processor->has_fpu ? processor->has_fpu : "no", - cache_info, - tmp_pm, tmp_bugs, tmp_flags); + tmp_topology = cputopo_section_str(processor->cputopo); + tmp_cpufreq = cpufreq_section_str(processor->cpufreq); + + ret = g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%d, %d, %d (%s)\n" /* family, model, stepping (decoded name) */ + "%s=%s\n" /* vendor */ + "%s=%s\n" /* microcode */ + "[%s]\n" /* configuration */ + "%s=%d %s\n" /* cache size (from cpuinfo) */ + "%s=%.2f %s\n" /* frequency */ + "%s=%.2f\n" /* bogomips */ + "%s=%s\n" /* byte order */ + "%s" /* topology */ + "%s" /* frequency scaling */ + "[%s]\n" /* cache */ + "%s\n" + "[%s]\n" /* pm */ + "%s" + "[%s]\n" /* bugs */ + "%s" + "[%s]\n" /* flags */ + "%s", + _("Processor"), + _("Model Name"), processor->model_name, + _("Family, model, stepping"), + processor->family, + processor->model, + processor->stepping, + processor->strmodel, + _("Vendor"), vendor_get_name(processor->vendor_id), + _("Microcode Version"), processor->microcode, + _("Configuration"), + _("Cache Size"), processor->cache_size, _("kb"), + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("BogoMips"), processor->bogomips, + _("Byte Order"), byte_order_str(), + tmp_topology, + tmp_cpufreq, + _("Cache"), cache_info, + _("Power Management"), tmp_pm, + _("Bug Workarounds"), tmp_bugs, + _("Capabilities"), tmp_flags ); g_free(tmp_flags); g_free(tmp_bugs); g_free(tmp_pm); g_free(cache_info); + g_free(tmp_cpufreq); + g_free(tmp_topology); + return ret; +} + +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); +} + +gchar *processor_meta(GSList * processors) { + gchar *meta_cpu_name = processor_name(processors); + gchar *meta_cpu_desc = processor_describe(processors); + gchar *ret = NULL; + UNKIFNULL(meta_cpu_desc); + ret = g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%s\n", + _("Package Information"), + _("Name"), meta_cpu_name, + _("Description"), meta_cpu_desc); + g_free(meta_cpu_desc); return ret; } gchar *processor_get_info(GSList * processors) { Processor *processor; + gchar *ret, *tmp, *hashkey; + gchar *meta; /* becomes owned by more_info? no need to free? */ + GSList *l; - if (g_slist_length(processors) > 1) { - gchar *ret, *tmp, *hashkey; - GSList *l; - - tmp = g_strdup(""); + tmp = g_strdup_printf("$CPU_META$%s=\n", _("Package Information") ); - for (l = processors; l; l = l->next) { - processor = (Processor *) l->data; + meta = processor_meta(processors); + moreinfo_add_with_prefix("DEV", "CPU_META", meta); - tmp = g_strdup_printf(_("%s$CPU%d$%s=%.2fMHz\n"), - tmp, processor->id, - processor->model_name, - processor->cpu_mhz); - - hashkey = g_strdup_printf("CPU%d", processor->id); - moreinfo_add_with_prefix("DEV", hashkey, - processor_get_detailed_info(processor)); - g_free(hashkey); - } + for (l = processors; l; l = l->next) { + processor = (Processor *) l->data; - ret = g_strdup_printf("[$ShellParam$]\n" - "ViewType=1\n" - "[Processors]\n" - "%s", tmp); - g_free(tmp); + tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", + tmp, processor->id, + processor->model_name, + processor->cpu_mhz, _("MHz")); - return ret; + hashkey = g_strdup_printf("CPU%d", processor->id); + moreinfo_add_with_prefix("DEV", hashkey, + processor_get_detailed_info(processor)); + g_free(hashkey); } - processor = (Processor *) processors->data; - return processor_get_detailed_info(processor); + ret = g_strdup_printf("[$ShellParam$]\n" + "ViewType=1\n" + "[Processors]\n" + "%s", tmp); + g_free(tmp); + + return ret; } + diff --git a/modules/devices/x86/x86_data.c b/modules/devices/x86/x86_data.c new file mode 100644 index 00000000..ebd434bb --- /dev/null +++ b/modules/devices/x86/x86_data.c @@ -0,0 +1,344 @@ +/* + * rpiz - https://github.com/bp0/rpiz + * Copyright (C) 2017 Burt P. <pburt0@gmail.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include "x86_data.h" + +#ifndef C_ +#define C_(Ctx, String) String +#endif +#ifndef NC_ +#define NC_(Ctx, String) String +#endif + +/* sources: + * https://unix.stackexchange.com/a/43540 + * https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/arch/x86/include/asm/cpufeatures.h?id=refs/tags/v4.9 + * hardinfo: modules/devices/x86/processor.c + */ +static struct { + char *name, *meaning; +} tab_flag_meaning[] = { +/* Intel-defined CPU features, CPUID level 0x00000001 (edx) + * See also Wikipedia and table 2-27 in Intel Advanced Vector Extensions Programming Reference */ + { "fpu", NC_("x86-flag", /*/flag:fpu*/ "Onboard FPU (floating point support)") }, + { "vme", NC_("x86-flag", /*/flag:vme*/ "Virtual 8086 mode enhancements") }, + { "de", NC_("x86-flag", /*/flag:de*/ "Debugging Extensions (CR4.DE)") }, + { "pse", NC_("x86-flag", /*/flag:pse*/ "Page Size Extensions (4MB memory pages)") }, + { "tsc", NC_("x86-flag", /*/flag:tsc*/ "Time Stamp Counter (RDTSC)") }, + { "msr", NC_("x86-flag", /*/flag:msr*/ "Model-Specific Registers (RDMSR, WRMSR)") }, + { "pae", NC_("x86-flag", /*/flag:pae*/ "Physical Address Extensions (support for more than 4GB of RAM)") }, + { "mce", NC_("x86-flag", /*/flag:mce*/ "Machine Check Exception") }, + { "cx8", NC_("x86-flag", /*/flag:cx8*/ "CMPXCHG8 instruction (64-bit compare-and-swap)") }, + { "apic", NC_("x86-flag", /*/flag:apic*/ "Onboard APIC") }, + { "sep", NC_("x86-flag", /*/flag:sep*/ "SYSENTER/SYSEXIT") }, + { "mtrr", NC_("x86-flag", /*/flag:mtrr*/ "Memory Type Range Registers") }, + { "pge", NC_("x86-flag", /*/flag:pge*/ "Page Global Enable (global bit in PDEs and PTEs)") }, + { "mca", NC_("x86-flag", /*/flag:mca*/ "Machine Check Architecture") }, + { "cmov", NC_("x86-flag", /*/flag:cmov*/ "CMOV instructions (conditional move) (also FCMOV)") }, + { "pat", NC_("x86-flag", /*/flag:pat*/ "Page Attribute Table") }, + { "pse36", NC_("x86-flag", /*/flag:pse36*/ "36-bit PSEs (huge pages)") }, + { "pn", NC_("x86-flag", /*/flag:pn*/ "Processor serial number") }, + { "clflush", NC_("x86-flag", /*/flag:clflush*/ "Cache Line Flush instruction") }, + { "dts", NC_("x86-flag", /*/flag:dts*/ "Debug Store (buffer for debugging and profiling instructions), or alternately: digital thermal sensor") }, + { "acpi", NC_("x86-flag", /*/flag:acpi*/ "ACPI via MSR (temperature monitoring and clock speed modulation)") }, + { "mmx", NC_("x86-flag", /*/flag:mmx*/ "Multimedia Extensions") }, + { "fxsr", NC_("x86-flag", /*/flag:fxsr*/ "FXSAVE/FXRSTOR, CR4.OSFXSR") }, + { "sse", NC_("x86-flag", /*/flag:sse*/ "Intel SSE vector instructions") }, + { "sse2", NC_("x86-flag", /*/flag:sse2*/ "SSE2") }, + { "ss", NC_("x86-flag", /*/flag:ss*/ "CPU self snoop") }, + { "ht", NC_("x86-flag", /*/flag:ht*/ "Hyper-Threading") }, + { "tm", NC_("x86-flag", /*/flag:tm*/ "Automatic clock control (Thermal Monitor)") }, + { "ia64", NC_("x86-flag", /*/flag:ia64*/ "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)") }, + { "pbe", NC_("x86-flag", /*/flag:pbe*/ "Pending Break Enable (PBE# pin) wakeup support") }, +/* AMD-defined CPU features, CPUID level 0x80000001 + * See also Wikipedia and table 2-23 in Intel Advanced Vector Extensions Programming Reference */ + { "syscall", NC_("x86-flag", /*/flag:syscall*/ "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)") }, + { "mp", NC_("x86-flag", /*/flag:mp*/ "Multiprocessing Capable.") }, + { "nx", NC_("x86-flag", /*/flag:nx*/ "Execute Disable") }, + { "mmxext", NC_("x86-flag", /*/flag:mmxext*/ "AMD MMX extensions") }, + { "fxsr_opt", NC_("x86-flag", /*/flag:fxsr_opt*/ "FXSAVE/FXRSTOR optimizations") }, + { "pdpe1gb", NC_("x86-flag", /*/flag:pdpe1gb*/ "One GB pages (allows hugepagesz=1G)") }, + { "rdtscp", NC_("x86-flag", /*/flag:rdtscp*/ "Read Time-Stamp Counter and Processor ID") }, + { "lm", NC_("x86-flag", /*/flag:lm*/ "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)") }, + { "3dnow", NC_("x86-flag", /*/flag:3dnow*/ "3DNow! (AMD vector instructions, competing with Intel's SSE1)") }, + { "3dnowext", NC_("x86-flag", /*/flag:3dnowext*/ "AMD 3DNow! extensions") }, +/* Transmeta-defined CPU features, CPUID level 0x80860001 */ + { "recovery", NC_("x86-flag", /*/flag:recovery*/ "CPU in recovery mode") }, + { "longrun", NC_("x86-flag", /*/flag:longrun*/ "Longrun power control") }, + { "lrti", NC_("x86-flag", /*/flag:lrti*/ "LongRun table interface") }, +/* Other features, Linux-defined mapping */ + { "cxmmx", NC_("x86-flag", /*/flag:cxmmx*/ "Cyrix MMX extensions") }, + { "k6_mtrr", NC_("x86-flag", /*/flag:k6_mtrr*/ "AMD K6 nonstandard MTRRs") }, + { "cyrix_arr", NC_("x86-flag", /*/flag:cyrix_arr*/ "Cyrix ARRs (= MTRRs)") }, + { "centaur_mcr", NC_("x86-flag", /*/flag:centaur_mcr*/ "Centaur MCRs (= MTRRs)") }, + { "constant_tsc", NC_("x86-flag", /*/flag:constant_tsc*/ "TSC ticks at a constant rate") }, + { "up", NC_("x86-flag", /*/flag:up*/ "SMP kernel running on UP") }, + { "art", NC_("x86-flag", /*/flag:art*/ "Always-Running Timer") }, + { "arch_perfmon", NC_("x86-flag", /*/flag:arch_perfmon*/ "Intel Architectural PerfMon") }, + { "pebs", NC_("x86-flag", /*/flag:pebs*/ "Precise-Event Based Sampling") }, + { "bts", NC_("x86-flag", /*/flag:bts*/ "Branch Trace Store") }, + { "rep_good", NC_("x86-flag", /*/flag:rep_good*/ "rep microcode works well") }, + { "acc_power", NC_("x86-flag", /*/flag:acc_power*/ "AMD accumulated power mechanism") }, + { "nopl", NC_("x86-flag", /*/flag:nopl*/ "The NOPL (0F 1F) instructions") }, + { "xtopology", NC_("x86-flag", /*/flag:xtopology*/ "cpu topology enum extensions") }, + { "tsc_reliable", NC_("x86-flag", /*/flag:tsc_reliable*/ "TSC is known to be reliable") }, + { "nonstop_tsc", NC_("x86-flag", /*/flag:nonstop_tsc*/ "TSC does not stop in C states") }, + { "extd_apicid", NC_("x86-flag", /*/flag:extd_apicid*/ "has extended APICID (8 bits)") }, + { "amd_dcm", NC_("x86-flag", /*/flag:amd_dcm*/ "multi-node processor") }, + { "aperfmperf", NC_("x86-flag", /*/flag:aperfmperf*/ "APERFMPERF") }, + { "eagerfpu", NC_("x86-flag", /*/flag:eagerfpu*/ "Non lazy FPU restore") }, + { "nonstop_tsc_s3", NC_("x86-flag", /*/flag:nonstop_tsc_s3*/ "TSC doesn't stop in S3 state") }, + { "mce_recovery", NC_("x86-flag", /*/flag:mce_recovery*/ "CPU has recoverable machine checks") }, +/* Intel-defined CPU features, CPUID level 0x00000001 (ecx) + * See also Wikipedia and table 2-26 in Intel Advanced Vector Extensions Programming Reference */ + { "pni", NC_("x86-flag", /*/flag:pni*/ "SSE-3 (\"Prescott New Instructions\")") }, + { "pclmulqdq", NC_("x86-flag", /*/flag:pclmulqdq*/ "Perform a Carry-Less Multiplication of Quadword instruction - accelerator for GCM)") }, + { "dtes64", NC_("x86-flag", /*/flag:dtes64*/ "64-bit Debug Store") }, + { "monitor", NC_("x86-flag", /*/flag:monitor*/ "Monitor/Mwait support (Intel SSE3 supplements)") }, + { "ds_cpl", NC_("x86-flag", /*/flag:ds_cpl*/ "CPL Qual. Debug Store") }, + { "vmx", NC_("x86-flag", /*/flag:vmx*/ "Hardware virtualization, Intel VMX") }, + { "smx", NC_("x86-flag", /*/flag:smx*/ "Safer mode TXT (TPM support)") }, + { "est", NC_("x86-flag", /*/flag:est*/ "Enhanced SpeedStep") }, + { "tm2", NC_("x86-flag", /*/flag:tm2*/ "Thermal Monitor 2") }, + { "ssse3", NC_("x86-flag", /*/flag:ssse3*/ "Supplemental SSE-3") }, + { "cid", NC_("x86-flag", /*/flag:cid*/ "Context ID") }, + { "sdbg", NC_("x86-flag", /*/flag:sdbg*/ "silicon debug") }, + { "fma", NC_("x86-flag", /*/flag:fma*/ "Fused multiply-add") }, + { "cx16", NC_("x86-flag", /*/flag:cx16*/ "CMPXCHG16B") }, + { "xtpr", NC_("x86-flag", /*/flag:xtpr*/ "Send Task Priority Messages") }, + { "pdcm", NC_("x86-flag", /*/flag:pdcm*/ "Performance Capabilities") }, + { "pcid", NC_("x86-flag", /*/flag:pcid*/ "Process Context Identifiers") }, + { "dca", NC_("x86-flag", /*/flag:dca*/ "Direct Cache Access") }, + { "sse4_1", NC_("x86-flag", /*/flag:sse4_1*/ "SSE-4.1") }, + { "sse4_2", NC_("x86-flag", /*/flag:sse4_2*/ "SSE-4.2") }, + { "x2apic", NC_("x86-flag", /*/flag:x2apic*/ "x2APIC") }, + { "movbe", NC_("x86-flag", /*/flag:movbe*/ "Move Data After Swapping Bytes instruction") }, + { "popcnt", NC_("x86-flag", /*/flag:popcnt*/ "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i.e. bit count)") }, + { "tsc_deadline_timer", NC_("x86-flag", /*/flag:tsc_deadline_timer*/ "Tsc deadline timer") }, + { "aes/aes-ni", NC_("x86-flag", /*/flag:aes/aes-ni*/ "Advanced Encryption Standard (New Instructions)") }, + { "xsave", NC_("x86-flag", /*/flag:xsave*/ "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY") }, + { "avx", NC_("x86-flag", /*/flag:avx*/ "Advanced Vector Extensions") }, + { "f16c", NC_("x86-flag", /*/flag:f16c*/ "16-bit fp conversions (CVT16)") }, + { "rdrand", NC_("x86-flag", /*/flag:rdrand*/ "Read Random Number from hardware random number generator instruction") }, + { "hypervisor", NC_("x86-flag", /*/flag:hypervisor*/ "Running on a hypervisor") }, +/* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 */ + { "rng", NC_("x86-flag", /*/flag:rng*/ "Random Number Generator present (xstore)") }, + { "rng_en", NC_("x86-flag", /*/flag:rng_en*/ "Random Number Generator enabled") }, + { "ace", NC_("x86-flag", /*/flag:ace*/ "on-CPU crypto (xcrypt)") }, + { "ace_en", NC_("x86-flag", /*/flag:ace_en*/ "on-CPU crypto enabled") }, + { "ace2", NC_("x86-flag", /*/flag:ace2*/ "Advanced Cryptography Engine v2") }, + { "ace2_en", NC_("x86-flag", /*/flag:ace2_en*/ "ACE v2 enabled") }, + { "phe", NC_("x86-flag", /*/flag:phe*/ "PadLock Hash Engine") }, + { "phe_en", NC_("x86-flag", /*/flag:phe_en*/ "PHE enabled") }, + { "pmm", NC_("x86-flag", /*/flag:pmm*/ "PadLock Montgomery Multiplier") }, + { "pmm_en", NC_("x86-flag", /*/flag:pmm_en*/ "PMM enabled") }, +/* More extended AMD flags: CPUID level 0x80000001, ecx */ + { "lahf_lm", NC_("x86-flag", /*/flag:lahf_lm*/ "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode") }, + { "cmp_legacy", NC_("x86-flag", /*/flag:cmp_legacy*/ "If yes HyperThreading not valid") }, + { "svm", NC_("x86-flag", /*/flag:svm*/ "\"Secure virtual machine\": AMD-V") }, + { "extapic", NC_("x86-flag", /*/flag:extapic*/ "Extended APIC space") }, + { "cr8_legacy", NC_("x86-flag", /*/flag:cr8_legacy*/ "CR8 in 32-bit mode") }, + { "abm", NC_("x86-flag", /*/flag:abm*/ "Advanced Bit Manipulation") }, + { "sse4a", NC_("x86-flag", /*/flag:sse4a*/ "SSE-4A") }, + { "misalignsse", NC_("x86-flag", /*/flag:misalignsse*/ "indicates if a general-protection exception (#GP) is generated when some legacy SSE instructions operate on unaligned data. Also depends on CR0 and Alignment Checking bit") }, + { "3dnowprefetch", NC_("x86-flag", /*/flag:3dnowprefetch*/ "3DNow prefetch instructions") }, + { "osvw", NC_("x86-flag", /*/flag:osvw*/ "indicates OS Visible Workaround, which allows the OS to work around processor errata.") }, + { "ibs", NC_("x86-flag", /*/flag:ibs*/ "Instruction Based Sampling") }, + { "xop", NC_("x86-flag", /*/flag:xop*/ "extended AVX instructions") }, + { "skinit", NC_("x86-flag", /*/flag:skinit*/ "SKINIT/STGI instructions") }, + { "wdt", NC_("x86-flag", /*/flag:wdt*/ "Watchdog timer") }, + { "lwp", NC_("x86-flag", /*/flag:lwp*/ "Light Weight Profiling") }, + { "fma4", NC_("x86-flag", /*/flag:fma4*/ "4 operands MAC instructions") }, + { "tce", NC_("x86-flag", /*/flag:tce*/ "translation cache extension") }, + { "nodeid_msr", NC_("x86-flag", /*/flag:nodeid_msr*/ "NodeId MSR") }, + { "tbm", NC_("x86-flag", /*/flag:tbm*/ "Trailing Bit Manipulation") }, + { "topoext", NC_("x86-flag", /*/flag:topoext*/ "Topology Extensions CPUID leafs") }, + { "perfctr_core", NC_("x86-flag", /*/flag:perfctr_core*/ "Core Performance Counter Extensions") }, + { "perfctr_nb", NC_("x86-flag", /*/flag:perfctr_nb*/ "NB Performance Counter Extensions") }, + { "bpext", NC_("x86-flag", /*/flag:bpext*/ "data breakpoint extension") }, + { "ptsc", NC_("x86-flag", /*/flag:ptsc*/ "performance time-stamp counter") }, + { "perfctr_l2", NC_("x86-flag", /*/flag:perfctr_l2*/ "L2 Performance Counter Extensions") }, + { "mwaitx", NC_("x86-flag", /*/flag:mwaitx*/ "MWAIT extension (MONITORX/MWAITX)") }, +/* Auxiliary flags: Linux defined - For features scattered in various CPUID levels */ + { "cpb", NC_("x86-flag", /*/flag:cpb*/ "AMD Core Performance Boost") }, + { "epb", NC_("x86-flag", /*/flag:epb*/ "IA32_ENERGY_PERF_BIAS support") }, + { "hw_pstate", NC_("x86-flag", /*/flag:hw_pstate*/ "AMD HW-PState") }, + { "proc_feedback", NC_("x86-flag", /*/flag:proc_feedback*/ "AMD ProcFeedbackInterface") }, + { "intel_pt", NC_("x86-flag", /*/flag:intel_pt*/ "Intel Processor Tracing") }, +/* Virtualization flags: Linux defined */ + { "tpr_shadow", NC_("x86-flag", /*/flag:tpr_shadow*/ "Intel TPR Shadow") }, + { "vnmi", NC_("x86-flag", /*/flag:vnmi*/ "Intel Virtual NMI") }, + { "flexpriority", NC_("x86-flag", /*/flag:flexpriority*/ "Intel FlexPriority") }, + { "ept", NC_("x86-flag", /*/flag:ept*/ "Intel Extended Page Table") }, + { "vpid", NC_("x86-flag", /*/flag:vpid*/ "Intel Virtual Processor ID") }, + { "vmmcall", NC_("x86-flag", /*/flag:vmmcall*/ "prefer VMMCALL to VMCALL") }, +/* Intel-defined CPU features, CPUID level 0x00000007:0 (ebx) */ + { "fsgsbase", NC_("x86-flag", /*/flag:fsgsbase*/ "{RD/WR}{FS/GS}BASE instructions") }, + { "tsc_adjust", NC_("x86-flag", /*/flag:tsc_adjust*/ "TSC adjustment MSR") }, + { "bmi1", NC_("x86-flag", /*/flag:bmi1*/ "1st group bit manipulation extensions") }, + { "hle", NC_("x86-flag", /*/flag:hle*/ "Hardware Lock Elision") }, + { "avx2", NC_("x86-flag", /*/flag:avx2*/ "AVX2 instructions") }, + { "smep", NC_("x86-flag", /*/flag:smep*/ "Supervisor Mode Execution Protection") }, + { "bmi2", NC_("x86-flag", /*/flag:bmi2*/ "2nd group bit manipulation extensions") }, + { "erms", NC_("x86-flag", /*/flag:erms*/ "Enhanced REP MOVSB/STOSB") }, + { "invpcid", NC_("x86-flag", /*/flag:invpcid*/ "Invalidate Processor Context ID") }, + { "rtm", NC_("x86-flag", /*/flag:rtm*/ "Restricted Transactional Memory") }, + { "cqm", NC_("x86-flag", /*/flag:cqm*/ "Cache QoS Monitoring") }, + { "mpx", NC_("x86-flag", /*/flag:mpx*/ "Memory Protection Extension") }, + { "avx512f", NC_("x86-flag", /*/flag:avx512f*/ "AVX-512 foundation") }, + { "avx512dq", NC_("x86-flag", /*/flag:avx512dq*/ "AVX-512 Double/Quad instructions") }, + { "rdseed", NC_("x86-flag", /*/flag:rdseed*/ "The RDSEED instruction") }, + { "adx", NC_("x86-flag", /*/flag:adx*/ "The ADCX and ADOX instructions") }, + { "smap", NC_("x86-flag", /*/flag:smap*/ "Supervisor Mode Access Prevention") }, + { "clflushopt", NC_("x86-flag", /*/flag:clflushopt*/ "CLFLUSHOPT instruction") }, + { "clwb", NC_("x86-flag", /*/flag:clwb*/ "CLWB instruction") }, + { "avx512pf", NC_("x86-flag", /*/flag:avx512pf*/ "AVX-512 Prefetch") }, + { "avx512er", NC_("x86-flag", /*/flag:avx512er*/ "AVX-512 Exponential and Reciprocal") }, + { "avx512cd", NC_("x86-flag", /*/flag:avx512cd*/ "AVX-512 Conflict Detection") }, + { "sha_ni", NC_("x86-flag", /*/flag:sha_ni*/ "SHA1/SHA256 Instruction Extensions") }, + { "avx512bw", NC_("x86-flag", /*/flag:avx512bw*/ "AVX-512 Byte/Word instructions") }, + { "avx512vl", NC_("x86-flag", /*/flag:avx512vl*/ "AVX-512 128/256 Vector Length extensions") }, +/* Extended state features, CPUID level 0x0000000d:1 (eax) */ + { "xsaveopt", NC_("x86-flag", /*/flag:xsaveopt*/ "Optimized XSAVE") }, + { "xsavec", NC_("x86-flag", /*/flag:xsavec*/ "XSAVEC") }, + { "xgetbv1", NC_("x86-flag", /*/flag:xgetbv1*/ "XGETBV with ECX = 1") }, + { "xsaves", NC_("x86-flag", /*/flag:xsaves*/ "XSAVES/XRSTORS") }, +/* Intel-defined CPU QoS sub-leaf, CPUID level 0x0000000F:0 (edx) */ + { "cqm_llc", NC_("x86-flag", /*/flag:cqm_llc*/ "LLC QoS") }, +/* Intel-defined CPU QoS sub-leaf, CPUID level 0x0000000F:1 (edx) */ + { "cqm_occup_llc", NC_("x86-flag", /*/flag:cqm_occup_llc*/ "LLC occupancy monitoring") }, + { "cqm_mbm_total", NC_("x86-flag", /*/flag:cqm_mbm_total*/ "LLC total MBM monitoring") }, + { "cqm_mbm_local", NC_("x86-flag", /*/flag:cqm_mbm_local*/ "LLC local MBM monitoring") }, +/* AMD-defined CPU features, CPUID level 0x80000008 (ebx) */ + { "clzero", NC_("x86-flag", /*/flag:clzero*/ "CLZERO instruction") }, + { "irperf", NC_("x86-flag", /*/flag:irperf*/ "instructions retired performance counter") }, +/* Thermal and Power Management leaf, CPUID level 0x00000006 (eax) */ + { "dtherm", NC_("x86-flag", /*/flag:dtherm*/ "digital thermal sensor") }, /* formerly dts */ + { "ida", NC_("x86-flag", /*/flag:ida*/ "Intel Dynamic Acceleration") }, + { "arat", NC_("x86-flag", /*/flag:arat*/ "Always Running APIC Timer") }, + { "pln", NC_("x86-flag", /*/flag:pln*/ "Intel Power Limit Notification") }, + { "pts", NC_("x86-flag", /*/flag:pts*/ "Intel Package Thermal Status") }, + { "hwp", NC_("x86-flag", /*/flag:hwp*/ "Intel Hardware P-states") }, + { "hwp_notify", NC_("x86-flag", /*/flag:hwp_notify*/ "HWP notification") }, + { "hwp_act_window", NC_("x86-flag", /*/flag:hwp_act_window*/ "HWP Activity Window") }, + { "hwp_epp", NC_("x86-flag", /*/flag:hwp_epp*/ "HWP Energy Performance Preference") }, + { "hwp_pkg_req", NC_("x86-flag", /*/flag:hwp_pkg_req*/ "HWP package-level request") }, +/* AMD SVM Feature Identification, CPUID level 0x8000000a (edx) */ + { "npt", NC_("x86-flag", /*/flag:npt*/ "AMD Nested Page Table support") }, + { "lbrv", NC_("x86-flag", /*/flag:lbrv*/ "AMD LBR Virtualization support") }, + { "svm_lock", NC_("x86-flag", /*/flag:svm_lock*/ "AMD SVM locking MSR") }, + { "nrip_save", NC_("x86-flag", /*/flag:nrip_save*/ "AMD SVM next_rip save") }, + { "tsc_scale", NC_("x86-flag", /*/flag:tsc_scale*/ "AMD TSC scaling support") }, + { "vmcb_clean", NC_("x86-flag", /*/flag:vmcb_clean*/ "AMD VMCB clean bits support") }, + { "flushbyasid", NC_("x86-flag", /*/flag:flushbyasid*/ "AMD flush-by-ASID support") }, + { "decodeassists", NC_("x86-flag", /*/flag:decodeassists*/ "AMD Decode Assists support") }, + { "pausefilter", NC_("x86-flag", /*/flag:pausefilter*/ "AMD filtered pause intercept") }, + { "pfthreshold", NC_("x86-flag", /*/flag:pfthreshold*/ "AMD pause filter threshold") }, + { "avic", NC_("x86-flag", /*/flag:avic*/ "Virtual Interrupt Controller") }, +/* Intel-defined CPU features, CPUID level 0x00000007:0 (ecx) */ + { "pku", NC_("x86-flag", /*/flag:pku*/ "Protection Keys for Userspace") }, + { "ospke", NC_("x86-flag", /*/flag:ospke*/ "OS Protection Keys Enable") }, +/* AMD-defined CPU features, CPUID level 0x80000007 (ebx) */ + { "overflow_recov", NC_("x86-flag", /*/flag:overflow_recov*/ "MCA overflow recovery support") }, + { "succor", NC_("x86-flag", /*/flag:succor*/ "uncorrectable error containment and recovery") }, + { "smca", NC_("x86-flag", /*/flag:smca*/ "Scalable MCA") }, + +/* bug workarounds */ + { "bug:f00f", NC_("x86-flag", /*/bug:f00f*/ "Intel F00F bug") }, + { "bug:fdiv", NC_("x86-flag", /*/bug:fdiv*/ "FPU FDIV") }, + { "bug:coma", NC_("x86-flag", /*/bug:coma*/ "Cyrix 6x86 coma") }, + { "bug:tlb_mmatch", NC_("x86-flag", /*/bug:tlb_mmatch*/ "AMD Erratum 383") }, + { "bug:apic_c1e", NC_("x86-flag", /*/bug:apic_c1e*/ "AMD Erratum 400") }, + { "bug:11ap", NC_("x86-flag", /*/bug:11ap*/ "Bad local APIC aka 11AP") }, + { "bug:fxsave_leak", NC_("x86-flag", /*/bug:fxsave_leak*/ "FXSAVE leaks FOP/FIP/FOP") }, + { "bug:clflush_monitor", NC_("x86-flag", /*/bug:clflush_monitor*/ "AAI65, CLFLUSH required before MONITOR") }, + { "bug:sysret_ss_attrs", NC_("x86-flag", /*/bug:sysret_ss_attrs*/ "SYSRET doesn't fix up SS attrs") }, + { "bug:espfix", NC_("x86-flag", /*/bug:espfix*/ "IRET to 16-bit SS corrupts ESP/RSP high bits") }, + { "bug:null_seg", NC_("x86-flag", /*/bug:null_seg*/ "Nulling a selector preserves the base") }, /* see: detect_null_seg_behavior() */ + { "bug:swapgs_fence", NC_("x86-flag", /*/bug:swapgs_fence*/ "SWAPGS without input dep on GS") }, + { "bug:monitor", NC_("x86-flag", /*/bug:monitor*/ "IPI required to wake up remote CPU") }, + { "bug:amd_e400", NC_("x86-flag", /*/bug:amd_e400*/ "AMD Erratum 400") }, +/* power management + * ... from arch/x86/kernel/cpu/powerflags.h */ + { "pm:ts", NC_("x86-flag", /*/flag:pm:ts*/ "temperature sensor") }, + { "pm:fid", NC_("x86-flag", /*/flag:pm:fid*/ "frequency id control") }, + { "pm:vid", NC_("x86-flag", /*/flag:pm:vid*/ "voltage id control") }, + { "pm:ttp", NC_("x86-flag", /*/flag:pm:ttp*/ "thermal trip") }, + { "pm:tm", NC_("x86-flag", /*/flag:pm:tm*/ "hardware thermal control") }, + { "pm:stc", NC_("x86-flag", /*/flag:pm:stc*/ "software thermal control") }, + { "pm:100mhzsteps", NC_("x86-flag", /*/flag:pm:100mhzsteps*/ "100 MHz multiplier control") }, + { "pm:hwpstate", NC_("x86-flag", /*/flag:pm:hwpstate*/ "hardware P-state control") }, + { "pm:cpb", NC_("x86-flag", /*/flag:pm:cpb*/ "core performance boost") }, + { "pm:eff_freq_ro", NC_("x86-flag", /*/flag:pm:eff_freq_ro*/ "Readonly aperf/mperf") }, + { "pm:proc_feedback", NC_("x86-flag", /*/flag:pm:proc_feedback*/ "processor feedback interface") }, + { "pm:acc_power", NC_("x86-flag", /*/flag:pm:acc_power*/ "accumulated power mechanism") }, + { NULL, NULL}, +}; + +static char all_flags[4096] = ""; + +#define APPEND_FLAG(f) strcat(all_flags, f); strcat(all_flags, " "); +const char *x86_flag_list() { + int i = 0, built = 0; + built = strlen(all_flags); + if (!built) { + while(tab_flag_meaning[i].name != NULL) { + APPEND_FLAG(tab_flag_meaning[i].name); + i++; + } + } + return all_flags; +} + +const char *x86_flag_meaning(const char *flag) { + int i = 0; + if (flag) + while(tab_flag_meaning[i].name != NULL) { + if (strcmp(tab_flag_meaning[i].name, flag) == 0) { + if (tab_flag_meaning[i].meaning != NULL) + return C_("x86-flag", tab_flag_meaning[i].meaning); + else return NULL; + } + i++; + } + return NULL; +} + +static void x86_flag_find_dups(void) { + int t, i; + + t = 0; + while(tab_flag_meaning[t].name != NULL) { + i = t+1; + while(tab_flag_meaning[i].name != NULL) { + if (strcmp(tab_flag_meaning[t].name, tab_flag_meaning[i].name) == 0) { + printf("x86-flag duplicate definition: %s\n ... %d: %s\n ... %d: %s\n", + tab_flag_meaning[i].name, + t, tab_flag_meaning[t].meaning, + i, tab_flag_meaning[i].meaning); + } + i++; + } + t++; + } +} diff --git a/modules/devices/x86/x86_data.h b/modules/devices/x86/x86_data.h new file mode 100644 index 00000000..66a4c80f --- /dev/null +++ b/modules/devices/x86/x86_data.h @@ -0,0 +1,28 @@ +/* + * rpiz - https://github.com/bp0/rpiz + * Copyright (C) 2017 Burt P. <pburt0@gmail.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef _X86DATA_H_ +#define _X86DATA_H_ + +/* cpu flags from /proc/cpuinfo */ +const char *x86_flag_list(void); /* list of all known flags */ +const char *x86_flag_meaning(const char *flag); /* lookup flag meaning */ + +#endif diff --git a/modules/devices/x86_64 b/modules/devices/x86_64 deleted file mode 120000 index de1ff735..00000000 --- a/modules/devices/x86_64 +++ /dev/null @@ -1 +0,0 @@ -./x86
\ No newline at end of file diff --git a/modules/network.c b/modules/network.c index 18f8ba65..f27a159a 100644 --- a/modules/network.c +++ b/modules/network.c @@ -80,51 +80,46 @@ void scan_statistics(gboolean reload) FILE *netstat; gchar buffer[256]; gchar *netstat_path; - + int line = 0; + SCAN_START(); - + g_free(__statistics); __statistics = g_strdup(""); - + if ((netstat_path = find_program("netstat"))) { gchar *command_line = g_strdup_printf("%s -s", netstat_path); - + if ((netstat = popen(command_line, "r"))) { while (fgets(buffer, 256, netstat)) { if (!isspace(buffer[0]) && strchr(buffer, ':')) { gchar *tmp; - + tmp = g_ascii_strup(strend(buffer, ':'), -1); - + __statistics = h_strdup_cprintf("[%s]\n", __statistics, tmp); - g_free(tmp); - } else if (isdigit(buffer[4])) { - gchar *tmp1 = buffer + 4, - *tmp2 = tmp1; - - while (*tmp2 && !isspace(*tmp2)) tmp2++; - *tmp2 = 0; - tmp2++; - - *tmp2 = toupper(*tmp2); - - __statistics = h_strdup_cprintf("%s=%s\n", + + } else { + gchar *tmp = buffer; + + while (*tmp && isspace(*tmp)) tmp++; + + __statistics = h_strdup_cprintf("<b> </b>#%d=%s\n", __statistics, - g_strstrip(tmp1), - g_strstrip(tmp2)); + line++, tmp); } } pclose(netstat); } - + g_free(command_line); g_free(netstat_path); } - + SCAN_END(); } @@ -133,24 +128,24 @@ void scan_dns(gboolean reload) { FILE *resolv; gchar buffer[256]; - + SCAN_START(); - + g_free(__nameservers); __nameservers = g_strdup(""); - + if ((resolv = fopen("/etc/resolv.conf", "r"))) { while (fgets(buffer, 256, resolv)) { if (g_str_has_prefix(buffer, "nameserver")) { gchar *ip; struct sockaddr_in sa; char hbuf[NI_MAXHOST]; - + ip = g_strstrip(buffer + sizeof("nameserver")); - + sa.sin_family = AF_INET; sa.sin_addr.s_addr = inet_addr(ip); - + if (getnameinfo((struct sockaddr *)&sa, sizeof(sa), hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD)) { __nameservers = h_strdup_cprintf("%s=\n", __nameservers, @@ -159,15 +154,15 @@ void scan_dns(gboolean reload) __nameservers = h_strdup_cprintf("%s=%s\n", __nameservers, ip, hbuf); - - } - + + } + shell_status_pulse(); - } + } } fclose(resolv); } - + SCAN_END(); } @@ -184,15 +179,15 @@ void scan_route(gboolean reload) FILE *route; gchar buffer[256]; gchar *route_path; - + SCAN_START(); g_free(__routing_table); __routing_table = g_strdup(""); - + if ((route_path = find_program("route"))) { gchar *command_line = g_strdup_printf("%s -n", route_path); - + if ((route = popen(command_line, "r"))) { /* eat first two lines */ (void)fgets(buffer, 256, route); @@ -203,7 +198,7 @@ void scan_route(gboolean reload) buffer[31] = '\0'; buffer[47] = '\0'; buffer[53] = '\0'; - + __routing_table = h_strdup_cprintf("%s / %s=%s|%s|%s\n", __routing_table, g_strstrip(buffer), g_strstrip(buffer + 16), @@ -211,14 +206,14 @@ void scan_route(gboolean reload) g_strstrip(buffer + 48), g_strstrip(buffer + 32)); } - + pclose(route); } - + g_free(command_line); g_free(route_path); } - + SCAN_END(); } @@ -227,12 +222,12 @@ void scan_arp(gboolean reload) { FILE *arp; gchar buffer[256]; - + SCAN_START(); g_free(__arp_table); __arp_table = g_strdup(""); - + if ((arp = fopen("/proc/net/arp", "r"))) { /* eat first line */ (void)fgets(buffer, 256, arp); @@ -240,17 +235,17 @@ void scan_arp(gboolean reload) while (fgets(buffer, 256, arp)) { buffer[15] = '\0'; buffer[58] = '\0'; - + __arp_table = h_strdup_cprintf("%s=%s|%s\n", __arp_table, g_strstrip(buffer), g_strstrip(buffer + 72), g_strstrip(buffer + 41)); } - + fclose(arp); } - + SCAN_END(); } @@ -260,15 +255,15 @@ void scan_connections(gboolean reload) FILE *netstat; gchar buffer[256]; gchar *netstat_path; - + SCAN_START(); g_free(__connections); __connections = g_strdup(""); - + if ((netstat_path = find_program("netstat"))) { gchar *command_line = g_strdup_printf("%s -an", netstat_path); - + if ((netstat = popen("netstat -an", "r"))) { while (fgets(buffer, 256, netstat)) { buffer[6] = '\0'; @@ -284,91 +279,99 @@ void scan_connections(gboolean reload) g_strstrip(buffer + 68)); /* state */ } } - + pclose(netstat); } - + g_free(command_line); g_free(netstat_path); } - + SCAN_END(); } gchar *callback_arp() { - return g_strdup_printf(_("[ARP Table]\n" + return g_strdup_printf("[%s]\n" "%s\n" "[$ShellParam$]\n" "ReloadInterval=3000\n" - "ColumnTitle$TextValue=IP Address\n" - "ColumnTitle$Value=Interface\n" - "ColumnTitle$Extra1=MAC Address\n" - "ShowColumnHeaders=true\n"), - __arp_table); + "ColumnTitle$TextValue=%s\n" /* IP Address */ + "ColumnTitle$Value=%s\n" /* Interface */ + "ColumnTitle$Extra1=%s\n" /* MAC Address */ + "ShowColumnHeaders=true\n", + _("ARP Table"), __arp_table, + _("IP Address"), _("Interface"), _("MAC Address") ); } gchar *callback_shares() { - return g_strdup_printf("[SAMBA]\n" - "%s\n" - "[NFS]\n" - "%s", smb_shares_list, nfs_shares_list); + return g_strdup_printf("[%s]\n" + "%s\n" + "[%s]\n" + "%s", + _("SAMBA"), smb_shares_list, + _("NFS"), nfs_shares_list); } gchar *callback_dns() { - return g_strdup_printf(_("[Name servers]\n" + return g_strdup_printf("[%s]\n" "%s\n" "[$ShellParam$]\n" - "ColumnTitle$TextValue=IP Address\n" - "ColumnTitle$Value=Name\n" - "ShowColumnHeaders=true\n"), __nameservers); + "ColumnTitle$TextValue=%s\n" /* IP Address */ + "ColumnTitle$Value=%s\n" /* Name */ + "ShowColumnHeaders=true\n", + _("Name Servers"), __nameservers, + _("IP Address"), _("Name") ); } gchar *callback_connections() { - return g_strdup_printf(_("[Connections]\n" + return g_strdup_printf("[%s]\n" "%s\n" "[$ShellParam$]\n" "ReloadInterval=3000\n" - "ColumnTitle$TextValue=Local Address\n" - "ColumnTitle$Value=Protocol\n" - "ColumnTitle$Extra1=Foreign Address\n" - "ColumnTitle$Extra2=State\n" - "ShowColumnHeaders=true\n"), - __connections); + "ColumnTitle$TextValue=%s\n" /* Local Address */ + "ColumnTitle$Value=%s\n" /* Protocol */ + "ColumnTitle$Extra1=%s\n" /* Foreign Address */ + "ColumnTitle$Extra2=%s\n" /* State */ + "ShowColumnHeaders=true\n", + _("Connections"), __connections, + _("Local Address"), _("Protocol"), _("Foreign Address"), _("State") ); } gchar *callback_network() { - return g_strdup_printf(_("%s\n" - "[$ShellParam$]\n" - "ReloadInterval=3000\n" - "ViewType=1\n" - "ColumnTitle$TextValue=Interface\n" - "ColumnTitle$Value=IP Address\n" - "ColumnTitle$Extra1=Sent\n" - "ColumnTitle$Extra2=Received\n" - "ShowColumnHeaders=true\n" - "%s"), - network_interfaces, - network_icons); + return g_strdup_printf("%s\n" + "[$ShellParam$]\n" + "ReloadInterval=3000\n" + "ViewType=1\n" + "ColumnTitle$TextValue=%s\n" /* Interface */ + "ColumnTitle$Value=%s\n" /* IP Address */ + "ColumnTitle$Extra1=%s\n" /* Sent */ + "ColumnTitle$Extra2=%s\n" /* Received */ + "ShowColumnHeaders=true\n" + "%s", + network_interfaces, + _("Interface"), _("IP Address"), _("Sent"), _("Received"), + network_icons); } gchar *callback_route() { - return g_strdup_printf(_("[IP routing table]\n" + return g_strdup_printf("[%s]\n" "%s\n" "[$ShellParam$]\n" "ViewType=0\n" "ReloadInterval=3000\n" - "ColumnTitle$TextValue=Destination / Gateway\n" - "ColumnTitle$Value=Interface\n" - "ColumnTitle$Extra1=Flags\n" - "ColumnTitle$Extra2=Mask\n" - "ShowColumnHeaders=true\n"), - __routing_table); + "ColumnTitle$TextValue=%s\n" /* Destination / Gateway */ + "ColumnTitle$Value=%s\n" /* Interface */ + "ColumnTitle$Extra1=%s\n" /* Flags */ + "ColumnTitle$Extra2=%s\n" /* Mask */ + "ShowColumnHeaders=true\n", + _("IP routing table"), __routing_table, + _("Destination/Gateway"), _("Interface"), _("Flags"), _("Mask") ); } gchar *callback_statistics() @@ -411,12 +414,12 @@ void hi_module_init(void) void hi_module_deinit(void) { moreinfo_del_with_prefix("NET"); - + g_free(smb_shares_list); g_free(nfs_shares_list); g_free(network_interfaces); g_free(network_icons); - + g_free(__statistics); g_free(__nameservers); g_free(__arp_table); diff --git a/modules/network/net.c b/modules/network/net.c index ebb0612a..99a5e616 100644 --- a/modules/network/net.c +++ b/modules/network/net.c @@ -40,7 +40,7 @@ #include <linux/wireless.h> #else #include <net/if.h> -#endif /* HAS_LINUX_WE */ +#endif /* HAS_LINUX_WE */ #include "hardinfo.h" #include "network.h" @@ -57,18 +57,26 @@ struct _NetInfo { char broadcast[16]; #ifdef HAS_LINUX_WE - char wi_essid[IW_ESSID_MAX_SIZE + 1]; + char wi_essid[IW_ESSID_MAX_SIZE + 1]; int wi_rate; int wi_mode, wi_status; gboolean wi_has_txpower; struct iw_param wi_txpower; - int wi_quality_level, wi_signal_level, wi_noise_level; + int wi_quality_level, wi_signal_level, wi_noise_level; gboolean is_wireless; #endif }; #ifdef HAS_LINUX_WE -const gchar *wi_operation_modes[] = { "Auto", "Ad-Hoc", "Managed", "Master", "Repeater", "Secondary", "Unknown" }; +const gchar *wi_operation_modes[] = { + NC_("wi-op-mode", "Auto"), + NC_("wi-op-mode", "Ad-Hoc"), + NC_("wi-op-mode", "Managed"), + NC_("wi-op-mode", "Master"), + NC_("wi-op-mode", "Repeater"), + NC_("wi-op-mode", "Secondary"), + NC_("wi-op-mode", "(Unknown)") +}; void get_wireless_info(int fd, NetInfo *netinfo) { @@ -78,16 +86,16 @@ void get_wireless_info(int fd, NetInfo *netinfo) int r, trash; netinfo->is_wireless = FALSE; - + if ((wrls = fopen("/proc/net/wireless", "r"))) { while (fgets(wbuf, 256, wrls)) { if (strchr(wbuf, ':') && strstr(wbuf, netinfo->name)) { gchar *buf1 = wbuf; - + netinfo->is_wireless = TRUE; - + buf1 = strchr(buf1, ':') + 1; - + if (strchr(buf1, '.')) { sscanf(buf1, "%d %d. %d. %d %d %d %d %d %d %d", &(netinfo->wi_status), @@ -104,7 +112,7 @@ void get_wireless_info(int fd, NetInfo *netinfo) &trash, &trash, &trash, &trash, &trash, &trash); } - + break; } } @@ -113,14 +121,14 @@ void get_wireless_info(int fd, NetInfo *netinfo) if (!netinfo->is_wireless) return; - + strncpy(wi_req.ifr_name, netinfo->name, 16); - + /* obtain essid */ wi_req.u.essid.pointer = netinfo->wi_essid; wi_req.u.essid.length = IW_ESSID_MAX_SIZE + 1; wi_req.u.essid.flags = 0; - + if (ioctl(fd, SIOCGIWESSID, &wi_req) < 0) { strcpy(netinfo->wi_essid, ""); } else { @@ -133,7 +141,7 @@ void get_wireless_info(int fd, NetInfo *netinfo) } else { netinfo->wi_rate = wi_req.u.bitrate.value; } - + /* obtain operation mode */ if (ioctl(fd, SIOCGIWMODE, &wi_req) < 0) { netinfo->wi_mode = 0; @@ -144,19 +152,19 @@ void get_wireless_info(int fd, NetInfo *netinfo) netinfo->wi_mode = 6; } } - + #if WIRELESS_EXT >= 10 /* obtain txpower */ if (ioctl(fd, SIOCGIWTXPOW, &wi_req) < 0) { netinfo->wi_has_txpower = FALSE; } else { netinfo->wi_has_txpower = TRUE; - + memcpy(&netinfo->wi_txpower, &wi_req.u.txpower, sizeof(struct iw_param)); } #else netinfo->wi_has_txpower = FALSE; -#endif /* WIRELESS_EXT >= 10 */ +#endif /* WIRELESS_EXT >= 10 */ } #endif /* HAS_LINUX_WE */ @@ -174,47 +182,47 @@ void get_net_info(char *if_name, NetInfo * netinfo) /* MTU */ strcpy(ifr.ifr_name, if_name); if (ioctl(fd, SIOCGIFMTU, &ifr) < 0) { - netinfo->mtu = 0; + netinfo->mtu = 0; } else { - netinfo->mtu = ifr.ifr_mtu; + netinfo->mtu = ifr.ifr_mtu; } /* HW Address */ strcpy(ifr.ifr_name, if_name); if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) { - memset(netinfo->mac, 0, 8); + memset(netinfo->mac, 0, 8); } else { - memcpy(netinfo->mac, ifr.ifr_ifru.ifru_hwaddr.sa_data, 8); + memcpy(netinfo->mac, ifr.ifr_ifru.ifru_hwaddr.sa_data, 8); } /* IP Address */ strcpy(ifr.ifr_name, if_name); if (ioctl(fd, SIOCGIFADDR, &ifr) < 0) { - netinfo->ip[0] = 0; + netinfo->ip[0] = 0; } else { - snprintf(netinfo->ip, sizeof(netinfo->ip), "%s", - inet_ntoa(((struct sockaddr_in *) &ifr.ifr_addr)-> - sin_addr)); + snprintf(netinfo->ip, sizeof(netinfo->ip), "%s", + inet_ntoa(((struct sockaddr_in *) &ifr.ifr_addr)-> + sin_addr)); } /* Mask Address */ strcpy(ifr.ifr_name, if_name); if (ioctl(fd, SIOCGIFNETMASK, &ifr) < 0) { - netinfo->mask[0] = 0; + netinfo->mask[0] = 0; } else { - snprintf(netinfo->mask, sizeof(netinfo->mask), "%s", - inet_ntoa(((struct sockaddr_in *) &ifr.ifr_addr)-> - sin_addr)); + snprintf(netinfo->mask, sizeof(netinfo->mask), "%s", + inet_ntoa(((struct sockaddr_in *) &ifr.ifr_addr)-> + sin_addr)); } /* Broadcast Address */ strcpy(ifr.ifr_name, if_name); if (ioctl(fd, SIOCGIFBRDADDR, &ifr) < 0) { - netinfo->broadcast[0] = 0; + netinfo->broadcast[0] = 0; } else { - snprintf(netinfo->broadcast, sizeof(netinfo->broadcast), "%s", - inet_ntoa(((struct sockaddr_in *) &ifr.ifr_addr)-> - sin_addr)); + snprintf(netinfo->broadcast, sizeof(netinfo->broadcast), "%s", + inet_ntoa(((struct sockaddr_in *) &ifr.ifr_addr)-> + sin_addr)); } #ifdef HAS_LINUX_WE @@ -230,34 +238,41 @@ static struct { char *label; char *icon; } netdev2type[] = { - { "eth", "Ethernet", "network-interface" }, - { "lo", "Loopback", "network" }, - { "ppp", "Point-to-Point", "modem" }, - { "ath", "Wireless", "wireless" }, - { "wlan", "Wireless", "wireless" }, - { "ra", "Wireless", "wireless" }, - { "wl", "Wireless", "wireless" }, - { "wmaster", "Wireless", "wireless" }, - { "tun", "Virtual Point-to-Point (TUN)", "network" }, - { "tap", "Ethernet (TAP)", "network" }, - { "plip", "Parallel Line Internet Protocol", "network" }, - { "irlan", "Infrared", "network" }, - { "slip", "Serial Line Internet Protocol", "network" }, - { "isdn", "Integrated Services Digital Network", "modem" }, - { "sit", "IPv6-over-IPv4 Tunnel", "network" }, - { "vmnet8", "VMWare Virtual Network Interface (NAT)", "computer" }, - { "vmnet", "VMWare Virtual Network Interface", "computer" }, - { "pan", "Personal Area Network (PAN)", "bluetooth" }, - { "bnep", "Bluetooth", "bluetooth" }, - { "br", "Bridge Interface", "network" }, - { "ham", "Hamachi Virtual Personal Network", "network"}, - { "net", "Ethernet", "network-interface" }, - { "ifb", "Intermediate Functional Block", "network" }, - { "gre", "GRE Network Tunnel", "network" }, - { "msh", "Mesh Network", "wireless" }, - { "wmaster", "Wireless Master Interface", "wireless" }, - { "vboxnet", "VirtualBox Virtual Network Interface", "network" }, - { NULL, "Unknown", "network" }, + /* Classic */ + { "eth", NC_("net-if-type", "Ethernet"), "network-interface" }, + { "lo", NC_("net-if-type", "Loopback"), "network" }, + { "ppp", NC_("net-if-type", "Point-to-Point"), "modem" }, + { "ath", NC_("net-if-type", "Wireless"), "wireless" }, + { "wlan", NC_("net-if-type", "Wireless"), "wireless" }, + { "ra", NC_("net-if-type", "Wireless"), "wireless" }, + { "wmaster", NC_("net-if-type", "Wireless"), "wireless" }, + { "tun", NC_("net-if-type", "Virtual Point-to-Point (TUN)"), "network" }, + { "tap", NC_("net-if-type", "Ethernet (TAP)"), "network" }, + { "plip", NC_("net-if-type", "Parallel Line Internet Protocol"), "network" }, + { "irlan", NC_("net-if-type", "Infrared"), "network" }, + { "slip", NC_("net-if-type", "Serial Line Internet Protocol"), "network" }, + { "isdn", NC_("net-if-type", "Integrated Services Digital Network"), "modem" }, + { "sit", NC_("net-if-type", "IPv6-over-IPv4 Tunnel"), "network" }, + { "vmnet8", NC_("net-if-type", "VMWare Virtual Network Interface (NAT)"), "computer" }, + { "vmnet", NC_("net-if-type", "VMWare Virtual Network Interface"), "computer" }, + { "pan", NC_("net-if-type", "Personal Area Network (PAN)"), "bluetooth" }, + { "bnep", NC_("net-if-type", "Bluetooth"), "bluetooth" }, + { "br", NC_("net-if-type", "Bridge Interface"), "network" }, + { "ham", NC_("net-if-type", "Hamachi Virtual Personal Network"), "network"}, + { "net", NC_("net-if-type", "Ethernet"), "network-interface" }, + { "ifb", NC_("net-if-type", "Intermediate Functional Block"), "network" }, + { "gre", NC_("net-if-type", "GRE Network Tunnel"), "network" }, + { "msh", NC_("net-if-type", "Mesh Network"), "wireless" }, + { "wmaster", NC_("net-if-type", "Wireless Master Interface"), "wireless" }, + { "vboxnet", NC_("net-if-type", "VirtualBox Virtual Network Interface"), "network" }, + + /* Predictable network interface device names (systemd) */ + { "en", NC_("net-if-type", "Ethernet"), "network-interface" }, + { "sl", NC_("net-if-type", "Serial Line Internet Protocol"), "network" }, + { "wl", NC_("net-if-type", "Wireless"), "wireless" }, + { "ww", NC_("net-if-type", "Wireless (WAN)"), "wireless" }, + + { NULL, NC_("net-if-type", "(Unknown)"), "network" }, }; static void net_get_iface_type(gchar * name, gchar ** type, gchar ** icon, NetInfo *ni) @@ -266,19 +281,19 @@ static void net_get_iface_type(gchar * name, gchar ** type, gchar ** icon, NetIn #ifdef HAS_LINUX_WE if (ni->is_wireless) { - *type = "Wireless"; + *type = "Wireless"; /* translated when used */ *icon = "wireless"; - + return; } #endif for (i = 0; netdev2type[i].type; i++) { - if (g_str_has_prefix(name, netdev2type[i].type)) - break; + if (g_str_has_prefix(name, netdev2type[i].type)) + break; } - *type = netdev2type[i].label; + *type = netdev2type[i].label; /* translated when used */ *icon = netdev2type[i].icon; } @@ -288,6 +303,30 @@ remove_net_devices(gpointer key, gpointer value, gpointer data) return g_str_has_prefix(key, "NET"); } +#ifdef HAS_LINUX_WE +const char *wifi_bars(int signal, int noise) +{ + float quality; + + if (signal <= -100) + quality = 0.0; + else if (signal >= -50) + quality = 1.0; + else + quality = (2.0 * (signal + 100.0)) / 100.0; + + if (quality < 0.20) + return "▰▱▱▱▱"; + if (quality < 0.40) + return "▰▰▱▱▱"; + if (quality < 0.60) + return "▰▰▰▱▱"; + if (quality < 0.80) + return "▰▰▰▰▱"; + return "▰▰▰▰▰"; +} +#endif + static void scan_net_interfaces_24(void) { FILE *proc_net; @@ -303,20 +342,20 @@ static void scan_net_interfaces_24(void) gdouble trans_packets; if (!g_file_test("/proc/net/dev", G_FILE_TEST_EXISTS)) { - if (network_interfaces) { - g_free(network_interfaces); - network_interfaces = g_strdup("[Network Interfaces]\n" - "None found=\n"); - } + if (network_interfaces) { + g_free(network_interfaces); + network_interfaces = g_strdup_printf("[%s]]\n%s=\n", + _("Network Interfaces"), _("None Found") ); + } - return; + return; } g_free(network_interfaces); g_free(network_icons); - network_interfaces = g_strdup("[Network Interfaces]\n"); + network_interfaces = g_strdup_printf("[%s]\n", _("Network Interfaces")); network_icons = g_strdup(""); proc_net = fopen("/proc/net/dev", "r"); @@ -324,118 +363,126 @@ static void scan_net_interfaces_24(void) return; while (fgets(buffer, 256, proc_net)) { - if (strchr(buffer, ':')) { - gint trash; - gchar ifacename[16]; - gchar *buf = buffer; - gchar *iface_type, *iface_icon; - gint i; - - buf = g_strstrip(buf); - - memset(ifacename, 0, 16); - - for (i = 0; buffer[i] != ':' && i < 16; i++) { - ifacename[i] = buffer[i]; - } - - buf = strchr(buf, ':') + 1; - - /* iface: bytes packets errs drop fifo frame compressed multicast */ - sscanf(buf, "%lf %lf %lf %d %d %d %d %d %lf %lf %lf", - &recv_bytes, &recv_packets, - &recv_errors, &trash, &trash, &trash, &trash, - &trash, &trans_bytes, &trans_packets, &trans_errors); - - gdouble recv_mb = recv_bytes / 1048576.0; - gdouble trans_mb = trans_bytes / 1048576.0; - - get_net_info(ifacename, &ni); - - devid = g_strdup_printf("NET%s", ifacename); - - network_interfaces = - h_strdup_cprintf - ("$%s$%s=%s|%.2lfMiB|%.2lfMiB\n", - network_interfaces, devid, ifacename, ni.ip[0] ? ni.ip : "", - trans_mb, recv_mb); - net_get_iface_type(ifacename, &iface_type, &iface_icon, &ni); - - network_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", - network_icons, devid, - ifacename, iface_icon); - - detailed = g_strdup_printf("[Network Adapter Properties]\n" - "Interface Type=%s\n" - "Hardware Address (MAC)=%02x:%02x:%02x:%02x:%02x:%02x\n" - "MTU=%d\n" - "[Transfer Details]\n" - "Bytes Received=%.0lf (%.2fMiB)\n" - "Bytes Sent=%.0lf (%.2fMiB)\n", - iface_type, - ni.mac[0], ni.mac[1], - ni.mac[2], ni.mac[3], - ni.mac[4], ni.mac[5], - ni.mtu, - recv_bytes, recv_mb, - trans_bytes, trans_mb); - + if (strchr(buffer, ':')) { + gint trash; + gchar ifacename[16]; + gchar *buf = buffer; + gchar *iface_type, *iface_icon; + gint i; + + buf = g_strstrip(buf); + + memset(ifacename, 0, 16); + + for (i = 0; buffer[i] != ':' && i < 16; i++) { + ifacename[i] = buffer[i]; + } + + buf = strchr(buf, ':') + 1; + + /* iface: bytes packets errs drop fifo frame compressed multicast */ + sscanf(buf, "%lf %lf %lf %d %d %d %d %d %lf %lf %lf", + &recv_bytes, &recv_packets, + &recv_errors, &trash, &trash, &trash, &trash, + &trash, &trans_bytes, &trans_packets, &trans_errors); + + gdouble recv_mb = recv_bytes / 1048576.0; + gdouble trans_mb = trans_bytes / 1048576.0; + + get_net_info(ifacename, &ni); + + devid = g_strdup_printf("NET%s", ifacename); + + network_interfaces = + h_strdup_cprintf + ("$%s$%s=%s|%.2lf%s|%.2lf%s\n", + network_interfaces, devid, ifacename, ni.ip[0] ? ni.ip : "", + trans_mb, _("MiB"), recv_mb, _("MiB")); + net_get_iface_type(ifacename, &iface_type, &iface_icon, &ni); + + network_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", + network_icons, devid, + ifacename, iface_icon); + + detailed = g_strdup_printf("[%s]\n" + "%s=%s\n" /* Interface Type */ + "%s=%02x:%02x:%02x:%02x:%02x:%02x\n" /* MAC */ + "%s=%d\n" /* MTU */ + "[%s]\n" /*Transfer Details*/ + "%s=%.0lf (%.2f%s)\n" /* Bytes Received */ + "%s=%.0lf (%.2f%s)\n" /* Bytes Sent */, + _("Network Adapter Properties"), + _("Interface Type"), C_("net-if-type", iface_type), + _("Hardware Address (MAC)"), + ni.mac[0], ni.mac[1], + ni.mac[2], ni.mac[3], + ni.mac[4], ni.mac[5], + _("MTU"), ni.mtu, + _("Transfer Details"), + _("Bytes Received"), recv_bytes, recv_mb, _("MiB"), + _("Bytes Sent"), trans_bytes, trans_mb, _("MiB")); + #ifdef HAS_LINUX_WE - if (ni.is_wireless) { - gchar *txpower; - - if (ni.wi_has_txpower) { + if (ni.is_wireless) { + gchar *txpower; + + if (ni.wi_has_txpower) { gint mw, dbm; - + if (ni.wi_txpower.flags & IW_TXPOW_MWATT) { - mw = ni.wi_txpower.value; - dbm = (int) ceil(10.0 * log10((double) ni.wi_txpower.value)); + mw = ni.wi_txpower.value; + dbm = (int) ceil(10.0 * log10((double) ni.wi_txpower.value)); } else { - dbm = ni.wi_txpower.value; - mw = (int) floor(pow(10.0, ((double) dbm / 10.0))); + dbm = ni.wi_txpower.value; + mw = (int) floor(pow(10.0, ((double) dbm / 10.0))); } - - txpower = g_strdup_printf("%ddBm (%dmW)", dbm, mw); - } else { - txpower = g_strdup("Unknown"); - } - - detailed = h_strdup_cprintf("\n[Wireless Properties]\n" - "Network Name (SSID)=%s\n" - "Bit Rate=%dMb/s\n" - "Transmission Power=%s\n" - "Mode=%s\n" - "Status=%d\n" - "Link Quality=%d\n" - "Signal / Noise=%d dBm / %d dBm\n", - detailed, - ni.wi_essid, - ni.wi_rate / 1000000, - txpower, - wi_operation_modes[ni.wi_mode], - ni.wi_status, - ni.wi_quality_level, - ni.wi_signal_level, - ni.wi_noise_level); - - g_free(txpower); + + txpower = g_strdup_printf("%d%s (%d%s)", dbm, _("dBm"), mw, _("mW")); + } else { + txpower = g_strdup(_("(Unknown)")); } + + detailed = h_strdup_cprintf("\n[%s]\n" + "%s=%s\n" /* Network Name (SSID) */ + "%s=%d%s\n" /* Bit Rate */ + "%s=%s\n" /* Transmission Power */ + "%s=%s\n" /* Mode */ + "%s=%d\n" /* Status */ + "%s=%d\n" /* Link Quality */ + "%s=%d %s / %d %s (%s)\n", + detailed, + _("Wireless Properties"), + _("Network Name (SSID)"), ni.wi_essid, + _("Bit Rate"), ni.wi_rate / 1000000, _("Mb/s"), + _("Transmission Power"), txpower, + _("Mode"), C_("wi-op-mode", wi_operation_modes[ni.wi_mode]), + _("Status"), ni.wi_status, + _("Link Quality"), ni.wi_quality_level, + _("Signal / Noise"), + ni.wi_signal_level, _("dBm"), + ni.wi_noise_level, _("dBm"), + wifi_bars(ni.wi_signal_level, ni.wi_noise_level)); + + g_free(txpower); + } #endif - if (ni.ip[0] || ni.mask[0] || ni.broadcast[0]) { - detailed = - h_strdup_cprintf("\n[Internet Protocol (IPv4)]\n" - "IP Address=%s\n" "Mask=%s\n" - "Broadcast Address=%s\n", detailed, - ni.ip[0] ? ni.ip : "Not set", - ni.mask[0] ? ni.mask : "Not set", - ni.broadcast[0] ? ni. - broadcast : "Not set"); - } - - moreinfo_add_with_prefix("NET", devid, detailed); - g_free(devid); - } + if (ni.ip[0] || ni.mask[0] || ni.broadcast[0]) { + detailed = + h_strdup_cprintf("\n[%s]\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n", detailed, + _("Internet Protocol (IPv4)"), + _("IP Address"), ni.ip[0] ? ni.ip : _("(Not set)"), + _("Mask"), ni.mask[0] ? ni.mask : _("(Not set)"), + _("Broadcast Address"), + ni.broadcast[0] ? ni.broadcast : _("(Not set)") ); + } + + moreinfo_add_with_prefix("NET", devid, detailed); + g_free(devid); + } } fclose(proc_net); } diff --git a/pixmaps/file-roller.png b/pixmaps/file-roller.png Binary files differnew file mode 100644 index 00000000..5c17e91b --- /dev/null +++ b/pixmaps/file-roller.png diff --git a/po/HOWTO.txt b/po/HOWTO.txt index 6773d6ea..afe9a8c2 100644 --- a/po/HOWTO.txt +++ b/po/HOWTO.txt @@ -1,2 +1,9 @@ -update .pot : make pot in build/ -update .po files after .pot update : ? +Translators +=========== + +IF POSSIBLE, run `bash updatepo.sh` in the po/ directory before begining. +This will regenerate hardinfo.pot and update all the .po files. +NOTHING IS LOST if this isn't done, but it prevents wasting time translating +strings that have changed, or are no longer used. + +DO NOT use `make pot`! @@ -8,58 +8,247 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-10 10:11+0200\n" +"POT-Creation-Date: 2017-08-14 22:23-0500\n" "PO-Revision-Date: 2016-06-10 12:11+0200\n" "Last-Translator: Alexander Münch <git@thehacker.biz>\n" "Language-Team: German\n" "Language: de\n" +"X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.7.1\n" -#: shell//callbacks.c:71 +#. / %d will be latest year of copyright +#: hardinfo/hardinfo.c:49 #, c-format -msgid "Remote: <b>%s</b>" +msgid "" +"Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n" +"\n" msgstr "" -#: shell//callbacks.c:117 -msgid "Disconnecting..." +#: hardinfo/hardinfo.c:51 +#, c-format +msgid "" +"Compile-time options:\n" +" Release version: %s (%s)\n" +" BinReloc enabled: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compiled for: %s\n" msgstr "" -#: shell//callbacks.c:120 -msgid "Unloading modules..." +#: hardinfo/hardinfo.c:57 hardinfo/hardinfo.c:58 modules/computer.c:605 +#: modules/devices/inputdevices.c:128 modules/devices/pci.c:112 +#: modules/devices/printers.c:138 +msgid "Yes" +msgstr "Ja" + +#: hardinfo/hardinfo.c:58 modules/computer.c:605 modules/devices/pci.c:112 +#: modules/devices/printers.c:138 +msgid "No" +msgstr "Nein" + +#: hardinfo/hardinfo.c:69 +#, c-format +msgid "" +"Failed to find runtime data.\n" +"\n" +"• Is HardInfo correctly installed?\n" +"• See if %s and %s exists and you have read permission." msgstr "" -#: shell//callbacks.c:123 -msgid "Loading local modules..." +#: hardinfo/hardinfo.c:76 +#, c-format +msgid "" +"Modules:\n" +"%-20s %-15s %-12s\n" msgstr "" -#: shell//callbacks.c:130 shell//callbacks.c:162 shell//shell.c:314 -#: shell//shell.c:816 shell//shell.c:1800 modules//benchmark.c:431 -#: modules//benchmark.c:439 hardinfo//util.c:1112 -msgid "Done." -msgstr "Fertig." +#: hardinfo/hardinfo.c:77 +msgid "File Name" +msgstr "" + +#: hardinfo/hardinfo.c:77 modules/computer.c:534 modules/computer.c:562 +#: modules/computer.c:630 modules/computer/languages.c:104 +#: modules/computer/modules.c:146 modules/devices/arm/processor.c:336 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:116 +#: modules/devices/pci.c:215 modules/devices/sh/processor.c:84 +#: modules/devices/x86/processor.c:455 modules/network.c:326 +msgid "Name" +msgstr "Name" + +#: hardinfo/hardinfo.c:77 modules/computer.c:296 modules/computer.c:505 +#: modules/computer.c:507 modules/computer.c:595 modules/computer.c:603 +#: modules/devices/inputdevices.c:121 +msgid "Version" +msgstr "" + +#: hardinfo/hardinfo.c:124 +#, c-format +msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" +msgstr "" + +#: hardinfo/hardinfo.c:152 +msgid "Don't know what to do. Exiting." +msgstr "" + +#: hardinfo/util.c:104 modules/computer/uptime.c:53 +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d Tag" +msgstr[1] "%d Tage" + +#: hardinfo/util.c:105 modules/computer/uptime.c:54 +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d Stunde" +msgstr[1] "%d Stunden" + +#: hardinfo/util.c:106 modules/computer/uptime.c:55 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d Minute" +msgstr[1] "%d Minuten" + +#: hardinfo/util.c:107 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "%d Sekunde" +msgstr[1] "%d Sekunden" + +#: hardinfo/util.c:128 +#, c-format +msgid "%.1f B" +msgstr "%.1f Byte(s)" + +#: hardinfo/util.c:130 +#, c-format +msgid "%.1f KiB" +msgstr "%.1f KiB" + +#: hardinfo/util.c:132 +#, c-format +msgid "%.1f MiB" +msgstr "%.1f MiB" + +#: hardinfo/util.c:134 +#, c-format +msgid "%.1f GiB" +msgstr "%.1f GiB" + +#: hardinfo/util.c:136 +#, c-format +msgid "%.1f TiB" +msgstr "%.1f TiB" + +#: hardinfo/util.c:138 +#, c-format +msgid "%.1f PiB" +msgstr "%.1f PiB" + +#: hardinfo/util.c:361 +msgid "Error" +msgstr "Fehler" + +#: hardinfo/util.c:361 hardinfo/util.c:377 +msgid "Warning" +msgstr "Warnung" + +#: hardinfo/util.c:376 +msgid "Fatal Error" +msgstr "Kritischer Fehler" + +#: hardinfo/util.c:401 +msgid "creates a report and prints to standard output" +msgstr "" + +#: hardinfo/util.c:407 +msgid "chooses a report format (text, html)" +msgstr "" + +#: hardinfo/util.c:413 +msgid "run benchmark; requires benchmark.so to be loaded" +msgstr "" + +#: hardinfo/util.c:419 +msgid "lists modules" +msgstr "" -#: shell//callbacks.c:142 -msgid "Save Image" +#: hardinfo/util.c:425 +msgid "specify module to load" msgstr "" -#: shell//callbacks.c:158 -msgid "Saving image..." +#: hardinfo/util.c:431 +msgid "automatically load module dependencies" msgstr "" -#: shell//callbacks.c:236 -msgid "No context help available." +#: hardinfo/util.c:438 +msgid "run in XML-RPC server mode" +msgstr "" + +#: hardinfo/util.c:445 +msgid "shows program version and quit" msgstr "" -#: shell//callbacks.c:318 +#: hardinfo/util.c:450 +msgid "- System Profiler and Benchmark tool" +msgstr "- System-Profiler und Benchmark-Werkzeug" + +#: hardinfo/util.c:460 +#, c-format +msgid "" +"Unrecognized arguments.\n" +"Try ``%s --help'' for more information.\n" +msgstr "" + +#: hardinfo/util.c:526 +#, c-format +msgid "Couldn't find a Web browser to open URL %s." +msgstr "Konnte keinen Web-Browser finden, um die URL %s zu öffnen." + +#: hardinfo/util.c:875 +#, c-format +msgid "Module \"%s\" depends on module \"%s\", load it?" +msgstr "" + +#: hardinfo/util.c:898 +#, c-format +msgid "Module \"%s\" depends on module \"%s\"." +msgstr "" + +#: hardinfo/util.c:943 +#, c-format +msgid "No module could be loaded. Check permissions on \"%s\" and try again." +msgstr "" + +#: hardinfo/util.c:947 +msgid "" +"No module could be loaded. Please use hardinfo -l to list all available " +"modules and try again with a valid module list." +msgstr "" + +#: hardinfo/util.c:1024 +#, c-format +msgid "Scanning: %s..." +msgstr "" + +#: hardinfo/util.c:1034 shell/shell.c:301 shell/shell.c:760 shell/shell.c:1795 +#: modules/benchmark.c:449 modules/benchmark.c:457 +msgid "Done." +msgstr "Fertig." + +#: shell/callbacks.c:117 #, c-format msgid "%s Module" msgstr "" -#: shell//callbacks.c:325 +#: shell/callbacks.c:128 #, c-format msgid "" "Written by %s\n" @@ -68,80 +257,76 @@ msgstr "" "Programmiert von %s\n" "Lizenziert unter %s" -#: shell//callbacks.c:339 +#: shell/callbacks.c:142 #, c-format msgid "No about information is associated with the %s module." msgstr "" -#: shell//callbacks.c:353 +#: shell/callbacks.c:158 msgid "Author:" msgstr "" -#: shell//callbacks.c:356 +#: shell/callbacks.c:161 msgid "Contributors:" msgstr "Mitwirkende:" -#: shell//callbacks.c:360 +#: shell/callbacks.c:166 msgid "Based on work by:" msgstr "" -#: shell//callbacks.c:361 +#: shell/callbacks.c:167 msgid "MD5 implementation by Colin Plumb (see md5.c for details)" msgstr "" -#: shell//callbacks.c:362 +#: shell/callbacks.c:168 msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" msgstr "" -#: shell//callbacks.c:363 +#: shell/callbacks.c:169 msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" msgstr "" -#: shell//callbacks.c:364 +#: shell/callbacks.c:170 msgid "Raytracing benchmark by John Walker (see fbench.c for details)" msgstr "" -#: shell//callbacks.c:365 +#: shell/callbacks.c:171 msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" msgstr "" -#: shell//callbacks.c:366 +#: shell/callbacks.c:172 msgid "Some code partly based on x86cpucaps by Osamu Kayasono" msgstr "" -#: shell//callbacks.c:367 +#: shell/callbacks.c:173 msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" msgstr "" -#: shell//callbacks.c:368 +#: shell/callbacks.c:174 msgid "DMI support based on code by Stewart Adam" msgstr "" -#: shell//callbacks.c:369 +#: shell/callbacks.c:175 msgid "SCSI support based on code by Pascal F. Martin" msgstr "" -#: shell//callbacks.c:373 -msgid "Jakub Szypulka" -msgstr "Jakub Szypulka" - -#: shell//callbacks.c:374 +#: shell/callbacks.c:180 msgid "Tango Project" msgstr "" -#: shell//callbacks.c:375 +#: shell/callbacks.c:181 msgid "The GNOME Project" msgstr "" -#: shell//callbacks.c:376 +#: shell/callbacks.c:182 msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" msgstr "" -#: shell//callbacks.c:387 +#: shell/callbacks.c:200 msgid "System information and benchmark tool" msgstr "System-Informationen und Benchmark-Werkzeug" -#: shell//callbacks.c:392 +#: shell/callbacks.c:205 msgid "" "HardInfo is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " @@ -157,143 +342,115 @@ msgid "" "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" -#: shell//menu.c:35 +#: shell/callbacks.c:220 +msgid "translator-credits" +msgstr "" + +#: shell/menu.c:35 msgid "_Information" msgstr "_Informationen" -#: shell//menu.c:36 +#: shell/menu.c:36 msgid "_Remote" msgstr "" -#: shell//menu.c:37 +#: shell/menu.c:37 msgid "_View" msgstr "_Ansicht" -#: shell//menu.c:38 +#: shell/menu.c:38 msgid "_Help" msgstr "_Hilfe" -#: shell//menu.c:39 +#: shell/menu.c:39 msgid "About _Modules" msgstr "Über _Module" -#: shell//menu.c:43 +#: shell/menu.c:43 msgid "Generate _Report" msgstr "_Bericht generieren" -#: shell//menu.c:48 +#: shell/menu.c:48 msgid "_Network Updater..." msgstr "_Netzwerk-Updater…" -#: shell//menu.c:53 +#: shell/menu.c:53 msgid "_Open..." msgstr "" -#: shell//menu.c:58 -msgid "_Connect to..." -msgstr "" - -#: shell//menu.c:63 -msgid "_Manage hosts..." -msgstr "" - -#: shell//menu.c:68 -msgid "_Local computer" -msgstr "" - -#: shell//menu.c:73 +#: shell/menu.c:58 msgid "_Copy to Clipboard" msgstr "In die Zwischenablage _kopieren" -#: shell//menu.c:74 +#: shell/menu.c:59 msgid "Copy to clipboard" msgstr "In die Zwischenablage kopieren" -#: shell//menu.c:78 -msgid "_Save image as..." -msgstr "" - -#: shell//menu.c:83 +#: shell/menu.c:63 msgid "_Refresh" msgstr "_Aktualisieren" -#: shell//menu.c:88 -msgid "Contents" -msgstr "Inhalt" - -#: shell//menu.c:93 shell//shell.c:1794 shell//shell.c:1811 -msgid "Context help" -msgstr "Kontexthilfe" - -#: shell//menu.c:98 +#: shell/menu.c:68 msgid "_Open HardInfo Web Site" msgstr "HardInfo-_Webseite öffnen" -#: shell//menu.c:103 +#: shell/menu.c:73 msgid "_Report bug" msgstr "Fehler _melden" -#: shell//menu.c:108 -msgid "_Donate to the project" -msgstr "_Spende zum Projekt" - -#: shell//menu.c:113 +#: shell/menu.c:78 msgid "_About HardInfo" msgstr "_Über HardInfo" -#: shell//menu.c:114 +#: shell/menu.c:79 msgid "Displays program version information" msgstr "" -#: shell//menu.c:118 +#: shell/menu.c:83 msgid "_Quit" msgstr "_Beenden" -#: shell//menu.c:125 +#: shell/menu.c:90 msgid "_Side Pane" msgstr "_Seitenleiste" -#: shell//menu.c:126 +#: shell/menu.c:91 msgid "Toggles side pane visibility" msgstr "" -#: shell//menu.c:129 +#: shell/menu.c:94 msgid "_Toolbar" msgstr "_Symbolleiste" -#: shell//menu.c:133 -msgid "_Accept connections" -msgstr "" - -#: shell//report.c:492 +#: shell/report.c:494 shell/report.c:502 msgid "Save File" msgstr "Datei speichern" -#: shell//report.c:616 +#: shell/report.c:629 msgid "Cannot create ReportContext. Programming bug?" msgstr "" -#: shell//report.c:634 +#: shell/report.c:648 msgid "Open the report with your web browser?" msgstr "Den Bericht in deinem Webbrowser öffnen?" -#: shell//report.c:662 +#: shell/report.c:682 msgid "Generating report..." msgstr "Generiere Bericht…" -#: shell//report.c:672 +#: shell/report.c:692 msgid "Report saved." msgstr "Bericht gespeichert." -#: shell//report.c:674 +#: shell/report.c:694 msgid "Error while creating the report." msgstr "Fehler beim Erzeugen des Berichts." -#: shell//report.c:776 +#: shell/report.c:796 msgid "Generate Report" msgstr "Bericht generieren" -#: shell//report.c:793 +#: shell/report.c:821 msgid "" "<big><b>Generate Report</b></big>\n" "Please choose the information that you wish to view in your report:" @@ -301,41 +458,45 @@ msgstr "" "<big><b>Bericht generieren</b></big>\n" "Bitte wähle die Informationen, die du in deinen Bereich einbeziehen möchtest:" -#: shell//report.c:853 +#: shell/report.c:893 msgid "Select _None" msgstr "_Nichts auswählen" -#: shell//report.c:860 +#: shell/report.c:904 msgid "Select _All" msgstr "_Alles auswählen" -#: shell//report.c:878 +#: shell/report.c:929 shell/syncmanager.c:748 +msgid "_Cancel" +msgstr "" + +#: shell/report.c:939 msgid "_Generate" msgstr "_Generieren" -#: shell//shell.c:407 +#: shell/shell.c:402 #, c-format msgid "%s - System Information" msgstr "%s - System-Informationen" -#: shell//shell.c:412 +#: shell/shell.c:407 msgid "System Information" msgstr "System-Informationen" -#: shell//shell.c:803 +#: shell/shell.c:747 msgid "Loading modules..." msgstr "" -#: shell//shell.c:1654 +#: shell/shell.c:1660 #, c-format msgid "<b>%s → Summary</b>" msgstr "<b>%s → Zusammenfassung</b>" -#: shell//shell.c:1762 +#: shell/shell.c:1769 msgid "Updating..." msgstr "Aktualisiere…" -#: shell//syncmanager.c:69 +#: shell/syncmanager.c:69 msgid "" "<big><b>Synchronize with Central Database</b></big>\n" "The following information may be synchronized with the HardInfo central " @@ -345,7 +506,7 @@ msgstr "" "Die folgenden Informationen können mit der zentralen HardInfo-Datenbank " "synchronisiert werden." -#: shell//syncmanager.c:72 +#: shell/syncmanager.c:72 msgid "" "<big><b>Synchronizing</b></big>\n" "This may take some time." @@ -353,46 +514,44 @@ msgstr "" "<big><b>Synchronisiere</b></big>\n" "Dies kann kurz dauern." -#: shell//syncmanager.c:132 +#: shell/syncmanager.c:132 msgid "" "HardInfo was compiled without libsoup support. (Network Updater requires it.)" msgstr "" -#: shell//syncmanager.c:161 shell//syncmanager.c:185 +#: shell/syncmanager.c:161 shell/syncmanager.c:189 #, c-format msgid "%s (error #%d)" msgstr "%s (Fehlercode #%d)" -#: shell//syncmanager.c:170 shell//syncmanager.c:194 +#: shell/syncmanager.c:170 shell/syncmanager.c:198 msgid "Could not parse XML-RPC response" msgstr "" -#: shell//syncmanager.c:267 +#: shell/syncmanager.c:280 #, c-format msgid "" "Server says it supports API version %d, but this version of HardInfo only " "supports API version %d." msgstr "" -#: shell//syncmanager.c:362 +#: shell/syncmanager.c:375 msgid "Contacting HardInfo Central Database" msgstr "Kontaktiere zentrale HardInfo-Datenbank" -#: shell//syncmanager.c:363 +#: shell/syncmanager.c:376 msgid "Cleaning up" msgstr "Aufräumen" -#: shell//syncmanager.c:480 -#, c-format -msgid "<s>%s</s> <i>(canceled)</i>" -msgstr "<s>%s</s> <i>(abgebrochen)</i>" +#: shell/syncmanager.c:493 +msgid "(canceled)" +msgstr "(abgebrochen)" -#: shell//syncmanager.c:497 -#, c-format -msgid "<b><s>%s</s></b> <i>(failed)</i>" -msgstr "<b><s>%s</s></b> <i>(gescheitert)</i>" +#: shell/syncmanager.c:510 +msgid "(failed)" +msgstr "(gescheitert)" -#: shell//syncmanager.c:509 +#: shell/syncmanager.c:521 #, c-format msgid "" "Failed while performing \"%s\". Please file a bug report if this problem " @@ -401,671 +560,1091 @@ msgid "" "Details: %s" msgstr "" -#: shell//syncmanager.c:518 +#: shell/syncmanager.c:530 #, c-format msgid "" "Failed while performing \"%s\". Please file a bug report if this problem " "persists. (Use the Help→Report bug option.)" msgstr "" -#: shell//syncmanager.c:646 +#: shell/syncmanager.c:658 msgid "Network Updater" msgstr "Netzwerk-Updater" -#: shell//syncmanager.c:727 +#: shell/syncmanager.c:757 msgid "_Synchronize" msgstr "_Synchronisieren" -#: modules//benchmark.c:50 +#: modules/benchmark.c:52 msgid "CPU Blowfish" msgstr "CPU Blowfish" -#: modules//benchmark.c:51 +#: modules/benchmark.c:53 msgid "CPU CryptoHash" msgstr "CPU Crypto-Hash" -#: modules//benchmark.c:52 +#: modules/benchmark.c:54 msgid "CPU Fibonacci" msgstr "CPU Fibonacci" -#: modules//benchmark.c:53 +#: modules/benchmark.c:55 msgid "CPU N-Queens" msgstr "CPU Damenproblem" -#: modules//benchmark.c:54 +#: modules/benchmark.c:56 +msgid "CPU Zlib" +msgstr "" + +#: modules/benchmark.c:57 msgid "FPU FFT" msgstr "FPU FFT" -#: modules//benchmark.c:55 +#: modules/benchmark.c:58 msgid "FPU Raytracing" msgstr "FPU Raytracing" -#: modules//benchmark.c:56 +#: modules/benchmark.c:60 msgid "GPU Drawing" msgstr "GPU Zeichnen" -#: modules//benchmark.c:222 -#, c-format -msgid "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"<big><b>This Machine</b></big>=%.3f|%s MHz\n" -"%s" +#: modules/benchmark.c:239 modules/benchmark.c:255 +msgid "CPU Config" msgstr "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU-Takt\n" -"ColumnTitle$Progress=Ergebnisse\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"<big><b>Diese Maschine</b></big>=%.3f|%s MHz\n" -"%s" -#: modules//benchmark.c:235 -#, c-format -msgid "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"%s" +#: modules/benchmark.c:239 modules/benchmark.c:255 +msgid "Results" +msgstr "Ergebnisse" + +#: modules/benchmark.c:239 modules/benchmark.c:255 modules/computer.c:751 +#: modules/devices/sparc/processor.c:75 +msgid "CPU" msgstr "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU-Takt\n" -"ColumnTitle$Progress=Ergebnisse\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"%s" -#: modules//benchmark.c:363 +#: modules/benchmark.c:381 #, c-format msgid "Benchmarking: <b>%s</b>." msgstr "Benchmarke: <b>%s</b>." -#: modules//benchmark.c:377 +#: modules/benchmark.c:395 msgid "Benchmarking. Please do not move your mouse or press any keys." msgstr "Benchmarke. Bitte bewege den Mauszeiger nicht und drücke keine Tasten." -#: modules//benchmark.c:381 +#: modules/benchmark.c:399 msgid "Cancel" msgstr "Abbrechen" -#: modules//benchmark.c:511 +#: modules/benchmark.c:536 msgid "Results in MiB/second. Higher is better." msgstr "Ergebnisse in MiB/Sekunde. Höhere Werte sind besser." -#: modules//benchmark.c:514 +#: modules/benchmark.c:540 msgid "Results in HIMarks. Higher is better." msgstr "Ergebnisse in HIMarks. Höhere Werte sind besser." -#: modules//benchmark.c:521 +#: modules/benchmark.c:547 msgid "Results in seconds. Lower is better." msgstr "Ergebnisse in Sekunden. Niedrigere Werte sind besser." -#: modules//benchmark.c:529 +#: modules/benchmark.c:555 msgid "Benchmarks" msgstr "Benchmarks" -#: modules//benchmark.c:547 +#: modules/benchmark.c:573 msgid "Perform tasks and compare with other systems" msgstr "Erledigt Aufgaben und vergleicht die Ergebnisse mit anderen Systemen" -#: modules//benchmark.c:634 +#: modules/benchmark.c:663 msgid "Send benchmark results" msgstr "Übermittle Benchmark-Ergebnisse" -#: modules//benchmark.c:639 +#: modules/benchmark.c:668 msgid "Receive benchmark results" msgstr "Lade Benchmark-Ergebnisse" -#: modules//computer.c:68 +#: modules/computer/alsa.c:26 modules/computer.c:489 +msgid "Audio Devices" +msgstr "Audio-Geräte" + +#: modules/computer/alsa.c:34 +msgid "Audio Adapter" +msgstr "" + +#: modules/computer/boots.c:33 modules/computer.c:73 modules/computer.c:546 +msgid "Boots" +msgstr "Systemstarts" + +#: modules/computer.c:70 msgid "Summary" msgstr "Zusammenfassung" -#: modules//computer.c:69 +#: modules/computer.c:71 modules/computer.c:476 modules/computer.c:750 msgid "Operating System" msgstr "Betriebssystem" -#: modules//computer.c:70 +#: modules/computer.c:72 msgid "Kernel Modules" msgstr "Kernel-Module" -#: modules//computer.c:71 -msgid "Boots" -msgstr "Systemstarts" - -#: modules//computer.c:72 +#: modules/computer.c:74 msgid "Languages" msgstr "Sprachen" -#: modules//computer.c:73 +#: modules/computer.c:75 msgid "Filesystems" msgstr "Dateisysteme" -#: modules//computer.c:74 +#: modules/computer.c:76 modules/computer.c:481 modules/computer.c:590 msgid "Display" msgstr "Anzeige" -#: modules//computer.c:75 +#: modules/computer.c:77 modules/computer/environment.c:32 msgid "Environment Variables" msgstr "Umgebungsvariablen" -#: modules//computer.c:77 +#: modules/computer.c:79 msgid "Development" msgstr "Entwicklung" -#: modules//computer.c:79 +#: modules/computer.c:81 modules/computer.c:617 msgid "Users" msgstr "Benutzer" -#: modules//computer.c:80 +#: modules/computer.c:82 msgid "Groups" msgstr "Gruppen" -#: modules//computer.c:104 +#: modules/computer.c:104 modules/computer.c:473 modules/devices.c:96 +#: modules/devices/pci.c:149 +msgid "Memory" +msgstr "Hauptspeicher" + +#: modules/computer.c:106 #, c-format msgid "%dMB (%dMB used)" msgstr "" -#: modules//computer.c:200 +#: modules/computer.c:108 modules/computer.c:520 +msgid "Uptime" +msgstr "" + +#: modules/computer.c:110 modules/computer.c:478 +msgid "Date/Time" +msgstr "" + +#: modules/computer.c:115 modules/computer.c:521 +msgid "Load Average" +msgstr "" + +#: modules/computer.c:117 modules/computer.c:522 +msgid "Available entropy in /dev/random" +msgstr "" + +#: modules/computer.c:203 msgid "Scripting Languages" msgstr "Script-Sprachen" -#: modules//computer.c:201 -msgid "CPython" -msgstr "CPython" +#: modules/computer.c:204 +msgid "Gambas3 (gbr3)" +msgstr "" + +#: modules/computer.c:205 +msgid "Python" +msgstr "" + +#: modules/computer.c:206 +msgid "Python2" +msgstr "" -#: modules//computer.c:202 +#: modules/computer.c:207 +msgid "Python3" +msgstr "" + +#: modules/computer.c:208 msgid "Perl" msgstr "Perl" -#: modules//computer.c:203 +#: modules/computer.c:209 +msgid "Perl6 (VM)" +msgstr "" + +#: modules/computer.c:210 +msgid "Perl6" +msgstr "" + +#: modules/computer.c:211 msgid "PHP" msgstr "PHP" -#: modules//computer.c:204 +#: modules/computer.c:212 msgid "Ruby" msgstr "Ruby" -#: modules//computer.c:205 +#: modules/computer.c:213 msgid "Bash" msgstr "Bash" -#: modules//computer.c:206 +#: modules/computer.c:214 msgid "Compilers" msgstr "Compiler" -#: modules//computer.c:207 +#: modules/computer.c:215 msgid "C (GCC)" msgstr "C (GCC)" -#: modules//computer.c:208 +#: modules/computer.c:216 msgid "C (Clang)" msgstr "C (Clang)" -#: modules//computer.c:209 +#: modules/computer.c:217 msgid "D (dmd)" msgstr "D (dmd)" -#: modules//computer.c:210 +#: modules/computer.c:218 +msgid "Gambas3 (gbc3)" +msgstr "" + +#: modules/computer.c:219 msgid "Java" msgstr "Java" -#: modules//computer.c:211 +#: modules/computer.c:220 msgid "CSharp (Mono, old)" msgstr "CSharp (Mono, old)" -#: modules//computer.c:212 +#: modules/computer.c:221 msgid "CSharp (Mono)" msgstr "CSharp (Mono)" -#: modules//computer.c:213 +#: modules/computer.c:222 msgid "Vala" msgstr "Vala" -#: modules//computer.c:214 +#: modules/computer.c:223 msgid "Haskell (GHC)" msgstr "Haskell (GHC)" -#: modules//computer.c:215 +#: modules/computer.c:224 msgid "FreePascal" msgstr "FreePascal" -#: modules//computer.c:216 +#: modules/computer.c:225 +msgid "Go" +msgstr "" + +#: modules/computer.c:226 msgid "Tools" msgstr "Werkzeug-Programme" -#: modules//computer.c:217 +#: modules/computer.c:227 msgid "make" msgstr "make" -#: modules//computer.c:218 +#: modules/computer.c:228 msgid "GDB" msgstr "GDB" -#: modules//computer.c:219 +#: modules/computer.c:229 msgid "strace" msgstr "strace" -#: modules//computer.c:220 +#: modules/computer.c:230 msgid "valgrind" msgstr "valgrind" -#: modules//computer.c:221 +#: modules/computer.c:231 msgid "QMake" msgstr "QMake" -#: modules//computer.c:264 -#, c-format -msgid "%s=Not found\n" -msgstr "%s=Nicht gefunden\n" +#: modules/computer.c:232 +msgid "CMake" +msgstr "" -#: modules//computer.c:267 +#: modules/computer.c:233 +msgid "Gambas3 IDE" +msgstr "" + +#: modules/computer.c:274 +msgid "Not found" +msgstr "Nicht gefunden" + +#: modules/computer.c:279 #, c-format msgid "Detecting version: %s" msgstr "" -#: modules//computer.c:278 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Program\n" -"ColumnTitle$Value=Version\n" -"ShowColumnHeaders=true\n" -"%s" +#: modules/computer.c:296 +msgid "Program" +msgstr "Programm" + +#: modules/computer.c:308 +msgid "Invalid chassis type (0)" msgstr "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Programm\n" -"ColumnTitle$Value=Version\n" -"ShowColumnHeaders=true\n" -"%s" -#: modules//computer.c:358 -msgid "Physical machine" -msgstr "Physikalische Maschine" +#: modules/computer.c:309 modules/computer.c:310 +msgid "Unknown chassis type" +msgstr "" -#: modules//computer.c:375 -#, c-format -msgid "" -"[$ShellParam$]\n" -"UpdateInterval$Memory=1000\n" -"UpdateInterval$Date/Time=1000\n" -"#ReloadInterval=5000\n" -"[Computer]\n" -"Processor=%s\n" -"Memory=...\n" -"Machine Type=%s\n" -"Operating System=%s\n" -"User Name=%s\n" -"Date/Time=...\n" -"[Display]\n" -"Resolution=%dx%d pixels\n" -"OpenGL Renderer=%s\n" -"X11 Vendor=%s\n" -"\n" -"%s\n" -"[Input Devices]\n" -"%s\n" -"\n" -"%s\n" -"\n" -"%s\n" +#: modules/computer.c:311 +msgid "Desktop" msgstr "" -"[$ShellParam$]\n" -"UpdateInterval$Memory=1000\n" -"UpdateInterval$Date/Time=1000\n" -"#ReloadInterval=5000\n" -"[Computer]\n" -"Prozessor=%s\n" -"Memory=...\n" -"Maschinen-Typ=%s\n" -"Betriebssystem=%s\n" -"Benutzername=%s\n" -"Date/Time=...\n" -"[Anzeige]\n" -"Auflösung=%dx%d Pixel\n" -"OpenGL-Renderer=%s\n" -"X11-Hersteller=%s\n" -"\n" -"%s\n" -"[Eingabegeräte]\n" -"%s\n" -"\n" -"%s\n" -"\n" -"%s\n" -#: modules//computer.c:417 -#, fuzzy, c-format -msgid "" -"[$ShellParam$]\n" -"UpdateInterval$Uptime=10000\n" -"UpdateInterval$Load Average=1000\n" -"[Version]\n" -"Kernel=%s\n" -"Version=%s\n" -"C Library=%s\n" -"Distribution=%s\n" -"[Current Session]\n" -"Computer Name=%s\n" -"User Name=%s\n" -"#Language=%s\n" -"Home Directory=%s\n" -"Desktop Environment=%s\n" -"[Misc]\n" -"Uptime=...\n" -"Load Average=..." +#: modules/computer.c:312 +msgid "Low-profile Desktop" msgstr "" -"[$ShellParam$]\n" -"UpdateInterval$Uptime=10000\n" -"UpdateInterval$Load Average=1000\n" -"[Version]\n" -"Kernel=%s\n" -"Version=%s\n" -"C-Library=%s\n" -"Distribution=%s\n" -"[Aktuelle Sitzung]\n" -"Computername=%s\n" -"Benutzername=%s\n" -"#Sprache=%s\n" -"Stammverzeichnis=%s\n" -"Desktop-Umgebung=%s\n" -"[Verschiedenes]\n" -"Uptime=...\n" -"Load Average=..." - -#: modules//computer.c:446 -#, c-format -msgid "" -"[Loaded Modules]\n" -"%s[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Description\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[Geladene Module]\n" -"%s[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Beschreibung\n" -"ShowColumnHeaders=true\n" - -#: modules//computer.c:457 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Date & Time\n" -"ColumnTitle$Value=Kernel Version\n" -"ShowColumnHeaders=true\n" -"\n" -"%s" + +#: modules/computer.c:313 +msgid "Pizza Box" msgstr "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Datum & Uhrzeit\n" -"ColumnTitle$Value=Kernel-Version\n" -"ShowColumnHeaders=true\n" -"\n" -"%s" -#: modules//computer.c:467 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Language Code\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" -"[Available Languages]\n" -"%s" +#: modules/computer.c:314 +msgid "Mini Tower" msgstr "" -"[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Sprach-Code\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" -"[Available Languages]\n" -"%s" -#: modules//computer.c:478 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ViewType=4\n" -"ReloadInterval=5000\n" -"Zebra=1\n" -"NormalizePercentage=false\n" -"ColumnTitle$Extra1=Mount Point\n" -"ColumnTitle$Progress=Usage\n" -"ColumnTitle$TextValue=Device\n" -"ShowColumnHeaders=true\n" -"[Mounted File Systems]\n" -"%s\n" +#: modules/computer.c:315 +msgid "Tower" msgstr "" -"[$ShellParam$]\n" -"ViewType=4\n" -"ReloadInterval=5000\n" -"Zebra=1\n" -"NormalizePercentage=false\n" -"ColumnTitle$Extra1=Mount-Punkt\n" -"ColumnTitle$Progress=Verwendung\n" -"ColumnTitle$TextValue=Gerät\n" -"ShowColumnHeaders=true\n" -"[Mounted File Systems]\n" -"%s\n" - -#: modules//computer.c:492 -#, c-format -msgid "" -"[Display]\n" -"Resolution=%dx%d pixels\n" -"Vendor=%s\n" -"Version=%s\n" -"[Monitors]\n" -"%s[Extensions]\n" -"%s[OpenGL]\n" -"Vendor=%s\n" -"Renderer=%s\n" -"Version=%s\n" -"Direct Rendering=%s\n" -msgstr "" -"[Anzeige]\n" -"Auflösung=%dx%d Pixel\n" -"Hersteller=%s\n" -"Version=%s\n" -"[Bildschirme]\n" -"%s[Erweiterungen]\n" -"%s[OpenGL]\n" -"Hersteller=%s\n" -"Renderer=%s\n" -"Version=%s\n" -"Direct-Rendering=%s\n" -#: modules//computer.c:514 -msgid "Y_es" -msgstr "_Ja" +#: modules/computer.c:316 +msgid "Portable" +msgstr "" -#: modules//computer.c:514 modules//devices/printers.c:138 -#: hardinfo//hardinfo.c:63 -msgid "No" -msgstr "Nein" +#: modules/computer.c:317 modules/computer.c:341 modules/computer.c:350 +#: modules/computer.c:372 +msgid "Laptop" +msgstr "" -#: modules//computer.c:528 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ReloadInterval=10000\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Group ID\n" -"ShowColumnHeaders=true\n" -"[Groups]\n" -"%s\n" +#: modules/computer.c:318 +msgid "Notebook" msgstr "" -"[$ShellParam$]\n" -"ReloadInterval=10000\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Gruppen-ID\n" -"ShowColumnHeaders=true\n" -"[Gruppen]\n" -"%s\n" - -#: modules//computer.c:608 + +#: modules/computer.c:319 +msgid "Handheld" +msgstr "" + +#: modules/computer.c:320 +msgid "Docking Station" +msgstr "" + +#: modules/computer.c:321 +msgid "All-in-one" +msgstr "" + +#: modules/computer.c:322 +msgid "Subnotebook" +msgstr "" + +#: modules/computer.c:323 +msgid "Space-saving" +msgstr "" + +#: modules/computer.c:324 +msgid "Lunch Box" +msgstr "" + +#: modules/computer.c:325 +msgid "Main Server Chassis" +msgstr "" + +#: modules/computer.c:326 +msgid "Expansion Chassis" +msgstr "" + +#: modules/computer.c:327 +msgid "Sub Chassis" +msgstr "" + +#: modules/computer.c:328 +msgid "Bus Expansion Chassis" +msgstr "" + +#: modules/computer.c:329 +msgid "Peripheral Chassis" +msgstr "" + +#: modules/computer.c:330 +msgid "RAID Chassis" +msgstr "" + +#: modules/computer.c:331 +msgid "Rack Mount Chassis" +msgstr "" + +#: modules/computer.c:332 +msgid "Sealed-case PC" +msgstr "" + +#. /proc/apm +#. FIXME: use dmidecode if available to get chassis type +#: modules/computer.c:386 +msgid "Unknown physical machine type" +msgstr "" + +#: modules/computer.c:470 modules/computer.c:709 msgid "Computer" msgstr "Computer" -#: modules//computer.c:702 -msgid "Gathers high-level computer information" -msgstr "Sammelt high-level Computer-Informationen" +#: modules/computer.c:471 modules/devices/alpha/processor.c:87 +#: modules/devices/arm/processor.c:236 modules/devices.c:95 +#: modules/devices/ia64/processor.c:159 modules/devices/m68k/processor.c:83 +#: modules/devices/mips/processor.c:74 modules/devices/parisc/processor.c:154 +#: modules/devices/ppc/processor.c:157 modules/devices/riscv/processor.c:181 +#: modules/devices/s390/processor.c:131 modules/devices/sh/processor.c:83 +#: modules/devices/sparc/processor.c:74 modules/devices/x86/processor.c:409 +msgid "Processor" +msgstr "Prozessor" -#: modules//computer/alsa.c:26 -msgid "[Audio Devices]\n" -msgstr "[Audio-Geräte]\n" +#: modules/computer.c:474 +msgid "Machine Type" +msgstr "Maschinen-Typ" -#: modules//computer/alsa.c:33 +#: modules/computer.c:477 modules/computer.c:514 +msgid "User Name" +msgstr "Benutzername" + +#: modules/computer.c:482 modules/computer.c:591 +msgid "Resolution" +msgstr "Auflösung" + +#: modules/computer.c:483 modules/computer.c:592 #, c-format -msgid "Audio Adapter#%d=%s\n" +msgid "%dx%d pixels" +msgstr "" + +#: modules/computer.c:485 +msgid "OpenGL Renderer" +msgstr "OpenGL-Renderer" + +#: modules/computer.c:486 +msgid "X11 Vendor" +msgstr "X11-Hersteller" + +#: modules/computer.c:491 modules/devices.c:102 +msgid "Input Devices" +msgstr "Eingabegeräte" + +#: modules/computer.c:493 modules/computer.c:752 modules/devices.c:99 +msgid "Printers" +msgstr "Drucker" + +#: modules/computer.c:495 modules/computer.c:752 modules/devices.c:103 +msgid "Storage" +msgstr "Speicher" + +#: modules/computer.c:506 +msgid "Kernel" +msgstr "" + +#: modules/computer.c:508 +msgid "C Library" +msgstr "C-Library" + +#: modules/computer.c:509 +msgid "Distribution" +msgstr "" + +#: modules/computer.c:512 +msgid "Current Session" +msgstr "Aktuelle Sitzung" + +#: modules/computer.c:513 +msgid "Computer Name" +msgstr "Computername" + +#: modules/computer.c:515 modules/computer/languages.c:108 +msgid "Language" +msgstr "Sprache" + +#: modules/computer.c:516 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "Stammverzeichnis" + +#: modules/computer.c:519 modules/devices/usb.c:87 modules/devices/usb.c:234 +#: modules/devices/usb.c:351 +msgid "Misc" +msgstr "Verschiedenes" + +#: modules/computer.c:532 +msgid "Loaded Modules" +msgstr "Geladene Module" + +#: modules/computer.c:535 modules/computer/modules.c:145 +#: modules/computer/modules.c:147 modules/devices/arm/processor.c:337 +#: modules/devices.c:559 modules/devices/x86/processor.c:456 +msgid "Description" +msgstr "Beschreibung" + +#: modules/computer.c:548 +msgid "Date & Time" +msgstr "Datum & Uhrzeit" + +#: modules/computer.c:549 +msgid "Kernel Version" +msgstr "Kernel-Version" + +#: modules/computer.c:559 +msgid "Available Languages" +msgstr "" + +#: modules/computer.c:561 +msgid "Language Code" +msgstr "Sprach-Code" + +#: modules/computer.c:573 +msgid "Mounted File Systems" +msgstr "" + +#: modules/computer.c:575 modules/computer/filesystem.c:85 +msgid "Mount Point" +msgstr "Mount-Punkt" + +#: modules/computer.c:576 +msgid "Usage" +msgstr "Verwendung" + +#: modules/computer.c:577 +msgid "Device" +msgstr "Gerät" + +#: modules/computer.c:594 modules/computer.c:601 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:119 +#: modules/devices/pci.c:225 modules/devices/usb.c:349 +#: modules/devices/x86/processor.c:416 +msgid "Vendor" +msgstr "Hersteller" + +#: modules/computer.c:598 +msgid "Monitors" +msgstr "Bildschirme" + +#: modules/computer.c:600 +msgid "OpenGL" +msgstr "" + +#: modules/computer.c:602 +msgid "Renderer" +msgstr "" + +#: modules/computer.c:604 +msgid "Direct Rendering" +msgstr "Direct-Rendering" + +#: modules/computer.c:608 +msgid "Extensions" +msgstr "Erweiterungen" + +#: modules/computer.c:628 +msgid "Group" msgstr "" -#: modules//computer/boots.c:33 -msgid "[Boots]\n" -msgstr "[Systemstarts]\n" +#: modules/computer.c:631 modules/computer/users.c:49 +msgid "Group ID" +msgstr "Gruppen-ID" -#: modules//computer/display.c:122 +#: modules/computer.c:751 +msgid "RAM" +msgstr "" + +#: modules/computer.c:751 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "" + +#: modules/computer.c:751 +msgid "Graphics" +msgstr "" + +#: modules/computer.c:752 +msgid "Audio" +msgstr "" + +#: modules/computer.c:807 +msgid "Gathers high-level computer information" +msgstr "Sammelt high-level Computer-Informationen" + +#: modules/computer/display.c:122 #, c-format msgid "Monitor %d=%dx%d pixels\n" msgstr "Bildschirm %d=%dx%d Pixel\n" -#: modules//computer/environment.c:32 -msgid "[Environment Variables]\n" -msgstr "[Umgebungsvariablen]\n" +#: modules/computer/filesystem.c:83 +msgid "Filesystem" +msgstr "" + +#: modules/computer/filesystem.c:84 +msgid "Mounted As" +msgstr "" -#: modules//computer/os.c:57 -#, c-format -msgid "GNU C Library version %s (%sstable)" +#: modules/computer/filesystem.c:84 +msgid "Read-Write" +msgstr "" + +#: modules/computer/filesystem.c:84 +msgid "Read-Only" +msgstr "" + +#: modules/computer/filesystem.c:86 modules/devices/spd-decode.c:1510 +msgid "Size" +msgstr "" + +#: modules/computer/filesystem.c:87 +msgid "Used" +msgstr "" + +#: modules/computer/filesystem.c:88 +msgid "Available" +msgstr "" + +#: modules/computer/languages.c:103 +msgid "Locale Information" +msgstr "" + +#: modules/computer/languages.c:105 +msgid "Source" +msgstr "" + +#: modules/computer/languages.c:106 +msgid "Address" +msgstr "" + +#: modules/computer/languages.c:107 +msgid "E-mail" +msgstr "" + +#: modules/computer/languages.c:109 +msgid "Territory" msgstr "" -#: modules//computer/os.c:59 -msgid "un" +#: modules/computer/languages.c:110 modules/devices/arm/processor.c:250 +#: modules/devices/ia64/processor.c:166 modules/devices/ppc/processor.c:159 +#: modules/devices/usb.c:236 +msgid "Revision" msgstr "" -#: modules//computer/os.c:61 modules//computer/os.c:138 modules//devices.c:154 -#: modules//devices.c:197 modules//devices/printers.c:99 -#: modules//devices/printers.c:106 modules//devices/printers.c:116 -#: modules//devices/printers.c:131 modules//devices/printers.c:140 -#: modules//devices/printers.c:243 +#: modules/computer/languages.c:111 +msgid "Date" +msgstr "" + +#: modules/computer/languages.c:112 +msgid "Codeset" +msgstr "" + +#: modules/computer/loadavg.c:64 +msgid "Couldn't obtain load average" +msgstr "" + +#: modules/computer/modules.c:125 modules/computer/modules.c:126 +#: modules/computer/modules.c:127 modules/computer/modules.c:128 +#: modules/computer/modules.c:129 +msgid "(Not available)" +msgstr "" + +#: modules/computer/modules.c:142 +msgid "Module Information" +msgstr "" + +#: modules/computer/modules.c:143 +msgid "Path" +msgstr "" + +#: modules/computer/modules.c:144 +msgid "Used Memory" +msgstr "" + +#: modules/computer/modules.c:144 +msgid "KiB" +msgstr "" + +#: modules/computer/modules.c:148 +msgid "Version Magic" +msgstr "" + +#: modules/computer/modules.c:149 +msgid "Copyright" +msgstr "" + +#: modules/computer/modules.c:150 +msgid "Author" +msgstr "" + +#: modules/computer/modules.c:151 +msgid "License" +msgstr "" + +#: modules/computer/modules.c:158 +msgid "Dependencies" +msgstr "" + +#: modules/computer/os.c:35 modules/computer/os.c:36 modules/computer/os.c:37 +#: modules/computer/os.c:38 +msgid "GNU C Library" +msgstr "" + +#: modules/computer/os.c:39 +msgid "uClibc or uClibc-ng" +msgstr "" + +#: modules/computer/os.c:40 +msgid "diet libc" +msgstr "" + +#: modules/computer/os.c:78 modules/computer/os.c:234 modules/computer/os.c:359 +#: modules/devices.c:333 modules/devices.c:387 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 msgid "Unknown" msgstr "" -#: modules//computer/os.c:80 +#: modules/computer/os.c:112 modules/computer/os.c:115 +msgid "GNOME Shell " +msgstr "" + +#: modules/computer/os.c:123 modules/computer/os.c:126 +msgid "Version: " +msgstr "" + +#: modules/computer/os.c:157 +#, c-format +msgid "Unknown (Window Manager: %s)" +msgstr "" + +#. /{desktop environment} on {session type} +#: modules/computer/os.c:168 #, c-format -msgid "Version: %s" +msgid "%s on %s" msgstr "" -#: modules//computer/os.c:114 +#: modules/computer/os.c:232 msgid "Terminal" msgstr "" -#: modules//computer/os.c:134 +#. /bits of entropy for rng (0) +#: modules/computer/os.c:241 +msgid "(None or not available)" +msgstr "" + +#. /bits of entropy for rng (low/poor value) +#: modules/computer/os.c:242 #, c-format -msgid "Unknown (Window Manager: %s)" +msgid "%d bits (low)" msgstr "" -#: modules//computer/os.c:174 -msgid "Unknown distribution" +#. /bits of entropy for rng (medium value) +#: modules/computer/os.c:243 +#, c-format +msgid "%d bits (medium)" msgstr "" -#: modules//devices.c:74 -msgid "Processor" -msgstr "Prozessor" +#. /bits of entropy for rng (high/good value) +#: modules/computer/os.c:244 +#, c-format +msgid "%d bits (healthy)" +msgstr "" -#: modules//devices.c:75 -msgid "Memory" -msgstr "Hauptspeicher" +#: modules/computer/os.c:279 modules/devices/usb.c:48 modules/devices/usb.c:307 +#: modules/devices/usb.c:310 modules/network/net.c:442 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "" -#: modules//devices.c:76 -msgid "PCI Devices" -msgstr "PCI-Geräte" +#: modules/computer/users.c:47 +msgid "User Information" +msgstr "" -#: modules//devices.c:77 -msgid "USB Devices" -msgstr "USB-Geräte" +#: modules/computer/users.c:48 +msgid "User ID" +msgstr "" -#: modules//devices.c:78 -msgid "Printers" -msgstr "Drucker" +#: modules/computer/users.c:51 +msgid "Default Shell" +msgstr "" -#: modules//devices.c:79 -msgid "Battery" -msgstr "Akku" +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:141 +#: modules/devices/devicetree.c:176 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/ia64/processor.c:165 modules/devices/m68k/processor.c:84 +#: modules/devices/mips/processor.c:75 modules/devices/parisc/processor.c:155 +#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 +#: modules/devices/s390/processor.c:132 modules/devices/spd-decode.c:1510 +msgid "Model" +msgstr "" -#: modules//devices.c:80 -msgid "Sensors" -msgstr "Sensoren" +#: modules/devices/alpha/processor.c:89 +msgid "Platform String" +msgstr "" -#: modules//devices.c:81 -msgid "Input Devices" -msgstr "Eingabegeräte" +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/pci.c:108 modules/devices/ppc/processor.c:160 +#: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 +#: modules/devices/x86/processor.c:420 +msgid "Frequency" +msgstr "Taktfrequenz" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/arm/processor.c:365 modules/devices.c:299 +#: modules/devices.c:307 modules/devices.c:335 +#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 +#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 +#: modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/pci.c:108 +#: modules/devices/ppc/processor.c:160 modules/devices/ppc/processor.c:187 +#: modules/devices/riscv/processor.c:186 modules/devices/riscv/processor.c:214 +#: modules/devices/s390/processor.c:160 modules/devices/sh/processor.c:87 +#: modules/devices/sh/processor.c:88 modules/devices/sh/processor.c:89 +#: modules/devices/x86/processor.c:420 modules/devices/x86/processor.c:479 +msgid "MHz" +msgstr "" -#: modules//devices.c:82 -msgid "Storage" -msgstr "Speicher" +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:241 +#: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 +#: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 +#: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:421 +msgid "BogoMips" +msgstr "" -#: modules//devices.c:84 -msgid "DMI" -msgstr "DMI" +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:242 +#: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 +#: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 +#: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 +#: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:422 +msgid "Byte Order" +msgstr "Byte-Reihenfolge" + +#. /hw_cap +#. /flag:swp +#: modules/devices/arm/arm_data.c:42 +msgctxt "arm-flag" +msgid "SWP instruction (atomic read-modify-write)" +msgstr "" -#: modules//devices.c:85 -msgid "Memory SPD" -msgstr "Hauptspeicher (SPD)" +#. /flag:half +#: modules/devices/arm/arm_data.c:43 +msgctxt "arm-flag" +msgid "Half-word loads and stores" +msgstr "" -#: modules//devices.c:87 -msgid "Resources" -msgstr "Ressourcen" +#. /flag:thumb +#: modules/devices/arm/arm_data.c:44 +msgctxt "arm-flag" +msgid "Thumb (16-bit instruction set)" +msgstr "" -#: modules//devices.c:193 -msgid " (vendor unknown)" -msgstr " (unbekannter Hersteller)" +#. /flag:26bit +#: modules/devices/arm/arm_data.c:45 +msgctxt "arm-flag" +msgid "26-Bit Model (Processor status register folded into program counter)" +msgstr "" -#: modules//devices.c:195 -msgid " (model unknown)" -msgstr " (unbekanntes Modell)" +#. /flag:fastmult +#: modules/devices/arm/arm_data.c:46 +msgctxt "arm-flag" +msgid "32x32->64-bit multiplication" +msgstr "" -#: modules//devices.c:412 -msgid "Devices" -msgstr "Geräte" +#. /flag:fpa +#: modules/devices/arm/arm_data.c:47 +msgctxt "arm-flag" +msgid "Floating point accelerator" +msgstr "" -#: modules//devices.c:424 -msgid "Update PCI ID listing" +#. /flag:vfp +#: modules/devices/arm/arm_data.c:48 +msgctxt "arm-flag" +msgid "VFP (early SIMD vector floating point instructions)" msgstr "" -#: modules//devices.c:436 -msgid "Update CPU feature database" +#. /flag:edsp +#: modules/devices/arm/arm_data.c:49 +msgctxt "arm-flag" +msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "" -#: modules//devices.c:464 -msgid "Gathers information about hardware devices" -msgstr "Sammelt Informationen über die Hardware-Geräte" +#. /flag:java +#: modules/devices/arm/arm_data.c:50 +msgctxt "arm-flag" +msgid "Jazelle (Java bytecode accelerator)" +msgstr "" + +#. /flag:iwmmxt +#: modules/devices/arm/arm_data.c:51 +msgctxt "arm-flag" +msgid "SIMD instructions similar to Intel MMX" +msgstr "" -#: modules//devices/battery.c:181 +#. /flag:crunch +#: modules/devices/arm/arm_data.c:52 +msgctxt "arm-flag" +msgid "MaverickCrunch coprocessor (if kernel support enabled)" +msgstr "" + +#. /flag:thumbee +#: modules/devices/arm/arm_data.c:53 +msgctxt "arm-flag" +msgid "ThumbEE" +msgstr "" + +#. /flag:neon +#: modules/devices/arm/arm_data.c:54 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch32" +msgstr "" + +#. /flag:evtstrm +#: modules/devices/arm/arm_data.c:55 +msgctxt "arm-flag" +msgid "Kernel event stream using generic architected timer" +msgstr "" + +#. /flag:vfpv3 +#: modules/devices/arm/arm_data.c:56 +msgctxt "arm-flag" +msgid "VFP version 3" +msgstr "" + +#. /flag:vfpv3d16 +#: modules/devices/arm/arm_data.c:57 +msgctxt "arm-flag" +msgid "VFP version 3 with 16 D-registers" +msgstr "" + +#. /flag:vfpv4 +#: modules/devices/arm/arm_data.c:58 +msgctxt "arm-flag" +msgid "VFP version 4 with fast context switching" +msgstr "" + +#. /flag:vfpd32 +#: modules/devices/arm/arm_data.c:59 +msgctxt "arm-flag" +msgid "VFP with 32 D-registers" +msgstr "" + +#. /flag:tls +#: modules/devices/arm/arm_data.c:60 +msgctxt "arm-flag" +msgid "TLS register" +msgstr "" + +#. /flag:idiva +#: modules/devices/arm/arm_data.c:61 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in ARM mode" +msgstr "" + +#. /flag:idivt +#: modules/devices/arm/arm_data.c:62 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in Thumb mode" +msgstr "" + +#. /flag:lpae +#: modules/devices/arm/arm_data.c:63 +msgctxt "arm-flag" +msgid "40-bit Large Physical Address Extension" +msgstr "" + +#. /hw_cap2 +#. /flag:pmull +#: modules/devices/arm/arm_data.c:65 +msgctxt "arm-flag" +msgid "64x64->128-bit F2m multiplication (arch>8)" +msgstr "" + +#. /flag:aes +#: modules/devices/arm/arm_data.c:66 +msgctxt "arm-flag" +msgid "Crypto:AES (arch>8)" +msgstr "" + +#. /flag:sha1 +#: modules/devices/arm/arm_data.c:67 +msgctxt "arm-flag" +msgid "Crypto:SHA1 (arch>8)" +msgstr "" + +#. /flag:sha2 +#: modules/devices/arm/arm_data.c:68 +msgctxt "arm-flag" +msgid "Crypto:SHA2 (arch>8)" +msgstr "" + +#. /flag:crc32 +#: modules/devices/arm/arm_data.c:69 +msgctxt "arm-flag" +msgid "CRC32 checksum instructions (arch>8)" +msgstr "" + +#. /flag:asimd +#: modules/devices/arm/arm_data.c:72 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +msgstr "" + +#: modules/devices/arm/processor.c:142 +msgid "ARM Processor" +msgstr "ARM Prozessor" + +#: modules/devices/arm/processor.c:200 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:371 +msgid "Empty List" +msgstr "" + +#: modules/devices/arm/processor.c:237 +msgid "Linux Name" +msgstr "" + +#: modules/devices/arm/processor.c:238 +msgid "Decoded Name" +msgstr "" + +#: modules/devices/arm/processor.c:239 modules/network/net.c:458 +msgid "Mode" +msgstr "" + +#: modules/devices/arm/processor.c:245 +msgid "ARM" +msgstr "" + +#: modules/devices/arm/processor.c:246 +msgid "Implementer" +msgstr "" + +#: modules/devices/arm/processor.c:247 +msgid "Part" +msgstr "" + +#: modules/devices/arm/processor.c:248 modules/devices/ia64/processor.c:162 +#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 +msgid "Architecture" +msgstr "" + +#: modules/devices/arm/processor.c:249 +msgid "Variant" +msgstr "" + +#: modules/devices/arm/processor.c:251 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:428 +msgid "Capabilities" +msgstr "Fähigkeiten" + +#: modules/devices/arm/processor.c:335 +msgid "SOC/Package" +msgstr "" + +#: modules/devices/arm/processor.c:338 modules/devices/cpu_util.c:222 +msgid "Topology" +msgstr "" + +#: modules/devices/arm/processor.c:339 +msgid "Clocks" +msgstr "" + +#: modules/devices/arm/processor.c:354 +msgid "SOC/Package Information" +msgstr "" + +#: modules/devices/battery.c:181 #, c-format msgid "" "\n" @@ -1086,7 +1665,7 @@ msgstr "" "Modellnummer=%s\n" "Seriennummer=%s\n" -#: modules//devices/battery.c:258 +#: modules/devices/battery.c:258 #, c-format msgid "" "\n" @@ -1107,7 +1686,7 @@ msgstr "" "Modellnummer=%s\n" "Seriennummer=%s\n" -#: modules//devices/battery.c:346 +#: modules/devices/battery.c:346 #, fuzzy, c-format msgid "" "\n" @@ -1126,7 +1705,7 @@ msgstr "" "APM Driver-Version=%s\n" "APM BIOS-Version=%s\n" -#: modules//devices/battery.c:358 +#: modules/devices/battery.c:358 #, fuzzy, c-format msgid "" "\n" @@ -1143,7 +1722,7 @@ msgstr "" "APM Driver-Version=%s\n" "APM BIOS-Version=%s\n" -#: modules//devices/battery.c:385 +#: modules/devices/battery.c:385 msgid "" "[No batteries]\n" "No batteries found on this system=\n" @@ -1151,56 +1730,550 @@ msgstr "" "[Keine Akkus]\n" "Keine Akkus in diesem System gefunden=\n" -#: modules//devices/printers.c:81 +#: modules/devices.c:97 +msgid "PCI Devices" +msgstr "PCI-Geräte" + +#: modules/devices.c:98 modules/devices/usb.c:117 modules/devices/usb.c:156 +#: modules/devices/usb.c:415 +msgid "USB Devices" +msgstr "USB-Geräte" + +#: modules/devices.c:100 +msgid "Battery" +msgstr "Akku" + +#: modules/devices.c:101 +msgid "Sensors" +msgstr "Sensoren" + +#: modules/devices.c:105 +msgid "DMI" +msgstr "DMI" + +#: modules/devices.c:106 +msgid "Memory SPD" +msgstr "Hauptspeicher (SPD)" + +#: modules/devices.c:111 +msgid "Device Tree" +msgstr "" + +#: modules/devices.c:113 +msgid "Resources" +msgstr "Ressourcen" + +#: modules/devices.c:151 +#, c-format +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "" +msgstr[1] "" + +#: modules/devices.c:152 +#, c-format +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "" +msgstr[1] "" + +#: modules/devices.c:153 +#, c-format +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "" +msgstr[1] "" + +#. /NP procs; NC cores; NT threads +#: modules/devices.c:154 +#, c-format +msgid "%s; %s; %s" +msgstr "" + +#: modules/devices.c:372 +msgid " (model unknown)" +msgstr " (unbekanntes Modell)" + +#: modules/devices.c:374 +msgid " (vendor unknown)" +msgstr " (unbekannter Hersteller)" + +#: modules/devices.c:559 +msgid "Field" +msgstr "" + +#: modules/devices.c:559 modules/devices.c:591 +msgid "Value" +msgstr "" + +#: modules/devices.c:591 +msgid "Sensor" +msgstr "" + +#: modules/devices.c:591 modules/devices/inputdevices.c:117 +msgid "Type" +msgstr "" + +#: modules/devices.c:637 +msgid "Devices" +msgstr "Geräte" + +#: modules/devices.c:649 +msgid "Update PCI ID listing" +msgstr "" + +#: modules/devices.c:661 +msgid "Update CPU feature database" +msgstr "" + +#: modules/devices.c:689 +msgid "Gathers information about hardware devices" +msgstr "Sammelt Informationen über die Hardware-Geräte" + +#: modules/devices.c:708 +msgid "Resource information requires superuser privileges" +msgstr "" + +#: modules/devices/cpu_util.c:30 +msgid "Little Endian" +msgstr "" + +#: modules/devices/cpu_util.c:32 +msgid "Big Endian" +msgstr "" + +#: modules/devices/cpu_util.c:178 modules/devices/cpu_util.c:189 +msgid "Frequency Scaling" +msgstr "" + +#: modules/devices/cpu_util.c:179 +msgid "Minimum" +msgstr "" + +#: modules/devices/cpu_util.c:179 modules/devices/cpu_util.c:180 +#: modules/devices/cpu_util.c:181 +msgid "kHz" +msgstr "" + +#: modules/devices/cpu_util.c:180 +msgid "Maximum" +msgstr "" + +#: modules/devices/cpu_util.c:181 +msgid "Current" +msgstr "" + +#: modules/devices/cpu_util.c:182 +msgid "Transition Latency" +msgstr "" + +#: modules/devices/cpu_util.c:182 +msgid "ns" +msgstr "" + +#: modules/devices/cpu_util.c:183 +msgid "Governor" +msgstr "" + +#: modules/devices/cpu_util.c:184 modules/devices/cpu_util.c:190 +msgid "Driver" +msgstr "Treiber" + +#: modules/devices/cpu_util.c:196 modules/devices/x86/processor.c:297 +msgid "(Not Available)" +msgstr "" + +#: modules/devices/cpu_util.c:204 modules/devices/cpu_util.c:206 +msgid "Socket" +msgstr "" + +#: modules/devices/cpu_util.c:209 modules/devices/cpu_util.c:211 +msgid "Core" +msgstr "" + +#: modules/devices/cpu_util.c:214 +msgid "Book" +msgstr "" + +#: modules/devices/cpu_util.c:216 +msgid "Drawer" +msgstr "" + +#: modules/devices/cpu_util.c:223 +msgid "ID" +msgstr "" + +#: modules/devices/devicetree.c:47 +msgid "Properties" +msgstr "" + +#: modules/devices/devicetree.c:48 +msgid "Children" +msgstr "" + +#: modules/devices/devicetree.c:84 +msgid "Node" +msgstr "" + +#: modules/devices/devicetree.c:85 +msgid "Node Path" +msgstr "" + +#: modules/devices/devicetree.c:86 +msgid "Alias" +msgstr "" + +#: modules/devices/devicetree.c:86 modules/devices/devicetree.c:87 +msgid "(None)" +msgstr "" + +#: modules/devices/devicetree.c:87 +msgid "Symbol" +msgstr "" + +#: modules/devices/devicetree.c:132 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "" + +#: modules/devices/devicetree.c:133 modules/devices/devicetree.c:178 +msgid "Compatible" +msgstr "" + +#: modules/devices/devicetree.c:134 +msgid "GPU-compatible" +msgstr "" + +#: modules/devices/devicetree.c:140 +msgid "Raspberry Pi or Compatible" +msgstr "" + +#: modules/devices/devicetree.c:142 modules/devices/devicetree.c:160 +#: modules/devices/devicetree.c:177 modules/devices/devicetree/rpi_data.c:160 +msgid "Serial Number" +msgstr "" + +#: modules/devices/devicetree.c:143 modules/devices/devicetree/rpi_data.c:157 +msgid "RCode" +msgstr "" + +#: modules/devices/devicetree.c:143 +msgid "No revision code available; unable to lookup model details." +msgstr "" + +#: modules/devices/devicetree.c:159 +msgid "More" +msgstr "" + +#: modules/devices/devicetree.c:175 +msgid "Board" +msgstr "" + +#: modules/devices/devicetree.c:234 +msgid "Messages" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1013 +msgid "phandle Map" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1014 +msgid "Alias Map" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1015 +msgid "Symbol Map" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:152 +#: modules/devices/devicetree/rpi_data.c:153 +msgid "Raspberry Pi" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:153 +msgid "Board Name" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:154 +msgid "PCB Revision" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:155 +msgid "Introduction" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:156 modules/devices/spd-decode.c:1510 +#: modules/devices/usb.c:84 modules/devices/usb.c:217 +msgid "Manufacturer" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:158 +msgid "SOC (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:159 +msgid "Memory (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Permanent overvolt bit" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "" + +#: modules/devices/devmemory.c:93 +msgid "Total Memory" +msgstr "" + +#: modules/devices/devmemory.c:94 +msgid "Free Memory" +msgstr "" + +#: modules/devices/devmemory.c:95 +msgid "Cached Swap" +msgstr "" + +#: modules/devices/devmemory.c:96 +msgid "High Memory" +msgstr "" + +#: modules/devices/devmemory.c:97 +msgid "Free High Memory" +msgstr "" + +#: modules/devices/devmemory.c:98 +msgid "Low Memory" +msgstr "" + +#: modules/devices/devmemory.c:99 +msgid "Free Low Memory" +msgstr "" + +#: modules/devices/devmemory.c:100 +msgid "Virtual Memory" +msgstr "" + +#: modules/devices/devmemory.c:101 +msgid "Free Virtual Memory" +msgstr "" + +#: modules/devices/dmi.c:188 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "" + +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "" + +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "" + +#: modules/devices/ia64/processor.c:164 modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "" + +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "" + +#: modules/devices/ia64/processor.c:171 +msgid "Features" +msgstr "Funktionen" + +#: modules/devices/inputdevices.c:115 modules/devices/pci.c:214 +#: modules/devices/usb.c:82 modules/devices/usb.c:215 modules/devices/usb.c:347 +msgid "Device Information" +msgstr "" + +#: modules/devices/inputdevices.c:118 modules/devices/usb.c:92 +#: modules/devices/usb.c:240 modules/devices/usb.c:356 +msgid "Bus" +msgstr "" + +#: modules/devices/inputdevices.c:120 modules/devices/usb.c:83 +#: modules/devices/usb.c:216 modules/devices/usb.c:348 +msgid "Product" +msgstr "" + +#: modules/devices/inputdevices.c:124 +msgid "Connected to" +msgstr "" + +#: modules/devices/inputdevices.c:128 +msgid "InfraRed port" +msgstr "" + +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" +msgstr "" + +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" +msgstr "" + +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" +msgstr "" + +#: modules/devices/mips/processor.c:76 +msgid "System Type" +msgstr "" + +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "" + +#: modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "" + +#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:425 +msgid "Cache" +msgstr "" + +#: modules/devices/pci.c:106 +msgid "IRQ" +msgstr "" + +#: modules/devices/pci.c:110 +msgid "Latency" +msgstr "" + +#: modules/devices/pci.c:112 +msgid "Bus Master" +msgstr "" + +#: modules/devices/pci.c:118 +msgid "Kernel modules" +msgstr "" + +#: modules/devices/pci.c:124 +#, c-format +msgid "%s=%s (%s)\n" +msgstr "" + +#: modules/devices/pci.c:126 +msgid "OEM Vendor" +msgstr "" + +#: modules/devices/pci.c:153 +msgid "prefetchable" +msgstr "" + +#: modules/devices/pci.c:154 +msgid "non-prefetchable" +msgstr "" + +#: modules/devices/pci.c:163 +msgid "I/O ports at" +msgstr "" + +#: modules/devices/pci.c:216 modules/devices/usb.c:89 modules/devices/usb.c:237 +#: modules/devices/usb.c:353 +msgid "Class" +msgstr "" + +#: modules/devices/pci.c:217 +msgid "Domain" +msgstr "" + +#: modules/devices/pci.c:218 +msgid "Bus, device, function" +msgstr "" + +#: modules/devices/pci.c:243 +msgid "No PCI devices found" +msgstr "" + +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" +msgstr "POWER Prozessor" + +#: modules/devices/printers.c:81 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ Kann schwarz/weiß drucken=\n" -#: modules//devices/printers.c:83 +#: modules/devices/printers.c:83 msgid "⚬ Can do color printing=\n" msgstr "⚬ Kann farbig drucken=\n" -#: modules//devices/printers.c:85 +#: modules/devices/printers.c:85 msgid "⚬ Can do duplexing=\n" msgstr "⚬ Kann zweiseitig drucken (Duplexdruck)=\n" -#: modules//devices/printers.c:87 +#: modules/devices/printers.c:87 msgid "⚬ Can do staple output=\n" msgstr "⚬ Kann Ausdrucke stapeln=\n" -#: modules//devices/printers.c:89 +#: modules/devices/printers.c:89 msgid "⚬ Can do copies=\n" msgstr "⚬ Kann kopieren=\n" -#: modules//devices/printers.c:91 +#: modules/devices/printers.c:91 msgid "⚬ Can collate copies=\n" msgstr "⚬ Kann Ausdruck sortieren=\n" -#: modules//devices/printers.c:93 +#: modules/devices/printers.c:93 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ Drucker weist Aufträge zurück=\n" -#: modules//devices/printers.c:95 +#: modules/devices/printers.c:95 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬ Drucker wurde automatisch entdeckt und hinzugefügt=\n" -#: modules//devices/printers.c:110 +#: modules/devices/printers.c:110 msgid "Idle" msgstr "" -#: modules//devices/printers.c:112 +#: modules/devices/printers.c:112 msgid "Printing a Job" msgstr "" -#: modules//devices/printers.c:114 +#: modules/devices/printers.c:114 msgid "Stopped" msgstr "" -#: modules//devices/printers.c:138 hardinfo//hardinfo.c:62 -#: hardinfo//hardinfo.c:63 -msgid "Yes" -msgstr "Ja" - -#: modules//devices/printers.c:190 +#: modules/devices/printers.c:190 msgid "" "[Printers]\n" "No suitable CUPS library found=" @@ -1208,11 +2281,11 @@ msgstr "" "[Drucker]\n" "Keine passende CUPS-Bibliothek gefunden=" -#: modules//devices/printers.c:200 +#: modules/devices/printers.c:200 msgid "[Printers (CUPS)]\n" msgstr "[Drucker (CUPS)]\n" -#: modules//devices/printers.c:263 +#: modules/devices/printers.c:263 msgid "" "[Printers]\n" "No printers found=\n" @@ -1220,7 +2293,165 @@ msgstr "" "[Printers]\n" "Keine Drucker gefunden=\n" -#: modules//devices/storage.c:46 +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" +msgstr "" + +#: modules/devices/riscv/processor.c:184 +msgid "uarch" +msgstr "" + +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" +msgstr "" + +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" +msgstr "" + +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" +msgstr "" + +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" +msgstr "" + +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" +msgstr "" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "" + +#: modules/devices/spd-decode.c:1475 +msgid "" +"[SPD]\n" +"Please load the eeprom module to obtain information about memory SPD=\n" +"[$ShellParam$]\n" +"ReloadInterval=500\n" +msgstr "" + +#: modules/devices/spd-decode.c:1480 +msgid "" +"[SPD]\n" +"Reading memory SPD not supported on this system=\n" +msgstr "" + +#: modules/devices/spd-decode.c:1509 +msgid "SPD" +msgstr "" + +#: modules/devices/spd-decode.c:1510 +msgid "Bank" +msgstr "" + +#: modules/devices/storage.c:46 msgid "" "\n" "[SCSI Disks]\n" @@ -1228,7 +2459,7 @@ msgstr "" "\n" "[SCSI-Geräte]\n" -#: modules//devices/storage.c:110 modules//devices/storage.c:297 +#: modules/devices/storage.c:110 modules/devices/storage.c:313 #, c-format msgid "" "[Device Information]\n" @@ -1237,17 +2468,17 @@ msgstr "" "[Geräte-Informationen]\n" "Modell=%s\n" -#: modules//devices/storage.c:115 modules//devices/storage.c:304 +#: modules/devices/storage.c:115 modules/devices/storage.c:319 #, c-format msgid "Vendor=%s (%s)\n" msgstr "Hersteller=%s (%s)\n" -#: modules//devices/storage.c:120 modules//devices/storage.c:309 +#: modules/devices/storage.c:120 modules/devices/storage.c:321 #, c-format msgid "Vendor=%s\n" msgstr "Hersteller=%s\n" -#: modules//devices/storage.c:125 +#: modules/devices/storage.c:125 #, c-format msgid "" "Type=%s\n" @@ -1259,7 +2490,7 @@ msgid "" "LUN=%d\n" msgstr "" -#: modules//devices/storage.c:169 +#: modules/devices/storage.c:167 msgid "" "\n" "[IDE Disks]\n" @@ -1267,12 +2498,12 @@ msgstr "" "\n" "[IDE-Geräte]\n" -#: modules//devices/storage.c:242 +#: modules/devices/storage.c:250 #, c-format msgid "Driver=%s\n" msgstr "Treiber=%s\n" -#: modules//devices/storage.c:314 +#: modules/devices/storage.c:324 #, c-format msgid "" "Device Name=hd%c\n" @@ -1280,7 +2511,7 @@ msgid "" "Cache=%dkb\n" msgstr "" -#: modules//devices/storage.c:329 +#: modules/devices/storage.c:334 #, c-format msgid "" "[Geometry]\n" @@ -1291,7 +2522,7 @@ msgstr "" "Physikalisch=%s\n" "Logisch=%s\n" -#: modules//devices/storage.c:341 +#: modules/devices/storage.c:344 #, c-format msgid "" "[Capabilities]\n" @@ -1300,7 +2531,7 @@ msgstr "" "[Fähigkeiten]\n" "%s" -#: modules//devices/storage.c:348 +#: modules/devices/storage.c:351 #, c-format msgid "" "[Speeds]\n" @@ -1309,399 +2540,1863 @@ msgstr "" "[Geschwindigkeiten]\n" "%s" -#: modules//devices/x86/processor.c:145 modules//devices/x86_64/processor.c:145 +#: modules/devices/usb.c:44 modules/devices/usb.c:326 +msgid "mA" +msgstr "" + +#. /%.2f is version +#: modules/devices/usb.c:53 modules/devices/usb.c:190 +#, c-format +msgid "USB %.2f Hub" +msgstr "" + +#: modules/devices/usb.c:55 modules/devices/usb.c:192 +#, c-format +msgid "Unknown USB %.2f Device (class %d)" +msgstr "" + +#: modules/devices/usb.c:85 modules/devices/usb.c:232 +msgid "Speed" +msgstr "" + +#: modules/devices/usb.c:85 modules/devices/usb.c:232 +msgid "Mbit/s" +msgstr "" + +#: modules/devices/usb.c:86 modules/devices/usb.c:233 modules/devices/usb.c:350 +msgid "Max Current" +msgstr "" + +#: modules/devices/usb.c:88 modules/devices/usb.c:235 modules/devices/usb.c:352 +msgid "USB Version" +msgstr "" + +#: modules/devices/usb.c:90 modules/devices/usb.c:238 modules/devices/usb.c:354 +msgid "Vendor ID" +msgstr "" + +#: modules/devices/usb.c:91 modules/devices/usb.c:239 modules/devices/usb.c:355 +msgid "Product ID" +msgstr "" + +#: modules/devices/usb.c:231 +msgid "Port" +msgstr "" + +#: modules/devices/usb.c:241 +msgid "Level" +msgstr "" + +#: modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "" -#: modules//devices/x86/processor.c:484 modules//devices/x86_64/processor.c:484 +#: modules/devices/x86/processor.c:155 #, c-format +msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" +msgstr "" + +#. /cache type, as appears in: Level 1 (Data) +#: modules/devices/x86/processor.c:170 +msgctxt "cache-type" +msgid "Data" +msgstr "" + +#. /cache type, as appears in: Level 1 (Instruction) +#: modules/devices/x86/processor.c:171 +msgctxt "cache-type" +msgid "Instruction" +msgstr "" + +#. /cache type, as appears in: Level 2 (Unified) +#: modules/devices/x86/processor.c:172 +msgctxt "cache-type" +msgid "Unified" +msgstr "" + +#: modules/devices/x86/processor.c:410 +msgid "Model Name" +msgstr "" + +#: modules/devices/x86/processor.c:411 +msgid "Family, model, stepping" +msgstr "Familie, Modell, Stufung" + +#: modules/devices/x86/processor.c:417 +msgid "Microcode Version" +msgstr "" + +#: modules/devices/x86/processor.c:418 +msgid "Configuration" +msgstr "Konfiguration" + +#: modules/devices/x86/processor.c:419 +msgid "Cache Size" +msgstr "Cache-Größe" + +#: modules/devices/x86/processor.c:419 +msgid "kb" +msgstr "" + +#: modules/devices/x86/processor.c:426 +msgid "Power Management" +msgstr "" + +#: modules/devices/x86/processor.c:427 +msgid "Bug Workarounds" +msgstr "" + +#: modules/devices/x86/processor.c:454 modules/devices/x86/processor.c:468 +msgid "Package Information" +msgstr "" + +#. /flag:fpu +#: modules/devices/x86/x86_data.c:43 +msgctxt "x86-flag" +msgid "Onboard FPU (floating point support)" +msgstr "" + +#. /flag:vme +#: modules/devices/x86/x86_data.c:44 +msgctxt "x86-flag" +msgid "Virtual 8086 mode enhancements" +msgstr "" + +#. /flag:de +#: modules/devices/x86/x86_data.c:45 +msgctxt "x86-flag" +msgid "Debugging Extensions (CR4.DE)" +msgstr "" + +#. /flag:pse +#: modules/devices/x86/x86_data.c:46 +msgctxt "x86-flag" +msgid "Page Size Extensions (4MB memory pages)" +msgstr "" + +#. /flag:tsc +#: modules/devices/x86/x86_data.c:47 +msgctxt "x86-flag" +msgid "Time Stamp Counter (RDTSC)" +msgstr "" + +#. /flag:msr +#: modules/devices/x86/x86_data.c:48 +msgctxt "x86-flag" +msgid "Model-Specific Registers (RDMSR, WRMSR)" +msgstr "" + +#. /flag:pae +#: modules/devices/x86/x86_data.c:49 +msgctxt "x86-flag" +msgid "Physical Address Extensions (support for more than 4GB of RAM)" +msgstr "" + +#. /flag:mce +#: modules/devices/x86/x86_data.c:50 +msgctxt "x86-flag" +msgid "Machine Check Exception" +msgstr "" + +#. /flag:cx8 +#: modules/devices/x86/x86_data.c:51 +msgctxt "x86-flag" +msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" +msgstr "" + +#. /flag:apic +#: modules/devices/x86/x86_data.c:52 +msgctxt "x86-flag" +msgid "Onboard APIC" +msgstr "" + +#. /flag:sep +#: modules/devices/x86/x86_data.c:53 +msgctxt "x86-flag" +msgid "SYSENTER/SYSEXIT" +msgstr "" + +#. /flag:mtrr +#: modules/devices/x86/x86_data.c:54 +msgctxt "x86-flag" +msgid "Memory Type Range Registers" +msgstr "" + +#. /flag:pge +#: modules/devices/x86/x86_data.c:55 +msgctxt "x86-flag" +msgid "Page Global Enable (global bit in PDEs and PTEs)" +msgstr "" + +#. /flag:mca +#: modules/devices/x86/x86_data.c:56 +msgctxt "x86-flag" +msgid "Machine Check Architecture" +msgstr "" + +#. /flag:cmov +#: modules/devices/x86/x86_data.c:57 +msgctxt "x86-flag" +msgid "CMOV instructions (conditional move) (also FCMOV)" +msgstr "" + +#. /flag:pat +#: modules/devices/x86/x86_data.c:58 +msgctxt "x86-flag" +msgid "Page Attribute Table" +msgstr "" + +#. /flag:pse36 +#: modules/devices/x86/x86_data.c:59 +msgctxt "x86-flag" +msgid "36-bit PSEs (huge pages)" +msgstr "" + +#. /flag:pn +#: modules/devices/x86/x86_data.c:60 +msgctxt "x86-flag" +msgid "Processor serial number" +msgstr "" + +#. /flag:clflush +#: modules/devices/x86/x86_data.c:61 +msgctxt "x86-flag" +msgid "Cache Line Flush instruction" +msgstr "" + +#. /flag:dts +#: modules/devices/x86/x86_data.c:62 +msgctxt "x86-flag" msgid "" -"[Processor]\n" -"Name=%s\n" -"Family, model, stepping=%d, %d, %d (%s)\n" -"Vendor=%s\n" -"[Configuration]\n" -"Cache Size=%dkb\n" -"Frequency=%.2fMHz\n" -"BogoMIPS=%.2f\n" -"Byte Order=%s\n" -"[Features]\n" -"FDIV Bug=%s\n" -"HLT Bug=%s\n" -"F00F Bug=%s\n" -"Coma Bug=%s\n" -"Has FPU=%s\n" -"[Cache]\n" -"%s\n" -"[Capabilities]\n" -"%s" +"Debug Store (buffer for debugging and profiling instructions), or " +"alternately: digital thermal sensor" msgstr "" -"[Prozessor]\n" -"Name=%s\n" -"Familie, Modell, Stufung=%d, %d, %d (%s)\n" -"Hersteller=%s\n" -"[Konfiguration]\n" -"Cache-Größe=%dkb\n" -"Taktfrequenz=%.2fMHz\n" -"BogoMIPS=%.2f\n" -"Byte-Reihenfolge=%s\n" -"[Funktionen]\n" -"FDIV-Bug=%s\n" -"HLT-Bug=%s\n" -"F00F-Bug=%s\n" -"Coma-Bug=%s\n" -"Hat FPU=%s\n" -"[Cache]\n" -"%s\n" -"[Fähigkeiten]\n" -"%s" -#: modules//devices/x86/processor.c:542 modules//devices/x86_64/processor.c:542 -#, c-format -msgid "%s$CPU%d$%s=%.2fMHz\n" -msgstr "%s$CPU%d$%s=%.2fMHz\n" +#. /flag:acpi +#: modules/devices/x86/x86_data.c:63 +msgctxt "x86-flag" +msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" +msgstr "" + +#. /flag:mmx +#: modules/devices/x86/x86_data.c:64 +msgctxt "x86-flag" +msgid "Multimedia Extensions" +msgstr "" + +#. /flag:fxsr +#: modules/devices/x86/x86_data.c:65 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" +msgstr "" + +#. /flag:sse +#: modules/devices/x86/x86_data.c:66 +msgctxt "x86-flag" +msgid "Intel SSE vector instructions" +msgstr "" + +#. /flag:sse2 +#: modules/devices/x86/x86_data.c:67 +msgctxt "x86-flag" +msgid "SSE2" +msgstr "" + +#. /flag:ss +#: modules/devices/x86/x86_data.c:68 +msgctxt "x86-flag" +msgid "CPU self snoop" +msgstr "" + +#. /flag:ht +#: modules/devices/x86/x86_data.c:69 +msgctxt "x86-flag" +msgid "Hyper-Threading" +msgstr "" + +#. /flag:tm +#: modules/devices/x86/x86_data.c:70 +msgctxt "x86-flag" +msgid "Automatic clock control (Thermal Monitor)" +msgstr "" + +#. /flag:ia64 +#: modules/devices/x86/x86_data.c:71 +msgctxt "x86-flag" +msgid "" +"Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " +"x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" +msgstr "" + +#. /flag:pbe +#: modules/devices/x86/x86_data.c:72 +msgctxt "x86-flag" +msgid "Pending Break Enable (PBE# pin) wakeup support" +msgstr "" + +#. /flag:syscall +#: modules/devices/x86/x86_data.c:75 +msgctxt "x86-flag" +msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" +msgstr "" + +#. /flag:mp +#: modules/devices/x86/x86_data.c:76 +msgctxt "x86-flag" +msgid "Multiprocessing Capable." +msgstr "" + +#. /flag:nx +#: modules/devices/x86/x86_data.c:77 +msgctxt "x86-flag" +msgid "Execute Disable" +msgstr "" + +#. /flag:mmxext +#: modules/devices/x86/x86_data.c:78 +msgctxt "x86-flag" +msgid "AMD MMX extensions" +msgstr "" + +#. /flag:fxsr_opt +#: modules/devices/x86/x86_data.c:79 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR optimizations" +msgstr "" + +#. /flag:pdpe1gb +#: modules/devices/x86/x86_data.c:80 +msgctxt "x86-flag" +msgid "One GB pages (allows hugepagesz=1G)" +msgstr "" + +#. /flag:rdtscp +#: modules/devices/x86/x86_data.c:81 +msgctxt "x86-flag" +msgid "Read Time-Stamp Counter and Processor ID" +msgstr "" + +#. /flag:lm +#: modules/devices/x86/x86_data.c:82 +msgctxt "x86-flag" +msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" +msgstr "" + +#. /flag:3dnow +#: modules/devices/x86/x86_data.c:83 +msgctxt "x86-flag" +msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" +msgstr "" + +#. /flag:3dnowext +#: modules/devices/x86/x86_data.c:84 +msgctxt "x86-flag" +msgid "AMD 3DNow! extensions" +msgstr "" + +#. /flag:recovery +#: modules/devices/x86/x86_data.c:86 +msgctxt "x86-flag" +msgid "CPU in recovery mode" +msgstr "" + +#. /flag:longrun +#: modules/devices/x86/x86_data.c:87 +msgctxt "x86-flag" +msgid "Longrun power control" +msgstr "" + +#. /flag:lrti +#: modules/devices/x86/x86_data.c:88 +msgctxt "x86-flag" +msgid "LongRun table interface" +msgstr "" + +#. /flag:cxmmx +#: modules/devices/x86/x86_data.c:90 +msgctxt "x86-flag" +msgid "Cyrix MMX extensions" +msgstr "" + +#. /flag:k6_mtrr +#: modules/devices/x86/x86_data.c:91 +msgctxt "x86-flag" +msgid "AMD K6 nonstandard MTRRs" +msgstr "" + +#. /flag:cyrix_arr +#: modules/devices/x86/x86_data.c:92 +msgctxt "x86-flag" +msgid "Cyrix ARRs (= MTRRs)" +msgstr "" + +#. /flag:centaur_mcr +#: modules/devices/x86/x86_data.c:93 +msgctxt "x86-flag" +msgid "Centaur MCRs (= MTRRs)" +msgstr "" + +#. /flag:constant_tsc +#: modules/devices/x86/x86_data.c:94 +msgctxt "x86-flag" +msgid "TSC ticks at a constant rate" +msgstr "" + +#. /flag:up +#: modules/devices/x86/x86_data.c:95 +msgctxt "x86-flag" +msgid "SMP kernel running on UP" +msgstr "" + +#. /flag:art +#: modules/devices/x86/x86_data.c:96 +msgctxt "x86-flag" +msgid "Always-Running Timer" +msgstr "" + +#. /flag:arch_perfmon +#: modules/devices/x86/x86_data.c:97 +msgctxt "x86-flag" +msgid "Intel Architectural PerfMon" +msgstr "" + +#. /flag:pebs +#: modules/devices/x86/x86_data.c:98 +msgctxt "x86-flag" +msgid "Precise-Event Based Sampling" +msgstr "" + +#. /flag:bts +#: modules/devices/x86/x86_data.c:99 +msgctxt "x86-flag" +msgid "Branch Trace Store" +msgstr "" + +#. /flag:rep_good +#: modules/devices/x86/x86_data.c:100 +msgctxt "x86-flag" +msgid "rep microcode works well" +msgstr "" + +#. /flag:acc_power +#: modules/devices/x86/x86_data.c:101 +msgctxt "x86-flag" +msgid "AMD accumulated power mechanism" +msgstr "" + +#. /flag:nopl +#: modules/devices/x86/x86_data.c:102 +msgctxt "x86-flag" +msgid "The NOPL (0F 1F) instructions" +msgstr "" + +#. /flag:xtopology +#: modules/devices/x86/x86_data.c:103 +msgctxt "x86-flag" +msgid "cpu topology enum extensions" +msgstr "" + +#. /flag:tsc_reliable +#: modules/devices/x86/x86_data.c:104 +msgctxt "x86-flag" +msgid "TSC is known to be reliable" +msgstr "" + +#. /flag:nonstop_tsc +#: modules/devices/x86/x86_data.c:105 +msgctxt "x86-flag" +msgid "TSC does not stop in C states" +msgstr "" + +#. /flag:extd_apicid +#: modules/devices/x86/x86_data.c:106 +msgctxt "x86-flag" +msgid "has extended APICID (8 bits)" +msgstr "" + +#. /flag:amd_dcm +#: modules/devices/x86/x86_data.c:107 +msgctxt "x86-flag" +msgid "multi-node processor" +msgstr "" + +#. /flag:aperfmperf +#: modules/devices/x86/x86_data.c:108 +msgctxt "x86-flag" +msgid "APERFMPERF" +msgstr "" + +#. /flag:eagerfpu +#: modules/devices/x86/x86_data.c:109 +msgctxt "x86-flag" +msgid "Non lazy FPU restore" +msgstr "" + +#. /flag:nonstop_tsc_s3 +#: modules/devices/x86/x86_data.c:110 +msgctxt "x86-flag" +msgid "TSC doesn't stop in S3 state" +msgstr "" + +#. /flag:mce_recovery +#: modules/devices/x86/x86_data.c:111 +msgctxt "x86-flag" +msgid "CPU has recoverable machine checks" +msgstr "" + +#. /flag:pni +#: modules/devices/x86/x86_data.c:114 +msgctxt "x86-flag" +msgid "SSE-3 (\"Prescott New Instructions\")" +msgstr "" + +#. /flag:pclmulqdq +#: modules/devices/x86/x86_data.c:115 +msgctxt "x86-flag" +msgid "" +"Perform a Carry-Less Multiplication of Quadword instruction - accelerator " +"for GCM)" +msgstr "" + +#. /flag:dtes64 +#: modules/devices/x86/x86_data.c:116 +msgctxt "x86-flag" +msgid "64-bit Debug Store" +msgstr "" + +#. /flag:monitor +#: modules/devices/x86/x86_data.c:117 +msgctxt "x86-flag" +msgid "Monitor/Mwait support (Intel SSE3 supplements)" +msgstr "" + +#. /flag:ds_cpl +#: modules/devices/x86/x86_data.c:118 +msgctxt "x86-flag" +msgid "CPL Qual. Debug Store" +msgstr "" + +#. /flag:vmx +#: modules/devices/x86/x86_data.c:119 +msgctxt "x86-flag" +msgid "Hardware virtualization, Intel VMX" +msgstr "" + +#. /flag:smx +#: modules/devices/x86/x86_data.c:120 +msgctxt "x86-flag" +msgid "Safer mode TXT (TPM support)" +msgstr "" + +#. /flag:est +#: modules/devices/x86/x86_data.c:121 +msgctxt "x86-flag" +msgid "Enhanced SpeedStep" +msgstr "" + +#. /flag:tm2 +#: modules/devices/x86/x86_data.c:122 +msgctxt "x86-flag" +msgid "Thermal Monitor 2" +msgstr "" + +#. /flag:ssse3 +#: modules/devices/x86/x86_data.c:123 +msgctxt "x86-flag" +msgid "Supplemental SSE-3" +msgstr "" + +#. /flag:cid +#: modules/devices/x86/x86_data.c:124 +msgctxt "x86-flag" +msgid "Context ID" +msgstr "" + +#. /flag:sdbg +#: modules/devices/x86/x86_data.c:125 +msgctxt "x86-flag" +msgid "silicon debug" +msgstr "" + +#. /flag:fma +#: modules/devices/x86/x86_data.c:126 +msgctxt "x86-flag" +msgid "Fused multiply-add" +msgstr "" + +#. /flag:cx16 +#: modules/devices/x86/x86_data.c:127 +msgctxt "x86-flag" +msgid "CMPXCHG16B" +msgstr "" + +#. /flag:xtpr +#: modules/devices/x86/x86_data.c:128 +msgctxt "x86-flag" +msgid "Send Task Priority Messages" +msgstr "" + +#. /flag:pdcm +#: modules/devices/x86/x86_data.c:129 +msgctxt "x86-flag" +msgid "Performance Capabilities" +msgstr "" + +#. /flag:pcid +#: modules/devices/x86/x86_data.c:130 +msgctxt "x86-flag" +msgid "Process Context Identifiers" +msgstr "" + +#. /flag:dca +#: modules/devices/x86/x86_data.c:131 +msgctxt "x86-flag" +msgid "Direct Cache Access" +msgstr "" + +#. /flag:sse4_1 +#: modules/devices/x86/x86_data.c:132 +msgctxt "x86-flag" +msgid "SSE-4.1" +msgstr "" + +#. /flag:sse4_2 +#: modules/devices/x86/x86_data.c:133 +msgctxt "x86-flag" +msgid "SSE-4.2" +msgstr "" + +#. /flag:x2apic +#: modules/devices/x86/x86_data.c:134 +msgctxt "x86-flag" +msgid "x2APIC" +msgstr "" + +#. /flag:movbe +#: modules/devices/x86/x86_data.c:135 +msgctxt "x86-flag" +msgid "Move Data After Swapping Bytes instruction" +msgstr "" + +#. /flag:popcnt +#: modules/devices/x86/x86_data.c:136 +msgctxt "x86-flag" +msgid "" +"Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." +"e. bit count)" +msgstr "" + +#. /flag:tsc_deadline_timer +#: modules/devices/x86/x86_data.c:137 +msgctxt "x86-flag" +msgid "Tsc deadline timer" +msgstr "" + +#. /flag:aes/aes-ni +#: modules/devices/x86/x86_data.c:138 +msgctxt "x86-flag" +msgid "Advanced Encryption Standard (New Instructions)" +msgstr "" + +#. /flag:xsave +#: modules/devices/x86/x86_data.c:139 +msgctxt "x86-flag" +msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" +msgstr "" + +#. /flag:avx +#: modules/devices/x86/x86_data.c:140 +msgctxt "x86-flag" +msgid "Advanced Vector Extensions" +msgstr "" + +#. /flag:f16c +#: modules/devices/x86/x86_data.c:141 +msgctxt "x86-flag" +msgid "16-bit fp conversions (CVT16)" +msgstr "" + +#. /flag:rdrand +#: modules/devices/x86/x86_data.c:142 +msgctxt "x86-flag" +msgid "Read Random Number from hardware random number generator instruction" +msgstr "" + +#. /flag:hypervisor +#: modules/devices/x86/x86_data.c:143 +msgctxt "x86-flag" +msgid "Running on a hypervisor" +msgstr "" + +#. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 +#. /flag:rng +#: modules/devices/x86/x86_data.c:145 +msgctxt "x86-flag" +msgid "Random Number Generator present (xstore)" +msgstr "" + +#. /flag:rng_en +#: modules/devices/x86/x86_data.c:146 +msgctxt "x86-flag" +msgid "Random Number Generator enabled" +msgstr "" + +#. /flag:ace +#: modules/devices/x86/x86_data.c:147 +msgctxt "x86-flag" +msgid "on-CPU crypto (xcrypt)" +msgstr "" + +#. /flag:ace_en +#: modules/devices/x86/x86_data.c:148 +msgctxt "x86-flag" +msgid "on-CPU crypto enabled" +msgstr "" + +#. /flag:ace2 +#: modules/devices/x86/x86_data.c:149 +msgctxt "x86-flag" +msgid "Advanced Cryptography Engine v2" +msgstr "" + +#. /flag:ace2_en +#: modules/devices/x86/x86_data.c:150 +msgctxt "x86-flag" +msgid "ACE v2 enabled" +msgstr "" + +#. /flag:phe +#: modules/devices/x86/x86_data.c:151 +msgctxt "x86-flag" +msgid "PadLock Hash Engine" +msgstr "" + +#. /flag:phe_en +#: modules/devices/x86/x86_data.c:152 +msgctxt "x86-flag" +msgid "PHE enabled" +msgstr "" + +#. /flag:pmm +#: modules/devices/x86/x86_data.c:153 +msgctxt "x86-flag" +msgid "PadLock Montgomery Multiplier" +msgstr "" + +#. /flag:pmm_en +#: modules/devices/x86/x86_data.c:154 +msgctxt "x86-flag" +msgid "PMM enabled" +msgstr "" + +#. /flag:lahf_lm +#: modules/devices/x86/x86_data.c:156 +msgctxt "x86-flag" +msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" +msgstr "" + +#. /flag:cmp_legacy +#: modules/devices/x86/x86_data.c:157 +msgctxt "x86-flag" +msgid "If yes HyperThreading not valid" +msgstr "" + +#. /flag:svm +#: modules/devices/x86/x86_data.c:158 +msgctxt "x86-flag" +msgid "\"Secure virtual machine\": AMD-V" +msgstr "" + +#. /flag:extapic +#: modules/devices/x86/x86_data.c:159 +msgctxt "x86-flag" +msgid "Extended APIC space" +msgstr "" + +#. /flag:cr8_legacy +#: modules/devices/x86/x86_data.c:160 +msgctxt "x86-flag" +msgid "CR8 in 32-bit mode" +msgstr "" + +#. /flag:abm +#: modules/devices/x86/x86_data.c:161 +msgctxt "x86-flag" +msgid "Advanced Bit Manipulation" +msgstr "" + +#. /flag:sse4a +#: modules/devices/x86/x86_data.c:162 +msgctxt "x86-flag" +msgid "SSE-4A" +msgstr "" + +#. /flag:misalignsse +#: modules/devices/x86/x86_data.c:163 +msgctxt "x86-flag" +msgid "" +"indicates if a general-protection exception (#GP) is generated when some " +"legacy SSE instructions operate on unaligned data. Also depends on CR0 and " +"Alignment Checking bit" +msgstr "" + +#. /flag:3dnowprefetch +#: modules/devices/x86/x86_data.c:164 +msgctxt "x86-flag" +msgid "3DNow prefetch instructions" +msgstr "" + +#. /flag:osvw +#: modules/devices/x86/x86_data.c:165 +msgctxt "x86-flag" +msgid "" +"indicates OS Visible Workaround, which allows the OS to work around " +"processor errata." +msgstr "" + +#. /flag:ibs +#: modules/devices/x86/x86_data.c:166 +msgctxt "x86-flag" +msgid "Instruction Based Sampling" +msgstr "" + +#. /flag:xop +#: modules/devices/x86/x86_data.c:167 +msgctxt "x86-flag" +msgid "extended AVX instructions" +msgstr "" + +#. /flag:skinit +#: modules/devices/x86/x86_data.c:168 +msgctxt "x86-flag" +msgid "SKINIT/STGI instructions" +msgstr "" + +#. /flag:wdt +#: modules/devices/x86/x86_data.c:169 +msgctxt "x86-flag" +msgid "Watchdog timer" +msgstr "" + +#. /flag:lwp +#: modules/devices/x86/x86_data.c:170 +msgctxt "x86-flag" +msgid "Light Weight Profiling" +msgstr "" + +#. /flag:fma4 +#: modules/devices/x86/x86_data.c:171 +msgctxt "x86-flag" +msgid "4 operands MAC instructions" +msgstr "" + +#. /flag:tce +#: modules/devices/x86/x86_data.c:172 +msgctxt "x86-flag" +msgid "translation cache extension" +msgstr "" + +#. /flag:nodeid_msr +#: modules/devices/x86/x86_data.c:173 +msgctxt "x86-flag" +msgid "NodeId MSR" +msgstr "" -#: modules//network.c:59 +#. /flag:tbm +#: modules/devices/x86/x86_data.c:174 +msgctxt "x86-flag" +msgid "Trailing Bit Manipulation" +msgstr "" + +#. /flag:topoext +#: modules/devices/x86/x86_data.c:175 +msgctxt "x86-flag" +msgid "Topology Extensions CPUID leafs" +msgstr "" + +#. /flag:perfctr_core +#: modules/devices/x86/x86_data.c:176 +msgctxt "x86-flag" +msgid "Core Performance Counter Extensions" +msgstr "" + +#. /flag:perfctr_nb +#: modules/devices/x86/x86_data.c:177 +msgctxt "x86-flag" +msgid "NB Performance Counter Extensions" +msgstr "" + +#. /flag:bpext +#: modules/devices/x86/x86_data.c:178 +msgctxt "x86-flag" +msgid "data breakpoint extension" +msgstr "" + +#. /flag:ptsc +#: modules/devices/x86/x86_data.c:179 +msgctxt "x86-flag" +msgid "performance time-stamp counter" +msgstr "" + +#. /flag:perfctr_l2 +#: modules/devices/x86/x86_data.c:180 +msgctxt "x86-flag" +msgid "L2 Performance Counter Extensions" +msgstr "" + +#. /flag:mwaitx +#: modules/devices/x86/x86_data.c:181 +msgctxt "x86-flag" +msgid "MWAIT extension (MONITORX/MWAITX)" +msgstr "" + +#. /flag:cpb +#: modules/devices/x86/x86_data.c:183 +msgctxt "x86-flag" +msgid "AMD Core Performance Boost" +msgstr "" + +#. /flag:epb +#: modules/devices/x86/x86_data.c:184 +msgctxt "x86-flag" +msgid "IA32_ENERGY_PERF_BIAS support" +msgstr "" + +#. /flag:hw_pstate +#: modules/devices/x86/x86_data.c:185 +msgctxt "x86-flag" +msgid "AMD HW-PState" +msgstr "" + +#. /flag:proc_feedback +#: modules/devices/x86/x86_data.c:186 +msgctxt "x86-flag" +msgid "AMD ProcFeedbackInterface" +msgstr "" + +#. /flag:intel_pt +#: modules/devices/x86/x86_data.c:187 +msgctxt "x86-flag" +msgid "Intel Processor Tracing" +msgstr "" + +#. /flag:tpr_shadow +#: modules/devices/x86/x86_data.c:189 +msgctxt "x86-flag" +msgid "Intel TPR Shadow" +msgstr "" + +#. /flag:vnmi +#: modules/devices/x86/x86_data.c:190 +msgctxt "x86-flag" +msgid "Intel Virtual NMI" +msgstr "" + +#. /flag:flexpriority +#: modules/devices/x86/x86_data.c:191 +msgctxt "x86-flag" +msgid "Intel FlexPriority" +msgstr "" + +#. /flag:ept +#: modules/devices/x86/x86_data.c:192 +msgctxt "x86-flag" +msgid "Intel Extended Page Table" +msgstr "" + +#. /flag:vpid +#: modules/devices/x86/x86_data.c:193 +msgctxt "x86-flag" +msgid "Intel Virtual Processor ID" +msgstr "" + +#. /flag:vmmcall +#: modules/devices/x86/x86_data.c:194 +msgctxt "x86-flag" +msgid "prefer VMMCALL to VMCALL" +msgstr "" + +#. /flag:fsgsbase +#: modules/devices/x86/x86_data.c:196 +msgctxt "x86-flag" +msgid "{RD/WR}{FS/GS}BASE instructions" +msgstr "" + +#. /flag:tsc_adjust +#: modules/devices/x86/x86_data.c:197 +msgctxt "x86-flag" +msgid "TSC adjustment MSR" +msgstr "" + +#. /flag:bmi1 +#: modules/devices/x86/x86_data.c:198 +msgctxt "x86-flag" +msgid "1st group bit manipulation extensions" +msgstr "" + +#. /flag:hle +#: modules/devices/x86/x86_data.c:199 +msgctxt "x86-flag" +msgid "Hardware Lock Elision" +msgstr "" + +#. /flag:avx2 +#: modules/devices/x86/x86_data.c:200 +msgctxt "x86-flag" +msgid "AVX2 instructions" +msgstr "" + +#. /flag:smep +#: modules/devices/x86/x86_data.c:201 +msgctxt "x86-flag" +msgid "Supervisor Mode Execution Protection" +msgstr "" + +#. /flag:bmi2 +#: modules/devices/x86/x86_data.c:202 +msgctxt "x86-flag" +msgid "2nd group bit manipulation extensions" +msgstr "" + +#. /flag:erms +#: modules/devices/x86/x86_data.c:203 +msgctxt "x86-flag" +msgid "Enhanced REP MOVSB/STOSB" +msgstr "" + +#. /flag:invpcid +#: modules/devices/x86/x86_data.c:204 +msgctxt "x86-flag" +msgid "Invalidate Processor Context ID" +msgstr "" + +#. /flag:rtm +#: modules/devices/x86/x86_data.c:205 +msgctxt "x86-flag" +msgid "Restricted Transactional Memory" +msgstr "" + +#. /flag:cqm +#: modules/devices/x86/x86_data.c:206 +msgctxt "x86-flag" +msgid "Cache QoS Monitoring" +msgstr "" + +#. /flag:mpx +#: modules/devices/x86/x86_data.c:207 +msgctxt "x86-flag" +msgid "Memory Protection Extension" +msgstr "" + +#. /flag:avx512f +#: modules/devices/x86/x86_data.c:208 +msgctxt "x86-flag" +msgid "AVX-512 foundation" +msgstr "" + +#. /flag:avx512dq +#: modules/devices/x86/x86_data.c:209 +msgctxt "x86-flag" +msgid "AVX-512 Double/Quad instructions" +msgstr "" + +#. /flag:rdseed +#: modules/devices/x86/x86_data.c:210 +msgctxt "x86-flag" +msgid "The RDSEED instruction" +msgstr "" + +#. /flag:adx +#: modules/devices/x86/x86_data.c:211 +msgctxt "x86-flag" +msgid "The ADCX and ADOX instructions" +msgstr "" + +#. /flag:smap +#: modules/devices/x86/x86_data.c:212 +msgctxt "x86-flag" +msgid "Supervisor Mode Access Prevention" +msgstr "" + +#. /flag:clflushopt +#: modules/devices/x86/x86_data.c:213 +msgctxt "x86-flag" +msgid "CLFLUSHOPT instruction" +msgstr "" + +#. /flag:clwb +#: modules/devices/x86/x86_data.c:214 +msgctxt "x86-flag" +msgid "CLWB instruction" +msgstr "" + +#. /flag:avx512pf +#: modules/devices/x86/x86_data.c:215 +msgctxt "x86-flag" +msgid "AVX-512 Prefetch" +msgstr "" + +#. /flag:avx512er +#: modules/devices/x86/x86_data.c:216 +msgctxt "x86-flag" +msgid "AVX-512 Exponential and Reciprocal" +msgstr "" + +#. /flag:avx512cd +#: modules/devices/x86/x86_data.c:217 +msgctxt "x86-flag" +msgid "AVX-512 Conflict Detection" +msgstr "" + +#. /flag:sha_ni +#: modules/devices/x86/x86_data.c:218 +msgctxt "x86-flag" +msgid "SHA1/SHA256 Instruction Extensions" +msgstr "" + +#. /flag:avx512bw +#: modules/devices/x86/x86_data.c:219 +msgctxt "x86-flag" +msgid "AVX-512 Byte/Word instructions" +msgstr "" + +#. /flag:avx512vl +#: modules/devices/x86/x86_data.c:220 +msgctxt "x86-flag" +msgid "AVX-512 128/256 Vector Length extensions" +msgstr "" + +#. /flag:xsaveopt +#: modules/devices/x86/x86_data.c:222 +msgctxt "x86-flag" +msgid "Optimized XSAVE" +msgstr "" + +#. /flag:xsavec +#: modules/devices/x86/x86_data.c:223 +msgctxt "x86-flag" +msgid "XSAVEC" +msgstr "" + +#. /flag:xgetbv1 +#: modules/devices/x86/x86_data.c:224 +msgctxt "x86-flag" +msgid "XGETBV with ECX = 1" +msgstr "" + +#. /flag:xsaves +#: modules/devices/x86/x86_data.c:225 +msgctxt "x86-flag" +msgid "XSAVES/XRSTORS" +msgstr "" + +#. /flag:cqm_llc +#: modules/devices/x86/x86_data.c:227 +msgctxt "x86-flag" +msgid "LLC QoS" +msgstr "" + +#. /flag:cqm_occup_llc +#: modules/devices/x86/x86_data.c:229 +msgctxt "x86-flag" +msgid "LLC occupancy monitoring" +msgstr "" + +#. /flag:cqm_mbm_total +#: modules/devices/x86/x86_data.c:230 +msgctxt "x86-flag" +msgid "LLC total MBM monitoring" +msgstr "" + +#. /flag:cqm_mbm_local +#: modules/devices/x86/x86_data.c:231 +msgctxt "x86-flag" +msgid "LLC local MBM monitoring" +msgstr "" + +#. /flag:clzero +#: modules/devices/x86/x86_data.c:233 +msgctxt "x86-flag" +msgid "CLZERO instruction" +msgstr "" + +#. /flag:irperf +#: modules/devices/x86/x86_data.c:234 +msgctxt "x86-flag" +msgid "instructions retired performance counter" +msgstr "" + +#. /flag:dtherm +#: modules/devices/x86/x86_data.c:236 +msgctxt "x86-flag" +msgid "digital thermal sensor" +msgstr "" + +#. /flag:ida +#: modules/devices/x86/x86_data.c:237 +msgctxt "x86-flag" +msgid "Intel Dynamic Acceleration" +msgstr "" + +#. /flag:arat +#: modules/devices/x86/x86_data.c:238 +msgctxt "x86-flag" +msgid "Always Running APIC Timer" +msgstr "" + +#. /flag:pln +#: modules/devices/x86/x86_data.c:239 +msgctxt "x86-flag" +msgid "Intel Power Limit Notification" +msgstr "" + +#. /flag:pts +#: modules/devices/x86/x86_data.c:240 +msgctxt "x86-flag" +msgid "Intel Package Thermal Status" +msgstr "" + +#. /flag:hwp +#: modules/devices/x86/x86_data.c:241 +msgctxt "x86-flag" +msgid "Intel Hardware P-states" +msgstr "" + +#. /flag:hwp_notify +#: modules/devices/x86/x86_data.c:242 +msgctxt "x86-flag" +msgid "HWP notification" +msgstr "" + +#. /flag:hwp_act_window +#: modules/devices/x86/x86_data.c:243 +msgctxt "x86-flag" +msgid "HWP Activity Window" +msgstr "" + +#. /flag:hwp_epp +#: modules/devices/x86/x86_data.c:244 +msgctxt "x86-flag" +msgid "HWP Energy Performance Preference" +msgstr "" + +#. /flag:hwp_pkg_req +#: modules/devices/x86/x86_data.c:245 +msgctxt "x86-flag" +msgid "HWP package-level request" +msgstr "" + +#. /flag:npt +#: modules/devices/x86/x86_data.c:247 +msgctxt "x86-flag" +msgid "AMD Nested Page Table support" +msgstr "" + +#. /flag:lbrv +#: modules/devices/x86/x86_data.c:248 +msgctxt "x86-flag" +msgid "AMD LBR Virtualization support" +msgstr "" + +#. /flag:svm_lock +#: modules/devices/x86/x86_data.c:249 +msgctxt "x86-flag" +msgid "AMD SVM locking MSR" +msgstr "" + +#. /flag:nrip_save +#: modules/devices/x86/x86_data.c:250 +msgctxt "x86-flag" +msgid "AMD SVM next_rip save" +msgstr "" + +#. /flag:tsc_scale +#: modules/devices/x86/x86_data.c:251 +msgctxt "x86-flag" +msgid "AMD TSC scaling support" +msgstr "" + +#. /flag:vmcb_clean +#: modules/devices/x86/x86_data.c:252 +msgctxt "x86-flag" +msgid "AMD VMCB clean bits support" +msgstr "" + +#. /flag:flushbyasid +#: modules/devices/x86/x86_data.c:253 +msgctxt "x86-flag" +msgid "AMD flush-by-ASID support" +msgstr "" + +#. /flag:decodeassists +#: modules/devices/x86/x86_data.c:254 +msgctxt "x86-flag" +msgid "AMD Decode Assists support" +msgstr "" + +#. /flag:pausefilter +#: modules/devices/x86/x86_data.c:255 +msgctxt "x86-flag" +msgid "AMD filtered pause intercept" +msgstr "" + +#. /flag:pfthreshold +#: modules/devices/x86/x86_data.c:256 +msgctxt "x86-flag" +msgid "AMD pause filter threshold" +msgstr "" + +#. /flag:avic +#: modules/devices/x86/x86_data.c:257 +msgctxt "x86-flag" +msgid "Virtual Interrupt Controller" +msgstr "" + +#. /flag:pku +#: modules/devices/x86/x86_data.c:259 +msgctxt "x86-flag" +msgid "Protection Keys for Userspace" +msgstr "" + +#. /flag:ospke +#: modules/devices/x86/x86_data.c:260 +msgctxt "x86-flag" +msgid "OS Protection Keys Enable" +msgstr "" + +#. /flag:overflow_recov +#: modules/devices/x86/x86_data.c:262 +msgctxt "x86-flag" +msgid "MCA overflow recovery support" +msgstr "" + +#. /flag:succor +#: modules/devices/x86/x86_data.c:263 +msgctxt "x86-flag" +msgid "uncorrectable error containment and recovery" +msgstr "" + +#. /flag:smca +#: modules/devices/x86/x86_data.c:264 +msgctxt "x86-flag" +msgid "Scalable MCA" +msgstr "" + +#. /bug:f00f +#: modules/devices/x86/x86_data.c:267 +msgctxt "x86-flag" +msgid "Intel F00F bug" +msgstr "" + +#. /bug:fdiv +#: modules/devices/x86/x86_data.c:268 +msgctxt "x86-flag" +msgid "FPU FDIV" +msgstr "" + +#. /bug:coma +#: modules/devices/x86/x86_data.c:269 +msgctxt "x86-flag" +msgid "Cyrix 6x86 coma" +msgstr "" + +#. /bug:tlb_mmatch +#: modules/devices/x86/x86_data.c:270 +msgctxt "x86-flag" +msgid "AMD Erratum 383" +msgstr "" + +#. /bug:apic_c1e +#. /bug:amd_e400 +#: modules/devices/x86/x86_data.c:271 modules/devices/x86/x86_data.c:280 +msgctxt "x86-flag" +msgid "AMD Erratum 400" +msgstr "" + +#. /bug:11ap +#: modules/devices/x86/x86_data.c:272 +msgctxt "x86-flag" +msgid "Bad local APIC aka 11AP" +msgstr "" + +#. /bug:fxsave_leak +#: modules/devices/x86/x86_data.c:273 +msgctxt "x86-flag" +msgid "FXSAVE leaks FOP/FIP/FOP" +msgstr "" + +#. /bug:clflush_monitor +#: modules/devices/x86/x86_data.c:274 +msgctxt "x86-flag" +msgid "AAI65, CLFLUSH required before MONITOR" +msgstr "" + +#. /bug:sysret_ss_attrs +#: modules/devices/x86/x86_data.c:275 +msgctxt "x86-flag" +msgid "SYSRET doesn't fix up SS attrs" +msgstr "" + +#. /bug:espfix +#: modules/devices/x86/x86_data.c:276 +msgctxt "x86-flag" +msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" +msgstr "" + +#. /bug:null_seg +#: modules/devices/x86/x86_data.c:277 +msgctxt "x86-flag" +msgid "Nulling a selector preserves the base" +msgstr "" + +#. /bug:swapgs_fence +#: modules/devices/x86/x86_data.c:278 +msgctxt "x86-flag" +msgid "SWAPGS without input dep on GS" +msgstr "" + +#. /bug:monitor +#: modules/devices/x86/x86_data.c:279 +msgctxt "x86-flag" +msgid "IPI required to wake up remote CPU" +msgstr "" + +#. /x86/kernel/cpu/powerflags.h +#. /flag:pm:ts +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "temperature sensor" +msgstr "" + +#. /flag:pm:fid +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "frequency id control" +msgstr "" + +#. /flag:pm:vid +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "voltage id control" +msgstr "" + +#. /flag:pm:ttp +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "thermal trip" +msgstr "" + +#. /flag:pm:tm +#: modules/devices/x86/x86_data.c:287 +msgctxt "x86-flag" +msgid "hardware thermal control" +msgstr "" + +#. /flag:pm:stc +#: modules/devices/x86/x86_data.c:288 +msgctxt "x86-flag" +msgid "software thermal control" +msgstr "" + +#. /flag:pm:100mhzsteps +#: modules/devices/x86/x86_data.c:289 +msgctxt "x86-flag" +msgid "100 MHz multiplier control" +msgstr "" + +#. /flag:pm:hwpstate +#: modules/devices/x86/x86_data.c:290 +msgctxt "x86-flag" +msgid "hardware P-state control" +msgstr "" + +#. /flag:pm:cpb +#: modules/devices/x86/x86_data.c:291 +msgctxt "x86-flag" +msgid "core performance boost" +msgstr "" + +#. /flag:pm:eff_freq_ro +#: modules/devices/x86/x86_data.c:292 +msgctxt "x86-flag" +msgid "Readonly aperf/mperf" +msgstr "" + +#. /flag:pm:proc_feedback +#: modules/devices/x86/x86_data.c:293 +msgctxt "x86-flag" +msgid "processor feedback interface" +msgstr "" + +#. /flag:pm:acc_power +#: modules/devices/x86/x86_data.c:294 +msgctxt "x86-flag" +msgid "accumulated power mechanism" +msgstr "" + +#: modules/network.c:59 msgid "Interfaces" msgstr "Schnittstellen" -#: modules//network.c:60 +#: modules/network.c:60 msgid "IP Connections" msgstr "IP-Verbindungen" -#: modules//network.c:61 +#: modules/network.c:61 msgid "Routing Table" msgstr "Routing-Tabelle" -#: modules//network.c:62 +#: modules/network.c:62 modules/network.c:303 msgid "ARP Table" msgstr "ARP-Tabelle" -#: modules//network.c:63 +#: modules/network.c:63 msgid "DNS Servers" msgstr "DNS-Server" -#: modules//network.c:64 +#: modules/network.c:64 msgid "Statistics" msgstr "Statistiken" -#: modules//network.c:65 +#: modules/network.c:65 msgid "Shared Directories" msgstr "Freigegebene Verzeichnisse" -#: modules//network.c:300 -#, c-format -msgid "" -"[ARP Table]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Interface\n" -"ColumnTitle$Extra1=MAC Address\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[ARP Table]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=IP-Adresse\n" -"ColumnTitle$Value=Schnittstelle\n" -"ColumnTitle$Extra1=MAC-Adresse\n" -"ShowColumnHeaders=true\n" +#: modules/network.c:304 modules/network.c:326 modules/network.c:357 +#: modules/network/net.c:477 +msgid "IP Address" +msgstr "IP-Adresse" -#: modules//network.c:321 -#, c-format -msgid "" -"[Name servers]\n" -"%s\n" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" +#: modules/network.c:304 modules/network.c:357 modules/network.c:374 +msgid "Interface" +msgstr "Schnittstelle" + +#: modules/network.c:304 +msgid "MAC Address" +msgstr "MAC-Adresse" + +#: modules/network.c:313 +msgid "SAMBA" msgstr "" -"[DNS-Server]\n" -"%s\n" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=IP-Adresse\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" -#: modules//network.c:331 -#, c-format -msgid "" -"[Connections]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Local Address\n" -"ColumnTitle$Value=Protocol\n" -"ColumnTitle$Extra1=Foreign Address\n" -"ColumnTitle$Extra2=State\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[Connections]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Lokale Adresse\n" -"ColumnTitle$Value=Protokoll\n" -"ColumnTitle$Extra1=Fremde Adresse\n" -"ColumnTitle$Extra2=Status\n" -"ShowColumnHeaders=true\n" - -#: modules//network.c:345 -#, c-format -msgid "" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Interface\n" -"ColumnTitle$Value=IP Address\n" -"ColumnTitle$Extra1=Sent\n" -"ColumnTitle$Extra2=Received\n" -"ShowColumnHeaders=true\n" -"%s" +#: modules/network.c:314 +msgid "NFS" msgstr "" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Schnittstelle\n" -"ColumnTitle$Value=IP-Adresse\n" -"ColumnTitle$Extra1=Gesendet\n" -"ColumnTitle$Extra2=Empfangen\n" -"ShowColumnHeaders=true\n" -"%s" -#: modules//network.c:361 -#, c-format -msgid "" -"[IP routing table]\n" -"%s\n" -"[$ShellParam$]\n" -"ViewType=0\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Destination / Gateway\n" -"ColumnTitle$Value=Interface\n" -"ColumnTitle$Extra1=Flags\n" -"ColumnTitle$Extra2=Mask\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[IP routing table]\n" -"%s\n" -"[$ShellParam$]\n" -"ViewType=0\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Ziel / Vorgaberoute\n" -"ColumnTitle$Value=Schnittstelle\n" -"ColumnTitle$Extra1=Flags\n" -"ColumnTitle$Extra2=Netz-Maske\n" -"ShowColumnHeaders=true\n" - -#: modules//network.c:399 +#: modules/network.c:325 +msgid "Name Servers" +msgstr "DNS-Server" + +#: modules/network.c:340 +msgid "Connections" +msgstr "" + +#: modules/network.c:341 +msgid "Local Address" +msgstr "Lokale Adresse" + +#: modules/network.c:341 +msgid "Protocol" +msgstr "Protokoll" + +#: modules/network.c:341 +msgid "Foreign Address" +msgstr "Fremde Adresse" + +#: modules/network.c:341 +msgid "State" +msgstr "Status" + +#: modules/network.c:357 +msgid "Sent" +msgstr "Gesendet" + +#: modules/network.c:357 +msgid "Received" +msgstr "Empfangen" + +#: modules/network.c:373 +msgid "IP routing table" +msgstr "" + +#: modules/network.c:374 +msgid "Destination/Gateway" +msgstr "Ziel/Vorgaberoute" + +#: modules/network.c:374 +msgid "Flags" +msgstr "" + +#: modules/network.c:374 modules/network/net.c:478 +msgid "Mask" +msgstr "Netz-Maske" + +#: modules/network.c:402 msgid "Network" msgstr "Netzwerk" -#: modules//network.c:432 +#: modules/network.c:435 msgid "Gathers information about this computer's network connection" msgstr "Sammelt Informationen über die Netzwerk-Verbindung dieses Computers" -#: hardinfo//hardinfo.c:54 -msgid "" -"Copyright (C) 2003-2009 Leandro A. F. Pereira. See COPYING for details.\n" -"\n" +#: modules/network/net.c:72 +msgctxt "wi-op-mode" +msgid "Auto" msgstr "" -#: hardinfo//hardinfo.c:56 -#, c-format -msgid "" -"Compile-time options:\n" -" Release version: %s (%s)\n" -" BinReloc enabled: %s\n" -" Data prefix: %s\n" -" Library prefix: %s\n" -" Compiled on: %s %s (%s)\n" +#: modules/network/net.c:73 +msgctxt "wi-op-mode" +msgid "Ad-Hoc" msgstr "" -#: hardinfo//hardinfo.c:74 -#, c-format -msgid "" -"Failed to find runtime data.\n" -"\n" -"• Is HardInfo correctly installed?\n" -"• See if %s and %s exists and you have read permission." +#: modules/network/net.c:74 +msgctxt "wi-op-mode" +msgid "Managed" msgstr "" -#: hardinfo//hardinfo.c:81 -#, c-format -msgid "" -"Modules:\n" -"%-20s%-15s%-12s\n" +#: modules/network/net.c:75 +msgctxt "wi-op-mode" +msgid "Master" msgstr "" -#: hardinfo//hardinfo.c:82 -msgid "File Name" +#: modules/network/net.c:76 +msgctxt "wi-op-mode" +msgid "Repeater" msgstr "" -#: hardinfo//hardinfo.c:82 -msgid "Name" -msgstr "Name" +#: modules/network/net.c:77 +msgctxt "wi-op-mode" +msgid "Secondary" +msgstr "" -#: hardinfo//hardinfo.c:82 -msgid "Version" +#: modules/network/net.c:78 +msgctxt "wi-op-mode" +msgid "(Unknown)" msgstr "" -#: hardinfo//hardinfo.c:135 -#, c-format -msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" +#: modules/network/net.c:242 modules/network/net.c:262 +#: modules/network/net.c:270 +msgctxt "net-if-type" +msgid "Ethernet" msgstr "" -#: hardinfo//hardinfo.c:163 -msgid "Don't know what to do. Exiting." +#: modules/network/net.c:243 +msgctxt "net-if-type" +msgid "Loopback" msgstr "" -#: hardinfo//util.c:104 hardinfo//util.c:107 hardinfo//util.c:112 -#, c-format -msgid "%d minute" -msgid_plural "%d minutes" -msgstr[0] "%d Minute" -msgstr[1] "%d Minuten" +#: modules/network/net.c:244 +msgctxt "net-if-type" +msgid "Point-to-Point" +msgstr "" -#: hardinfo//util.c:106 -#, c-format -msgid "%d hour, " -msgid_plural "%d hours, " -msgstr[0] "%d Stunde, " -msgstr[1] "%d Stunden, " +#: modules/network/net.c:245 modules/network/net.c:246 +#: modules/network/net.c:247 modules/network/net.c:248 +#: modules/network/net.c:272 +msgctxt "net-if-type" +msgid "Wireless" +msgstr "" -#: hardinfo//util.c:110 -#, c-format -msgid "%d day, " -msgid_plural "%d days, " -msgstr[0] "%d Tag, " -msgstr[1] "%d Tage, " +#: modules/network/net.c:249 +msgctxt "net-if-type" +msgid "Virtual Point-to-Point (TUN)" +msgstr "" -#: hardinfo//util.c:111 -#, c-format -msgid "%d hour and " -msgid_plural "%d hours and " -msgstr[0] "%d Stunde und " -msgstr[1] "%d Stunden und " +#: modules/network/net.c:250 +msgctxt "net-if-type" +msgid "Ethernet (TAP)" +msgstr "" -#: hardinfo//util.c:118 -#, c-format -msgid "%.1f B" -msgstr "%.1f Byte(s)" +#: modules/network/net.c:251 +msgctxt "net-if-type" +msgid "Parallel Line Internet Protocol" +msgstr "" -#: hardinfo//util.c:120 -#, c-format -msgid "%.1f KiB" -msgstr "%.1f KiB" +#: modules/network/net.c:252 +msgctxt "net-if-type" +msgid "Infrared" +msgstr "" -#: hardinfo//util.c:122 -#, c-format -msgid "%.1f MiB" -msgstr "%.1f MiB" +#: modules/network/net.c:253 modules/network/net.c:271 +msgctxt "net-if-type" +msgid "Serial Line Internet Protocol" +msgstr "" -#: hardinfo//util.c:124 -#, c-format -msgid "%.1f GiB" -msgstr "%.1f GiB" +#: modules/network/net.c:254 +msgctxt "net-if-type" +msgid "Integrated Services Digital Network" +msgstr "" -#: hardinfo//util.c:126 -#, c-format -msgid "%.1f TiB" -msgstr "%.1f TiB" +#: modules/network/net.c:255 +msgctxt "net-if-type" +msgid "IPv6-over-IPv4 Tunnel" +msgstr "" -#: hardinfo//util.c:128 -#, c-format -msgid "%.1f PiB" -msgstr "%.1f PiB" +#: modules/network/net.c:256 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface (NAT)" +msgstr "" -#: hardinfo//util.c:342 -msgid "Error" -msgstr "Fehler" +#: modules/network/net.c:257 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface" +msgstr "" -#: hardinfo//util.c:342 hardinfo//util.c:358 -msgid "Warning" -msgstr "Warnung" +#: modules/network/net.c:258 +msgctxt "net-if-type" +msgid "Personal Area Network (PAN)" +msgstr "" -#: hardinfo//util.c:357 -msgid "Fatal Error" -msgstr "Kritischer Fehler" +#: modules/network/net.c:259 +msgctxt "net-if-type" +msgid "Bluetooth" +msgstr "" -#: hardinfo//util.c:382 -msgid "creates a report and prints to standard output" +#: modules/network/net.c:260 +msgctxt "net-if-type" +msgid "Bridge Interface" msgstr "" -#: hardinfo//util.c:388 -msgid "chooses a report format (text, html)" +#: modules/network/net.c:261 +msgctxt "net-if-type" +msgid "Hamachi Virtual Personal Network" msgstr "" -#: hardinfo//util.c:394 -msgid "run benchmark; requires benchmark.so to be loaded" +#: modules/network/net.c:263 +msgctxt "net-if-type" +msgid "Intermediate Functional Block" msgstr "" -#: hardinfo//util.c:400 -msgid "lists modules" +#: modules/network/net.c:264 +msgctxt "net-if-type" +msgid "GRE Network Tunnel" msgstr "" -#: hardinfo//util.c:406 -msgid "specify module to load" +#: modules/network/net.c:265 +msgctxt "net-if-type" +msgid "Mesh Network" msgstr "" -#: hardinfo//util.c:412 -msgid "automatically load module dependencies" +#: modules/network/net.c:266 +msgctxt "net-if-type" +msgid "Wireless Master Interface" msgstr "" -#: hardinfo//util.c:419 -msgid "run in XML-RPC server mode" +#: modules/network/net.c:267 +msgctxt "net-if-type" +msgid "VirtualBox Virtual Network Interface" msgstr "" -#: hardinfo//util.c:426 -msgid "shows program version and quit" +#: modules/network/net.c:273 +msgctxt "net-if-type" +msgid "Wireless (WAN)" msgstr "" -#: hardinfo//util.c:431 -msgid "- System Profiler and Benchmark tool" -msgstr "- System-Profiler und Benchmark-Werkzeug" +#: modules/network/net.c:275 +msgctxt "net-if-type" +msgid "(Unknown)" +msgstr "" -#: hardinfo//util.c:441 -#, c-format -msgid "" -"Unrecognized arguments.\n" -"Try ``%s --help'' for more information.\n" +#: modules/network/net.c:348 modules/network/net.c:358 +msgid "Network Interfaces" msgstr "" -#: hardinfo//util.c:507 -#, c-format -msgid "Couldn't find a Web browser to open URL %s." -msgstr "Konnte keinen Web-Browser finden, um die URL %s zu öffnen." +#: modules/network/net.c:348 +msgid "None Found" +msgstr "" -#: hardinfo//util.c:854 -#, c-format -msgid "Module \"%s\" depends on module \"%s\", load it?" +#: modules/network/net.c:400 modules/network/net.c:422 +#: modules/network/net.c:423 +msgid "MiB" msgstr "" -#: hardinfo//util.c:877 -#, c-format -msgid "Module \"%s\" depends on module \"%s\"." +#: modules/network/net.c:414 +msgid "Network Adapter Properties" msgstr "" -#: hardinfo//util.c:922 -#, c-format -msgid "No module could be loaded. Check permissions on \"%s\" and try again." +#: modules/network/net.c:415 +msgid "Interface Type" msgstr "" -#: hardinfo//util.c:926 -msgid "" -"No module could be loaded. Please use hardinfo -l to list all available " -"modules and try again with a valid module list." +#: modules/network/net.c:416 +msgid "Hardware Address (MAC)" msgstr "" -#: hardinfo//util.c:1102 -#, c-format -msgid "Scanning: %s..." +#: modules/network/net.c:420 +msgid "MTU" +msgstr "" + +#: modules/network/net.c:421 +msgid "Transfer Details" +msgstr "" + +#: modules/network/net.c:422 +msgid "Bytes Received" +msgstr "" + +#: modules/network/net.c:423 +msgid "Bytes Sent" +msgstr "" + +#: modules/network/net.c:440 modules/network/net.c:462 +#: modules/network/net.c:463 +msgid "dBm" +msgstr "" + +#: modules/network/net.c:440 +msgid "mW" +msgstr "" + +#: modules/network/net.c:454 +msgid "Wireless Properties" +msgstr "" + +#: modules/network/net.c:455 +msgid "Network Name (SSID)" +msgstr "" + +#: modules/network/net.c:456 +msgid "Bit Rate" +msgstr "" + +#: modules/network/net.c:456 +msgid "Mb/s" +msgstr "" + +#: modules/network/net.c:457 +msgid "Transmission Power" +msgstr "" + +#: modules/network/net.c:459 +msgid "Status" +msgstr "" + +#: modules/network/net.c:460 +msgid "Link Quality" +msgstr "" + +#: modules/network/net.c:461 +msgid "Signal / Noise" +msgstr "" + +#: modules/network/net.c:476 +msgid "Internet Protocol (IPv4)" +msgstr "" + +#: modules/network/net.c:477 modules/network/net.c:478 +#: modules/network/net.c:480 +msgid "(Not set)" +msgstr "" + +#: modules/network/net.c:479 +msgid "Broadcast Address" msgstr "" + +#~ msgid "CPU Clock" +#~ msgstr "CPU-Takt" + +#~ msgid "Desktop Environment" +#~ msgstr "Desktop-Umgebung" + +#~ msgid "%s$CPU%d$%s=%.2fMHz\n" +#~ msgstr "%s$CPU%d$%s=%.2fMHz\n" @@ -7,304 +7,347 @@ msgid "" msgstr "" "Project-Id-Version: hardinfo\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-01-05 17:29+0100\n" -"PO-Revision-Date: 2013-02-18 17:11-0300\n" -"Last-Translator: Fernando López <flopez@linti.unlp.edu.ar>\n" +"POT-Creation-Date: 2017-08-14 22:23-0500\n" +"PO-Revision-Date: 2017-08-04 00:00-0430\n" +"Last-Translator: PICCORO Lenz McKAY <mckaygerhard@gmail.com>\n" "Language-Team: Fernando López <soportelihuen@linti.unlp.edu.ar>\n" -"Language: Spanish\n" +"Language: es\n" +"X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Spanish\n" -#: shell//report.c:492 -msgid "Save File" -msgstr "Guardar archivo" - -#: shell//report.c:616 -msgid "Cannot create ReportContext. Programming bug?" -msgstr "No se puede crear ReportContext. ¿Error del programa?" - -#: shell//report.c:634 -msgid "Open the report with your web browser?" -msgstr "¿Abrir el reporte en el navegador web?" +#. / %d will be latest year of copyright +#: hardinfo/hardinfo.c:49 +#, c-format +msgid "" +"Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n" +"\n" +msgstr "" +"Copyright (C) 2003-%d Leandro A. F. Pereira. Vea COPYING para más detalles.\n" +"\n" -#: shell//report.c:662 -msgid "Generating report..." -msgstr "Generando reporte..." +#: hardinfo/hardinfo.c:51 +#, c-format +msgid "" +"Compile-time options:\n" +" Release version: %s (%s)\n" +" BinReloc enabled: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compiled for: %s\n" +msgstr "" +"Opciones de compilado:\n" +" \"Release\" versión: %s (%s)\n" +" BinReloc habilitado: %s\n" +" Prefijo de datos: %s\n" +" Prefijo de bibliotecas: %s\n" +" Compilado en: %s\n" -#: shell//report.c:672 -msgid "Report saved." -msgstr "Reporte guardado." +#: hardinfo/hardinfo.c:57 hardinfo/hardinfo.c:58 modules/computer.c:605 +#: modules/devices/inputdevices.c:128 modules/devices/pci.c:112 +#: modules/devices/printers.c:138 +msgid "Yes" +msgstr "Sí" -#: shell//report.c:674 -msgid "Error while creating the report." -msgstr "Error creando el reporte." +#: hardinfo/hardinfo.c:58 modules/computer.c:605 modules/devices/pci.c:112 +#: modules/devices/printers.c:138 +msgid "No" +msgstr "_No" -#: shell//report.c:776 -msgid "Generate Report" -msgstr "Generar reporte" +#: hardinfo/hardinfo.c:69 +#, c-format +msgid "" +"Failed to find runtime data.\n" +"\n" +"• Is HardInfo correctly installed?\n" +"• See if %s and %s exists and you have read permission." +msgstr "" +"Falló en encontrar datos del programa.\n" +"\n" +"• ¿HardInfo está correctamente instalado?\n" +"• Vea si %s y %s existen y tenga accesos para lectura." -#: shell//report.c:793 +#: hardinfo/hardinfo.c:76 +#, c-format msgid "" -"<big><b>Generate Report</b></big>\n" -"Please choose the information that you wish to view in your report:" +"Modules:\n" +"%-20s %-15s %-12s\n" msgstr "" -"<big><b>Generar reporte</b></big>\n" -"Por favor elija la información que desea ver en el reporte:" +"Módulos:\n" +"%-20s %-15s %-12s\n" -#: shell//report.c:853 -msgid "Select _None" -msgstr "_Deseleccionar todo" +#: hardinfo/hardinfo.c:77 +msgid "File Name" +msgstr "Nombre de archivo" -#: shell//report.c:860 -msgid "Select _All" -msgstr "_Seleccionar todo" +#: hardinfo/hardinfo.c:77 modules/computer.c:534 modules/computer.c:562 +#: modules/computer.c:630 modules/computer/languages.c:104 +#: modules/computer/modules.c:146 modules/devices/arm/processor.c:336 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:116 +#: modules/devices/pci.c:215 modules/devices/sh/processor.c:84 +#: modules/devices/x86/processor.c:455 modules/network.c:326 +msgid "Name" +msgstr "Nombre" -#: shell//report.c:878 -msgid "_Generate" -msgstr "_Generar" +#: hardinfo/hardinfo.c:77 modules/computer.c:296 modules/computer.c:505 +#: modules/computer.c:507 modules/computer.c:595 modules/computer.c:603 +#: modules/devices/inputdevices.c:121 +msgid "Version" +msgstr "Versión" -#: shell//menu.c:35 -msgid "_Information" -msgstr "_Información" +#: hardinfo/hardinfo.c:124 +#, c-format +msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" +msgstr "Benchmark desconocido ``%s'' o no se cargó libbenchmark.so" -#: shell//menu.c:36 -msgid "_Remote" -msgstr "_Remoto" +#: hardinfo/hardinfo.c:152 +msgid "Don't know what to do. Exiting." +msgstr "No se puede determinar que hacer. Saliendo." -#: shell//menu.c:37 -msgid "_View" -msgstr "_Ver" +#: hardinfo/util.c:104 modules/computer/uptime.c:53 +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d día" +msgstr[1] "%d días" -#: shell//menu.c:38 -msgid "_Help" -msgstr "_Ayuda" +#: hardinfo/util.c:105 modules/computer/uptime.c:54 +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d horas" -#: shell//menu.c:39 -msgid "About _Modules" -msgstr "Acerca de los _módulos" +#: hardinfo/util.c:106 modules/computer/uptime.c:55 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutos" -#: shell//menu.c:43 -msgid "Generate _Report" -msgstr "Generar _reporte" +#: hardinfo/util.c:107 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "%d segundo" +msgstr[1] "%d segundos" -#: shell//menu.c:48 -msgid "_Network Updater..." -msgstr "_Actualizador por red..." +#: hardinfo/util.c:128 +#, c-format +msgid "%.1f B" +msgstr "%.1f B" -#: shell//menu.c:53 -msgid "_Open..." -msgstr "_Abrir..." +#: hardinfo/util.c:130 +#, c-format +msgid "%.1f KiB" +msgstr "%.1f KiB" -#: shell//menu.c:58 -msgid "_Connect to..." -msgstr "_Conectar a..." +#: hardinfo/util.c:132 +#, c-format +msgid "%.1f MiB" +msgstr "%.1f MiB" -#: shell//menu.c:63 -msgid "_Manage hosts..." -msgstr "_Configurar hosts..." +#: hardinfo/util.c:134 +#, c-format +msgid "%.1f GiB" +msgstr "%.1f GiB" -#: shell//menu.c:68 -msgid "_Local computer" -msgstr "_Equipo local" +#: hardinfo/util.c:136 +#, c-format +msgid "%.1f TiB" +msgstr "%.1f TiB" -#: shell//menu.c:73 -msgid "_Copy to Clipboard" -msgstr "_Copiar al portapapeles" +#: hardinfo/util.c:138 +#, c-format +msgid "%.1f PiB" +msgstr "%.1f PiB" -#: shell//menu.c:74 -msgid "Copy to clipboard" -msgstr "Copiar al portapapeles" +#: hardinfo/util.c:361 +msgid "Error" +msgstr "Error" -#: shell//menu.c:78 -msgid "_Save image as..." -msgstr "_Guardar imagen como..." +#: hardinfo/util.c:361 hardinfo/util.c:377 +msgid "Warning" +msgstr "Advertencia" -#: shell//menu.c:83 -msgid "_Refresh" -msgstr "_Refrescar" +#: hardinfo/util.c:376 +msgid "Fatal Error" +msgstr "Error fatal" -#: shell//menu.c:88 -msgid "Contents" -msgstr "Contenidos" +#: hardinfo/util.c:401 +msgid "creates a report and prints to standard output" +msgstr "crea un reporte y lo imprime en la salida estándar" -#: shell//menu.c:93 -#: shell//shell.c:1790 -#: shell//shell.c:1807 -msgid "Context help" -msgstr "Ayuda contextual" +#: hardinfo/util.c:407 +msgid "chooses a report format (text, html)" +msgstr "elige un formato para el reporte (texto, html)" -#: shell//menu.c:98 -msgid "_Open HardInfo Web Site" -msgstr "_Abrir sitio web de Hardinfo" +#: hardinfo/util.c:413 +msgid "run benchmark; requires benchmark.so to be loaded" +msgstr "correr benchmark; requiere benchmark.so para ser cargado" -#: shell//menu.c:103 -msgid "_Report bug" -msgstr "_Reportar un error" +#: hardinfo/util.c:419 +msgid "lists modules" +msgstr "lista los módulos" -#: shell//menu.c:108 -msgid "_Donate to the project" -msgstr "_Donar al proyecto" +#: hardinfo/util.c:425 +msgid "specify module to load" +msgstr "especificar módulo a cargar" -#: shell//menu.c:113 -msgid "_About HardInfo" -msgstr "_Acerca de Hardinfo" +#: hardinfo/util.c:431 +msgid "automatically load module dependencies" +msgstr "cargar automáticamente las dependencias de los módulos" -#: shell//menu.c:114 -msgid "Displays program version information" -msgstr "Muestra la información de versión del programa" +#: hardinfo/util.c:438 +msgid "run in XML-RPC server mode" +msgstr "correr en modo servidor XML-RPC" -#: shell//menu.c:118 -msgid "_Quit" -msgstr "_Salir" +#: hardinfo/util.c:445 +msgid "shows program version and quit" +msgstr "muestra la versión del programa y sale" -#: shell//menu.c:125 -msgid "_Side Pane" -msgstr "_Panel lateral" +#: hardinfo/util.c:450 +msgid "- System Profiler and Benchmark tool" +msgstr "- Analizador de sistema y herramienta de benchmark" -#: shell//menu.c:126 -msgid "Toggles side pane visibility" -msgstr "Cambia la visibilidad del panel lateral" +#: hardinfo/util.c:460 +#, c-format +msgid "" +"Unrecognized arguments.\n" +"Try ``%s --help'' for more information.\n" +msgstr "" +"Argumentos no reconocidos.\n" +"Intente ``%s --help'' para más información.\n" -#: shell//menu.c:129 -msgid "_Toolbar" -msgstr "_Barra de herramientas" +#: hardinfo/util.c:526 +#, c-format +msgid "Couldn't find a Web browser to open URL %s." +msgstr "No se pudo encontrar un navegador Web para abrir la URL %s." -#: shell//menu.c:133 -msgid "_Accept connections" -msgstr "_Aceptar conexiones" +#: hardinfo/util.c:875 +#, c-format +msgid "Module \"%s\" depends on module \"%s\", load it?" +msgstr "El módulo \"%s\" depende del módulo \"%s\", ¿desea cargarlo?" -#: shell//callbacks.c:71 +#: hardinfo/util.c:898 #, c-format -msgid "Remote: <b>%s</b>" -msgstr "Remoto: <b>%s</b>" - -#: shell//callbacks.c:117 -msgid "Disconnecting..." -msgstr "Desconectando..." - -#: shell//callbacks.c:120 -msgid "Unloading modules..." -msgstr "Descargando módulos..." - -#: shell//callbacks.c:123 -msgid "Loading local modules..." -msgstr "Cargando módulos locales..." - -#: shell//callbacks.c:130 -#: shell//callbacks.c:162 -#: shell//shell.c:314 -#: shell//shell.c:814 -#: shell//shell.c:1796 -#: modules//benchmark.c:431 -#: modules//benchmark.c:439 -#: hardinfo//util.c:1106 -msgid "Done." -msgstr "Hecho." +msgid "Module \"%s\" depends on module \"%s\"." +msgstr "El módulo \"%s\" depende del módulo \"%s\"." -#: shell//callbacks.c:142 -msgid "Save Image" -msgstr "Guardar imagen" +#: hardinfo/util.c:943 +#, c-format +msgid "No module could be loaded. Check permissions on \"%s\" and try again." +msgstr "" +"No se puede cargar ningún módulo. Verifique los permisos en \"%s\" y pruebe " +"de nuevo." -#: shell//callbacks.c:158 -msgid "Saving image..." -msgstr "Guardando imagen" +#: hardinfo/util.c:947 +msgid "" +"No module could be loaded. Please use hardinfo -l to list all available " +"modules and try again with a valid module list." +msgstr "" +"No se pudo cargar ningún módulo. Por favor use hardinfo -l para listar " +"todoslos módulos disponibles e intente de nuevo con una lista válida de " +"módulos." -#: shell//callbacks.c:236 -msgid "No context help available." -msgstr "No hay ayuda contextual disponible" +#: hardinfo/util.c:1024 +#, c-format +msgid "Scanning: %s..." +msgstr "Escaneando: %s..." -#: shell//callbacks.c:318 +#: hardinfo/util.c:1034 shell/shell.c:301 shell/shell.c:760 shell/shell.c:1795 +#: modules/benchmark.c:449 modules/benchmark.c:457 +msgid "Done." +msgstr "Hecho." + +#: shell/callbacks.c:117 #, c-format msgid "%s Module" msgstr "%s módulo" -#: shell//callbacks.c:325 +#: shell/callbacks.c:128 #, c-format msgid "" "Written by %s\n" "Licensed under %s" msgstr "" "Escrito por %s\n" -"Licencia %s" +"Licencia bajo %s" -#: shell//callbacks.c:339 +#: shell/callbacks.c:142 #, c-format msgid "No about information is associated with the %s module." msgstr "No hay información \"acerca de\" asociada al módulo %s." -#: shell//callbacks.c:353 +#: shell/callbacks.c:158 msgid "Author:" msgstr "Autor:" -#: shell//callbacks.c:356 +#: shell/callbacks.c:161 msgid "Contributors:" msgstr "Contribuyentes:" -#: shell//callbacks.c:360 +#: shell/callbacks.c:166 msgid "Based on work by:" msgstr "Basado en el trabajo de:" -#: shell//callbacks.c:361 +#: shell/callbacks.c:167 msgid "MD5 implementation by Colin Plumb (see md5.c for details)" msgstr "Implementación de MD5 por Colin Plumb (ver md5.c para detalles)" -#: shell//callbacks.c:362 +#: shell/callbacks.c:168 msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" msgstr "Implementación de SHA1 por Steve Reid (ver sha1.c para detalles)" -#: shell//callbacks.c:363 +#: shell/callbacks.c:169 msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" msgstr "" "Implementación de Blowfish por Paul Kocher (ver blowfich.c para detalles)" -#: shell//callbacks.c:364 +#: shell/callbacks.c:170 msgid "Raytracing benchmark by John Walker (see fbench.c for details)" msgstr "" "Benchmark de trazado de rayos por John Walker (ver fbench.c para detalles)" -#: shell//callbacks.c:365 +#: shell/callbacks.c:171 msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" msgstr "Benchmark de FFT por Scott Robert Ladd (ver fftbench.c para detalles)" -#: shell//callbacks.c:366 +#: shell/callbacks.c:172 msgid "Some code partly based on x86cpucaps by Osamu Kayasono" msgstr "Parte del código parcialmente basado en x86cpucaps por Osamu Kayasono" -#: shell//callbacks.c:367 +#: shell/callbacks.c:173 msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" msgstr "Lista de proveedores basada en GtkSysInfo por Pissens Sebastien" -#: shell//callbacks.c:368 +#: shell/callbacks.c:174 msgid "DMI support based on code by Stewart Adam" msgstr "Soporte DMI basado en código de Stewart Adam" -#: shell//callbacks.c:369 +#: shell/callbacks.c:175 msgid "SCSI support based on code by Pascal F. Martin" msgstr "Soporte SCSI basado en código de Pascal F. Martin" -#: shell//callbacks.c:373 -msgid "Jakub Szypulka" -msgstr "" - -#: shell//callbacks.c:374 +#: shell/callbacks.c:180 msgid "Tango Project" msgstr "Proyecto Tango" -#: shell//callbacks.c:375 +#: shell/callbacks.c:181 msgid "The GNOME Project" msgstr "El proyecto GNOME" -#: shell//callbacks.c:376 +#: shell/callbacks.c:182 msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" msgstr "VMWare, Inc. (icono USB de VMWare Workstation 6)" -#: shell//callbacks.c:387 +#: shell/callbacks.c:200 msgid "System information and benchmark tool" -msgstr "Herramienta de información del sistema y benchmark" +msgstr "Herramienta de Informacion y Pruebas del Sistema" -#: shell//callbacks.c:392 +#: shell/callbacks.c:205 msgid "" "HardInfo is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " @@ -320,39 +363,171 @@ msgid "" "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" -#: shell//shell.c:407 +#: shell/callbacks.c:220 +msgid "translator-credits" +msgstr "" + +#: shell/menu.c:35 +msgid "_Information" +msgstr "_Información" + +#: shell/menu.c:36 +msgid "_Remote" +msgstr "_Remoto" + +#: shell/menu.c:37 +msgid "_View" +msgstr "_Ver" + +#: shell/menu.c:38 +msgid "_Help" +msgstr "_Ayuda" + +#: shell/menu.c:39 +msgid "About _Modules" +msgstr "Acerca de los _módulos" + +#: shell/menu.c:43 +msgid "Generate _Report" +msgstr "Generar _reporte" + +#: shell/menu.c:48 +msgid "_Network Updater..." +msgstr "_Actualizador por red..." + +#: shell/menu.c:53 +msgid "_Open..." +msgstr "_Abrir..." + +#: shell/menu.c:58 +msgid "_Copy to Clipboard" +msgstr "_Copiar al portapapeles" + +#: shell/menu.c:59 +msgid "Copy to clipboard" +msgstr "Copiar al portapapeles" + +#: shell/menu.c:63 +msgid "_Refresh" +msgstr "_Refrescar" + +#: shell/menu.c:68 +msgid "_Open HardInfo Web Site" +msgstr "_Abrir sitio web de Hardinfo" + +#: shell/menu.c:73 +msgid "_Report bug" +msgstr "_Reportar un error" + +#: shell/menu.c:78 +msgid "_About HardInfo" +msgstr "_Acerca de Hardinfo" + +#: shell/menu.c:79 +msgid "Displays program version information" +msgstr "Muestra la información de versión del programa" + +#: shell/menu.c:83 +msgid "_Quit" +msgstr "_Salir" + +#: shell/menu.c:90 +msgid "_Side Pane" +msgstr "_Panel lateral" + +#: shell/menu.c:91 +msgid "Toggles side pane visibility" +msgstr "Cambia la visibilidad del panel lateral" + +#: shell/menu.c:94 +msgid "_Toolbar" +msgstr "_Barra de herramientas" + +#: shell/report.c:494 shell/report.c:502 +msgid "Save File" +msgstr "Guardar archivo" + +#: shell/report.c:629 +msgid "Cannot create ReportContext. Programming bug?" +msgstr "No se puede crear ReportContext. ¿Error del programa?" + +#: shell/report.c:648 +msgid "Open the report with your web browser?" +msgstr "¿Abrir el reporte en el navegador web?" + +#: shell/report.c:682 +msgid "Generating report..." +msgstr "Generando reporte..." + +#: shell/report.c:692 +msgid "Report saved." +msgstr "Reporte guardado." + +#: shell/report.c:694 +msgid "Error while creating the report." +msgstr "Error creando el reporte." + +#: shell/report.c:796 +msgid "Generate Report" +msgstr "Generar reporte" + +#: shell/report.c:821 +msgid "" +"<big><b>Generate Report</b></big>\n" +"Please choose the information that you wish to view in your report:" +msgstr "" +"<big><b>Generar reporte</b></big>\n" +"Por favor elija la información que desea ver en el reporte:" + +#: shell/report.c:893 +msgid "Select _None" +msgstr "_Deseleccionar todo" + +#: shell/report.c:904 +msgid "Select _All" +msgstr "_Seleccionar todo" + +#: shell/report.c:929 shell/syncmanager.c:748 +msgid "_Cancel" +msgstr "_Cancelar" + +#: shell/report.c:939 +msgid "_Generate" +msgstr "_Generar" + +#: shell/shell.c:402 #, c-format msgid "%s - System Information" msgstr "%s - Información del sistema" -#: shell//shell.c:412 +#: shell/shell.c:407 msgid "System Information" msgstr "Información del sistema" -#: shell//shell.c:801 +#: shell/shell.c:747 msgid "Loading modules..." msgstr "Cargando módulos..." -#: shell//shell.c:1650 +#: shell/shell.c:1660 #, c-format msgid "<b>%s → Summary</b>" msgstr "<b>%s → Resumen</b>" -#: shell//shell.c:1758 +#: shell/shell.c:1769 msgid "Updating..." msgstr "Actualizando..." -#: shell//syncmanager.c:69 +#: shell/syncmanager.c:69 msgid "" "<big><b>Synchronize with Central Database</b></big>\n" "The following information may be synchronized with the HardInfo central " "database." msgstr "" "<big><b>Sincronizar con base de datos central</b></big>\n" -"La siguiente información puede ser sincronizada con la base de datos " -"central de Hardinfo." +"La siguiente información puede ser sincronizada con la base de datos central " +"de Hardinfo." -#: shell//syncmanager.c:72 +#: shell/syncmanager.c:72 msgid "" "<big><b>Synchronizing</b></big>\n" "This may take some time." @@ -360,25 +535,23 @@ msgstr "" "<big><b>Sincronizando</b></big>\n" "Esto puede tomar algún tiempo." -#: shell//syncmanager.c:132 +#: shell/syncmanager.c:132 msgid "" "HardInfo was compiled without libsoup support. (Network Updater requires it.)" msgstr "" -"HardInfo fue compilado sin soporte para libsoup. (El actualizador por red lo " +"HardInfo fue compilado sin soporte libsoup. (El actualizador por red lo " "requiere.)" -#: shell//syncmanager.c:161 -#: shell//syncmanager.c:185 +#: shell/syncmanager.c:161 shell/syncmanager.c:189 #, c-format msgid "%s (error #%d)" msgstr "%s (error #%d)" -#: shell//syncmanager.c:170 -#: shell//syncmanager.c:194 +#: shell/syncmanager.c:170 shell/syncmanager.c:198 msgid "Could not parse XML-RPC response" msgstr "No se pudo procesar la respuesta XML-RPC" -#: shell//syncmanager.c:267 +#: shell/syncmanager.c:280 #, c-format msgid "" "Server says it supports API version %d, but this version of HardInfo only " @@ -387,25 +560,23 @@ msgstr "" "El servidor dice que soporta la versión de la API %d, pero esta versión de " "HardInfo solo soporta la versión de la API %d." -#: shell//syncmanager.c:362 +#: shell/syncmanager.c:375 msgid "Contacting HardInfo Central Database" msgstr "Contactando base de datos central de Hardinfo" -#: shell//syncmanager.c:363 +#: shell/syncmanager.c:376 msgid "Cleaning up" msgstr "Limpiando" -#: shell//syncmanager.c:480 -#, c-format -msgid "<s>%s</s> <i>(canceled)</i>" -msgstr "<s>%s</s> <i>(cancelado)</i>" +#: shell/syncmanager.c:493 +msgid "(canceled)" +msgstr "(cancelado)" -#: shell//syncmanager.c:497 -#, c-format -msgid "<b><s>%s</s></b> <i>(failed)</i>" -msgstr "<b><s>%s</s></b> <i>(falló)</i>" +#: shell/syncmanager.c:510 +msgid "(failed)" +msgstr "(falló)" -#: shell//syncmanager.c:509 +#: shell/syncmanager.c:521 #, c-format msgid "" "Failed while performing \"%s\". Please file a bug report if this problem " @@ -418,7 +589,7 @@ msgstr "" "\n" "Detalles: %s" -#: shell//syncmanager.c:518 +#: shell/syncmanager.c:530 #, c-format msgid "" "Failed while performing \"%s\". Please file a bug report if this problem " @@ -427,537 +598,1086 @@ msgstr "" "Falló realizando \"%s\". Por favor reporte el error si este problema " "persiste. (Use la opción Ayuda→Reportar error.)" -#: shell//syncmanager.c:646 +#: shell/syncmanager.c:658 msgid "Network Updater" msgstr "Actualizador por red" -#: shell//syncmanager.c:727 +#: shell/syncmanager.c:757 msgid "_Synchronize" msgstr "_Sincronizar" -#: modules//computer.c:68 +#: modules/benchmark.c:52 +msgid "CPU Blowfish" +msgstr "" + +#: modules/benchmark.c:53 +msgid "CPU CryptoHash" +msgstr "" + +#: modules/benchmark.c:54 +msgid "CPU Fibonacci" +msgstr "" + +#: modules/benchmark.c:55 +msgid "CPU N-Queens" +msgstr "CPU N-Reinas" + +#: modules/benchmark.c:56 +msgid "CPU Zlib" +msgstr "CPU Zlib" + +#: modules/benchmark.c:57 +msgid "FPU FFT" +msgstr "FPU FFT" + +#: modules/benchmark.c:58 +msgid "FPU Raytracing" +msgstr "FPU trazado de rayos" + +#: modules/benchmark.c:60 +msgid "GPU Drawing" +msgstr "GPU dibujado" + +#: modules/benchmark.c:239 modules/benchmark.c:255 +msgid "CPU Config" +msgstr "" + +#: modules/benchmark.c:239 modules/benchmark.c:255 +msgid "Results" +msgstr "Resultados" + +#: modules/benchmark.c:239 modules/benchmark.c:255 modules/computer.c:751 +#: modules/devices/sparc/processor.c:75 +msgid "CPU" +msgstr "CPU" + +#: modules/benchmark.c:381 +#, c-format +msgid "Benchmarking: <b>%s</b>." +msgstr "Ejecutando benchmark: <b>%s</b>." + +#: modules/benchmark.c:395 +msgid "Benchmarking. Please do not move your mouse or press any keys." +msgstr "Ejecutando benchmarks. Por favor no mueva el mouse ni use el teclado." + +#: modules/benchmark.c:399 +msgid "Cancel" +msgstr "Cancelar" + +#: modules/benchmark.c:536 +msgid "Results in MiB/second. Higher is better." +msgstr "Resultados en MiB/segundo. Más alto es mejor." + +#: modules/benchmark.c:540 +msgid "Results in HIMarks. Higher is better." +msgstr "Resultados en HIMarks. Más alto es mejor." + +#: modules/benchmark.c:547 +msgid "Results in seconds. Lower is better." +msgstr "Resultados en segundos. Más bajo es mejor." + +#: modules/benchmark.c:555 +msgid "Benchmarks" +msgstr "Benchmarks" + +#: modules/benchmark.c:573 +msgid "Perform tasks and compare with other systems" +msgstr "Realizar tareas y comparar con otros sistemas" + +#: modules/benchmark.c:663 +msgid "Send benchmark results" +msgstr "Enviar resultados de los benchmark" + +#: modules/benchmark.c:668 +msgid "Receive benchmark results" +msgstr "Recibir resultados de los benchmark" + +#: modules/computer/alsa.c:26 modules/computer.c:489 +msgid "Audio Devices" +msgstr "Dispositivos de audio" + +#: modules/computer/alsa.c:34 +msgid "Audio Adapter" +msgstr "Adaptador de audio" + +#: modules/computer/boots.c:33 modules/computer.c:73 modules/computer.c:546 +msgid "Boots" +msgstr "Arranques" + +#: modules/computer.c:70 msgid "Summary" msgstr "Resumen" -#: modules//computer.c:69 +#: modules/computer.c:71 modules/computer.c:476 modules/computer.c:750 msgid "Operating System" msgstr "Sistema operativo" -#: modules//computer.c:70 +#: modules/computer.c:72 msgid "Kernel Modules" msgstr "Módulos del kernel" -#: modules//computer.c:71 -msgid "Boots" -msgstr "Arranques" - -#: modules//computer.c:72 +#: modules/computer.c:74 msgid "Languages" msgstr "Idiomas" -#: modules//computer.c:73 +#: modules/computer.c:75 msgid "Filesystems" msgstr "Sistemas de archivos" -#: modules//computer.c:74 +#: modules/computer.c:76 modules/computer.c:481 modules/computer.c:590 msgid "Display" msgstr "Pantalla" -#: modules//computer.c:75 +#: modules/computer.c:77 modules/computer/environment.c:32 msgid "Environment Variables" msgstr "Variables de entorno" -#: modules//computer.c:77 +#: modules/computer.c:79 msgid "Development" msgstr "Desarrollo" -#: modules//computer.c:79 +#: modules/computer.c:81 modules/computer.c:617 msgid "Users" msgstr "Usuarios" -#: modules//computer.c:80 +#: modules/computer.c:82 msgid "Groups" msgstr "Grupos" -#: modules//computer.c:104 +#: modules/computer.c:104 modules/computer.c:473 modules/devices.c:96 +#: modules/devices/pci.c:149 +msgid "Memory" +msgstr "Memoria" + +#: modules/computer.c:106 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB (%dMB usados)" -#: modules//computer.c:200 +#: modules/computer.c:108 modules/computer.c:520 +msgid "Uptime" +msgstr "Activo" + +#: modules/computer.c:110 modules/computer.c:478 +msgid "Date/Time" +msgstr "Fecha/Hora" + +#: modules/computer.c:115 modules/computer.c:521 +msgid "Load Average" +msgstr "Promedio de carga" + +#: modules/computer.c:117 modules/computer.c:522 +msgid "Available entropy in /dev/random" +msgstr "Entropía disponible en /dev/random" + +#: modules/computer.c:203 msgid "Scripting Languages" msgstr "Lenguajes de scripting" -#: modules//computer.c:201 -msgid "CPython" +#: modules/computer.c:204 +msgid "Gambas3 (gbr3)" msgstr "" -#: modules//computer.c:202 +#: modules/computer.c:205 +msgid "Python" +msgstr "" + +#: modules/computer.c:206 +msgid "Python2" +msgstr "" + +#: modules/computer.c:207 +msgid "Python3" +msgstr "" + +#: modules/computer.c:208 msgid "Perl" msgstr "" -#: modules//computer.c:203 +#: modules/computer.c:209 +msgid "Perl6 (VM)" +msgstr "" + +#: modules/computer.c:210 +msgid "Perl6" +msgstr "" + +#: modules/computer.c:211 msgid "PHP" msgstr "" -#: modules//computer.c:204 +#: modules/computer.c:212 msgid "Ruby" msgstr "" -#: modules//computer.c:205 +#: modules/computer.c:213 msgid "Bash" msgstr "" -#: modules//computer.c:206 +#: modules/computer.c:214 msgid "Compilers" msgstr "Compiladores" -#: modules//computer.c:207 +#: modules/computer.c:215 msgid "C (GCC)" msgstr "" -#: modules//computer.c:208 +#: modules/computer.c:216 +msgid "C (Clang)" +msgstr "" + +#: modules/computer.c:217 +msgid "D (dmd)" +msgstr "" + +#: modules/computer.c:218 +msgid "Gambas3 (gbc3)" +msgstr "" + +#: modules/computer.c:219 msgid "Java" msgstr "" -#: modules//computer.c:209 +#: modules/computer.c:220 msgid "CSharp (Mono, old)" msgstr "CSharp (Mono, antiguo)" -#: modules//computer.c:210 +#: modules/computer.c:221 msgid "CSharp (Mono)" msgstr "" -#: modules//computer.c:211 +#: modules/computer.c:222 msgid "Vala" msgstr "" -#: modules//computer.c:212 +#: modules/computer.c:223 msgid "Haskell (GHC)" msgstr "" -#: modules//computer.c:213 +#: modules/computer.c:224 msgid "FreePascal" msgstr "" -#: modules//computer.c:214 +#: modules/computer.c:225 +msgid "Go" +msgstr "" + +#: modules/computer.c:226 msgid "Tools" msgstr "Herramientas" -#: modules//computer.c:262 -#, c-format -msgid "%s=Not found\n" -msgstr "%s=No encontrado\n" - -#: modules//computer.c:265 -#, c-format -msgid "Detecting version: %s" -msgstr "Detectando versión: %s" - -#: modules//computer.c:276 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Program\n" -"ColumnTitle$Value=Version\n" -"ShowColumnHeaders=true\n" -"%s" +#: modules/computer.c:227 +msgid "make" msgstr "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Programa\n" -"ColumnTitle$Value=Versión\n" -"ShowColumnHeaders=true\n" -"%s" -#: modules//computer.c:356 -msgid "Physical machine" -msgstr "Equipo físico" +#: modules/computer.c:228 +msgid "GDB" +msgstr "" -#: modules//computer.c:373 -#, c-format -msgid "" -"[$ShellParam$]\n" -"UpdateInterval$Memory=1000\n" -"UpdateInterval$Date/Time=1000\n" -"#ReloadInterval=5000\n" -"[Computer]\n" -"Processor=%s\n" -"Memory=...\n" -"Machine Type=%s\n" -"Operating System=%s\n" -"User Name=%s\n" -"Date/Time=...\n" -"[Display]\n" -"Resolution=%dx%d pixels\n" -"OpenGL Renderer=%s\n" -"X11 Vendor=%s\n" -"\n" -"%s\n" -"[Input Devices]\n" -"%s\n" -"\n" -"%s\n" -"\n" -"%s\n" +#: modules/computer.c:229 +msgid "strace" msgstr "" -"[$ShellParam$]\n" -"UpdateInterval$Memoria=1000\n" -"UpdateInterval$Fecha/Hora=1000\n" -"#ReloadInterval=5000\n" -"[Equipo]\n" -"Procesador=%s\n" -"Memoria=...\n" -"Tipo de equipo=%s\n" -"Sistema operativo=%s\n" -"Nombre de usuario=%s\n" -"Fecha/Hora=...\n" -"[Pantalla]\n" -"Resolución=%dx%d pixels\n" -"OpenGL Renderer=%s\n" -"Proveedor X11=%s\n" -"\n" -"%s\n" -"[Dispositivos de entrada]\n" -"%s\n" -"\n" -"%s\n" -"\n" -"%s\n" -#: modules//computer.c:415 -#, c-format -msgid "" -"[$ShellParam$]\n" -"UpdateInterval$Uptime=10000\n" -"UpdateInterval$Load Average=1000\n" -"[Version]\n" -"Kernel=%s\n" -"Version=%s\n" -"C Library=%s\n" -"Distribution=%s\n" -"[Current Session]\n" -"Computer Name=%s\n" -"User Name=%s\n" -"#Language=%s\n" -"Home Directory=%s\n" -"Desktop Environment=%s\n" -"[Misc]\n" -"Uptime=...\n" -"Load Average=..." +#: modules/computer.c:230 +msgid "valgrind" msgstr "" -"[$ShellParam$]\n" -"UpdateInterval$Uptime=10000\n" -"UpdateInterval$Load Average=1000\n" -"[Versión]\n" -"Núcleo=%s\n" -"Versión=%s\n" -"Biblioteca C=%s\n" -"Distribución=%s\n" -"[Sesión actual]\n" -"Nombre del equipo=%s\n" -"Nombre de usuario=%s\n" -"#Idioma=%s\n" -"Directorio personal=%s\n" -"Entorno de escritorio=%s\n" -"[Misc]\n" -"Uptime=...\n" -"Load Average=..." - -#: modules//computer.c:444 -#, c-format -msgid "" -"[Loaded Modules]\n" -"%s[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Description\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[Módulos cargados]\n" -"%s[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Nombre\n" -"ColumnTitle$Value=Descripción\n" -"ShowColumnHeaders=true\n" - -#: modules//computer.c:455 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Date & Time\n" -"ColumnTitle$Value=Kernel Version\n" -"ShowColumnHeaders=true\n" -"\n" -"%s" + +#: modules/computer.c:231 +msgid "QMake" msgstr "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Fecha y hora\n" -"ColumnTitle$Value=Versión del núcleo\n" -"ShowColumnHeaders=true\n" -"\n" -"%s" -#: modules//computer.c:465 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Language Code\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" -"[Available Languages]\n" -"%s" +#: modules/computer.c:232 +msgid "CMake" msgstr "" -"[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Código del idioma\n" -"ColumnTitle$Value=Nombre\n" -"ShowColumnHeaders=true\n" -"[Idiomas disponibles]\n" -"%s" -#: modules//computer.c:476 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ViewType=4\n" -"ReloadInterval=5000\n" -"Zebra=1\n" -"NormalizePercentage=false\n" -"ColumnTitle$Extra1=Mount Point\n" -"ColumnTitle$Progress=Usage\n" -"ColumnTitle$TextValue=Device\n" -"ShowColumnHeaders=true\n" -"[Mounted File Systems]\n" -"%s\n" +#: modules/computer.c:233 +msgid "Gambas3 IDE" msgstr "" -"[$ShellParam$]\n" -"ViewType=4\n" -"ReloadInterval=5000\n" -"Zebra=1\n" -"NormalizePercentage=false\n" -"ColumnTitle$Extra1=Punto de montaje\n" -"ColumnTitle$Progress=Uso\n" -"ColumnTitle$TextValue=Dispositivo\n" -"ShowColumnHeaders=true\n" -"[Sistemas de archivos montados]\n" -"%s\n" - -#: modules//computer.c:490 -#, c-format -msgid "" -"[Display]\n" -"Resolution=%dx%d pixels\n" -"Vendor=%s\n" -"Version=%s\n" -"[Monitors]\n" -"%s[Extensions]\n" -"%s[OpenGL]\n" -"Vendor=%s\n" -"Renderer=%s\n" -"Version=%s\n" -"Direct Rendering=%s\n" -msgstr "" -"[Pantalla]\n" -"Resolución=%dx%d pixels\n" -"Proveedor=%s\n" -"Versión=%s\n" -"[Monitores]\n" -"%s[Extensiones]\n" -"%s[OpenGL]\n" -"Proveedor=%s\n" -"Renderer=%s\n" -"Versión=%s\n" -"Direct Rendering=%s\n" - -#: modules//computer.c:512 -msgid "Y_es" -msgstr "_Sí" - -#: modules//computer.c:512 -#: modules//devices/printers.c:138 -#: hardinfo//hardinfo.c:63 -msgid "No" -msgstr "_No" -#: modules//computer.c:526 +#: modules/computer.c:274 +msgid "Not found" +msgstr "No encontrado" + +#: modules/computer.c:279 #, c-format -msgid "" -"[$ShellParam$]\n" -"ReloadInterval=10000\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Group ID\n" -"ShowColumnHeaders=true\n" -"[Groups]\n" -"%s\n" -msgstr "" -"[$ShellParam$]\n" -"ReloadInterval=10000\n" -"ColumnTitle$TextValue=Nombre\n" -"ColumnTitle$Value=ID del grupo\n" -"ShowColumnHeaders=true\n" -"[Grupos]\n" -"%s\n" - -#: modules//computer.c:606 +msgid "Detecting version: %s" +msgstr "Detectando versión: %s" + +#: modules/computer.c:296 +msgid "Program" +msgstr "Programa" + +#: modules/computer.c:308 +msgid "Invalid chassis type (0)" +msgstr "Clasificación maquina invalida (0)" + +#: modules/computer.c:309 modules/computer.c:310 +msgid "Unknown chassis type" +msgstr "Clasificación mauqina desconocida" + +#: modules/computer.c:311 +msgid "Desktop" +msgstr "PC Escritorio" + +#: modules/computer.c:312 +msgid "Low-profile Desktop" +msgstr "PC economico" + +#: modules/computer.c:313 +msgid "Pizza Box" +msgstr "PC caja pizza" + +#: modules/computer.c:314 +msgid "Mini Tower" +msgstr "Torre mediana" + +#: modules/computer.c:315 +msgid "Tower" +msgstr "Torreta" + +#: modules/computer.c:316 +msgid "Portable" +msgstr "Portable" + +#: modules/computer.c:317 modules/computer.c:341 modules/computer.c:350 +#: modules/computer.c:372 +msgid "Laptop" +msgstr "Portatil" + +#: modules/computer.c:318 +msgid "Notebook" +msgstr "Mini portatil" + +#: modules/computer.c:319 +msgid "Handheld" +msgstr "Mini bolsillo" + +#: modules/computer.c:320 +msgid "Docking Station" +msgstr "Estacion fija" + +#: modules/computer.c:321 +msgid "All-in-one" +msgstr "All in one" + +#: modules/computer.c:322 +msgid "Subnotebook" +msgstr "Subportátil" + +#: modules/computer.c:323 +msgid "Space-saving" +msgstr "PC Espacio-pequeño" + +#: modules/computer.c:324 +msgid "Lunch Box" +msgstr "PC caja" + +#: modules/computer.c:325 +msgid "Main Server Chassis" +msgstr "Servidor principal" + +#: modules/computer.c:326 +msgid "Expansion Chassis" +msgstr "Servidor expansion" + +#: modules/computer.c:327 +msgid "Sub Chassis" +msgstr "Sub servidor" + +#: modules/computer.c:328 +msgid "Bus Expansion Chassis" +msgstr "Expansion de bus acoplable" + +#: modules/computer.c:329 +msgid "Peripheral Chassis" +msgstr "Periferico acoplable" + +#: modules/computer.c:330 +msgid "RAID Chassis" +msgstr "RAID acoplable" + +#: modules/computer.c:331 +msgid "Rack Mount Chassis" +msgstr "Rack de montaje acoplable" + +#: modules/computer.c:332 +msgid "Sealed-case PC" +msgstr "PC sellada" + +#. /proc/apm +#. FIXME: use dmidecode if available to get chassis type +#: modules/computer.c:386 +msgid "Unknown physical machine type" +msgstr "Equipo fisico no catalogado" + +#: modules/computer.c:470 modules/computer.c:709 msgid "Computer" msgstr "Equipo" -#: modules//computer.c:700 -msgid "Gathers high-level computer information" -msgstr "Obtiene información del equipo de alto nivel" - -#: modules//devices.c:74 +#: modules/computer.c:471 modules/devices/alpha/processor.c:87 +#: modules/devices/arm/processor.c:236 modules/devices.c:95 +#: modules/devices/ia64/processor.c:159 modules/devices/m68k/processor.c:83 +#: modules/devices/mips/processor.c:74 modules/devices/parisc/processor.c:154 +#: modules/devices/ppc/processor.c:157 modules/devices/riscv/processor.c:181 +#: modules/devices/s390/processor.c:131 modules/devices/sh/processor.c:83 +#: modules/devices/sparc/processor.c:74 modules/devices/x86/processor.c:409 msgid "Processor" msgstr "Procesador" -#: modules//devices.c:75 -msgid "Memory" -msgstr "Memoria" +#: modules/computer.c:474 +msgid "Machine Type" +msgstr "Tipo de equipo" -#: modules//devices.c:76 -msgid "PCI Devices" -msgstr "Dispositivos PCI" +#: modules/computer.c:477 modules/computer.c:514 +msgid "User Name" +msgstr "Nombre de usuario" -#: modules//devices.c:77 -msgid "USB Devices" -msgstr "Dispositivos USB" +#: modules/computer.c:482 modules/computer.c:591 +msgid "Resolution" +msgstr "Resolución" -#: modules//devices.c:78 -msgid "Printers" -msgstr "Impresoras" +#: modules/computer.c:483 modules/computer.c:592 +#, c-format +msgid "%dx%d pixels" +msgstr "" -#: modules//devices.c:79 -msgid "Battery" -msgstr "Batería" +#: modules/computer.c:485 +msgid "OpenGL Renderer" +msgstr "Renderizador OpenGL" -#: modules//devices.c:80 -msgid "Sensors" -msgstr "Sensores" +#: modules/computer.c:486 +msgid "X11 Vendor" +msgstr "Proveedor X11" -#: modules//devices.c:81 +#: modules/computer.c:491 modules/devices.c:102 msgid "Input Devices" msgstr "Dispositivos de entrada" -#: modules//devices.c:82 +#: modules/computer.c:493 modules/computer.c:752 modules/devices.c:99 +msgid "Printers" +msgstr "Impresoras" + +#: modules/computer.c:495 modules/computer.c:752 modules/devices.c:103 msgid "Storage" msgstr "Almacenamiento" -#: modules//devices.c:84 -msgid "DMI" +#: modules/computer.c:506 +msgid "Kernel" +msgstr "Núcleo" + +#: modules/computer.c:508 +msgid "C Library" +msgstr "Biblioteca C" + +#: modules/computer.c:509 +msgid "Distribution" +msgstr "Distribución" + +#: modules/computer.c:512 +msgid "Current Session" +msgstr "Sesión actual" + +#: modules/computer.c:513 +msgid "Computer Name" +msgstr "Nombre del equipo" + +#: modules/computer.c:515 modules/computer/languages.c:108 +msgid "Language" +msgstr "Idioma" + +#: modules/computer.c:516 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "Directorio personal" + +#: modules/computer.c:519 modules/devices/usb.c:87 modules/devices/usb.c:234 +#: modules/devices/usb.c:351 +msgid "Misc" +msgstr "Otras" + +#: modules/computer.c:532 +msgid "Loaded Modules" +msgstr "Módulos cargados" + +#: modules/computer.c:535 modules/computer/modules.c:145 +#: modules/computer/modules.c:147 modules/devices/arm/processor.c:337 +#: modules/devices.c:559 modules/devices/x86/processor.c:456 +msgid "Description" +msgstr "Descripción" + +#: modules/computer.c:548 +msgid "Date & Time" +msgstr "Fecha y hora" + +#: modules/computer.c:549 +msgid "Kernel Version" +msgstr "Versión del núcleo" + +#: modules/computer.c:559 +msgid "Available Languages" +msgstr "Idiomas disponibles" + +#: modules/computer.c:561 +msgid "Language Code" +msgstr "Código del idioma" + +#: modules/computer.c:573 +msgid "Mounted File Systems" +msgstr "Sistemas de archivos montados" + +#: modules/computer.c:575 modules/computer/filesystem.c:85 +msgid "Mount Point" +msgstr "Punto de montaje" + +#: modules/computer.c:576 +msgid "Usage" +msgstr "Uso" + +#: modules/computer.c:577 +msgid "Device" +msgstr "Dispositivo" + +#: modules/computer.c:594 modules/computer.c:601 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:119 +#: modules/devices/pci.c:225 modules/devices/usb.c:349 +#: modules/devices/x86/processor.c:416 +msgid "Vendor" +msgstr "Proveedor" + +#: modules/computer.c:598 +msgid "Monitors" +msgstr "Monitores" + +#: modules/computer.c:600 +msgid "OpenGL" +msgstr "OpenGL (3D)" + +#: modules/computer.c:602 +msgid "Renderer" +msgstr "Renderizador" + +#: modules/computer.c:604 +msgid "Direct Rendering" +msgstr "Renderizado Directo" + +#: modules/computer.c:608 +msgid "Extensions" +msgstr "Extensiones" + +#: modules/computer.c:628 +msgid "Group" msgstr "" -#: modules//devices.c:85 -msgid "Memory SPD" -msgstr "Memoria SPD" +#: modules/computer.c:631 modules/computer/users.c:49 +msgid "Group ID" +msgstr "ID del grupo" -#: modules//devices.c:87 -msgid "Resources" -msgstr "Recursos" +#: modules/computer.c:751 +msgid "RAM" +msgstr "RAM" -#: modules//devices.c:154 -#: modules//devices.c:197 -#: modules//computer/os.c:53 -#: modules//computer/os.c:130 -#: modules//devices/printers.c:99 -#: modules//devices/printers.c:106 -#: modules//devices/printers.c:116 -#: modules//devices/printers.c:131 -#: modules//devices/printers.c:140 -#: modules//devices/printers.c:243 -msgid "Unknown" -msgstr "Desconocido" +#: modules/computer.c:751 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "Tarjeta madre" -#: modules//devices.c:178 -msgid "Total Memory" -msgstr "Memoria total" +#: modules/computer.c:751 +msgid "Graphics" +msgstr "Graficos" -#: modules//devices.c:193 -msgid " (vendor unknown)" -msgstr " (proveedor desconocido)" +#: modules/computer.c:752 +msgid "Audio" +msgstr "Audio" -#: modules//devices.c:195 -msgid " (model unknown)" -msgstr " (modelo desconocido)" +#: modules/computer.c:807 +msgid "Gathers high-level computer information" +msgstr "Obtiene información del equipo de alto nivel" -#: modules//devices.c:412 -msgid "Devices" -msgstr "Dispositivos" +#: modules/computer/display.c:122 +#, c-format +msgid "Monitor %d=%dx%d pixels\n" +msgstr "Monitor %d=%dx%d pixels\n" -#: modules//devices.c:424 -msgid "Update PCI ID listing" -msgstr "Actualizar listado de ids PCI" +#: modules/computer/filesystem.c:83 +msgid "Filesystem" +msgstr "Sistemas de ficheros" -#: modules//devices.c:436 -msgid "Update CPU feature database" -msgstr "Actualizar base de datos de características de CPU" +#: modules/computer/filesystem.c:84 +msgid "Mounted As" +msgstr "Montado como" -#: modules//devices.c:464 -msgid "Gathers information about hardware devices" -msgstr "Obtiene información acerca de los dispositivos de hardware" +#: modules/computer/filesystem.c:84 +msgid "Read-Write" +msgstr "Lectura-escritura" -#: modules//computer/boots.c:33 -msgid "[Boots]\n" -msgstr "[Arranques]\n" +#: modules/computer/filesystem.c:84 +msgid "Read-Only" +msgstr "Solo-lectura" -#: modules//computer/environment.c:32 -msgid "[Environment Variables]\n" -msgstr "[Variables de entorno]\n" +#: modules/computer/filesystem.c:86 modules/devices/spd-decode.c:1510 +msgid "Size" +msgstr "Tamaño" -#: modules//computer/display.c:83 -msgid "vendor string" -msgstr "cadena del proveedor" +#: modules/computer/filesystem.c:87 +msgid "Used" +msgstr "Usado" -#: modules//computer/display.c:84 -msgid "X.Org version" -msgstr "Versión de X.Org" +#: modules/computer/filesystem.c:88 +msgid "Available" +msgstr "Disponible" -#: modules//computer/display.c:85 -msgid "XFree86 version" -msgstr "Versión de XFree86" +#: modules/computer/languages.c:103 +msgid "Locale Information" +msgstr "" -#: modules//computer/display.c:122 -#, c-format -msgid "Monitor %d=%dx%d pixels\n" -msgstr "Monitor %d=%dx%d pixels\n" +#: modules/computer/languages.c:105 +msgid "Source" +msgstr "" -#: modules//computer/alsa.c:26 -msgid "[Audio Devices]\n" -msgstr "[Dispositivos de audio]\n" +#: modules/computer/languages.c:106 +msgid "Address" +msgstr "" -#: modules//computer/alsa.c:33 -#, c-format -msgid "Audio Adapter#%d=%s\n" -msgstr "Adaptador de audio#%d=%s\n" +#: modules/computer/languages.c:107 +msgid "E-mail" +msgstr "" -#: modules//computer/os.c:49 -#, c-format -msgid "GNU C Library version %s (%sstable)" -msgstr "Versión de la biblioteca GNU C %s (%sestable)" +#: modules/computer/languages.c:109 +msgid "Territory" +msgstr "" + +#: modules/computer/languages.c:110 modules/devices/arm/processor.c:250 +#: modules/devices/ia64/processor.c:166 modules/devices/ppc/processor.c:159 +#: modules/devices/usb.c:236 +msgid "Revision" +msgstr "Revision" -#: modules//computer/os.c:51 -msgid "un" -msgstr "in" +#: modules/computer/languages.c:111 +msgid "Date" +msgstr "" + +#: modules/computer/languages.c:112 +msgid "Codeset" +msgstr "" + +#: modules/computer/loadavg.c:64 +msgid "Couldn't obtain load average" +msgstr "No se pudo obtener estadisticas" + +#: modules/computer/modules.c:125 modules/computer/modules.c:126 +#: modules/computer/modules.c:127 modules/computer/modules.c:128 +#: modules/computer/modules.c:129 +msgid "(Not available)" +msgstr "" + +#: modules/computer/modules.c:142 +msgid "Module Information" +msgstr "" + +#: modules/computer/modules.c:143 +msgid "Path" +msgstr "" + +#: modules/computer/modules.c:144 +msgid "Used Memory" +msgstr "" + +#: modules/computer/modules.c:144 +msgid "KiB" +msgstr "" + +#: modules/computer/modules.c:148 +msgid "Version Magic" +msgstr "" + +#: modules/computer/modules.c:149 +msgid "Copyright" +msgstr "" -#: modules//computer/os.c:72 +#: modules/computer/modules.c:150 +msgid "Author" +msgstr "" + +#: modules/computer/modules.c:151 +msgid "License" +msgstr "" + +#: modules/computer/modules.c:158 +msgid "Dependencies" +msgstr "" + +#: modules/computer/os.c:35 modules/computer/os.c:36 modules/computer/os.c:37 +#: modules/computer/os.c:38 +msgid "GNU C Library" +msgstr "Libreria C GNU" + +#: modules/computer/os.c:39 +msgid "uClibc or uClibc-ng" +msgstr "Libreria uClibc/uClibc-ng" + +#: modules/computer/os.c:40 +msgid "diet libc" +msgstr "Libreria diet libc" + +#: modules/computer/os.c:78 modules/computer/os.c:234 modules/computer/os.c:359 +#: modules/devices.c:333 modules/devices.c:387 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 +msgid "Unknown" +msgstr "Desconocido" + +#: modules/computer/os.c:112 modules/computer/os.c:115 +msgid "GNOME Shell " +msgstr "" + +#: modules/computer/os.c:123 modules/computer/os.c:126 +msgid "Version: " +msgstr "Versión" + +#: modules/computer/os.c:157 #, c-format -msgid "Version: %s" -msgstr "Versión: %s" +msgid "Unknown (Window Manager: %s)" +msgstr "Desconocido (Gestor de ventanas: %s)" -#: modules//computer/os.c:106 +#. /{desktop environment} on {session type} +#: modules/computer/os.c:168 +#, c-format +msgid "%s on %s" +msgstr "%s en %s" + +#: modules/computer/os.c:232 msgid "Terminal" msgstr "Terminal" -#: modules//computer/os.c:126 +#. /bits of entropy for rng (0) +#: modules/computer/os.c:241 +msgid "(None or not available)" +msgstr "(Ninguno o no disponible)" + +#. /bits of entropy for rng (low/poor value) +#: modules/computer/os.c:242 #, c-format -msgid "Unknown (Window Manager: %s)" -msgstr "Desconocido (Gestor de ventanas: %s)" +msgid "%d bits (low)" +msgstr "%d bits (bajo)" + +#. /bits of entropy for rng (medium value) +#: modules/computer/os.c:243 +#, c-format +msgid "%d bits (medium)" +msgstr "%d bits (promedio)" + +#. /bits of entropy for rng (high/good value) +#: modules/computer/os.c:244 +#, c-format +msgid "%d bits (healthy)" +msgstr "%d bits (saludable)" + +#: modules/computer/os.c:279 modules/devices/usb.c:48 modules/devices/usb.c:307 +#: modules/devices/usb.c:310 modules/network/net.c:442 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "(desconocido)" + +#: modules/computer/users.c:47 +msgid "User Information" +msgstr "Informacion de usuario" + +#: modules/computer/users.c:48 +msgid "User ID" +msgstr "ID usuario" + +#: modules/computer/users.c:51 +msgid "Default Shell" +msgstr "Shell principal" + +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:141 +#: modules/devices/devicetree.c:176 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/ia64/processor.c:165 modules/devices/m68k/processor.c:84 +#: modules/devices/mips/processor.c:75 modules/devices/parisc/processor.c:155 +#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 +#: modules/devices/s390/processor.c:132 modules/devices/spd-decode.c:1510 +msgid "Model" +msgstr "Modelo" + +#: modules/devices/alpha/processor.c:89 +msgid "Platform String" +msgstr "Plataforma" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/pci.c:108 modules/devices/ppc/processor.c:160 +#: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 +#: modules/devices/x86/processor.c:420 +msgid "Frequency" +msgstr "Frecuencia" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/arm/processor.c:365 modules/devices.c:299 +#: modules/devices.c:307 modules/devices.c:335 +#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 +#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 +#: modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/pci.c:108 +#: modules/devices/ppc/processor.c:160 modules/devices/ppc/processor.c:187 +#: modules/devices/riscv/processor.c:186 modules/devices/riscv/processor.c:214 +#: modules/devices/s390/processor.c:160 modules/devices/sh/processor.c:87 +#: modules/devices/sh/processor.c:88 modules/devices/sh/processor.c:89 +#: modules/devices/x86/processor.c:420 modules/devices/x86/processor.c:479 +msgid "MHz" +msgstr "MHz" + +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:241 +#: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 +#: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 +#: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:421 +msgid "BogoMips" +msgstr "BogoMips" + +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:242 +#: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 +#: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 +#: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 +#: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:422 +msgid "Byte Order" +msgstr "Orden Byte" + +#. /hw_cap +#. /flag:swp +#: modules/devices/arm/arm_data.c:42 +msgctxt "arm-flag" +msgid "SWP instruction (atomic read-modify-write)" +msgstr "SWP instruction (Atomicidad en leer-alterar-escribir)" + +#. /flag:half +#: modules/devices/arm/arm_data.c:43 +msgctxt "arm-flag" +msgid "Half-word loads and stores" +msgstr "Half-word cargar y guardado" + +#. /flag:thumb +#: modules/devices/arm/arm_data.c:44 +msgctxt "arm-flag" +msgid "Thumb (16-bit instruction set)" +msgstr "Thumb (set instrucciones de 16-bit)" + +#. /flag:26bit +#: modules/devices/arm/arm_data.c:45 +msgctxt "arm-flag" +msgid "26-Bit Model (Processor status register folded into program counter)" +msgstr "" +"26-Bit Model (Registros de estado de procesador en el contador de programa)" + +#. /flag:fastmult +#: modules/devices/arm/arm_data.c:46 +msgctxt "arm-flag" +msgid "32x32->64-bit multiplication" +msgstr "32x32->64-bit multiplicador" + +#. /flag:fpa +#: modules/devices/arm/arm_data.c:47 +msgctxt "arm-flag" +msgid "Floating point accelerator" +msgstr "Acelerador de punto flotante" + +#. /flag:vfp +#: modules/devices/arm/arm_data.c:48 +msgctxt "arm-flag" +msgid "VFP (early SIMD vector floating point instructions)" +msgstr "VFP (vector SIMD temprano de instrucciones de punto flotante" + +#. /flag:edsp +#: modules/devices/arm/arm_data.c:49 +msgctxt "arm-flag" +msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" +msgstr "DSP (extensiones en el variante 'e' del ARM9 y otros mas nuevos)" + +#. /flag:java +#: modules/devices/arm/arm_data.c:50 +msgctxt "arm-flag" +msgid "Jazelle (Java bytecode accelerator)" +msgstr "Jazelle (aceletador de bytecode Java)" + +#. /flag:iwmmxt +#: modules/devices/arm/arm_data.c:51 +msgctxt "arm-flag" +msgid "SIMD instructions similar to Intel MMX" +msgstr "SIMD instrucciones similares a Intel MMX" + +#. /flag:crunch +#: modules/devices/arm/arm_data.c:52 +msgctxt "arm-flag" +msgid "MaverickCrunch coprocessor (if kernel support enabled)" +msgstr "MaverickCrunch coprocessor (si esta habilitado en el kernel)" + +#. /flag:thumbee +#: modules/devices/arm/arm_data.c:53 +msgctxt "arm-flag" +msgid "ThumbEE" +msgstr "thumbEE" + +#. /flag:neon +#: modules/devices/arm/arm_data.c:54 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch32" +msgstr "SIMD/NEON avanzado en AArch32" + +#. /flag:evtstrm +#: modules/devices/arm/arm_data.c:55 +msgctxt "arm-flag" +msgid "Kernel event stream using generic architected timer" +msgstr "" +"Secuencia de eventos de kernel con temporizador de arquitectura genérico" + +#. /flag:vfpv3 +#: modules/devices/arm/arm_data.c:56 +msgctxt "arm-flag" +msgid "VFP version 3" +msgstr "VFP versión 3" + +#. /flag:vfpv3d16 +#: modules/devices/arm/arm_data.c:57 +msgctxt "arm-flag" +msgid "VFP version 3 with 16 D-registers" +msgstr "VFP versión 3 con 16 D-registros" + +#. /flag:vfpv4 +#: modules/devices/arm/arm_data.c:58 +msgctxt "arm-flag" +msgid "VFP version 4 with fast context switching" +msgstr "VFP versión 4 con rapido cambio de contexto" + +#. /flag:vfpd32 +#: modules/devices/arm/arm_data.c:59 +msgctxt "arm-flag" +msgid "VFP with 32 D-registers" +msgstr "VFP con 32 D-registros" + +#. /flag:tls +#: modules/devices/arm/arm_data.c:60 +msgctxt "arm-flag" +msgid "TLS register" +msgstr "Registros TLS" + +#. /flag:idiva +#: modules/devices/arm/arm_data.c:61 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in ARM mode" +msgstr "SDIV y UDIV divisores por hardware en modo ARM" + +#. /flag:idivt +#: modules/devices/arm/arm_data.c:62 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in Thumb mode" +msgstr "SDIV y UDIV divisores por hardware en modo Thumb" + +#. /flag:lpae +#: modules/devices/arm/arm_data.c:63 +msgctxt "arm-flag" +msgid "40-bit Large Physical Address Extension" +msgstr "40-bit Extencion de direcciones fisica larga" + +#. /hw_cap2 +#. /flag:pmull +#: modules/devices/arm/arm_data.c:65 +msgctxt "arm-flag" +msgid "64x64->128-bit F2m multiplication (arch>8)" +msgstr "" + +#. /flag:aes +#: modules/devices/arm/arm_data.c:66 +msgctxt "arm-flag" +msgid "Crypto:AES (arch>8)" +msgstr "Encriptamiento:AES (arch>8)" + +#. /flag:sha1 +#: modules/devices/arm/arm_data.c:67 +msgctxt "arm-flag" +msgid "Crypto:SHA1 (arch>8)" +msgstr "Encriptamiento:SHA1 (arch>8)" + +#. /flag:sha2 +#: modules/devices/arm/arm_data.c:68 +msgctxt "arm-flag" +msgid "Crypto:SHA2 (arch>8)" +msgstr "Encriptamiento:SHA2 (arch>8)" + +#. /flag:crc32 +#: modules/devices/arm/arm_data.c:69 +msgctxt "arm-flag" +msgid "CRC32 checksum instructions (arch>8)" +msgstr "Instrucciones CRC32 checksum (arch>8)" + +#. /flag:asimd +#: modules/devices/arm/arm_data.c:72 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +msgstr "SIMD/NEON Avanzado en AArch64 (arch>8)" + +#: modules/devices/arm/processor.c:142 +msgid "ARM Processor" +msgstr "Procesador ARM" + +#: modules/devices/arm/processor.c:200 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:371 +msgid "Empty List" +msgstr "Lista vacia" + +#: modules/devices/arm/processor.c:237 +msgid "Linux Name" +msgstr "Nombre Linux" + +#: modules/devices/arm/processor.c:238 +msgid "Decoded Name" +msgstr "Nombre decodificado" + +#: modules/devices/arm/processor.c:239 modules/network/net.c:458 +msgid "Mode" +msgstr "Modo" + +#: modules/devices/arm/processor.c:245 +msgid "ARM" +msgstr "ARM" + +#: modules/devices/arm/processor.c:246 +msgid "Implementer" +msgstr "Implementador" + +#: modules/devices/arm/processor.c:247 +msgid "Part" +msgstr "Parte" + +#: modules/devices/arm/processor.c:248 modules/devices/ia64/processor.c:162 +#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 +msgid "Architecture" +msgstr "Arquitectura" + +#: modules/devices/arm/processor.c:249 +msgid "Variant" +msgstr "Variante" + +#: modules/devices/arm/processor.c:251 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:428 +msgid "Capabilities" +msgstr "Capacidades" + +#: modules/devices/arm/processor.c:335 +msgid "SOC/Package" +msgstr "" + +#: modules/devices/arm/processor.c:338 modules/devices/cpu_util.c:222 +msgid "Topology" +msgstr "Topologia" + +#: modules/devices/arm/processor.c:339 +msgid "Clocks" +msgstr "" -#: modules//computer/os.c:166 -msgid "Unknown distribution" -msgstr "Distribución desconocida" +#: modules/devices/arm/processor.c:354 +msgid "SOC/Package Information" +msgstr "" -#: modules//devices/battery.c:181 +#: modules/devices/battery.c:181 #, c-format msgid "" "\n" @@ -978,7 +1698,28 @@ msgstr "" "Numero de modelo=%s\n" "Numero de serie=%s\n" -#: modules//devices/battery.c:266 +#: modules/devices/battery.c:258 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s\n" +"Capacity=%s / %s\n" +"Battery Technology=%s\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" +"\n" +"[Bateria: %s]\n" +"Estado=%s\n" +"Capacidad=%s / %s\n" +"Technologia de bateria=%s\n" +"Manufacturador=%s\n" +"Numero de modelo=%s\n" +"Numero de serial=%s\n" + +#: modules/devices/battery.c:346 #, c-format msgid "" "\n" @@ -997,7 +1738,7 @@ msgstr "" "Versión del driver APM=%s\n" "APM BIOS version=%s\n" -#: modules//devices/battery.c:278 +#: modules/devices/battery.c:358 #, c-format msgid "" "\n" @@ -1014,7 +1755,7 @@ msgstr "" "Versión del driver APM=%s\n" "Versión del BIOS APM=%s\n" -#: modules//devices/battery.c:304 +#: modules/devices/battery.c:385 msgid "" "[No batteries]\n" "No batteries found on this system=\n" @@ -1022,57 +1763,550 @@ msgstr "" "[Sin baterías]\n" "No se encontraron baterías en este sistema=\n" -#: modules//devices/printers.c:81 +#: modules/devices.c:97 +msgid "PCI Devices" +msgstr "Dispositivos PCI" + +#: modules/devices.c:98 modules/devices/usb.c:117 modules/devices/usb.c:156 +#: modules/devices/usb.c:415 +msgid "USB Devices" +msgstr "Dispositivos USB" + +#: modules/devices.c:100 +msgid "Battery" +msgstr "Batería" + +#: modules/devices.c:101 +msgid "Sensors" +msgstr "Sensores" + +#: modules/devices.c:105 +msgid "DMI" +msgstr "DMI" + +#: modules/devices.c:106 +msgid "Memory SPD" +msgstr "Memoria SPD" + +#: modules/devices.c:111 +msgid "Device Tree" +msgstr "Arbol de dispositivos" + +#: modules/devices.c:113 +msgid "Resources" +msgstr "Recursos" + +#: modules/devices.c:151 +#, c-format +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "" +msgstr[1] "" + +#: modules/devices.c:152 +#, c-format +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "" +msgstr[1] "" + +#: modules/devices.c:153 +#, c-format +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "" +msgstr[1] "" + +#. /NP procs; NC cores; NT threads +#: modules/devices.c:154 +#, c-format +msgid "%s; %s; %s" +msgstr "" + +#: modules/devices.c:372 +msgid " (model unknown)" +msgstr " (modelo desconocido)" + +#: modules/devices.c:374 +msgid " (vendor unknown)" +msgstr " (proveedor desconocido)" + +#: modules/devices.c:559 +msgid "Field" +msgstr "Campo" + +#: modules/devices.c:559 modules/devices.c:591 +msgid "Value" +msgstr "Valor" + +#: modules/devices.c:591 +msgid "Sensor" +msgstr "Sensor" + +#: modules/devices.c:591 modules/devices/inputdevices.c:117 +msgid "Type" +msgstr "Tipo" + +#: modules/devices.c:637 +msgid "Devices" +msgstr "Dispositivos" + +#: modules/devices.c:649 +msgid "Update PCI ID listing" +msgstr "Actualizar listado de ids PCI" + +#: modules/devices.c:661 +msgid "Update CPU feature database" +msgstr "Actualizar base de datos de características de CPU" + +#: modules/devices.c:689 +msgid "Gathers information about hardware devices" +msgstr "Obtiene información acerca de los dispositivos de hardware" + +#: modules/devices.c:708 +msgid "Resource information requires superuser privileges" +msgstr "Informacion de recursos require privilegios de superusuario" + +#: modules/devices/cpu_util.c:30 +msgid "Little Endian" +msgstr "Little Endian" + +#: modules/devices/cpu_util.c:32 +msgid "Big Endian" +msgstr "Big Endian" + +#: modules/devices/cpu_util.c:178 modules/devices/cpu_util.c:189 +msgid "Frequency Scaling" +msgstr "Escalador de frecuencia" + +#: modules/devices/cpu_util.c:179 +msgid "Minimum" +msgstr "Minimo" + +#: modules/devices/cpu_util.c:179 modules/devices/cpu_util.c:180 +#: modules/devices/cpu_util.c:181 +msgid "kHz" +msgstr "Khz" + +#: modules/devices/cpu_util.c:180 +msgid "Maximum" +msgstr "Maximo" + +#: modules/devices/cpu_util.c:181 +msgid "Current" +msgstr "Actual" + +#: modules/devices/cpu_util.c:182 +msgid "Transition Latency" +msgstr "Latencia de transicion" + +#: modules/devices/cpu_util.c:182 +msgid "ns" +msgstr "ns" + +#: modules/devices/cpu_util.c:183 +msgid "Governor" +msgstr "Gobernador" + +#: modules/devices/cpu_util.c:184 modules/devices/cpu_util.c:190 +msgid "Driver" +msgstr "Manejador" + +#: modules/devices/cpu_util.c:196 modules/devices/x86/processor.c:297 +msgid "(Not Available)" +msgstr "(no disponible)" + +#: modules/devices/cpu_util.c:204 modules/devices/cpu_util.c:206 +msgid "Socket" +msgstr "Soket" + +#: modules/devices/cpu_util.c:209 modules/devices/cpu_util.c:211 +msgid "Core" +msgstr "Core" + +#: modules/devices/cpu_util.c:214 +msgid "Book" +msgstr "Asentamientos" + +#: modules/devices/cpu_util.c:216 +msgid "Drawer" +msgstr "Dibujado" + +#: modules/devices/cpu_util.c:223 +msgid "ID" +msgstr "ID" + +#: modules/devices/devicetree.c:47 +msgid "Properties" +msgstr "Propiedades" + +#: modules/devices/devicetree.c:48 +msgid "Children" +msgstr "Hijos" + +#: modules/devices/devicetree.c:84 +msgid "Node" +msgstr "Nodo" + +#: modules/devices/devicetree.c:85 +msgid "Node Path" +msgstr "Ruta nodo" + +#: modules/devices/devicetree.c:86 +msgid "Alias" +msgstr "Alterno" + +#: modules/devices/devicetree.c:86 modules/devices/devicetree.c:87 +msgid "(None)" +msgstr "(ninguno)" + +#: modules/devices/devicetree.c:87 +msgid "Symbol" +msgstr "Simbolo" + +#: modules/devices/devicetree.c:132 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "Plataforma" + +#: modules/devices/devicetree.c:133 modules/devices/devicetree.c:178 +msgid "Compatible" +msgstr "Compatible" + +#: modules/devices/devicetree.c:134 +msgid "GPU-compatible" +msgstr "GPU-compatble" + +#: modules/devices/devicetree.c:140 +msgid "Raspberry Pi or Compatible" +msgstr "Raspberry Pi o similar" + +#: modules/devices/devicetree.c:142 modules/devices/devicetree.c:160 +#: modules/devices/devicetree.c:177 modules/devices/devicetree/rpi_data.c:160 +msgid "Serial Number" +msgstr "Numero serial" + +#: modules/devices/devicetree.c:143 modules/devices/devicetree/rpi_data.c:157 +msgid "RCode" +msgstr "Codigo R" + +#: modules/devices/devicetree.c:143 +msgid "No revision code available; unable to lookup model details." +msgstr "No hay codigo de revision disponible, imposible obtener detalles" + +#: modules/devices/devicetree.c:159 +msgid "More" +msgstr "Mas" + +#: modules/devices/devicetree.c:175 +msgid "Board" +msgstr "Tarjeta" + +#: modules/devices/devicetree.c:234 +msgid "Messages" +msgstr "Mensajes" + +#: modules/devices/devicetree/dt_util.c:1013 +msgid "phandle Map" +msgstr "Mapa manejado" + +#: modules/devices/devicetree/dt_util.c:1014 +msgid "Alias Map" +msgstr "Mapa alternativo" + +#: modules/devices/devicetree/dt_util.c:1015 +msgid "Symbol Map" +msgstr "Mapa de simbolos" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" +msgstr "Power Macintosh de Apple" + +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "Maquina" + +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "detectada como" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" +msgstr "Semaforos PMAC" + +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" +msgstr "Cache L2" + +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" +msgstr "PMAC generacion" + +#: modules/devices/devicetree/rpi_data.c:152 +#: modules/devices/devicetree/rpi_data.c:153 +msgid "Raspberry Pi" +msgstr "Raspberry Pi" + +#: modules/devices/devicetree/rpi_data.c:153 +msgid "Board Name" +msgstr "Nombre Tarjeta" + +#: modules/devices/devicetree/rpi_data.c:154 +msgid "PCB Revision" +msgstr "Revision PCB" + +#: modules/devices/devicetree/rpi_data.c:155 +msgid "Introduction" +msgstr "Introducido" + +#: modules/devices/devicetree/rpi_data.c:156 modules/devices/spd-decode.c:1510 +#: modules/devices/usb.c:84 modules/devices/usb.c:217 +msgid "Manufacturer" +msgstr "Manufacturado" + +#: modules/devices/devicetree/rpi_data.c:158 +msgid "SOC (spec)" +msgstr "SOC (specif)" + +#: modules/devices/devicetree/rpi_data.c:159 +msgid "Memory (spec)" +msgstr "Memoria (specif)" + +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Permanent overvolt bit" +msgstr "Bit de sobrevoltage permanente" + +#: modules/devices/devicetree/rpi_data.c:161 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "Asignado" + +#: modules/devices/devicetree/rpi_data.c:161 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "Sin ajustar" + +#: modules/devices/devmemory.c:93 +msgid "Total Memory" +msgstr "Memoria total" + +#: modules/devices/devmemory.c:94 +msgid "Free Memory" +msgstr "Memoria Libre" + +#: modules/devices/devmemory.c:95 +msgid "Cached Swap" +msgstr "Intercambio" + +#: modules/devices/devmemory.c:96 +msgid "High Memory" +msgstr "Memoria alta" + +#: modules/devices/devmemory.c:97 +msgid "Free High Memory" +msgstr "Memoria alta libre" + +#: modules/devices/devmemory.c:98 +msgid "Low Memory" +msgstr "Memoria base" + +#: modules/devices/devmemory.c:99 +msgid "Free Low Memory" +msgstr "Memoria base libre" + +#: modules/devices/devmemory.c:100 +msgid "Virtual Memory" +msgstr "Memoria virtual" + +#: modules/devices/devmemory.c:101 +msgid "Free Virtual Memory" +msgstr "Memoria virtual libre" + +#: modules/devices/dmi.c:188 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "" + +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "Procesador IA64" + +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "Revision arquitectura" + +#: modules/devices/ia64/processor.c:164 modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "Familia" + +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "Registros" + +#: modules/devices/ia64/processor.c:171 +msgid "Features" +msgstr "Capacidades" + +#: modules/devices/inputdevices.c:115 modules/devices/pci.c:214 +#: modules/devices/usb.c:82 modules/devices/usb.c:215 modules/devices/usb.c:347 +msgid "Device Information" +msgstr "" + +#: modules/devices/inputdevices.c:118 modules/devices/usb.c:92 +#: modules/devices/usb.c:240 modules/devices/usb.c:356 +msgid "Bus" +msgstr "" + +#: modules/devices/inputdevices.c:120 modules/devices/usb.c:83 +#: modules/devices/usb.c:216 modules/devices/usb.c:348 +msgid "Product" +msgstr "" + +#: modules/devices/inputdevices.c:124 +msgid "Connected to" +msgstr "" + +#: modules/devices/inputdevices.c:128 +msgid "InfraRed port" +msgstr "" + +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" +msgstr "MMU" + +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" +msgstr "FPU" + +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" +msgstr "Calibracion" + +#: modules/devices/mips/processor.c:76 +msgid "System Type" +msgstr "Tipo sistema" + +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "Procesador PA-RISC" + +#: modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "Sistema" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "HVersion" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "SVersion" + +#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:425 +msgid "Cache" +msgstr "Cache" + +#: modules/devices/pci.c:106 +msgid "IRQ" +msgstr "" + +#: modules/devices/pci.c:110 +msgid "Latency" +msgstr "" + +#: modules/devices/pci.c:112 +msgid "Bus Master" +msgstr "" + +#: modules/devices/pci.c:118 +msgid "Kernel modules" +msgstr "" + +#: modules/devices/pci.c:124 +#, c-format +msgid "%s=%s (%s)\n" +msgstr "" + +#: modules/devices/pci.c:126 +msgid "OEM Vendor" +msgstr "" + +#: modules/devices/pci.c:153 +msgid "prefetchable" +msgstr "" + +#: modules/devices/pci.c:154 +msgid "non-prefetchable" +msgstr "" + +#: modules/devices/pci.c:163 +msgid "I/O ports at" +msgstr "" + +#: modules/devices/pci.c:216 modules/devices/usb.c:89 modules/devices/usb.c:237 +#: modules/devices/usb.c:353 +msgid "Class" +msgstr "" + +#: modules/devices/pci.c:217 +msgid "Domain" +msgstr "" + +#: modules/devices/pci.c:218 +msgid "Bus, device, function" +msgstr "" + +#: modules/devices/pci.c:243 +msgid "No PCI devices found" +msgstr "" + +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" +msgstr "Procesador POWER" + +#: modules/devices/printers.c:81 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ Puede imprimir en blanco y negro=\n" -#: modules//devices/printers.c:83 +#: modules/devices/printers.c:83 msgid "⚬ Can do color printing=\n" msgstr "⚬ Puede imprimir en color=\n" -#: modules//devices/printers.c:85 +#: modules/devices/printers.c:85 msgid "⚬ Can do duplexing=\n" msgstr "⚬ Can do duplexing=\n" -#: modules//devices/printers.c:87 +#: modules/devices/printers.c:87 msgid "⚬ Can do staple output=\n" msgstr "⚬ Puede engrapar la salida=\n" -#: modules//devices/printers.c:89 +#: modules/devices/printers.c:89 msgid "⚬ Can do copies=\n" msgstr "⚬ Puede hacer copias=\n" -#: modules//devices/printers.c:91 +#: modules/devices/printers.c:91 msgid "⚬ Can collate copies=\n" msgstr "⚬ Puede compaginar copias=\n" -#: modules//devices/printers.c:93 +#: modules/devices/printers.c:93 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ La impresora está rechazando trabajos=\n" -#: modules//devices/printers.c:95 +#: modules/devices/printers.c:95 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬ La impresora fue encontrada automáticamente y agregada=\n" -#: modules//devices/printers.c:110 +#: modules/devices/printers.c:110 msgid "Idle" msgstr "Ocioso" -#: modules//devices/printers.c:112 +#: modules/devices/printers.c:112 msgid "Printing a Job" msgstr "Imprimiendo un trabajo" -#: modules//devices/printers.c:114 +#: modules/devices/printers.c:114 msgid "Stopped" msgstr "Detenido" -#: modules//devices/printers.c:138 -#: hardinfo//hardinfo.c:62 -#: hardinfo//hardinfo.c:63 -msgid "Yes" -msgstr "Sí" - -#: modules//devices/printers.c:190 +#: modules/devices/printers.c:190 msgid "" "[Printers]\n" "No suitable CUPS library found=" @@ -1080,11 +2314,11 @@ msgstr "" "[Impresoras]\n" "No se encontró ninguna biblioteca CUPS usable=" -#: modules//devices/printers.c:200 +#: modules/devices/printers.c:200 msgid "[Printers (CUPS)]\n" msgstr "[Impresoras (CUPS)]\n" -#: modules//devices/printers.c:263 +#: modules/devices/printers.c:263 msgid "" "[Printers]\n" "No printers found=\n" @@ -1092,7 +2326,171 @@ msgstr "" "[Impresoras]\n" "No se encontraron impresoras=\n" -#: modules//devices/storage.c:46 +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" +msgstr "Procesador RISC-V" + +#: modules/devices/riscv/processor.c:184 +msgid "uarch" +msgstr "uarch" + +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" +msgstr "RISC-V 32-bit" + +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" +msgstr "RISC-V 64-bit" + +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" +msgstr "RISC-V 128-bit" + +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" +msgstr "Instrucciones de enteros embebidas base (15 registros)" + +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" +msgstr "Instrucciones de enteros base (31 registros)" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "Multiplicador y divisor de enteros por hardware" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "Operaciones de memoria unificadas" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "Intrucciones compresion 16-bit" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "Instrucciones punto-flotante, precision simple" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "Instrucciones punto-flotante, precision doble" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "Instrucciones punto-flotante, precision cuadruple" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "Instrucciones de manipulacion de bit" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "Operaciones de Vector" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "Memoria transaccional" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "Instrucciones SIMD empaquetadas" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "Instrucciones punto-flotante decimales" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "Traduccion de lenguajes dinamicamente" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "Interrupciones de nivel de usuario" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "Procesador S390" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "ID String" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "Procesador SuperH" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "Frecuencya de Bus" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "Frecuencia modular" + +#: modules/devices/spd-decode.c:1475 +msgid "" +"[SPD]\n" +"Please load the eeprom module to obtain information about memory SPD=\n" +"[$ShellParam$]\n" +"ReloadInterval=500\n" +msgstr "" +"[SPD]\n" +"Por favor carge el modulo eeprom para obtener informacion de memorias SPD=\n" +"[$ShellParam$]\n" +"ReloadInterval=500\n" + +#: modules/devices/spd-decode.c:1480 +msgid "" +"[SPD]\n" +"Reading memory SPD not supported on this system=\n" +msgstr "" +"[SPD]\n" +"Lectura de memorias no soportado en este sistema=\n" + +#: modules/devices/spd-decode.c:1509 +msgid "SPD" +msgstr "SPD" + +#: modules/devices/spd-decode.c:1510 +msgid "Bank" +msgstr "Ranura" + +#: modules/devices/storage.c:46 msgid "" "\n" "[SCSI Disks]\n" @@ -1100,8 +2498,7 @@ msgstr "" "\n" "[Discos SCSI]\n" -#: modules//devices/storage.c:110 -#: modules//devices/storage.c:297 +#: modules/devices/storage.c:110 modules/devices/storage.c:313 #, c-format msgid "" "[Device Information]\n" @@ -1110,19 +2507,17 @@ msgstr "" "[Información de dispositivo]\n" "Modelo=%s\n" -#: modules//devices/storage.c:115 -#: modules//devices/storage.c:304 +#: modules/devices/storage.c:115 modules/devices/storage.c:319 #, c-format msgid "Vendor=%s (%s)\n" msgstr "Proveedor=%s (%s)\n" -#: modules//devices/storage.c:120 -#: modules//devices/storage.c:309 +#: modules/devices/storage.c:120 modules/devices/storage.c:321 #, c-format msgid "Vendor=%s\n" msgstr "Proveedor=%s\n" -#: modules//devices/storage.c:125 +#: modules/devices/storage.c:125 #, c-format msgid "" "Type=%s\n" @@ -1141,7 +2536,7 @@ msgstr "" "ID=%d\n" "LUN=%d\n" -#: modules//devices/storage.c:169 +#: modules/devices/storage.c:167 msgid "" "\n" "[IDE Disks]\n" @@ -1149,12 +2544,12 @@ msgstr "" "\n" "[Discos IDE]\n" -#: modules//devices/storage.c:242 +#: modules/devices/storage.c:250 #, c-format msgid "Driver=%s\n" msgstr "Driver=%s\n" -#: modules//devices/storage.c:314 +#: modules/devices/storage.c:324 #, c-format msgid "" "Device Name=hd%c\n" @@ -1165,7 +2560,7 @@ msgstr "" "Medio=%s\n" "Cache=%dkb\n" -#: modules//devices/storage.c:329 +#: modules/devices/storage.c:334 #, c-format msgid "" "[Geometry]\n" @@ -1176,7 +2571,7 @@ msgstr "" "Física=%s\n" "Lógica=%s\n" -#: modules//devices/storage.c:341 +#: modules/devices/storage.c:344 #, c-format msgid "" "[Capabilities]\n" @@ -1185,7 +2580,7 @@ msgstr "" "[Capacidades]\n" "%s" -#: modules//devices/storage.c:348 +#: modules/devices/storage.c:351 #, c-format msgid "" "[Speeds]\n" @@ -1194,483 +2589,1879 @@ msgstr "" "[Velocidades]\n" "%s" -#: modules//network.c:59 -msgid "Interfaces" -msgstr "Interfaces" +#: modules/devices/usb.c:44 modules/devices/usb.c:326 +msgid "mA" +msgstr "" -#: modules//network.c:60 -msgid "IP Connections" -msgstr "Conexiones IP" +#. /%.2f is version +#: modules/devices/usb.c:53 modules/devices/usb.c:190 +#, c-format +msgid "USB %.2f Hub" +msgstr "" -#: modules//network.c:61 -msgid "Routing Table" -msgstr "Tabla de ruteo" +#: modules/devices/usb.c:55 modules/devices/usb.c:192 +#, c-format +msgid "Unknown USB %.2f Device (class %d)" +msgstr "" -#: modules//network.c:62 -msgid "ARP Table" -msgstr "Tabla ARP" +#: modules/devices/usb.c:85 modules/devices/usb.c:232 +msgid "Speed" +msgstr "" -#: modules//network.c:63 -msgid "DNS Servers" -msgstr "Servidores DNS" +#: modules/devices/usb.c:85 modules/devices/usb.c:232 +msgid "Mbit/s" +msgstr "" -#: modules//network.c:64 -msgid "Statistics" -msgstr "Estadísticas" +#: modules/devices/usb.c:86 modules/devices/usb.c:233 modules/devices/usb.c:350 +msgid "Max Current" +msgstr "" -#: modules//network.c:65 -msgid "Shared Directories" -msgstr "Directorios compartidos" +#: modules/devices/usb.c:88 modules/devices/usb.c:235 modules/devices/usb.c:352 +msgid "USB Version" +msgstr "" -#: modules//network.c:300 +#: modules/devices/usb.c:90 modules/devices/usb.c:238 modules/devices/usb.c:354 +msgid "Vendor ID" +msgstr "" + +#: modules/devices/usb.c:91 modules/devices/usb.c:239 modules/devices/usb.c:355 +msgid "Product ID" +msgstr "" + +#: modules/devices/usb.c:231 +msgid "Port" +msgstr "" + +#: modules/devices/usb.c:241 +msgid "Level" +msgstr "" + +#: modules/devices/x86/processor.c:149 +msgid "Cache information not available=\n" +msgstr "Informacion de cache no disponible=\n" + +#: modules/devices/x86/processor.c:155 #, c-format +msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" +msgstr "Nivel %d (%s)=%d-way set-associative, %d sets, %dKB tamaño\n" + +#. /cache type, as appears in: Level 1 (Data) +#: modules/devices/x86/processor.c:170 +msgctxt "cache-type" +msgid "Data" +msgstr "Datos" + +#. /cache type, as appears in: Level 1 (Instruction) +#: modules/devices/x86/processor.c:171 +msgctxt "cache-type" +msgid "Instruction" +msgstr "Instruccion" + +#. /cache type, as appears in: Level 2 (Unified) +#: modules/devices/x86/processor.c:172 +msgctxt "cache-type" +msgid "Unified" +msgstr "Unificado" + +#: modules/devices/x86/processor.c:410 +msgid "Model Name" +msgstr "Nombre Modelo" + +#: modules/devices/x86/processor.c:411 +msgid "Family, model, stepping" +msgstr "Familia, modelo, escalado" + +#: modules/devices/x86/processor.c:417 +msgid "Microcode Version" +msgstr "" + +#: modules/devices/x86/processor.c:418 +msgid "Configuration" +msgstr "Configuracion" + +#: modules/devices/x86/processor.c:419 +msgid "Cache Size" +msgstr "Tamaño cache" + +#: modules/devices/x86/processor.c:419 +msgid "kb" +msgstr "kb" + +#: modules/devices/x86/processor.c:426 +msgid "Power Management" +msgstr "Manejador energia" + +#: modules/devices/x86/processor.c:427 +msgid "Bug Workarounds" +msgstr "Manejo de errores" + +#: modules/devices/x86/processor.c:454 modules/devices/x86/processor.c:468 +msgid "Package Information" +msgstr "" + +#. /flag:fpu +#: modules/devices/x86/x86_data.c:43 +msgctxt "x86-flag" +msgid "Onboard FPU (floating point support)" +msgstr "FPÜ embebido (soporte punto flotante)" + +#. /flag:vme +#: modules/devices/x86/x86_data.c:44 +msgctxt "x86-flag" +msgid "Virtual 8086 mode enhancements" +msgstr "Virtual 8086 modo ampliado" + +#. /flag:de +#: modules/devices/x86/x86_data.c:45 +msgctxt "x86-flag" +msgid "Debugging Extensions (CR4.DE)" +msgstr "Extensiuones depurado (CR4.DE)" + +#. /flag:pse +#: modules/devices/x86/x86_data.c:46 +msgctxt "x86-flag" +msgid "Page Size Extensions (4MB memory pages)" +msgstr "Extensiones de pagina (paginas de 4MB memoria)" + +#. /flag:tsc +#: modules/devices/x86/x86_data.c:47 +msgctxt "x86-flag" +msgid "Time Stamp Counter (RDTSC)" +msgstr "contador de estampa de tiempo (RDTSC)" + +#. /flag:msr +#: modules/devices/x86/x86_data.c:48 +msgctxt "x86-flag" +msgid "Model-Specific Registers (RDMSR, WRMSR)" +msgstr "Registros de modelo-especificos (RDMSR, WRMSR)" + +#. /flag:pae +#: modules/devices/x86/x86_data.c:49 +msgctxt "x86-flag" +msgid "Physical Address Extensions (support for more than 4GB of RAM)" +msgstr "Extension de direcciones fisicas (soporte de mas de 4GB de RAM)" + +#. /flag:mce +#: modules/devices/x86/x86_data.c:50 +msgctxt "x86-flag" +msgid "Machine Check Exception" +msgstr "Excepciones de revision de maquina" + +#. /flag:cx8 +#: modules/devices/x86/x86_data.c:51 +msgctxt "x86-flag" +msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" +msgstr "Instrucciones CMPXCHG8 (64-bit compare-and-swap)" + +#. /flag:apic +#: modules/devices/x86/x86_data.c:52 +msgctxt "x86-flag" +msgid "Onboard APIC" +msgstr "APIC embebida" + +#. /flag:sep +#: modules/devices/x86/x86_data.c:53 +msgctxt "x86-flag" +msgid "SYSENTER/SYSEXIT" +msgstr "SYSENTER/SYSEXIT" + +#. /flag:mtrr +#: modules/devices/x86/x86_data.c:54 +msgctxt "x86-flag" +msgid "Memory Type Range Registers" +msgstr "Registros de rango de tipo de Memoria" + +#. /flag:pge +#: modules/devices/x86/x86_data.c:55 +msgctxt "x86-flag" +msgid "Page Global Enable (global bit in PDEs and PTEs)" +msgstr "Habilitador de pagina global (global bit in PDEs and PTEs)" + +#. /flag:mca +#: modules/devices/x86/x86_data.c:56 +msgctxt "x86-flag" +msgid "Machine Check Architecture" +msgstr "Revisor de arquitectura de maquina" + +#. /flag:cmov +#: modules/devices/x86/x86_data.c:57 +msgctxt "x86-flag" +msgid "CMOV instructions (conditional move) (also FCMOV)" +msgstr "Instrucciones CMOV (mover condicionalmente) (tambien FCMOV)" + +#. /flag:pat +#: modules/devices/x86/x86_data.c:58 +msgctxt "x86-flag" +msgid "Page Attribute Table" +msgstr "Tabla de atributos de pagina" + +#. /flag:pse36 +#: modules/devices/x86/x86_data.c:59 +msgctxt "x86-flag" +msgid "36-bit PSEs (huge pages)" +msgstr "36-bit PSEs (huge pages)" + +#. /flag:pn +#: modules/devices/x86/x86_data.c:60 +msgctxt "x86-flag" +msgid "Processor serial number" +msgstr "Numero serial de prosesador" + +#. /flag:clflush +#: modules/devices/x86/x86_data.c:61 +msgctxt "x86-flag" +msgid "Cache Line Flush instruction" +msgstr "Cache Line Flush instruction" + +#. /flag:dts +#: modules/devices/x86/x86_data.c:62 +msgctxt "x86-flag" msgid "" -"[ARP Table]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Interface\n" -"ColumnTitle$Extra1=MAC Address\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[Tabla ARP]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Dirección IP\n" -"ColumnTitle$Value=Interfaz\n" -"ColumnTitle$Extra1=Dirección MAC\n" -"ShowColumnHeaders=true\n" +"Debug Store (buffer for debugging and profiling instructions), or " +"alternately: digital thermal sensor" +msgstr "" +"Guardado de depurado (buffer para depurado y pruebas de instrucciones), o " +"alternativamente: sensor de temperatura digital" -#: modules//network.c:321 -#, c-format +#. /flag:acpi +#: modules/devices/x86/x86_data.c:63 +msgctxt "x86-flag" +msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" +msgstr "" +"ACPI via MSR (monitor de temperatura y reloj de modulacion de velocidad)" + +#. /flag:mmx +#: modules/devices/x86/x86_data.c:64 +msgctxt "x86-flag" +msgid "Multimedia Extensions" +msgstr "Extensiones multimedia" + +#. /flag:fxsr +#: modules/devices/x86/x86_data.c:65 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" +msgstr "FXSAVE/FXRSTOR, CR4.OSFXSR" + +#. /flag:sse +#: modules/devices/x86/x86_data.c:66 +msgctxt "x86-flag" +msgid "Intel SSE vector instructions" +msgstr "Intel SSE instrucciones de vectorizado" + +#. /flag:sse2 +#: modules/devices/x86/x86_data.c:67 +msgctxt "x86-flag" +msgid "SSE2" +msgstr "SSE2" + +#. /flag:ss +#: modules/devices/x86/x86_data.c:68 +msgctxt "x86-flag" +msgid "CPU self snoop" +msgstr "CPU self snoop" + +#. /flag:ht +#: modules/devices/x86/x86_data.c:69 +msgctxt "x86-flag" +msgid "Hyper-Threading" +msgstr "Hyper-Threading" + +#. /flag:tm +#: modules/devices/x86/x86_data.c:70 +msgctxt "x86-flag" +msgid "Automatic clock control (Thermal Monitor)" +msgstr "control automatico de reloj (Monitor de temperatura)" + +#. /flag:ia64 +#: modules/devices/x86/x86_data.c:71 +msgctxt "x86-flag" msgid "" -"[Name servers]\n" -"%s\n" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" +"Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " +"x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" -"[Servidores de nombres]\n" -"%s\n" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" +"Intel Itanium Arquitectura 64-bit (no confundir con el 64-bit Intel de " +"architecture x86 con el flag x86-64 o bit \"AMD64\" indicado por flag lm)" + +#. /flag:pbe +#: modules/devices/x86/x86_data.c:72 +msgctxt "x86-flag" +msgid "Pending Break Enable (PBE# pin) wakeup support" +msgstr "Pending Break Enable (PBE# pin) despertado" + +#. /flag:syscall +#: modules/devices/x86/x86_data.c:75 +msgctxt "x86-flag" +msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" +msgstr "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" + +#. /flag:mp +#: modules/devices/x86/x86_data.c:76 +msgctxt "x86-flag" +msgid "Multiprocessing Capable." +msgstr "Capacidades multiprocesos" + +#. /flag:nx +#: modules/devices/x86/x86_data.c:77 +msgctxt "x86-flag" +msgid "Execute Disable" +msgstr "Execute Disable" + +#. /flag:mmxext +#: modules/devices/x86/x86_data.c:78 +msgctxt "x86-flag" +msgid "AMD MMX extensions" +msgstr "Extensiones AMD MMX" + +#. /flag:fxsr_opt +#: modules/devices/x86/x86_data.c:79 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR optimizations" +msgstr "Optimizaciones FXSAVE/FXRSTOR" + +#. /flag:pdpe1gb +#: modules/devices/x86/x86_data.c:80 +msgctxt "x86-flag" +msgid "One GB pages (allows hugepagesz=1G)" +msgstr "Paginas One GB (permite hugepagesz=1G)" + +#. /flag:rdtscp +#: modules/devices/x86/x86_data.c:81 +msgctxt "x86-flag" +msgid "Read Time-Stamp Counter and Processor ID" +msgstr "Read Time-Stamp Counter and Processor ID" + +#. /flag:lm +#: modules/devices/x86/x86_data.c:82 +msgctxt "x86-flag" +msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" +msgstr "" +"Modo Largo (x86-64: amd64, conocido como Intel 64, ejem. compatible 64-bit)" -#: modules//network.c:331 -#, c-format +#. /flag:3dnow +#: modules/devices/x86/x86_data.c:83 +msgctxt "x86-flag" +msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" +msgstr "" +"3DNow! (AMD instrucciones de vectorizado, competidor de las Intel SSE1)" + +#. /flag:3dnowext +#: modules/devices/x86/x86_data.c:84 +msgctxt "x86-flag" +msgid "AMD 3DNow! extensions" +msgstr "AMD 3DNow! extensions" + +#. /flag:recovery +#: modules/devices/x86/x86_data.c:86 +msgctxt "x86-flag" +msgid "CPU in recovery mode" +msgstr "CPU en modo recuperacion" + +#. /flag:longrun +#: modules/devices/x86/x86_data.c:87 +msgctxt "x86-flag" +msgid "Longrun power control" +msgstr "control energia Longrun" + +#. /flag:lrti +#: modules/devices/x86/x86_data.c:88 +msgctxt "x86-flag" +msgid "LongRun table interface" +msgstr "Interfaz de tabla LongRun" + +#. /flag:cxmmx +#: modules/devices/x86/x86_data.c:90 +msgctxt "x86-flag" +msgid "Cyrix MMX extensions" +msgstr "Cyrix MMX extensions" + +#. /flag:k6_mtrr +#: modules/devices/x86/x86_data.c:91 +msgctxt "x86-flag" +msgid "AMD K6 nonstandard MTRRs" +msgstr "AMD K6 nonstandard MTRRs" + +#. /flag:cyrix_arr +#: modules/devices/x86/x86_data.c:92 +msgctxt "x86-flag" +msgid "Cyrix ARRs (= MTRRs)" +msgstr "Cyrix ARRs (= MTRRs)" + +#. /flag:centaur_mcr +#: modules/devices/x86/x86_data.c:93 +msgctxt "x86-flag" +msgid "Centaur MCRs (= MTRRs)" +msgstr "Centaur MCRs (= MTRRs)" + +#. /flag:constant_tsc +#: modules/devices/x86/x86_data.c:94 +msgctxt "x86-flag" +msgid "TSC ticks at a constant rate" +msgstr "TSC ticks a una velocidad constante" + +#. /flag:up +#: modules/devices/x86/x86_data.c:95 +msgctxt "x86-flag" +msgid "SMP kernel running on UP" +msgstr "Kernel SMP ejecutandose" + +#. /flag:art +#: modules/devices/x86/x86_data.c:96 +msgctxt "x86-flag" +msgid "Always-Running Timer" +msgstr "Timer Siempre-ejecutandose" + +#. /flag:arch_perfmon +#: modules/devices/x86/x86_data.c:97 +msgctxt "x86-flag" +msgid "Intel Architectural PerfMon" +msgstr "Arquitectura Intel PerfMon" + +#. /flag:pebs +#: modules/devices/x86/x86_data.c:98 +msgctxt "x86-flag" +msgid "Precise-Event Based Sampling" +msgstr "" + +#. /flag:bts +#: modules/devices/x86/x86_data.c:99 +msgctxt "x86-flag" +msgid "Branch Trace Store" +msgstr "" + +#. /flag:rep_good +#: modules/devices/x86/x86_data.c:100 +msgctxt "x86-flag" +msgid "rep microcode works well" +msgstr "rep microcode trabaja bien" + +#. /flag:acc_power +#: modules/devices/x86/x86_data.c:101 +msgctxt "x86-flag" +msgid "AMD accumulated power mechanism" +msgstr "AMD mecanismo de energia acumulada" + +#. /flag:nopl +#: modules/devices/x86/x86_data.c:102 +msgctxt "x86-flag" +msgid "The NOPL (0F 1F) instructions" +msgstr "Instrucciones NOPL (0F 1F)" + +#. /flag:xtopology +#: modules/devices/x86/x86_data.c:103 +msgctxt "x86-flag" +msgid "cpu topology enum extensions" +msgstr "extensiones de enumaracion de cpu" + +#. /flag:tsc_reliable +#: modules/devices/x86/x86_data.c:104 +msgctxt "x86-flag" +msgid "TSC is known to be reliable" +msgstr "TSC esta en modo confiable" + +#. /flag:nonstop_tsc +#: modules/devices/x86/x86_data.c:105 +msgctxt "x86-flag" +msgid "TSC does not stop in C states" +msgstr "TSC no se detiene en estado C" + +#. /flag:extd_apicid +#: modules/devices/x86/x86_data.c:106 +msgctxt "x86-flag" +msgid "has extended APICID (8 bits)" +msgstr "tiene extenciones APICID (8 bits)" + +#. /flag:amd_dcm +#: modules/devices/x86/x86_data.c:107 +msgctxt "x86-flag" +msgid "multi-node processor" +msgstr "procesador muti-nodo" + +#. /flag:aperfmperf +#: modules/devices/x86/x86_data.c:108 +msgctxt "x86-flag" +msgid "APERFMPERF" +msgstr "APERFMPERF" + +#. /flag:eagerfpu +#: modules/devices/x86/x86_data.c:109 +msgctxt "x86-flag" +msgid "Non lazy FPU restore" +msgstr "FPU restauracion tardia" + +#. /flag:nonstop_tsc_s3 +#: modules/devices/x86/x86_data.c:110 +msgctxt "x86-flag" +msgid "TSC doesn't stop in S3 state" +msgstr "TSC no se detiene en estado S3" + +#. /flag:mce_recovery +#: modules/devices/x86/x86_data.c:111 +msgctxt "x86-flag" +msgid "CPU has recoverable machine checks" +msgstr "CPU tiene corroborador de maquina recuperable" + +#. /flag:pni +#: modules/devices/x86/x86_data.c:114 +msgctxt "x86-flag" +msgid "SSE-3 (\"Prescott New Instructions\")" +msgstr "SSE-3 (\"Nuevas Instrucciones Prescott\")" + +#. /flag:pclmulqdq +#: modules/devices/x86/x86_data.c:115 +msgctxt "x86-flag" msgid "" -"[Connections]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Local Address\n" -"ColumnTitle$Value=Protocol\n" -"ColumnTitle$Extra1=Foreign Address\n" -"ColumnTitle$Extra2=State\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[Conexiones]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Local Address\n" -"ColumnTitle$Value=Protocol\n" -"ColumnTitle$Extra1=Foreign Address\n" -"ColumnTitle$Extra2=State\n" -"ShowColumnHeaders=true\n" - -#: modules//network.c:345 -#, c-format +"Perform a Carry-Less Multiplication of Quadword instruction - accelerator " +"for GCM)" +msgstr "" +"Realizar una Multiplicación Vaga de la instrucción - aceleracion Quadword " +"para GCM)" + +#. /flag:dtes64 +#: modules/devices/x86/x86_data.c:116 +msgctxt "x86-flag" +msgid "64-bit Debug Store" +msgstr "Almacenamiento de depuracion 64-bit" + +#. /flag:monitor +#: modules/devices/x86/x86_data.c:117 +msgctxt "x86-flag" +msgid "Monitor/Mwait support (Intel SSE3 supplements)" +msgstr "Soporte Monitor/Mwait (suplementos Intel SSE3" + +#. /flag:ds_cpl +#: modules/devices/x86/x86_data.c:118 +msgctxt "x86-flag" +msgid "CPL Qual. Debug Store" +msgstr "CPL Qual. Debug Store" + +#. /flag:vmx +#: modules/devices/x86/x86_data.c:119 +msgctxt "x86-flag" +msgid "Hardware virtualization, Intel VMX" +msgstr "Virtualizacion de hardware, Intel VMX" + +#. /flag:smx +#: modules/devices/x86/x86_data.c:120 +msgctxt "x86-flag" +msgid "Safer mode TXT (TPM support)" +msgstr "Mode asegurado TXT (soporte TPM)" + +#. /flag:est +#: modules/devices/x86/x86_data.c:121 +msgctxt "x86-flag" +msgid "Enhanced SpeedStep" +msgstr "SpeedStep ampliado" + +#. /flag:tm2 +#: modules/devices/x86/x86_data.c:122 +msgctxt "x86-flag" +msgid "Thermal Monitor 2" +msgstr "Monitor termico 2" + +#. /flag:ssse3 +#: modules/devices/x86/x86_data.c:123 +msgctxt "x86-flag" +msgid "Supplemental SSE-3" +msgstr "Suplemento SSE-3" + +#. /flag:cid +#: modules/devices/x86/x86_data.c:124 +msgctxt "x86-flag" +msgid "Context ID" +msgstr "Contexto ID" + +#. /flag:sdbg +#: modules/devices/x86/x86_data.c:125 +msgctxt "x86-flag" +msgid "silicon debug" +msgstr "depurador silicon" + +#. /flag:fma +#: modules/devices/x86/x86_data.c:126 +msgctxt "x86-flag" +msgid "Fused multiply-add" +msgstr "" + +#. /flag:cx16 +#: modules/devices/x86/x86_data.c:127 +msgctxt "x86-flag" +msgid "CMPXCHG16B" +msgstr "CMPXCHG16B" + +#. /flag:xtpr +#: modules/devices/x86/x86_data.c:128 +msgctxt "x86-flag" +msgid "Send Task Priority Messages" +msgstr "Enviador de Mesajes de Prioridad de Tareas" + +#. /flag:pdcm +#: modules/devices/x86/x86_data.c:129 +msgctxt "x86-flag" +msgid "Performance Capabilities" +msgstr "Capacidades de Rendimiento" + +#. /flag:pcid +#: modules/devices/x86/x86_data.c:130 +msgctxt "x86-flag" +msgid "Process Context Identifiers" +msgstr "Identificador de contexto de proceso" + +#. /flag:dca +#: modules/devices/x86/x86_data.c:131 +msgctxt "x86-flag" +msgid "Direct Cache Access" +msgstr "Acceso Directo de Cache" + +#. /flag:sse4_1 +#: modules/devices/x86/x86_data.c:132 +msgctxt "x86-flag" +msgid "SSE-4.1" +msgstr "SSE-4.1" + +#. /flag:sse4_2 +#: modules/devices/x86/x86_data.c:133 +msgctxt "x86-flag" +msgid "SSE-4.2" +msgstr "SSE-4.2" + +#. /flag:x2apic +#: modules/devices/x86/x86_data.c:134 +msgctxt "x86-flag" +msgid "x2APIC" +msgstr "x2APIC" + +#. /flag:movbe +#: modules/devices/x86/x86_data.c:135 +msgctxt "x86-flag" +msgid "Move Data After Swapping Bytes instruction" +msgstr "" + +#. /flag:popcnt +#: modules/devices/x86/x86_data.c:136 +msgctxt "x86-flag" msgid "" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Interface\n" -"ColumnTitle$Value=IP Address\n" -"ColumnTitle$Extra1=Sent\n" -"ColumnTitle$Extra2=Received\n" -"ShowColumnHeaders=true\n" -"%s" +"Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." +"e. bit count)" msgstr "" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Interfaz\n" -"ColumnTitle$Value=Dirección IP\n" -"ColumnTitle$Extra1=Enviado\n" -"ColumnTitle$Extra2=Recibido\n" -"ShowColumnHeaders=true\n" -"%s" +"Devuelve la cuenta de número de bits establecida en 1 instrucción (Hamming " +"weight, ex. cuenta bit)" + +#. /flag:tsc_deadline_timer +#: modules/devices/x86/x86_data.c:137 +msgctxt "x86-flag" +msgid "Tsc deadline timer" +msgstr "Tsc deadline timer" + +#. /flag:aes/aes-ni +#: modules/devices/x86/x86_data.c:138 +msgctxt "x86-flag" +msgid "Advanced Encryption Standard (New Instructions)" +msgstr "Estándar de cifrado avanzado (nuevas instrucciones)" + +#. /flag:xsave +#: modules/devices/x86/x86_data.c:139 +msgctxt "x86-flag" +msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" +msgstr "" +"Save Processor Extended States: también proporciona XGETBY, XRSTOR, XSETBY" -#: modules//network.c:361 -#, c-format +#. /flag:avx +#: modules/devices/x86/x86_data.c:140 +msgctxt "x86-flag" +msgid "Advanced Vector Extensions" +msgstr "" + +#. /flag:f16c +#: modules/devices/x86/x86_data.c:141 +msgctxt "x86-flag" +msgid "16-bit fp conversions (CVT16)" +msgstr "conversiones fp 16-bit (CVT16)" + +#. /flag:rdrand +#: modules/devices/x86/x86_data.c:142 +msgctxt "x86-flag" +msgid "Read Random Number from hardware random number generator instruction" +msgstr "" +"Lector de Numeros Aleatorios desde generador de instruccion de aleatorios de " +"Hardware" + +#. /flag:hypervisor +#: modules/devices/x86/x86_data.c:143 +msgctxt "x86-flag" +msgid "Running on a hypervisor" +msgstr "Corriendo en un hipervisor" + +#. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 +#. /flag:rng +#: modules/devices/x86/x86_data.c:145 +msgctxt "x86-flag" +msgid "Random Number Generator present (xstore)" +msgstr "Generador de numeros aleatorios presente (xstore)" + +#. /flag:rng_en +#: modules/devices/x86/x86_data.c:146 +msgctxt "x86-flag" +msgid "Random Number Generator enabled" +msgstr "Generador de numeros aleatorios activo" + +#. /flag:ace +#: modules/devices/x86/x86_data.c:147 +msgctxt "x86-flag" +msgid "on-CPU crypto (xcrypt)" +msgstr "encriptacion en-CPU (xcrypt)" + +#. /flag:ace_en +#: modules/devices/x86/x86_data.c:148 +msgctxt "x86-flag" +msgid "on-CPU crypto enabled" +msgstr "encriptacion en-CPU activada" + +#. /flag:ace2 +#: modules/devices/x86/x86_data.c:149 +msgctxt "x86-flag" +msgid "Advanced Cryptography Engine v2" +msgstr "Manejador Encriptamiento Avanzado v2" + +#. /flag:ace2_en +#: modules/devices/x86/x86_data.c:150 +msgctxt "x86-flag" +msgid "ACE v2 enabled" +msgstr "ACE v2 presente" + +#. /flag:phe +#: modules/devices/x86/x86_data.c:151 +msgctxt "x86-flag" +msgid "PadLock Hash Engine" +msgstr "Manejador PadLock Hash" + +#. /flag:phe_en +#: modules/devices/x86/x86_data.c:152 +msgctxt "x86-flag" +msgid "PHE enabled" +msgstr "PHE presente" + +#. /flag:pmm +#: modules/devices/x86/x86_data.c:153 +msgctxt "x86-flag" +msgid "PadLock Montgomery Multiplier" +msgstr "PadLock Montgomery Multiplier" + +#. /flag:pmm_en +#: modules/devices/x86/x86_data.c:154 +msgctxt "x86-flag" +msgid "PMM enabled" +msgstr "PMM presente" + +#. /flag:lahf_lm +#: modules/devices/x86/x86_data.c:156 +msgctxt "x86-flag" +msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" +msgstr "Carga AH desde Flags (LAHF) y almacena AH en Flags (SAHF) en modo long" + +#. /flag:cmp_legacy +#: modules/devices/x86/x86_data.c:157 +msgctxt "x86-flag" +msgid "If yes HyperThreading not valid" +msgstr "Si yes/si HyperThreading no valido" + +#. /flag:svm +#: modules/devices/x86/x86_data.c:158 +msgctxt "x86-flag" +msgid "\"Secure virtual machine\": AMD-V" +msgstr "\"Maquina Virtual Segura\": AMD-V" + +#. /flag:extapic +#: modules/devices/x86/x86_data.c:159 +msgctxt "x86-flag" +msgid "Extended APIC space" +msgstr "Espacio APIC Extendida" + +#. /flag:cr8_legacy +#: modules/devices/x86/x86_data.c:160 +msgctxt "x86-flag" +msgid "CR8 in 32-bit mode" +msgstr "CR8 en modo 32-bit" + +#. /flag:abm +#: modules/devices/x86/x86_data.c:161 +msgctxt "x86-flag" +msgid "Advanced Bit Manipulation" +msgstr "Advanced Bit Manipulation" + +#. /flag:sse4a +#: modules/devices/x86/x86_data.c:162 +msgctxt "x86-flag" +msgid "SSE-4A" +msgstr "SSE-4A" + +#. /flag:misalignsse +#: modules/devices/x86/x86_data.c:163 +msgctxt "x86-flag" msgid "" -"[IP routing table]\n" -"%s\n" -"[$ShellParam$]\n" -"ViewType=0\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Destination / Gateway\n" -"ColumnTitle$Value=Interface\n" -"ColumnTitle$Extra1=Flags\n" -"ColumnTitle$Extra2=Mask\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[Tabla de ruteo IP]\n" -"%s\n" -"[$ShellParam$]\n" -"ViewType=0\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Destino / Puerta de enlace\n" -"ColumnTitle$Value=Interfaz\n" -"ColumnTitle$Extra1=Flags\n" -"ColumnTitle$Extra2=Máscara\n" -"ShowColumnHeaders=true\n" - -#: modules//network.c:399 -msgid "Network" -msgstr "Red" +"indicates if a general-protection exception (#GP) is generated when some " +"legacy SSE instructions operate on unaligned data. Also depends on CR0 and " +"Alignment Checking bit" +msgstr "" +"Indica si se genera una excepción de protección general (#GP) cuando algunas " +"instrucciones heredadas de SSE funcionan con datos no alineados. También " +"depende de CR0 y Alignment Checking bit" + +#. /flag:3dnowprefetch +#: modules/devices/x86/x86_data.c:164 +msgctxt "x86-flag" +msgid "3DNow prefetch instructions" +msgstr "Instrucciones 3DNow prefetch" + +#. /flag:osvw +#: modules/devices/x86/x86_data.c:165 +msgctxt "x86-flag" +msgid "" +"indicates OS Visible Workaround, which allows the OS to work around " +"processor errata." +msgstr "" +"indica medidas visibles al OS, que permitan que el OS pueda manejar erratas " +"del procesador" + +#. /flag:ibs +#: modules/devices/x86/x86_data.c:166 +msgctxt "x86-flag" +msgid "Instruction Based Sampling" +msgstr "Instruction Based Sampling" + +#. /flag:xop +#: modules/devices/x86/x86_data.c:167 +msgctxt "x86-flag" +msgid "extended AVX instructions" +msgstr "Instrucciones AVX extendidas" + +#. /flag:skinit +#: modules/devices/x86/x86_data.c:168 +msgctxt "x86-flag" +msgid "SKINIT/STGI instructions" +msgstr "Instrucciones SKINIT/STGI" + +#. /flag:wdt +#: modules/devices/x86/x86_data.c:169 +msgctxt "x86-flag" +msgid "Watchdog timer" +msgstr "" -#: modules//network.c:432 -msgid "Gathers information about this computer's network connection" -msgstr "Obtiene información sobre la conexión de red de esta computadora" +#. /flag:lwp +#: modules/devices/x86/x86_data.c:170 +msgctxt "x86-flag" +msgid "Light Weight Profiling" +msgstr "" -#: modules//benchmark.c:50 -msgid "CPU Blowfish" +#. /flag:fma4 +#: modules/devices/x86/x86_data.c:171 +msgctxt "x86-flag" +msgid "4 operands MAC instructions" msgstr "" -#: modules//benchmark.c:51 -msgid "CPU CryptoHash" +#. /flag:tce +#: modules/devices/x86/x86_data.c:172 +msgctxt "x86-flag" +msgid "translation cache extension" msgstr "" -#: modules//benchmark.c:52 -msgid "CPU Fibonacci" +#. /flag:nodeid_msr +#: modules/devices/x86/x86_data.c:173 +msgctxt "x86-flag" +msgid "NodeId MSR" msgstr "" -#: modules//benchmark.c:53 -msgid "CPU N-Queens" -msgstr "CPU N-Reinas" +#. /flag:tbm +#: modules/devices/x86/x86_data.c:174 +msgctxt "x86-flag" +msgid "Trailing Bit Manipulation" +msgstr "" -#: modules//benchmark.c:54 -msgid "FPU FFT" +#. /flag:topoext +#: modules/devices/x86/x86_data.c:175 +msgctxt "x86-flag" +msgid "Topology Extensions CPUID leafs" msgstr "" -#: modules//benchmark.c:55 -msgid "FPU Raytracing" -msgstr "FPU trazado de rayos" +#. /flag:perfctr_core +#: modules/devices/x86/x86_data.c:176 +msgctxt "x86-flag" +msgid "Core Performance Counter Extensions" +msgstr "" -#: modules//benchmark.c:56 -msgid "GPU Drawing" -msgstr "GPU dibujo" +#. /flag:perfctr_nb +#: modules/devices/x86/x86_data.c:177 +msgctxt "x86-flag" +msgid "NB Performance Counter Extensions" +msgstr "" -#: modules//benchmark.c:222 -#, c-format -msgid "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"<big><b>This Machine</b></big>=%.3f|%s MHz\n" -"%s" +#. /flag:bpext +#: modules/devices/x86/x86_data.c:178 +msgctxt "x86-flag" +msgid "data breakpoint extension" msgstr "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=Reloj de la CPU\n" -"ColumnTitle$Progress=Resultados\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"<big><b>Este equipo</b></big>=%.3f|%s MHz\n" -"%s" -#: modules//benchmark.c:235 -#, c-format -msgid "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"%s" +#. /flag:ptsc +#: modules/devices/x86/x86_data.c:179 +msgctxt "x86-flag" +msgid "performance time-stamp counter" msgstr "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=Reloj del equipo CPU\n" -"ColumnTitle$Progress=Resultados\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"%s" -#: modules//benchmark.c:363 -#, c-format -msgid "Benchmarking: <b>%s</b>." -msgstr "Ejecutando benchmark: <b>%s</b>." +#. /flag:perfctr_l2 +#: modules/devices/x86/x86_data.c:180 +msgctxt "x86-flag" +msgid "L2 Performance Counter Extensions" +msgstr "" -#: modules//benchmark.c:377 -msgid "Benchmarking. Please do not move your mouse or press any keys." -msgstr "Ejecutando benchmarks. Por favor no mueva el mouse ni use el teclado." +#. /flag:mwaitx +#: modules/devices/x86/x86_data.c:181 +msgctxt "x86-flag" +msgid "MWAIT extension (MONITORX/MWAITX)" +msgstr "" -#: modules//benchmark.c:381 -msgid "Cancel" -msgstr "Cancelar" +#. /flag:cpb +#: modules/devices/x86/x86_data.c:183 +msgctxt "x86-flag" +msgid "AMD Core Performance Boost" +msgstr "" -#: modules//benchmark.c:511 -msgid "Results in MiB/second. Higher is better." -msgstr "Resultados en MiB/segundo. Más alto es mejor." +#. /flag:epb +#: modules/devices/x86/x86_data.c:184 +msgctxt "x86-flag" +msgid "IA32_ENERGY_PERF_BIAS support" +msgstr "" -#: modules//benchmark.c:514 -msgid "Results in HIMarks. Higher is better." -msgstr "Resultados en HIMarks. Más alto es mejor." +#. /flag:hw_pstate +#: modules/devices/x86/x86_data.c:185 +msgctxt "x86-flag" +msgid "AMD HW-PState" +msgstr "" -#: modules//benchmark.c:521 -msgid "Results in seconds. Lower is better." -msgstr "Resultados en segundos. Más bajo es mejor." +#. /flag:proc_feedback +#: modules/devices/x86/x86_data.c:186 +msgctxt "x86-flag" +msgid "AMD ProcFeedbackInterface" +msgstr "" -#: modules//benchmark.c:529 -msgid "Benchmarks" -msgstr "Benchmarks" +#. /flag:intel_pt +#: modules/devices/x86/x86_data.c:187 +msgctxt "x86-flag" +msgid "Intel Processor Tracing" +msgstr "" -#: modules//benchmark.c:547 -msgid "Perform tasks and compare with other systems" -msgstr "Realizar tareas y comparar con otros sistemas" +#. /flag:tpr_shadow +#: modules/devices/x86/x86_data.c:189 +msgctxt "x86-flag" +msgid "Intel TPR Shadow" +msgstr "" -#: modules//benchmark.c:634 -msgid "Send benchmark results" -msgstr "Enviar resultados de los benchmark" +#. /flag:vnmi +#: modules/devices/x86/x86_data.c:190 +msgctxt "x86-flag" +msgid "Intel Virtual NMI" +msgstr "" -#: modules//benchmark.c:639 -msgid "Receive benchmark results" -msgstr "Recibir resultados de los benchmark" +#. /flag:flexpriority +#: modules/devices/x86/x86_data.c:191 +msgctxt "x86-flag" +msgid "Intel FlexPriority" +msgstr "" -#: hardinfo//util.c:102 -#: hardinfo//util.c:105 -#: hardinfo//util.c:110 -#, c-format -msgid "%d minute" -msgid_plural "%d minutes" -msgstr[0] "%d minuto" -msgstr[1] "%d minutos" +#. /flag:ept +#: modules/devices/x86/x86_data.c:192 +msgctxt "x86-flag" +msgid "Intel Extended Page Table" +msgstr "" -#: hardinfo//util.c:104 -#, c-format -msgid "%d hour, " -msgid_plural "%d hours, " -msgstr[0] "%d hora, " -msgstr[1] "%d horas, " +#. /flag:vpid +#: modules/devices/x86/x86_data.c:193 +msgctxt "x86-flag" +msgid "Intel Virtual Processor ID" +msgstr "" -#: hardinfo//util.c:108 -#, c-format -msgid "%d day, " -msgid_plural "%d days, " -msgstr[0] "%d día, " -msgstr[1] "%d días, " +#. /flag:vmmcall +#: modules/devices/x86/x86_data.c:194 +msgctxt "x86-flag" +msgid "prefer VMMCALL to VMCALL" +msgstr "" -#: hardinfo//util.c:109 -#, c-format -msgid "%d hour and " -msgid_plural "%d hours and " -msgstr[0] "%d hora y " -msgstr[1] "%d horas y " +#. /flag:fsgsbase +#: modules/devices/x86/x86_data.c:196 +msgctxt "x86-flag" +msgid "{RD/WR}{FS/GS}BASE instructions" +msgstr "" -#: hardinfo//util.c:116 -#, c-format -msgid "%.1f B" +#. /flag:tsc_adjust +#: modules/devices/x86/x86_data.c:197 +msgctxt "x86-flag" +msgid "TSC adjustment MSR" msgstr "" -#: hardinfo//util.c:118 -#, c-format -msgid "%.1f KiB" +#. /flag:bmi1 +#: modules/devices/x86/x86_data.c:198 +msgctxt "x86-flag" +msgid "1st group bit manipulation extensions" msgstr "" -#: hardinfo//util.c:120 -#, c-format -msgid "%.1f MiB" +#. /flag:hle +#: modules/devices/x86/x86_data.c:199 +msgctxt "x86-flag" +msgid "Hardware Lock Elision" msgstr "" -#: hardinfo//util.c:122 -#, c-format -msgid "%.1f GiB" +#. /flag:avx2 +#: modules/devices/x86/x86_data.c:200 +msgctxt "x86-flag" +msgid "AVX2 instructions" +msgstr "Instrucciones AVX2" + +#. /flag:smep +#: modules/devices/x86/x86_data.c:201 +msgctxt "x86-flag" +msgid "Supervisor Mode Execution Protection" msgstr "" -#: hardinfo//util.c:336 -msgid "Error" -msgstr "Error" +#. /flag:bmi2 +#: modules/devices/x86/x86_data.c:202 +msgctxt "x86-flag" +msgid "2nd group bit manipulation extensions" +msgstr "" -#: hardinfo//util.c:336 -#: hardinfo//util.c:352 -msgid "Warning" -msgstr "Advertencia" +#. /flag:erms +#: modules/devices/x86/x86_data.c:203 +msgctxt "x86-flag" +msgid "Enhanced REP MOVSB/STOSB" +msgstr "" -#: hardinfo//util.c:351 -msgid "Fatal Error" -msgstr "Error fatal" +#. /flag:invpcid +#: modules/devices/x86/x86_data.c:204 +msgctxt "x86-flag" +msgid "Invalidate Processor Context ID" +msgstr "" -#: hardinfo//util.c:376 -msgid "creates a report and prints to standard output" -msgstr "crea un reporte y lo imprime en la salida estándar" +#. /flag:rtm +#: modules/devices/x86/x86_data.c:205 +msgctxt "x86-flag" +msgid "Restricted Transactional Memory" +msgstr "" -#: hardinfo//util.c:382 -msgid "chooses a report format (text, html)" -msgstr "elige un formato para el reporte (texto, html)" +#. /flag:cqm +#: modules/devices/x86/x86_data.c:206 +msgctxt "x86-flag" +msgid "Cache QoS Monitoring" +msgstr "" -#: hardinfo//util.c:388 -msgid "run benchmark; requires benchmark.so to be loaded" -msgstr "correr benchmark; requiere benchmark.so para ser cargado" +#. /flag:mpx +#: modules/devices/x86/x86_data.c:207 +msgctxt "x86-flag" +msgid "Memory Protection Extension" +msgstr "" -#: hardinfo//util.c:394 -msgid "lists modules" -msgstr "lista los módulos" +#. /flag:avx512f +#: modules/devices/x86/x86_data.c:208 +msgctxt "x86-flag" +msgid "AVX-512 foundation" +msgstr "" -#: hardinfo//util.c:400 -msgid "specify module to load" -msgstr "especificar módulo a cargar" +#. /flag:avx512dq +#: modules/devices/x86/x86_data.c:209 +msgctxt "x86-flag" +msgid "AVX-512 Double/Quad instructions" +msgstr "" -#: hardinfo//util.c:406 -msgid "automatically load module dependencies" -msgstr "cargar automáticamente las dependencias de los módulos" +#. /flag:rdseed +#: modules/devices/x86/x86_data.c:210 +msgctxt "x86-flag" +msgid "The RDSEED instruction" +msgstr "" -#: hardinfo//util.c:413 -msgid "run in XML-RPC server mode" -msgstr "correr en modo servidor XML-RPC" +#. /flag:adx +#: modules/devices/x86/x86_data.c:211 +msgctxt "x86-flag" +msgid "The ADCX and ADOX instructions" +msgstr "" -#: hardinfo//util.c:420 -msgid "shows program version and quit" -msgstr "muestra la versión del programa y sale" +#. /flag:smap +#: modules/devices/x86/x86_data.c:212 +msgctxt "x86-flag" +msgid "Supervisor Mode Access Prevention" +msgstr "" -#: hardinfo//util.c:425 -msgid "- System Profiler and Benchmark tool" -msgstr "- Analizador de sistema y herramienta de benchmark" +#. /flag:clflushopt +#: modules/devices/x86/x86_data.c:213 +msgctxt "x86-flag" +msgid "CLFLUSHOPT instruction" +msgstr "" -#: hardinfo//util.c:435 -#, c-format -msgid "" -"Unrecognized arguments.\n" -"Try ``%s --help'' for more information.\n" +#. /flag:clwb +#: modules/devices/x86/x86_data.c:214 +msgctxt "x86-flag" +msgid "CLWB instruction" msgstr "" -"Argumentos no reconocidos.\n" -"Intente ``%s --help'' para más información.\n" -#: hardinfo//util.c:501 -#, c-format -msgid "Couldn't find a Web browser to open URL %s." -msgstr "No se pudo encontrar un navegador Web para abrir la URL %s." +#. /flag:avx512pf +#: modules/devices/x86/x86_data.c:215 +msgctxt "x86-flag" +msgid "AVX-512 Prefetch" +msgstr "" -#: hardinfo//util.c:848 -#, c-format -msgid "Module \"%s\" depends on module \"%s\", load it?" -msgstr "El módulo \"%s\" depende del módulo \"%s\", ¿desea cargarlo?" +#. /flag:avx512er +#: modules/devices/x86/x86_data.c:216 +msgctxt "x86-flag" +msgid "AVX-512 Exponential and Reciprocal" +msgstr "" -#: hardinfo//util.c:871 -#, c-format -msgid "Module \"%s\" depends on module \"%s\"." -msgstr "El módulo \"%s\" depende del módulo \"%s\"." +#. /flag:avx512cd +#: modules/devices/x86/x86_data.c:217 +msgctxt "x86-flag" +msgid "AVX-512 Conflict Detection" +msgstr "" -#: hardinfo//util.c:916 -#, c-format -msgid "No module could be loaded. Check permissions on \"%s\" and try again." +#. /flag:sha_ni +#: modules/devices/x86/x86_data.c:218 +msgctxt "x86-flag" +msgid "SHA1/SHA256 Instruction Extensions" msgstr "" -"No se puede cargar ningún módulo. Verifique los permisos en \"%s\" y " -"pruebe de nuevo." -#: hardinfo//util.c:920 -msgid "" -"No module could be loaded. Please use hardinfo -l to list all available " -"modules and try again with a valid module list." +#. /flag:avx512bw +#: modules/devices/x86/x86_data.c:219 +msgctxt "x86-flag" +msgid "AVX-512 Byte/Word instructions" msgstr "" -"No se pudo cargar ningún módulo. Por favor use hardinfo -l para listar " -"todoslos módulos disponibles e intente de nuevo con una lista válida de " -"módulos." -#: hardinfo//util.c:1096 -#, c-format -msgid "Scanning: %s..." -msgstr "Escaneando: %s..." +#. /flag:avx512vl +#: modules/devices/x86/x86_data.c:220 +msgctxt "x86-flag" +msgid "AVX-512 128/256 Vector Length extensions" +msgstr "" -#: hardinfo//hardinfo.c:54 -msgid "" -"Copyright (C) 2003-2009 Leandro A. F. Pereira. See COPYING for details.\n" -"\n" +#. /flag:xsaveopt +#: modules/devices/x86/x86_data.c:222 +msgctxt "x86-flag" +msgid "Optimized XSAVE" msgstr "" -"Copyright (C) 2003-2009 Leandro A. F. Pereira. Vea COPYING para más " -"detalles.\n" -"\n" -#: hardinfo//hardinfo.c:56 -#, c-format -msgid "" -"Compile-time options:\n" -" Release version: %s (%s)\n" -" BinReloc enabled: %s\n" -" Data prefix: %s\n" -" Library prefix: %s\n" -" Compiled on: %s %s (%s)\n" +#. /flag:xsavec +#: modules/devices/x86/x86_data.c:223 +msgctxt "x86-flag" +msgid "XSAVEC" msgstr "" -"Opciones de compilado:\n" -" Versión: %s (%s)\n" -" BinReloc habilitado: %s\n" -" Prefijo de datos: %s\n" -" Prefijo de bibliotecas: %s\n" -" Compilado en: %s %s (%s)\n" -#: hardinfo//hardinfo.c:74 -#, c-format -msgid "" -"Failed to find runtime data.\n" -"\n" -"• Is HardInfo correctly installed?\n" -"• See if %s and %s exists and you have read permission." +#. /flag:xgetbv1 +#: modules/devices/x86/x86_data.c:224 +msgctxt "x86-flag" +msgid "XGETBV with ECX = 1" msgstr "" -"Falló en encontrar datos del programa.\n" -"\n" -"• ¿HardInfo está correctamente instalado?\n" -"• Vea si %s y %s existen y usted tiene permisos de lectura." -#: hardinfo//hardinfo.c:81 -#, c-format -msgid "" -"Modules:\n" -"%-20s%-15s%-12s\n" +#. /flag:xsaves +#: modules/devices/x86/x86_data.c:225 +msgctxt "x86-flag" +msgid "XSAVES/XRSTORS" msgstr "" -"Módulos:\n" -"%-20s%-15s%-12s\n" -#: hardinfo//hardinfo.c:82 -msgid "File Name" -msgstr "Nombre de archivo" +#. /flag:cqm_llc +#: modules/devices/x86/x86_data.c:227 +msgctxt "x86-flag" +msgid "LLC QoS" +msgstr "" -#: hardinfo//hardinfo.c:82 -msgid "Name" -msgstr "Nombre" +#. /flag:cqm_occup_llc +#: modules/devices/x86/x86_data.c:229 +msgctxt "x86-flag" +msgid "LLC occupancy monitoring" +msgstr "" -#: hardinfo//hardinfo.c:82 -msgid "Version" -msgstr "Versión" +#. /flag:cqm_mbm_total +#: modules/devices/x86/x86_data.c:230 +msgctxt "x86-flag" +msgid "LLC total MBM monitoring" +msgstr "" -#: hardinfo//hardinfo.c:135 -#, c-format -msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" -msgstr "Benchmark desconocido ``%s'' o no se cargó libbenchmark.so" +#. /flag:cqm_mbm_local +#: modules/devices/x86/x86_data.c:231 +msgctxt "x86-flag" +msgid "LLC local MBM monitoring" +msgstr "" -#: hardinfo//hardinfo.c:163 -msgid "Don't know what to do. Exiting." -msgstr "No se puede determinar que hacer. Saliendo." +#. /flag:clzero +#: modules/devices/x86/x86_data.c:233 +msgctxt "x86-flag" +msgid "CLZERO instruction" +msgstr "" + +#. /flag:irperf +#: modules/devices/x86/x86_data.c:234 +msgctxt "x86-flag" +msgid "instructions retired performance counter" +msgstr "" + +#. /flag:dtherm +#: modules/devices/x86/x86_data.c:236 +msgctxt "x86-flag" +msgid "digital thermal sensor" +msgstr "" + +#. /flag:ida +#: modules/devices/x86/x86_data.c:237 +msgctxt "x86-flag" +msgid "Intel Dynamic Acceleration" +msgstr "" + +#. /flag:arat +#: modules/devices/x86/x86_data.c:238 +msgctxt "x86-flag" +msgid "Always Running APIC Timer" +msgstr "" + +#. /flag:pln +#: modules/devices/x86/x86_data.c:239 +msgctxt "x86-flag" +msgid "Intel Power Limit Notification" +msgstr "" + +#. /flag:pts +#: modules/devices/x86/x86_data.c:240 +msgctxt "x86-flag" +msgid "Intel Package Thermal Status" +msgstr "" + +#. /flag:hwp +#: modules/devices/x86/x86_data.c:241 +msgctxt "x86-flag" +msgid "Intel Hardware P-states" +msgstr "" + +#. /flag:hwp_notify +#: modules/devices/x86/x86_data.c:242 +msgctxt "x86-flag" +msgid "HWP notification" +msgstr "" + +#. /flag:hwp_act_window +#: modules/devices/x86/x86_data.c:243 +msgctxt "x86-flag" +msgid "HWP Activity Window" +msgstr "" + +#. /flag:hwp_epp +#: modules/devices/x86/x86_data.c:244 +msgctxt "x86-flag" +msgid "HWP Energy Performance Preference" +msgstr "" + +#. /flag:hwp_pkg_req +#: modules/devices/x86/x86_data.c:245 +msgctxt "x86-flag" +msgid "HWP package-level request" +msgstr "" + +#. /flag:npt +#: modules/devices/x86/x86_data.c:247 +msgctxt "x86-flag" +msgid "AMD Nested Page Table support" +msgstr "" + +#. /flag:lbrv +#: modules/devices/x86/x86_data.c:248 +msgctxt "x86-flag" +msgid "AMD LBR Virtualization support" +msgstr "" + +#. /flag:svm_lock +#: modules/devices/x86/x86_data.c:249 +msgctxt "x86-flag" +msgid "AMD SVM locking MSR" +msgstr "" + +#. /flag:nrip_save +#: modules/devices/x86/x86_data.c:250 +msgctxt "x86-flag" +msgid "AMD SVM next_rip save" +msgstr "" + +#. /flag:tsc_scale +#: modules/devices/x86/x86_data.c:251 +msgctxt "x86-flag" +msgid "AMD TSC scaling support" +msgstr "" + +#. /flag:vmcb_clean +#: modules/devices/x86/x86_data.c:252 +msgctxt "x86-flag" +msgid "AMD VMCB clean bits support" +msgstr "" + +#. /flag:flushbyasid +#: modules/devices/x86/x86_data.c:253 +msgctxt "x86-flag" +msgid "AMD flush-by-ASID support" +msgstr "" + +#. /flag:decodeassists +#: modules/devices/x86/x86_data.c:254 +msgctxt "x86-flag" +msgid "AMD Decode Assists support" +msgstr "" + +#. /flag:pausefilter +#: modules/devices/x86/x86_data.c:255 +msgctxt "x86-flag" +msgid "AMD filtered pause intercept" +msgstr "" + +#. /flag:pfthreshold +#: modules/devices/x86/x86_data.c:256 +msgctxt "x86-flag" +msgid "AMD pause filter threshold" +msgstr "" + +#. /flag:avic +#: modules/devices/x86/x86_data.c:257 +msgctxt "x86-flag" +msgid "Virtual Interrupt Controller" +msgstr "" + +#. /flag:pku +#: modules/devices/x86/x86_data.c:259 +msgctxt "x86-flag" +msgid "Protection Keys for Userspace" +msgstr "" + +#. /flag:ospke +#: modules/devices/x86/x86_data.c:260 +msgctxt "x86-flag" +msgid "OS Protection Keys Enable" +msgstr "" + +#. /flag:overflow_recov +#: modules/devices/x86/x86_data.c:262 +msgctxt "x86-flag" +msgid "MCA overflow recovery support" +msgstr "" + +#. /flag:succor +#: modules/devices/x86/x86_data.c:263 +msgctxt "x86-flag" +msgid "uncorrectable error containment and recovery" +msgstr "" + +#. /flag:smca +#: modules/devices/x86/x86_data.c:264 +msgctxt "x86-flag" +msgid "Scalable MCA" +msgstr "" + +#. /bug:f00f +#: modules/devices/x86/x86_data.c:267 +msgctxt "x86-flag" +msgid "Intel F00F bug" +msgstr "" + +#. /bug:fdiv +#: modules/devices/x86/x86_data.c:268 +msgctxt "x86-flag" +msgid "FPU FDIV" +msgstr "" + +#. /bug:coma +#: modules/devices/x86/x86_data.c:269 +msgctxt "x86-flag" +msgid "Cyrix 6x86 coma" +msgstr "" + +#. /bug:tlb_mmatch +#: modules/devices/x86/x86_data.c:270 +msgctxt "x86-flag" +msgid "AMD Erratum 383" +msgstr "" + +#. /bug:apic_c1e +#. /bug:amd_e400 +#: modules/devices/x86/x86_data.c:271 modules/devices/x86/x86_data.c:280 +msgctxt "x86-flag" +msgid "AMD Erratum 400" +msgstr "" + +#. /bug:11ap +#: modules/devices/x86/x86_data.c:272 +msgctxt "x86-flag" +msgid "Bad local APIC aka 11AP" +msgstr "" + +#. /bug:fxsave_leak +#: modules/devices/x86/x86_data.c:273 +msgctxt "x86-flag" +msgid "FXSAVE leaks FOP/FIP/FOP" +msgstr "" + +#. /bug:clflush_monitor +#: modules/devices/x86/x86_data.c:274 +msgctxt "x86-flag" +msgid "AAI65, CLFLUSH required before MONITOR" +msgstr "" + +#. /bug:sysret_ss_attrs +#: modules/devices/x86/x86_data.c:275 +msgctxt "x86-flag" +msgid "SYSRET doesn't fix up SS attrs" +msgstr "" + +#. /bug:espfix +#: modules/devices/x86/x86_data.c:276 +msgctxt "x86-flag" +msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" +msgstr "" + +#. /bug:null_seg +#: modules/devices/x86/x86_data.c:277 +msgctxt "x86-flag" +msgid "Nulling a selector preserves the base" +msgstr "" + +#. /bug:swapgs_fence +#: modules/devices/x86/x86_data.c:278 +msgctxt "x86-flag" +msgid "SWAPGS without input dep on GS" +msgstr "" + +#. /bug:monitor +#: modules/devices/x86/x86_data.c:279 +msgctxt "x86-flag" +msgid "IPI required to wake up remote CPU" +msgstr "" + +#. /x86/kernel/cpu/powerflags.h +#. /flag:pm:ts +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "temperature sensor" +msgstr "sensor de temparatura" + +#. /flag:pm:fid +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "frequency id control" +msgstr "id de control frecuencia" + +#. /flag:pm:vid +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "voltage id control" +msgstr "id control voltage" + +#. /flag:pm:ttp +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "thermal trip" +msgstr "limite termico" + +#. /flag:pm:tm +#: modules/devices/x86/x86_data.c:287 +msgctxt "x86-flag" +msgid "hardware thermal control" +msgstr "control terminco por hardware" + +#. /flag:pm:stc +#: modules/devices/x86/x86_data.c:288 +msgctxt "x86-flag" +msgid "software thermal control" +msgstr "control terminco por software" + +#. /flag:pm:100mhzsteps +#: modules/devices/x86/x86_data.c:289 +msgctxt "x86-flag" +msgid "100 MHz multiplier control" +msgstr "control multiplicador 100MHz" + +#. /flag:pm:hwpstate +#: modules/devices/x86/x86_data.c:290 +msgctxt "x86-flag" +msgid "hardware P-state control" +msgstr "control hardware de P-state" + +#. /flag:pm:cpb +#: modules/devices/x86/x86_data.c:291 +msgctxt "x86-flag" +msgid "core performance boost" +msgstr "Impulso de rendimiento básico" + +#. /flag:pm:eff_freq_ro +#: modules/devices/x86/x86_data.c:292 +msgctxt "x86-flag" +msgid "Readonly aperf/mperf" +msgstr "" + +#. /flag:pm:proc_feedback +#: modules/devices/x86/x86_data.c:293 +msgctxt "x86-flag" +msgid "processor feedback interface" +msgstr "interfez de retroalimentacion de procesador" + +#. /flag:pm:acc_power +#: modules/devices/x86/x86_data.c:294 +msgctxt "x86-flag" +msgid "accumulated power mechanism" +msgstr "mecanismo de energia acumulada" + +#: modules/network.c:59 +msgid "Interfaces" +msgstr "Interfaces" + +#: modules/network.c:60 +msgid "IP Connections" +msgstr "Conexiones IP" + +#: modules/network.c:61 +msgid "Routing Table" +msgstr "Tabla de ruteo" + +#: modules/network.c:62 modules/network.c:303 +msgid "ARP Table" +msgstr "Tabla ARP" + +#: modules/network.c:63 +msgid "DNS Servers" +msgstr "Servidores DNS" + +#: modules/network.c:64 +msgid "Statistics" +msgstr "Estadísticas" + +#: modules/network.c:65 +msgid "Shared Directories" +msgstr "Directorios compartidos" + +#: modules/network.c:304 modules/network.c:326 modules/network.c:357 +#: modules/network/net.c:477 +msgid "IP Address" +msgstr "Dirección IP" + +#: modules/network.c:304 modules/network.c:357 modules/network.c:374 +msgid "Interface" +msgstr "Interfaz" + +#: modules/network.c:304 +msgid "MAC Address" +msgstr "Dirección MAC" + +#: modules/network.c:313 +msgid "SAMBA" +msgstr "SAMBA" + +#: modules/network.c:314 +msgid "NFS" +msgstr "NFS" + +#: modules/network.c:325 +msgid "Name Servers" +msgstr "Servidores de nombres" + +#: modules/network.c:340 +msgid "Connections" +msgstr "Conexiones" + +#: modules/network.c:341 +msgid "Local Address" +msgstr "Direccion local" + +#: modules/network.c:341 +msgid "Protocol" +msgstr "Protocolo" + +#: modules/network.c:341 +msgid "Foreign Address" +msgstr "Direccion enlazada" + +#: modules/network.c:341 +msgid "State" +msgstr "Estado" + +#: modules/network.c:357 +msgid "Sent" +msgstr "Enviado" + +#: modules/network.c:357 +msgid "Received" +msgstr "Recibido" + +#: modules/network.c:373 +msgid "IP routing table" +msgstr "Tabla de ruteo IP" + +#: modules/network.c:374 +msgid "Destination/Gateway" +msgstr "Destino/Puerta de enlace" + +#: modules/network.c:374 +msgid "Flags" +msgstr "Marcas" + +#: modules/network.c:374 modules/network/net.c:478 +msgid "Mask" +msgstr "Máscara" + +#: modules/network.c:402 +msgid "Network" +msgstr "Red" + +#: modules/network.c:435 +msgid "Gathers information about this computer's network connection" +msgstr "Obtiene información sobre la conexión de red de esta computadora" + +#: modules/network/net.c:72 +msgctxt "wi-op-mode" +msgid "Auto" +msgstr "Auto" + +#: modules/network/net.c:73 +msgctxt "wi-op-mode" +msgid "Ad-Hoc" +msgstr "Ad-Hoc" + +#: modules/network/net.c:74 +msgctxt "wi-op-mode" +msgid "Managed" +msgstr "Manejada" + +#: modules/network/net.c:75 +msgctxt "wi-op-mode" +msgid "Master" +msgstr "Maestra" + +#: modules/network/net.c:76 +msgctxt "wi-op-mode" +msgid "Repeater" +msgstr "Repetidor" + +#: modules/network/net.c:77 +msgctxt "wi-op-mode" +msgid "Secondary" +msgstr "Secundaria" + +#: modules/network/net.c:78 +msgctxt "wi-op-mode" +msgid "(Unknown)" +msgstr "(desconocido)" + +#: modules/network/net.c:242 modules/network/net.c:262 +#: modules/network/net.c:270 +msgctxt "net-if-type" +msgid "Ethernet" +msgstr "Ethernet" + +#: modules/network/net.c:243 +msgctxt "net-if-type" +msgid "Loopback" +msgstr "Loopback" + +#: modules/network/net.c:244 +msgctxt "net-if-type" +msgid "Point-to-Point" +msgstr "Punto-a-Punto" + +#: modules/network/net.c:245 modules/network/net.c:246 +#: modules/network/net.c:247 modules/network/net.c:248 +#: modules/network/net.c:272 +msgctxt "net-if-type" +msgid "Wireless" +msgstr "Inalambrica" + +#: modules/network/net.c:249 +msgctxt "net-if-type" +msgid "Virtual Point-to-Point (TUN)" +msgstr "Virtual Punto-a-Punto (TUN)" + +#: modules/network/net.c:250 +msgctxt "net-if-type" +msgid "Ethernet (TAP)" +msgstr "Ethernet (TAP)" + +#: modules/network/net.c:251 +msgctxt "net-if-type" +msgid "Parallel Line Internet Protocol" +msgstr "Protocolo Linea Intenet Paralela" + +#: modules/network/net.c:252 +msgctxt "net-if-type" +msgid "Infrared" +msgstr "Infraroja" + +#: modules/network/net.c:253 modules/network/net.c:271 +msgctxt "net-if-type" +msgid "Serial Line Internet Protocol" +msgstr "Protocolo Internel Linea Serial" + +#: modules/network/net.c:254 +msgctxt "net-if-type" +msgid "Integrated Services Digital Network" +msgstr "Red de servicio digital (ISDN)" + +#: modules/network/net.c:255 +msgctxt "net-if-type" +msgid "IPv6-over-IPv4 Tunnel" +msgstr "Tunel IPv6-sobre-IPv4" + +#: modules/network/net.c:256 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface (NAT)" +msgstr "Interfaz Red virtual VMWare (NAT)" + +#: modules/network/net.c:257 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface" +msgstr "Interfaz Red virtual VMWare" + +#: modules/network/net.c:258 +msgctxt "net-if-type" +msgid "Personal Area Network (PAN)" +msgstr "Red de Area Personal (PAN)" + +#: modules/network/net.c:259 +msgctxt "net-if-type" +msgid "Bluetooth" +msgstr "Bluetooth" + +#: modules/network/net.c:260 +msgctxt "net-if-type" +msgid "Bridge Interface" +msgstr "Interfaz Puente" + +#: modules/network/net.c:261 +msgctxt "net-if-type" +msgid "Hamachi Virtual Personal Network" +msgstr "Red Virtual Personal Hamachi" + +#: modules/network/net.c:263 +msgctxt "net-if-type" +msgid "Intermediate Functional Block" +msgstr "Bloque funcional Intermediario" + +#: modules/network/net.c:264 +msgctxt "net-if-type" +msgid "GRE Network Tunnel" +msgstr "Tunel Red GRE" + +#: modules/network/net.c:265 +msgctxt "net-if-type" +msgid "Mesh Network" +msgstr "Red de malla" + +#: modules/network/net.c:266 +msgctxt "net-if-type" +msgid "Wireless Master Interface" +msgstr "Interfaz Maestra Inalambrica" + +#: modules/network/net.c:267 +msgctxt "net-if-type" +msgid "VirtualBox Virtual Network Interface" +msgstr "Interfaz Red Virtual VirtualBox" + +#: modules/network/net.c:273 +msgctxt "net-if-type" +msgid "Wireless (WAN)" +msgstr "Inalambrica (WAN)" + +#: modules/network/net.c:275 +msgctxt "net-if-type" +msgid "(Unknown)" +msgstr "(desconocida)" + +#: modules/network/net.c:348 modules/network/net.c:358 +msgid "Network Interfaces" +msgstr "Interfaces de Red" + +#: modules/network/net.c:348 +msgid "None Found" +msgstr "Ninguna encontrada" + +#: modules/network/net.c:400 modules/network/net.c:422 +#: modules/network/net.c:423 +msgid "MiB" +msgstr "MiB" + +#: modules/network/net.c:414 +msgid "Network Adapter Properties" +msgstr "Propiedades de adaptador" + +#: modules/network/net.c:415 +msgid "Interface Type" +msgstr "Tipo interfaz" + +#: modules/network/net.c:416 +msgid "Hardware Address (MAC)" +msgstr "Direccion fisica" + +#: modules/network/net.c:420 +msgid "MTU" +msgstr "MTU" + +#: modules/network/net.c:421 +msgid "Transfer Details" +msgstr "Detalles de transferencias" + +#: modules/network/net.c:422 +msgid "Bytes Received" +msgstr "Bytes Recividos" + +#: modules/network/net.c:423 +msgid "Bytes Sent" +msgstr "Bytes Enviados" + +#: modules/network/net.c:440 modules/network/net.c:462 +#: modules/network/net.c:463 +msgid "dBm" +msgstr "dBm" + +#: modules/network/net.c:440 +msgid "mW" +msgstr "mW" + +#: modules/network/net.c:454 +msgid "Wireless Properties" +msgstr "Propiedades de Inalambrica" + +#: modules/network/net.c:455 +msgid "Network Name (SSID)" +msgstr "Nombre de red (SSID)" + +#: modules/network/net.c:456 +msgid "Bit Rate" +msgstr "Velocidad de bits" + +#: modules/network/net.c:456 +msgid "Mb/s" +msgstr "Mb/s" + +#: modules/network/net.c:457 +msgid "Transmission Power" +msgstr "Intensidad transmision" + +#: modules/network/net.c:459 +msgid "Status" +msgstr "Estado" + +#: modules/network/net.c:460 +msgid "Link Quality" +msgstr "Calidad enlace" + +#: modules/network/net.c:461 +msgid "Signal / Noise" +msgstr "Señal / Ruido" + +#: modules/network/net.c:476 +msgid "Internet Protocol (IPv4)" +msgstr "Protocolo Internet (IPv4)" + +#: modules/network/net.c:477 modules/network/net.c:478 +#: modules/network/net.c:480 +msgid "(Not set)" +msgstr "(sin asignar)" + +#: modules/network/net.c:479 +msgid "Broadcast Address" +msgstr "Dirección de Difusión" + +#~ msgid "pixels" +#~ msgstr "pixeles" + +#~ msgid "Desktop Environment" +#~ msgstr "Entorno de escritorio" @@ -5,65 +5,267 @@ msgid "" msgstr "" "Project-Id-Version: hardinfo\n" -"Report-Msgid-Bugs-To: https://github.com/lpereira/hardinfo\n" -"POT-Creation-Date: 2014-01-01\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-14 22:23-0500\n" "PO-Revision-Date: 2014-09-03\n" "Last-Translator: yolateng0 @olala22000\n" "Language-Team: LeFlood\n" -"Language: french\n" +"Language: fr\n" +"X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" "X-Generator: Poedit 1.5.4\n" -"X-Poedit-KeywordsList: HardInfo\n" -#: shell//callbacks.c:71 +#. / %d will be latest year of copyright +#: hardinfo/hardinfo.c:49 #, c-format -msgid "Remote: <b>%s</b>" -msgstr "Accès: <b>%s</b>" - -#: shell//callbacks.c:117 -msgid "Disconnecting..." -msgstr "Déconnexion ..." - -#: shell//callbacks.c:120 -msgid "Unloading modules..." -msgstr "Déconnexion des modules" - -#: shell//callbacks.c:123 -msgid "Loading local modules..." -msgstr "Chargement des modules locaux" - -#: shell//callbacks.c:130 -#: shell//callbacks.c:162 -#: shell//shell.c:314 -#: shell//shell.c:814 -#: shell//shell.c:1796 -#: modules//benchmark.c:431 -#: modules//benchmark.c:439 -#: hardinfo//util.c:1106 -msgid "Done." -msgstr "Réalisé." +msgid "" +"Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n" +"\n" +msgstr "" +"Copyright (C) 2003-%d Leandro A. F. Pereira. voir COPYING pour les details.\n" +"\n" + +#: hardinfo/hardinfo.c:51 +#, c-format +msgid "" +"Compile-time options:\n" +" Release version: %s (%s)\n" +" BinReloc enabled: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compiled for: %s\n" +msgstr "" +"Compile-time options:\n" +" \"Release\" version: %s (%s)\n" +" BinReloc activé: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compilation: %s\n" + +#: hardinfo/hardinfo.c:57 hardinfo/hardinfo.c:58 modules/computer.c:605 +#: modules/devices/inputdevices.c:128 modules/devices/pci.c:112 +#: modules/devices/printers.c:138 +msgid "Yes" +msgstr "Oui" + +#: hardinfo/hardinfo.c:58 modules/computer.c:605 modules/devices/pci.c:112 +#: modules/devices/printers.c:138 +msgid "No" +msgstr "Non" + +#: hardinfo/hardinfo.c:69 +#, c-format +msgid "" +"Failed to find runtime data.\n" +"\n" +"• Is HardInfo correctly installed?\n" +"• See if %s and %s exists and you have read permission." +msgstr "" +"Impossible de trouver les données d'exécution.\n" +"\n" +"• Est ce que HardInfo est correctement installé?\n" +"• Voir si %s et %s existes et que vous avez bien les privilèges." + +#: hardinfo/hardinfo.c:76 +#, c-format +msgid "" +"Modules:\n" +"%-20s %-15s %-12s\n" +msgstr "" + +#: hardinfo/hardinfo.c:77 +msgid "File Name" +msgstr "Nom du fichier" + +#: hardinfo/hardinfo.c:77 modules/computer.c:534 modules/computer.c:562 +#: modules/computer.c:630 modules/computer/languages.c:104 +#: modules/computer/modules.c:146 modules/devices/arm/processor.c:336 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:116 +#: modules/devices/pci.c:215 modules/devices/sh/processor.c:84 +#: modules/devices/x86/processor.c:455 modules/network.c:326 +msgid "Name" +msgstr "Nom" + +#: hardinfo/hardinfo.c:77 modules/computer.c:296 modules/computer.c:505 +#: modules/computer.c:507 modules/computer.c:595 modules/computer.c:603 +#: modules/devices/inputdevices.c:121 +msgid "Version" +msgstr "Version" + +#: hardinfo/hardinfo.c:124 +#, c-format +msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" +msgstr "Benchmark inconnu ``%s'' ou libbenchmark.so non chargé" + +#: hardinfo/hardinfo.c:152 +msgid "Don't know what to do. Exiting." +msgstr "Que faire. Sortie." + +#: hardinfo/util.c:104 modules/computer/uptime.c:53 +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d jour" +msgstr[1] "%d jours" + +#: hardinfo/util.c:105 modules/computer/uptime.c:54 +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d heure" +msgstr[1] "%d heures" + +#: hardinfo/util.c:106 modules/computer/uptime.c:55 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minute" +msgstr[1] "%d minutes" -#: shell//callbacks.c:142 -msgid "Save Image" -msgstr "Sauvergarder l'image" +#: hardinfo/util.c:107 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "%d seconde" +msgstr[1] "%d secondes" -#: shell//callbacks.c:158 -msgid "Saving image..." -msgstr "Sauvegarde de l'image" +#: hardinfo/util.c:128 +#, c-format +msgid "%.1f B" +msgstr "%.1f B" -#: shell//callbacks.c:236 -msgid "No context help available." -msgstr "Pas d'aide disponible pour cela." +#: hardinfo/util.c:130 +#, c-format +msgid "%.1f KiB" +msgstr "%.1f KiB" -#: shell//callbacks.c:318 +#: hardinfo/util.c:132 +#, c-format +msgid "%.1f MiB" +msgstr "%.1f MiB" + +#: hardinfo/util.c:134 +#, c-format +msgid "%.1f GiB" +msgstr "%.1f GiB" + +#: hardinfo/util.c:136 +#, c-format +msgid "%.1f TiB" +msgstr "" + +#: hardinfo/util.c:138 +#, c-format +msgid "%.1f PiB" +msgstr "" + +#: hardinfo/util.c:361 +msgid "Error" +msgstr "Erreur" + +#: hardinfo/util.c:361 hardinfo/util.c:377 +msgid "Warning" +msgstr "Attention" + +#: hardinfo/util.c:376 +msgid "Fatal Error" +msgstr "Erreur Fatale" + +#: hardinfo/util.c:401 +msgid "creates a report and prints to standard output" +msgstr "crée un rapport et imprime sur la sortie standard" + +#: hardinfo/util.c:407 +msgid "chooses a report format (text, html)" +msgstr "choisir un format de rapport (texte, html)" + +#: hardinfo/util.c:413 +msgid "run benchmark; requires benchmark.so to be loaded" +msgstr "Envoyé le benchmark; nécessite benchmark.so" + +#: hardinfo/util.c:419 +msgid "lists modules" +msgstr "Listes des modules" + +#: hardinfo/util.c:425 +msgid "specify module to load" +msgstr "spécifie les modules à charger" + +#: hardinfo/util.c:431 +msgid "automatically load module dependencies" +msgstr "charger automatiquement les dépendances entre modules" + +#: hardinfo/util.c:438 +msgid "run in XML-RPC server mode" +msgstr "fonctionner en mode serveur XML-RPC" + +#: hardinfo/util.c:445 +msgid "shows program version and quit" +msgstr "Affiche la version du programme et quitter" + +#: hardinfo/util.c:450 +msgid "- System Profiler and Benchmark tool" +msgstr "- Profil du Systeme et outil d'évaluation Benchmark" + +#: hardinfo/util.c:460 +#, c-format +msgid "" +"Unrecognized arguments.\n" +"Try ``%s --help'' for more information.\n" +msgstr "" +"commandes inconnues.\n" +"taper ``%s --help'' pour plus d'informations.\n" + +#: hardinfo/util.c:526 +#, c-format +msgid "Couldn't find a Web browser to open URL %s." +msgstr "Impossible de trouver un navigateur Web pour ouvrir l'URL %s." + +#: hardinfo/util.c:875 +#, c-format +msgid "Module \"%s\" depends on module \"%s\", load it?" +msgstr "Module \"%s\" depends du module \"%s\", le charger?" + +#: hardinfo/util.c:898 +#, c-format +msgid "Module \"%s\" depends on module \"%s\"." +msgstr "Module \"%s\" depends du module \"%s\"." + +#: hardinfo/util.c:943 +#, c-format +msgid "No module could be loaded. Check permissions on \"%s\" and try again." +msgstr "" +"Aucun module peut être chargé. Vérifiez les permissions sur \"%s\" et " +"essayez à nouveau." + +#: hardinfo/util.c:947 +msgid "" +"No module could be loaded. Please use hardinfo -l to list all available " +"modules and try again with a valid module list." +msgstr "" +"Aucun module peut être chargé. S'il vous plaît utiliser hardinfo -l pour " +"répertorier tous les modules disponibles et essayez à nouveau avec une liste " +"de modules valides." + +#: hardinfo/util.c:1024 +#, c-format +msgid "Scanning: %s..." +msgstr "Scanne: %s..." + +#: hardinfo/util.c:1034 shell/shell.c:301 shell/shell.c:760 shell/shell.c:1795 +#: modules/benchmark.c:449 modules/benchmark.c:457 +msgid "Done." +msgstr "Réalisé." + +#: shell/callbacks.c:117 #, c-format msgid "%s Module" msgstr "%s Module" -#: shell//callbacks.c:325 +#: shell/callbacks.c:128 #, c-format msgid "" "Written by %s\n" @@ -72,282 +274,261 @@ msgstr "" "Ecrit par %s\n" "Sous Licence %s" -#: shell//callbacks.c:339 +#: shell/callbacks.c:142 #, c-format msgid "No about information is associated with the %s module." msgstr "Pas d'information associée au module %s." -#: shell//callbacks.c:353 +#: shell/callbacks.c:158 msgid "Author:" msgstr "Auteur:" -#: shell//callbacks.c:356 +#: shell/callbacks.c:161 msgid "Contributors:" msgstr "Contributeurs:" -#: shell//callbacks.c:360 +#: shell/callbacks.c:166 msgid "Based on work by:" msgstr "Basé sur le travail de:" -#: shell//callbacks.c:361 +#: shell/callbacks.c:167 msgid "MD5 implementation by Colin Plumb (see md5.c for details)" msgstr "Implémentation MD5 par Colin Plumb (voir md5.c pour les détails)" -#: shell//callbacks.c:362 +#: shell/callbacks.c:168 msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" msgstr "implémentation SHA1 par Steve Reid (voir sha1.c pour les détails)" -#: shell//callbacks.c:363 +#: shell/callbacks.c:169 msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" -msgstr "Implémentation Blowfish par Paul Kocher (voir blowchih.c pour de plus amples détails" +msgstr "" +"Implémentation Blowfish par Paul Kocher (voir blowchih.c pour de plus amples " +"détails" -#: shell//callbacks.c:364 +#: shell/callbacks.c:170 msgid "Raytracing benchmark by John Walker (see fbench.c for details)" -msgstr "Raytracing benchmark par John Walker (voir fbench.c pour de plus amples détails)" +msgstr "" +"Raytracing benchmark par John Walker (voir fbench.c pour de plus amples " +"détails)" -#: shell//callbacks.c:365 +#: shell/callbacks.c:171 msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" msgstr "FFT benchmark par Scott Robert Ladd (voir fftbench.c pour les détails)" -#: shell//callbacks.c:366 +#: shell/callbacks.c:172 msgid "Some code partly based on x86cpucaps by Osamu Kayasono" msgstr "Une partie du code est basé sur x86cpucaps par Osamu Kayasono" -#: shell//callbacks.c:367 +#: shell/callbacks.c:173 msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" msgstr "La liste des fabricants est basée sur GtkSysInfo par Pissens Sebastien" -#: shell//callbacks.c:368 +#: shell/callbacks.c:174 msgid "DMI support based on code by Stewart Adam" msgstr "Les supports DMI sont basés sur le code de Stewart Adam" -#: shell//callbacks.c:369 +#: shell/callbacks.c:175 msgid "SCSI support based on code by Pascal F. Martin" msgstr "Les supports SCSI sont basés sur le code de Pascal F. Martin" -#: shell//callbacks.c:373 -msgid "Jakub Szypulka" -msgstr "Jakub Szypulka" - -#: shell//callbacks.c:374 +#: shell/callbacks.c:180 msgid "Tango Project" msgstr "Projet Tango" -#: shell//callbacks.c:375 +#: shell/callbacks.c:181 msgid "The GNOME Project" msgstr "Le Projet Gnome" -#: shell//callbacks.c:376 +#: shell/callbacks.c:182 msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" msgstr "VMWare, Inc. (USB icône sur VMWare Workstation 6)" -#: shell//callbacks.c:387 +#: shell/callbacks.c:200 msgid "System information and benchmark tool" msgstr "Information du systeme et outil d'évaluation" -#: shell//callbacks.c:392 +#: shell/callbacks.c:205 msgid "" -"HardInfo is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.\n" +"HardInfo is free software; you can redistribute it and/or modify it under " +"the terms of the GNU General Public License as published by the Free " +"Software Foundation, version 2.\n" "\n" -"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. \n" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details.\n" "\n" -"You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 51 " +"Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" -"HardInfo est un logiciel libre, vous pouvez le redistribuer et / ou le modifier sousles termes de la Licence Publique Générale GNU telle que publiée par la FreeSoftware Foundation, version 2 \n" -"\n" -"Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION À UN USAGE PARTICULIER. Voir la Licence Publique Générale GNU pour plus de détail. \n" -"\n" -"Vous devriez avoir reçu une copie de la Licence Publique Générale GNU avec ce programme; sinon, écrire à la Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" -#: shell//menu.c:35 +#: shell/callbacks.c:220 +msgid "translator-credits" +msgstr "" + +#: shell/menu.c:35 msgid "_Information" msgstr "_Information" -#: shell//menu.c:36 +#: shell/menu.c:36 msgid "_Remote" msgstr "_Périphériques distants" -#: shell//menu.c:37 +#: shell/menu.c:37 msgid "_View" msgstr "_Voir" -#: shell//menu.c:38 +#: shell/menu.c:38 msgid "_Help" msgstr "_Aide" -#: shell//menu.c:39 +#: shell/menu.c:39 msgid "About _Modules" msgstr "A propos des _modules" -#: shell//menu.c:43 +#: shell/menu.c:43 msgid "Generate _Report" msgstr "Générer _Rapport" -#: shell//menu.c:48 +#: shell/menu.c:48 msgid "_Network Updater..." msgstr "_Mise à jour des données" -#: shell//menu.c:53 +#: shell/menu.c:53 msgid "_Open..." msgstr "_Ouvrir..." -#: shell//menu.c:58 -msgid "_Connect to..." -msgstr "_Connection à ..." - -#: shell//menu.c:63 -msgid "_Manage hosts..." -msgstr "_Gestion hosts..." - -#: shell//menu.c:68 -msgid "_Local computer" -msgstr "_Ordinateur local..." - -#: shell//menu.c:73 +#: shell/menu.c:58 msgid "_Copy to Clipboard" msgstr "_Copier dans le presse-papier" -#: shell//menu.c:74 +#: shell/menu.c:59 msgid "Copy to clipboard" msgstr "Copie dans le presse-papier" -#: shell//menu.c:78 -msgid "_Save image as..." -msgstr "_Sauvegarde sous" - -#: shell//menu.c:83 +#: shell/menu.c:63 msgid "_Refresh" msgstr "_Rafraichir" -#: shell//menu.c:88 -msgid "Contents" -msgstr "Contenus" - -#: shell//menu.c:93 -#: shell//shell.c:1790 -#: shell//shell.c:1807 -msgid "Context help" -msgstr "Contenu de l'aide" - -#: shell//menu.c:98 +#: shell/menu.c:68 msgid "_Open HardInfo Web Site" msgstr "_HardInfo Site Web" -#: shell//menu.c:103 +#: shell/menu.c:73 msgid "_Report bug" msgstr "_Rapporter un bug" -#: shell//menu.c:108 -msgid "_Donate to the project" -msgstr "_Aider le projet" - -#: shell//menu.c:113 +#: shell/menu.c:78 msgid "_About HardInfo" msgstr "_A Propos de HardInfo" -#: shell//menu.c:114 +#: shell/menu.c:79 msgid "Displays program version information" msgstr "Affiche les informations de version du programme" -#: shell//menu.c:118 +#: shell/menu.c:83 msgid "_Quit" msgstr "_Quitter" -#: shell//menu.c:125 +#: shell/menu.c:90 msgid "_Side Pane" msgstr "_Volet latéral" -#: shell//menu.c:126 +#: shell/menu.c:91 msgid "Toggles side pane visibility" msgstr "Basculer visibilité du panneau latéral " -#: shell//menu.c:129 +#: shell/menu.c:94 msgid "_Toolbar" msgstr "_Barre d'outils" -#: shell//menu.c:133 -msgid "_Accept connections" -msgstr "_Accepter la connection" - -#: shell//report.c:492 +#: shell/report.c:494 shell/report.c:502 msgid "Save File" msgstr "Sauvegarder le fichier" -#: shell//report.c:616 +#: shell/report.c:629 msgid "Cannot create ReportContext. Programming bug?" msgstr "Impossible de créer un rapport général. Bug?" -#: shell//report.c:634 +#: shell/report.c:648 msgid "Open the report with your web browser?" msgstr "Ouvrez le rapport avec votre navigateur Web?" -#: shell//report.c:662 +#: shell/report.c:682 msgid "Generating report..." msgstr "Création du rapport..." -#: shell//report.c:672 +#: shell/report.c:692 msgid "Report saved." msgstr "Rapport sauvegardé" -#: shell//report.c:674 +#: shell/report.c:694 msgid "Error while creating the report." msgstr "Erreur lors de la création du rapport." -#: shell//report.c:776 +#: shell/report.c:796 msgid "Generate Report" msgstr "Réalisation du Rapport" -#: shell//report.c:793 +#: shell/report.c:821 msgid "" "<big><b>Generate Report</b></big>\n" "Please choose the information that you wish to view in your report:" msgstr "" "<big> <b> Générer un rapport </b> </big> \n" -" S'il vous plaît choisissez les informations que vous souhaitez afficher dans votre rapport:" +" S'il vous plaît choisissez les informations que vous souhaitez afficher " +"dans votre rapport:" -#: shell//report.c:853 +#: shell/report.c:893 msgid "Select _None" msgstr "Désélectionner _Tout" -#: shell//report.c:860 +#: shell/report.c:904 msgid "Select _All" msgstr "Sélectionner _Tout" -#: shell//report.c:878 +#: shell/report.c:929 shell/syncmanager.c:748 +msgid "_Cancel" +msgstr "" + +#: shell/report.c:939 msgid "_Generate" msgstr "_Création" -#: shell//shell.c:407 +#: shell/shell.c:402 #, c-format msgid "%s - System Information" msgstr "%s - Informations du Système" -#: shell//shell.c:412 +#: shell/shell.c:407 msgid "System Information" msgstr "Informations du Système" -#: shell//shell.c:801 +#: shell/shell.c:747 msgid "Loading modules..." msgstr "Chargement des modules..." -#: shell//shell.c:1650 +#: shell/shell.c:1660 #, c-format msgid "<b>%s → Summary</b>" msgstr "<b>%s → Résumé</b>" -#: shell//shell.c:1758 +#: shell/shell.c:1769 msgid "Updating..." msgstr "Mise à jour..." -#: shell//syncmanager.c:69 +#: shell/syncmanager.c:69 msgid "" "<big><b>Synchronize with Central Database</b></big>\n" -"The following information may be synchronized with the HardInfo central database." +"The following information may be synchronized with the HardInfo central " +"database." msgstr "" "<big><b>Synchroniser avec la base de données centrale</b></big>\n" -"Les informations suivantes seront synchronisées avec la base de données de HardInfo." +"Les informations suivantes seront synchronisées avec la base de données de " +"HardInfo." -#: shell//syncmanager.c:72 +#: shell/syncmanager.c:72 msgid "" "<big><b>Synchronizing</b></big>\n" "This may take some time." @@ -355,636 +536,1149 @@ msgstr "" "<big><b>Synchronisation</b></big>\n" "Cela peut prendre un certain temps." -#: shell//syncmanager.c:132 -msgid "HardInfo was compiled without libsoup support. (Network Updater requires it.)" -msgstr "HARDiNFO a été compilé sans le support libsoup. (Mise à jour des données l'exige.)" +#: shell/syncmanager.c:132 +msgid "" +"HardInfo was compiled without libsoup support. (Network Updater requires it.)" +msgstr "" +"HARDiNFO a été compilé sans le support libsoup. (Mise à jour des données " +"l'exige.)" -#: shell//syncmanager.c:161 -#: shell//syncmanager.c:185 +#: shell/syncmanager.c:161 shell/syncmanager.c:189 #, c-format msgid "%s (error #%d)" msgstr "%s (erreur #%d)" -#: shell//syncmanager.c:170 -#: shell//syncmanager.c:194 +#: shell/syncmanager.c:170 shell/syncmanager.c:198 msgid "Could not parse XML-RPC response" msgstr "Impossible d'analyser la réponse XML-RPC" -#: shell//syncmanager.c:267 +#: shell/syncmanager.c:280 #, c-format -msgid "Server says it supports API version %d, but this version of HardInfo only supports API version %d." -msgstr "Le serveur dit qu'il supporte la version de l'API %d, mais cette version de HARDiNFO supporte seulement le support version de l'API %d." +msgid "" +"Server says it supports API version %d, but this version of HardInfo only " +"supports API version %d." +msgstr "" +"Le serveur dit qu'il supporte la version de l'API %d, mais cette version de " +"HARDiNFO supporte seulement le support version de l'API %d." -#: shell//syncmanager.c:362 +#: shell/syncmanager.c:375 msgid "Contacting HardInfo Central Database" msgstr "En contact avec la base de données centrale du site HARDiNFO" -#: shell//syncmanager.c:363 +#: shell/syncmanager.c:376 msgid "Cleaning up" msgstr "Nettoyage" -#: shell//syncmanager.c:480 -#, c-format -msgid "<s>%s</s> <i>(canceled)</i>" -msgstr "<s>%s</s> <i> (annuler) </i>" +#: shell/syncmanager.c:493 +msgid "(canceled)" +msgstr "(annuler)" -#: shell//syncmanager.c:497 -#, c-format -msgid "<b><s>%s</s></b> <i>(failed)</i>" -msgstr "<b><s>%s</s></b> <i>(Echec)</i>" +#: shell/syncmanager.c:510 +msgid "(failed)" +msgstr "(echec)" -#: shell//syncmanager.c:509 +#: shell/syncmanager.c:521 #, c-format msgid "" -"Failed while performing \"%s\". Please file a bug report if this problem persists. (Use the Help→Report bug option.)\n" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)\n" "\n" "Details: %s" msgstr "" -"Échec lors de l'exécution de \"%s\". S'il vous plaît remplissez un rapport de bug si ce problème persiste. (Utilisez l'option Aide → Rapport de Bug.)\n" +"Échec lors de l'exécution de \"%s\". S'il vous plaît remplissez un rapport " +"de bug si ce problème persiste. (Utilisez l'option Aide → Rapport de Bug.)\n" "\n" "Détails: %s" -#: shell//syncmanager.c:518 +#: shell/syncmanager.c:530 #, c-format -msgid "Failed while performing \"%s\". Please file a bug report if this problem persists. (Use the Help→Report bug option.)" -msgstr "Échec lors de l'exécution de \"%s\". S'il vous plaît remplissez un rapport de bug si ce problème persiste. (Utilisez l'option Aide → Rapport de Bug.)" +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)" +msgstr "" +"Échec lors de l'exécution de \"%s\". S'il vous plaît remplissez un rapport " +"de bug si ce problème persiste. (Utilisez l'option Aide → Rapport de Bug.)" -#: shell//syncmanager.c:646 +#: shell/syncmanager.c:658 msgid "Network Updater" msgstr "Mises à jour" -#: shell//syncmanager.c:727 +#: shell/syncmanager.c:757 msgid "_Synchronize" msgstr "_Synchronisation" -#: modules//benchmark.c:50 +#: modules/benchmark.c:52 msgid "CPU Blowfish" msgstr "Test CPU Blowfish" -#: modules//benchmark.c:51 +#: modules/benchmark.c:53 msgid "CPU CryptoHash" msgstr "Test CPU CryptoHash" -#: modules//benchmark.c:52 +#: modules/benchmark.c:54 msgid "CPU Fibonacci" msgstr "Test CPU Fibonacci " -#: modules//benchmark.c:53 +#: modules/benchmark.c:55 msgid "CPU N-Queens" msgstr "Test CPU N-Queens" -#: modules//benchmark.c:54 +#: modules/benchmark.c:56 +msgid "CPU Zlib" +msgstr "" + +#: modules/benchmark.c:57 msgid "FPU FFT" msgstr "Test FPU FFT" -#: modules//benchmark.c:55 +#: modules/benchmark.c:58 msgid "FPU Raytracing" msgstr "Test FPU Raytracing" -#: modules//benchmark.c:56 +#: modules/benchmark.c:60 msgid "GPU Drawing" msgstr "Test GPU Drawing" -#: modules//benchmark.c:222 -#, c-format -msgid "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"<big><b>This Machine</b></big>=%.3f|%s MHz\n" -"%s" +#: modules/benchmark.c:239 modules/benchmark.c:255 +msgid "CPU Config" msgstr "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"<big><b>Cet Ordinateur</b></big>=%.3f|%s MHz\n" -"%s" -#: modules//benchmark.c:235 -#, c-format -msgid "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"%s" +#: modules/benchmark.c:239 modules/benchmark.c:255 +msgid "Results" +msgstr "" + +#: modules/benchmark.c:239 modules/benchmark.c:255 modules/computer.c:751 +#: modules/devices/sparc/processor.c:75 +msgid "CPU" msgstr "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"%s" -#: modules//benchmark.c:363 +#: modules/benchmark.c:381 #, c-format msgid "Benchmarking: <b>%s</b>." msgstr "Benchmarking: <b>%s</b>." -#: modules//benchmark.c:377 +#: modules/benchmark.c:395 msgid "Benchmarking. Please do not move your mouse or press any keys." -msgstr "Benchmarking. S'il vous plaît ne pas déplacer votre souris ou appuyer sur les touches" +msgstr "" +"Benchmarking. S'il vous plaît ne pas déplacer votre souris ou appuyer sur " +"les touches" -#: modules//benchmark.c:381 +#: modules/benchmark.c:399 msgid "Cancel" msgstr "Annuler" -#: modules//benchmark.c:511 +#: modules/benchmark.c:536 msgid "Results in MiB/second. Higher is better." msgstr "Résultats en MiB/seconde. Plus c'est élevé meilleur c'est." -#: modules//benchmark.c:514 +#: modules/benchmark.c:540 msgid "Results in HIMarks. Higher is better." msgstr "Résultats en HIMarks. Plus c'est élevé meilleur c'est." -#: modules//benchmark.c:521 +#: modules/benchmark.c:547 msgid "Results in seconds. Lower is better." msgstr "Résultats en secondes. Plus c'est bas meilleur c'est." -#: modules//benchmark.c:529 +#: modules/benchmark.c:555 msgid "Benchmarks" msgstr "Benchmarks" -#: modules//benchmark.c:547 +#: modules/benchmark.c:573 msgid "Perform tasks and compare with other systems" msgstr "Effectuer des tâches et les comparer avec d'autres systèmes" -#: modules//benchmark.c:634 +#: modules/benchmark.c:663 msgid "Send benchmark results" msgstr "Envoyer vos résultats de référence" -#: modules//benchmark.c:639 +#: modules/benchmark.c:668 msgid "Receive benchmark results" msgstr "Recevoir les résultats de benchmark" -#: modules//computer/alsa.c:26 -msgid "[Audio Devices]\n" -msgstr "[Audio Devices]\n" - -#: modules//computer/alsa.c:33 -#, c-format -msgid "Audio Adapter#%d=%s\n" -msgstr "Adapteur Audio#%d=%s\n" - -#: modules//computer/boots.c:33 -msgid "[Boots]\n" -msgstr "[Boots]\n" - -#: modules//computer/display.c:83 -msgid "vendor string" -msgstr "fabricant" - -#: modules//computer/display.c:84 -msgid "X.Org version" -msgstr "version de X.Org" - -#: modules//computer/display.c:85 -msgid "XFree86 version" -msgstr "version de XFree86 " - -#: modules//computer/display.c:122 -#, c-format -msgid "Monitor %d=%dx%d pixels\n" -msgstr "Moniteur %d=%dx%d pixels\n" - -#: modules//computer/environment.c:32 -msgid "[Environment Variables]\n" -msgstr "[Environment Variables]\n" - -#: modules//computer/os.c:49 -#, c-format -msgid "GNU C Library version %s (%sstable)" -msgstr "GNU C Library version %s (%sstable)" - -#: modules//computer/os.c:51 -msgid "un" -msgstr "un" - -#: modules//computer/os.c:53 -#: modules//computer/os.c:130 -#: modules//devices/printers.c:99 -#: modules//devices/printers.c:106 -#: modules//devices/printers.c:116 -#: modules//devices/printers.c:131 -#: modules//devices/printers.c:140 -#: modules//devices/printers.c:243 -#: modules//devices.c:154 -#: modules//devices.c:197 -msgid "Unknown" -msgstr "Inconnu" - -#: modules//computer/os.c:72 -#, c-format -msgid "Version: %s" -msgstr "Version: %s" - -#: modules//computer/os.c:106 -msgid "Terminal" -msgstr "Terminal" +#: modules/computer/alsa.c:26 modules/computer.c:489 +msgid "Audio Devices" +msgstr "" -#: modules//computer/os.c:126 -#, c-format -msgid "Unknown (Window Manager: %s)" -msgstr "Unknown (gestionnaire de fenêtres: %s)" +#: modules/computer/alsa.c:34 +msgid "Audio Adapter" +msgstr "Adapteur Audio" -#: modules//computer/os.c:166 -msgid "Unknown distribution" -msgstr "Distribution inconnue" +#: modules/computer/boots.c:33 modules/computer.c:73 modules/computer.c:546 +msgid "Boots" +msgstr "Boots" -#: modules//computer.c:68 +#: modules/computer.c:70 msgid "Summary" msgstr "Résumé" -#: modules//computer.c:69 +#: modules/computer.c:71 modules/computer.c:476 modules/computer.c:750 msgid "Operating System" msgstr "Systeme d'exploitation" -#: modules//computer.c:70 +#: modules/computer.c:72 msgid "Kernel Modules" msgstr "Modules du kernel" -#: modules//computer.c:71 -msgid "Boots" -msgstr "Boots" - -#: modules//computer.c:72 +#: modules/computer.c:74 msgid "Languages" msgstr "Langues" -#: modules//computer.c:73 +#: modules/computer.c:75 msgid "Filesystems" msgstr "Fichiers Systeme" -#: modules//computer.c:74 +#: modules/computer.c:76 modules/computer.c:481 modules/computer.c:590 msgid "Display" msgstr "Affichage" -#: modules//computer.c:75 +#: modules/computer.c:77 modules/computer/environment.c:32 msgid "Environment Variables" msgstr "Variables d'environnement" -#: modules//computer.c:77 +#: modules/computer.c:79 msgid "Development" msgstr "Developpement" -#: modules//computer.c:79 +#: modules/computer.c:81 modules/computer.c:617 msgid "Users" msgstr "Utilisateurs" -#: modules//computer.c:80 +#: modules/computer.c:82 msgid "Groups" msgstr "Groupes" -#: modules//computer.c:104 +#: modules/computer.c:104 modules/computer.c:473 modules/devices.c:96 +#: modules/devices/pci.c:149 +msgid "Memory" +msgstr "Mémoire" + +#: modules/computer.c:106 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB (%dMB utilisé)" -#: modules//computer.c:200 +#: modules/computer.c:108 modules/computer.c:520 +msgid "Uptime" +msgstr "durée de fonctionnent" + +#: modules/computer.c:110 modules/computer.c:478 +msgid "Date/Time" +msgstr "Date/Heure" + +#: modules/computer.c:115 modules/computer.c:521 +msgid "Load Average" +msgstr "" + +#: modules/computer.c:117 modules/computer.c:522 +msgid "Available entropy in /dev/random" +msgstr "" + +#: modules/computer.c:203 msgid "Scripting Languages" msgstr "Type de script" -#: modules//computer.c:201 -msgid "CPython" -msgstr "CPython" +#: modules/computer.c:204 +msgid "Gambas3 (gbr3)" +msgstr "" + +#: modules/computer.c:205 +msgid "Python" +msgstr "" + +#: modules/computer.c:206 +msgid "Python2" +msgstr "" + +#: modules/computer.c:207 +msgid "Python3" +msgstr "" -#: modules//computer.c:202 +#: modules/computer.c:208 msgid "Perl" msgstr "Perl" -#: modules//computer.c:203 +#: modules/computer.c:209 +msgid "Perl6 (VM)" +msgstr "" + +#: modules/computer.c:210 +msgid "Perl6" +msgstr "" + +#: modules/computer.c:211 msgid "PHP" msgstr "PHP" -#: modules//computer.c:204 +#: modules/computer.c:212 msgid "Ruby" msgstr "Ruby" -#: modules//computer.c:205 +#: modules/computer.c:213 msgid "Bash" msgstr "Bash" -#: modules//computer.c:206 +#: modules/computer.c:214 msgid "Compilers" msgstr "Compilateurs" -#: modules//computer.c:207 +#: modules/computer.c:215 msgid "C (GCC)" msgstr "C (GCC)" -#: modules//computer.c:208 +#: modules/computer.c:216 +msgid "C (Clang)" +msgstr "" + +#: modules/computer.c:217 +msgid "D (dmd)" +msgstr "" + +#: modules/computer.c:218 +msgid "Gambas3 (gbc3)" +msgstr "" + +#: modules/computer.c:219 msgid "Java" msgstr "Java" -#: modules//computer.c:209 +#: modules/computer.c:220 msgid "CSharp (Mono, old)" msgstr "CSharp (Mono, old)" -#: modules//computer.c:210 +#: modules/computer.c:221 msgid "CSharp (Mono)" msgstr "CSharp (Mono)" -#: modules//computer.c:211 +#: modules/computer.c:222 msgid "Vala" msgstr "Vala" -#: modules//computer.c:212 +#: modules/computer.c:223 msgid "Haskell (GHC)" msgstr "Haskell (GHC)" -#: modules//computer.c:213 +#: modules/computer.c:224 msgid "FreePascal" msgstr "FreePascal" -#: modules//computer.c:214 +#: modules/computer.c:225 +msgid "Go" +msgstr "" + +#: modules/computer.c:226 msgid "Tools" msgstr "Outils" -#: modules//computer.c:262 -#, c-format -msgid "%s=Not found\n" -msgstr "%s=Non trouvé\n" +#: modules/computer.c:227 +msgid "make" +msgstr "" + +#: modules/computer.c:228 +msgid "GDB" +msgstr "" + +#: modules/computer.c:229 +msgid "strace" +msgstr "" + +#: modules/computer.c:230 +msgid "valgrind" +msgstr "" + +#: modules/computer.c:231 +msgid "QMake" +msgstr "" + +#: modules/computer.c:232 +msgid "CMake" +msgstr "" + +#: modules/computer.c:233 +msgid "Gambas3 IDE" +msgstr "" -#: modules//computer.c:265 +#: modules/computer.c:274 +msgid "Not found" +msgstr "Non trouvé" + +#: modules/computer.c:279 #, c-format msgid "Detecting version: %s" msgstr "Version détectée: %s" -#: modules//computer.c:276 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Program\n" -"ColumnTitle$Value=Version\n" -"ShowColumnHeaders=true\n" -"%s" +#: modules/computer.c:296 +msgid "Program" +msgstr "Programme" + +#: modules/computer.c:308 +msgid "Invalid chassis type (0)" +msgstr "" + +#: modules/computer.c:309 modules/computer.c:310 +msgid "Unknown chassis type" +msgstr "" + +#: modules/computer.c:311 +msgid "Desktop" +msgstr "" + +#: modules/computer.c:312 +msgid "Low-profile Desktop" msgstr "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Programme\n" -"ColumnTitle$Value=Version\n" -"ShowColumnHeaders=true\n" -"%s" -#: modules//computer.c:356 -msgid "Physical machine" -msgstr "Machine physique" +#: modules/computer.c:313 +msgid "Pizza Box" +msgstr "" + +#: modules/computer.c:314 +msgid "Mini Tower" +msgstr "" + +#: modules/computer.c:315 +msgid "Tower" +msgstr "" + +#: modules/computer.c:316 +msgid "Portable" +msgstr "" + +#: modules/computer.c:317 modules/computer.c:341 modules/computer.c:350 +#: modules/computer.c:372 +msgid "Laptop" +msgstr "" + +#: modules/computer.c:318 +msgid "Notebook" +msgstr "" + +#: modules/computer.c:319 +msgid "Handheld" +msgstr "" + +#: modules/computer.c:320 +msgid "Docking Station" +msgstr "" + +#: modules/computer.c:321 +msgid "All-in-one" +msgstr "" + +#: modules/computer.c:322 +msgid "Subnotebook" +msgstr "" + +#: modules/computer.c:323 +msgid "Space-saving" +msgstr "" + +#: modules/computer.c:324 +msgid "Lunch Box" +msgstr "" + +#: modules/computer.c:325 +msgid "Main Server Chassis" +msgstr "" + +#: modules/computer.c:326 +msgid "Expansion Chassis" +msgstr "" + +#: modules/computer.c:327 +msgid "Sub Chassis" +msgstr "" + +#: modules/computer.c:328 +msgid "Bus Expansion Chassis" +msgstr "" + +#: modules/computer.c:329 +msgid "Peripheral Chassis" +msgstr "" + +#: modules/computer.c:330 +msgid "RAID Chassis" +msgstr "" + +#: modules/computer.c:331 +msgid "Rack Mount Chassis" +msgstr "" + +#: modules/computer.c:332 +msgid "Sealed-case PC" +msgstr "" -#: modules//computer.c:373 +#. /proc/apm +#. FIXME: use dmidecode if available to get chassis type +#: modules/computer.c:386 +msgid "Unknown physical machine type" +msgstr "" + +#: modules/computer.c:470 modules/computer.c:709 +msgid "Computer" +msgstr "Ordinateur" + +#: modules/computer.c:471 modules/devices/alpha/processor.c:87 +#: modules/devices/arm/processor.c:236 modules/devices.c:95 +#: modules/devices/ia64/processor.c:159 modules/devices/m68k/processor.c:83 +#: modules/devices/mips/processor.c:74 modules/devices/parisc/processor.c:154 +#: modules/devices/ppc/processor.c:157 modules/devices/riscv/processor.c:181 +#: modules/devices/s390/processor.c:131 modules/devices/sh/processor.c:83 +#: modules/devices/sparc/processor.c:74 modules/devices/x86/processor.c:409 +msgid "Processor" +msgstr "Processeur" + +#: modules/computer.c:474 +msgid "Machine Type" +msgstr "" + +#: modules/computer.c:477 modules/computer.c:514 +msgid "User Name" +msgstr "Utilisateur" + +#: modules/computer.c:482 modules/computer.c:591 +msgid "Resolution" +msgstr "Résolution" + +#: modules/computer.c:483 modules/computer.c:592 #, c-format -msgid "" -"[$ShellParam$]\n" -"UpdateInterval$Memory=1000\n" -"UpdateInterval$Date/Time=1000\n" -"#ReloadInterval=5000\n" -"[Computer]\n" -"Processor=%s\n" -"Memory=...\n" -"Machine Type=%s\n" -"Operating System=%s\n" -"User Name=%s\n" -"Date/Time=...\n" -"[Display]\n" -"Resolution=%dx%d pixels\n" -"OpenGL Renderer=%s\n" -"X11 Vendor=%s\n" -"\n" -"%s\n" -"[Input Devices]\n" -"%s\n" -"\n" -"%s\n" -"\n" -"%s\n" +msgid "%dx%d pixels" +msgstr "" + +#: modules/computer.c:485 +msgid "OpenGL Renderer" +msgstr "" + +#: modules/computer.c:486 +msgid "X11 Vendor" +msgstr "" + +#: modules/computer.c:491 modules/devices.c:102 +msgid "Input Devices" +msgstr "Périphériques d'entrée" + +#: modules/computer.c:493 modules/computer.c:752 modules/devices.c:99 +msgid "Printers" +msgstr "Imprimantes" + +#: modules/computer.c:495 modules/computer.c:752 modules/devices.c:103 +msgid "Storage" +msgstr "Stockage" + +#: modules/computer.c:506 +msgid "Kernel" +msgstr "" + +#: modules/computer.c:508 +msgid "C Library" +msgstr "" + +#: modules/computer.c:509 +msgid "Distribution" +msgstr "" + +#: modules/computer.c:512 +msgid "Current Session" +msgstr "" + +#: modules/computer.c:513 +msgid "Computer Name" +msgstr "Ordinateur" + +#: modules/computer.c:515 modules/computer/languages.c:108 +msgid "Language" +msgstr "" + +#: modules/computer.c:516 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "Dossier Home" + +#: modules/computer.c:519 modules/devices/usb.c:87 modules/devices/usb.c:234 +#: modules/devices/usb.c:351 +msgid "Misc" +msgstr "" + +#: modules/computer.c:532 +msgid "Loaded Modules" +msgstr "" + +#: modules/computer.c:535 modules/computer/modules.c:145 +#: modules/computer/modules.c:147 modules/devices/arm/processor.c:337 +#: modules/devices.c:559 modules/devices/x86/processor.c:456 +msgid "Description" msgstr "" -"[$ShellParam$]\n" -"UpdateInterval$Memory=1000\n" -"UpdateInterval$Date/Time=1000\n" -"#ReloadInterval=5000\n" -"[Computer]\n" -"Processeur=%s\n" -"Memoire=...\n" -"Machine Type=%s\n" -"Systeme d'exploitation=%s\n" -"Utilisateur=%s\n" -"Date/Heure=...\n" -"[Display]\n" -"Résolution=%dx%d pixels\n" -"OpenGL Renderer=%s\n" -"X11 Vendor=%s\n" -"\n" -"%s\n" -"[Input Devices]\n" -"%s\n" -"\n" -"%s\n" -"\n" -"%s\n" -#: modules//computer.c:415 +#: modules/computer.c:548 +msgid "Date & Time" +msgstr "" + +#: modules/computer.c:549 +msgid "Kernel Version" +msgstr "" + +#: modules/computer.c:559 +msgid "Available Languages" +msgstr "" + +#: modules/computer.c:561 +msgid "Language Code" +msgstr "Type Code" + +#: modules/computer.c:573 +msgid "Mounted File Systems" +msgstr "" + +#: modules/computer.c:575 modules/computer/filesystem.c:85 +msgid "Mount Point" +msgstr "Point de montage" + +#: modules/computer.c:576 +msgid "Usage" +msgstr "" + +#: modules/computer.c:577 +msgid "Device" +msgstr "Périphérique" + +#: modules/computer.c:594 modules/computer.c:601 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:119 +#: modules/devices/pci.c:225 modules/devices/usb.c:349 +#: modules/devices/x86/processor.c:416 +msgid "Vendor" +msgstr "Fabricant" + +#: modules/computer.c:598 +msgid "Monitors" +msgstr "" + +#: modules/computer.c:600 +msgid "OpenGL" +msgstr "" + +#: modules/computer.c:602 +msgid "Renderer" +msgstr "" + +#: modules/computer.c:604 +msgid "Direct Rendering" +msgstr "" + +#: modules/computer.c:608 +msgid "Extensions" +msgstr "" + +#: modules/computer.c:628 +msgid "Group" +msgstr "" + +#: modules/computer.c:631 modules/computer/users.c:49 +msgid "Group ID" +msgstr "" + +#: modules/computer.c:751 +msgid "RAM" +msgstr "" + +#: modules/computer.c:751 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "" + +#: modules/computer.c:751 +msgid "Graphics" +msgstr "" + +#: modules/computer.c:752 +msgid "Audio" +msgstr "" + +#: modules/computer.c:807 +msgid "Gathers high-level computer information" +msgstr "Collecte des informations de l'ordinateur" + +#: modules/computer/display.c:122 #, c-format -msgid "" -"[$ShellParam$]\n" -"UpdateInterval$Uptime=10000\n" -"UpdateInterval$Load Average=1000\n" -"[Version]\n" -"Kernel=%s\n" -"Version=%s\n" -"C Library=%s\n" -"Distribution=%s\n" -"[Current Session]\n" -"Computer Name=%s\n" -"User Name=%s\n" -"#Language=%s\n" -"Home Directory=%s\n" -"Desktop Environment=%s\n" -"[Misc]\n" -"Uptime=...\n" -"Load Average=..." +msgid "Monitor %d=%dx%d pixels\n" +msgstr "Moniteur %d=%dx%d pixels\n" + +#: modules/computer/filesystem.c:83 +msgid "Filesystem" msgstr "" -"[$ShellParam$]\n" -"UpdateInterval$Uptime=10000\n" -"UpdateInterval$Load Average=1000\n" -"[Version]\n" -"Kernel=%s\n" -"Version=%s\n" -"C Library=%s\n" -"Distribution=%s\n" -"[Current Session]\n" -"Ordinateur=%s\n" -"Utilisateur=%s\n" -"#Language=%s\n" -"Dossier Home=%s\n" -"Environnement de bureau=%s\n" -"[Misc]\n" -"durée de fonctionnent=...\n" -"Charge moyenne=..." - -#: modules//computer.c:444 + +#: modules/computer/filesystem.c:84 +msgid "Mounted As" +msgstr "" + +#: modules/computer/filesystem.c:84 +msgid "Read-Write" +msgstr "" + +#: modules/computer/filesystem.c:84 +msgid "Read-Only" +msgstr "" + +#: modules/computer/filesystem.c:86 modules/devices/spd-decode.c:1510 +msgid "Size" +msgstr "" + +#: modules/computer/filesystem.c:87 +msgid "Used" +msgstr "" + +#: modules/computer/filesystem.c:88 +msgid "Available" +msgstr "" + +#: modules/computer/languages.c:103 +msgid "Locale Information" +msgstr "" + +#: modules/computer/languages.c:105 +msgid "Source" +msgstr "" + +#: modules/computer/languages.c:106 +msgid "Address" +msgstr "" + +#: modules/computer/languages.c:107 +msgid "E-mail" +msgstr "" + +#: modules/computer/languages.c:109 +msgid "Territory" +msgstr "" + +#: modules/computer/languages.c:110 modules/devices/arm/processor.c:250 +#: modules/devices/ia64/processor.c:166 modules/devices/ppc/processor.c:159 +#: modules/devices/usb.c:236 +msgid "Revision" +msgstr "" + +#: modules/computer/languages.c:111 +msgid "Date" +msgstr "" + +#: modules/computer/languages.c:112 +msgid "Codeset" +msgstr "" + +#: modules/computer/loadavg.c:64 +msgid "Couldn't obtain load average" +msgstr "" + +#: modules/computer/modules.c:125 modules/computer/modules.c:126 +#: modules/computer/modules.c:127 modules/computer/modules.c:128 +#: modules/computer/modules.c:129 +msgid "(Not available)" +msgstr "" + +#: modules/computer/modules.c:142 +msgid "Module Information" +msgstr "" + +#: modules/computer/modules.c:143 +msgid "Path" +msgstr "" + +#: modules/computer/modules.c:144 +msgid "Used Memory" +msgstr "" + +#: modules/computer/modules.c:144 +msgid "KiB" +msgstr "" + +#: modules/computer/modules.c:148 +msgid "Version Magic" +msgstr "" + +#: modules/computer/modules.c:149 +msgid "Copyright" +msgstr "" + +#: modules/computer/modules.c:150 +msgid "Author" +msgstr "" + +#: modules/computer/modules.c:151 +msgid "License" +msgstr "" + +#: modules/computer/modules.c:158 +msgid "Dependencies" +msgstr "" + +#: modules/computer/os.c:35 modules/computer/os.c:36 modules/computer/os.c:37 +#: modules/computer/os.c:38 +msgid "GNU C Library" +msgstr "" + +#: modules/computer/os.c:39 +msgid "uClibc or uClibc-ng" +msgstr "" + +#: modules/computer/os.c:40 +msgid "diet libc" +msgstr "" + +#: modules/computer/os.c:78 modules/computer/os.c:234 modules/computer/os.c:359 +#: modules/devices.c:333 modules/devices.c:387 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 +msgid "Unknown" +msgstr "Inconnu" + +#: modules/computer/os.c:112 modules/computer/os.c:115 +msgid "GNOME Shell " +msgstr "" + +#: modules/computer/os.c:123 modules/computer/os.c:126 +msgid "Version: " +msgstr "" + +#: modules/computer/os.c:157 #, c-format -msgid "" -"[Loaded Modules]\n" -"%s[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Description\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[Loaded Modules]\n" -"%s[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Description\n" -"ShowColumnHeaders=true\n" - -#: modules//computer.c:455 +msgid "Unknown (Window Manager: %s)" +msgstr "Unknown (gestionnaire de fenêtres: %s)" + +#. /{desktop environment} on {session type} +#: modules/computer/os.c:168 #, c-format -msgid "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Date & Time\n" -"ColumnTitle$Value=Kernel Version\n" -"ShowColumnHeaders=true\n" -"\n" -"%s" +msgid "%s on %s" msgstr "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Date & Time\n" -"ColumnTitle$Value=Kernel Version\n" -"ShowColumnHeaders=true\n" -"\n" -"%s" -#: modules//computer.c:465 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Language Code\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" -"[Available Languages]\n" -"%s" +#: modules/computer/os.c:232 +msgid "Terminal" +msgstr "Terminal" + +#. /bits of entropy for rng (0) +#: modules/computer/os.c:241 +msgid "(None or not available)" msgstr "" -"[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Type Code\n" -"ColumnTitle$Value=Nom\n" -"ShowColumnHeaders=true\n" -"[Available Langages]\n" -"%s" -#: modules//computer.c:476 +#. /bits of entropy for rng (low/poor value) +#: modules/computer/os.c:242 #, c-format -msgid "" -"[$ShellParam$]\n" -"ViewType=4\n" -"ReloadInterval=5000\n" -"Zebra=1\n" -"NormalizePercentage=false\n" -"ColumnTitle$Extra1=Mount Point\n" -"ColumnTitle$Progress=Usage\n" -"ColumnTitle$TextValue=Device\n" -"ShowColumnHeaders=true\n" -"[Mounted File Systems]\n" -"%s\n" +msgid "%d bits (low)" msgstr "" -"[$ShellParam$]\n" -"ViewType=4\n" -"ReloadInterval=5000\n" -"Zebra=1\n" -"NormalizePercentage=false\n" -"ColumnTitle$Extra1=Point de montage\n" -"ColumnTitle$Progress=Usage\n" -"ColumnTitle$TextValue=Périphérique\n" -"ShowColumnHeaders=true\n" -"[Mounted File Systems]\n" -"%s\n" - -#: modules//computer.c:490 + +#. /bits of entropy for rng (medium value) +#: modules/computer/os.c:243 #, c-format -msgid "" -"[Display]\n" -"Resolution=%dx%d pixels\n" -"Vendor=%s\n" -"Version=%s\n" -"[Monitors]\n" -"%s[Extensions]\n" -"%s[OpenGL]\n" -"Vendor=%s\n" -"Renderer=%s\n" -"Version=%s\n" -"Direct Rendering=%s\n" -msgstr "" -"[Affichage]\n" -"Resolution=%dx%d pixels\n" -"Fabricant=%s\n" -"Version=%s\n" -"[Monitors]\n" -"%s[Extensions]\n" -"%s[OpenGL]\n" -"Vendeur=%s\n" -"Renderer=%s\n" -"Version=%s\n" -"Direct Rendering=%s\n" - -#: modules//computer.c:512 -msgid "Y_es" -msgstr "O_ui" - -#: modules//computer.c:512 -#: modules//devices/printers.c:138 -#: hardinfo//hardinfo.c:63 -msgid "No" -msgstr "Non" +msgid "%d bits (medium)" +msgstr "" -#: modules//computer.c:526 +#. /bits of entropy for rng (high/good value) +#: modules/computer/os.c:244 #, c-format -msgid "" -"[$ShellParam$]\n" -"ReloadInterval=10000\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Group ID\n" -"ShowColumnHeaders=true\n" -"[Groups]\n" -"%s\n" +msgid "%d bits (healthy)" msgstr "" -"[$ShellParam$]\n" -"ReloadInterval=10000\n" -"ColumnTitle$TextValue=Nom\n" -"ColumnTitle$Value=Group ID\n" -"ShowColumnHeaders=true\n" -"[Groups]\n" -"%s\n" - -#: modules//computer.c:606 -msgid "Computer" -msgstr "Ordinateur" -#: modules//computer.c:700 -msgid "Gathers high-level computer information" -msgstr "Collecte des informations de l'ordinateur" +#: modules/computer/os.c:279 modules/devices/usb.c:48 modules/devices/usb.c:307 +#: modules/devices/usb.c:310 modules/network/net.c:442 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "" -#: modules//devices/battery.c:181 +#: modules/computer/users.c:47 +msgid "User Information" +msgstr "" + +#: modules/computer/users.c:48 +msgid "User ID" +msgstr "" + +#: modules/computer/users.c:51 +msgid "Default Shell" +msgstr "" + +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:141 +#: modules/devices/devicetree.c:176 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/ia64/processor.c:165 modules/devices/m68k/processor.c:84 +#: modules/devices/mips/processor.c:75 modules/devices/parisc/processor.c:155 +#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 +#: modules/devices/s390/processor.c:132 modules/devices/spd-decode.c:1510 +msgid "Model" +msgstr "" + +#: modules/devices/alpha/processor.c:89 +msgid "Platform String" +msgstr "" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/pci.c:108 modules/devices/ppc/processor.c:160 +#: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 +#: modules/devices/x86/processor.c:420 +msgid "Frequency" +msgstr "" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/arm/processor.c:365 modules/devices.c:299 +#: modules/devices.c:307 modules/devices.c:335 +#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 +#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 +#: modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/pci.c:108 +#: modules/devices/ppc/processor.c:160 modules/devices/ppc/processor.c:187 +#: modules/devices/riscv/processor.c:186 modules/devices/riscv/processor.c:214 +#: modules/devices/s390/processor.c:160 modules/devices/sh/processor.c:87 +#: modules/devices/sh/processor.c:88 modules/devices/sh/processor.c:89 +#: modules/devices/x86/processor.c:420 modules/devices/x86/processor.c:479 +msgid "MHz" +msgstr "" + +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:241 +#: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 +#: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 +#: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:421 +msgid "BogoMips" +msgstr "" + +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:242 +#: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 +#: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 +#: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 +#: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:422 +msgid "Byte Order" +msgstr "" + +#. /hw_cap +#. /flag:swp +#: modules/devices/arm/arm_data.c:42 +msgctxt "arm-flag" +msgid "SWP instruction (atomic read-modify-write)" +msgstr "" + +#. /flag:half +#: modules/devices/arm/arm_data.c:43 +msgctxt "arm-flag" +msgid "Half-word loads and stores" +msgstr "" + +#. /flag:thumb +#: modules/devices/arm/arm_data.c:44 +msgctxt "arm-flag" +msgid "Thumb (16-bit instruction set)" +msgstr "" + +#. /flag:26bit +#: modules/devices/arm/arm_data.c:45 +msgctxt "arm-flag" +msgid "26-Bit Model (Processor status register folded into program counter)" +msgstr "" + +#. /flag:fastmult +#: modules/devices/arm/arm_data.c:46 +msgctxt "arm-flag" +msgid "32x32->64-bit multiplication" +msgstr "" + +#. /flag:fpa +#: modules/devices/arm/arm_data.c:47 +msgctxt "arm-flag" +msgid "Floating point accelerator" +msgstr "" + +#. /flag:vfp +#: modules/devices/arm/arm_data.c:48 +msgctxt "arm-flag" +msgid "VFP (early SIMD vector floating point instructions)" +msgstr "" + +#. /flag:edsp +#: modules/devices/arm/arm_data.c:49 +msgctxt "arm-flag" +msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" +msgstr "" + +#. /flag:java +#: modules/devices/arm/arm_data.c:50 +msgctxt "arm-flag" +msgid "Jazelle (Java bytecode accelerator)" +msgstr "" + +#. /flag:iwmmxt +#: modules/devices/arm/arm_data.c:51 +msgctxt "arm-flag" +msgid "SIMD instructions similar to Intel MMX" +msgstr "" + +#. /flag:crunch +#: modules/devices/arm/arm_data.c:52 +msgctxt "arm-flag" +msgid "MaverickCrunch coprocessor (if kernel support enabled)" +msgstr "" + +#. /flag:thumbee +#: modules/devices/arm/arm_data.c:53 +msgctxt "arm-flag" +msgid "ThumbEE" +msgstr "" + +#. /flag:neon +#: modules/devices/arm/arm_data.c:54 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch32" +msgstr "" + +#. /flag:evtstrm +#: modules/devices/arm/arm_data.c:55 +msgctxt "arm-flag" +msgid "Kernel event stream using generic architected timer" +msgstr "" + +#. /flag:vfpv3 +#: modules/devices/arm/arm_data.c:56 +msgctxt "arm-flag" +msgid "VFP version 3" +msgstr "" + +#. /flag:vfpv3d16 +#: modules/devices/arm/arm_data.c:57 +msgctxt "arm-flag" +msgid "VFP version 3 with 16 D-registers" +msgstr "" + +#. /flag:vfpv4 +#: modules/devices/arm/arm_data.c:58 +msgctxt "arm-flag" +msgid "VFP version 4 with fast context switching" +msgstr "" + +#. /flag:vfpd32 +#: modules/devices/arm/arm_data.c:59 +msgctxt "arm-flag" +msgid "VFP with 32 D-registers" +msgstr "" + +#. /flag:tls +#: modules/devices/arm/arm_data.c:60 +msgctxt "arm-flag" +msgid "TLS register" +msgstr "" + +#. /flag:idiva +#: modules/devices/arm/arm_data.c:61 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in ARM mode" +msgstr "" + +#. /flag:idivt +#: modules/devices/arm/arm_data.c:62 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in Thumb mode" +msgstr "" + +#. /flag:lpae +#: modules/devices/arm/arm_data.c:63 +msgctxt "arm-flag" +msgid "40-bit Large Physical Address Extension" +msgstr "" + +#. /hw_cap2 +#. /flag:pmull +#: modules/devices/arm/arm_data.c:65 +msgctxt "arm-flag" +msgid "64x64->128-bit F2m multiplication (arch>8)" +msgstr "" + +#. /flag:aes +#: modules/devices/arm/arm_data.c:66 +msgctxt "arm-flag" +msgid "Crypto:AES (arch>8)" +msgstr "" + +#. /flag:sha1 +#: modules/devices/arm/arm_data.c:67 +msgctxt "arm-flag" +msgid "Crypto:SHA1 (arch>8)" +msgstr "" + +#. /flag:sha2 +#: modules/devices/arm/arm_data.c:68 +msgctxt "arm-flag" +msgid "Crypto:SHA2 (arch>8)" +msgstr "" + +#. /flag:crc32 +#: modules/devices/arm/arm_data.c:69 +msgctxt "arm-flag" +msgid "CRC32 checksum instructions (arch>8)" +msgstr "" + +#. /flag:asimd +#: modules/devices/arm/arm_data.c:72 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +msgstr "" + +#: modules/devices/arm/processor.c:142 +msgid "ARM Processor" +msgstr "" + +#: modules/devices/arm/processor.c:200 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:371 +msgid "Empty List" +msgstr "" + +#: modules/devices/arm/processor.c:237 +msgid "Linux Name" +msgstr "" + +#: modules/devices/arm/processor.c:238 +msgid "Decoded Name" +msgstr "" + +#: modules/devices/arm/processor.c:239 modules/network/net.c:458 +msgid "Mode" +msgstr "" + +#: modules/devices/arm/processor.c:245 +msgid "ARM" +msgstr "" + +#: modules/devices/arm/processor.c:246 +msgid "Implementer" +msgstr "" + +#: modules/devices/arm/processor.c:247 +msgid "Part" +msgstr "" + +#: modules/devices/arm/processor.c:248 modules/devices/ia64/processor.c:162 +#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 +msgid "Architecture" +msgstr "" + +#: modules/devices/arm/processor.c:249 +msgid "Variant" +msgstr "" + +#: modules/devices/arm/processor.c:251 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:428 +msgid "Capabilities" +msgstr "" + +#: modules/devices/arm/processor.c:335 +msgid "SOC/Package" +msgstr "" + +#: modules/devices/arm/processor.c:338 modules/devices/cpu_util.c:222 +msgid "Topology" +msgstr "" + +#: modules/devices/arm/processor.c:339 +msgid "Clocks" +msgstr "" + +#: modules/devices/arm/processor.c:354 +msgid "SOC/Package Information" +msgstr "" + +#: modules/devices/battery.c:181 #, c-format msgid "" "\n" @@ -1005,7 +1699,20 @@ msgstr "" "Modele=%s\n" "Numéro de série=%s\n" -#: modules//devices/battery.c:266 +#: modules/devices/battery.c:258 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s\n" +"Capacity=%s / %s\n" +"Battery Technology=%s\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" + +#: modules/devices/battery.c:346 #, c-format msgid "" "\n" @@ -1015,7 +1722,7 @@ msgid "" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" -msgstr"" +msgstr "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" @@ -1024,7 +1731,7 @@ msgstr"" "APM driver version=%s\n" "APM BIOS version=%s\n" -#: modules//devices/battery.c:278 +#: modules/devices/battery.c:358 #, c-format msgid "" "\n" @@ -1041,7 +1748,7 @@ msgstr "" "APM driver version=%s\n" "APM BIOS version=%s\n" -#: modules//devices/battery.c:304 +#: modules/devices/battery.c:385 msgid "" "[No batteries]\n" "No batteries found on this system=\n" @@ -1049,57 +1756,550 @@ msgstr "" "[Aucune batterie]\n" "Aucune batterie trouvée sur ce système=\n" -#: modules//devices/printers.c:81 +#: modules/devices.c:97 +msgid "PCI Devices" +msgstr "Périphériques PCI" + +#: modules/devices.c:98 modules/devices/usb.c:117 modules/devices/usb.c:156 +#: modules/devices/usb.c:415 +msgid "USB Devices" +msgstr "Périphériques USB" + +#: modules/devices.c:100 +msgid "Battery" +msgstr "Batterie" + +#: modules/devices.c:101 +msgid "Sensors" +msgstr "Capteurs" + +#: modules/devices.c:105 +msgid "DMI" +msgstr "DMI" + +#: modules/devices.c:106 +msgid "Memory SPD" +msgstr "Mémoire SPD" + +#: modules/devices.c:111 +msgid "Device Tree" +msgstr "" + +#: modules/devices.c:113 +msgid "Resources" +msgstr "Ressources" + +#: modules/devices.c:151 +#, c-format +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "" +msgstr[1] "" + +#: modules/devices.c:152 +#, c-format +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "" +msgstr[1] "" + +#: modules/devices.c:153 +#, c-format +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "" +msgstr[1] "" + +#. /NP procs; NC cores; NT threads +#: modules/devices.c:154 +#, c-format +msgid "%s; %s; %s" +msgstr "" + +#: modules/devices.c:372 +msgid " (model unknown)" +msgstr " (modèle inconnu)" + +#: modules/devices.c:374 +msgid " (vendor unknown)" +msgstr " (Fabricant inconnu)" + +#: modules/devices.c:559 +msgid "Field" +msgstr "" + +#: modules/devices.c:559 modules/devices.c:591 +msgid "Value" +msgstr "" + +#: modules/devices.c:591 +msgid "Sensor" +msgstr "" + +#: modules/devices.c:591 modules/devices/inputdevices.c:117 +msgid "Type" +msgstr "" + +#: modules/devices.c:637 +msgid "Devices" +msgstr "Périphériques" + +#: modules/devices.c:649 +msgid "Update PCI ID listing" +msgstr "Mise à jour de la liste ID PCI " + +#: modules/devices.c:661 +msgid "Update CPU feature database" +msgstr "Mise à jour des bases de données caractéristiques CPU" + +#: modules/devices.c:689 +msgid "Gathers information about hardware devices" +msgstr "Collecte des informations des périphériques" + +#: modules/devices.c:708 +msgid "Resource information requires superuser privileges" +msgstr "" + +#: modules/devices/cpu_util.c:30 +msgid "Little Endian" +msgstr "" + +#: modules/devices/cpu_util.c:32 +msgid "Big Endian" +msgstr "" + +#: modules/devices/cpu_util.c:178 modules/devices/cpu_util.c:189 +msgid "Frequency Scaling" +msgstr "" + +#: modules/devices/cpu_util.c:179 +msgid "Minimum" +msgstr "" + +#: modules/devices/cpu_util.c:179 modules/devices/cpu_util.c:180 +#: modules/devices/cpu_util.c:181 +msgid "kHz" +msgstr "" + +#: modules/devices/cpu_util.c:180 +msgid "Maximum" +msgstr "" + +#: modules/devices/cpu_util.c:181 +msgid "Current" +msgstr "" + +#: modules/devices/cpu_util.c:182 +msgid "Transition Latency" +msgstr "" + +#: modules/devices/cpu_util.c:182 +msgid "ns" +msgstr "" + +#: modules/devices/cpu_util.c:183 +msgid "Governor" +msgstr "" + +#: modules/devices/cpu_util.c:184 modules/devices/cpu_util.c:190 +msgid "Driver" +msgstr "" + +#: modules/devices/cpu_util.c:196 modules/devices/x86/processor.c:297 +msgid "(Not Available)" +msgstr "" + +#: modules/devices/cpu_util.c:204 modules/devices/cpu_util.c:206 +msgid "Socket" +msgstr "" + +#: modules/devices/cpu_util.c:209 modules/devices/cpu_util.c:211 +msgid "Core" +msgstr "" + +#: modules/devices/cpu_util.c:214 +msgid "Book" +msgstr "" + +#: modules/devices/cpu_util.c:216 +msgid "Drawer" +msgstr "" + +#: modules/devices/cpu_util.c:223 +msgid "ID" +msgstr "" + +#: modules/devices/devicetree.c:47 +msgid "Properties" +msgstr "" + +#: modules/devices/devicetree.c:48 +msgid "Children" +msgstr "" + +#: modules/devices/devicetree.c:84 +msgid "Node" +msgstr "" + +#: modules/devices/devicetree.c:85 +msgid "Node Path" +msgstr "" + +#: modules/devices/devicetree.c:86 +msgid "Alias" +msgstr "" + +#: modules/devices/devicetree.c:86 modules/devices/devicetree.c:87 +msgid "(None)" +msgstr "" + +#: modules/devices/devicetree.c:87 +msgid "Symbol" +msgstr "" + +#: modules/devices/devicetree.c:132 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "" + +#: modules/devices/devicetree.c:133 modules/devices/devicetree.c:178 +msgid "Compatible" +msgstr "" + +#: modules/devices/devicetree.c:134 +msgid "GPU-compatible" +msgstr "" + +#: modules/devices/devicetree.c:140 +msgid "Raspberry Pi or Compatible" +msgstr "" + +#: modules/devices/devicetree.c:142 modules/devices/devicetree.c:160 +#: modules/devices/devicetree.c:177 modules/devices/devicetree/rpi_data.c:160 +msgid "Serial Number" +msgstr "" + +#: modules/devices/devicetree.c:143 modules/devices/devicetree/rpi_data.c:157 +msgid "RCode" +msgstr "" + +#: modules/devices/devicetree.c:143 +msgid "No revision code available; unable to lookup model details." +msgstr "" + +#: modules/devices/devicetree.c:159 +msgid "More" +msgstr "" + +#: modules/devices/devicetree.c:175 +msgid "Board" +msgstr "" + +#: modules/devices/devicetree.c:234 +msgid "Messages" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1013 +msgid "phandle Map" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1014 +msgid "Alias Map" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1015 +msgid "Symbol Map" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:152 +#: modules/devices/devicetree/rpi_data.c:153 +msgid "Raspberry Pi" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:153 +msgid "Board Name" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:154 +msgid "PCB Revision" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:155 +msgid "Introduction" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:156 modules/devices/spd-decode.c:1510 +#: modules/devices/usb.c:84 modules/devices/usb.c:217 +msgid "Manufacturer" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:158 +msgid "SOC (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:159 +msgid "Memory (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Permanent overvolt bit" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "" + +#: modules/devices/devmemory.c:93 +msgid "Total Memory" +msgstr "Mémoire totale" + +#: modules/devices/devmemory.c:94 +msgid "Free Memory" +msgstr "" + +#: modules/devices/devmemory.c:95 +msgid "Cached Swap" +msgstr "" + +#: modules/devices/devmemory.c:96 +msgid "High Memory" +msgstr "" + +#: modules/devices/devmemory.c:97 +msgid "Free High Memory" +msgstr "" + +#: modules/devices/devmemory.c:98 +msgid "Low Memory" +msgstr "" + +#: modules/devices/devmemory.c:99 +msgid "Free Low Memory" +msgstr "" + +#: modules/devices/devmemory.c:100 +msgid "Virtual Memory" +msgstr "" + +#: modules/devices/devmemory.c:101 +msgid "Free Virtual Memory" +msgstr "" + +#: modules/devices/dmi.c:188 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "" + +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "" + +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "" + +#: modules/devices/ia64/processor.c:164 modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "" + +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "" + +#: modules/devices/ia64/processor.c:171 +msgid "Features" +msgstr "" + +#: modules/devices/inputdevices.c:115 modules/devices/pci.c:214 +#: modules/devices/usb.c:82 modules/devices/usb.c:215 modules/devices/usb.c:347 +msgid "Device Information" +msgstr "" + +#: modules/devices/inputdevices.c:118 modules/devices/usb.c:92 +#: modules/devices/usb.c:240 modules/devices/usb.c:356 +msgid "Bus" +msgstr "" + +#: modules/devices/inputdevices.c:120 modules/devices/usb.c:83 +#: modules/devices/usb.c:216 modules/devices/usb.c:348 +msgid "Product" +msgstr "" + +#: modules/devices/inputdevices.c:124 +msgid "Connected to" +msgstr "" + +#: modules/devices/inputdevices.c:128 +msgid "InfraRed port" +msgstr "" + +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" +msgstr "" + +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" +msgstr "" + +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" +msgstr "" + +#: modules/devices/mips/processor.c:76 +msgid "System Type" +msgstr "" + +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "" + +#: modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "" + +#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:425 +msgid "Cache" +msgstr "" + +#: modules/devices/pci.c:106 +msgid "IRQ" +msgstr "" + +#: modules/devices/pci.c:110 +msgid "Latency" +msgstr "" + +#: modules/devices/pci.c:112 +msgid "Bus Master" +msgstr "" + +#: modules/devices/pci.c:118 +msgid "Kernel modules" +msgstr "" + +#: modules/devices/pci.c:124 +#, c-format +msgid "%s=%s (%s)\n" +msgstr "" + +#: modules/devices/pci.c:126 +msgid "OEM Vendor" +msgstr "" + +#: modules/devices/pci.c:153 +msgid "prefetchable" +msgstr "" + +#: modules/devices/pci.c:154 +msgid "non-prefetchable" +msgstr "" + +#: modules/devices/pci.c:163 +msgid "I/O ports at" +msgstr "" + +#: modules/devices/pci.c:216 modules/devices/usb.c:89 modules/devices/usb.c:237 +#: modules/devices/usb.c:353 +msgid "Class" +msgstr "" + +#: modules/devices/pci.c:217 +msgid "Domain" +msgstr "" + +#: modules/devices/pci.c:218 +msgid "Bus, device, function" +msgstr "" + +#: modules/devices/pci.c:243 +msgid "No PCI devices found" +msgstr "" + +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" +msgstr "" + +#: modules/devices/printers.c:81 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ Impression en noir et blanc =\n" -#: modules//devices/printers.c:83 +#: modules/devices/printers.c:83 msgid "⚬ Can do color printing=\n" msgstr "⚬ Imprimer en couleur=\n" -#: modules//devices/printers.c:85 +#: modules/devices/printers.c:85 msgid "⚬ Can do duplexing=\n" msgstr "⚬ Imprimer recto verso=\n" -#: modules//devices/printers.c:87 +#: modules/devices/printers.c:87 msgid "⚬ Can do staple output=\n" msgstr "⚬ Agrafer les feuilles imprimées=\n" -#: modules//devices/printers.c:89 +#: modules/devices/printers.c:89 msgid "⚬ Can do copies=\n" msgstr "⚬ Réaliser copies=\n" -#: modules//devices/printers.c:91 +#: modules/devices/printers.c:91 msgid "⚬ Can collate copies=\n" msgstr "⚬ Assembler des copies=\n" -#: modules//devices/printers.c:93 +#: modules/devices/printers.c:93 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ Imprimante rejette cette tâche=\n" -#: modules//devices/printers.c:95 +#: modules/devices/printers.c:95 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬ Imprimante a été automatiquement détecté et ajouté=\n" -#: modules//devices/printers.c:110 +#: modules/devices/printers.c:110 msgid "Idle" msgstr "Inoccupé" -#: modules//devices/printers.c:112 +#: modules/devices/printers.c:112 msgid "Printing a Job" msgstr "Impression" -#: modules//devices/printers.c:114 +#: modules/devices/printers.c:114 msgid "Stopped" msgstr "Arrêt" -#: modules//devices/printers.c:138 -#: hardinfo//hardinfo.c:62 -#: hardinfo//hardinfo.c:63 -msgid "Yes" -msgstr "Oui" - -#: modules//devices/printers.c:190 +#: modules/devices/printers.c:190 msgid "" "[Printers]\n" "No suitable CUPS library found=" @@ -1107,11 +2307,11 @@ msgstr "" "[Printers]\n" "Aucune suite de librairie CUPS trouvée=" -#: modules//devices/printers.c:200 +#: modules/devices/printers.c:200 msgid "[Printers (CUPS)]\n" msgstr "[Printers (CUPS)]\n" -#: modules//devices/printers.c:263 +#: modules/devices/printers.c:263 msgid "" "[Printers]\n" "No printers found=\n" @@ -1119,7 +2319,165 @@ msgstr "" "[Printers]\n" "Aucune imprimante trouvée=\n" -#: modules//devices/storage.c:46 +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" +msgstr "" + +#: modules/devices/riscv/processor.c:184 +msgid "uarch" +msgstr "" + +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" +msgstr "" + +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" +msgstr "" + +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" +msgstr "" + +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" +msgstr "" + +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" +msgstr "" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "" + +#: modules/devices/spd-decode.c:1475 +msgid "" +"[SPD]\n" +"Please load the eeprom module to obtain information about memory SPD=\n" +"[$ShellParam$]\n" +"ReloadInterval=500\n" +msgstr "" + +#: modules/devices/spd-decode.c:1480 +msgid "" +"[SPD]\n" +"Reading memory SPD not supported on this system=\n" +msgstr "" + +#: modules/devices/spd-decode.c:1509 +msgid "SPD" +msgstr "" + +#: modules/devices/spd-decode.c:1510 +msgid "Bank" +msgstr "" + +#: modules/devices/storage.c:46 msgid "" "\n" "[SCSI Disks]\n" @@ -1127,8 +2485,7 @@ msgstr "" "\n" "[SCSI Disks]\n" -#: modules//devices/storage.c:110 -#: modules//devices/storage.c:297 +#: modules/devices/storage.c:110 modules/devices/storage.c:313 #, c-format msgid "" "[Device Information]\n" @@ -1137,19 +2494,17 @@ msgstr "" "[Device Information]\n" "Modele=%s\n" -#: modules//devices/storage.c:115 -#: modules//devices/storage.c:304 +#: modules/devices/storage.c:115 modules/devices/storage.c:319 #, c-format msgid "Vendor=%s (%s)\n" msgstr "Vendeur=%s (%s)\n" -#: modules//devices/storage.c:120 -#: modules//devices/storage.c:309 +#: modules/devices/storage.c:120 modules/devices/storage.c:321 #, c-format msgid "Vendor=%s\n" msgstr "Vendeur=%s\n" -#: modules//devices/storage.c:125 +#: modules/devices/storage.c:125 #, c-format msgid "" "Type=%s\n" @@ -1168,7 +2523,7 @@ msgstr "" "ID=%d\n" "LUN=%d\n" -#: modules//devices/storage.c:169 +#: modules/devices/storage.c:167 msgid "" "\n" "[IDE Disks]\n" @@ -1176,23 +2531,20 @@ msgstr "" "\n" "[IDE Disks]\n" -#: modules//devices/storage.c:242 +#: modules/devices/storage.c:250 #, c-format msgid "Driver=%s\n" msgstr "Driver=%s\n" -#: modules//devices/storage.c:314 +#: modules/devices/storage.c:324 #, c-format msgid "" -"Devise Name=hd%c\n" +"Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" -"Nom Périphérique=hd%c\n" -"Media=%s\n" -"Cache=%dkb\n" -#: modules//devices/storage.c:329 +#: modules/devices/storage.c:334 #, c-format msgid "" "[Geometry]\n" @@ -1203,7 +2555,7 @@ msgstr "" "Physique=%s\n" "Logique=%s\n" -#: modules//devices/storage.c:341 +#: modules/devices/storage.c:344 #, c-format msgid "" "[Capabilities]\n" @@ -1212,7 +2564,7 @@ msgstr "" "[Capabilities]\n" "%s" -#: modules//devices/storage.c:348 +#: modules/devices/storage.c:351 #, c-format msgid "" "[Speeds]\n" @@ -1221,424 +2573,1857 @@ msgstr "" "[Speeds]\n" "%s" -#: modules//devices.c:74 -msgid "Processor" -msgstr "Processeur" +#: modules/devices/usb.c:44 modules/devices/usb.c:326 +msgid "mA" +msgstr "" -#: modules//devices.c:75 -msgid "Memory" -msgstr "Mémoire" +#. /%.2f is version +#: modules/devices/usb.c:53 modules/devices/usb.c:190 +#, c-format +msgid "USB %.2f Hub" +msgstr "" -#: modules//devices.c:76 -msgid "PCI Devices" -msgstr "Périphériques PCI" +#: modules/devices/usb.c:55 modules/devices/usb.c:192 +#, c-format +msgid "Unknown USB %.2f Device (class %d)" +msgstr "" -#: modules//devices.c:77 -msgid "USB Devices" -msgstr "Périphériques USB" +#: modules/devices/usb.c:85 modules/devices/usb.c:232 +msgid "Speed" +msgstr "" -#: modules//devices.c:78 -msgid "Printers" -msgstr "Imprimantes" +#: modules/devices/usb.c:85 modules/devices/usb.c:232 +msgid "Mbit/s" +msgstr "" -#: modules//devices.c:79 -msgid "Battery" -msgstr "Batterie" +#: modules/devices/usb.c:86 modules/devices/usb.c:233 modules/devices/usb.c:350 +msgid "Max Current" +msgstr "" -#: modules//devices.c:80 -msgid "Sensors" -msgstr "Capteurs" +#: modules/devices/usb.c:88 modules/devices/usb.c:235 modules/devices/usb.c:352 +msgid "USB Version" +msgstr "" -#: modules//devices.c:81 -msgid "Input Devices" -msgstr "Périphériques d'entrée" +#: modules/devices/usb.c:90 modules/devices/usb.c:238 modules/devices/usb.c:354 +msgid "Vendor ID" +msgstr "" -#: modules//devices.c:82 -msgid "Storage" -msgstr "Stockage" +#: modules/devices/usb.c:91 modules/devices/usb.c:239 modules/devices/usb.c:355 +msgid "Product ID" +msgstr "" -#: modules//devices.c:84 -msgid "DMI" -msgstr "DMI" +#: modules/devices/usb.c:231 +msgid "Port" +msgstr "" -#: modules//devices.c:85 -msgid "Memory SPD" -msgstr "Mémoire SPD" +#: modules/devices/usb.c:241 +msgid "Level" +msgstr "" -#: modules//devices.c:87 -msgid "Resources" -msgstr "Ressources" +#: modules/devices/x86/processor.c:149 +msgid "Cache information not available=\n" +msgstr "" -#: modules//devices.c:178 -msgid "Total Memory" -msgstr "Mémoire totale" +#: modules/devices/x86/processor.c:155 +#, c-format +msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" +msgstr "" -#: modules//devices.c:193 -msgid " (vendor unknown)" -msgstr " (Fabricant inconnu)" +#. /cache type, as appears in: Level 1 (Data) +#: modules/devices/x86/processor.c:170 +msgctxt "cache-type" +msgid "Data" +msgstr "" -#: modules//devices.c:195 -msgid " (model unknown)" -msgstr " (modèle inconnu)" +#. /cache type, as appears in: Level 1 (Instruction) +#: modules/devices/x86/processor.c:171 +msgctxt "cache-type" +msgid "Instruction" +msgstr "" -#: modules//devices.c:412 -msgid "Devices" -msgstr "Périphériques" +#. /cache type, as appears in: Level 2 (Unified) +#: modules/devices/x86/processor.c:172 +msgctxt "cache-type" +msgid "Unified" +msgstr "" -#: modules//devices.c:424 -msgid "Update PCI ID listing" -msgstr "Mise à jour de la liste ID PCI " +#: modules/devices/x86/processor.c:410 +msgid "Model Name" +msgstr "" -#: modules//devices.c:436 -msgid "Update CPU feature database" -msgstr "Mise à jour des bases de données caractéristiques CPU" +#: modules/devices/x86/processor.c:411 +msgid "Family, model, stepping" +msgstr "" -#: modules//devices.c:464 -msgid "Gathers information about hardware devices" -msgstr "Collecte des informations des périphériques" +#: modules/devices/x86/processor.c:417 +msgid "Microcode Version" +msgstr "" + +#: modules/devices/x86/processor.c:418 +msgid "Configuration" +msgstr "" + +#: modules/devices/x86/processor.c:419 +msgid "Cache Size" +msgstr "" + +#: modules/devices/x86/processor.c:419 +msgid "kb" +msgstr "" + +#: modules/devices/x86/processor.c:426 +msgid "Power Management" +msgstr "" + +#: modules/devices/x86/processor.c:427 +msgid "Bug Workarounds" +msgstr "" + +#: modules/devices/x86/processor.c:454 modules/devices/x86/processor.c:468 +msgid "Package Information" +msgstr "" + +#. /flag:fpu +#: modules/devices/x86/x86_data.c:43 +msgctxt "x86-flag" +msgid "Onboard FPU (floating point support)" +msgstr "" + +#. /flag:vme +#: modules/devices/x86/x86_data.c:44 +msgctxt "x86-flag" +msgid "Virtual 8086 mode enhancements" +msgstr "" + +#. /flag:de +#: modules/devices/x86/x86_data.c:45 +msgctxt "x86-flag" +msgid "Debugging Extensions (CR4.DE)" +msgstr "" + +#. /flag:pse +#: modules/devices/x86/x86_data.c:46 +msgctxt "x86-flag" +msgid "Page Size Extensions (4MB memory pages)" +msgstr "" + +#. /flag:tsc +#: modules/devices/x86/x86_data.c:47 +msgctxt "x86-flag" +msgid "Time Stamp Counter (RDTSC)" +msgstr "" + +#. /flag:msr +#: modules/devices/x86/x86_data.c:48 +msgctxt "x86-flag" +msgid "Model-Specific Registers (RDMSR, WRMSR)" +msgstr "" + +#. /flag:pae +#: modules/devices/x86/x86_data.c:49 +msgctxt "x86-flag" +msgid "Physical Address Extensions (support for more than 4GB of RAM)" +msgstr "" + +#. /flag:mce +#: modules/devices/x86/x86_data.c:50 +msgctxt "x86-flag" +msgid "Machine Check Exception" +msgstr "" + +#. /flag:cx8 +#: modules/devices/x86/x86_data.c:51 +msgctxt "x86-flag" +msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" +msgstr "" + +#. /flag:apic +#: modules/devices/x86/x86_data.c:52 +msgctxt "x86-flag" +msgid "Onboard APIC" +msgstr "" + +#. /flag:sep +#: modules/devices/x86/x86_data.c:53 +msgctxt "x86-flag" +msgid "SYSENTER/SYSEXIT" +msgstr "" + +#. /flag:mtrr +#: modules/devices/x86/x86_data.c:54 +msgctxt "x86-flag" +msgid "Memory Type Range Registers" +msgstr "" + +#. /flag:pge +#: modules/devices/x86/x86_data.c:55 +msgctxt "x86-flag" +msgid "Page Global Enable (global bit in PDEs and PTEs)" +msgstr "" + +#. /flag:mca +#: modules/devices/x86/x86_data.c:56 +msgctxt "x86-flag" +msgid "Machine Check Architecture" +msgstr "" + +#. /flag:cmov +#: modules/devices/x86/x86_data.c:57 +msgctxt "x86-flag" +msgid "CMOV instructions (conditional move) (also FCMOV)" +msgstr "" + +#. /flag:pat +#: modules/devices/x86/x86_data.c:58 +msgctxt "x86-flag" +msgid "Page Attribute Table" +msgstr "" + +#. /flag:pse36 +#: modules/devices/x86/x86_data.c:59 +msgctxt "x86-flag" +msgid "36-bit PSEs (huge pages)" +msgstr "" + +#. /flag:pn +#: modules/devices/x86/x86_data.c:60 +msgctxt "x86-flag" +msgid "Processor serial number" +msgstr "" + +#. /flag:clflush +#: modules/devices/x86/x86_data.c:61 +msgctxt "x86-flag" +msgid "Cache Line Flush instruction" +msgstr "" + +#. /flag:dts +#: modules/devices/x86/x86_data.c:62 +msgctxt "x86-flag" +msgid "" +"Debug Store (buffer for debugging and profiling instructions), or " +"alternately: digital thermal sensor" +msgstr "" + +#. /flag:acpi +#: modules/devices/x86/x86_data.c:63 +msgctxt "x86-flag" +msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" +msgstr "" + +#. /flag:mmx +#: modules/devices/x86/x86_data.c:64 +msgctxt "x86-flag" +msgid "Multimedia Extensions" +msgstr "" + +#. /flag:fxsr +#: modules/devices/x86/x86_data.c:65 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" +msgstr "" + +#. /flag:sse +#: modules/devices/x86/x86_data.c:66 +msgctxt "x86-flag" +msgid "Intel SSE vector instructions" +msgstr "" + +#. /flag:sse2 +#: modules/devices/x86/x86_data.c:67 +msgctxt "x86-flag" +msgid "SSE2" +msgstr "" + +#. /flag:ss +#: modules/devices/x86/x86_data.c:68 +msgctxt "x86-flag" +msgid "CPU self snoop" +msgstr "" + +#. /flag:ht +#: modules/devices/x86/x86_data.c:69 +msgctxt "x86-flag" +msgid "Hyper-Threading" +msgstr "" + +#. /flag:tm +#: modules/devices/x86/x86_data.c:70 +msgctxt "x86-flag" +msgid "Automatic clock control (Thermal Monitor)" +msgstr "" + +#. /flag:ia64 +#: modules/devices/x86/x86_data.c:71 +msgctxt "x86-flag" +msgid "" +"Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " +"x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" +msgstr "" + +#. /flag:pbe +#: modules/devices/x86/x86_data.c:72 +msgctxt "x86-flag" +msgid "Pending Break Enable (PBE# pin) wakeup support" +msgstr "" + +#. /flag:syscall +#: modules/devices/x86/x86_data.c:75 +msgctxt "x86-flag" +msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" +msgstr "" + +#. /flag:mp +#: modules/devices/x86/x86_data.c:76 +msgctxt "x86-flag" +msgid "Multiprocessing Capable." +msgstr "" + +#. /flag:nx +#: modules/devices/x86/x86_data.c:77 +msgctxt "x86-flag" +msgid "Execute Disable" +msgstr "" + +#. /flag:mmxext +#: modules/devices/x86/x86_data.c:78 +msgctxt "x86-flag" +msgid "AMD MMX extensions" +msgstr "" + +#. /flag:fxsr_opt +#: modules/devices/x86/x86_data.c:79 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR optimizations" +msgstr "" + +#. /flag:pdpe1gb +#: modules/devices/x86/x86_data.c:80 +msgctxt "x86-flag" +msgid "One GB pages (allows hugepagesz=1G)" +msgstr "" + +#. /flag:rdtscp +#: modules/devices/x86/x86_data.c:81 +msgctxt "x86-flag" +msgid "Read Time-Stamp Counter and Processor ID" +msgstr "" + +#. /flag:lm +#: modules/devices/x86/x86_data.c:82 +msgctxt "x86-flag" +msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" +msgstr "" + +#. /flag:3dnow +#: modules/devices/x86/x86_data.c:83 +msgctxt "x86-flag" +msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" +msgstr "" + +#. /flag:3dnowext +#: modules/devices/x86/x86_data.c:84 +msgctxt "x86-flag" +msgid "AMD 3DNow! extensions" +msgstr "" + +#. /flag:recovery +#: modules/devices/x86/x86_data.c:86 +msgctxt "x86-flag" +msgid "CPU in recovery mode" +msgstr "" + +#. /flag:longrun +#: modules/devices/x86/x86_data.c:87 +msgctxt "x86-flag" +msgid "Longrun power control" +msgstr "" + +#. /flag:lrti +#: modules/devices/x86/x86_data.c:88 +msgctxt "x86-flag" +msgid "LongRun table interface" +msgstr "" + +#. /flag:cxmmx +#: modules/devices/x86/x86_data.c:90 +msgctxt "x86-flag" +msgid "Cyrix MMX extensions" +msgstr "" + +#. /flag:k6_mtrr +#: modules/devices/x86/x86_data.c:91 +msgctxt "x86-flag" +msgid "AMD K6 nonstandard MTRRs" +msgstr "" + +#. /flag:cyrix_arr +#: modules/devices/x86/x86_data.c:92 +msgctxt "x86-flag" +msgid "Cyrix ARRs (= MTRRs)" +msgstr "" + +#. /flag:centaur_mcr +#: modules/devices/x86/x86_data.c:93 +msgctxt "x86-flag" +msgid "Centaur MCRs (= MTRRs)" +msgstr "" + +#. /flag:constant_tsc +#: modules/devices/x86/x86_data.c:94 +msgctxt "x86-flag" +msgid "TSC ticks at a constant rate" +msgstr "" + +#. /flag:up +#: modules/devices/x86/x86_data.c:95 +msgctxt "x86-flag" +msgid "SMP kernel running on UP" +msgstr "" + +#. /flag:art +#: modules/devices/x86/x86_data.c:96 +msgctxt "x86-flag" +msgid "Always-Running Timer" +msgstr "" + +#. /flag:arch_perfmon +#: modules/devices/x86/x86_data.c:97 +msgctxt "x86-flag" +msgid "Intel Architectural PerfMon" +msgstr "" + +#. /flag:pebs +#: modules/devices/x86/x86_data.c:98 +msgctxt "x86-flag" +msgid "Precise-Event Based Sampling" +msgstr "" + +#. /flag:bts +#: modules/devices/x86/x86_data.c:99 +msgctxt "x86-flag" +msgid "Branch Trace Store" +msgstr "" + +#. /flag:rep_good +#: modules/devices/x86/x86_data.c:100 +msgctxt "x86-flag" +msgid "rep microcode works well" +msgstr "" + +#. /flag:acc_power +#: modules/devices/x86/x86_data.c:101 +msgctxt "x86-flag" +msgid "AMD accumulated power mechanism" +msgstr "" + +#. /flag:nopl +#: modules/devices/x86/x86_data.c:102 +msgctxt "x86-flag" +msgid "The NOPL (0F 1F) instructions" +msgstr "" + +#. /flag:xtopology +#: modules/devices/x86/x86_data.c:103 +msgctxt "x86-flag" +msgid "cpu topology enum extensions" +msgstr "" + +#. /flag:tsc_reliable +#: modules/devices/x86/x86_data.c:104 +msgctxt "x86-flag" +msgid "TSC is known to be reliable" +msgstr "" + +#. /flag:nonstop_tsc +#: modules/devices/x86/x86_data.c:105 +msgctxt "x86-flag" +msgid "TSC does not stop in C states" +msgstr "" + +#. /flag:extd_apicid +#: modules/devices/x86/x86_data.c:106 +msgctxt "x86-flag" +msgid "has extended APICID (8 bits)" +msgstr "" + +#. /flag:amd_dcm +#: modules/devices/x86/x86_data.c:107 +msgctxt "x86-flag" +msgid "multi-node processor" +msgstr "" + +#. /flag:aperfmperf +#: modules/devices/x86/x86_data.c:108 +msgctxt "x86-flag" +msgid "APERFMPERF" +msgstr "" + +#. /flag:eagerfpu +#: modules/devices/x86/x86_data.c:109 +msgctxt "x86-flag" +msgid "Non lazy FPU restore" +msgstr "" + +#. /flag:nonstop_tsc_s3 +#: modules/devices/x86/x86_data.c:110 +msgctxt "x86-flag" +msgid "TSC doesn't stop in S3 state" +msgstr "" + +#. /flag:mce_recovery +#: modules/devices/x86/x86_data.c:111 +msgctxt "x86-flag" +msgid "CPU has recoverable machine checks" +msgstr "" + +#. /flag:pni +#: modules/devices/x86/x86_data.c:114 +msgctxt "x86-flag" +msgid "SSE-3 (\"Prescott New Instructions\")" +msgstr "" + +#. /flag:pclmulqdq +#: modules/devices/x86/x86_data.c:115 +msgctxt "x86-flag" +msgid "" +"Perform a Carry-Less Multiplication of Quadword instruction - accelerator " +"for GCM)" +msgstr "" + +#. /flag:dtes64 +#: modules/devices/x86/x86_data.c:116 +msgctxt "x86-flag" +msgid "64-bit Debug Store" +msgstr "" + +#. /flag:monitor +#: modules/devices/x86/x86_data.c:117 +msgctxt "x86-flag" +msgid "Monitor/Mwait support (Intel SSE3 supplements)" +msgstr "" + +#. /flag:ds_cpl +#: modules/devices/x86/x86_data.c:118 +msgctxt "x86-flag" +msgid "CPL Qual. Debug Store" +msgstr "" + +#. /flag:vmx +#: modules/devices/x86/x86_data.c:119 +msgctxt "x86-flag" +msgid "Hardware virtualization, Intel VMX" +msgstr "" + +#. /flag:smx +#: modules/devices/x86/x86_data.c:120 +msgctxt "x86-flag" +msgid "Safer mode TXT (TPM support)" +msgstr "" + +#. /flag:est +#: modules/devices/x86/x86_data.c:121 +msgctxt "x86-flag" +msgid "Enhanced SpeedStep" +msgstr "" + +#. /flag:tm2 +#: modules/devices/x86/x86_data.c:122 +msgctxt "x86-flag" +msgid "Thermal Monitor 2" +msgstr "" + +#. /flag:ssse3 +#: modules/devices/x86/x86_data.c:123 +msgctxt "x86-flag" +msgid "Supplemental SSE-3" +msgstr "" + +#. /flag:cid +#: modules/devices/x86/x86_data.c:124 +msgctxt "x86-flag" +msgid "Context ID" +msgstr "" + +#. /flag:sdbg +#: modules/devices/x86/x86_data.c:125 +msgctxt "x86-flag" +msgid "silicon debug" +msgstr "" + +#. /flag:fma +#: modules/devices/x86/x86_data.c:126 +msgctxt "x86-flag" +msgid "Fused multiply-add" +msgstr "" + +#. /flag:cx16 +#: modules/devices/x86/x86_data.c:127 +msgctxt "x86-flag" +msgid "CMPXCHG16B" +msgstr "" + +#. /flag:xtpr +#: modules/devices/x86/x86_data.c:128 +msgctxt "x86-flag" +msgid "Send Task Priority Messages" +msgstr "" + +#. /flag:pdcm +#: modules/devices/x86/x86_data.c:129 +msgctxt "x86-flag" +msgid "Performance Capabilities" +msgstr "" + +#. /flag:pcid +#: modules/devices/x86/x86_data.c:130 +msgctxt "x86-flag" +msgid "Process Context Identifiers" +msgstr "" + +#. /flag:dca +#: modules/devices/x86/x86_data.c:131 +msgctxt "x86-flag" +msgid "Direct Cache Access" +msgstr "" + +#. /flag:sse4_1 +#: modules/devices/x86/x86_data.c:132 +msgctxt "x86-flag" +msgid "SSE-4.1" +msgstr "" + +#. /flag:sse4_2 +#: modules/devices/x86/x86_data.c:133 +msgctxt "x86-flag" +msgid "SSE-4.2" +msgstr "" + +#. /flag:x2apic +#: modules/devices/x86/x86_data.c:134 +msgctxt "x86-flag" +msgid "x2APIC" +msgstr "" + +#. /flag:movbe +#: modules/devices/x86/x86_data.c:135 +msgctxt "x86-flag" +msgid "Move Data After Swapping Bytes instruction" +msgstr "" + +#. /flag:popcnt +#: modules/devices/x86/x86_data.c:136 +msgctxt "x86-flag" +msgid "" +"Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." +"e. bit count)" +msgstr "" + +#. /flag:tsc_deadline_timer +#: modules/devices/x86/x86_data.c:137 +msgctxt "x86-flag" +msgid "Tsc deadline timer" +msgstr "" + +#. /flag:aes/aes-ni +#: modules/devices/x86/x86_data.c:138 +msgctxt "x86-flag" +msgid "Advanced Encryption Standard (New Instructions)" +msgstr "" + +#. /flag:xsave +#: modules/devices/x86/x86_data.c:139 +msgctxt "x86-flag" +msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" +msgstr "" + +#. /flag:avx +#: modules/devices/x86/x86_data.c:140 +msgctxt "x86-flag" +msgid "Advanced Vector Extensions" +msgstr "" + +#. /flag:f16c +#: modules/devices/x86/x86_data.c:141 +msgctxt "x86-flag" +msgid "16-bit fp conversions (CVT16)" +msgstr "" + +#. /flag:rdrand +#: modules/devices/x86/x86_data.c:142 +msgctxt "x86-flag" +msgid "Read Random Number from hardware random number generator instruction" +msgstr "" + +#. /flag:hypervisor +#: modules/devices/x86/x86_data.c:143 +msgctxt "x86-flag" +msgid "Running on a hypervisor" +msgstr "" + +#. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 +#. /flag:rng +#: modules/devices/x86/x86_data.c:145 +msgctxt "x86-flag" +msgid "Random Number Generator present (xstore)" +msgstr "" + +#. /flag:rng_en +#: modules/devices/x86/x86_data.c:146 +msgctxt "x86-flag" +msgid "Random Number Generator enabled" +msgstr "" + +#. /flag:ace +#: modules/devices/x86/x86_data.c:147 +msgctxt "x86-flag" +msgid "on-CPU crypto (xcrypt)" +msgstr "" + +#. /flag:ace_en +#: modules/devices/x86/x86_data.c:148 +msgctxt "x86-flag" +msgid "on-CPU crypto enabled" +msgstr "" + +#. /flag:ace2 +#: modules/devices/x86/x86_data.c:149 +msgctxt "x86-flag" +msgid "Advanced Cryptography Engine v2" +msgstr "" + +#. /flag:ace2_en +#: modules/devices/x86/x86_data.c:150 +msgctxt "x86-flag" +msgid "ACE v2 enabled" +msgstr "" + +#. /flag:phe +#: modules/devices/x86/x86_data.c:151 +msgctxt "x86-flag" +msgid "PadLock Hash Engine" +msgstr "" + +#. /flag:phe_en +#: modules/devices/x86/x86_data.c:152 +msgctxt "x86-flag" +msgid "PHE enabled" +msgstr "" + +#. /flag:pmm +#: modules/devices/x86/x86_data.c:153 +msgctxt "x86-flag" +msgid "PadLock Montgomery Multiplier" +msgstr "" + +#. /flag:pmm_en +#: modules/devices/x86/x86_data.c:154 +msgctxt "x86-flag" +msgid "PMM enabled" +msgstr "" + +#. /flag:lahf_lm +#: modules/devices/x86/x86_data.c:156 +msgctxt "x86-flag" +msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" +msgstr "" + +#. /flag:cmp_legacy +#: modules/devices/x86/x86_data.c:157 +msgctxt "x86-flag" +msgid "If yes HyperThreading not valid" +msgstr "" + +#. /flag:svm +#: modules/devices/x86/x86_data.c:158 +msgctxt "x86-flag" +msgid "\"Secure virtual machine\": AMD-V" +msgstr "" + +#. /flag:extapic +#: modules/devices/x86/x86_data.c:159 +msgctxt "x86-flag" +msgid "Extended APIC space" +msgstr "" + +#. /flag:cr8_legacy +#: modules/devices/x86/x86_data.c:160 +msgctxt "x86-flag" +msgid "CR8 in 32-bit mode" +msgstr "" + +#. /flag:abm +#: modules/devices/x86/x86_data.c:161 +msgctxt "x86-flag" +msgid "Advanced Bit Manipulation" +msgstr "" + +#. /flag:sse4a +#: modules/devices/x86/x86_data.c:162 +msgctxt "x86-flag" +msgid "SSE-4A" +msgstr "" + +#. /flag:misalignsse +#: modules/devices/x86/x86_data.c:163 +msgctxt "x86-flag" +msgid "" +"indicates if a general-protection exception (#GP) is generated when some " +"legacy SSE instructions operate on unaligned data. Also depends on CR0 and " +"Alignment Checking bit" +msgstr "" + +#. /flag:3dnowprefetch +#: modules/devices/x86/x86_data.c:164 +msgctxt "x86-flag" +msgid "3DNow prefetch instructions" +msgstr "" + +#. /flag:osvw +#: modules/devices/x86/x86_data.c:165 +msgctxt "x86-flag" +msgid "" +"indicates OS Visible Workaround, which allows the OS to work around " +"processor errata." +msgstr "" + +#. /flag:ibs +#: modules/devices/x86/x86_data.c:166 +msgctxt "x86-flag" +msgid "Instruction Based Sampling" +msgstr "" + +#. /flag:xop +#: modules/devices/x86/x86_data.c:167 +msgctxt "x86-flag" +msgid "extended AVX instructions" +msgstr "" + +#. /flag:skinit +#: modules/devices/x86/x86_data.c:168 +msgctxt "x86-flag" +msgid "SKINIT/STGI instructions" +msgstr "" + +#. /flag:wdt +#: modules/devices/x86/x86_data.c:169 +msgctxt "x86-flag" +msgid "Watchdog timer" +msgstr "" + +#. /flag:lwp +#: modules/devices/x86/x86_data.c:170 +msgctxt "x86-flag" +msgid "Light Weight Profiling" +msgstr "" + +#. /flag:fma4 +#: modules/devices/x86/x86_data.c:171 +msgctxt "x86-flag" +msgid "4 operands MAC instructions" +msgstr "" + +#. /flag:tce +#: modules/devices/x86/x86_data.c:172 +msgctxt "x86-flag" +msgid "translation cache extension" +msgstr "" + +#. /flag:nodeid_msr +#: modules/devices/x86/x86_data.c:173 +msgctxt "x86-flag" +msgid "NodeId MSR" +msgstr "" + +#. /flag:tbm +#: modules/devices/x86/x86_data.c:174 +msgctxt "x86-flag" +msgid "Trailing Bit Manipulation" +msgstr "" + +#. /flag:topoext +#: modules/devices/x86/x86_data.c:175 +msgctxt "x86-flag" +msgid "Topology Extensions CPUID leafs" +msgstr "" + +#. /flag:perfctr_core +#: modules/devices/x86/x86_data.c:176 +msgctxt "x86-flag" +msgid "Core Performance Counter Extensions" +msgstr "" + +#. /flag:perfctr_nb +#: modules/devices/x86/x86_data.c:177 +msgctxt "x86-flag" +msgid "NB Performance Counter Extensions" +msgstr "" + +#. /flag:bpext +#: modules/devices/x86/x86_data.c:178 +msgctxt "x86-flag" +msgid "data breakpoint extension" +msgstr "" + +#. /flag:ptsc +#: modules/devices/x86/x86_data.c:179 +msgctxt "x86-flag" +msgid "performance time-stamp counter" +msgstr "" + +#. /flag:perfctr_l2 +#: modules/devices/x86/x86_data.c:180 +msgctxt "x86-flag" +msgid "L2 Performance Counter Extensions" +msgstr "" + +#. /flag:mwaitx +#: modules/devices/x86/x86_data.c:181 +msgctxt "x86-flag" +msgid "MWAIT extension (MONITORX/MWAITX)" +msgstr "" + +#. /flag:cpb +#: modules/devices/x86/x86_data.c:183 +msgctxt "x86-flag" +msgid "AMD Core Performance Boost" +msgstr "" + +#. /flag:epb +#: modules/devices/x86/x86_data.c:184 +msgctxt "x86-flag" +msgid "IA32_ENERGY_PERF_BIAS support" +msgstr "" + +#. /flag:hw_pstate +#: modules/devices/x86/x86_data.c:185 +msgctxt "x86-flag" +msgid "AMD HW-PState" +msgstr "" + +#. /flag:proc_feedback +#: modules/devices/x86/x86_data.c:186 +msgctxt "x86-flag" +msgid "AMD ProcFeedbackInterface" +msgstr "" + +#. /flag:intel_pt +#: modules/devices/x86/x86_data.c:187 +msgctxt "x86-flag" +msgid "Intel Processor Tracing" +msgstr "" + +#. /flag:tpr_shadow +#: modules/devices/x86/x86_data.c:189 +msgctxt "x86-flag" +msgid "Intel TPR Shadow" +msgstr "" + +#. /flag:vnmi +#: modules/devices/x86/x86_data.c:190 +msgctxt "x86-flag" +msgid "Intel Virtual NMI" +msgstr "" + +#. /flag:flexpriority +#: modules/devices/x86/x86_data.c:191 +msgctxt "x86-flag" +msgid "Intel FlexPriority" +msgstr "" + +#. /flag:ept +#: modules/devices/x86/x86_data.c:192 +msgctxt "x86-flag" +msgid "Intel Extended Page Table" +msgstr "" + +#. /flag:vpid +#: modules/devices/x86/x86_data.c:193 +msgctxt "x86-flag" +msgid "Intel Virtual Processor ID" +msgstr "" + +#. /flag:vmmcall +#: modules/devices/x86/x86_data.c:194 +msgctxt "x86-flag" +msgid "prefer VMMCALL to VMCALL" +msgstr "" + +#. /flag:fsgsbase +#: modules/devices/x86/x86_data.c:196 +msgctxt "x86-flag" +msgid "{RD/WR}{FS/GS}BASE instructions" +msgstr "" + +#. /flag:tsc_adjust +#: modules/devices/x86/x86_data.c:197 +msgctxt "x86-flag" +msgid "TSC adjustment MSR" +msgstr "" + +#. /flag:bmi1 +#: modules/devices/x86/x86_data.c:198 +msgctxt "x86-flag" +msgid "1st group bit manipulation extensions" +msgstr "" + +#. /flag:hle +#: modules/devices/x86/x86_data.c:199 +msgctxt "x86-flag" +msgid "Hardware Lock Elision" +msgstr "" + +#. /flag:avx2 +#: modules/devices/x86/x86_data.c:200 +msgctxt "x86-flag" +msgid "AVX2 instructions" +msgstr "" + +#. /flag:smep +#: modules/devices/x86/x86_data.c:201 +msgctxt "x86-flag" +msgid "Supervisor Mode Execution Protection" +msgstr "" + +#. /flag:bmi2 +#: modules/devices/x86/x86_data.c:202 +msgctxt "x86-flag" +msgid "2nd group bit manipulation extensions" +msgstr "" + +#. /flag:erms +#: modules/devices/x86/x86_data.c:203 +msgctxt "x86-flag" +msgid "Enhanced REP MOVSB/STOSB" +msgstr "" + +#. /flag:invpcid +#: modules/devices/x86/x86_data.c:204 +msgctxt "x86-flag" +msgid "Invalidate Processor Context ID" +msgstr "" + +#. /flag:rtm +#: modules/devices/x86/x86_data.c:205 +msgctxt "x86-flag" +msgid "Restricted Transactional Memory" +msgstr "" + +#. /flag:cqm +#: modules/devices/x86/x86_data.c:206 +msgctxt "x86-flag" +msgid "Cache QoS Monitoring" +msgstr "" + +#. /flag:mpx +#: modules/devices/x86/x86_data.c:207 +msgctxt "x86-flag" +msgid "Memory Protection Extension" +msgstr "" + +#. /flag:avx512f +#: modules/devices/x86/x86_data.c:208 +msgctxt "x86-flag" +msgid "AVX-512 foundation" +msgstr "" + +#. /flag:avx512dq +#: modules/devices/x86/x86_data.c:209 +msgctxt "x86-flag" +msgid "AVX-512 Double/Quad instructions" +msgstr "" + +#. /flag:rdseed +#: modules/devices/x86/x86_data.c:210 +msgctxt "x86-flag" +msgid "The RDSEED instruction" +msgstr "" + +#. /flag:adx +#: modules/devices/x86/x86_data.c:211 +msgctxt "x86-flag" +msgid "The ADCX and ADOX instructions" +msgstr "" + +#. /flag:smap +#: modules/devices/x86/x86_data.c:212 +msgctxt "x86-flag" +msgid "Supervisor Mode Access Prevention" +msgstr "" + +#. /flag:clflushopt +#: modules/devices/x86/x86_data.c:213 +msgctxt "x86-flag" +msgid "CLFLUSHOPT instruction" +msgstr "" + +#. /flag:clwb +#: modules/devices/x86/x86_data.c:214 +msgctxt "x86-flag" +msgid "CLWB instruction" +msgstr "" + +#. /flag:avx512pf +#: modules/devices/x86/x86_data.c:215 +msgctxt "x86-flag" +msgid "AVX-512 Prefetch" +msgstr "" + +#. /flag:avx512er +#: modules/devices/x86/x86_data.c:216 +msgctxt "x86-flag" +msgid "AVX-512 Exponential and Reciprocal" +msgstr "" + +#. /flag:avx512cd +#: modules/devices/x86/x86_data.c:217 +msgctxt "x86-flag" +msgid "AVX-512 Conflict Detection" +msgstr "" + +#. /flag:sha_ni +#: modules/devices/x86/x86_data.c:218 +msgctxt "x86-flag" +msgid "SHA1/SHA256 Instruction Extensions" +msgstr "" + +#. /flag:avx512bw +#: modules/devices/x86/x86_data.c:219 +msgctxt "x86-flag" +msgid "AVX-512 Byte/Word instructions" +msgstr "" + +#. /flag:avx512vl +#: modules/devices/x86/x86_data.c:220 +msgctxt "x86-flag" +msgid "AVX-512 128/256 Vector Length extensions" +msgstr "" + +#. /flag:xsaveopt +#: modules/devices/x86/x86_data.c:222 +msgctxt "x86-flag" +msgid "Optimized XSAVE" +msgstr "" + +#. /flag:xsavec +#: modules/devices/x86/x86_data.c:223 +msgctxt "x86-flag" +msgid "XSAVEC" +msgstr "" + +#. /flag:xgetbv1 +#: modules/devices/x86/x86_data.c:224 +msgctxt "x86-flag" +msgid "XGETBV with ECX = 1" +msgstr "" + +#. /flag:xsaves +#: modules/devices/x86/x86_data.c:225 +msgctxt "x86-flag" +msgid "XSAVES/XRSTORS" +msgstr "" + +#. /flag:cqm_llc +#: modules/devices/x86/x86_data.c:227 +msgctxt "x86-flag" +msgid "LLC QoS" +msgstr "" + +#. /flag:cqm_occup_llc +#: modules/devices/x86/x86_data.c:229 +msgctxt "x86-flag" +msgid "LLC occupancy monitoring" +msgstr "" + +#. /flag:cqm_mbm_total +#: modules/devices/x86/x86_data.c:230 +msgctxt "x86-flag" +msgid "LLC total MBM monitoring" +msgstr "" + +#. /flag:cqm_mbm_local +#: modules/devices/x86/x86_data.c:231 +msgctxt "x86-flag" +msgid "LLC local MBM monitoring" +msgstr "" + +#. /flag:clzero +#: modules/devices/x86/x86_data.c:233 +msgctxt "x86-flag" +msgid "CLZERO instruction" +msgstr "" + +#. /flag:irperf +#: modules/devices/x86/x86_data.c:234 +msgctxt "x86-flag" +msgid "instructions retired performance counter" +msgstr "" + +#. /flag:dtherm +#: modules/devices/x86/x86_data.c:236 +msgctxt "x86-flag" +msgid "digital thermal sensor" +msgstr "" + +#. /flag:ida +#: modules/devices/x86/x86_data.c:237 +msgctxt "x86-flag" +msgid "Intel Dynamic Acceleration" +msgstr "" + +#. /flag:arat +#: modules/devices/x86/x86_data.c:238 +msgctxt "x86-flag" +msgid "Always Running APIC Timer" +msgstr "" + +#. /flag:pln +#: modules/devices/x86/x86_data.c:239 +msgctxt "x86-flag" +msgid "Intel Power Limit Notification" +msgstr "" + +#. /flag:pts +#: modules/devices/x86/x86_data.c:240 +msgctxt "x86-flag" +msgid "Intel Package Thermal Status" +msgstr "" + +#. /flag:hwp +#: modules/devices/x86/x86_data.c:241 +msgctxt "x86-flag" +msgid "Intel Hardware P-states" +msgstr "" + +#. /flag:hwp_notify +#: modules/devices/x86/x86_data.c:242 +msgctxt "x86-flag" +msgid "HWP notification" +msgstr "" + +#. /flag:hwp_act_window +#: modules/devices/x86/x86_data.c:243 +msgctxt "x86-flag" +msgid "HWP Activity Window" +msgstr "" + +#. /flag:hwp_epp +#: modules/devices/x86/x86_data.c:244 +msgctxt "x86-flag" +msgid "HWP Energy Performance Preference" +msgstr "" + +#. /flag:hwp_pkg_req +#: modules/devices/x86/x86_data.c:245 +msgctxt "x86-flag" +msgid "HWP package-level request" +msgstr "" + +#. /flag:npt +#: modules/devices/x86/x86_data.c:247 +msgctxt "x86-flag" +msgid "AMD Nested Page Table support" +msgstr "" + +#. /flag:lbrv +#: modules/devices/x86/x86_data.c:248 +msgctxt "x86-flag" +msgid "AMD LBR Virtualization support" +msgstr "" + +#. /flag:svm_lock +#: modules/devices/x86/x86_data.c:249 +msgctxt "x86-flag" +msgid "AMD SVM locking MSR" +msgstr "" + +#. /flag:nrip_save +#: modules/devices/x86/x86_data.c:250 +msgctxt "x86-flag" +msgid "AMD SVM next_rip save" +msgstr "" + +#. /flag:tsc_scale +#: modules/devices/x86/x86_data.c:251 +msgctxt "x86-flag" +msgid "AMD TSC scaling support" +msgstr "" + +#. /flag:vmcb_clean +#: modules/devices/x86/x86_data.c:252 +msgctxt "x86-flag" +msgid "AMD VMCB clean bits support" +msgstr "" + +#. /flag:flushbyasid +#: modules/devices/x86/x86_data.c:253 +msgctxt "x86-flag" +msgid "AMD flush-by-ASID support" +msgstr "" + +#. /flag:decodeassists +#: modules/devices/x86/x86_data.c:254 +msgctxt "x86-flag" +msgid "AMD Decode Assists support" +msgstr "" + +#. /flag:pausefilter +#: modules/devices/x86/x86_data.c:255 +msgctxt "x86-flag" +msgid "AMD filtered pause intercept" +msgstr "" + +#. /flag:pfthreshold +#: modules/devices/x86/x86_data.c:256 +msgctxt "x86-flag" +msgid "AMD pause filter threshold" +msgstr "" + +#. /flag:avic +#: modules/devices/x86/x86_data.c:257 +msgctxt "x86-flag" +msgid "Virtual Interrupt Controller" +msgstr "" + +#. /flag:pku +#: modules/devices/x86/x86_data.c:259 +msgctxt "x86-flag" +msgid "Protection Keys for Userspace" +msgstr "" + +#. /flag:ospke +#: modules/devices/x86/x86_data.c:260 +msgctxt "x86-flag" +msgid "OS Protection Keys Enable" +msgstr "" + +#. /flag:overflow_recov +#: modules/devices/x86/x86_data.c:262 +msgctxt "x86-flag" +msgid "MCA overflow recovery support" +msgstr "" + +#. /flag:succor +#: modules/devices/x86/x86_data.c:263 +msgctxt "x86-flag" +msgid "uncorrectable error containment and recovery" +msgstr "" + +#. /flag:smca +#: modules/devices/x86/x86_data.c:264 +msgctxt "x86-flag" +msgid "Scalable MCA" +msgstr "" + +#. /bug:f00f +#: modules/devices/x86/x86_data.c:267 +msgctxt "x86-flag" +msgid "Intel F00F bug" +msgstr "" + +#. /bug:fdiv +#: modules/devices/x86/x86_data.c:268 +msgctxt "x86-flag" +msgid "FPU FDIV" +msgstr "" + +#. /bug:coma +#: modules/devices/x86/x86_data.c:269 +msgctxt "x86-flag" +msgid "Cyrix 6x86 coma" +msgstr "" + +#. /bug:tlb_mmatch +#: modules/devices/x86/x86_data.c:270 +msgctxt "x86-flag" +msgid "AMD Erratum 383" +msgstr "" + +#. /bug:apic_c1e +#. /bug:amd_e400 +#: modules/devices/x86/x86_data.c:271 modules/devices/x86/x86_data.c:280 +msgctxt "x86-flag" +msgid "AMD Erratum 400" +msgstr "" + +#. /bug:11ap +#: modules/devices/x86/x86_data.c:272 +msgctxt "x86-flag" +msgid "Bad local APIC aka 11AP" +msgstr "" + +#. /bug:fxsave_leak +#: modules/devices/x86/x86_data.c:273 +msgctxt "x86-flag" +msgid "FXSAVE leaks FOP/FIP/FOP" +msgstr "" + +#. /bug:clflush_monitor +#: modules/devices/x86/x86_data.c:274 +msgctxt "x86-flag" +msgid "AAI65, CLFLUSH required before MONITOR" +msgstr "" + +#. /bug:sysret_ss_attrs +#: modules/devices/x86/x86_data.c:275 +msgctxt "x86-flag" +msgid "SYSRET doesn't fix up SS attrs" +msgstr "" + +#. /bug:espfix +#: modules/devices/x86/x86_data.c:276 +msgctxt "x86-flag" +msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" +msgstr "" + +#. /bug:null_seg +#: modules/devices/x86/x86_data.c:277 +msgctxt "x86-flag" +msgid "Nulling a selector preserves the base" +msgstr "" + +#. /bug:swapgs_fence +#: modules/devices/x86/x86_data.c:278 +msgctxt "x86-flag" +msgid "SWAPGS without input dep on GS" +msgstr "" + +#. /bug:monitor +#: modules/devices/x86/x86_data.c:279 +msgctxt "x86-flag" +msgid "IPI required to wake up remote CPU" +msgstr "" + +#. /x86/kernel/cpu/powerflags.h +#. /flag:pm:ts +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "temperature sensor" +msgstr "" + +#. /flag:pm:fid +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "frequency id control" +msgstr "" + +#. /flag:pm:vid +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "voltage id control" +msgstr "" + +#. /flag:pm:ttp +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "thermal trip" +msgstr "" + +#. /flag:pm:tm +#: modules/devices/x86/x86_data.c:287 +msgctxt "x86-flag" +msgid "hardware thermal control" +msgstr "" + +#. /flag:pm:stc +#: modules/devices/x86/x86_data.c:288 +msgctxt "x86-flag" +msgid "software thermal control" +msgstr "" + +#. /flag:pm:100mhzsteps +#: modules/devices/x86/x86_data.c:289 +msgctxt "x86-flag" +msgid "100 MHz multiplier control" +msgstr "" + +#. /flag:pm:hwpstate +#: modules/devices/x86/x86_data.c:290 +msgctxt "x86-flag" +msgid "hardware P-state control" +msgstr "" + +#. /flag:pm:cpb +#: modules/devices/x86/x86_data.c:291 +msgctxt "x86-flag" +msgid "core performance boost" +msgstr "" -#: modules//network.c:59 +#. /flag:pm:eff_freq_ro +#: modules/devices/x86/x86_data.c:292 +msgctxt "x86-flag" +msgid "Readonly aperf/mperf" +msgstr "" + +#. /flag:pm:proc_feedback +#: modules/devices/x86/x86_data.c:293 +msgctxt "x86-flag" +msgid "processor feedback interface" +msgstr "" + +#. /flag:pm:acc_power +#: modules/devices/x86/x86_data.c:294 +msgctxt "x86-flag" +msgid "accumulated power mechanism" +msgstr "" + +#: modules/network.c:59 msgid "Interfaces" msgstr "Interfaces" -#: modules//network.c:60 +#: modules/network.c:60 msgid "IP Connections" msgstr "Connections IP" -#: modules//network.c:61 +#: modules/network.c:61 msgid "Routing Table" msgstr "Table de Routage" -#: modules//network.c:62 +#: modules/network.c:62 modules/network.c:303 msgid "ARP Table" msgstr "Table ARP" -#: modules//network.c:63 +#: modules/network.c:63 msgid "DNS Servers" msgstr "Serveurs DNS" -#: modules//network.c:64 +#: modules/network.c:64 msgid "Statistics" msgstr "Statistiques" -#: modules//network.c:65 +#: modules/network.c:65 msgid "Shared Directories" msgstr "Dossiers d'interopérabilités" -#: modules//network.c:300 -#, c-format -msgid "" -"[ARP Table]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Interface\n" -"ColumnTitle$Extra1=MAC Address\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[ARP Table]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=IP Addresse\n" -"ColumnTitle$Value=Interface\n" -"ColumnTitle$Extra1=MAC Address\n" -"ShowColumnHeaders=true\n" +#: modules/network.c:304 modules/network.c:326 modules/network.c:357 +#: modules/network/net.c:477 +msgid "IP Address" +msgstr "Addresse IP" -#: modules//network.c:321 -#, c-format -msgid "" -"[Name servers]\n" -"%s\n" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" +#: modules/network.c:304 modules/network.c:357 modules/network.c:374 +msgid "Interface" msgstr "" -"[Name servers]\n" -"%s\n" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" -#: modules//network.c:331 -#, c-format -msgid "" -"[Connections]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Local Address\n" -"ColumnTitle$Value=Protocol\n" -"ColumnTitle$Extra1=Foreign Address\n" -"ColumnTitle$Extra2=State\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[Connections]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Local Address\n" -"ColumnTitle$Value=Protocol\n" -"ColumnTitle$Extra1=Foreign Address\n" -"ColumnTitle$Extra2=State\n" -"ShowColumnHeaders=true\n" - -#: modules//network.c:345 -#, c-format -msgid "" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Interface\n" -"ColumnTitle$Value=IP Address\n" -"ColumnTitle$Extra1=Sent\n" -"ColumnTitle$Extra2=Received\n" -"ShowColumnHeaders=true\n" -"%s" +#: modules/network.c:304 +msgid "MAC Address" msgstr "" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Interface\n" -"ColumnTitle$Value=Addresse IP\n" -"ColumnTitle$Extra1=Envoyé\n" -"ColumnTitle$Extra2=Reçue\n" -"ShowColumnHeaders=true\n" -"%s" -#: modules//network.c:361 -#, c-format -msgid "" -"[IP routing table]\n" -"%s\n" -"[$ShellParam$]\n" -"ViewType=0\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Destination / Gateway\n" -"ColumnTitle$Value=Interface\n" -"ColumnTitle$Extra1=Flags\n" -"ColumnTitle$Extra2=Mask\n" -"ShowColumnHeaders=true\n" +#: modules/network.c:313 +msgid "SAMBA" msgstr "" -#: modules//network.c:399 +#: modules/network.c:314 +msgid "NFS" +msgstr "" + +#: modules/network.c:325 +msgid "Name Servers" +msgstr "" + +#: modules/network.c:340 +msgid "Connections" +msgstr "" + +#: modules/network.c:341 +msgid "Local Address" +msgstr "" + +#: modules/network.c:341 +msgid "Protocol" +msgstr "" + +#: modules/network.c:341 +msgid "Foreign Address" +msgstr "" + +#: modules/network.c:341 +msgid "State" +msgstr "" + +#: modules/network.c:357 +msgid "Sent" +msgstr "Envoyé" + +#: modules/network.c:357 +msgid "Received" +msgstr "Reçue" + +#: modules/network.c:373 +msgid "IP routing table" +msgstr "" + +#: modules/network.c:374 +msgid "Destination/Gateway" +msgstr "" + +#: modules/network.c:374 +msgid "Flags" +msgstr "" + +#: modules/network.c:374 modules/network/net.c:478 +msgid "Mask" +msgstr "" + +#: modules/network.c:402 msgid "Network" msgstr "Réseau" -#: modules//network.c:432 +#: modules/network.c:435 msgid "Gathers information about this computer's network connection" msgstr "Collecte des informations sur les connexions réseau de cet ordinateur" -#: hardinfo//hardinfo.c:54 -msgid "" -"Copyright (C) 2003-2009 Leandro A. F. Pereira. See COPYING for details.\n" -"\n" +#: modules/network/net.c:72 +msgctxt "wi-op-mode" +msgid "Auto" msgstr "" -"Copyright (C) 2003-2009 Leandro A. F. Pereira. voir COPYING pour les details.\n" -"\n" -#: hardinfo//hardinfo.c:56 -#, c-format -msgid "" -"Compile-time options:\n" -" Release version: %s (%s)\n" -" BinReloc enabled: %s\n" -" Data prefix: %s\n" -" Library prefix: %s\n" -" Compiled on: %s %s (%s)\n" +#: modules/network/net.c:73 +msgctxt "wi-op-mode" +msgid "Ad-Hoc" msgstr "" -"Compile-time options:\n" -" Version: %s (%s)\n" -" BinReloc activé: %s\n" -" Data prefix: %s\n" -" Library prefix: %s\n" -" Compilation: %s %s (%s)\n" -#: hardinfo//hardinfo.c:74 -#, c-format -msgid "" -"Failed to find runtime data.\n" -"\n" -"• Is HardInfo correctly installed?\n" -"• See if %s and %s exists and you have read permission." +#: modules/network/net.c:74 +msgctxt "wi-op-mode" +msgid "Managed" msgstr "" -"Impossible de trouver les données d'exécution.\n" -"\n" -"• Est ce que HardInfo est correctement installé?\n" -"• Voir si %s et %s existes et que vous avez bien les privilèges." -#: hardinfo//hardinfo.c:81 -#, c-format -msgid "" -"Modules:\n" -"%-20s%-15s%-12s\n" +#: modules/network/net.c:75 +msgctxt "wi-op-mode" +msgid "Master" msgstr "" -"Modules:\n" -"%-20s%-15s%-12s\n" -#: hardinfo//hardinfo.c:82 -msgid "File Name" -msgstr "Nom du fichier" +#: modules/network/net.c:76 +msgctxt "wi-op-mode" +msgid "Repeater" +msgstr "" -#: hardinfo//hardinfo.c:82 -msgid "Name" -msgstr "Nom" +#: modules/network/net.c:77 +msgctxt "wi-op-mode" +msgid "Secondary" +msgstr "" -#: hardinfo//hardinfo.c:82 -msgid "Version" -msgstr "Version" +#: modules/network/net.c:78 +msgctxt "wi-op-mode" +msgid "(Unknown)" +msgstr "" -#: hardinfo//hardinfo.c:135 -#, c-format -msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" -msgstr "Benchmark inconnu ``%s'' ou libbenchmark.so non chargé" +#: modules/network/net.c:242 modules/network/net.c:262 +#: modules/network/net.c:270 +msgctxt "net-if-type" +msgid "Ethernet" +msgstr "" -#: hardinfo//hardinfo.c:163 -msgid "Don't know what to do. Exiting." -msgstr "Que faire. Sortie." +#: modules/network/net.c:243 +msgctxt "net-if-type" +msgid "Loopback" +msgstr "" -#: hardinfo//util.c:102 -#: hardinfo//util.c:105 -#: hardinfo//util.c:110 -#, c-format -msgid "%d minute" -msgid_plural "%d minutes" -msgstr[0] "%d minute" -msgstr[1] "%d minutes" +#: modules/network/net.c:244 +msgctxt "net-if-type" +msgid "Point-to-Point" +msgstr "" -#: hardinfo//util.c:104 -#, c-format -msgid "%d hour, " -msgid_plural "%d hours, " -msgstr[0] "%d heure, " -msgstr[1] "%d heures, " +#: modules/network/net.c:245 modules/network/net.c:246 +#: modules/network/net.c:247 modules/network/net.c:248 +#: modules/network/net.c:272 +msgctxt "net-if-type" +msgid "Wireless" +msgstr "" -#: hardinfo//util.c:108 -#, c-format -msgid "%d day, " -msgid_plural "%d days, " -msgstr[0] "%d jour, " -msgstr[1] "%d jours, " +#: modules/network/net.c:249 +msgctxt "net-if-type" +msgid "Virtual Point-to-Point (TUN)" +msgstr "" -#: hardinfo//util.c:109 -#, c-format -msgid "%d hour and " -msgid_plural "%d hours and " -msgstr[0] "%d heure et " -msgstr[1] "%d heures et " +#: modules/network/net.c:250 +msgctxt "net-if-type" +msgid "Ethernet (TAP)" +msgstr "" -#: hardinfo//util.c:116 -#, c-format -msgid "%.1f B" -msgstr "%.1f B" +#: modules/network/net.c:251 +msgctxt "net-if-type" +msgid "Parallel Line Internet Protocol" +msgstr "" -#: hardinfo//util.c:118 -#, c-format -msgid "%.1f KiB" -msgstr "%.1f KiB" +#: modules/network/net.c:252 +msgctxt "net-if-type" +msgid "Infrared" +msgstr "" -#: hardinfo//util.c:120 -#, c-format -msgid "%.1f MiB" -msgstr "%.1f MiB" +#: modules/network/net.c:253 modules/network/net.c:271 +msgctxt "net-if-type" +msgid "Serial Line Internet Protocol" +msgstr "" -#: hardinfo//util.c:122 -#, c-format -msgid "%.1f GiB" -msgstr "%.1f GiB" +#: modules/network/net.c:254 +msgctxt "net-if-type" +msgid "Integrated Services Digital Network" +msgstr "" -#: hardinfo//util.c:336 -msgid "Error" -msgstr "Erreur" +#: modules/network/net.c:255 +msgctxt "net-if-type" +msgid "IPv6-over-IPv4 Tunnel" +msgstr "" -#: hardinfo//util.c:336 -#: hardinfo//util.c:352 -msgid "Warning" -msgstr "Attention" +#: modules/network/net.c:256 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface (NAT)" +msgstr "" -#: hardinfo//util.c:351 -msgid "Fatal Error" -msgstr "Erreur Fatale" +#: modules/network/net.c:257 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface" +msgstr "" -#: hardinfo//util.c:376 -msgid "creates a report and prints to standard output" -msgstr "crée un rapport et imprime sur la sortie standard" +#: modules/network/net.c:258 +msgctxt "net-if-type" +msgid "Personal Area Network (PAN)" +msgstr "" -#: hardinfo//util.c:382 -msgid "chooses a report format (text, html)" -msgstr "choisir un format de rapport (texte, html)" +#: modules/network/net.c:259 +msgctxt "net-if-type" +msgid "Bluetooth" +msgstr "" -#: hardinfo//util.c:388 -msgid "run benchmark; requires benchmark.so to be loaded" -msgstr "Envoyé le benchmark; nécessite benchmark.so" +#: modules/network/net.c:260 +msgctxt "net-if-type" +msgid "Bridge Interface" +msgstr "" -#: hardinfo//util.c:394 -msgid "lists modules" -msgstr "Listes des modules" +#: modules/network/net.c:261 +msgctxt "net-if-type" +msgid "Hamachi Virtual Personal Network" +msgstr "" -#: hardinfo//util.c:400 -msgid "specify module to load" -msgstr "spécifie les modules à charger" +#: modules/network/net.c:263 +msgctxt "net-if-type" +msgid "Intermediate Functional Block" +msgstr "" -#: hardinfo//util.c:406 -msgid "automatically load module dependencies" -msgstr "charger automatiquement les dépendances entre modules" +#: modules/network/net.c:264 +msgctxt "net-if-type" +msgid "GRE Network Tunnel" +msgstr "" -#: hardinfo//util.c:413 -msgid "run in XML-RPC server mode" -msgstr "fonctionner en mode serveur XML-RPC" +#: modules/network/net.c:265 +msgctxt "net-if-type" +msgid "Mesh Network" +msgstr "" -#: hardinfo//util.c:420 -msgid "shows program version and quit" -msgstr "Affiche la version du programme et quitter" +#: modules/network/net.c:266 +msgctxt "net-if-type" +msgid "Wireless Master Interface" +msgstr "" -#: hardinfo//util.c:425 -msgid "- System Profiler and Benchmark tool" -msgstr "- Profil du Systeme et outil d'évaluation Benchmark" +#: modules/network/net.c:267 +msgctxt "net-if-type" +msgid "VirtualBox Virtual Network Interface" +msgstr "" -#: hardinfo//util.c:435 -#, c-format -msgid "" -"Unrecognized arguments.\n" -"Try ``%s --help'' for more information.\n" +#: modules/network/net.c:273 +msgctxt "net-if-type" +msgid "Wireless (WAN)" msgstr "" -"commandes inconnues.\n" -"taper ``%s --help'' pour plus d'informations.\n" -#: hardinfo//util.c:501 -#, c-format -msgid "Couldn't find a Web browser to open URL %s." -msgstr "Impossible de trouver un navigateur Web pour ouvrir l'URL %s." +#: modules/network/net.c:275 +msgctxt "net-if-type" +msgid "(Unknown)" +msgstr "" -#: hardinfo//util.c:848 -#, c-format -msgid "Module \"%s\" depends on module \"%s\", load it?" -msgstr "Module \"%s\" depends du module \"%s\", le charger?" +#: modules/network/net.c:348 modules/network/net.c:358 +msgid "Network Interfaces" +msgstr "" -#: hardinfo//util.c:871 -#, c-format -msgid "Module \"%s\" depends on module \"%s\"." -msgstr "Module \"%s\" depends du module \"%s\"." +#: modules/network/net.c:348 +msgid "None Found" +msgstr "" -#: hardinfo//util.c:916 -#, c-format -msgid "No module could be loaded. Check permissions on \"%s\" and try again." -msgstr "Aucun module peut être chargé. Vérifiez les permissions sur \"%s\" et essayez à nouveau." +#: modules/network/net.c:400 modules/network/net.c:422 +#: modules/network/net.c:423 +msgid "MiB" +msgstr "" -#: hardinfo//util.c:920 -msgid "No module could be loaded. Please use hardinfo -l to list all available modules and try again with a valid module list." -msgstr "Aucun module peut être chargé. S'il vous plaît utiliser hardinfo -l pour répertorier tous les modules disponibles et essayez à nouveau avec une liste de modules valides." +#: modules/network/net.c:414 +msgid "Network Adapter Properties" +msgstr "" -#: hardinfo//util.c:1096 -#, c-format -msgid "Scanning: %s..." -msgstr "Scanne: %s..." +#: modules/network/net.c:415 +msgid "Interface Type" +msgstr "" + +#: modules/network/net.c:416 +msgid "Hardware Address (MAC)" +msgstr "" + +#: modules/network/net.c:420 +msgid "MTU" +msgstr "" + +#: modules/network/net.c:421 +msgid "Transfer Details" +msgstr "" + +#: modules/network/net.c:422 +msgid "Bytes Received" +msgstr "" + +#: modules/network/net.c:423 +msgid "Bytes Sent" +msgstr "" + +#: modules/network/net.c:440 modules/network/net.c:462 +#: modules/network/net.c:463 +msgid "dBm" +msgstr "" + +#: modules/network/net.c:440 +msgid "mW" +msgstr "" + +#: modules/network/net.c:454 +msgid "Wireless Properties" +msgstr "" + +#: modules/network/net.c:455 +msgid "Network Name (SSID)" +msgstr "" + +#: modules/network/net.c:456 +msgid "Bit Rate" +msgstr "" +#: modules/network/net.c:456 +msgid "Mb/s" +msgstr "" + +#: modules/network/net.c:457 +msgid "Transmission Power" +msgstr "" +#: modules/network/net.c:459 +msgid "Status" +msgstr "" +#: modules/network/net.c:460 +msgid "Link Quality" +msgstr "" + +#: modules/network/net.c:461 +msgid "Signal / Noise" +msgstr "" + +#: modules/network/net.c:476 +msgid "Internet Protocol (IPv4)" +msgstr "" + +#: modules/network/net.c:477 modules/network/net.c:478 +#: modules/network/net.c:480 +msgid "(Not set)" +msgstr "" + +#: modules/network/net.c:479 +msgid "Broadcast Address" +msgstr "" +#~ msgid "Desktop Environment" +#~ msgstr "Environnement de bureau" diff --git a/po/hardinfo.pot b/po/hardinfo.pot index 384808d3..a2d37c65 100644 --- a/po/hardinfo.pot +++ b/po/hardinfo.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-10 10:11+0200\n" +"POT-Creation-Date: 2017-08-14 22:23-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -18,132 +18,311 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: shell//callbacks.c:71 +#. / %d will be latest year of copyright +#: hardinfo/hardinfo.c:49 #, c-format -msgid "Remote: <b>%s</b>" +msgid "" +"Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n" +"\n" msgstr "" -#: shell//callbacks.c:117 -msgid "Disconnecting..." +#: hardinfo/hardinfo.c:51 +#, c-format +msgid "" +"Compile-time options:\n" +" Release version: %s (%s)\n" +" BinReloc enabled: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compiled for: %s\n" msgstr "" -#: shell//callbacks.c:120 -msgid "Unloading modules..." +#: hardinfo/hardinfo.c:57 hardinfo/hardinfo.c:58 modules/computer.c:605 +#: modules/devices/inputdevices.c:128 modules/devices/pci.c:112 +#: modules/devices/printers.c:138 +msgid "Yes" msgstr "" -#: shell//callbacks.c:123 -msgid "Loading local modules..." +#: hardinfo/hardinfo.c:58 modules/computer.c:605 modules/devices/pci.c:112 +#: modules/devices/printers.c:138 +msgid "No" msgstr "" -#: shell//callbacks.c:130 -#: shell//callbacks.c:162 -#: shell//shell.c:314 -#: shell//shell.c:816 -#: shell//shell.c:1800 -#: modules//benchmark.c:431 -#: modules//benchmark.c:439 -#: hardinfo//util.c:1112 -msgid "Done." +#: hardinfo/hardinfo.c:69 +#, c-format +msgid "" +"Failed to find runtime data.\n" +"\n" +"• Is HardInfo correctly installed?\n" +"• See if %s and %s exists and you have read permission." +msgstr "" + +#: hardinfo/hardinfo.c:76 +#, c-format +msgid "" +"Modules:\n" +"%-20s %-15s %-12s\n" +msgstr "" + +#: hardinfo/hardinfo.c:77 +msgid "File Name" +msgstr "" + +#: hardinfo/hardinfo.c:77 modules/computer.c:534 modules/computer.c:562 +#: modules/computer.c:630 modules/computer/languages.c:104 +#: modules/computer/modules.c:146 modules/devices/arm/processor.c:336 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:116 +#: modules/devices/pci.c:215 modules/devices/sh/processor.c:84 +#: modules/devices/x86/processor.c:455 modules/network.c:326 +msgid "Name" +msgstr "" + +#: hardinfo/hardinfo.c:77 modules/computer.c:296 modules/computer.c:505 +#: modules/computer.c:507 modules/computer.c:595 modules/computer.c:603 +#: modules/devices/inputdevices.c:121 +msgid "Version" +msgstr "" + +#: hardinfo/hardinfo.c:124 +#, c-format +msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" +msgstr "" + +#: hardinfo/hardinfo.c:152 +msgid "Don't know what to do. Exiting." +msgstr "" + +#: hardinfo/util.c:104 modules/computer/uptime.c:53 +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "" +msgstr[1] "" + +#: hardinfo/util.c:105 modules/computer/uptime.c:54 +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#: hardinfo/util.c:106 modules/computer/uptime.c:55 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#: hardinfo/util.c:107 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "" +msgstr[1] "" + +#: hardinfo/util.c:128 +#, c-format +msgid "%.1f B" +msgstr "" + +#: hardinfo/util.c:130 +#, c-format +msgid "%.1f KiB" +msgstr "" + +#: hardinfo/util.c:132 +#, c-format +msgid "%.1f MiB" +msgstr "" + +#: hardinfo/util.c:134 +#, c-format +msgid "%.1f GiB" +msgstr "" + +#: hardinfo/util.c:136 +#, c-format +msgid "%.1f TiB" +msgstr "" + +#: hardinfo/util.c:138 +#, c-format +msgid "%.1f PiB" +msgstr "" + +#: hardinfo/util.c:361 +msgid "Error" +msgstr "" + +#: hardinfo/util.c:361 hardinfo/util.c:377 +msgid "Warning" +msgstr "" + +#: hardinfo/util.c:376 +msgid "Fatal Error" +msgstr "" + +#: hardinfo/util.c:401 +msgid "creates a report and prints to standard output" +msgstr "" + +#: hardinfo/util.c:407 +msgid "chooses a report format (text, html)" +msgstr "" + +#: hardinfo/util.c:413 +msgid "run benchmark; requires benchmark.so to be loaded" +msgstr "" + +#: hardinfo/util.c:419 +msgid "lists modules" +msgstr "" + +#: hardinfo/util.c:425 +msgid "specify module to load" +msgstr "" + +#: hardinfo/util.c:431 +msgid "automatically load module dependencies" +msgstr "" + +#: hardinfo/util.c:438 +msgid "run in XML-RPC server mode" +msgstr "" + +#: hardinfo/util.c:445 +msgid "shows program version and quit" +msgstr "" + +#: hardinfo/util.c:450 +msgid "- System Profiler and Benchmark tool" +msgstr "" + +#: hardinfo/util.c:460 +#, c-format +msgid "" +"Unrecognized arguments.\n" +"Try ``%s --help'' for more information.\n" +msgstr "" + +#: hardinfo/util.c:526 +#, c-format +msgid "Couldn't find a Web browser to open URL %s." +msgstr "" + +#: hardinfo/util.c:875 +#, c-format +msgid "Module \"%s\" depends on module \"%s\", load it?" msgstr "" -#: shell//callbacks.c:142 -msgid "Save Image" +#: hardinfo/util.c:898 +#, c-format +msgid "Module \"%s\" depends on module \"%s\"." msgstr "" -#: shell//callbacks.c:158 -msgid "Saving image..." +#: hardinfo/util.c:943 +#, c-format +msgid "No module could be loaded. Check permissions on \"%s\" and try again." msgstr "" -#: shell//callbacks.c:236 -msgid "No context help available." +#: hardinfo/util.c:947 +msgid "" +"No module could be loaded. Please use hardinfo -l to list all available " +"modules and try again with a valid module list." msgstr "" -#: shell//callbacks.c:318 +#: hardinfo/util.c:1024 +#, c-format +msgid "Scanning: %s..." +msgstr "" + +#: hardinfo/util.c:1034 shell/shell.c:301 shell/shell.c:760 shell/shell.c:1795 +#: modules/benchmark.c:449 modules/benchmark.c:457 +msgid "Done." +msgstr "" + +#: shell/callbacks.c:117 #, c-format msgid "%s Module" msgstr "" -#: shell//callbacks.c:325 +#: shell/callbacks.c:128 #, c-format msgid "" "Written by %s\n" "Licensed under %s" msgstr "" -#: shell//callbacks.c:339 +#: shell/callbacks.c:142 #, c-format msgid "No about information is associated with the %s module." msgstr "" -#: shell//callbacks.c:353 +#: shell/callbacks.c:158 msgid "Author:" msgstr "" -#: shell//callbacks.c:356 +#: shell/callbacks.c:161 msgid "Contributors:" msgstr "" -#: shell//callbacks.c:360 +#: shell/callbacks.c:166 msgid "Based on work by:" msgstr "" -#: shell//callbacks.c:361 +#: shell/callbacks.c:167 msgid "MD5 implementation by Colin Plumb (see md5.c for details)" msgstr "" -#: shell//callbacks.c:362 +#: shell/callbacks.c:168 msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" msgstr "" -#: shell//callbacks.c:363 +#: shell/callbacks.c:169 msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" msgstr "" -#: shell//callbacks.c:364 +#: shell/callbacks.c:170 msgid "Raytracing benchmark by John Walker (see fbench.c for details)" msgstr "" -#: shell//callbacks.c:365 +#: shell/callbacks.c:171 msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" msgstr "" -#: shell//callbacks.c:366 +#: shell/callbacks.c:172 msgid "Some code partly based on x86cpucaps by Osamu Kayasono" msgstr "" -#: shell//callbacks.c:367 +#: shell/callbacks.c:173 msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" msgstr "" -#: shell//callbacks.c:368 +#: shell/callbacks.c:174 msgid "DMI support based on code by Stewart Adam" msgstr "" -#: shell//callbacks.c:369 +#: shell/callbacks.c:175 msgid "SCSI support based on code by Pascal F. Martin" msgstr "" -#: shell//callbacks.c:373 -msgid "Jakub Szypulka" -msgstr "" - -#: shell//callbacks.c:374 +#: shell/callbacks.c:180 msgid "Tango Project" msgstr "" -#: shell//callbacks.c:375 +#: shell/callbacks.c:181 msgid "The GNOME Project" msgstr "" -#: shell//callbacks.c:376 +#: shell/callbacks.c:182 msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" msgstr "" -#: shell//callbacks.c:387 +#: shell/callbacks.c:200 msgid "System information and benchmark tool" msgstr "" -#: shell//callbacks.c:392 +#: shell/callbacks.c:205 msgid "" "HardInfo is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " @@ -159,239 +338,209 @@ msgid "" "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" -#: shell//menu.c:35 +#: shell/callbacks.c:220 +msgid "translator-credits" +msgstr "" + +#: shell/menu.c:35 msgid "_Information" msgstr "" -#: shell//menu.c:36 +#: shell/menu.c:36 msgid "_Remote" msgstr "" -#: shell//menu.c:37 +#: shell/menu.c:37 msgid "_View" msgstr "" -#: shell//menu.c:38 +#: shell/menu.c:38 msgid "_Help" msgstr "" -#: shell//menu.c:39 +#: shell/menu.c:39 msgid "About _Modules" msgstr "" -#: shell//menu.c:43 +#: shell/menu.c:43 msgid "Generate _Report" msgstr "" -#: shell//menu.c:48 +#: shell/menu.c:48 msgid "_Network Updater..." msgstr "" -#: shell//menu.c:53 +#: shell/menu.c:53 msgid "_Open..." msgstr "" -#: shell//menu.c:58 -msgid "_Connect to..." -msgstr "" - -#: shell//menu.c:63 -msgid "_Manage hosts..." -msgstr "" - -#: shell//menu.c:68 -msgid "_Local computer" -msgstr "" - -#: shell//menu.c:73 +#: shell/menu.c:58 msgid "_Copy to Clipboard" msgstr "" -#: shell//menu.c:74 +#: shell/menu.c:59 msgid "Copy to clipboard" msgstr "" -#: shell//menu.c:78 -msgid "_Save image as..." -msgstr "" - -#: shell//menu.c:83 +#: shell/menu.c:63 msgid "_Refresh" msgstr "" -#: shell//menu.c:88 -msgid "Contents" -msgstr "" - -#: shell//menu.c:93 -#: shell//shell.c:1794 -#: shell//shell.c:1811 -msgid "Context help" -msgstr "" - -#: shell//menu.c:98 +#: shell/menu.c:68 msgid "_Open HardInfo Web Site" msgstr "" -#: shell//menu.c:103 +#: shell/menu.c:73 msgid "_Report bug" msgstr "" -#: shell//menu.c:108 -msgid "_Donate to the project" -msgstr "" - -#: shell//menu.c:113 +#: shell/menu.c:78 msgid "_About HardInfo" msgstr "" -#: shell//menu.c:114 +#: shell/menu.c:79 msgid "Displays program version information" msgstr "" -#: shell//menu.c:118 +#: shell/menu.c:83 msgid "_Quit" msgstr "" -#: shell//menu.c:125 +#: shell/menu.c:90 msgid "_Side Pane" msgstr "" -#: shell//menu.c:126 +#: shell/menu.c:91 msgid "Toggles side pane visibility" msgstr "" -#: shell//menu.c:129 +#: shell/menu.c:94 msgid "_Toolbar" msgstr "" -#: shell//menu.c:133 -msgid "_Accept connections" -msgstr "" - -#: shell//report.c:492 +#: shell/report.c:494 shell/report.c:502 msgid "Save File" msgstr "" -#: shell//report.c:616 +#: shell/report.c:629 msgid "Cannot create ReportContext. Programming bug?" msgstr "" -#: shell//report.c:634 +#: shell/report.c:648 msgid "Open the report with your web browser?" msgstr "" -#: shell//report.c:662 +#: shell/report.c:682 msgid "Generating report..." msgstr "" -#: shell//report.c:672 +#: shell/report.c:692 msgid "Report saved." msgstr "" -#: shell//report.c:674 +#: shell/report.c:694 msgid "Error while creating the report." msgstr "" -#: shell//report.c:776 +#: shell/report.c:796 msgid "Generate Report" msgstr "" -#: shell//report.c:793 +#: shell/report.c:821 msgid "" "<big><b>Generate Report</b></big>\n" "Please choose the information that you wish to view in your report:" msgstr "" -#: shell//report.c:853 +#: shell/report.c:893 msgid "Select _None" msgstr "" -#: shell//report.c:860 +#: shell/report.c:904 msgid "Select _All" msgstr "" -#: shell//report.c:878 +#: shell/report.c:929 shell/syncmanager.c:748 +msgid "_Cancel" +msgstr "" + +#: shell/report.c:939 msgid "_Generate" msgstr "" -#: shell//shell.c:407 +#: shell/shell.c:402 #, c-format msgid "%s - System Information" msgstr "" -#: shell//shell.c:412 +#: shell/shell.c:407 msgid "System Information" msgstr "" -#: shell//shell.c:803 +#: shell/shell.c:747 msgid "Loading modules..." msgstr "" -#: shell//shell.c:1654 +#: shell/shell.c:1660 #, c-format msgid "<b>%s → Summary</b>" msgstr "" -#: shell//shell.c:1762 +#: shell/shell.c:1769 msgid "Updating..." msgstr "" -#: shell//syncmanager.c:69 +#: shell/syncmanager.c:69 msgid "" "<big><b>Synchronize with Central Database</b></big>\n" "The following information may be synchronized with the HardInfo central " "database." msgstr "" -#: shell//syncmanager.c:72 +#: shell/syncmanager.c:72 msgid "" "<big><b>Synchronizing</b></big>\n" "This may take some time." msgstr "" -#: shell//syncmanager.c:132 +#: shell/syncmanager.c:132 msgid "" "HardInfo was compiled without libsoup support. (Network Updater requires it.)" msgstr "" -#: shell//syncmanager.c:161 -#: shell//syncmanager.c:185 +#: shell/syncmanager.c:161 shell/syncmanager.c:189 #, c-format msgid "%s (error #%d)" msgstr "" -#: shell//syncmanager.c:170 -#: shell//syncmanager.c:194 +#: shell/syncmanager.c:170 shell/syncmanager.c:198 msgid "Could not parse XML-RPC response" msgstr "" -#: shell//syncmanager.c:267 +#: shell/syncmanager.c:280 #, c-format msgid "" "Server says it supports API version %d, but this version of HardInfo only " "supports API version %d." msgstr "" -#: shell//syncmanager.c:362 +#: shell/syncmanager.c:375 msgid "Contacting HardInfo Central Database" msgstr "" -#: shell//syncmanager.c:363 +#: shell/syncmanager.c:376 msgid "Cleaning up" msgstr "" -#: shell//syncmanager.c:480 -#, c-format -msgid "<s>%s</s> <i>(canceled)</i>" +#: shell/syncmanager.c:493 +msgid "(canceled)" msgstr "" -#: shell//syncmanager.c:497 -#, c-format -msgid "<b><s>%s</s></b> <i>(failed)</i>" +#: shell/syncmanager.c:510 +msgid "(failed)" msgstr "" -#: shell//syncmanager.c:509 +#: shell/syncmanager.c:521 #, c-format msgid "" "Failed while performing \"%s\". Please file a bug report if this problem " @@ -400,563 +549,1091 @@ msgid "" "Details: %s" msgstr "" -#: shell//syncmanager.c:518 +#: shell/syncmanager.c:530 #, c-format msgid "" "Failed while performing \"%s\". Please file a bug report if this problem " "persists. (Use the Help→Report bug option.)" msgstr "" -#: shell//syncmanager.c:646 +#: shell/syncmanager.c:658 msgid "Network Updater" msgstr "" -#: shell//syncmanager.c:727 +#: shell/syncmanager.c:757 msgid "_Synchronize" msgstr "" -#: modules//benchmark.c:50 +#: modules/benchmark.c:52 msgid "CPU Blowfish" msgstr "" -#: modules//benchmark.c:51 +#: modules/benchmark.c:53 msgid "CPU CryptoHash" msgstr "" -#: modules//benchmark.c:52 +#: modules/benchmark.c:54 msgid "CPU Fibonacci" msgstr "" -#: modules//benchmark.c:53 +#: modules/benchmark.c:55 msgid "CPU N-Queens" msgstr "" -#: modules//benchmark.c:54 +#: modules/benchmark.c:56 +msgid "CPU Zlib" +msgstr "" + +#: modules/benchmark.c:57 msgid "FPU FFT" msgstr "" -#: modules//benchmark.c:55 +#: modules/benchmark.c:58 msgid "FPU Raytracing" msgstr "" -#: modules//benchmark.c:56 +#: modules/benchmark.c:60 msgid "GPU Drawing" msgstr "" -#: modules//benchmark.c:222 -#, c-format -msgid "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"<big><b>This Machine</b></big>=%.3f|%s MHz\n" -"%s" +#: modules/benchmark.c:239 modules/benchmark.c:255 +msgid "CPU Config" msgstr "" -#: modules//benchmark.c:235 -#, c-format -msgid "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"%s" +#: modules/benchmark.c:239 modules/benchmark.c:255 +msgid "Results" msgstr "" -#: modules//benchmark.c:363 +#: modules/benchmark.c:239 modules/benchmark.c:255 modules/computer.c:751 +#: modules/devices/sparc/processor.c:75 +msgid "CPU" +msgstr "" + +#: modules/benchmark.c:381 #, c-format msgid "Benchmarking: <b>%s</b>." msgstr "" -#: modules//benchmark.c:377 +#: modules/benchmark.c:395 msgid "Benchmarking. Please do not move your mouse or press any keys." msgstr "" -#: modules//benchmark.c:381 +#: modules/benchmark.c:399 msgid "Cancel" msgstr "" -#: modules//benchmark.c:511 +#: modules/benchmark.c:536 msgid "Results in MiB/second. Higher is better." msgstr "" -#: modules//benchmark.c:514 +#: modules/benchmark.c:540 msgid "Results in HIMarks. Higher is better." msgstr "" -#: modules//benchmark.c:521 +#: modules/benchmark.c:547 msgid "Results in seconds. Lower is better." msgstr "" -#: modules//benchmark.c:529 +#: modules/benchmark.c:555 msgid "Benchmarks" msgstr "" -#: modules//benchmark.c:547 +#: modules/benchmark.c:573 msgid "Perform tasks and compare with other systems" msgstr "" -#: modules//benchmark.c:634 +#: modules/benchmark.c:663 msgid "Send benchmark results" msgstr "" -#: modules//benchmark.c:639 +#: modules/benchmark.c:668 msgid "Receive benchmark results" msgstr "" -#: modules//computer.c:68 +#: modules/computer/alsa.c:26 modules/computer.c:489 +msgid "Audio Devices" +msgstr "" + +#: modules/computer/alsa.c:34 +msgid "Audio Adapter" +msgstr "" + +#: modules/computer/boots.c:33 modules/computer.c:73 modules/computer.c:546 +msgid "Boots" +msgstr "" + +#: modules/computer.c:70 msgid "Summary" msgstr "" -#: modules//computer.c:69 +#: modules/computer.c:71 modules/computer.c:476 modules/computer.c:750 msgid "Operating System" msgstr "" -#: modules//computer.c:70 +#: modules/computer.c:72 msgid "Kernel Modules" msgstr "" -#: modules//computer.c:71 -msgid "Boots" -msgstr "" - -#: modules//computer.c:72 +#: modules/computer.c:74 msgid "Languages" msgstr "" -#: modules//computer.c:73 +#: modules/computer.c:75 msgid "Filesystems" msgstr "" -#: modules//computer.c:74 +#: modules/computer.c:76 modules/computer.c:481 modules/computer.c:590 msgid "Display" msgstr "" -#: modules//computer.c:75 +#: modules/computer.c:77 modules/computer/environment.c:32 msgid "Environment Variables" msgstr "" -#: modules//computer.c:77 +#: modules/computer.c:79 msgid "Development" msgstr "" -#: modules//computer.c:79 +#: modules/computer.c:81 modules/computer.c:617 msgid "Users" msgstr "" -#: modules//computer.c:80 +#: modules/computer.c:82 msgid "Groups" msgstr "" -#: modules//computer.c:104 +#: modules/computer.c:104 modules/computer.c:473 modules/devices.c:96 +#: modules/devices/pci.c:149 +msgid "Memory" +msgstr "" + +#: modules/computer.c:106 #, c-format msgid "%dMB (%dMB used)" msgstr "" -#: modules//computer.c:200 +#: modules/computer.c:108 modules/computer.c:520 +msgid "Uptime" +msgstr "" + +#: modules/computer.c:110 modules/computer.c:478 +msgid "Date/Time" +msgstr "" + +#: modules/computer.c:115 modules/computer.c:521 +msgid "Load Average" +msgstr "" + +#: modules/computer.c:117 modules/computer.c:522 +msgid "Available entropy in /dev/random" +msgstr "" + +#: modules/computer.c:203 msgid "Scripting Languages" msgstr "" -#: modules//computer.c:201 -msgid "CPython" +#: modules/computer.c:204 +msgid "Gambas3 (gbr3)" msgstr "" -#: modules//computer.c:202 +#: modules/computer.c:205 +msgid "Python" +msgstr "" + +#: modules/computer.c:206 +msgid "Python2" +msgstr "" + +#: modules/computer.c:207 +msgid "Python3" +msgstr "" + +#: modules/computer.c:208 msgid "Perl" msgstr "" -#: modules//computer.c:203 +#: modules/computer.c:209 +msgid "Perl6 (VM)" +msgstr "" + +#: modules/computer.c:210 +msgid "Perl6" +msgstr "" + +#: modules/computer.c:211 msgid "PHP" msgstr "" -#: modules//computer.c:204 +#: modules/computer.c:212 msgid "Ruby" msgstr "" -#: modules//computer.c:205 +#: modules/computer.c:213 msgid "Bash" msgstr "" -#: modules//computer.c:206 +#: modules/computer.c:214 msgid "Compilers" msgstr "" -#: modules//computer.c:207 +#: modules/computer.c:215 msgid "C (GCC)" msgstr "" -#: modules//computer.c:208 +#: modules/computer.c:216 msgid "C (Clang)" msgstr "" -#: modules//computer.c:209 +#: modules/computer.c:217 msgid "D (dmd)" msgstr "" -#: modules//computer.c:210 +#: modules/computer.c:218 +msgid "Gambas3 (gbc3)" +msgstr "" + +#: modules/computer.c:219 msgid "Java" msgstr "" -#: modules//computer.c:211 +#: modules/computer.c:220 msgid "CSharp (Mono, old)" msgstr "" -#: modules//computer.c:212 +#: modules/computer.c:221 msgid "CSharp (Mono)" msgstr "" -#: modules//computer.c:213 +#: modules/computer.c:222 msgid "Vala" msgstr "" -#: modules//computer.c:214 +#: modules/computer.c:223 msgid "Haskell (GHC)" msgstr "" -#: modules//computer.c:215 +#: modules/computer.c:224 msgid "FreePascal" msgstr "" -#: modules//computer.c:216 +#: modules/computer.c:225 +msgid "Go" +msgstr "" + +#: modules/computer.c:226 msgid "Tools" msgstr "" -#: modules//computer.c:217 +#: modules/computer.c:227 msgid "make" msgstr "" -#: modules//computer.c:218 +#: modules/computer.c:228 msgid "GDB" msgstr "" -#: modules//computer.c:219 +#: modules/computer.c:229 msgid "strace" msgstr "" -#: modules//computer.c:220 +#: modules/computer.c:230 msgid "valgrind" msgstr "" -#: modules//computer.c:221 +#: modules/computer.c:231 msgid "QMake" msgstr "" -#: modules//computer.c:264 -#, c-format -msgid "%s=Not found\n" +#: modules/computer.c:232 +msgid "CMake" +msgstr "" + +#: modules/computer.c:233 +msgid "Gambas3 IDE" +msgstr "" + +#: modules/computer.c:274 +msgid "Not found" msgstr "" -#: modules//computer.c:267 +#: modules/computer.c:279 #, c-format msgid "Detecting version: %s" msgstr "" -#: modules//computer.c:278 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Program\n" -"ColumnTitle$Value=Version\n" -"ShowColumnHeaders=true\n" -"%s" +#: modules/computer.c:296 +msgid "Program" msgstr "" -#: modules//computer.c:358 -msgid "Physical machine" +#: modules/computer.c:308 +msgid "Invalid chassis type (0)" msgstr "" -#: modules//computer.c:375 -#, c-format -msgid "" -"[$ShellParam$]\n" -"UpdateInterval$Memory=1000\n" -"UpdateInterval$Date/Time=1000\n" -"#ReloadInterval=5000\n" -"[Computer]\n" -"Processor=%s\n" -"Memory=...\n" -"Machine Type=%s\n" -"Operating System=%s\n" -"User Name=%s\n" -"Date/Time=...\n" -"[Display]\n" -"Resolution=%dx%d pixels\n" -"OpenGL Renderer=%s\n" -"X11 Vendor=%s\n" -"\n" -"%s\n" -"[Input Devices]\n" -"%s\n" -"\n" -"%s\n" -"\n" -"%s\n" +#: modules/computer.c:309 modules/computer.c:310 +msgid "Unknown chassis type" msgstr "" -#: modules//computer.c:417 -#, c-format -msgid "" -"[$ShellParam$]\n" -"UpdateInterval$Uptime=10000\n" -"UpdateInterval$Load Average=1000\n" -"[Version]\n" -"Kernel=%s\n" -"Version=%s\n" -"C Library=%s\n" -"Distribution=%s\n" -"[Current Session]\n" -"Computer Name=%s\n" -"User Name=%s\n" -"#Language=%s\n" -"Home Directory=%s\n" -"Desktop Environment=%s\n" -"[Misc]\n" -"Uptime=...\n" -"Load Average=..." -msgstr "" - -#: modules//computer.c:446 -#, c-format -msgid "" -"[Loaded Modules]\n" -"%s[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Description\n" -"ShowColumnHeaders=true\n" +#: modules/computer.c:311 +msgid "Desktop" msgstr "" -#: modules//computer.c:457 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Date & Time\n" -"ColumnTitle$Value=Kernel Version\n" -"ShowColumnHeaders=true\n" -"\n" -"%s" +#: modules/computer.c:312 +msgid "Low-profile Desktop" msgstr "" -#: modules//computer.c:467 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Language Code\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" -"[Available Languages]\n" -"%s" +#: modules/computer.c:313 +msgid "Pizza Box" msgstr "" -#: modules//computer.c:478 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ViewType=4\n" -"ReloadInterval=5000\n" -"Zebra=1\n" -"NormalizePercentage=false\n" -"ColumnTitle$Extra1=Mount Point\n" -"ColumnTitle$Progress=Usage\n" -"ColumnTitle$TextValue=Device\n" -"ShowColumnHeaders=true\n" -"[Mounted File Systems]\n" -"%s\n" -msgstr "" - -#: modules//computer.c:492 -#, c-format -msgid "" -"[Display]\n" -"Resolution=%dx%d pixels\n" -"Vendor=%s\n" -"Version=%s\n" -"[Monitors]\n" -"%s[Extensions]\n" -"%s[OpenGL]\n" -"Vendor=%s\n" -"Renderer=%s\n" -"Version=%s\n" -"Direct Rendering=%s\n" -msgstr "" - -#: modules//computer.c:514 -msgid "Y_es" -msgstr "" - -#: modules//computer.c:514 -#: modules//devices/printers.c:138 -#: hardinfo//hardinfo.c:63 -msgid "No" +#: modules/computer.c:314 +msgid "Mini Tower" msgstr "" -#: modules//computer.c:528 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ReloadInterval=10000\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Group ID\n" -"ShowColumnHeaders=true\n" -"[Groups]\n" -"%s\n" +#: modules/computer.c:315 +msgid "Tower" +msgstr "" + +#: modules/computer.c:316 +msgid "Portable" +msgstr "" + +#: modules/computer.c:317 modules/computer.c:341 modules/computer.c:350 +#: modules/computer.c:372 +msgid "Laptop" +msgstr "" + +#: modules/computer.c:318 +msgid "Notebook" +msgstr "" + +#: modules/computer.c:319 +msgid "Handheld" msgstr "" -#: modules//computer.c:608 +#: modules/computer.c:320 +msgid "Docking Station" +msgstr "" + +#: modules/computer.c:321 +msgid "All-in-one" +msgstr "" + +#: modules/computer.c:322 +msgid "Subnotebook" +msgstr "" + +#: modules/computer.c:323 +msgid "Space-saving" +msgstr "" + +#: modules/computer.c:324 +msgid "Lunch Box" +msgstr "" + +#: modules/computer.c:325 +msgid "Main Server Chassis" +msgstr "" + +#: modules/computer.c:326 +msgid "Expansion Chassis" +msgstr "" + +#: modules/computer.c:327 +msgid "Sub Chassis" +msgstr "" + +#: modules/computer.c:328 +msgid "Bus Expansion Chassis" +msgstr "" + +#: modules/computer.c:329 +msgid "Peripheral Chassis" +msgstr "" + +#: modules/computer.c:330 +msgid "RAID Chassis" +msgstr "" + +#: modules/computer.c:331 +msgid "Rack Mount Chassis" +msgstr "" + +#: modules/computer.c:332 +msgid "Sealed-case PC" +msgstr "" + +#. /proc/apm +#. FIXME: use dmidecode if available to get chassis type +#: modules/computer.c:386 +msgid "Unknown physical machine type" +msgstr "" + +#: modules/computer.c:470 modules/computer.c:709 msgid "Computer" msgstr "" -#: modules//computer.c:702 -msgid "Gathers high-level computer information" +#: modules/computer.c:471 modules/devices/alpha/processor.c:87 +#: modules/devices/arm/processor.c:236 modules/devices.c:95 +#: modules/devices/ia64/processor.c:159 modules/devices/m68k/processor.c:83 +#: modules/devices/mips/processor.c:74 modules/devices/parisc/processor.c:154 +#: modules/devices/ppc/processor.c:157 modules/devices/riscv/processor.c:181 +#: modules/devices/s390/processor.c:131 modules/devices/sh/processor.c:83 +#: modules/devices/sparc/processor.c:74 modules/devices/x86/processor.c:409 +msgid "Processor" +msgstr "" + +#: modules/computer.c:474 +msgid "Machine Type" msgstr "" -#: modules//computer/alsa.c:26 -msgid "[Audio Devices]\n" +#: modules/computer.c:477 modules/computer.c:514 +msgid "User Name" msgstr "" -#: modules//computer/alsa.c:33 +#: modules/computer.c:482 modules/computer.c:591 +msgid "Resolution" +msgstr "" + +#: modules/computer.c:483 modules/computer.c:592 #, c-format -msgid "Audio Adapter#%d=%s\n" +msgid "%dx%d pixels" +msgstr "" + +#: modules/computer.c:485 +msgid "OpenGL Renderer" +msgstr "" + +#: modules/computer.c:486 +msgid "X11 Vendor" +msgstr "" + +#: modules/computer.c:491 modules/devices.c:102 +msgid "Input Devices" +msgstr "" + +#: modules/computer.c:493 modules/computer.c:752 modules/devices.c:99 +msgid "Printers" +msgstr "" + +#: modules/computer.c:495 modules/computer.c:752 modules/devices.c:103 +msgid "Storage" +msgstr "" + +#: modules/computer.c:506 +msgid "Kernel" +msgstr "" + +#: modules/computer.c:508 +msgid "C Library" +msgstr "" + +#: modules/computer.c:509 +msgid "Distribution" +msgstr "" + +#: modules/computer.c:512 +msgid "Current Session" +msgstr "" + +#: modules/computer.c:513 +msgid "Computer Name" +msgstr "" + +#: modules/computer.c:515 modules/computer/languages.c:108 +msgid "Language" +msgstr "" + +#: modules/computer.c:516 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "" + +#: modules/computer.c:519 modules/devices/usb.c:87 modules/devices/usb.c:234 +#: modules/devices/usb.c:351 +msgid "Misc" +msgstr "" + +#: modules/computer.c:532 +msgid "Loaded Modules" +msgstr "" + +#: modules/computer.c:535 modules/computer/modules.c:145 +#: modules/computer/modules.c:147 modules/devices/arm/processor.c:337 +#: modules/devices.c:559 modules/devices/x86/processor.c:456 +msgid "Description" +msgstr "" + +#: modules/computer.c:548 +msgid "Date & Time" +msgstr "" + +#: modules/computer.c:549 +msgid "Kernel Version" +msgstr "" + +#: modules/computer.c:559 +msgid "Available Languages" +msgstr "" + +#: modules/computer.c:561 +msgid "Language Code" +msgstr "" + +#: modules/computer.c:573 +msgid "Mounted File Systems" +msgstr "" + +#: modules/computer.c:575 modules/computer/filesystem.c:85 +msgid "Mount Point" +msgstr "" + +#: modules/computer.c:576 +msgid "Usage" +msgstr "" + +#: modules/computer.c:577 +msgid "Device" +msgstr "" + +#: modules/computer.c:594 modules/computer.c:601 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:119 +#: modules/devices/pci.c:225 modules/devices/usb.c:349 +#: modules/devices/x86/processor.c:416 +msgid "Vendor" +msgstr "" + +#: modules/computer.c:598 +msgid "Monitors" +msgstr "" + +#: modules/computer.c:600 +msgid "OpenGL" +msgstr "" + +#: modules/computer.c:602 +msgid "Renderer" msgstr "" -#: modules//computer/boots.c:33 -msgid "[Boots]\n" +#: modules/computer.c:604 +msgid "Direct Rendering" msgstr "" -#: modules//computer/display.c:122 +#: modules/computer.c:608 +msgid "Extensions" +msgstr "" + +#: modules/computer.c:628 +msgid "Group" +msgstr "" + +#: modules/computer.c:631 modules/computer/users.c:49 +msgid "Group ID" +msgstr "" + +#: modules/computer.c:751 +msgid "RAM" +msgstr "" + +#: modules/computer.c:751 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "" + +#: modules/computer.c:751 +msgid "Graphics" +msgstr "" + +#: modules/computer.c:752 +msgid "Audio" +msgstr "" + +#: modules/computer.c:807 +msgid "Gathers high-level computer information" +msgstr "" + +#: modules/computer/display.c:122 #, c-format msgid "Monitor %d=%dx%d pixels\n" msgstr "" -#: modules//computer/environment.c:32 -msgid "[Environment Variables]\n" +#: modules/computer/filesystem.c:83 +msgid "Filesystem" msgstr "" -#: modules//computer/os.c:57 -#, c-format -msgid "GNU C Library version %s (%sstable)" +#: modules/computer/filesystem.c:84 +msgid "Mounted As" +msgstr "" + +#: modules/computer/filesystem.c:84 +msgid "Read-Write" +msgstr "" + +#: modules/computer/filesystem.c:84 +msgid "Read-Only" +msgstr "" + +#: modules/computer/filesystem.c:86 modules/devices/spd-decode.c:1510 +msgid "Size" +msgstr "" + +#: modules/computer/filesystem.c:87 +msgid "Used" msgstr "" -#: modules//computer/os.c:59 -msgid "un" +#: modules/computer/filesystem.c:88 +msgid "Available" msgstr "" -#: modules//computer/os.c:61 -#: modules//computer/os.c:138 -#: modules//devices.c:154 -#: modules//devices.c:197 -#: modules//devices/printers.c:99 -#: modules//devices/printers.c:106 -#: modules//devices/printers.c:116 -#: modules//devices/printers.c:131 -#: modules//devices/printers.c:140 -#: modules//devices/printers.c:243 +#: modules/computer/languages.c:103 +msgid "Locale Information" +msgstr "" + +#: modules/computer/languages.c:105 +msgid "Source" +msgstr "" + +#: modules/computer/languages.c:106 +msgid "Address" +msgstr "" + +#: modules/computer/languages.c:107 +msgid "E-mail" +msgstr "" + +#: modules/computer/languages.c:109 +msgid "Territory" +msgstr "" + +#: modules/computer/languages.c:110 modules/devices/arm/processor.c:250 +#: modules/devices/ia64/processor.c:166 modules/devices/ppc/processor.c:159 +#: modules/devices/usb.c:236 +msgid "Revision" +msgstr "" + +#: modules/computer/languages.c:111 +msgid "Date" +msgstr "" + +#: modules/computer/languages.c:112 +msgid "Codeset" +msgstr "" + +#: modules/computer/loadavg.c:64 +msgid "Couldn't obtain load average" +msgstr "" + +#: modules/computer/modules.c:125 modules/computer/modules.c:126 +#: modules/computer/modules.c:127 modules/computer/modules.c:128 +#: modules/computer/modules.c:129 +msgid "(Not available)" +msgstr "" + +#: modules/computer/modules.c:142 +msgid "Module Information" +msgstr "" + +#: modules/computer/modules.c:143 +msgid "Path" +msgstr "" + +#: modules/computer/modules.c:144 +msgid "Used Memory" +msgstr "" + +#: modules/computer/modules.c:144 +msgid "KiB" +msgstr "" + +#: modules/computer/modules.c:148 +msgid "Version Magic" +msgstr "" + +#: modules/computer/modules.c:149 +msgid "Copyright" +msgstr "" + +#: modules/computer/modules.c:150 +msgid "Author" +msgstr "" + +#: modules/computer/modules.c:151 +msgid "License" +msgstr "" + +#: modules/computer/modules.c:158 +msgid "Dependencies" +msgstr "" + +#: modules/computer/os.c:35 modules/computer/os.c:36 modules/computer/os.c:37 +#: modules/computer/os.c:38 +msgid "GNU C Library" +msgstr "" + +#: modules/computer/os.c:39 +msgid "uClibc or uClibc-ng" +msgstr "" + +#: modules/computer/os.c:40 +msgid "diet libc" +msgstr "" + +#: modules/computer/os.c:78 modules/computer/os.c:234 modules/computer/os.c:359 +#: modules/devices.c:333 modules/devices.c:387 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 msgid "Unknown" msgstr "" -#: modules//computer/os.c:80 +#: modules/computer/os.c:112 modules/computer/os.c:115 +msgid "GNOME Shell " +msgstr "" + +#: modules/computer/os.c:123 modules/computer/os.c:126 +msgid "Version: " +msgstr "" + +#: modules/computer/os.c:157 #, c-format -msgid "Version: %s" +msgid "Unknown (Window Manager: %s)" +msgstr "" + +#. /{desktop environment} on {session type} +#: modules/computer/os.c:168 +#, c-format +msgid "%s on %s" msgstr "" -#: modules//computer/os.c:114 +#: modules/computer/os.c:232 msgid "Terminal" msgstr "" -#: modules//computer/os.c:134 +#. /bits of entropy for rng (0) +#: modules/computer/os.c:241 +msgid "(None or not available)" +msgstr "" + +#. /bits of entropy for rng (low/poor value) +#: modules/computer/os.c:242 #, c-format -msgid "Unknown (Window Manager: %s)" +msgid "%d bits (low)" msgstr "" -#: modules//computer/os.c:174 -msgid "Unknown distribution" +#. /bits of entropy for rng (medium value) +#: modules/computer/os.c:243 +#, c-format +msgid "%d bits (medium)" msgstr "" -#: modules//devices.c:74 -msgid "Processor" +#. /bits of entropy for rng (high/good value) +#: modules/computer/os.c:244 +#, c-format +msgid "%d bits (healthy)" msgstr "" -#: modules//devices.c:75 -msgid "Memory" +#: modules/computer/os.c:279 modules/devices/usb.c:48 modules/devices/usb.c:307 +#: modules/devices/usb.c:310 modules/network/net.c:442 includes/cpu_util.h:11 +msgid "(Unknown)" msgstr "" -#: modules//devices.c:76 -msgid "PCI Devices" +#: modules/computer/users.c:47 +msgid "User Information" msgstr "" -#: modules//devices.c:77 -msgid "USB Devices" +#: modules/computer/users.c:48 +msgid "User ID" msgstr "" -#: modules//devices.c:78 -msgid "Printers" +#: modules/computer/users.c:51 +msgid "Default Shell" msgstr "" -#: modules//devices.c:79 -msgid "Battery" +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:141 +#: modules/devices/devicetree.c:176 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/ia64/processor.c:165 modules/devices/m68k/processor.c:84 +#: modules/devices/mips/processor.c:75 modules/devices/parisc/processor.c:155 +#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 +#: modules/devices/s390/processor.c:132 modules/devices/spd-decode.c:1510 +msgid "Model" msgstr "" -#: modules//devices.c:80 -msgid "Sensors" +#: modules/devices/alpha/processor.c:89 +msgid "Platform String" msgstr "" -#: modules//devices.c:81 -msgid "Input Devices" +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/pci.c:108 modules/devices/ppc/processor.c:160 +#: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 +#: modules/devices/x86/processor.c:420 +msgid "Frequency" msgstr "" -#: modules//devices.c:82 -msgid "Storage" +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/arm/processor.c:365 modules/devices.c:299 +#: modules/devices.c:307 modules/devices.c:335 +#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 +#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 +#: modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/pci.c:108 +#: modules/devices/ppc/processor.c:160 modules/devices/ppc/processor.c:187 +#: modules/devices/riscv/processor.c:186 modules/devices/riscv/processor.c:214 +#: modules/devices/s390/processor.c:160 modules/devices/sh/processor.c:87 +#: modules/devices/sh/processor.c:88 modules/devices/sh/processor.c:89 +#: modules/devices/x86/processor.c:420 modules/devices/x86/processor.c:479 +msgid "MHz" msgstr "" -#: modules//devices.c:84 -msgid "DMI" +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:241 +#: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 +#: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 +#: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:421 +msgid "BogoMips" msgstr "" -#: modules//devices.c:85 -msgid "Memory SPD" +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:242 +#: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 +#: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 +#: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 +#: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:422 +msgid "Byte Order" msgstr "" -#: modules//devices.c:87 -msgid "Resources" +#. /hw_cap +#. /flag:swp +#: modules/devices/arm/arm_data.c:42 +msgctxt "arm-flag" +msgid "SWP instruction (atomic read-modify-write)" msgstr "" -#: modules//devices.c:193 -msgid " (vendor unknown)" +#. /flag:half +#: modules/devices/arm/arm_data.c:43 +msgctxt "arm-flag" +msgid "Half-word loads and stores" msgstr "" -#: modules//devices.c:195 -msgid " (model unknown)" +#. /flag:thumb +#: modules/devices/arm/arm_data.c:44 +msgctxt "arm-flag" +msgid "Thumb (16-bit instruction set)" msgstr "" -#: modules//devices.c:412 -msgid "Devices" +#. /flag:26bit +#: modules/devices/arm/arm_data.c:45 +msgctxt "arm-flag" +msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" -#: modules//devices.c:424 -msgid "Update PCI ID listing" +#. /flag:fastmult +#: modules/devices/arm/arm_data.c:46 +msgctxt "arm-flag" +msgid "32x32->64-bit multiplication" msgstr "" -#: modules//devices.c:436 -msgid "Update CPU feature database" +#. /flag:fpa +#: modules/devices/arm/arm_data.c:47 +msgctxt "arm-flag" +msgid "Floating point accelerator" msgstr "" -#: modules//devices.c:464 -msgid "Gathers information about hardware devices" +#. /flag:vfp +#: modules/devices/arm/arm_data.c:48 +msgctxt "arm-flag" +msgid "VFP (early SIMD vector floating point instructions)" +msgstr "" + +#. /flag:edsp +#: modules/devices/arm/arm_data.c:49 +msgctxt "arm-flag" +msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" +msgstr "" + +#. /flag:java +#: modules/devices/arm/arm_data.c:50 +msgctxt "arm-flag" +msgid "Jazelle (Java bytecode accelerator)" +msgstr "" + +#. /flag:iwmmxt +#: modules/devices/arm/arm_data.c:51 +msgctxt "arm-flag" +msgid "SIMD instructions similar to Intel MMX" +msgstr "" + +#. /flag:crunch +#: modules/devices/arm/arm_data.c:52 +msgctxt "arm-flag" +msgid "MaverickCrunch coprocessor (if kernel support enabled)" +msgstr "" + +#. /flag:thumbee +#: modules/devices/arm/arm_data.c:53 +msgctxt "arm-flag" +msgid "ThumbEE" +msgstr "" + +#. /flag:neon +#: modules/devices/arm/arm_data.c:54 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch32" +msgstr "" + +#. /flag:evtstrm +#: modules/devices/arm/arm_data.c:55 +msgctxt "arm-flag" +msgid "Kernel event stream using generic architected timer" +msgstr "" + +#. /flag:vfpv3 +#: modules/devices/arm/arm_data.c:56 +msgctxt "arm-flag" +msgid "VFP version 3" +msgstr "" + +#. /flag:vfpv3d16 +#: modules/devices/arm/arm_data.c:57 +msgctxt "arm-flag" +msgid "VFP version 3 with 16 D-registers" +msgstr "" + +#. /flag:vfpv4 +#: modules/devices/arm/arm_data.c:58 +msgctxt "arm-flag" +msgid "VFP version 4 with fast context switching" msgstr "" -#: modules//devices/battery.c:181 +#. /flag:vfpd32 +#: modules/devices/arm/arm_data.c:59 +msgctxt "arm-flag" +msgid "VFP with 32 D-registers" +msgstr "" + +#. /flag:tls +#: modules/devices/arm/arm_data.c:60 +msgctxt "arm-flag" +msgid "TLS register" +msgstr "" + +#. /flag:idiva +#: modules/devices/arm/arm_data.c:61 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in ARM mode" +msgstr "" + +#. /flag:idivt +#: modules/devices/arm/arm_data.c:62 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in Thumb mode" +msgstr "" + +#. /flag:lpae +#: modules/devices/arm/arm_data.c:63 +msgctxt "arm-flag" +msgid "40-bit Large Physical Address Extension" +msgstr "" + +#. /hw_cap2 +#. /flag:pmull +#: modules/devices/arm/arm_data.c:65 +msgctxt "arm-flag" +msgid "64x64->128-bit F2m multiplication (arch>8)" +msgstr "" + +#. /flag:aes +#: modules/devices/arm/arm_data.c:66 +msgctxt "arm-flag" +msgid "Crypto:AES (arch>8)" +msgstr "" + +#. /flag:sha1 +#: modules/devices/arm/arm_data.c:67 +msgctxt "arm-flag" +msgid "Crypto:SHA1 (arch>8)" +msgstr "" + +#. /flag:sha2 +#: modules/devices/arm/arm_data.c:68 +msgctxt "arm-flag" +msgid "Crypto:SHA2 (arch>8)" +msgstr "" + +#. /flag:crc32 +#: modules/devices/arm/arm_data.c:69 +msgctxt "arm-flag" +msgid "CRC32 checksum instructions (arch>8)" +msgstr "" + +#. /flag:asimd +#: modules/devices/arm/arm_data.c:72 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +msgstr "" + +#: modules/devices/arm/processor.c:142 +msgid "ARM Processor" +msgstr "" + +#: modules/devices/arm/processor.c:200 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:371 +msgid "Empty List" +msgstr "" + +#: modules/devices/arm/processor.c:237 +msgid "Linux Name" +msgstr "" + +#: modules/devices/arm/processor.c:238 +msgid "Decoded Name" +msgstr "" + +#: modules/devices/arm/processor.c:239 modules/network/net.c:458 +msgid "Mode" +msgstr "" + +#: modules/devices/arm/processor.c:245 +msgid "ARM" +msgstr "" + +#: modules/devices/arm/processor.c:246 +msgid "Implementer" +msgstr "" + +#: modules/devices/arm/processor.c:247 +msgid "Part" +msgstr "" + +#: modules/devices/arm/processor.c:248 modules/devices/ia64/processor.c:162 +#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 +msgid "Architecture" +msgstr "" + +#: modules/devices/arm/processor.c:249 +msgid "Variant" +msgstr "" + +#: modules/devices/arm/processor.c:251 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:428 +msgid "Capabilities" +msgstr "" + +#: modules/devices/arm/processor.c:335 +msgid "SOC/Package" +msgstr "" + +#: modules/devices/arm/processor.c:338 modules/devices/cpu_util.c:222 +msgid "Topology" +msgstr "" + +#: modules/devices/arm/processor.c:339 +msgid "Clocks" +msgstr "" + +#: modules/devices/arm/processor.c:354 +msgid "SOC/Package Information" +msgstr "" + +#: modules/devices/battery.c:181 #, c-format msgid "" "\n" @@ -969,7 +1646,7 @@ msgid "" "Serial Number=%s\n" msgstr "" -#: modules//devices/battery.c:258 +#: modules/devices/battery.c:258 #, c-format msgid "" "\n" @@ -982,7 +1659,7 @@ msgid "" "Serial Number=%s\n" msgstr "" -#: modules//devices/battery.c:346 +#: modules/devices/battery.c:346 #, c-format msgid "" "\n" @@ -994,7 +1671,7 @@ msgid "" "APM BIOS version=%s\n" msgstr "" -#: modules//devices/battery.c:358 +#: modules/devices/battery.c:358 #, c-format msgid "" "\n" @@ -1005,105 +1682,753 @@ msgid "" "APM BIOS version=%s\n" msgstr "" -#: modules//devices/battery.c:385 +#: modules/devices/battery.c:385 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" -#: modules//devices/printers.c:81 +#: modules/devices.c:97 +msgid "PCI Devices" +msgstr "" + +#: modules/devices.c:98 modules/devices/usb.c:117 modules/devices/usb.c:156 +#: modules/devices/usb.c:415 +msgid "USB Devices" +msgstr "" + +#: modules/devices.c:100 +msgid "Battery" +msgstr "" + +#: modules/devices.c:101 +msgid "Sensors" +msgstr "" + +#: modules/devices.c:105 +msgid "DMI" +msgstr "" + +#: modules/devices.c:106 +msgid "Memory SPD" +msgstr "" + +#: modules/devices.c:111 +msgid "Device Tree" +msgstr "" + +#: modules/devices.c:113 +msgid "Resources" +msgstr "" + +#: modules/devices.c:151 +#, c-format +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "" +msgstr[1] "" + +#: modules/devices.c:152 +#, c-format +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "" +msgstr[1] "" + +#: modules/devices.c:153 +#, c-format +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "" +msgstr[1] "" + +#. /NP procs; NC cores; NT threads +#: modules/devices.c:154 +#, c-format +msgid "%s; %s; %s" +msgstr "" + +#: modules/devices.c:372 +msgid " (model unknown)" +msgstr "" + +#: modules/devices.c:374 +msgid " (vendor unknown)" +msgstr "" + +#: modules/devices.c:559 +msgid "Field" +msgstr "" + +#: modules/devices.c:559 modules/devices.c:591 +msgid "Value" +msgstr "" + +#: modules/devices.c:591 +msgid "Sensor" +msgstr "" + +#: modules/devices.c:591 modules/devices/inputdevices.c:117 +msgid "Type" +msgstr "" + +#: modules/devices.c:637 +msgid "Devices" +msgstr "" + +#: modules/devices.c:649 +msgid "Update PCI ID listing" +msgstr "" + +#: modules/devices.c:661 +msgid "Update CPU feature database" +msgstr "" + +#: modules/devices.c:689 +msgid "Gathers information about hardware devices" +msgstr "" + +#: modules/devices.c:708 +msgid "Resource information requires superuser privileges" +msgstr "" + +#: modules/devices/cpu_util.c:30 +msgid "Little Endian" +msgstr "" + +#: modules/devices/cpu_util.c:32 +msgid "Big Endian" +msgstr "" + +#: modules/devices/cpu_util.c:178 modules/devices/cpu_util.c:189 +msgid "Frequency Scaling" +msgstr "" + +#: modules/devices/cpu_util.c:179 +msgid "Minimum" +msgstr "" + +#: modules/devices/cpu_util.c:179 modules/devices/cpu_util.c:180 +#: modules/devices/cpu_util.c:181 +msgid "kHz" +msgstr "" + +#: modules/devices/cpu_util.c:180 +msgid "Maximum" +msgstr "" + +#: modules/devices/cpu_util.c:181 +msgid "Current" +msgstr "" + +#: modules/devices/cpu_util.c:182 +msgid "Transition Latency" +msgstr "" + +#: modules/devices/cpu_util.c:182 +msgid "ns" +msgstr "" + +#: modules/devices/cpu_util.c:183 +msgid "Governor" +msgstr "" + +#: modules/devices/cpu_util.c:184 modules/devices/cpu_util.c:190 +msgid "Driver" +msgstr "" + +#: modules/devices/cpu_util.c:196 modules/devices/x86/processor.c:297 +msgid "(Not Available)" +msgstr "" + +#: modules/devices/cpu_util.c:204 modules/devices/cpu_util.c:206 +msgid "Socket" +msgstr "" + +#: modules/devices/cpu_util.c:209 modules/devices/cpu_util.c:211 +msgid "Core" +msgstr "" + +#: modules/devices/cpu_util.c:214 +msgid "Book" +msgstr "" + +#: modules/devices/cpu_util.c:216 +msgid "Drawer" +msgstr "" + +#: modules/devices/cpu_util.c:223 +msgid "ID" +msgstr "" + +#: modules/devices/devicetree.c:47 +msgid "Properties" +msgstr "" + +#: modules/devices/devicetree.c:48 +msgid "Children" +msgstr "" + +#: modules/devices/devicetree.c:84 +msgid "Node" +msgstr "" + +#: modules/devices/devicetree.c:85 +msgid "Node Path" +msgstr "" + +#: modules/devices/devicetree.c:86 +msgid "Alias" +msgstr "" + +#: modules/devices/devicetree.c:86 modules/devices/devicetree.c:87 +msgid "(None)" +msgstr "" + +#: modules/devices/devicetree.c:87 +msgid "Symbol" +msgstr "" + +#: modules/devices/devicetree.c:132 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "" + +#: modules/devices/devicetree.c:133 modules/devices/devicetree.c:178 +msgid "Compatible" +msgstr "" + +#: modules/devices/devicetree.c:134 +msgid "GPU-compatible" +msgstr "" + +#: modules/devices/devicetree.c:140 +msgid "Raspberry Pi or Compatible" +msgstr "" + +#: modules/devices/devicetree.c:142 modules/devices/devicetree.c:160 +#: modules/devices/devicetree.c:177 modules/devices/devicetree/rpi_data.c:160 +msgid "Serial Number" +msgstr "" + +#: modules/devices/devicetree.c:143 modules/devices/devicetree/rpi_data.c:157 +msgid "RCode" +msgstr "" + +#: modules/devices/devicetree.c:143 +msgid "No revision code available; unable to lookup model details." +msgstr "" + +#: modules/devices/devicetree.c:159 +msgid "More" +msgstr "" + +#: modules/devices/devicetree.c:175 +msgid "Board" +msgstr "" + +#: modules/devices/devicetree.c:234 +msgid "Messages" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1013 +msgid "phandle Map" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1014 +msgid "Alias Map" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1015 +msgid "Symbol Map" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:152 +#: modules/devices/devicetree/rpi_data.c:153 +msgid "Raspberry Pi" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:153 +msgid "Board Name" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:154 +msgid "PCB Revision" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:155 +msgid "Introduction" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:156 modules/devices/spd-decode.c:1510 +#: modules/devices/usb.c:84 modules/devices/usb.c:217 +msgid "Manufacturer" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:158 +msgid "SOC (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:159 +msgid "Memory (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Permanent overvolt bit" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "" + +#: modules/devices/devmemory.c:93 +msgid "Total Memory" +msgstr "" + +#: modules/devices/devmemory.c:94 +msgid "Free Memory" +msgstr "" + +#: modules/devices/devmemory.c:95 +msgid "Cached Swap" +msgstr "" + +#: modules/devices/devmemory.c:96 +msgid "High Memory" +msgstr "" + +#: modules/devices/devmemory.c:97 +msgid "Free High Memory" +msgstr "" + +#: modules/devices/devmemory.c:98 +msgid "Low Memory" +msgstr "" + +#: modules/devices/devmemory.c:99 +msgid "Free Low Memory" +msgstr "" + +#: modules/devices/devmemory.c:100 +msgid "Virtual Memory" +msgstr "" + +#: modules/devices/devmemory.c:101 +msgid "Free Virtual Memory" +msgstr "" + +#: modules/devices/dmi.c:188 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "" + +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "" + +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "" + +#: modules/devices/ia64/processor.c:164 modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "" + +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "" + +#: modules/devices/ia64/processor.c:171 +msgid "Features" +msgstr "" + +#: modules/devices/inputdevices.c:115 modules/devices/pci.c:214 +#: modules/devices/usb.c:82 modules/devices/usb.c:215 modules/devices/usb.c:347 +msgid "Device Information" +msgstr "" + +#: modules/devices/inputdevices.c:118 modules/devices/usb.c:92 +#: modules/devices/usb.c:240 modules/devices/usb.c:356 +msgid "Bus" +msgstr "" + +#: modules/devices/inputdevices.c:120 modules/devices/usb.c:83 +#: modules/devices/usb.c:216 modules/devices/usb.c:348 +msgid "Product" +msgstr "" + +#: modules/devices/inputdevices.c:124 +msgid "Connected to" +msgstr "" + +#: modules/devices/inputdevices.c:128 +msgid "InfraRed port" +msgstr "" + +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" +msgstr "" + +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" +msgstr "" + +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" +msgstr "" + +#: modules/devices/mips/processor.c:76 +msgid "System Type" +msgstr "" + +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "" + +#: modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "" + +#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:425 +msgid "Cache" +msgstr "" + +#: modules/devices/pci.c:106 +msgid "IRQ" +msgstr "" + +#: modules/devices/pci.c:110 +msgid "Latency" +msgstr "" + +#: modules/devices/pci.c:112 +msgid "Bus Master" +msgstr "" + +#: modules/devices/pci.c:118 +msgid "Kernel modules" +msgstr "" + +#: modules/devices/pci.c:124 +#, c-format +msgid "%s=%s (%s)\n" +msgstr "" + +#: modules/devices/pci.c:126 +msgid "OEM Vendor" +msgstr "" + +#: modules/devices/pci.c:153 +msgid "prefetchable" +msgstr "" + +#: modules/devices/pci.c:154 +msgid "non-prefetchable" +msgstr "" + +#: modules/devices/pci.c:163 +msgid "I/O ports at" +msgstr "" + +#: modules/devices/pci.c:216 modules/devices/usb.c:89 modules/devices/usb.c:237 +#: modules/devices/usb.c:353 +msgid "Class" +msgstr "" + +#: modules/devices/pci.c:217 +msgid "Domain" +msgstr "" + +#: modules/devices/pci.c:218 +msgid "Bus, device, function" +msgstr "" + +#: modules/devices/pci.c:243 +msgid "No PCI devices found" +msgstr "" + +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" +msgstr "" + +#: modules/devices/printers.c:81 msgid "⚬ Can do black and white printing=\n" msgstr "" -#: modules//devices/printers.c:83 +#: modules/devices/printers.c:83 msgid "⚬ Can do color printing=\n" msgstr "" -#: modules//devices/printers.c:85 +#: modules/devices/printers.c:85 msgid "⚬ Can do duplexing=\n" msgstr "" -#: modules//devices/printers.c:87 +#: modules/devices/printers.c:87 msgid "⚬ Can do staple output=\n" msgstr "" -#: modules//devices/printers.c:89 +#: modules/devices/printers.c:89 msgid "⚬ Can do copies=\n" msgstr "" -#: modules//devices/printers.c:91 +#: modules/devices/printers.c:91 msgid "⚬ Can collate copies=\n" msgstr "" -#: modules//devices/printers.c:93 +#: modules/devices/printers.c:93 msgid "⚬ Printer is rejecting jobs=\n" msgstr "" -#: modules//devices/printers.c:95 +#: modules/devices/printers.c:95 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "" -#: modules//devices/printers.c:110 +#: modules/devices/printers.c:110 msgid "Idle" msgstr "" -#: modules//devices/printers.c:112 +#: modules/devices/printers.c:112 msgid "Printing a Job" msgstr "" -#: modules//devices/printers.c:114 +#: modules/devices/printers.c:114 msgid "Stopped" msgstr "" -#: modules//devices/printers.c:138 -#: hardinfo//hardinfo.c:62 -#: hardinfo//hardinfo.c:63 -msgid "Yes" -msgstr "" - -#: modules//devices/printers.c:190 +#: modules/devices/printers.c:190 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" -#: modules//devices/printers.c:200 +#: modules/devices/printers.c:200 msgid "[Printers (CUPS)]\n" msgstr "" -#: modules//devices/printers.c:263 +#: modules/devices/printers.c:263 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" -#: modules//devices/storage.c:46 +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" +msgstr "" + +#: modules/devices/riscv/processor.c:184 +msgid "uarch" +msgstr "" + +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" +msgstr "" + +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" +msgstr "" + +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" +msgstr "" + +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" +msgstr "" + +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" +msgstr "" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "" + +#: modules/devices/spd-decode.c:1475 +msgid "" +"[SPD]\n" +"Please load the eeprom module to obtain information about memory SPD=\n" +"[$ShellParam$]\n" +"ReloadInterval=500\n" +msgstr "" + +#: modules/devices/spd-decode.c:1480 +msgid "" +"[SPD]\n" +"Reading memory SPD not supported on this system=\n" +msgstr "" + +#: modules/devices/spd-decode.c:1509 +msgid "SPD" +msgstr "" + +#: modules/devices/spd-decode.c:1510 +msgid "Bank" +msgstr "" + +#: modules/devices/storage.c:46 msgid "" "\n" "[SCSI Disks]\n" msgstr "" -#: modules//devices/storage.c:110 -#: modules//devices/storage.c:297 +#: modules/devices/storage.c:110 modules/devices/storage.c:313 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" -#: modules//devices/storage.c:115 -#: modules//devices/storage.c:304 +#: modules/devices/storage.c:115 modules/devices/storage.c:319 #, c-format msgid "Vendor=%s (%s)\n" msgstr "" -#: modules//devices/storage.c:120 -#: modules//devices/storage.c:309 +#: modules/devices/storage.c:120 modules/devices/storage.c:321 #, c-format msgid "Vendor=%s\n" msgstr "" -#: modules//devices/storage.c:125 +#: modules/devices/storage.c:125 #, c-format msgid "" "Type=%s\n" @@ -1115,18 +2440,18 @@ msgid "" "LUN=%d\n" msgstr "" -#: modules//devices/storage.c:169 +#: modules/devices/storage.c:167 msgid "" "\n" "[IDE Disks]\n" msgstr "" -#: modules//devices/storage.c:242 +#: modules/devices/storage.c:250 #, c-format msgid "Driver=%s\n" msgstr "" -#: modules//devices/storage.c:314 +#: modules/devices/storage.c:324 #, c-format msgid "" "Device Name=hd%c\n" @@ -1134,7 +2459,7 @@ msgid "" "Cache=%dkb\n" msgstr "" -#: modules//devices/storage.c:329 +#: modules/devices/storage.c:334 #, c-format msgid "" "[Geometry]\n" @@ -1142,357 +2467,1868 @@ msgid "" "Logical=%s\n" msgstr "" -#: modules//devices/storage.c:341 +#: modules/devices/storage.c:344 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" -#: modules//devices/storage.c:348 +#: modules/devices/storage.c:351 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" -#: modules//devices/x86/processor.c:145 -#: modules//devices/x86_64/processor.c:145 +#: modules/devices/usb.c:44 modules/devices/usb.c:326 +msgid "mA" +msgstr "" + +#. /%.2f is version +#: modules/devices/usb.c:53 modules/devices/usb.c:190 +#, c-format +msgid "USB %.2f Hub" +msgstr "" + +#: modules/devices/usb.c:55 modules/devices/usb.c:192 +#, c-format +msgid "Unknown USB %.2f Device (class %d)" +msgstr "" + +#: modules/devices/usb.c:85 modules/devices/usb.c:232 +msgid "Speed" +msgstr "" + +#: modules/devices/usb.c:85 modules/devices/usb.c:232 +msgid "Mbit/s" +msgstr "" + +#: modules/devices/usb.c:86 modules/devices/usb.c:233 modules/devices/usb.c:350 +msgid "Max Current" +msgstr "" + +#: modules/devices/usb.c:88 modules/devices/usb.c:235 modules/devices/usb.c:352 +msgid "USB Version" +msgstr "" + +#: modules/devices/usb.c:90 modules/devices/usb.c:238 modules/devices/usb.c:354 +msgid "Vendor ID" +msgstr "" + +#: modules/devices/usb.c:91 modules/devices/usb.c:239 modules/devices/usb.c:355 +msgid "Product ID" +msgstr "" + +#: modules/devices/usb.c:231 +msgid "Port" +msgstr "" + +#: modules/devices/usb.c:241 +msgid "Level" +msgstr "" + +#: modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "" -#: modules//devices/x86/processor.c:484 -#: modules//devices/x86_64/processor.c:484 +#: modules/devices/x86/processor.c:155 #, c-format +msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" +msgstr "" + +#. /cache type, as appears in: Level 1 (Data) +#: modules/devices/x86/processor.c:170 +msgctxt "cache-type" +msgid "Data" +msgstr "" + +#. /cache type, as appears in: Level 1 (Instruction) +#: modules/devices/x86/processor.c:171 +msgctxt "cache-type" +msgid "Instruction" +msgstr "" + +#. /cache type, as appears in: Level 2 (Unified) +#: modules/devices/x86/processor.c:172 +msgctxt "cache-type" +msgid "Unified" +msgstr "" + +#: modules/devices/x86/processor.c:410 +msgid "Model Name" +msgstr "" + +#: modules/devices/x86/processor.c:411 +msgid "Family, model, stepping" +msgstr "" + +#: modules/devices/x86/processor.c:417 +msgid "Microcode Version" +msgstr "" + +#: modules/devices/x86/processor.c:418 +msgid "Configuration" +msgstr "" + +#: modules/devices/x86/processor.c:419 +msgid "Cache Size" +msgstr "" + +#: modules/devices/x86/processor.c:419 +msgid "kb" +msgstr "" + +#: modules/devices/x86/processor.c:426 +msgid "Power Management" +msgstr "" + +#: modules/devices/x86/processor.c:427 +msgid "Bug Workarounds" +msgstr "" + +#: modules/devices/x86/processor.c:454 modules/devices/x86/processor.c:468 +msgid "Package Information" +msgstr "" + +#. /flag:fpu +#: modules/devices/x86/x86_data.c:43 +msgctxt "x86-flag" +msgid "Onboard FPU (floating point support)" +msgstr "" + +#. /flag:vme +#: modules/devices/x86/x86_data.c:44 +msgctxt "x86-flag" +msgid "Virtual 8086 mode enhancements" +msgstr "" + +#. /flag:de +#: modules/devices/x86/x86_data.c:45 +msgctxt "x86-flag" +msgid "Debugging Extensions (CR4.DE)" +msgstr "" + +#. /flag:pse +#: modules/devices/x86/x86_data.c:46 +msgctxt "x86-flag" +msgid "Page Size Extensions (4MB memory pages)" +msgstr "" + +#. /flag:tsc +#: modules/devices/x86/x86_data.c:47 +msgctxt "x86-flag" +msgid "Time Stamp Counter (RDTSC)" +msgstr "" + +#. /flag:msr +#: modules/devices/x86/x86_data.c:48 +msgctxt "x86-flag" +msgid "Model-Specific Registers (RDMSR, WRMSR)" +msgstr "" + +#. /flag:pae +#: modules/devices/x86/x86_data.c:49 +msgctxt "x86-flag" +msgid "Physical Address Extensions (support for more than 4GB of RAM)" +msgstr "" + +#. /flag:mce +#: modules/devices/x86/x86_data.c:50 +msgctxt "x86-flag" +msgid "Machine Check Exception" +msgstr "" + +#. /flag:cx8 +#: modules/devices/x86/x86_data.c:51 +msgctxt "x86-flag" +msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" +msgstr "" + +#. /flag:apic +#: modules/devices/x86/x86_data.c:52 +msgctxt "x86-flag" +msgid "Onboard APIC" +msgstr "" + +#. /flag:sep +#: modules/devices/x86/x86_data.c:53 +msgctxt "x86-flag" +msgid "SYSENTER/SYSEXIT" +msgstr "" + +#. /flag:mtrr +#: modules/devices/x86/x86_data.c:54 +msgctxt "x86-flag" +msgid "Memory Type Range Registers" +msgstr "" + +#. /flag:pge +#: modules/devices/x86/x86_data.c:55 +msgctxt "x86-flag" +msgid "Page Global Enable (global bit in PDEs and PTEs)" +msgstr "" + +#. /flag:mca +#: modules/devices/x86/x86_data.c:56 +msgctxt "x86-flag" +msgid "Machine Check Architecture" +msgstr "" + +#. /flag:cmov +#: modules/devices/x86/x86_data.c:57 +msgctxt "x86-flag" +msgid "CMOV instructions (conditional move) (also FCMOV)" +msgstr "" + +#. /flag:pat +#: modules/devices/x86/x86_data.c:58 +msgctxt "x86-flag" +msgid "Page Attribute Table" +msgstr "" + +#. /flag:pse36 +#: modules/devices/x86/x86_data.c:59 +msgctxt "x86-flag" +msgid "36-bit PSEs (huge pages)" +msgstr "" + +#. /flag:pn +#: modules/devices/x86/x86_data.c:60 +msgctxt "x86-flag" +msgid "Processor serial number" +msgstr "" + +#. /flag:clflush +#: modules/devices/x86/x86_data.c:61 +msgctxt "x86-flag" +msgid "Cache Line Flush instruction" +msgstr "" + +#. /flag:dts +#: modules/devices/x86/x86_data.c:62 +msgctxt "x86-flag" msgid "" -"[Processor]\n" -"Name=%s\n" -"Family, model, stepping=%d, %d, %d (%s)\n" -"Vendor=%s\n" -"[Configuration]\n" -"Cache Size=%dkb\n" -"Frequency=%.2fMHz\n" -"BogoMIPS=%.2f\n" -"Byte Order=%s\n" -"[Features]\n" -"FDIV Bug=%s\n" -"HLT Bug=%s\n" -"F00F Bug=%s\n" -"Coma Bug=%s\n" -"Has FPU=%s\n" -"[Cache]\n" -"%s\n" -"[Capabilities]\n" -"%s" +"Debug Store (buffer for debugging and profiling instructions), or " +"alternately: digital thermal sensor" msgstr "" -#: modules//devices/x86/processor.c:542 -#: modules//devices/x86_64/processor.c:542 -#, c-format -msgid "%s$CPU%d$%s=%.2fMHz\n" +#. /flag:acpi +#: modules/devices/x86/x86_data.c:63 +msgctxt "x86-flag" +msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" +msgstr "" + +#. /flag:mmx +#: modules/devices/x86/x86_data.c:64 +msgctxt "x86-flag" +msgid "Multimedia Extensions" msgstr "" -#: modules//network.c:59 +#. /flag:fxsr +#: modules/devices/x86/x86_data.c:65 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" +msgstr "" + +#. /flag:sse +#: modules/devices/x86/x86_data.c:66 +msgctxt "x86-flag" +msgid "Intel SSE vector instructions" +msgstr "" + +#. /flag:sse2 +#: modules/devices/x86/x86_data.c:67 +msgctxt "x86-flag" +msgid "SSE2" +msgstr "" + +#. /flag:ss +#: modules/devices/x86/x86_data.c:68 +msgctxt "x86-flag" +msgid "CPU self snoop" +msgstr "" + +#. /flag:ht +#: modules/devices/x86/x86_data.c:69 +msgctxt "x86-flag" +msgid "Hyper-Threading" +msgstr "" + +#. /flag:tm +#: modules/devices/x86/x86_data.c:70 +msgctxt "x86-flag" +msgid "Automatic clock control (Thermal Monitor)" +msgstr "" + +#. /flag:ia64 +#: modules/devices/x86/x86_data.c:71 +msgctxt "x86-flag" +msgid "" +"Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " +"x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" +msgstr "" + +#. /flag:pbe +#: modules/devices/x86/x86_data.c:72 +msgctxt "x86-flag" +msgid "Pending Break Enable (PBE# pin) wakeup support" +msgstr "" + +#. /flag:syscall +#: modules/devices/x86/x86_data.c:75 +msgctxt "x86-flag" +msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" +msgstr "" + +#. /flag:mp +#: modules/devices/x86/x86_data.c:76 +msgctxt "x86-flag" +msgid "Multiprocessing Capable." +msgstr "" + +#. /flag:nx +#: modules/devices/x86/x86_data.c:77 +msgctxt "x86-flag" +msgid "Execute Disable" +msgstr "" + +#. /flag:mmxext +#: modules/devices/x86/x86_data.c:78 +msgctxt "x86-flag" +msgid "AMD MMX extensions" +msgstr "" + +#. /flag:fxsr_opt +#: modules/devices/x86/x86_data.c:79 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR optimizations" +msgstr "" + +#. /flag:pdpe1gb +#: modules/devices/x86/x86_data.c:80 +msgctxt "x86-flag" +msgid "One GB pages (allows hugepagesz=1G)" +msgstr "" + +#. /flag:rdtscp +#: modules/devices/x86/x86_data.c:81 +msgctxt "x86-flag" +msgid "Read Time-Stamp Counter and Processor ID" +msgstr "" + +#. /flag:lm +#: modules/devices/x86/x86_data.c:82 +msgctxt "x86-flag" +msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" +msgstr "" + +#. /flag:3dnow +#: modules/devices/x86/x86_data.c:83 +msgctxt "x86-flag" +msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" +msgstr "" + +#. /flag:3dnowext +#: modules/devices/x86/x86_data.c:84 +msgctxt "x86-flag" +msgid "AMD 3DNow! extensions" +msgstr "" + +#. /flag:recovery +#: modules/devices/x86/x86_data.c:86 +msgctxt "x86-flag" +msgid "CPU in recovery mode" +msgstr "" + +#. /flag:longrun +#: modules/devices/x86/x86_data.c:87 +msgctxt "x86-flag" +msgid "Longrun power control" +msgstr "" + +#. /flag:lrti +#: modules/devices/x86/x86_data.c:88 +msgctxt "x86-flag" +msgid "LongRun table interface" +msgstr "" + +#. /flag:cxmmx +#: modules/devices/x86/x86_data.c:90 +msgctxt "x86-flag" +msgid "Cyrix MMX extensions" +msgstr "" + +#. /flag:k6_mtrr +#: modules/devices/x86/x86_data.c:91 +msgctxt "x86-flag" +msgid "AMD K6 nonstandard MTRRs" +msgstr "" + +#. /flag:cyrix_arr +#: modules/devices/x86/x86_data.c:92 +msgctxt "x86-flag" +msgid "Cyrix ARRs (= MTRRs)" +msgstr "" + +#. /flag:centaur_mcr +#: modules/devices/x86/x86_data.c:93 +msgctxt "x86-flag" +msgid "Centaur MCRs (= MTRRs)" +msgstr "" + +#. /flag:constant_tsc +#: modules/devices/x86/x86_data.c:94 +msgctxt "x86-flag" +msgid "TSC ticks at a constant rate" +msgstr "" + +#. /flag:up +#: modules/devices/x86/x86_data.c:95 +msgctxt "x86-flag" +msgid "SMP kernel running on UP" +msgstr "" + +#. /flag:art +#: modules/devices/x86/x86_data.c:96 +msgctxt "x86-flag" +msgid "Always-Running Timer" +msgstr "" + +#. /flag:arch_perfmon +#: modules/devices/x86/x86_data.c:97 +msgctxt "x86-flag" +msgid "Intel Architectural PerfMon" +msgstr "" + +#. /flag:pebs +#: modules/devices/x86/x86_data.c:98 +msgctxt "x86-flag" +msgid "Precise-Event Based Sampling" +msgstr "" + +#. /flag:bts +#: modules/devices/x86/x86_data.c:99 +msgctxt "x86-flag" +msgid "Branch Trace Store" +msgstr "" + +#. /flag:rep_good +#: modules/devices/x86/x86_data.c:100 +msgctxt "x86-flag" +msgid "rep microcode works well" +msgstr "" + +#. /flag:acc_power +#: modules/devices/x86/x86_data.c:101 +msgctxt "x86-flag" +msgid "AMD accumulated power mechanism" +msgstr "" + +#. /flag:nopl +#: modules/devices/x86/x86_data.c:102 +msgctxt "x86-flag" +msgid "The NOPL (0F 1F) instructions" +msgstr "" + +#. /flag:xtopology +#: modules/devices/x86/x86_data.c:103 +msgctxt "x86-flag" +msgid "cpu topology enum extensions" +msgstr "" + +#. /flag:tsc_reliable +#: modules/devices/x86/x86_data.c:104 +msgctxt "x86-flag" +msgid "TSC is known to be reliable" +msgstr "" + +#. /flag:nonstop_tsc +#: modules/devices/x86/x86_data.c:105 +msgctxt "x86-flag" +msgid "TSC does not stop in C states" +msgstr "" + +#. /flag:extd_apicid +#: modules/devices/x86/x86_data.c:106 +msgctxt "x86-flag" +msgid "has extended APICID (8 bits)" +msgstr "" + +#. /flag:amd_dcm +#: modules/devices/x86/x86_data.c:107 +msgctxt "x86-flag" +msgid "multi-node processor" +msgstr "" + +#. /flag:aperfmperf +#: modules/devices/x86/x86_data.c:108 +msgctxt "x86-flag" +msgid "APERFMPERF" +msgstr "" + +#. /flag:eagerfpu +#: modules/devices/x86/x86_data.c:109 +msgctxt "x86-flag" +msgid "Non lazy FPU restore" +msgstr "" + +#. /flag:nonstop_tsc_s3 +#: modules/devices/x86/x86_data.c:110 +msgctxt "x86-flag" +msgid "TSC doesn't stop in S3 state" +msgstr "" + +#. /flag:mce_recovery +#: modules/devices/x86/x86_data.c:111 +msgctxt "x86-flag" +msgid "CPU has recoverable machine checks" +msgstr "" + +#. /flag:pni +#: modules/devices/x86/x86_data.c:114 +msgctxt "x86-flag" +msgid "SSE-3 (\"Prescott New Instructions\")" +msgstr "" + +#. /flag:pclmulqdq +#: modules/devices/x86/x86_data.c:115 +msgctxt "x86-flag" +msgid "" +"Perform a Carry-Less Multiplication of Quadword instruction - accelerator " +"for GCM)" +msgstr "" + +#. /flag:dtes64 +#: modules/devices/x86/x86_data.c:116 +msgctxt "x86-flag" +msgid "64-bit Debug Store" +msgstr "" + +#. /flag:monitor +#: modules/devices/x86/x86_data.c:117 +msgctxt "x86-flag" +msgid "Monitor/Mwait support (Intel SSE3 supplements)" +msgstr "" + +#. /flag:ds_cpl +#: modules/devices/x86/x86_data.c:118 +msgctxt "x86-flag" +msgid "CPL Qual. Debug Store" +msgstr "" + +#. /flag:vmx +#: modules/devices/x86/x86_data.c:119 +msgctxt "x86-flag" +msgid "Hardware virtualization, Intel VMX" +msgstr "" + +#. /flag:smx +#: modules/devices/x86/x86_data.c:120 +msgctxt "x86-flag" +msgid "Safer mode TXT (TPM support)" +msgstr "" + +#. /flag:est +#: modules/devices/x86/x86_data.c:121 +msgctxt "x86-flag" +msgid "Enhanced SpeedStep" +msgstr "" + +#. /flag:tm2 +#: modules/devices/x86/x86_data.c:122 +msgctxt "x86-flag" +msgid "Thermal Monitor 2" +msgstr "" + +#. /flag:ssse3 +#: modules/devices/x86/x86_data.c:123 +msgctxt "x86-flag" +msgid "Supplemental SSE-3" +msgstr "" + +#. /flag:cid +#: modules/devices/x86/x86_data.c:124 +msgctxt "x86-flag" +msgid "Context ID" +msgstr "" + +#. /flag:sdbg +#: modules/devices/x86/x86_data.c:125 +msgctxt "x86-flag" +msgid "silicon debug" +msgstr "" + +#. /flag:fma +#: modules/devices/x86/x86_data.c:126 +msgctxt "x86-flag" +msgid "Fused multiply-add" +msgstr "" + +#. /flag:cx16 +#: modules/devices/x86/x86_data.c:127 +msgctxt "x86-flag" +msgid "CMPXCHG16B" +msgstr "" + +#. /flag:xtpr +#: modules/devices/x86/x86_data.c:128 +msgctxt "x86-flag" +msgid "Send Task Priority Messages" +msgstr "" + +#. /flag:pdcm +#: modules/devices/x86/x86_data.c:129 +msgctxt "x86-flag" +msgid "Performance Capabilities" +msgstr "" + +#. /flag:pcid +#: modules/devices/x86/x86_data.c:130 +msgctxt "x86-flag" +msgid "Process Context Identifiers" +msgstr "" + +#. /flag:dca +#: modules/devices/x86/x86_data.c:131 +msgctxt "x86-flag" +msgid "Direct Cache Access" +msgstr "" + +#. /flag:sse4_1 +#: modules/devices/x86/x86_data.c:132 +msgctxt "x86-flag" +msgid "SSE-4.1" +msgstr "" + +#. /flag:sse4_2 +#: modules/devices/x86/x86_data.c:133 +msgctxt "x86-flag" +msgid "SSE-4.2" +msgstr "" + +#. /flag:x2apic +#: modules/devices/x86/x86_data.c:134 +msgctxt "x86-flag" +msgid "x2APIC" +msgstr "" + +#. /flag:movbe +#: modules/devices/x86/x86_data.c:135 +msgctxt "x86-flag" +msgid "Move Data After Swapping Bytes instruction" +msgstr "" + +#. /flag:popcnt +#: modules/devices/x86/x86_data.c:136 +msgctxt "x86-flag" +msgid "" +"Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." +"e. bit count)" +msgstr "" + +#. /flag:tsc_deadline_timer +#: modules/devices/x86/x86_data.c:137 +msgctxt "x86-flag" +msgid "Tsc deadline timer" +msgstr "" + +#. /flag:aes/aes-ni +#: modules/devices/x86/x86_data.c:138 +msgctxt "x86-flag" +msgid "Advanced Encryption Standard (New Instructions)" +msgstr "" + +#. /flag:xsave +#: modules/devices/x86/x86_data.c:139 +msgctxt "x86-flag" +msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" +msgstr "" + +#. /flag:avx +#: modules/devices/x86/x86_data.c:140 +msgctxt "x86-flag" +msgid "Advanced Vector Extensions" +msgstr "" + +#. /flag:f16c +#: modules/devices/x86/x86_data.c:141 +msgctxt "x86-flag" +msgid "16-bit fp conversions (CVT16)" +msgstr "" + +#. /flag:rdrand +#: modules/devices/x86/x86_data.c:142 +msgctxt "x86-flag" +msgid "Read Random Number from hardware random number generator instruction" +msgstr "" + +#. /flag:hypervisor +#: modules/devices/x86/x86_data.c:143 +msgctxt "x86-flag" +msgid "Running on a hypervisor" +msgstr "" + +#. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 +#. /flag:rng +#: modules/devices/x86/x86_data.c:145 +msgctxt "x86-flag" +msgid "Random Number Generator present (xstore)" +msgstr "" + +#. /flag:rng_en +#: modules/devices/x86/x86_data.c:146 +msgctxt "x86-flag" +msgid "Random Number Generator enabled" +msgstr "" + +#. /flag:ace +#: modules/devices/x86/x86_data.c:147 +msgctxt "x86-flag" +msgid "on-CPU crypto (xcrypt)" +msgstr "" + +#. /flag:ace_en +#: modules/devices/x86/x86_data.c:148 +msgctxt "x86-flag" +msgid "on-CPU crypto enabled" +msgstr "" + +#. /flag:ace2 +#: modules/devices/x86/x86_data.c:149 +msgctxt "x86-flag" +msgid "Advanced Cryptography Engine v2" +msgstr "" + +#. /flag:ace2_en +#: modules/devices/x86/x86_data.c:150 +msgctxt "x86-flag" +msgid "ACE v2 enabled" +msgstr "" + +#. /flag:phe +#: modules/devices/x86/x86_data.c:151 +msgctxt "x86-flag" +msgid "PadLock Hash Engine" +msgstr "" + +#. /flag:phe_en +#: modules/devices/x86/x86_data.c:152 +msgctxt "x86-flag" +msgid "PHE enabled" +msgstr "" + +#. /flag:pmm +#: modules/devices/x86/x86_data.c:153 +msgctxt "x86-flag" +msgid "PadLock Montgomery Multiplier" +msgstr "" + +#. /flag:pmm_en +#: modules/devices/x86/x86_data.c:154 +msgctxt "x86-flag" +msgid "PMM enabled" +msgstr "" + +#. /flag:lahf_lm +#: modules/devices/x86/x86_data.c:156 +msgctxt "x86-flag" +msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" +msgstr "" + +#. /flag:cmp_legacy +#: modules/devices/x86/x86_data.c:157 +msgctxt "x86-flag" +msgid "If yes HyperThreading not valid" +msgstr "" + +#. /flag:svm +#: modules/devices/x86/x86_data.c:158 +msgctxt "x86-flag" +msgid "\"Secure virtual machine\": AMD-V" +msgstr "" + +#. /flag:extapic +#: modules/devices/x86/x86_data.c:159 +msgctxt "x86-flag" +msgid "Extended APIC space" +msgstr "" + +#. /flag:cr8_legacy +#: modules/devices/x86/x86_data.c:160 +msgctxt "x86-flag" +msgid "CR8 in 32-bit mode" +msgstr "" + +#. /flag:abm +#: modules/devices/x86/x86_data.c:161 +msgctxt "x86-flag" +msgid "Advanced Bit Manipulation" +msgstr "" + +#. /flag:sse4a +#: modules/devices/x86/x86_data.c:162 +msgctxt "x86-flag" +msgid "SSE-4A" +msgstr "" + +#. /flag:misalignsse +#: modules/devices/x86/x86_data.c:163 +msgctxt "x86-flag" +msgid "" +"indicates if a general-protection exception (#GP) is generated when some " +"legacy SSE instructions operate on unaligned data. Also depends on CR0 and " +"Alignment Checking bit" +msgstr "" + +#. /flag:3dnowprefetch +#: modules/devices/x86/x86_data.c:164 +msgctxt "x86-flag" +msgid "3DNow prefetch instructions" +msgstr "" + +#. /flag:osvw +#: modules/devices/x86/x86_data.c:165 +msgctxt "x86-flag" +msgid "" +"indicates OS Visible Workaround, which allows the OS to work around " +"processor errata." +msgstr "" + +#. /flag:ibs +#: modules/devices/x86/x86_data.c:166 +msgctxt "x86-flag" +msgid "Instruction Based Sampling" +msgstr "" + +#. /flag:xop +#: modules/devices/x86/x86_data.c:167 +msgctxt "x86-flag" +msgid "extended AVX instructions" +msgstr "" + +#. /flag:skinit +#: modules/devices/x86/x86_data.c:168 +msgctxt "x86-flag" +msgid "SKINIT/STGI instructions" +msgstr "" + +#. /flag:wdt +#: modules/devices/x86/x86_data.c:169 +msgctxt "x86-flag" +msgid "Watchdog timer" +msgstr "" + +#. /flag:lwp +#: modules/devices/x86/x86_data.c:170 +msgctxt "x86-flag" +msgid "Light Weight Profiling" +msgstr "" + +#. /flag:fma4 +#: modules/devices/x86/x86_data.c:171 +msgctxt "x86-flag" +msgid "4 operands MAC instructions" +msgstr "" + +#. /flag:tce +#: modules/devices/x86/x86_data.c:172 +msgctxt "x86-flag" +msgid "translation cache extension" +msgstr "" + +#. /flag:nodeid_msr +#: modules/devices/x86/x86_data.c:173 +msgctxt "x86-flag" +msgid "NodeId MSR" +msgstr "" + +#. /flag:tbm +#: modules/devices/x86/x86_data.c:174 +msgctxt "x86-flag" +msgid "Trailing Bit Manipulation" +msgstr "" + +#. /flag:topoext +#: modules/devices/x86/x86_data.c:175 +msgctxt "x86-flag" +msgid "Topology Extensions CPUID leafs" +msgstr "" + +#. /flag:perfctr_core +#: modules/devices/x86/x86_data.c:176 +msgctxt "x86-flag" +msgid "Core Performance Counter Extensions" +msgstr "" + +#. /flag:perfctr_nb +#: modules/devices/x86/x86_data.c:177 +msgctxt "x86-flag" +msgid "NB Performance Counter Extensions" +msgstr "" + +#. /flag:bpext +#: modules/devices/x86/x86_data.c:178 +msgctxt "x86-flag" +msgid "data breakpoint extension" +msgstr "" + +#. /flag:ptsc +#: modules/devices/x86/x86_data.c:179 +msgctxt "x86-flag" +msgid "performance time-stamp counter" +msgstr "" + +#. /flag:perfctr_l2 +#: modules/devices/x86/x86_data.c:180 +msgctxt "x86-flag" +msgid "L2 Performance Counter Extensions" +msgstr "" + +#. /flag:mwaitx +#: modules/devices/x86/x86_data.c:181 +msgctxt "x86-flag" +msgid "MWAIT extension (MONITORX/MWAITX)" +msgstr "" + +#. /flag:cpb +#: modules/devices/x86/x86_data.c:183 +msgctxt "x86-flag" +msgid "AMD Core Performance Boost" +msgstr "" + +#. /flag:epb +#: modules/devices/x86/x86_data.c:184 +msgctxt "x86-flag" +msgid "IA32_ENERGY_PERF_BIAS support" +msgstr "" + +#. /flag:hw_pstate +#: modules/devices/x86/x86_data.c:185 +msgctxt "x86-flag" +msgid "AMD HW-PState" +msgstr "" + +#. /flag:proc_feedback +#: modules/devices/x86/x86_data.c:186 +msgctxt "x86-flag" +msgid "AMD ProcFeedbackInterface" +msgstr "" + +#. /flag:intel_pt +#: modules/devices/x86/x86_data.c:187 +msgctxt "x86-flag" +msgid "Intel Processor Tracing" +msgstr "" + +#. /flag:tpr_shadow +#: modules/devices/x86/x86_data.c:189 +msgctxt "x86-flag" +msgid "Intel TPR Shadow" +msgstr "" + +#. /flag:vnmi +#: modules/devices/x86/x86_data.c:190 +msgctxt "x86-flag" +msgid "Intel Virtual NMI" +msgstr "" + +#. /flag:flexpriority +#: modules/devices/x86/x86_data.c:191 +msgctxt "x86-flag" +msgid "Intel FlexPriority" +msgstr "" + +#. /flag:ept +#: modules/devices/x86/x86_data.c:192 +msgctxt "x86-flag" +msgid "Intel Extended Page Table" +msgstr "" + +#. /flag:vpid +#: modules/devices/x86/x86_data.c:193 +msgctxt "x86-flag" +msgid "Intel Virtual Processor ID" +msgstr "" + +#. /flag:vmmcall +#: modules/devices/x86/x86_data.c:194 +msgctxt "x86-flag" +msgid "prefer VMMCALL to VMCALL" +msgstr "" + +#. /flag:fsgsbase +#: modules/devices/x86/x86_data.c:196 +msgctxt "x86-flag" +msgid "{RD/WR}{FS/GS}BASE instructions" +msgstr "" + +#. /flag:tsc_adjust +#: modules/devices/x86/x86_data.c:197 +msgctxt "x86-flag" +msgid "TSC adjustment MSR" +msgstr "" + +#. /flag:bmi1 +#: modules/devices/x86/x86_data.c:198 +msgctxt "x86-flag" +msgid "1st group bit manipulation extensions" +msgstr "" + +#. /flag:hle +#: modules/devices/x86/x86_data.c:199 +msgctxt "x86-flag" +msgid "Hardware Lock Elision" +msgstr "" + +#. /flag:avx2 +#: modules/devices/x86/x86_data.c:200 +msgctxt "x86-flag" +msgid "AVX2 instructions" +msgstr "" + +#. /flag:smep +#: modules/devices/x86/x86_data.c:201 +msgctxt "x86-flag" +msgid "Supervisor Mode Execution Protection" +msgstr "" + +#. /flag:bmi2 +#: modules/devices/x86/x86_data.c:202 +msgctxt "x86-flag" +msgid "2nd group bit manipulation extensions" +msgstr "" + +#. /flag:erms +#: modules/devices/x86/x86_data.c:203 +msgctxt "x86-flag" +msgid "Enhanced REP MOVSB/STOSB" +msgstr "" + +#. /flag:invpcid +#: modules/devices/x86/x86_data.c:204 +msgctxt "x86-flag" +msgid "Invalidate Processor Context ID" +msgstr "" + +#. /flag:rtm +#: modules/devices/x86/x86_data.c:205 +msgctxt "x86-flag" +msgid "Restricted Transactional Memory" +msgstr "" + +#. /flag:cqm +#: modules/devices/x86/x86_data.c:206 +msgctxt "x86-flag" +msgid "Cache QoS Monitoring" +msgstr "" + +#. /flag:mpx +#: modules/devices/x86/x86_data.c:207 +msgctxt "x86-flag" +msgid "Memory Protection Extension" +msgstr "" + +#. /flag:avx512f +#: modules/devices/x86/x86_data.c:208 +msgctxt "x86-flag" +msgid "AVX-512 foundation" +msgstr "" + +#. /flag:avx512dq +#: modules/devices/x86/x86_data.c:209 +msgctxt "x86-flag" +msgid "AVX-512 Double/Quad instructions" +msgstr "" + +#. /flag:rdseed +#: modules/devices/x86/x86_data.c:210 +msgctxt "x86-flag" +msgid "The RDSEED instruction" +msgstr "" + +#. /flag:adx +#: modules/devices/x86/x86_data.c:211 +msgctxt "x86-flag" +msgid "The ADCX and ADOX instructions" +msgstr "" + +#. /flag:smap +#: modules/devices/x86/x86_data.c:212 +msgctxt "x86-flag" +msgid "Supervisor Mode Access Prevention" +msgstr "" + +#. /flag:clflushopt +#: modules/devices/x86/x86_data.c:213 +msgctxt "x86-flag" +msgid "CLFLUSHOPT instruction" +msgstr "" + +#. /flag:clwb +#: modules/devices/x86/x86_data.c:214 +msgctxt "x86-flag" +msgid "CLWB instruction" +msgstr "" + +#. /flag:avx512pf +#: modules/devices/x86/x86_data.c:215 +msgctxt "x86-flag" +msgid "AVX-512 Prefetch" +msgstr "" + +#. /flag:avx512er +#: modules/devices/x86/x86_data.c:216 +msgctxt "x86-flag" +msgid "AVX-512 Exponential and Reciprocal" +msgstr "" + +#. /flag:avx512cd +#: modules/devices/x86/x86_data.c:217 +msgctxt "x86-flag" +msgid "AVX-512 Conflict Detection" +msgstr "" + +#. /flag:sha_ni +#: modules/devices/x86/x86_data.c:218 +msgctxt "x86-flag" +msgid "SHA1/SHA256 Instruction Extensions" +msgstr "" + +#. /flag:avx512bw +#: modules/devices/x86/x86_data.c:219 +msgctxt "x86-flag" +msgid "AVX-512 Byte/Word instructions" +msgstr "" + +#. /flag:avx512vl +#: modules/devices/x86/x86_data.c:220 +msgctxt "x86-flag" +msgid "AVX-512 128/256 Vector Length extensions" +msgstr "" + +#. /flag:xsaveopt +#: modules/devices/x86/x86_data.c:222 +msgctxt "x86-flag" +msgid "Optimized XSAVE" +msgstr "" + +#. /flag:xsavec +#: modules/devices/x86/x86_data.c:223 +msgctxt "x86-flag" +msgid "XSAVEC" +msgstr "" + +#. /flag:xgetbv1 +#: modules/devices/x86/x86_data.c:224 +msgctxt "x86-flag" +msgid "XGETBV with ECX = 1" +msgstr "" + +#. /flag:xsaves +#: modules/devices/x86/x86_data.c:225 +msgctxt "x86-flag" +msgid "XSAVES/XRSTORS" +msgstr "" + +#. /flag:cqm_llc +#: modules/devices/x86/x86_data.c:227 +msgctxt "x86-flag" +msgid "LLC QoS" +msgstr "" + +#. /flag:cqm_occup_llc +#: modules/devices/x86/x86_data.c:229 +msgctxt "x86-flag" +msgid "LLC occupancy monitoring" +msgstr "" + +#. /flag:cqm_mbm_total +#: modules/devices/x86/x86_data.c:230 +msgctxt "x86-flag" +msgid "LLC total MBM monitoring" +msgstr "" + +#. /flag:cqm_mbm_local +#: modules/devices/x86/x86_data.c:231 +msgctxt "x86-flag" +msgid "LLC local MBM monitoring" +msgstr "" + +#. /flag:clzero +#: modules/devices/x86/x86_data.c:233 +msgctxt "x86-flag" +msgid "CLZERO instruction" +msgstr "" + +#. /flag:irperf +#: modules/devices/x86/x86_data.c:234 +msgctxt "x86-flag" +msgid "instructions retired performance counter" +msgstr "" + +#. /flag:dtherm +#: modules/devices/x86/x86_data.c:236 +msgctxt "x86-flag" +msgid "digital thermal sensor" +msgstr "" + +#. /flag:ida +#: modules/devices/x86/x86_data.c:237 +msgctxt "x86-flag" +msgid "Intel Dynamic Acceleration" +msgstr "" + +#. /flag:arat +#: modules/devices/x86/x86_data.c:238 +msgctxt "x86-flag" +msgid "Always Running APIC Timer" +msgstr "" + +#. /flag:pln +#: modules/devices/x86/x86_data.c:239 +msgctxt "x86-flag" +msgid "Intel Power Limit Notification" +msgstr "" + +#. /flag:pts +#: modules/devices/x86/x86_data.c:240 +msgctxt "x86-flag" +msgid "Intel Package Thermal Status" +msgstr "" + +#. /flag:hwp +#: modules/devices/x86/x86_data.c:241 +msgctxt "x86-flag" +msgid "Intel Hardware P-states" +msgstr "" + +#. /flag:hwp_notify +#: modules/devices/x86/x86_data.c:242 +msgctxt "x86-flag" +msgid "HWP notification" +msgstr "" + +#. /flag:hwp_act_window +#: modules/devices/x86/x86_data.c:243 +msgctxt "x86-flag" +msgid "HWP Activity Window" +msgstr "" + +#. /flag:hwp_epp +#: modules/devices/x86/x86_data.c:244 +msgctxt "x86-flag" +msgid "HWP Energy Performance Preference" +msgstr "" + +#. /flag:hwp_pkg_req +#: modules/devices/x86/x86_data.c:245 +msgctxt "x86-flag" +msgid "HWP package-level request" +msgstr "" + +#. /flag:npt +#: modules/devices/x86/x86_data.c:247 +msgctxt "x86-flag" +msgid "AMD Nested Page Table support" +msgstr "" + +#. /flag:lbrv +#: modules/devices/x86/x86_data.c:248 +msgctxt "x86-flag" +msgid "AMD LBR Virtualization support" +msgstr "" + +#. /flag:svm_lock +#: modules/devices/x86/x86_data.c:249 +msgctxt "x86-flag" +msgid "AMD SVM locking MSR" +msgstr "" + +#. /flag:nrip_save +#: modules/devices/x86/x86_data.c:250 +msgctxt "x86-flag" +msgid "AMD SVM next_rip save" +msgstr "" + +#. /flag:tsc_scale +#: modules/devices/x86/x86_data.c:251 +msgctxt "x86-flag" +msgid "AMD TSC scaling support" +msgstr "" + +#. /flag:vmcb_clean +#: modules/devices/x86/x86_data.c:252 +msgctxt "x86-flag" +msgid "AMD VMCB clean bits support" +msgstr "" + +#. /flag:flushbyasid +#: modules/devices/x86/x86_data.c:253 +msgctxt "x86-flag" +msgid "AMD flush-by-ASID support" +msgstr "" + +#. /flag:decodeassists +#: modules/devices/x86/x86_data.c:254 +msgctxt "x86-flag" +msgid "AMD Decode Assists support" +msgstr "" + +#. /flag:pausefilter +#: modules/devices/x86/x86_data.c:255 +msgctxt "x86-flag" +msgid "AMD filtered pause intercept" +msgstr "" + +#. /flag:pfthreshold +#: modules/devices/x86/x86_data.c:256 +msgctxt "x86-flag" +msgid "AMD pause filter threshold" +msgstr "" + +#. /flag:avic +#: modules/devices/x86/x86_data.c:257 +msgctxt "x86-flag" +msgid "Virtual Interrupt Controller" +msgstr "" + +#. /flag:pku +#: modules/devices/x86/x86_data.c:259 +msgctxt "x86-flag" +msgid "Protection Keys for Userspace" +msgstr "" + +#. /flag:ospke +#: modules/devices/x86/x86_data.c:260 +msgctxt "x86-flag" +msgid "OS Protection Keys Enable" +msgstr "" + +#. /flag:overflow_recov +#: modules/devices/x86/x86_data.c:262 +msgctxt "x86-flag" +msgid "MCA overflow recovery support" +msgstr "" + +#. /flag:succor +#: modules/devices/x86/x86_data.c:263 +msgctxt "x86-flag" +msgid "uncorrectable error containment and recovery" +msgstr "" + +#. /flag:smca +#: modules/devices/x86/x86_data.c:264 +msgctxt "x86-flag" +msgid "Scalable MCA" +msgstr "" + +#. /bug:f00f +#: modules/devices/x86/x86_data.c:267 +msgctxt "x86-flag" +msgid "Intel F00F bug" +msgstr "" + +#. /bug:fdiv +#: modules/devices/x86/x86_data.c:268 +msgctxt "x86-flag" +msgid "FPU FDIV" +msgstr "" + +#. /bug:coma +#: modules/devices/x86/x86_data.c:269 +msgctxt "x86-flag" +msgid "Cyrix 6x86 coma" +msgstr "" + +#. /bug:tlb_mmatch +#: modules/devices/x86/x86_data.c:270 +msgctxt "x86-flag" +msgid "AMD Erratum 383" +msgstr "" + +#. /bug:apic_c1e +#. /bug:amd_e400 +#: modules/devices/x86/x86_data.c:271 modules/devices/x86/x86_data.c:280 +msgctxt "x86-flag" +msgid "AMD Erratum 400" +msgstr "" + +#. /bug:11ap +#: modules/devices/x86/x86_data.c:272 +msgctxt "x86-flag" +msgid "Bad local APIC aka 11AP" +msgstr "" + +#. /bug:fxsave_leak +#: modules/devices/x86/x86_data.c:273 +msgctxt "x86-flag" +msgid "FXSAVE leaks FOP/FIP/FOP" +msgstr "" + +#. /bug:clflush_monitor +#: modules/devices/x86/x86_data.c:274 +msgctxt "x86-flag" +msgid "AAI65, CLFLUSH required before MONITOR" +msgstr "" + +#. /bug:sysret_ss_attrs +#: modules/devices/x86/x86_data.c:275 +msgctxt "x86-flag" +msgid "SYSRET doesn't fix up SS attrs" +msgstr "" + +#. /bug:espfix +#: modules/devices/x86/x86_data.c:276 +msgctxt "x86-flag" +msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" +msgstr "" + +#. /bug:null_seg +#: modules/devices/x86/x86_data.c:277 +msgctxt "x86-flag" +msgid "Nulling a selector preserves the base" +msgstr "" + +#. /bug:swapgs_fence +#: modules/devices/x86/x86_data.c:278 +msgctxt "x86-flag" +msgid "SWAPGS without input dep on GS" +msgstr "" + +#. /bug:monitor +#: modules/devices/x86/x86_data.c:279 +msgctxt "x86-flag" +msgid "IPI required to wake up remote CPU" +msgstr "" + +#. /x86/kernel/cpu/powerflags.h +#. /flag:pm:ts +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "temperature sensor" +msgstr "" + +#. /flag:pm:fid +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "frequency id control" +msgstr "" + +#. /flag:pm:vid +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "voltage id control" +msgstr "" + +#. /flag:pm:ttp +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "thermal trip" +msgstr "" + +#. /flag:pm:tm +#: modules/devices/x86/x86_data.c:287 +msgctxt "x86-flag" +msgid "hardware thermal control" +msgstr "" + +#. /flag:pm:stc +#: modules/devices/x86/x86_data.c:288 +msgctxt "x86-flag" +msgid "software thermal control" +msgstr "" + +#. /flag:pm:100mhzsteps +#: modules/devices/x86/x86_data.c:289 +msgctxt "x86-flag" +msgid "100 MHz multiplier control" +msgstr "" + +#. /flag:pm:hwpstate +#: modules/devices/x86/x86_data.c:290 +msgctxt "x86-flag" +msgid "hardware P-state control" +msgstr "" + +#. /flag:pm:cpb +#: modules/devices/x86/x86_data.c:291 +msgctxt "x86-flag" +msgid "core performance boost" +msgstr "" + +#. /flag:pm:eff_freq_ro +#: modules/devices/x86/x86_data.c:292 +msgctxt "x86-flag" +msgid "Readonly aperf/mperf" +msgstr "" + +#. /flag:pm:proc_feedback +#: modules/devices/x86/x86_data.c:293 +msgctxt "x86-flag" +msgid "processor feedback interface" +msgstr "" + +#. /flag:pm:acc_power +#: modules/devices/x86/x86_data.c:294 +msgctxt "x86-flag" +msgid "accumulated power mechanism" +msgstr "" + +#: modules/network.c:59 msgid "Interfaces" msgstr "" -#: modules//network.c:60 +#: modules/network.c:60 msgid "IP Connections" msgstr "" -#: modules//network.c:61 +#: modules/network.c:61 msgid "Routing Table" msgstr "" -#: modules//network.c:62 +#: modules/network.c:62 modules/network.c:303 msgid "ARP Table" msgstr "" -#: modules//network.c:63 +#: modules/network.c:63 msgid "DNS Servers" msgstr "" -#: modules//network.c:64 +#: modules/network.c:64 msgid "Statistics" msgstr "" -#: modules//network.c:65 +#: modules/network.c:65 msgid "Shared Directories" msgstr "" -#: modules//network.c:300 -#, c-format -msgid "" -"[ARP Table]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Interface\n" -"ColumnTitle$Extra1=MAC Address\n" -"ShowColumnHeaders=true\n" +#: modules/network.c:304 modules/network.c:326 modules/network.c:357 +#: modules/network/net.c:477 +msgid "IP Address" msgstr "" -#: modules//network.c:321 -#, c-format -msgid "" -"[Name servers]\n" -"%s\n" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" +#: modules/network.c:304 modules/network.c:357 modules/network.c:374 +msgid "Interface" msgstr "" -#: modules//network.c:331 -#, c-format -msgid "" -"[Connections]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Local Address\n" -"ColumnTitle$Value=Protocol\n" -"ColumnTitle$Extra1=Foreign Address\n" -"ColumnTitle$Extra2=State\n" -"ShowColumnHeaders=true\n" +#: modules/network.c:304 +msgid "MAC Address" msgstr "" -#: modules//network.c:345 -#, c-format -msgid "" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Interface\n" -"ColumnTitle$Value=IP Address\n" -"ColumnTitle$Extra1=Sent\n" -"ColumnTitle$Extra2=Received\n" -"ShowColumnHeaders=true\n" -"%s" +#: modules/network.c:313 +msgid "SAMBA" msgstr "" -#: modules//network.c:361 -#, c-format -msgid "" -"[IP routing table]\n" -"%s\n" -"[$ShellParam$]\n" -"ViewType=0\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Destination / Gateway\n" -"ColumnTitle$Value=Interface\n" -"ColumnTitle$Extra1=Flags\n" -"ColumnTitle$Extra2=Mask\n" -"ShowColumnHeaders=true\n" +#: modules/network.c:314 +msgid "NFS" +msgstr "" + +#: modules/network.c:325 +msgid "Name Servers" +msgstr "" + +#: modules/network.c:340 +msgid "Connections" +msgstr "" + +#: modules/network.c:341 +msgid "Local Address" +msgstr "" + +#: modules/network.c:341 +msgid "Protocol" +msgstr "" + +#: modules/network.c:341 +msgid "Foreign Address" +msgstr "" + +#: modules/network.c:341 +msgid "State" +msgstr "" + +#: modules/network.c:357 +msgid "Sent" +msgstr "" + +#: modules/network.c:357 +msgid "Received" +msgstr "" + +#: modules/network.c:373 +msgid "IP routing table" +msgstr "" + +#: modules/network.c:374 +msgid "Destination/Gateway" +msgstr "" + +#: modules/network.c:374 +msgid "Flags" msgstr "" -#: modules//network.c:399 +#: modules/network.c:374 modules/network/net.c:478 +msgid "Mask" +msgstr "" + +#: modules/network.c:402 msgid "Network" msgstr "" -#: modules//network.c:432 +#: modules/network.c:435 msgid "Gathers information about this computer's network connection" msgstr "" -#: hardinfo//hardinfo.c:54 -msgid "" -"Copyright (C) 2003-2009 Leandro A. F. Pereira. See COPYING for details.\n" -"\n" +#: modules/network/net.c:72 +msgctxt "wi-op-mode" +msgid "Auto" msgstr "" -#: hardinfo//hardinfo.c:56 -#, c-format -msgid "" -"Compile-time options:\n" -" Release version: %s (%s)\n" -" BinReloc enabled: %s\n" -" Data prefix: %s\n" -" Library prefix: %s\n" -" Compiled on: %s %s (%s)\n" +#: modules/network/net.c:73 +msgctxt "wi-op-mode" +msgid "Ad-Hoc" msgstr "" -#: hardinfo//hardinfo.c:74 -#, c-format -msgid "" -"Failed to find runtime data.\n" -"\n" -"• Is HardInfo correctly installed?\n" -"• See if %s and %s exists and you have read permission." +#: modules/network/net.c:74 +msgctxt "wi-op-mode" +msgid "Managed" msgstr "" -#: hardinfo//hardinfo.c:81 -#, c-format -msgid "" -"Modules:\n" -"%-20s%-15s%-12s\n" +#: modules/network/net.c:75 +msgctxt "wi-op-mode" +msgid "Master" msgstr "" -#: hardinfo//hardinfo.c:82 -msgid "File Name" +#: modules/network/net.c:76 +msgctxt "wi-op-mode" +msgid "Repeater" msgstr "" -#: hardinfo//hardinfo.c:82 -msgid "Name" +#: modules/network/net.c:77 +msgctxt "wi-op-mode" +msgid "Secondary" msgstr "" -#: hardinfo//hardinfo.c:82 -msgid "Version" +#: modules/network/net.c:78 +msgctxt "wi-op-mode" +msgid "(Unknown)" msgstr "" -#: hardinfo//hardinfo.c:135 -#, c-format -msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" +#: modules/network/net.c:242 modules/network/net.c:262 +#: modules/network/net.c:270 +msgctxt "net-if-type" +msgid "Ethernet" msgstr "" -#: hardinfo//hardinfo.c:163 -msgid "Don't know what to do. Exiting." +#: modules/network/net.c:243 +msgctxt "net-if-type" +msgid "Loopback" msgstr "" -#: hardinfo//util.c:104 -#: hardinfo//util.c:107 -#: hardinfo//util.c:112 -#, c-format -msgid "%d minute" -msgid_plural "%d minutes" -msgstr[0] "" -msgstr[1] "" +#: modules/network/net.c:244 +msgctxt "net-if-type" +msgid "Point-to-Point" +msgstr "" -#: hardinfo//util.c:106 -#, c-format -msgid "%d hour, " -msgid_plural "%d hours, " -msgstr[0] "" -msgstr[1] "" +#: modules/network/net.c:245 modules/network/net.c:246 +#: modules/network/net.c:247 modules/network/net.c:248 +#: modules/network/net.c:272 +msgctxt "net-if-type" +msgid "Wireless" +msgstr "" -#: hardinfo//util.c:110 -#, c-format -msgid "%d day, " -msgid_plural "%d days, " -msgstr[0] "" -msgstr[1] "" +#: modules/network/net.c:249 +msgctxt "net-if-type" +msgid "Virtual Point-to-Point (TUN)" +msgstr "" -#: hardinfo//util.c:111 -#, c-format -msgid "%d hour and " -msgid_plural "%d hours and " -msgstr[0] "" -msgstr[1] "" +#: modules/network/net.c:250 +msgctxt "net-if-type" +msgid "Ethernet (TAP)" +msgstr "" -#: hardinfo//util.c:118 -#, c-format -msgid "%.1f B" +#: modules/network/net.c:251 +msgctxt "net-if-type" +msgid "Parallel Line Internet Protocol" msgstr "" -#: hardinfo//util.c:120 -#, c-format -msgid "%.1f KiB" +#: modules/network/net.c:252 +msgctxt "net-if-type" +msgid "Infrared" msgstr "" -#: hardinfo//util.c:122 -#, c-format -msgid "%.1f MiB" +#: modules/network/net.c:253 modules/network/net.c:271 +msgctxt "net-if-type" +msgid "Serial Line Internet Protocol" msgstr "" -#: hardinfo//util.c:124 -#, c-format -msgid "%.1f GiB" +#: modules/network/net.c:254 +msgctxt "net-if-type" +msgid "Integrated Services Digital Network" msgstr "" -#: hardinfo//util.c:126 -#, c-format -msgid "%.1f TiB" +#: modules/network/net.c:255 +msgctxt "net-if-type" +msgid "IPv6-over-IPv4 Tunnel" msgstr "" -#: hardinfo//util.c:128 -#, c-format -msgid "%.1f PiB" +#: modules/network/net.c:256 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface (NAT)" msgstr "" -#: hardinfo//util.c:342 -msgid "Error" +#: modules/network/net.c:257 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface" msgstr "" -#: hardinfo//util.c:342 -#: hardinfo//util.c:358 -msgid "Warning" +#: modules/network/net.c:258 +msgctxt "net-if-type" +msgid "Personal Area Network (PAN)" msgstr "" -#: hardinfo//util.c:357 -msgid "Fatal Error" +#: modules/network/net.c:259 +msgctxt "net-if-type" +msgid "Bluetooth" msgstr "" -#: hardinfo//util.c:382 -msgid "creates a report and prints to standard output" +#: modules/network/net.c:260 +msgctxt "net-if-type" +msgid "Bridge Interface" msgstr "" -#: hardinfo//util.c:388 -msgid "chooses a report format (text, html)" +#: modules/network/net.c:261 +msgctxt "net-if-type" +msgid "Hamachi Virtual Personal Network" msgstr "" -#: hardinfo//util.c:394 -msgid "run benchmark; requires benchmark.so to be loaded" +#: modules/network/net.c:263 +msgctxt "net-if-type" +msgid "Intermediate Functional Block" msgstr "" -#: hardinfo//util.c:400 -msgid "lists modules" +#: modules/network/net.c:264 +msgctxt "net-if-type" +msgid "GRE Network Tunnel" msgstr "" -#: hardinfo//util.c:406 -msgid "specify module to load" +#: modules/network/net.c:265 +msgctxt "net-if-type" +msgid "Mesh Network" msgstr "" -#: hardinfo//util.c:412 -msgid "automatically load module dependencies" +#: modules/network/net.c:266 +msgctxt "net-if-type" +msgid "Wireless Master Interface" msgstr "" -#: hardinfo//util.c:419 -msgid "run in XML-RPC server mode" +#: modules/network/net.c:267 +msgctxt "net-if-type" +msgid "VirtualBox Virtual Network Interface" msgstr "" -#: hardinfo//util.c:426 -msgid "shows program version and quit" +#: modules/network/net.c:273 +msgctxt "net-if-type" +msgid "Wireless (WAN)" msgstr "" -#: hardinfo//util.c:431 -msgid "- System Profiler and Benchmark tool" +#: modules/network/net.c:275 +msgctxt "net-if-type" +msgid "(Unknown)" msgstr "" -#: hardinfo//util.c:441 -#, c-format -msgid "" -"Unrecognized arguments.\n" -"Try ``%s --help'' for more information.\n" +#: modules/network/net.c:348 modules/network/net.c:358 +msgid "Network Interfaces" msgstr "" -#: hardinfo//util.c:507 -#, c-format -msgid "Couldn't find a Web browser to open URL %s." +#: modules/network/net.c:348 +msgid "None Found" msgstr "" -#: hardinfo//util.c:854 -#, c-format -msgid "Module \"%s\" depends on module \"%s\", load it?" +#: modules/network/net.c:400 modules/network/net.c:422 +#: modules/network/net.c:423 +msgid "MiB" msgstr "" -#: hardinfo//util.c:877 -#, c-format -msgid "Module \"%s\" depends on module \"%s\"." +#: modules/network/net.c:414 +msgid "Network Adapter Properties" msgstr "" -#: hardinfo//util.c:922 -#, c-format -msgid "No module could be loaded. Check permissions on \"%s\" and try again." +#: modules/network/net.c:415 +msgid "Interface Type" msgstr "" -#: hardinfo//util.c:926 -msgid "" -"No module could be loaded. Please use hardinfo -l to list all available " -"modules and try again with a valid module list." +#: modules/network/net.c:416 +msgid "Hardware Address (MAC)" msgstr "" -#: hardinfo//util.c:1102 -#, c-format -msgid "Scanning: %s..." +#: modules/network/net.c:420 +msgid "MTU" +msgstr "" + +#: modules/network/net.c:421 +msgid "Transfer Details" +msgstr "" + +#: modules/network/net.c:422 +msgid "Bytes Received" +msgstr "" + +#: modules/network/net.c:423 +msgid "Bytes Sent" +msgstr "" + +#: modules/network/net.c:440 modules/network/net.c:462 +#: modules/network/net.c:463 +msgid "dBm" +msgstr "" + +#: modules/network/net.c:440 +msgid "mW" +msgstr "" + +#: modules/network/net.c:454 +msgid "Wireless Properties" +msgstr "" + +#: modules/network/net.c:455 +msgid "Network Name (SSID)" +msgstr "" + +#: modules/network/net.c:456 +msgid "Bit Rate" +msgstr "" + +#: modules/network/net.c:456 +msgid "Mb/s" +msgstr "" + +#: modules/network/net.c:457 +msgid "Transmission Power" +msgstr "" + +#: modules/network/net.c:459 +msgid "Status" +msgstr "" + +#: modules/network/net.c:460 +msgid "Link Quality" +msgstr "" + +#: modules/network/net.c:461 +msgid "Signal / Noise" +msgstr "" + +#: modules/network/net.c:476 +msgid "Internet Protocol (IPv4)" +msgstr "" + +#: modules/network/net.c:477 modules/network/net.c:478 +#: modules/network/net.c:480 +msgid "(Not set)" +msgstr "" + +#: modules/network/net.c:479 +msgid "Broadcast Address" msgstr "" @@ -1,65 +1,277 @@ msgid "" msgstr "" -"Project-Id-Version: hardinfo puppy\n" +"Project-Id-Version: hardinfo\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-09-01 22:24+0300\n" +"POT-Creation-Date: 2017-08-14 22:23-0500\n" "PO-Revision-Date: \n" "Last-Translator: Sergey Rodin <rodin.s@rambler.ru>\n" "Language-Team: \n" +"Language: ru_UA\n" +"X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" "X-Poedit-Country: UKRAINE\n" "X-Poedit-SourceCharset: utf-8\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" -#: shell/callbacks.c:71 +#. / %d will be latest year of copyright +#: hardinfo/hardinfo.c:49 #, c-format -msgid "Remote: <b>%s</b>" -msgstr "Удалённо: <b>%s</b>" +msgid "" +"Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n" +"\n" +msgstr "" +"Copyright (C) 2003-%d Leandro A. F. Pereira. Смотрите файл COPYING для более " +"подробной информации.\n" +"\n" -#: shell/callbacks.c:117 -msgid "Disconnecting..." -msgstr "Отключение..." - -#: shell/callbacks.c:120 -msgid "Unloading modules..." -msgstr "Выгрузка модулей..." - -#: shell/callbacks.c:123 -msgid "Loading local modules..." -msgstr "Загрузка локальных модулей..." - -#: shell/callbacks.c:130 -#: shell/callbacks.c:162 -#: shell/shell.c:314 -#: shell/shell.c:814 -#: shell/shell.c:1796 -#: modules/benchmark.c:431 -#: modules/benchmark.c:439 -#: hardinfo/util.c:1106 -msgid "Done." -msgstr "Выполнено." +#: hardinfo/hardinfo.c:51 +#, c-format +msgid "" +"Compile-time options:\n" +" Release version: %s (%s)\n" +" BinReloc enabled: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compiled for: %s\n" +msgstr "" +"Настройки компиляции:\n" +" Release version: %s (%s)\n" +" BinReloc включен: %s\n" +" Префикс данных: %s\n" +" Префикс библиотеки: %s\n" +" Скомпилировано на: %s\n" + +#: hardinfo/hardinfo.c:57 hardinfo/hardinfo.c:58 modules/computer.c:605 +#: modules/devices/inputdevices.c:128 modules/devices/pci.c:112 +#: modules/devices/printers.c:138 +msgid "Yes" +msgstr "Да" -#: shell/callbacks.c:142 -msgid "Save Image" -msgstr "Сохранить изображение" +#: hardinfo/hardinfo.c:58 modules/computer.c:605 modules/devices/pci.c:112 +#: modules/devices/printers.c:138 +msgid "No" +msgstr "Нет" -#: shell/callbacks.c:158 -msgid "Saving image..." -msgstr "Сохранение изображения..." +#: hardinfo/hardinfo.c:69 +#, c-format +msgid "" +"Failed to find runtime data.\n" +"\n" +"• Is HardInfo correctly installed?\n" +"• See if %s and %s exists and you have read permission." +msgstr "" +"Не удалось найти данные среды выполнения.\n" +"\n" +"• Правильно ли установлен HardInfo?\n" +"• Проверьте, существуют ли %s и %s и есть ли у вас право на чтение." + +#: hardinfo/hardinfo.c:76 +#, c-format +msgid "" +"Modules:\n" +"%-20s %-15s %-12s\n" +msgstr "" +"Модули:\n" +"%-20s %-15s %-12s\n" + +#: hardinfo/hardinfo.c:77 +msgid "File Name" +msgstr "Имя файла" + +#: hardinfo/hardinfo.c:77 modules/computer.c:534 modules/computer.c:562 +#: modules/computer.c:630 modules/computer/languages.c:104 +#: modules/computer/modules.c:146 modules/devices/arm/processor.c:336 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:116 +#: modules/devices/pci.c:215 modules/devices/sh/processor.c:84 +#: modules/devices/x86/processor.c:455 modules/network.c:326 +msgid "Name" +msgstr "Название" + +#: hardinfo/hardinfo.c:77 modules/computer.c:296 modules/computer.c:505 +#: modules/computer.c:507 modules/computer.c:595 modules/computer.c:603 +#: modules/devices/inputdevices.c:121 +msgid "Version" +msgstr "Версия" + +#: hardinfo/hardinfo.c:124 +#, c-format +msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" +msgstr "Тест ``%s'' неизвестен или библиотека libbenchmark.so не загружена" + +#: hardinfo/hardinfo.c:152 +msgid "Don't know what to do. Exiting." +msgstr "Неизвестно, что делать. Выход." + +#: hardinfo/util.c:104 modules/computer/uptime.c:53 +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d день" +msgstr[1] "%d дня" +msgstr[2] "%d дней" + +#: hardinfo/util.c:105 modules/computer/uptime.c:54 +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d час" +msgstr[1] "%d часа" +msgstr[2] "%d часов" + +#: hardinfo/util.c:106 modules/computer/uptime.c:55 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d минута" +msgstr[1] "%d минуты" +msgstr[2] "%d минут" + +#: hardinfo/util.c:107 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "секунда" +msgstr[1] "секунды" +msgstr[2] "секунд" + +#: hardinfo/util.c:128 +#, c-format +msgid "%.1f B" +msgstr "%.1f Б" + +#: hardinfo/util.c:130 +#, c-format +msgid "%.1f KiB" +msgstr "%.1f КиБ" + +#: hardinfo/util.c:132 +#, c-format +msgid "%.1f MiB" +msgstr "%.1f МиБ" + +#: hardinfo/util.c:134 +#, c-format +msgid "%.1f GiB" +msgstr "%.1f ГиБ" + +#: hardinfo/util.c:136 +#, c-format +msgid "%.1f TiB" +msgstr "%.1f ТиБ" + +#: hardinfo/util.c:138 +#, c-format +msgid "%.1f PiB" +msgstr "%.1f ПиБ" + +#: hardinfo/util.c:361 +msgid "Error" +msgstr "Ошибка" + +#: hardinfo/util.c:361 hardinfo/util.c:377 +msgid "Warning" +msgstr "Предупреждение" -#: shell/callbacks.c:236 -msgid "No context help available." -msgstr "Контекстная справка недоступна" +#: hardinfo/util.c:376 +msgid "Fatal Error" +msgstr "Фатальная ошибка" + +#: hardinfo/util.c:401 +msgid "creates a report and prints to standard output" +msgstr "создаёт отчёт и выводит на стандартный вывод" + +#: hardinfo/util.c:407 +msgid "chooses a report format (text, html)" +msgstr "выбирает формат отчёта (text, html)" + +#: hardinfo/util.c:413 +msgid "run benchmark; requires benchmark.so to be loaded" +msgstr "запуск теста; требует, чтобы benchmark.so был загружен" + +#: hardinfo/util.c:419 +msgid "lists modules" +msgstr "список модулей" + +#: hardinfo/util.c:425 +msgid "specify module to load" +msgstr "укажите модуль для загрузки" + +#: hardinfo/util.c:431 +msgid "automatically load module dependencies" +msgstr "автоматически загружает зависимости модулей" + +#: hardinfo/util.c:438 +msgid "run in XML-RPC server mode" +msgstr "запуск в режиме сервера XML-RPC" + +#: hardinfo/util.c:445 +msgid "shows program version and quit" +msgstr "показывает версию программы и выходит" + +#: hardinfo/util.c:450 +msgid "- System Profiler and Benchmark tool" +msgstr "- Инструмент для тестирования и проверки свойств системы" + +#: hardinfo/util.c:460 +#, c-format +msgid "" +"Unrecognized arguments.\n" +"Try ``%s --help'' for more information.\n" +msgstr "" +"Неизвестные аргументы.\n" +"Используйте `%s --help' для справки.\n" + +#: hardinfo/util.c:526 +#, c-format +msgid "Couldn't find a Web browser to open URL %s." +msgstr "Не удаётся найти веб-браузер для открытия URL %s." -#: shell/callbacks.c:318 +#: hardinfo/util.c:875 +#, c-format +msgid "Module \"%s\" depends on module \"%s\", load it?" +msgstr "Модуль \"%s\" зависит от модуля \"%s\", загрузить его?" + +#: hardinfo/util.c:898 +#, c-format +msgid "Module \"%s\" depends on module \"%s\"." +msgstr "Модуль \"%s\" зависит от модуля \"%s\"." + +#: hardinfo/util.c:943 +#, c-format +msgid "No module could be loaded. Check permissions on \"%s\" and try again." +msgstr "" +"Модули не могут быть загружены. Проверьте разрешения на \"%s\" и попробуйте " +"снова." + +#: hardinfo/util.c:947 +msgid "" +"No module could be loaded. Please use hardinfo -l to list all available " +"modules and try again with a valid module list." +msgstr "" +"Не удается загрузить модули. Пожалуйста, используйте hardinfo -l для " +"получения списка доступных модулей и попробуйте снова с правильным списком " +"модулей." + +#: hardinfo/util.c:1024 +#, c-format +msgid "Scanning: %s..." +msgstr "Сканирование: %s..." + +#: hardinfo/util.c:1034 shell/shell.c:301 shell/shell.c:760 shell/shell.c:1795 +#: modules/benchmark.c:449 modules/benchmark.c:457 +msgid "Done." +msgstr "Выполнено." + +#: shell/callbacks.c:117 #, c-format msgid "%s Module" msgstr "%s модуль" -#: shell/callbacks.c:325 +#: shell/callbacks.c:128 #, c-format msgid "" "Written by %s\n" @@ -68,93 +280,105 @@ msgstr "" "Автор программы %s\n" "Лицензия %s" -#: shell/callbacks.c:339 +#: shell/callbacks.c:142 #, c-format msgid "No about information is associated with the %s module." msgstr "Нет информации о модуле %s." -#: shell/callbacks.c:353 +#: shell/callbacks.c:158 msgid "Author:" msgstr "Автор:" -#: shell/callbacks.c:356 +#: shell/callbacks.c:161 msgid "Contributors:" msgstr "Участники:" -#: shell/callbacks.c:360 +#: shell/callbacks.c:166 msgid "Based on work by:" msgstr "Основан на работах:" -#: shell/callbacks.c:361 +#: shell/callbacks.c:167 msgid "MD5 implementation by Colin Plumb (see md5.c for details)" msgstr "Реализация MD5 от Colin Plumb (см. подробности в md5.c)" -#: shell/callbacks.c:362 +#: shell/callbacks.c:168 msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" msgstr "Реализация SHA1 от Steve Reid (см. подробности в sha1.c) " -#: shell/callbacks.c:363 +#: shell/callbacks.c:169 msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" msgstr "Реализация Blowfish от Paul Kocher (см. подробности в blowfich.c)" -#: shell/callbacks.c:364 +#: shell/callbacks.c:170 msgid "Raytracing benchmark by John Walker (see fbench.c for details)" msgstr "Тест Raytracing от John Walker (см. подробности в fbench.c)" -#: shell/callbacks.c:365 +#: shell/callbacks.c:171 msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" msgstr "Тест FFT Скотта от Robert Ladd (см. подробности в fbench.c)" -#: shell/callbacks.c:366 +#: shell/callbacks.c:172 msgid "Some code partly based on x86cpucaps by Osamu Kayasono" msgstr "Часть кода основана на x86cpucaps от Osamu Kayasono" -#: shell/callbacks.c:367 +#: shell/callbacks.c:173 msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" msgstr "Список поставщиков основан на GtkSysInfo от Pissens Sebastien" -#: shell/callbacks.c:368 +#: shell/callbacks.c:174 msgid "DMI support based on code by Stewart Adam" msgstr "Поддержка DMI основана на коде от Stewart Adam" -#: shell/callbacks.c:369 +#: shell/callbacks.c:175 msgid "SCSI support based on code by Pascal F. Martin" msgstr "Поддержка SCSI основана на коде от Pascal F. Martin" -#: shell/callbacks.c:373 -#, fuzzy -msgid "Jakub Szypulka" -msgstr "Jakub Szypulka" - -#: shell/callbacks.c:374 +#: shell/callbacks.c:180 msgid "Tango Project" msgstr "Проект Tango" -#: shell/callbacks.c:375 +#: shell/callbacks.c:181 msgid "The GNOME Project" msgstr "Проект GNOME" -#: shell/callbacks.c:376 +#: shell/callbacks.c:182 msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" msgstr "VMWare, Inc. (значок USB из VMWare Workstation 6)" -#: shell/callbacks.c:387 +#: shell/callbacks.c:200 msgid "System information and benchmark tool" msgstr "Информация о системе и тестирование" -#: shell/callbacks.c:392 +#: shell/callbacks.c:205 msgid "" -"HardInfo is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.\n" +"HardInfo is free software; you can redistribute it and/or modify it under " +"the terms of the GNU General Public License as published by the Free " +"Software Foundation, version 2.\n" "\n" -"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details.\n" "\n" -"You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 51 " +"Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" -"HardInfo — это свободное программное обеспечение; вы можете распространять его и/или изменять под условиями Общей общественной лицензии GNU, которая была опубликована Фондом свободного программного обеспечения, версия 2.\n" +"HardInfo — это свободное программное обеспечение; вы можете распространять " +"его и/или изменять под условиями Общей общественной лицензии GNU, которая " +"была опубликована Фондом свободного программного обеспечения, версия 2.\n" "\n" -"Эта программа распространятся в надежде, что она будет полезной, но БЕЗ КАКОЙ-ЛИБО ГАРАНТИИ; даже без предполагаемой гарантии ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ. См. подробности в Общественной лицензии GNU.\n" +"Эта программа распространятся в надежде, что она будет полезной, но БЕЗ " +"КАКОЙ-ЛИБО ГАРАНТИИ; даже без предполагаемой гарантии ПРИГОДНОСТИ ДЛЯ " +"КОНКРЕТНЫХ ЦЕЛЕЙ. См. подробности в Общественной лицензии GNU.\n" "\n" -"Вы должны были получить копию Общественной лицензии GNU вместе с этой программой; если нет, пишите в Фонд свободного программного обеспечения, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" +"Вы должны были получить копию Общественной лицензии GNU вместе с этой " +"программой; если нет, пишите в Фонд свободного программного обеспечения, " +"Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" + +#: shell/callbacks.c:220 +msgid "translator-credits" +msgstr "" #: shell/menu.c:35 msgid "_Information" @@ -189,160 +413,132 @@ msgid "_Open..." msgstr "_Открыть..." #: shell/menu.c:58 -msgid "_Connect to..." -msgstr "_Подключиться к..." - -#: shell/menu.c:63 -msgid "_Manage hosts..." -msgstr "_Управление хостами..." - -#: shell/menu.c:68 -msgid "_Local computer" -msgstr "_Локальный компьютер" - -#: shell/menu.c:73 msgid "_Copy to Clipboard" msgstr "_Копировать в буфер" -#: shell/menu.c:74 +#: shell/menu.c:59 msgid "Copy to clipboard" msgstr "Копировать в буфер обмена" -#: shell/menu.c:78 -msgid "_Save image as..." -msgstr "_Сохранить изображение как..." - -#: shell/menu.c:83 +#: shell/menu.c:63 msgid "_Refresh" msgstr "_Обновить" -#: shell/menu.c:88 -msgid "Contents" -msgstr "Содержание" - -#: shell/menu.c:93 -#: shell/shell.c:1790 -#: shell/shell.c:1807 -msgid "Context help" -msgstr "Контекстная справка" - -#: shell/menu.c:98 +#: shell/menu.c:68 msgid "_Open HardInfo Web Site" msgstr "_Открыть веб-сайт Hardinfo" -#: shell/menu.c:103 +#: shell/menu.c:73 msgid "_Report bug" msgstr "_Сообщить об ошибке" -#: shell/menu.c:108 -msgid "_Donate to the project" -msgstr "_Поддержать проект" - -#: shell/menu.c:113 +#: shell/menu.c:78 msgid "_About HardInfo" msgstr "_О HardInfo" -#: shell/menu.c:114 +#: shell/menu.c:79 msgid "Displays program version information" msgstr "Показывает информацию о версии программы" -#: shell/menu.c:118 +#: shell/menu.c:83 msgid "_Quit" msgstr "_Выход" -#: shell/menu.c:125 +#: shell/menu.c:90 msgid "_Side Pane" msgstr "_Боковая панель" -#: shell/menu.c:126 +#: shell/menu.c:91 msgid "Toggles side pane visibility" msgstr "Управляет боковой панелью" -#: shell/menu.c:129 +#: shell/menu.c:94 msgid "_Toolbar" msgstr "_Панель инструментов" -#: shell/menu.c:133 -msgid "_Accept connections" -msgstr "_Принимать подключения" - -#: shell/report.c:492 +#: shell/report.c:494 shell/report.c:502 msgid "Save File" msgstr "Сохранить файл" -#: shell/report.c:616 +#: shell/report.c:629 msgid "Cannot create ReportContext. Programming bug?" msgstr "Не могу создать ReportContext. Ошибка программирования?" -#: shell/report.c:634 +#: shell/report.c:648 msgid "Open the report with your web browser?" msgstr "Открыть отчёт в веб-браузере?" -#: shell/report.c:662 +#: shell/report.c:682 msgid "Generating report..." msgstr "Создаётся отчёт..." -#: shell/report.c:672 +#: shell/report.c:692 msgid "Report saved." msgstr "Отчёт сохранён." -#: shell/report.c:674 +#: shell/report.c:694 msgid "Error while creating the report." msgstr "Ошибка во время создания отчёта." -#: shell/report.c:776 +#: shell/report.c:796 msgid "Generate Report" msgstr "Создать отчёт" -#: shell/report.c:793 +#: shell/report.c:821 msgid "" "<big><b>Generate Report</b></big>\n" "Please choose the information that you wish to view in your report:" msgstr "" "<big><b>Создать отчёт</b></big>\n" -"Пожалуйста выберите информацию, которую вы хотите видеть в отчёте:" +"Пожалуйста выберите информацию для отображения в отчёте:" -#: shell/report.c:853 +#: shell/report.c:893 msgid "Select _None" msgstr "Выбор: нет" -#: shell/report.c:860 +#: shell/report.c:904 msgid "Select _All" msgstr "Выбор: все" -#: shell/report.c:878 +#: shell/report.c:929 shell/syncmanager.c:748 +msgid "_Cancel" +msgstr "" + +#: shell/report.c:939 msgid "_Generate" msgstr "_Сгенерировать" -#: shell/shell.c:407 +#: shell/shell.c:402 #, c-format msgid "%s - System Information" msgstr "%s - Информация о системе" -#: shell/shell.c:412 +#: shell/shell.c:407 msgid "System Information" msgstr "Информация о системе" -#: shell/shell.c:801 +#: shell/shell.c:747 msgid "Loading modules..." msgstr "Загрузка модулей..." -#: shell/shell.c:1650 +#: shell/shell.c:1660 #, c-format msgid "<b>%s → Summary</b>" msgstr "<b>%s → </b>" -#: shell/shell.c:1758 +#: shell/shell.c:1769 msgid "Updating..." msgstr "Обновление..." #: shell/syncmanager.c:69 msgid "" "<big><b>Synchronize with Central Database</b></big>\n" -"The following information may be synchronized with the HardInfo central database." +"The following information may be synchronized with the HardInfo central " +"database." msgstr "" "<big><b>Синхронизировать с центральной базой данных</b></big>\n" -"Следующая информация может быть синхронизирована с центральной базой данных HardInfo." +"Следующая информация может быть синхронизирована с центральной базой данных " +"HardInfo." #: shell/syncmanager.c:72 msgid "" @@ -353,1092 +549,1742 @@ msgstr "" "Это может занять какое-то время." #: shell/syncmanager.c:132 -msgid "HardInfo was compiled without libsoup support. (Network Updater requires it.)" -msgstr "HardInfo был скомпилирован без поддержки libsoup. (Нужен для сетевого обновления.)" +msgid "" +"HardInfo was compiled without libsoup support. (Network Updater requires it.)" +msgstr "" +"HardInfo был скомпилирован без поддержки библиотеки libsoup. (Нужна для " +"сетевого обновления.)" -#: shell/syncmanager.c:161 -#: shell/syncmanager.c:185 +#: shell/syncmanager.c:161 shell/syncmanager.c:189 #, c-format msgid "%s (error #%d)" msgstr "%s (ошибка #%d)" -#: shell/syncmanager.c:170 -#: shell/syncmanager.c:194 +#: shell/syncmanager.c:170 shell/syncmanager.c:198 msgid "Could not parse XML-RPC response" -msgstr "Не могу разобрать XML-RPC ответ" +msgstr "Не могу разобрать ответ XML-RPC" -#: shell/syncmanager.c:267 +#: shell/syncmanager.c:280 #, c-format -msgid "Server says it supports API version %d, but this version of HardInfo only supports API version %d." -msgstr "Сервер говорит, что поддерживает API версии %d, но эта версия HardInfo поддерживает API только версии %d." +msgid "" +"Server says it supports API version %d, but this version of HardInfo only " +"supports API version %d." +msgstr "" +"Сервер говорит, что поддерживает API версии %d, но эта версия HardInfo " +"поддерживает API только версии %d." -#: shell/syncmanager.c:362 +#: shell/syncmanager.c:375 msgid "Contacting HardInfo Central Database" msgstr "Подключение к центральной базе данных Hardinfo" -#: shell/syncmanager.c:363 +#: shell/syncmanager.c:376 msgid "Cleaning up" msgstr "Очистка" -#: shell/syncmanager.c:480 -#, c-format -msgid "<s>%s</s> <i>(canceled)</i>" -msgstr "<s>%s</s> <i>(отменен)</i>" +#: shell/syncmanager.c:493 +msgid "(canceled)" +msgstr "(отменен)" -#: shell/syncmanager.c:497 -#, c-format -msgid "<b><s>%s</s></b> <i>(failed)</i>" -msgstr "<b><s>%s</s></b> <i>(ошибка)</i>" +#: shell/syncmanager.c:510 +msgid "(failed)" +msgstr "(ошибка)" -#: shell/syncmanager.c:509 +#: shell/syncmanager.c:521 #, c-format msgid "" -"Failed while performing \"%s\". Please file a bug report if this problem persists. (Use the Help→Report bug option.)\n" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)\n" "\n" "Details: %s" msgstr "" -"Ошибка во время выполнения \"%s\". Если проблема будет повторяться, пожалуйста, сообщите об ошибке. (Используйте опцию в меню Справка.)\n" +"Ошибка во время выполнения \"%s\". Если проблема будет повторяться, " +"пожалуйста, сообщите об ошибке. (Используйте опцию в меню Справка.)\n" "\n" "Подробности: %s" -#: shell/syncmanager.c:518 +#: shell/syncmanager.c:530 #, c-format -msgid "Failed while performing \"%s\". Please file a bug report if this problem persists. (Use the Help→Report bug option.)" -msgstr "Ошибка во время выполнения \"%s\". Если проблема будет повторяться, пожалуйста, сообщите об ошибке. (Используйте опцию в меню Справка.)" +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)" +msgstr "" +"Ошибка во время выполнения \"%s\". Если проблема будет повторяться, " +"пожалуйста, сообщите об ошибке. (Используйте опцию в меню Справка.)" -#: shell/syncmanager.c:646 +#: shell/syncmanager.c:658 msgid "Network Updater" msgstr "Сетевое обновление" -#: shell/syncmanager.c:727 +#: shell/syncmanager.c:757 msgid "_Synchronize" msgstr "_Синхронизировать" -#: modules/benchmark.c:50 +#: modules/benchmark.c:52 #, fuzzy msgid "CPU Blowfish" msgstr "ЦПУ МГц" -#: modules/benchmark.c:51 +#: modules/benchmark.c:53 #, fuzzy msgid "CPU CryptoHash" msgstr "ЦПУ МГц" -#: modules/benchmark.c:52 +#: modules/benchmark.c:54 #, fuzzy msgid "CPU Fibonacci" msgstr "ЦПУ МГц" -#: modules/benchmark.c:53 +#: modules/benchmark.c:55 #, fuzzy msgid "CPU N-Queens" msgstr "ЦПУ МГц" -#: modules/benchmark.c:54 +#: modules/benchmark.c:56 +msgid "CPU Zlib" +msgstr "" + +#: modules/benchmark.c:57 msgid "FPU FFT" msgstr "" -#: modules/benchmark.c:55 +#: modules/benchmark.c:58 msgid "FPU Raytracing" msgstr "" -#: modules/benchmark.c:56 +#: modules/benchmark.c:60 msgid "GPU Drawing" msgstr "" -#: modules/benchmark.c:222 -#, c-format -msgid "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"<big><b>This Machine</b></big>=%.3f|%s MHz\n" -"%s" -msgstr "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=Частота процессора\n" -"ColumnTitle$Progress=Результаты\n" -"ColumnTitle$TextValue=Процессор\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"<big><b>Эта машина</b></big>=%.3f|%s MHz\n" -"%s" +#: modules/benchmark.c:239 modules/benchmark.c:255 +msgid "CPU Config" +msgstr "Конфигурация процессора" -#: modules/benchmark.c:235 -#, c-format -msgid "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=CPU Clock\n" -"ColumnTitle$Progress=Results\n" -"ColumnTitle$TextValue=CPU\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"%s" -msgstr "" -"[$ShellParam$]\n" -"Zebra=1\n" -"OrderType=%d\n" -"ViewType=3\n" -"ColumnTitle$Extra1=Частота процессора\n" -"ColumnTitle$Progress=Результаты\n" -"ColumnTitle$TextValue=Процессор\n" -"ShowColumnHeaders=true\n" -"[%s]\n" -"%s" +#: modules/benchmark.c:239 modules/benchmark.c:255 +msgid "Results" +msgstr "Результаты" -#: modules/benchmark.c:363 +#: modules/benchmark.c:239 modules/benchmark.c:255 modules/computer.c:751 +#: modules/devices/sparc/processor.c:75 +msgid "CPU" +msgstr "Процессор" + +#: modules/benchmark.c:381 #, c-format msgid "Benchmarking: <b>%s</b>." msgstr "Тестирование: <b>%s</b>" -#: modules/benchmark.c:377 +#: modules/benchmark.c:395 msgid "Benchmarking. Please do not move your mouse or press any keys." msgstr "Тестирование. Пожалуйста, не двигайте мышь и не нажимайте на кнопки." -#: modules/benchmark.c:381 +#: modules/benchmark.c:399 msgid "Cancel" msgstr "Отмена" -#: modules/benchmark.c:511 +#: modules/benchmark.c:536 msgid "Results in MiB/second. Higher is better." msgstr "Результаты в МиБ/сек. Чем выше, тем лучше." -#: modules/benchmark.c:514 +#: modules/benchmark.c:540 msgid "Results in HIMarks. Higher is better." msgstr "Результаты в HIMarks. Чем выше, тем лучше." -#: modules/benchmark.c:521 +#: modules/benchmark.c:547 msgid "Results in seconds. Lower is better." msgstr "Результат в секундах. Чем ниже, тем лучше." -#: modules/benchmark.c:529 +#: modules/benchmark.c:555 msgid "Benchmarks" msgstr "Тесты" -#: modules/benchmark.c:547 +#: modules/benchmark.c:573 msgid "Perform tasks and compare with other systems" msgstr "Выполняет задания и сравнивает с другими системами" -#: modules/benchmark.c:634 +#: modules/benchmark.c:663 msgid "Send benchmark results" msgstr "Отправить результаты тестирования" -#: modules/benchmark.c:639 +#: modules/benchmark.c:668 msgid "Receive benchmark results" msgstr "Принять результаты тестирования" -#: modules/computer.c:68 +#: modules/computer/alsa.c:26 modules/computer.c:489 +msgid "Audio Devices" +msgstr "Аудио устройства" + +#: modules/computer/alsa.c:34 +msgid "Audio Adapter" +msgstr "Звуковая карта" + +#: modules/computer/boots.c:33 modules/computer.c:73 modules/computer.c:546 +msgid "Boots" +msgstr "Загрузки" + +#: modules/computer.c:70 msgid "Summary" msgstr "Общая информация" -#: modules/computer.c:69 +#: modules/computer.c:71 modules/computer.c:476 modules/computer.c:750 msgid "Operating System" msgstr "Операционная система" -#: modules/computer.c:70 +#: modules/computer.c:72 msgid "Kernel Modules" msgstr "Модули ядра" -#: modules/computer.c:71 -msgid "Boots" -msgstr "Загрузки" - -#: modules/computer.c:72 +#: modules/computer.c:74 msgid "Languages" msgstr "Языки" -#: modules/computer.c:73 +#: modules/computer.c:75 msgid "Filesystems" msgstr "Файловые системы" -#: modules/computer.c:74 +#: modules/computer.c:76 modules/computer.c:481 modules/computer.c:590 msgid "Display" msgstr "Дисплей" -#: modules/computer.c:75 +#: modules/computer.c:77 modules/computer/environment.c:32 msgid "Environment Variables" msgstr "Переменные среды" -#: modules/computer.c:77 +#: modules/computer.c:79 msgid "Development" msgstr "Разработка" -#: modules/computer.c:79 +#: modules/computer.c:81 modules/computer.c:617 msgid "Users" msgstr "Пользователи" -#: modules/computer.c:80 +#: modules/computer.c:82 msgid "Groups" msgstr "Группы" -#: modules/computer.c:104 +#: modules/computer.c:104 modules/computer.c:473 modules/devices.c:96 +#: modules/devices/pci.c:149 +msgid "Memory" +msgstr "Память" + +#: modules/computer.c:106 #, c-format msgid "%dMB (%dMB used)" -msgstr "%dМб (%dМб занято)" +msgstr "%d Мб (%d Мб занято)" + +#: modules/computer.c:108 modules/computer.c:520 +msgid "Uptime" +msgstr "Время работы" + +#: modules/computer.c:110 modules/computer.c:478 +msgid "Date/Time" +msgstr "Дата/время" -#: modules/computer.c:200 +# Должно совпадать с таким-же полем в строке 430 computer.c +#: modules/computer.c:115 modules/computer.c:521 +msgid "Load Average" +msgstr "Средняя нагрузка" + +#: modules/computer.c:117 modules/computer.c:522 +msgid "Available entropy in /dev/random" +msgstr "Доступная энтропия в /dev/random" + +#: modules/computer.c:203 msgid "Scripting Languages" msgstr "Скриптовые языки" -#: modules/computer.c:201 -msgid "CPython" +#: modules/computer.c:204 +msgid "Gambas3 (gbr3)" msgstr "" -#: modules/computer.c:202 -#, fuzzy +#: modules/computer.c:205 +msgid "Python" +msgstr "" + +#: modules/computer.c:206 +msgid "Python2" +msgstr "" + +#: modules/computer.c:207 +msgid "Python3" +msgstr "" + +#: modules/computer.c:208 msgid "Perl" -msgstr "Perl" +msgstr "" -#: modules/computer.c:203 +#: modules/computer.c:209 +msgid "Perl6 (VM)" +msgstr "" + +#: modules/computer.c:210 +msgid "Perl6" +msgstr "" + +#: modules/computer.c:211 msgid "PHP" msgstr "" -#: modules/computer.c:204 +#: modules/computer.c:212 msgid "Ruby" msgstr "" -#: modules/computer.c:205 +#: modules/computer.c:213 msgid "Bash" msgstr "" -#: modules/computer.c:206 +#: modules/computer.c:214 msgid "Compilers" msgstr "Компиляторы" -#: modules/computer.c:207 +#: modules/computer.c:215 msgid "C (GCC)" msgstr "" -#: modules/computer.c:208 +#: modules/computer.c:216 +msgid "C (Clang)" +msgstr "" + +#: modules/computer.c:217 +msgid "D (dmd)" +msgstr "" + +#: modules/computer.c:218 +msgid "Gambas3 (gbc3)" +msgstr "" + +#: modules/computer.c:219 #, fuzzy msgid "Java" msgstr "Язык программирования Java" -#: modules/computer.c:209 +#: modules/computer.c:220 #, fuzzy msgid "CSharp (Mono, old)" msgstr "Найдена старая установка %s." -#: modules/computer.c:210 +#: modules/computer.c:221 #, fuzzy msgid "CSharp (Mono)" msgstr "Моноширинный шрифт" -#: modules/computer.c:211 +#: modules/computer.c:222 #, fuzzy msgid "Vala" msgstr "базы данных vala" -#: modules/computer.c:212 +#: modules/computer.c:223 msgid "Haskell (GHC)" msgstr "" -#: modules/computer.c:213 +#: modules/computer.c:224 msgid "FreePascal" msgstr "" -#: modules/computer.c:214 +#: modules/computer.c:225 +msgid "Go" +msgstr "" + +#: modules/computer.c:226 msgid "Tools" msgstr "Инструменты" -#: modules/computer.c:262 -#, c-format -msgid "%s=Not found\n" -msgstr "%s=Не найдено\n" +#: modules/computer.c:227 +msgid "make" +msgstr "" + +#: modules/computer.c:228 +msgid "GDB" +msgstr "" + +#: modules/computer.c:229 +msgid "strace" +msgstr "" + +#: modules/computer.c:230 +msgid "valgrind" +msgstr "" -#: modules/computer.c:265 +#: modules/computer.c:231 +msgid "QMake" +msgstr "" + +#: modules/computer.c:232 +msgid "CMake" +msgstr "" + +#: modules/computer.c:233 +msgid "Gambas3 IDE" +msgstr "" + +#: modules/computer.c:274 +msgid "Not found" +msgstr "Не найдено" + +#: modules/computer.c:279 #, c-format msgid "Detecting version: %s" msgstr "Определена версия: %s" -#: modules/computer.c:276 -#, c-format -msgid "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Program\n" -"ColumnTitle$Value=Version\n" -"ShowColumnHeaders=true\n" -"%s" +#: modules/computer.c:296 +msgid "Program" +msgstr "Программа" + +#: modules/computer.c:308 +msgid "Invalid chassis type (0)" msgstr "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Программа\n" -"ColumnTitle$Value=Версия\n" -"ShowColumnHeaders=true\n" -"%s" -#: modules/computer.c:356 -msgid "Physical machine" -msgstr "Физическая машина" +#: modules/computer.c:309 modules/computer.c:310 +msgid "Unknown chassis type" +msgstr "" + +#: modules/computer.c:311 +msgid "Desktop" +msgstr "Настольный компьютер" + +#: modules/computer.c:312 +msgid "Low-profile Desktop" +msgstr "Низкопрофильный компьютер" + +#: modules/computer.c:313 +msgid "Pizza Box" +msgstr "" + +#: modules/computer.c:314 +msgid "Mini Tower" +msgstr "" + +#: modules/computer.c:315 +msgid "Tower" +msgstr "" + +#: modules/computer.c:316 +msgid "Portable" +msgstr "Портативный компьютер" + +#: modules/computer.c:317 modules/computer.c:341 modules/computer.c:350 +#: modules/computer.c:372 +msgid "Laptop" +msgstr "" + +#: modules/computer.c:318 +msgid "Notebook" +msgstr "" + +#: modules/computer.c:319 +msgid "Handheld" +msgstr "" + +#: modules/computer.c:320 +msgid "Docking Station" +msgstr "" + +#: modules/computer.c:321 +msgid "All-in-one" +msgstr "" + +#: modules/computer.c:322 +msgid "Subnotebook" +msgstr "" + +#: modules/computer.c:323 +msgid "Space-saving" +msgstr "" + +#: modules/computer.c:324 +msgid "Lunch Box" +msgstr "" + +#: modules/computer.c:325 +msgid "Main Server Chassis" +msgstr "" + +#: modules/computer.c:326 +msgid "Expansion Chassis" +msgstr "" + +#: modules/computer.c:327 +msgid "Sub Chassis" +msgstr "" + +#: modules/computer.c:328 +msgid "Bus Expansion Chassis" +msgstr "" + +#: modules/computer.c:329 +msgid "Peripheral Chassis" +msgstr "" + +#: modules/computer.c:330 +msgid "RAID Chassis" +msgstr "" + +#: modules/computer.c:331 +msgid "Rack Mount Chassis" +msgstr "" + +#: modules/computer.c:332 +msgid "Sealed-case PC" +msgstr "" + +#. /proc/apm +#. FIXME: use dmidecode if available to get chassis type +#: modules/computer.c:386 +msgid "Unknown physical machine type" +msgstr "" + +#: modules/computer.c:470 modules/computer.c:709 +msgid "Computer" +msgstr "Компьютер" + +#: modules/computer.c:471 modules/devices/alpha/processor.c:87 +#: modules/devices/arm/processor.c:236 modules/devices.c:95 +#: modules/devices/ia64/processor.c:159 modules/devices/m68k/processor.c:83 +#: modules/devices/mips/processor.c:74 modules/devices/parisc/processor.c:154 +#: modules/devices/ppc/processor.c:157 modules/devices/riscv/processor.c:181 +#: modules/devices/s390/processor.c:131 modules/devices/sh/processor.c:83 +#: modules/devices/sparc/processor.c:74 modules/devices/x86/processor.c:409 +msgid "Processor" +msgstr "Процессор" + +#: modules/computer.c:474 +msgid "Machine Type" +msgstr "Тип машины" -# Memory и Date/Time не переводить — не будут обновляться! -#: modules/computer.c:373 +#: modules/computer.c:477 modules/computer.c:514 +msgid "User Name" +msgstr "Пользователь" + +#: modules/computer.c:482 modules/computer.c:591 +msgid "Resolution" +msgstr "Разрешение" + +#: modules/computer.c:483 modules/computer.c:592 #, c-format -msgid "" -"[$ShellParam$]\n" -"UpdateInterval$Memory=1000\n" -"UpdateInterval$Date/Time=1000\n" -"#ReloadInterval=5000\n" -"[Computer]\n" -"Processor=%s\n" -"Memory=...\n" -"Machine Type=%s\n" -"Operating System=%s\n" -"User Name=%s\n" -"Date/Time=...\n" -"[Display]\n" -"Resolution=%dx%d pixels\n" -"OpenGL Renderer=%s\n" -"X11 Vendor=%s\n" -"\n" -"%s\n" -"[Input Devices]\n" -"%s\n" -"\n" -"%s\n" -"\n" -"%s\n" +msgid "%dx%d pixels" +msgstr "%dx%d пикселей" + +#: modules/computer.c:485 +msgid "OpenGL Renderer" +msgstr "Рендер OpenGL" + +#: modules/computer.c:486 +msgid "X11 Vendor" +msgstr "Поставщик X11" + +#: modules/computer.c:491 modules/devices.c:102 +msgid "Input Devices" +msgstr "Устройства ввода" + +#: modules/computer.c:493 modules/computer.c:752 modules/devices.c:99 +msgid "Printers" +msgstr "Принтеры" + +#: modules/computer.c:495 modules/computer.c:752 modules/devices.c:103 +msgid "Storage" +msgstr "Устройства хранения" + +#: modules/computer.c:506 +msgid "Kernel" +msgstr "Ядро" + +#: modules/computer.c:508 +msgid "C Library" +msgstr "Библиотека C" + +#: modules/computer.c:509 +msgid "Distribution" +msgstr "Дистрибутив" + +#: modules/computer.c:512 +msgid "Current Session" +msgstr "Текущая сессия" + +#: modules/computer.c:513 +msgid "Computer Name" +msgstr "Имя компьютера" + +#: modules/computer.c:515 modules/computer/languages.c:108 +msgid "Language" +msgstr "Язык" + +#: modules/computer.c:516 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "Домашний каталог" + +#: modules/computer.c:519 modules/devices/usb.c:87 modules/devices/usb.c:234 +#: modules/devices/usb.c:351 +msgid "Misc" +msgstr "Разное" + +#: modules/computer.c:532 +msgid "Loaded Modules" msgstr "" -"[$ShellParam$]\n" -"UpdateInterval$Память=1000\n" -"UpdateInterval$Date/Time=1000\n" -"#ReloadInterval=5000\n" -"[Компьютер]\n" -"Процессор=%s\n" -"Память=...\n" -"Тип машины=%s\n" -"Операционная система=%s\n" -"Пользователь=%s\n" -"Date/Time=...\n" -"[Дисплей]\n" -"Разрешение=%dx%d пикс.\n" -"Рендер OpenGL=%s\n" -"Поставщик X11=%s\n" -"\n" -"%s\n" -"[Устройства ввода]\n" -"%s\n" -"\n" -"%s\n" -"\n" -"%s\n" -# Uptime, Load Average и Available entropy in /dev/random не переводить — не будут обновляться! -#: modules/computer.c:415 +#: modules/computer.c:535 modules/computer/modules.c:145 +#: modules/computer/modules.c:147 modules/devices/arm/processor.c:337 +#: modules/devices.c:559 modules/devices/x86/processor.c:456 +msgid "Description" +msgstr "Описание" + +#: modules/computer.c:548 +msgid "Date & Time" +msgstr "Дата и время" + +#: modules/computer.c:549 +msgid "Kernel Version" +msgstr "Версия ядра" + +#: modules/computer.c:559 +msgid "Available Languages" +msgstr "" + +#: modules/computer.c:561 +msgid "Language Code" +msgstr "Код языка" + +#: modules/computer.c:573 +msgid "Mounted File Systems" +msgstr "" + +#: modules/computer.c:575 modules/computer/filesystem.c:85 +msgid "Mount Point" +msgstr "Точка монтирования" + +#: modules/computer.c:576 +msgid "Usage" +msgstr "Использование" + +#: modules/computer.c:577 +msgid "Device" +msgstr "Устройство" + +#: modules/computer.c:594 modules/computer.c:601 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:119 +#: modules/devices/pci.c:225 modules/devices/usb.c:349 +#: modules/devices/x86/processor.c:416 +msgid "Vendor" +msgstr "Производитель" + +#: modules/computer.c:598 +msgid "Monitors" +msgstr "Монитор" + +#: modules/computer.c:600 +msgid "OpenGL" +msgstr "" + +#: modules/computer.c:602 +msgid "Renderer" +msgstr "Рендер" + +#: modules/computer.c:604 +msgid "Direct Rendering" +msgstr "Графическое ускорение" + +#: modules/computer.c:608 +msgid "Extensions" +msgstr "Расширения" + +#: modules/computer.c:628 +msgid "Group" +msgstr "" + +#: modules/computer.c:631 modules/computer/users.c:49 +msgid "Group ID" +msgstr "ID группы" + +#: modules/computer.c:751 +msgid "RAM" +msgstr "Оперативная память" + +#: modules/computer.c:751 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "Материнская плата" + +#: modules/computer.c:751 +msgid "Graphics" +msgstr "Графика" + +#: modules/computer.c:752 +msgid "Audio" +msgstr "Аудио" + +#: modules/computer.c:807 +msgid "Gathers high-level computer information" +msgstr "Собирает высокоуровневую информацию о компьютере" + +#: modules/computer/display.c:122 #, c-format -msgid "" -"[$ShellParam$]\n" -"UpdateInterval$Uptime=10000\n" -"UpdateInterval$Load Average=1000\n" -"UpdateInterval$Available entropy in /dev/random=1000\n" -"[Version]\n" -"Kernel=%s\n" -"Version=%s\n" -"C Library=%s\n" -"Distribution=%s\n" -"[Current Session]\n" -"Computer Name=%s\n" -"User Name=%s\n" -"#Language=%s\n" -"Home Directory=%s\n" -"Desktop Environment=%s\n" -"[Misc]\n" -"Uptime=...\n" -"Load Average=...\n" -"Available entropy in /dev/random=..." +msgid "Monitor %d=%dx%d pixels\n" +msgstr "Монитор %d=%dx%d пикселей\n" + +#: modules/computer/filesystem.c:83 +msgid "Filesystem" +msgstr "Файловая система" + +#: modules/computer/filesystem.c:84 +msgid "Mounted As" +msgstr "Смонтировано" + +#: modules/computer/filesystem.c:84 +msgid "Read-Write" +msgstr "Для чтения и записи" + +#: modules/computer/filesystem.c:84 +msgid "Read-Only" +msgstr "Только для чтения" + +#: modules/computer/filesystem.c:86 modules/devices/spd-decode.c:1510 +msgid "Size" +msgstr "Размер" + +#: modules/computer/filesystem.c:87 +msgid "Used" +msgstr "Занято" + +#: modules/computer/filesystem.c:88 +msgid "Available" +msgstr "Свободно" + +#: modules/computer/languages.c:103 +msgid "Locale Information" +msgstr "Информация о языке" + +#: modules/computer/languages.c:105 +msgid "Source" +msgstr "Источник" + +#: modules/computer/languages.c:106 +msgid "Address" +msgstr "Адрес" + +#: modules/computer/languages.c:107 +msgid "E-mail" +msgstr "Электронная почта" + +#: modules/computer/languages.c:109 +msgid "Territory" +msgstr "Территория" + +#: modules/computer/languages.c:110 modules/devices/arm/processor.c:250 +#: modules/devices/ia64/processor.c:166 modules/devices/ppc/processor.c:159 +#: modules/devices/usb.c:236 +msgid "Revision" +msgstr "Ревизия" + +#: modules/computer/languages.c:111 +msgid "Date" +msgstr "Дата" + +#: modules/computer/languages.c:112 +msgid "Codeset" +msgstr "Кодировка" + +#: modules/computer/loadavg.c:64 +msgid "Couldn't obtain load average" +msgstr "Не удается установить среднюю загрузку" + +#: modules/computer/modules.c:125 modules/computer/modules.c:126 +#: modules/computer/modules.c:127 modules/computer/modules.c:128 +#: modules/computer/modules.c:129 +msgid "(Not available)" +msgstr "(Недоступно)" + +#: modules/computer/modules.c:142 +msgid "Module Information" +msgstr "Информация о модуле" + +#: modules/computer/modules.c:143 +msgid "Path" +msgstr "Путь" + +#: modules/computer/modules.c:144 +msgid "Used Memory" +msgstr "Обьем занимаемой памяти" + +#: modules/computer/modules.c:144 +msgid "KiB" +msgstr "КиБ" + +#: modules/computer/modules.c:148 +msgid "Version Magic" +msgstr "Версия" + +#: modules/computer/modules.c:149 +msgid "Copyright" +msgstr "Авторское право" + +#: modules/computer/modules.c:150 +msgid "Author" +msgstr "Автор" + +#: modules/computer/modules.c:151 +msgid "License" +msgstr "Лицензия" + +#: modules/computer/modules.c:158 +msgid "Dependencies" +msgstr "Зависимости" + +#: modules/computer/os.c:35 modules/computer/os.c:36 modules/computer/os.c:37 +#: modules/computer/os.c:38 +msgid "GNU C Library" msgstr "" -"[$ShellParam$]\n" -"UpdateInterval$Uptime=10000\n" -"UpdateInterval$Load Average=1000\n" -"UpdateInterval$Available entropy in /dev/random=1000\n" -"[Версия]\n" -"Ядро=%s\n" -"Версия=%s\n" -"Библиотека C=%s\n" -"Дистрибутив=%s\n" -"[Текущая сессия]\n" -"Имя компьютера=%s\n" -"Пользователь=%s\n" -"#Язык=%s\n" -"Домашний каталог=%s\n" -"Окружение рабочего стола=%s\n" -"[Разное]\n" -"Uptime=...\n" -"Load Average=...\n" -"Available entropy in /dev/random=..." - -#: modules/computer.c:444 + +#: modules/computer/os.c:39 +msgid "uClibc or uClibc-ng" +msgstr "" + +#: modules/computer/os.c:40 +msgid "diet libc" +msgstr "" + +#: modules/computer/os.c:78 modules/computer/os.c:234 modules/computer/os.c:359 +#: modules/devices.c:333 modules/devices.c:387 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 +msgid "Unknown" +msgstr "Неизвестно" + +#: modules/computer/os.c:112 modules/computer/os.c:115 +msgid "GNOME Shell " +msgstr "" + +#: modules/computer/os.c:123 modules/computer/os.c:126 +msgid "Version: " +msgstr "" + +#: modules/computer/os.c:157 #, c-format -msgid "" -"[Loaded Modules]\n" -"%s[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Description\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[Loaded Modules]\n" -"%s[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Имя\n" -"ColumnTitle$Value=Описание\n" -"ShowColumnHeaders=true\n" - -#: modules/computer.c:455 +msgid "Unknown (Window Manager: %s)" +msgstr "Неизвестно (Оконный менеджер: %s)" + +#. /{desktop environment} on {session type} +#: modules/computer/os.c:168 +#, c-format +msgid "%s on %s" +msgstr "%s на %s" + +#: modules/computer/os.c:232 +msgid "Terminal" +msgstr "Терминал" + +#. /bits of entropy for rng (0) +#: modules/computer/os.c:241 +msgid "(None or not available)" +msgstr "(Нет или недоступно)" + +#. /bits of entropy for rng (low/poor value) +#: modules/computer/os.c:242 +#, c-format +msgid "%d bits (low)" +msgstr "%d бит (низкая)" + +#. /bits of entropy for rng (medium value) +#: modules/computer/os.c:243 +#, c-format +msgid "%d bits (medium)" +msgstr "%d бит (средняя)" + +#. /bits of entropy for rng (high/good value) +#: modules/computer/os.c:244 +#, c-format +msgid "%d bits (healthy)" +msgstr "%d бит (огромная)" + +#: modules/computer/os.c:279 modules/devices/usb.c:48 modules/devices/usb.c:307 +#: modules/devices/usb.c:310 modules/network/net.c:442 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "(Неизвестно)" + +#: modules/computer/users.c:47 +msgid "User Information" +msgstr "Информация о пользователе" + +#: modules/computer/users.c:48 +msgid "User ID" +msgstr "ID пользователя" + +#: modules/computer/users.c:51 +msgid "Default Shell" +msgstr "Оболочка по умолчанию" + +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:141 +#: modules/devices/devicetree.c:176 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/ia64/processor.c:165 modules/devices/m68k/processor.c:84 +#: modules/devices/mips/processor.c:75 modules/devices/parisc/processor.c:155 +#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 +#: modules/devices/s390/processor.c:132 modules/devices/spd-decode.c:1510 +msgid "Model" +msgstr "Модель" + +#: modules/devices/alpha/processor.c:89 +msgid "Platform String" +msgstr "Строка платформы" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/pci.c:108 modules/devices/ppc/processor.c:160 +#: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 +#: modules/devices/x86/processor.c:420 +msgid "Frequency" +msgstr "Частота" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/arm/processor.c:365 modules/devices.c:299 +#: modules/devices.c:307 modules/devices.c:335 +#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 +#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 +#: modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/pci.c:108 +#: modules/devices/ppc/processor.c:160 modules/devices/ppc/processor.c:187 +#: modules/devices/riscv/processor.c:186 modules/devices/riscv/processor.c:214 +#: modules/devices/s390/processor.c:160 modules/devices/sh/processor.c:87 +#: modules/devices/sh/processor.c:88 modules/devices/sh/processor.c:89 +#: modules/devices/x86/processor.c:420 modules/devices/x86/processor.c:479 +msgid "MHz" +msgstr "МГц" + +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:241 +#: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 +#: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 +#: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:421 +msgid "BogoMips" +msgstr "" + +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:242 +#: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 +#: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 +#: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 +#: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:422 +msgid "Byte Order" +msgstr "Порядок байтов" + +#. /hw_cap +#. /flag:swp +#: modules/devices/arm/arm_data.c:42 +msgctxt "arm-flag" +msgid "SWP instruction (atomic read-modify-write)" +msgstr "Инструкция SWP (атомарное чтение-изменение-запись)" + +#. /flag:half +#: modules/devices/arm/arm_data.c:43 +msgctxt "arm-flag" +msgid "Half-word loads and stores" +msgstr "Загрузка и хранение полуслова" + +#. /flag:thumb +#: modules/devices/arm/arm_data.c:44 +msgctxt "arm-flag" +msgid "Thumb (16-bit instruction set)" +msgstr "Thumb (набор 16-битных инструкций)" + +#. /flag:26bit +#: modules/devices/arm/arm_data.c:45 +msgctxt "arm-flag" +msgid "26-Bit Model (Processor status register folded into program counter)" +msgstr "" +"26-битная модель (регистр статуса процессора вложен в счетчик программы)" + +#. /flag:fastmult +#: modules/devices/arm/arm_data.c:46 +msgctxt "arm-flag" +msgid "32x32->64-bit multiplication" +msgstr "32x32->64-битное умножение" + +#. /flag:fpa +#: modules/devices/arm/arm_data.c:47 +msgctxt "arm-flag" +msgid "Floating point accelerator" +msgstr "Ускоритель плавающей точки" + +#. /flag:vfp +#: modules/devices/arm/arm_data.c:48 +msgctxt "arm-flag" +msgid "VFP (early SIMD vector floating point instructions)" +msgstr "VFP (ранний вектор SIMD инструкций плавающей точки)" + +#. /flag:edsp +#: modules/devices/arm/arm_data.c:49 +msgctxt "arm-flag" +msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" +msgstr "расширения DSP (вариант 'e' процессоров ARM9 и выше)" + +#. /flag:java +#: modules/devices/arm/arm_data.c:50 +msgctxt "arm-flag" +msgid "Jazelle (Java bytecode accelerator)" +msgstr "Jazelle (ускоритель байт-кода Java)" + +#. /flag:iwmmxt +#: modules/devices/arm/arm_data.c:51 +msgctxt "arm-flag" +msgid "SIMD instructions similar to Intel MMX" +msgstr "Инструкции SIMD, схожие с Intel MMX" + +#. /flag:crunch +#: modules/devices/arm/arm_data.c:52 +msgctxt "arm-flag" +msgid "MaverickCrunch coprocessor (if kernel support enabled)" +msgstr "Сопроцессор MaverickCrunch (при наличии поддержки в ядре)" + +#. /flag:thumbee +#: modules/devices/arm/arm_data.c:53 +msgctxt "arm-flag" +msgid "ThumbEE" +msgstr "" + +#. /flag:neon +#: modules/devices/arm/arm_data.c:54 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch32" +msgstr "Дополнительный SIMD/NEON на AArch32" + +#. /flag:evtstrm +#: modules/devices/arm/arm_data.c:55 +msgctxt "arm-flag" +msgid "Kernel event stream using generic architected timer" +msgstr "поток событий ядра с использованием общего архитектурного таймера" + +#. /flag:vfpv3 +#: modules/devices/arm/arm_data.c:56 +msgctxt "arm-flag" +msgid "VFP version 3" +msgstr "VFP версии 3" + +#. /flag:vfpv3d16 +#: modules/devices/arm/arm_data.c:57 +msgctxt "arm-flag" +msgid "VFP version 3 with 16 D-registers" +msgstr "VFP версии 3 с 16 D-регистрами" + +#. /flag:vfpv4 +#: modules/devices/arm/arm_data.c:58 +msgctxt "arm-flag" +msgid "VFP version 4 with fast context switching" +msgstr "VFP версии 4 с быстрым контекстным переключением" + +#. /flag:vfpd32 +#: modules/devices/arm/arm_data.c:59 +msgctxt "arm-flag" +msgid "VFP with 32 D-registers" +msgstr "VFP с 32 D-регистрами" + +#. /flag:tls +#: modules/devices/arm/arm_data.c:60 +msgctxt "arm-flag" +msgid "TLS register" +msgstr "Регистр TLS" + +#. /flag:idiva +#: modules/devices/arm/arm_data.c:61 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in ARM mode" +msgstr "Аппаратное разделение SDIV и UDIV в режиме ARM" + +#. /flag:idivt +#: modules/devices/arm/arm_data.c:62 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in Thumb mode" +msgstr "Аппаратное разделение SDIV и UDIV в режиме Thumb" + +#. /flag:lpae +#: modules/devices/arm/arm_data.c:63 +msgctxt "arm-flag" +msgid "40-bit Large Physical Address Extension" +msgstr "40-битное большое физическое адресное расширение" + +#. /hw_cap2 +#. /flag:pmull +#: modules/devices/arm/arm_data.c:65 +msgctxt "arm-flag" +msgid "64x64->128-bit F2m multiplication (arch>8)" +msgstr "64x64->128-битное умножение F2m (arch>8)" + +#. /flag:aes +#: modules/devices/arm/arm_data.c:66 +msgctxt "arm-flag" +msgid "Crypto:AES (arch>8)" +msgstr "Крипто:AES (arch>8)" + +#. /flag:sha1 +#: modules/devices/arm/arm_data.c:67 +msgctxt "arm-flag" +msgid "Crypto:SHA1 (arch>8)" +msgstr "Крипто:SHA1 (arch>8)" + +#. /flag:sha2 +#: modules/devices/arm/arm_data.c:68 +msgctxt "arm-flag" +msgid "Crypto:SHA2 (arch>8)" +msgstr "Крипто:SHA2 (arch>8)" + +#. /flag:crc32 +#: modules/devices/arm/arm_data.c:69 +msgctxt "arm-flag" +msgid "CRC32 checksum instructions (arch>8)" +msgstr "инструкции контрольной суммы CRC32 (arch>8)" + +#. /flag:asimd +#: modules/devices/arm/arm_data.c:72 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +msgstr "Дополнительный SIMD/NEON на AArch64 (arch>8)" + +#: modules/devices/arm/processor.c:142 +msgid "ARM Processor" +msgstr "Процессор ARM" + +#: modules/devices/arm/processor.c:200 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:371 +msgid "Empty List" +msgstr "Пустой список" + +#: modules/devices/arm/processor.c:237 +msgid "Linux Name" +msgstr "Имя Linux" + +#: modules/devices/arm/processor.c:238 +msgid "Decoded Name" +msgstr "Декодированное имя" + +#: modules/devices/arm/processor.c:239 modules/network/net.c:458 +msgid "Mode" +msgstr "Режим" + +#: modules/devices/arm/processor.c:245 +msgid "ARM" +msgstr "" + +#: modules/devices/arm/processor.c:246 +msgid "Implementer" +msgstr "Исполнитель" + +#: modules/devices/arm/processor.c:247 +msgid "Part" +msgstr "Часть" + +#: modules/devices/arm/processor.c:248 modules/devices/ia64/processor.c:162 +#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 +msgid "Architecture" +msgstr "Архитектура" + +#: modules/devices/arm/processor.c:249 +msgid "Variant" +msgstr "Вариант" + +#: modules/devices/arm/processor.c:251 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:428 +msgid "Capabilities" +msgstr "Возможности" + +#: modules/devices/arm/processor.c:335 +msgid "SOC/Package" +msgstr "" + +#: modules/devices/arm/processor.c:338 modules/devices/cpu_util.c:222 +msgid "Topology" +msgstr "Топология" + +#: modules/devices/arm/processor.c:339 +msgid "Clocks" +msgstr "" + +#: modules/devices/arm/processor.c:354 +msgid "SOC/Package Information" +msgstr "" + +#: modules/devices/battery.c:181 #, c-format msgid "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Date & Time\n" -"ColumnTitle$Value=Kernel Version\n" -"ShowColumnHeaders=true\n" "\n" -"%s" +"[Battery: %s]\n" +"State=%s (load: %s)\n" +"Capacity=%s / %s (%.2f%%)\n" +"Battery Technology=%s (%s)\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" msgstr "" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=Дата и время\n" -"ColumnTitle$Value=Версия ядра\n" -"ShowColumnHeaders=true\n" "\n" -"%s" +"[Батарея: %s]\n" +"Состояние=%s (нагрузка: %s)\n" +"Емкость=%s / %s (%.2f%%)\n" +"Технология батареи=%s (%s)\n" +"Изготовитель=%s\n" +"Номер модели=%s\n" +"Серийный номер=%s\n" -#: modules/computer.c:465 +#: modules/devices/battery.c:258 #, c-format msgid "" -"[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Language Code\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" -"[Available Languages]\n" -"%s" +"\n" +"[Battery: %s]\n" +"State=%s\n" +"Capacity=%s / %s\n" +"Battery Technology=%s\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" msgstr "" -"[$ShellParam$]\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Код языка\n" -"ColumnTitle$Value=Название\n" -"ShowColumnHeaders=true\n" -"[Available Languages]\n" -"%s" +"\n" +"[Батарея: %s]\n" +"Состояние=%s\n" +"Емкость=%s / %s\n" +"Технология батареи=%s\n" +"Производитель=%s\n" +"Номер модели=%s\n" +"Серийный номер=%s\n" -#: modules/computer.c:476 +#: modules/devices/battery.c:346 #, c-format msgid "" -"[$ShellParam$]\n" -"ViewType=4\n" -"ReloadInterval=5000\n" -"Zebra=1\n" -"NormalizePercentage=false\n" -"ColumnTitle$Extra1=Mount Point\n" -"ColumnTitle$Progress=Usage\n" -"ColumnTitle$TextValue=Device\n" -"ShowColumnHeaders=true\n" -"[Mounted File Systems]\n" -"%s\n" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Remaining Charge=%s of %s\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" msgstr "" -"[$ShellParam$]\n" -"ViewType=4\n" -"ReloadInterval=5000\n" -"Zebra=1\n" -"NormalizePercentage=false\n" -"ColumnTitle$Extra1=Точка монтирования\n" -"ColumnTitle$Progress=Использование\n" -"ColumnTitle$TextValue=Устройство\n" -"ShowColumnHeaders=true\n" -"[Mounted File Systems]\n" -"%s\n" - -#: modules/computer.c:490 -#, c-format -msgid "" -"[Display]\n" -"Resolution=%dx%d pixels\n" -"Vendor=%s\n" -"Version=%s\n" -"[Monitors]\n" -"%s[Extensions]\n" -"%s[OpenGL]\n" -"Vendor=%s\n" -"Renderer=%s\n" -"Version=%s\n" -"Direct Rendering=%s\n" -msgstr "" -"[Дисплей]\n" -"Разрешение=%dx%d пикс.\n" -"Поставщик=%s\n" -"Версия=%s\n" -"[Монитор]\n" -"%s[Расширения]\n" -"%s[OpenGL]\n" -"Поставщик=%s\n" -"Рендер=%s\n" -"Версия=%s\n" -"Графическое ускорение=%s\n" - -#: modules/computer.c:512 -msgid "Y_es" -msgstr "Есть" - -#: modules/computer.c:512 -#: modules/devices/printers.c:138 -msgid "No" -msgstr "Нет" +"\n" +"[Батарея (APM)]\n" +"Заряд=%d%%\n" +"Оставшийся заряд=%s из %s\n" +"Используется=%s\n" +"APM драйвер версии=%s\n" +"APM BIOS версии=%s\n" -#: modules/computer.c:526 +#: modules/devices/battery.c:358 #, c-format msgid "" -"[$ShellParam$]\n" -"ReloadInterval=10000\n" -"ColumnTitle$TextValue=Name\n" -"ColumnTitle$Value=Group ID\n" -"ShowColumnHeaders=true\n" -"[Groups]\n" -"%s\n" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" msgstr "" -"[$ShellParam$]\n" -"ReloadInterval=10000\n" -"ColumnTitle$TextValue=Имя\n" -"ColumnTitle$Value=ID группы\n" -"ShowColumnHeaders=true\n" -"[Groups]\n" -"%s\n" - -#: modules/computer.c:606 -msgid "Computer" -msgstr "Компьютер" - -#: modules/computer.c:700 -msgid "Gathers high-level computer information" -msgstr "Собирает высокоуровневую информацию о компьютере" - -#: modules/devices.c:74 -msgid "Processor" -msgstr "Процессор" +"\n" +"[Батарея (APM)]\n" +"Заряд=%d%%\n" +"Используется=%s\n" +"APM драйвер версии=%s\n" +"APM BIOS версии=%s\n" -#: modules/devices.c:75 -msgid "Memory" -msgstr "Память" +#: modules/devices/battery.c:385 +msgid "" +"[No batteries]\n" +"No batteries found on this system=\n" +msgstr "" +"[No batteries]\n" +"Батареи не найдены на этой системе=\n" -#: modules/devices.c:76 +#: modules/devices.c:97 msgid "PCI Devices" msgstr "Устройства PCI" -#: modules/devices.c:77 +#: modules/devices.c:98 modules/devices/usb.c:117 modules/devices/usb.c:156 +#: modules/devices/usb.c:415 msgid "USB Devices" msgstr "Устройства USB" -#: modules/devices.c:78 -msgid "Printers" -msgstr "Принтеры" - -#: modules/devices.c:79 +#: modules/devices.c:100 msgid "Battery" msgstr "Батарея" -#: modules/devices.c:80 +#: modules/devices.c:101 msgid "Sensors" msgstr "Сенсоры" -#: modules/devices.c:81 -msgid "Input Devices" -msgstr "Устройства ввода" - -#: modules/devices.c:82 -msgid "Storage" -msgstr "Устройства хранения" - -#: modules/devices.c:84 +#: modules/devices.c:105 msgid "DMI" msgstr "" -#: modules/devices.c:85 +#: modules/devices.c:106 msgid "Memory SPD" msgstr "Память SPD" -#: modules/devices.c:87 +#: modules/devices.c:111 +msgid "Device Tree" +msgstr "" + +#: modules/devices.c:113 msgid "Resources" msgstr "Ресурсы" +#: modules/devices.c:151 +#, c-format +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "%d физический процессор" +msgstr[1] "%d физических процессора" +msgstr[2] "%d физических процессоров" + +#: modules/devices.c:152 +#, c-format +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "%d ядро" +msgstr[1] "%d ядра" +msgstr[2] "%d ядер" + +#: modules/devices.c:153 +#, c-format +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "%d поток" +msgstr[1] "%d потока" +msgstr[2] "%d потоков" + +#. /NP procs; NC cores; NT threads #: modules/devices.c:154 -#: modules/devices.c:197 -#: modules/devices/printers.c:99 -#: modules/devices/printers.c:106 -#: modules/devices/printers.c:116 -#: modules/devices/printers.c:131 -#: modules/devices/printers.c:140 -#: modules/devices/printers.c:243 -#: modules/computer/os.c:53 -#: modules/computer/os.c:130 -msgid "Unknown" -msgstr "Неизвестно" +#, c-format +msgid "%s; %s; %s" +msgstr "" -#: modules/devices.c:193 +#: modules/devices.c:372 +msgid " (model unknown)" +msgstr "(модель неизвестна)" + +#: modules/devices.c:374 msgid " (vendor unknown)" msgstr "(поставщик неизвестен)" -#: modules/devices.c:195 -msgid " (model unknown)" -msgstr "(модель неизвестна)" +#: modules/devices.c:559 +msgid "Field" +msgstr "Поле" + +#: modules/devices.c:559 modules/devices.c:591 +msgid "Value" +msgstr "Значение" + +#: modules/devices.c:591 +msgid "Sensor" +msgstr "Сенсор" -#: modules/devices.c:412 +#: modules/devices.c:591 modules/devices/inputdevices.c:117 +msgid "Type" +msgstr "Тип" + +#: modules/devices.c:637 msgid "Devices" msgstr "Устройства" -#: modules/devices.c:424 +#: modules/devices.c:649 msgid "Update PCI ID listing" msgstr "Обновить список PCI ID" -#: modules/devices.c:436 +#: modules/devices.c:661 msgid "Update CPU feature database" msgstr "Обновить базу данных функций процессора" -#: modules/devices.c:464 +#: modules/devices.c:689 msgid "Gathers information about hardware devices" msgstr "Собирает информацию об устройствах" -#: modules/devices.c:500 +#: modules/devices.c:708 msgid "Resource information requires superuser privileges" msgstr "Для вывода информации о ресурсах нужны права администратора" -#: modules/network.c:59 -msgid "Interfaces" -msgstr "Интерфейсы" +#: modules/devices/cpu_util.c:30 +msgid "Little Endian" +msgstr "" -#: modules/network.c:60 -msgid "IP Connections" -msgstr "IP Подключения" +#: modules/devices/cpu_util.c:32 +msgid "Big Endian" +msgstr "" -#: modules/network.c:61 -msgid "Routing Table" -msgstr "Таблица маршрутизации" +#: modules/devices/cpu_util.c:178 modules/devices/cpu_util.c:189 +msgid "Frequency Scaling" +msgstr "Масштабирование частоты" -#: modules/network.c:62 -msgid "ARP Table" -msgstr "Таблица ARP" +#: modules/devices/cpu_util.c:179 +msgid "Minimum" +msgstr "Минимальная" -#: modules/network.c:63 -msgid "DNS Servers" -msgstr "DNS сервера" +#: modules/devices/cpu_util.c:179 modules/devices/cpu_util.c:180 +#: modules/devices/cpu_util.c:181 +msgid "kHz" +msgstr "кГц" -#: modules/network.c:64 -msgid "Statistics" -msgstr "Статистика" +#: modules/devices/cpu_util.c:180 +msgid "Maximum" +msgstr "Максимальная" -#: modules/network.c:65 -msgid "Shared Directories" -msgstr "Общие каталоги" +#: modules/devices/cpu_util.c:181 +msgid "Current" +msgstr "Текущая" -#: modules/network.c:300 -#, c-format -msgid "" -"[ARP Table]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Interface\n" -"ColumnTitle$Extra1=MAC Address\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[Таблица ARP]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=IP-адрес\n" -"ColumnTitle$Value=Интерфейс\n" -"ColumnTitle$Extra1=MAC-адрес\n" -"ShowColumnHeaders=true\n" +#: modules/devices/cpu_util.c:182 +msgid "Transition Latency" +msgstr "Задержка перехода" -#: modules/network.c:321 -#, c-format -msgid "" -"[Name servers]\n" -"%s\n" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=IP Address\n" -"ColumnTitle$Value=Name\n" -"ShowColumnHeaders=true\n" +#: modules/devices/cpu_util.c:182 +msgid "ns" +msgstr "нс" + +#: modules/devices/cpu_util.c:183 +msgid "Governor" +msgstr "Регулятор" + +#: modules/devices/cpu_util.c:184 modules/devices/cpu_util.c:190 +msgid "Driver" +msgstr "Драйвер" + +#: modules/devices/cpu_util.c:196 modules/devices/x86/processor.c:297 +msgid "(Not Available)" +msgstr "(Недоступно)" + +#: modules/devices/cpu_util.c:204 modules/devices/cpu_util.c:206 +msgid "Socket" +msgstr "Сокет" + +#: modules/devices/cpu_util.c:209 modules/devices/cpu_util.c:211 +msgid "Core" +msgstr "Ядро" + +#: modules/devices/cpu_util.c:214 +msgid "Book" +msgstr "Книга" + +#: modules/devices/cpu_util.c:216 +msgid "Drawer" +msgstr "Трассировщик" + +#: modules/devices/cpu_util.c:223 +msgid "ID" msgstr "" -"[Name servers]\n" -"%s\n" -"[$ShellParam$]\n" -"ColumnTitle$TextValue=IP-адрес\n" -"ColumnTitle$Value=Имя\n" -"ShowColumnHeaders=true\n" -#: modules/network.c:331 -#, c-format -msgid "" -"[Connections]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Local Address\n" -"ColumnTitle$Value=Protocol\n" -"ColumnTitle$Extra1=Foreign Address\n" -"ColumnTitle$Extra2=State\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[Connections]\n" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Локальный адрес\n" -"ColumnTitle$Value=Протокол\n" -"ColumnTitle$Extra1=Удалённый адрес\n" -"ColumnTitle$Extra2=Состояние\n" -"ShowColumnHeaders=true\n" - -#: modules/network.c:345 -#, c-format -msgid "" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Interface\n" -"ColumnTitle$Value=IP Address\n" -"ColumnTitle$Extra1=Sent\n" -"ColumnTitle$Extra2=Received\n" -"ShowColumnHeaders=true\n" -"%s" +#: modules/devices/devicetree.c:47 +msgid "Properties" msgstr "" -"%s\n" -"[$ShellParam$]\n" -"ReloadInterval=3000\n" -"ViewType=1\n" -"ColumnTitle$TextValue=Интерфейс\n" -"ColumnTitle$Value=IP-адрес\n" -"ColumnTitle$Extra1=Отправлено\n" -"ColumnTitle$Extra2=Получено\n" -"ShowColumnHeaders=true\n" -"%s" -#: modules/network.c:361 -#, c-format -msgid "" -"[IP routing table]\n" -"%s\n" -"[$ShellParam$]\n" -"ViewType=0\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Destination / Gateway\n" -"ColumnTitle$Value=Interface\n" -"ColumnTitle$Extra1=Flags\n" -"ColumnTitle$Extra2=Mask\n" -"ShowColumnHeaders=true\n" -msgstr "" -"[IP routing table]\n" -"%s\n" -"[$ShellParam$]\n" -"ViewType=0\n" -"ReloadInterval=3000\n" -"ColumnTitle$TextValue=Цель / Шлюз\n" -"ColumnTitle$Value=Интерфейс\n" -"ColumnTitle$Extra1=Флаги\n" -"ColumnTitle$Extra2=Маска\n" -"ShowColumnHeaders=true\n" - -#: modules/network.c:399 -msgid "Network" -msgstr "Сеть" +#: modules/devices/devicetree.c:48 +msgid "Children" +msgstr "" -#: modules/network.c:432 -msgid "Gathers information about this computer's network connection" -msgstr "Собирает информацию о сетевых подключениях" +#: modules/devices/devicetree.c:84 +msgid "Node" +msgstr "" -#: modules/computer/alsa.c:26 -msgid "[Audio Devices]\n" -msgstr "[Аудио устройства]\n" +#: modules/devices/devicetree.c:85 +msgid "Node Path" +msgstr "" -#: modules/computer/alsa.c:33 -#, c-format -msgid "Audio Adapter#%d=%s\n" -msgstr "Звуковая карта#%d=%s\n" +#: modules/devices/devicetree.c:86 +msgid "Alias" +msgstr "" -#: modules/computer/boots.c:33 -msgid "[Boots]\n" -msgstr "[Загрузки]\n" +#: modules/devices/devicetree.c:86 modules/devices/devicetree.c:87 +msgid "(None)" +msgstr "" -#: modules/computer/display.c:83 -msgid "vendor string" -msgstr "строка поставщика" +#: modules/devices/devicetree.c:87 +msgid "Symbol" +msgstr "" -#: modules/computer/display.c:84 -msgid "X.Org version" -msgstr "Версия X.Org" +#: modules/devices/devicetree.c:132 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "" -#: modules/computer/display.c:85 -msgid "XFree86 version" -msgstr "Версия XFree86" +#: modules/devices/devicetree.c:133 modules/devices/devicetree.c:178 +msgid "Compatible" +msgstr "" -#: modules/computer/display.c:122 -#, c-format -msgid "Monitor %d=%dx%d pixels\n" -msgstr "Монитор %d=%dx%d пикселей\n" +#: modules/devices/devicetree.c:134 +msgid "GPU-compatible" +msgstr "" + +#: modules/devices/devicetree.c:140 +msgid "Raspberry Pi or Compatible" +msgstr "" + +#: modules/devices/devicetree.c:142 modules/devices/devicetree.c:160 +#: modules/devices/devicetree.c:177 modules/devices/devicetree/rpi_data.c:160 +msgid "Serial Number" +msgstr "" + +#: modules/devices/devicetree.c:143 modules/devices/devicetree/rpi_data.c:157 +msgid "RCode" +msgstr "" + +#: modules/devices/devicetree.c:143 +msgid "No revision code available; unable to lookup model details." +msgstr "" + +#: modules/devices/devicetree.c:159 +msgid "More" +msgstr "" + +#: modules/devices/devicetree.c:175 +msgid "Board" +msgstr "" + +#: modules/devices/devicetree.c:234 +msgid "Messages" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1013 +msgid "phandle Map" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1014 +msgid "Alias Map" +msgstr "" + +#: modules/devices/devicetree/dt_util.c:1015 +msgid "Symbol Map" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "Машина" + +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:152 +#: modules/devices/devicetree/rpi_data.c:153 +msgid "Raspberry Pi" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:153 +msgid "Board Name" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:154 +msgid "PCB Revision" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:155 +msgid "Introduction" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:156 modules/devices/spd-decode.c:1510 +#: modules/devices/usb.c:84 modules/devices/usb.c:217 +msgid "Manufacturer" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:158 +msgid "SOC (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:159 +msgid "Memory (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Permanent overvolt bit" +msgstr "" -#: modules/computer/environment.c:32 -msgid "[Environment Variables]\n" -msgstr "[Переменные среды]\n" +#: modules/devices/devicetree/rpi_data.c:161 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "" -#: modules/devices/devmemory.c:89 +#: modules/devices/devicetree/rpi_data.c:161 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "" + +#: modules/devices/devmemory.c:93 msgid "Total Memory" msgstr "Общая память" -#: modules/devices/devmemory.c:90 +#: modules/devices/devmemory.c:94 msgid "Free Memory" msgstr "Свободная память" -#: modules/devices/devmemory.c:91 +#: modules/devices/devmemory.c:95 msgid "Cached Swap" msgstr "Кэш подкачки" -#: modules/devices/devmemory.c:92 +#: modules/devices/devmemory.c:96 msgid "High Memory" msgstr "Высокая память" -#: modules/devices/devmemory.c:93 +#: modules/devices/devmemory.c:97 msgid "Free High Memory" msgstr "Свободная высокая память" -#: modules/devices/devmemory.c:94 +#: modules/devices/devmemory.c:98 msgid "Low Memory" msgstr "Низкая память" -#: modules/devices/devmemory.c:95 +#: modules/devices/devmemory.c:99 msgid "Free Low Memory" msgstr "Свободная низкая память" -#: modules/devices/devmemory.c:96 +#: modules/devices/devmemory.c:100 msgid "Virtual Memory" msgstr "Виртуальная память" -#: modules/devices/devmemory.c:97 +#: modules/devices/devmemory.c:101 msgid "Free Virtual Memory" msgstr "Свободная виртуальная память" -#: modules/devices/spd-decode.c:1475 -msgid "" -"[SPD]\n" -"Please load the eeprom module to obtain information about memory SPD=\n" -"[$ShellParam$]\n" -"ReloadInterval=500\n" -msgstr "" -"[SPD]\n" -"Пожалуйста, загрузите модуль eeprom для получения информации о памяти SPD=\n" -"[$ShellParam$]\n" -"ReloadInterval=500\n" +#: modules/devices/dmi.c:188 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "(Недоступно, попробуйте выполнить HardInfo с правами администратора.)" -#: modules/devices/spd-decode.c:1480 -msgid "" -"[SPD]\n" -"Reading memory SPD not supported on this system=\n" -msgstr "" -"[SPD]\n" -"Чтение памяти SPD не поддерживается на данной системе=\n" +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "Процессор IA64" -#: hardinfo/util.c:102 -#: hardinfo/util.c:105 -#: hardinfo/util.c:110 -#, c-format -msgid "%d minute" -msgid_plural "%d minutes" -msgstr[0] "%d минута" -msgstr[1] "%d минуты" -msgstr[2] "%d минут" +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "Ревизия архитектуры" -#: hardinfo/util.c:104 -#, c-format -msgid "%d hour, " -msgid_plural "%d hours, " -msgstr[0] "%d час" -msgstr[1] "%d часа" -msgstr[2] "%d часов" +#: modules/devices/ia64/processor.c:164 modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "Семейство" -#: hardinfo/util.c:108 -#, c-format -msgid "%d day, " -msgid_plural "%d days, " -msgstr[0] "%d день" -msgstr[1] "%d дня" -msgstr[2] "%d дней" +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "Регистры" -#: hardinfo/util.c:109 -#, c-format -msgid "%d hour and " -msgid_plural "%d hours and " -msgstr[0] "%d час и" -msgstr[1] "%d часа и" -msgstr[2] "%d часов и" +#: modules/devices/ia64/processor.c:171 +msgid "Features" +msgstr "Возможности" -#: hardinfo/util.c:116 -#, c-format -msgid "%.1f B" -msgstr "%.1f Б" +#: modules/devices/inputdevices.c:115 modules/devices/pci.c:214 +#: modules/devices/usb.c:82 modules/devices/usb.c:215 modules/devices/usb.c:347 +msgid "Device Information" +msgstr "Информация об устройстве" -#: hardinfo/util.c:118 -#, fuzzy, c-format -msgid "%.1f KiB" -msgstr "%.1f КиБ" +#: modules/devices/inputdevices.c:118 modules/devices/usb.c:92 +#: modules/devices/usb.c:240 modules/devices/usb.c:356 +msgid "Bus" +msgstr "Шина" -#: hardinfo/util.c:120 -#, fuzzy, c-format -msgid "%.1f MiB" -msgstr "%.1f МиБ" +#: modules/devices/inputdevices.c:120 modules/devices/usb.c:83 +#: modules/devices/usb.c:216 modules/devices/usb.c:348 +msgid "Product" +msgstr "Продукт" -#: hardinfo/util.c:122 -#, fuzzy, c-format -msgid "%.1f GiB" -msgstr "%.1f ГиБ" +#: modules/devices/inputdevices.c:124 +msgid "Connected to" +msgstr "Подключен к" -#: hardinfo/util.c:336 -msgid "Error" -msgstr "Ошибка" +#: modules/devices/inputdevices.c:128 +msgid "InfraRed port" +msgstr "Инфракрасный порт" -#: hardinfo/util.c:336 -#: hardinfo/util.c:352 -msgid "Warning" -msgstr "Предупреждение" +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" +msgstr "" -#: hardinfo/util.c:351 -msgid "Fatal Error" -msgstr "Фатальная ошибка" +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" +msgstr "" -#: hardinfo/util.c:376 -msgid "creates a report and prints to standard output" -msgstr "создаёт отчёт и выводит на стандартный вывод" +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" +msgstr "Калибровка" -#: hardinfo/util.c:382 -msgid "chooses a report format (text, html)" -msgstr "выбирает формат отчёта (text, html)" +#: modules/devices/mips/processor.c:76 +msgid "System Type" +msgstr "Тип системы" -#: hardinfo/util.c:388 -msgid "run benchmark; requires benchmark.so to be loaded" -msgstr "запуск теста; требует, чтобы benchmark.so был загружен" +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "Процессор PA-RISC" -#: hardinfo/util.c:394 -msgid "lists modules" -msgstr "список модулей" +#: modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "Система" -#: hardinfo/util.c:400 -msgid "specify module to load" -msgstr "укажите модуль для загрузки" +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "" -#: hardinfo/util.c:406 -msgid "automatically load module dependencies" -msgstr "автоматически загружает зависимости модулей" +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "" -#: hardinfo/util.c:413 -msgid "run in XML-RPC server mode" -msgstr "запуск в режиме сервера XML-RPC" +#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:425 +msgid "Cache" +msgstr "Кэш" -#: hardinfo/util.c:420 -msgid "shows program version and quit" -msgstr "показывает версию программы и выходит" +#: modules/devices/pci.c:106 +msgid "IRQ" +msgstr "" -#: hardinfo/util.c:425 -msgid "- System Profiler and Benchmark tool" -msgstr "- Инструмент для тестирования и проверки свойств системы" +#: modules/devices/pci.c:110 +msgid "Latency" +msgstr "Отклик" + +#: modules/devices/pci.c:112 +msgid "Bus Master" +msgstr "Главная шина" -#: hardinfo/util.c:435 +#: modules/devices/pci.c:118 +msgid "Kernel modules" +msgstr "Модули ядра" + +#: modules/devices/pci.c:124 #, c-format -msgid "" -"Unrecognized arguments.\n" -"Try ``%s --help'' for more information.\n" +msgid "%s=%s (%s)\n" msgstr "" -"Неизвестные аргументы.\n" -"Используйте `%s --help' для справки.\n" -#: hardinfo/util.c:501 -#, c-format -msgid "Couldn't find a Web browser to open URL %s." -msgstr "Не удаётся найти веб-браузер для открытия URL %s." +#: modules/devices/pci.c:126 +msgid "OEM Vendor" +msgstr "Производитель OEM" -#: hardinfo/util.c:848 -#, c-format -msgid "Module \"%s\" depends on module \"%s\", load it?" -msgstr "Модуль \"%s\" зависит от модуля \"%s\", загрузить его?" +#: modules/devices/pci.c:153 +msgid "prefetchable" +msgstr "" -#: hardinfo/util.c:871 -#, c-format -msgid "Module \"%s\" depends on module \"%s\"." -msgstr "Модуль \"%s\" зависит от модуля \"%s\"." +#: modules/devices/pci.c:154 +msgid "non-prefetchable" +msgstr "" -#: hardinfo/util.c:916 -#, c-format -msgid "No module could be loaded. Check permissions on \"%s\" and try again." -msgstr "Модули не могут быть загружены. Проверьте разрешения на \"%s\" и попробуйте снова." +#: modules/devices/pci.c:163 +msgid "I/O ports at" +msgstr "Порты ввода/вывода на" -#: hardinfo/util.c:920 -msgid "No module could be loaded. Please use hardinfo -l to list all available modules and try again with a valid module list." -msgstr "Не удается загрузить модули. Пожалуйста, используйте hardinfo -l для получения списка доступных модулей и попробуйте снова с правильным списком модулей." +#: modules/devices/pci.c:216 modules/devices/usb.c:89 modules/devices/usb.c:237 +#: modules/devices/usb.c:353 +msgid "Class" +msgstr "Класс" -#: hardinfo/util.c:1096 -#, c-format -msgid "Scanning: %s..." -msgstr "Сканирование: %s..." +#: modules/devices/pci.c:217 +msgid "Domain" +msgstr "Домен" -#: modules/devices/x86/processor.c:145 -msgid "Cache information not available=\n" -msgstr "Информация о кэше недоступна=\n" +#: modules/devices/pci.c:218 +msgid "Bus, device, function" +msgstr "Шина, устройство, функция" -#: modules/devices/x86/processor.c:484 -#, c-format -msgid "" -"[Processor]\n" -"Name=%s\n" -"Family, model, stepping=%d, %d, %d (%s)\n" -"Vendor=%s\n" -"[Configuration]\n" -"Cache Size=%dkb\n" -"Frequency=%.2fMHz\n" -"BogoMIPS=%.2f\n" -"Byte Order=%s\n" -"[Features]\n" -"FDIV Bug=%s\n" -"HLT Bug=%s\n" -"F00F Bug=%s\n" -"Coma Bug=%s\n" -"Has FPU=%s\n" -"[Cache]\n" -"%s\n" -"[Capabilities]\n" -"%s" -msgstr "" -"[Процессор]\n" -"Название=%s\n" -"Семейство, модель, степпинг=%d, %d, %d (%s)\n" -"Производитель=%s\n" -"[Конфигурация]\n" -"Размер кэша=%dкб\n" -"Частота=%.2fМГц\n" -"BogoMIPS=%.2f\n" -"Порядок байтов=%s\n" -"[Функции]\n" -"Ошибка FDIV=%s\n" -"Ошибка HLT=%s\n" -"Ошибка F00F=%s\n" -"Ошибка Coma=%s\n" -"FPU=%s\n" -"[Кэш]\n" -"%s\n" -"[Возможности]\n" -"%s" +#: modules/devices/pci.c:243 +msgid "No PCI devices found" +msgstr "Устройства PCI не найдены" -#: modules/devices/x86/processor.c:542 -#, c-format -msgid "%s$CPU%d$%s=%.2fMHz\n" -msgstr "%s$CPU%d$%s=%.2fМГц\n" +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" +msgstr "Процессор POWER" #: modules/devices/printers.c:81 msgid "⚬ Can do black and white printing=\n" @@ -1464,11 +2310,11 @@ msgstr "⚬ Можно делать копии=\n" #: modules/devices/printers.c:91 msgid "⚬ Can collate copies=\n" -msgstr "⚬ Can collate copies=\n" +msgstr "⚬ Можно сравнивать копии=\n" #: modules/devices/printers.c:93 msgid "⚬ Printer is rejecting jobs=\n" -msgstr "⚬ Printer is rejecting jobs=\n" +msgstr "⚬ Принтер отклоняет задачи=\n" #: modules/devices/printers.c:95 msgid "⚬ Printer was automatically discovered and added=\n" @@ -1486,10 +2332,6 @@ msgstr "Печатается задача" msgid "Stopped" msgstr "Остановлен" -#: modules/devices/printers.c:138 -msgid "Yes" -msgstr "Да" - #: modules/devices/printers.c:190 msgid "" "[Printers]\n" @@ -1510,97 +2352,169 @@ msgstr "" "[Принтеры]\n" "Принтеры не найдены=\n" -#: modules/computer/os.c:49 -#, c-format -msgid "GNU C Library version %s (%sstable)" -msgstr "Библиотека GNU C версии %s (%s стабильна)" - -#: modules/computer/os.c:51 -msgid "un" -msgstr "не" +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" +msgstr "Процессор RISC-V" -#: modules/computer/os.c:72 -#, c-format -msgid "Version: %s" -msgstr "Версия: %s" - -#: modules/computer/os.c:106 -msgid "Terminal" -msgstr "Терминал" - -#: modules/computer/os.c:126 -#, c-format -msgid "Unknown (Window Manager: %s)" -msgstr "Неизвестно (Оконный менеджер: %s)" +#: modules/devices/riscv/processor.c:184 +msgid "uarch" +msgstr "" -#: modules/computer/os.c:166 -msgid "Unknown distribution" -msgstr "Неизвестный дистрибутив" +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" +msgstr "32-битная RISC-V" + +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" +msgstr "64-битная RISC-V" + +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" +msgstr "128-битная RISC-V" + +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" +msgstr "Базовые встроенные целочисленные инструкции (15 регистров)" + +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" +msgstr "Базовые целочисленные инструкции (31 регистр)" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "Аппаратное умножение и деление целых чисел" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "Атомные операции с памятью" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "Сжатые 16-битные инструкции" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "Инструкции с плавающей запятой, одинарной точности" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "Инструкции с плавающей запятой, двойной точности" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "Инструкции с плавающей запятой, четверной точности" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "Инструкции манипуляции битами" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "Векторные операции" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "Переходная память" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "Сжатые инструкции SIMD" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "Десятичные инструкции с плавающей запятой" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "Языки с динамической трансляцией" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "Прерывания пользовательского уровня" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "Процессор S390" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "Строка ID" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "Процессор SuperH" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "Частота шины" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "Частота модуля" -#: modules/devices/battery.c:181 -#, c-format +#: modules/devices/spd-decode.c:1475 msgid "" -"\n" -"[Battery: %s]\n" -"State=%s (load: %s)\n" -"Capacity=%s / %s (%.2f%%)\n" -"Battery Technology=%s (%s)\n" -"Manufacturer=%s\n" -"Model Number=%s\n" -"Serial Number=%s\n" +"[SPD]\n" +"Please load the eeprom module to obtain information about memory SPD=\n" +"[$ShellParam$]\n" +"ReloadInterval=500\n" msgstr "" -"\n" -"[Батарея: %s]\n" -"Состояние=%s (нагрузка: %s)\n" -"Емкость=%s / %s (%.2f%%)\n" -"Технология батареи=%s (%s)\n" -"Изготовитель=%s\n" -"Номер модели=%s\n" -"Серийный номер=%s\n" +"[SPD]\n" +"Пожалуйста, загрузите модуль eeprom для получения информации о памяти SPD=\n" +"[$ShellParam$]\n" +"ReloadInterval=500\n" -#: modules/devices/battery.c:266 -#, c-format +#: modules/devices/spd-decode.c:1480 msgid "" -"\n" -"[Battery (APM)]\n" -"Charge=%d%%\n" -"Remaining Charge=%s of %s\n" -"Using=%s\n" -"APM driver version=%s\n" -"APM BIOS version=%s\n" +"[SPD]\n" +"Reading memory SPD not supported on this system=\n" msgstr "" -"\n" -"[Батарея (APM)]\n" -"Заряд=%d%%\n" -"Оставшийся заряд=%s из %s\n" -"Используется=%s\n" -"APM драйвер версии=%s\n" -"APM BIOS версии=%s\n" +"[SPD]\n" +"Чтение памяти SPD не поддерживается на данной системе=\n" -#: modules/devices/battery.c:278 -#, c-format -msgid "" -"\n" -"[Battery (APM)]\n" -"Charge=%d%%\n" -"Using=%s\n" -"APM driver version=%s\n" -"APM BIOS version=%s\n" +#: modules/devices/spd-decode.c:1509 +msgid "SPD" msgstr "" -"\n" -"[Батарея (APM)]\n" -"Заряд=%d%%\n" -"Используется=%s\n" -"APM драйвер версии=%s\n" -"APM BIOS версии=%s\n" -#: modules/devices/battery.c:304 -msgid "" -"[No batteries]\n" -"No batteries found on this system=\n" +#: modules/devices/spd-decode.c:1510 +msgid "Bank" msgstr "" -"[No batteries]\n" -"Батареи не найдены на этой системе=\n" #: modules/devices/storage.c:46 msgid "" @@ -1610,8 +2524,7 @@ msgstr "" "\n" "[SCSI диски]\n" -#: modules/devices/storage.c:110 -#: modules/devices/storage.c:297 +#: modules/devices/storage.c:110 modules/devices/storage.c:313 #, c-format msgid "" "[Device Information]\n" @@ -1620,14 +2533,12 @@ msgstr "" "[Информация об устройстве]\n" "Модель=%s\n" -#: modules/devices/storage.c:115 -#: modules/devices/storage.c:304 +#: modules/devices/storage.c:115 modules/devices/storage.c:319 #, c-format msgid "Vendor=%s (%s)\n" msgstr "Изготовитель=%s (%s)\n" -#: modules/devices/storage.c:120 -#: modules/devices/storage.c:309 +#: modules/devices/storage.c:120 modules/devices/storage.c:321 #, c-format msgid "Vendor=%s\n" msgstr "Изготовитель=%s\n" @@ -1643,8 +2554,15 @@ msgid "" "ID=%d\n" "LUN=%d\n" msgstr "" +"Тип=%s\n" +"Ревизия=%s\n" +"[SCSI контроллер]\n" +"Контроллер=scsi%d\n" +"Канал=%d\n" +"ID=%d\n" +"LUN=%d\n" -#: modules/devices/storage.c:169 +#: modules/devices/storage.c:167 msgid "" "\n" "[IDE Disks]\n" @@ -1652,12 +2570,12 @@ msgstr "" "\n" "[IDE диски]\n" -#: modules/devices/storage.c:242 +#: modules/devices/storage.c:250 #, c-format msgid "Driver=%s\n" msgstr "Драйвер=%s\n" -#: modules/devices/storage.c:314 +#: modules/devices/storage.c:324 #, c-format msgid "" "Device Name=hd%c\n" @@ -1668,7 +2586,7 @@ msgstr "" "Медиа=%s\n" "Кэш=%dkb\n" -#: modules/devices/storage.c:329 +#: modules/devices/storage.c:334 #, c-format msgid "" "[Geometry]\n" @@ -1679,7 +2597,7 @@ msgstr "" "Физическая=%s\n" "Логическая=%s\n" -#: modules/devices/storage.c:341 +#: modules/devices/storage.c:344 #, c-format msgid "" "[Capabilities]\n" @@ -1688,7 +2606,7 @@ msgstr "" "[Возможности]\n" "%s" -#: modules/devices/storage.c:348 +#: modules/devices/storage.c:351 #, c-format msgid "" "[Speeds]\n" @@ -1697,116 +2615,1890 @@ msgstr "" "[Скорости]\n" "%s" -#~ msgid "" -#~ "[$ShellParam$]\n" -#~ "ReloadInterval=10000\n" -#~ "ViewType=1\n" -#~ "[Users]\n" -#~ "%s\n" -#~ msgstr "" -#~ "[$ShellParam$]\n" -#~ "ReloadInterval=10000\n" -#~ "ViewType=1\n" -#~ "[Пользователи]\n" -#~ "%s\n" +#: modules/devices/usb.c:44 modules/devices/usb.c:326 +msgid "mA" +msgstr "мА" -#, fuzzy -#~ msgid "" -#~ "[Operating System]\n" -#~ "Icon=os.png\n" -#~ "Method=computer::getOS\n" -#~ "[CPU]\n" -#~ "Icon=processor.png\n" -#~ "Method=devices::getProcessorName\n" -#~ "[RAM]\n" -#~ "Icon=memory.png\n" -#~ "Method=devices::getMemoryTotal\n" -#~ "[Motherboard]\n" -#~ "Icon=module.png\n" -#~ "Method=devices::getMotherboard\n" -#~ "[Graphics]\n" -#~ "Icon=monitor.png\n" -#~ "Method=computer::getDisplaySummary\n" -#~ "[Storage]\n" -#~ "Icon=hdd.png\n" -#~ "Method=devices::getStorageDevices\n" -#~ "[Printers]\n" -#~ "Icon=printer.png\n" -#~ "Method=devices::getPrinters\n" -#~ "[Audio]\n" -#~ "Icon=audio.png\n" -#~ "Method=computer::getAudioCards\n" -#~ msgstr "" -#~ "[Operating System]\n" -#~ "Icon=os.png\n" -#~ "Method=computer::getOS\n" -#~ "[CPU]\n" -#~ "Icon=processor.png\n" -#~ "Method=devices::getProcessorName\n" -#~ "[RAM]\n" -#~ "Icon=memory.png\n" -#~ "Method=devices::getMemoryTotal\n" -#~ "[Motherboard]\n" -#~ "Icon=module.png\n" -#~ "Method=devices::getMotherboard\n" -#~ "[Graphics]\n" -#~ "Icon=monitor.png\n" -#~ "Method=computer::getDisplaySummary\n" -#~ "[Storage]\n" -#~ "Icon=hdd.png\n" -#~ "Method=devices::getStorageDevices\n" -#~ "[Printers]\n" -#~ "Icon=printer.png\n" -#~ "Method=devices::getPrinters\n" -#~ "[Audio]\n" -#~ "Icon=audio.png\n" -#~ "Method=computer::getAudioCards\n" -#~ msgid "Uptime" -#~ msgstr "Время работы" -#~ msgid "Date/Time" -#~ msgstr "Дата/время" +#. /%.2f is version +#: modules/devices/usb.c:53 modules/devices/usb.c:190 +#, c-format +msgid "USB %.2f Hub" +msgstr "" -# Должно совпадать с таким-же полем в строке 430 computer.c -#~ msgid "Load Average" -#~ msgstr "Средняя нагрузка" -#~ msgid "" -#~ "[Memory]\n" -#~ "%s\n" -#~ "[$ShellParam$]\n" -#~ "ViewType=2\n" -#~ "LoadGraphSuffix= kB\n" -#~ "RescanInterval=2000\n" -#~ "%s\n" -#~ msgstr "" -#~ "[Memory]\n" -#~ "%s\n" -#~ "[$ShellParam$]\n" -#~ "ViewType=2\n" -#~ "LoadGraphSuffix= kB\n" -#~ "RescanInterval=2000\n" -#~ "%s\n" -#~ msgid "" -#~ "[PCI Devices]\n" -#~ "%s[$ShellParam$]\n" -#~ "ViewType=1\n" -#~ msgstr "" -#~ "[PCI Devices]\n" -#~ "%s[$ShellParam$]\n" -#~ "ViewType=1\n" -#~ msgid "" -#~ "[Input Devices]\n" -#~ "%s[$ShellParam$]\n" -#~ "ViewType=1\n" -#~ "ReloadInterval=5000\n" -#~ "%s" -#~ msgstr "" -#~ "[Input Devices]\n" -#~ "%s[$ShellParam$]\n" -#~ "ViewType=1\n" -#~ "ReloadInterval=5000\n" -#~ "%s" -#~ msgid "HardInfo cannot run without loading the additional module." -#~ msgstr "HardInfo не может быть запущен без дополнительного модуля." -#, fuzzy -#~ msgid "AboutModule%s" -#~ msgstr "О _модулях" +#: modules/devices/usb.c:55 modules/devices/usb.c:192 +#, c-format +msgid "Unknown USB %.2f Device (class %d)" +msgstr "" + +#: modules/devices/usb.c:85 modules/devices/usb.c:232 +msgid "Speed" +msgstr "" + +#: modules/devices/usb.c:85 modules/devices/usb.c:232 +msgid "Mbit/s" +msgstr "" + +#: modules/devices/usb.c:86 modules/devices/usb.c:233 modules/devices/usb.c:350 +msgid "Max Current" +msgstr "Максимальная сила тока" + +#: modules/devices/usb.c:88 modules/devices/usb.c:235 modules/devices/usb.c:352 +msgid "USB Version" +msgstr "Версия USB" + +#: modules/devices/usb.c:90 modules/devices/usb.c:238 modules/devices/usb.c:354 +msgid "Vendor ID" +msgstr "ID поставщика" + +#: modules/devices/usb.c:91 modules/devices/usb.c:239 modules/devices/usb.c:355 +msgid "Product ID" +msgstr "ID продукта" + +#: modules/devices/usb.c:231 +msgid "Port" +msgstr "" + +#: modules/devices/usb.c:241 +msgid "Level" +msgstr "" + +#: modules/devices/x86/processor.c:149 +msgid "Cache information not available=\n" +msgstr "Информация о кэше недоступна=\n" + +#: modules/devices/x86/processor.c:155 +#, c-format +msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" +msgstr "" +"Уровень %d (%s)=%d-канальный множественно-ассоциативный, %d множеств, размер " +"%d кБ\n" + +#. /cache type, as appears in: Level 1 (Data) +#: modules/devices/x86/processor.c:170 +msgctxt "cache-type" +msgid "Data" +msgstr "" + +#. /cache type, as appears in: Level 1 (Instruction) +#: modules/devices/x86/processor.c:171 +msgctxt "cache-type" +msgid "Instruction" +msgstr "" + +#. /cache type, as appears in: Level 2 (Unified) +#: modules/devices/x86/processor.c:172 +msgctxt "cache-type" +msgid "Unified" +msgstr "" + +#: modules/devices/x86/processor.c:410 +msgid "Model Name" +msgstr "Название" + +#: modules/devices/x86/processor.c:411 +msgid "Family, model, stepping" +msgstr "Семейство, модель, степпинг" + +#: modules/devices/x86/processor.c:417 +msgid "Microcode Version" +msgstr "" + +#: modules/devices/x86/processor.c:418 +msgid "Configuration" +msgstr "Конфигурация" + +#: modules/devices/x86/processor.c:419 +msgid "Cache Size" +msgstr "Размер кэша" + +#: modules/devices/x86/processor.c:419 +msgid "kb" +msgstr "кБ" + +#: modules/devices/x86/processor.c:426 +msgid "Power Management" +msgstr "Управление питанием" + +#: modules/devices/x86/processor.c:427 +msgid "Bug Workarounds" +msgstr "Обход багов" + +#: modules/devices/x86/processor.c:454 modules/devices/x86/processor.c:468 +msgid "Package Information" +msgstr "Информация о комплекте" + +#. /flag:fpu +#: modules/devices/x86/x86_data.c:43 +msgctxt "x86-flag" +msgid "Onboard FPU (floating point support)" +msgstr "Встроенный FPU (поддержка плавающей запятой)" + +#. /flag:vme +#: modules/devices/x86/x86_data.c:44 +msgctxt "x86-flag" +msgid "Virtual 8086 mode enhancements" +msgstr "Улучшения виртуального режима 8086" + +#. /flag:de +#: modules/devices/x86/x86_data.c:45 +msgctxt "x86-flag" +msgid "Debugging Extensions (CR4.DE)" +msgstr "Расширения отладки (CR4.DE)" + +#. /flag:pse +#: modules/devices/x86/x86_data.c:46 +msgctxt "x86-flag" +msgid "Page Size Extensions (4MB memory pages)" +msgstr "Расширения размера страницы (страницы памяти 4 Мб)" + +#. /flag:tsc +#: modules/devices/x86/x86_data.c:47 +msgctxt "x86-flag" +msgid "Time Stamp Counter (RDTSC)" +msgstr "Счетчик временной метки (RDTSC)" + +#. /flag:msr +#: modules/devices/x86/x86_data.c:48 +msgctxt "x86-flag" +msgid "Model-Specific Registers (RDMSR, WRMSR)" +msgstr "Регистры конкретной модели (RDMSR, WRMSR)" + +#. /flag:pae +#: modules/devices/x86/x86_data.c:49 +msgctxt "x86-flag" +msgid "Physical Address Extensions (support for more than 4GB of RAM)" +msgstr "Расширения физического адреса (поддержка более 4 Гб ОЗУ)" + +#. /flag:mce +#: modules/devices/x86/x86_data.c:50 +msgctxt "x86-flag" +msgid "Machine Check Exception" +msgstr "Исключение машинного контроля" + +#. /flag:cx8 +#: modules/devices/x86/x86_data.c:51 +msgctxt "x86-flag" +msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" +msgstr "Инструкция CMPXCHG8 (64-битное сравнение-и-подкачка)" + +#. /flag:apic +#: modules/devices/x86/x86_data.c:52 +msgctxt "x86-flag" +msgid "Onboard APIC" +msgstr "Встроенный APIC" + +#. /flag:sep +#: modules/devices/x86/x86_data.c:53 +msgctxt "x86-flag" +msgid "SYSENTER/SYSEXIT" +msgstr "" + +#. /flag:mtrr +#: modules/devices/x86/x86_data.c:54 +msgctxt "x86-flag" +msgid "Memory Type Range Registers" +msgstr "Регистры диапазона типа памяти" + +#. /flag:pge +#: modules/devices/x86/x86_data.c:55 +msgctxt "x86-flag" +msgid "Page Global Enable (global bit in PDEs and PTEs)" +msgstr "Включение глобальной страницы (глобальный бит в PDE и PTE)" + +#. /flag:mca +#: modules/devices/x86/x86_data.c:56 +msgctxt "x86-flag" +msgid "Machine Check Architecture" +msgstr "Архитектура машинного контроля" + +#. /flag:cmov +#: modules/devices/x86/x86_data.c:57 +msgctxt "x86-flag" +msgid "CMOV instructions (conditional move) (also FCMOV)" +msgstr "Инструкции CMOV (условная пересылка данных) (также FCMOV)" + +#. /flag:pat +#: modules/devices/x86/x86_data.c:58 +msgctxt "x86-flag" +msgid "Page Attribute Table" +msgstr "Таблица атрибутов страницы" + +#. /flag:pse36 +#: modules/devices/x86/x86_data.c:59 +msgctxt "x86-flag" +msgid "36-bit PSEs (huge pages)" +msgstr "36-битные PSE (огромные страницы)" + +#. /flag:pn +#: modules/devices/x86/x86_data.c:60 +msgctxt "x86-flag" +msgid "Processor serial number" +msgstr "Серийный номер процессора" + +#. /flag:clflush +#: modules/devices/x86/x86_data.c:61 +msgctxt "x86-flag" +msgid "Cache Line Flush instruction" +msgstr "Инструкция Cache Line Flush" + +#. /flag:dts +#: modules/devices/x86/x86_data.c:62 +msgctxt "x86-flag" +msgid "" +"Debug Store (buffer for debugging and profiling instructions), or " +"alternately: digital thermal sensor" +msgstr "" + +#. /flag:acpi +#: modules/devices/x86/x86_data.c:63 +msgctxt "x86-flag" +msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" +msgstr "ACPI через MSR (мониторинг температуры и модуляции тактовой частоты)" + +#. /flag:mmx +#: modules/devices/x86/x86_data.c:64 +msgctxt "x86-flag" +msgid "Multimedia Extensions" +msgstr "Расширения мультимедиа" + +#. /flag:fxsr +#: modules/devices/x86/x86_data.c:65 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" +msgstr "" + +#. /flag:sse +#: modules/devices/x86/x86_data.c:66 +msgctxt "x86-flag" +msgid "Intel SSE vector instructions" +msgstr "Векторные инструкции Intel SSE" + +#. /flag:sse2 +#: modules/devices/x86/x86_data.c:67 +msgctxt "x86-flag" +msgid "SSE2" +msgstr "" + +#. /flag:ss +#: modules/devices/x86/x86_data.c:68 +msgctxt "x86-flag" +msgid "CPU self snoop" +msgstr "Проверка процессора" + +#. /flag:ht +#: modules/devices/x86/x86_data.c:69 +msgctxt "x86-flag" +msgid "Hyper-Threading" +msgstr "Многопоточность (Hyper-Threading)" + +#. /flag:tm +#: modules/devices/x86/x86_data.c:70 +msgctxt "x86-flag" +msgid "Automatic clock control (Thermal Monitor)" +msgstr "Автоматический контроль частоты (монитор температуры)" + +#. /flag:ia64 +#: modules/devices/x86/x86_data.c:71 +msgctxt "x86-flag" +msgid "" +"Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " +"x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" +msgstr "" +"64-битная архитектура Intel Itanium (не путать с 64-битной архитектурой x86 " +"от Intel с флагом x86-64 или \"AMD64\"-битной с флагом bit)" + +#. /flag:pbe +#: modules/devices/x86/x86_data.c:72 +msgctxt "x86-flag" +msgid "Pending Break Enable (PBE# pin) wakeup support" +msgstr "Поддержка пробуждения Pending Break Enable (PBE# pin)" + +#. /flag:syscall +#: modules/devices/x86/x86_data.c:75 +msgctxt "x86-flag" +msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" +msgstr "" +"SYSCALL (Быстрый вызов системы) и SYSRET (Возврат после быстрого вызова " +"системы)" + +#. /flag:mp +#: modules/devices/x86/x86_data.c:76 +msgctxt "x86-flag" +msgid "Multiprocessing Capable." +msgstr "Возможна работа в многопроцессном режиме." + +#. /flag:nx +#: modules/devices/x86/x86_data.c:77 +msgctxt "x86-flag" +msgid "Execute Disable" +msgstr "Выполнение отключено" + +#. /flag:mmxext +#: modules/devices/x86/x86_data.c:78 +msgctxt "x86-flag" +msgid "AMD MMX extensions" +msgstr "Расширения AMD MMX" + +#. /flag:fxsr_opt +#: modules/devices/x86/x86_data.c:79 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR optimizations" +msgstr "Оптимизации FXSAVE/FXRSTOR" + +#. /flag:pdpe1gb +#: modules/devices/x86/x86_data.c:80 +msgctxt "x86-flag" +msgid "One GB pages (allows hugepagesz=1G)" +msgstr "Страница размером 1 Гб (разрешает hugepagesz=1G)" + +#. /flag:rdtscp +#: modules/devices/x86/x86_data.c:81 +msgctxt "x86-flag" +msgid "Read Time-Stamp Counter and Processor ID" +msgstr "Чтение счетчика временной метки и ID процессора" + +#. /flag:lm +#: modules/devices/x86/x86_data.c:82 +msgctxt "x86-flag" +msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" +msgstr "" +"Длинный режим (x86-64: amd64, также известен как Intel 64, т.е. совместимый " +"с 64-бит)" + +#. /flag:3dnow +#: modules/devices/x86/x86_data.c:83 +msgctxt "x86-flag" +msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" +msgstr "3DNow! (векторные инструкции AMD, конкурируют с SSE1 от Intel)" + +#. /flag:3dnowext +#: modules/devices/x86/x86_data.c:84 +msgctxt "x86-flag" +msgid "AMD 3DNow! extensions" +msgstr "Расширения AMD 3DNow!" + +#. /flag:recovery +#: modules/devices/x86/x86_data.c:86 +msgctxt "x86-flag" +msgid "CPU in recovery mode" +msgstr "Процессор в режиме восстановления" + +#. /flag:longrun +#: modules/devices/x86/x86_data.c:87 +msgctxt "x86-flag" +msgid "Longrun power control" +msgstr "Управление питанием LongRun" + +#. /flag:lrti +#: modules/devices/x86/x86_data.c:88 +msgctxt "x86-flag" +msgid "LongRun table interface" +msgstr "Интерфейс таблицы LongRun" + +#. /flag:cxmmx +#: modules/devices/x86/x86_data.c:90 +msgctxt "x86-flag" +msgid "Cyrix MMX extensions" +msgstr "Расширения Cyrix MMX" + +#. /flag:k6_mtrr +#: modules/devices/x86/x86_data.c:91 +msgctxt "x86-flag" +msgid "AMD K6 nonstandard MTRRs" +msgstr "Нестандартные диапазонные регистры типа памяти (MTRR) AMD K6" + +#. /flag:cyrix_arr +#: modules/devices/x86/x86_data.c:92 +msgctxt "x86-flag" +msgid "Cyrix ARRs (= MTRRs)" +msgstr "" +"Регистры адресного диапазона (ARR) Cyrix (= диапазонные регистры типа памяти " +"(MTRR))" + +#. /flag:centaur_mcr +#: modules/devices/x86/x86_data.c:93 +msgctxt "x86-flag" +msgid "Centaur MCRs (= MTRRs)" +msgstr "" +"Сбросы мастер-контроля (MCR) Centaur (= диапазонные регистры типа памяти " +"(MTRR))" + +#. /flag:constant_tsc +#: modules/devices/x86/x86_data.c:94 +msgctxt "x86-flag" +msgid "TSC ticks at a constant rate" +msgstr "Счетчик метки времени (TSC) работает на постоянной частоте" + +#. /flag:up +#: modules/devices/x86/x86_data.c:95 +msgctxt "x86-flag" +msgid "SMP kernel running on UP" +msgstr "Ядро SMP запущено на UP" + +#. /flag:art +#: modules/devices/x86/x86_data.c:96 +msgctxt "x86-flag" +msgid "Always-Running Timer" +msgstr "Постоянный таймер" + +#. /flag:arch_perfmon +#: modules/devices/x86/x86_data.c:97 +msgctxt "x86-flag" +msgid "Intel Architectural PerfMon" +msgstr "Архитектурный монитор призводительности Intel" + +#. /flag:pebs +#: modules/devices/x86/x86_data.c:98 +msgctxt "x86-flag" +msgid "Precise-Event Based Sampling" +msgstr "Сэмплинг, основанный на точных событиях" + +#. /flag:bts +#: modules/devices/x86/x86_data.c:99 +msgctxt "x86-flag" +msgid "Branch Trace Store" +msgstr "Хранилище отслеживания ветви" + +#. /flag:rep_good +#: modules/devices/x86/x86_data.c:100 +msgctxt "x86-flag" +msgid "rep microcode works well" +msgstr "микрокод rep работает нормально" + +#. /flag:acc_power +#: modules/devices/x86/x86_data.c:101 +msgctxt "x86-flag" +msgid "AMD accumulated power mechanism" +msgstr "Механизм накопления питания AMD" + +#. /flag:nopl +#: modules/devices/x86/x86_data.c:102 +msgctxt "x86-flag" +msgid "The NOPL (0F 1F) instructions" +msgstr "Инструкции NOPL (0F 1F)" + +#. /flag:xtopology +#: modules/devices/x86/x86_data.c:103 +msgctxt "x86-flag" +msgid "cpu topology enum extensions" +msgstr "расширения cpu топологии enum" + +#. /flag:tsc_reliable +#: modules/devices/x86/x86_data.c:104 +msgctxt "x86-flag" +msgid "TSC is known to be reliable" +msgstr "Счетчик метки времени (TSC) считается надежным" + +#. /flag:nonstop_tsc +#: modules/devices/x86/x86_data.c:105 +msgctxt "x86-flag" +msgid "TSC does not stop in C states" +msgstr "Счетчик метки времени (TSC) не останавливается в состояниях C" + +#. /flag:extd_apicid +#: modules/devices/x86/x86_data.c:106 +msgctxt "x86-flag" +msgid "has extended APICID (8 bits)" +msgstr "имеются расширенные APICID (8 бит)" + +#. /flag:amd_dcm +#: modules/devices/x86/x86_data.c:107 +msgctxt "x86-flag" +msgid "multi-node processor" +msgstr "многоузловой процессор" + +#. /flag:aperfmperf +#: modules/devices/x86/x86_data.c:108 +msgctxt "x86-flag" +msgid "APERFMPERF" +msgstr "" + +#. /flag:eagerfpu +#: modules/devices/x86/x86_data.c:109 +msgctxt "x86-flag" +msgid "Non lazy FPU restore" +msgstr "Неленивое восстановление FPU" + +#. /flag:nonstop_tsc_s3 +#: modules/devices/x86/x86_data.c:110 +msgctxt "x86-flag" +msgid "TSC doesn't stop in S3 state" +msgstr "Счетчик метки времени (TSC) не останавливается в состоянии S3" + +#. /flag:mce_recovery +#: modules/devices/x86/x86_data.c:111 +msgctxt "x86-flag" +msgid "CPU has recoverable machine checks" +msgstr "У процессора есть возможность восстановить машинный контроль" + +#. /flag:pni +#: modules/devices/x86/x86_data.c:114 +msgctxt "x86-flag" +msgid "SSE-3 (\"Prescott New Instructions\")" +msgstr "SSE-3 (\"Новые инструкции Prescott\")" + +#. /flag:pclmulqdq +#: modules/devices/x86/x86_data.c:115 +msgctxt "x86-flag" +msgid "" +"Perform a Carry-Less Multiplication of Quadword instruction - accelerator " +"for GCM)" +msgstr "" +"Выполнение менее ресурсоемкого умножения инструкции учетверенного слова - " +"ускоряет GCM)" + +#. /flag:dtes64 +#: modules/devices/x86/x86_data.c:116 +msgctxt "x86-flag" +msgid "64-bit Debug Store" +msgstr "Хранилище 64-битной отладки" + +#. /flag:monitor +#: modules/devices/x86/x86_data.c:117 +msgctxt "x86-flag" +msgid "Monitor/Mwait support (Intel SSE3 supplements)" +msgstr "Поддержка Monitor/Mwait (дополняет Intel SSE3)" + +#. /flag:ds_cpl +#: modules/devices/x86/x86_data.c:118 +msgctxt "x86-flag" +msgid "CPL Qual. Debug Store" +msgstr "Хранилище отладки CPL Qual." + +#. /flag:vmx +#: modules/devices/x86/x86_data.c:119 +msgctxt "x86-flag" +msgid "Hardware virtualization, Intel VMX" +msgstr "Аппаратная виртуализация, Intel VMX" + +#. /flag:smx +#: modules/devices/x86/x86_data.c:120 +msgctxt "x86-flag" +msgid "Safer mode TXT (TPM support)" +msgstr "Безопасный режим TXT (поддержка TPM)" + +#. /flag:est +#: modules/devices/x86/x86_data.c:121 +msgctxt "x86-flag" +msgid "Enhanced SpeedStep" +msgstr "Технология энергосбережения Enhanced SpeedStep" + +#. /flag:tm2 +#: modules/devices/x86/x86_data.c:122 +msgctxt "x86-flag" +msgid "Thermal Monitor 2" +msgstr "Монитор температуры 2" + +#. /flag:ssse3 +#: modules/devices/x86/x86_data.c:123 +msgctxt "x86-flag" +msgid "Supplemental SSE-3" +msgstr "Дополнительный SSE-3" + +#. /flag:cid +#: modules/devices/x86/x86_data.c:124 +msgctxt "x86-flag" +msgid "Context ID" +msgstr "ID контекста" + +#. /flag:sdbg +#: modules/devices/x86/x86_data.c:125 +msgctxt "x86-flag" +msgid "silicon debug" +msgstr "отладка кремния" + +#. /flag:fma +#: modules/devices/x86/x86_data.c:126 +msgctxt "x86-flag" +msgid "Fused multiply-add" +msgstr "Умножение-сложение с однократным округлением" + +#. /flag:cx16 +#: modules/devices/x86/x86_data.c:127 +msgctxt "x86-flag" +msgid "CMPXCHG16B" +msgstr "" + +#. /flag:xtpr +#: modules/devices/x86/x86_data.c:128 +msgctxt "x86-flag" +msgid "Send Task Priority Messages" +msgstr "Отправлять сообщения о приоритете задач" + +#. /flag:pdcm +#: modules/devices/x86/x86_data.c:129 +msgctxt "x86-flag" +msgid "Performance Capabilities" +msgstr "Возможности производительности" + +#. /flag:pcid +#: modules/devices/x86/x86_data.c:130 +msgctxt "x86-flag" +msgid "Process Context Identifiers" +msgstr "Идентификаторы контекста процесса" + +#. /flag:dca +#: modules/devices/x86/x86_data.c:131 +msgctxt "x86-flag" +msgid "Direct Cache Access" +msgstr "Прямой доступ к кэшу" + +#. /flag:sse4_1 +#: modules/devices/x86/x86_data.c:132 +msgctxt "x86-flag" +msgid "SSE-4.1" +msgstr "" + +#. /flag:sse4_2 +#: modules/devices/x86/x86_data.c:133 +msgctxt "x86-flag" +msgid "SSE-4.2" +msgstr "" + +#. /flag:x2apic +#: modules/devices/x86/x86_data.c:134 +msgctxt "x86-flag" +msgid "x2APIC" +msgstr "" + +#. /flag:movbe +#: modules/devices/x86/x86_data.c:135 +msgctxt "x86-flag" +msgid "Move Data After Swapping Bytes instruction" +msgstr "Инструкция переноса данных после подкачки байт" + +#. /flag:popcnt +#: modules/devices/x86/x86_data.c:136 +msgctxt "x86-flag" +msgid "" +"Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." +"e. bit count)" +msgstr "" +"Возвращение набора счетчика бит в 1 инструкцию (вес Хэмминга, т.е. счетчик " +"бит)" + +#. /flag:tsc_deadline_timer +#: modules/devices/x86/x86_data.c:137 +msgctxt "x86-flag" +msgid "Tsc deadline timer" +msgstr "Таймер окончания счетчика метки времени (TSC)" + +#. /flag:aes/aes-ni +#: modules/devices/x86/x86_data.c:138 +msgctxt "x86-flag" +msgid "Advanced Encryption Standard (New Instructions)" +msgstr "Стандарт дополнительного шифрования (новые инструкции)" + +#. /flag:xsave +#: modules/devices/x86/x86_data.c:139 +msgctxt "x86-flag" +msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" +msgstr "" +"Сохранение расширенных состояний процессора: также добавляет XGETBY,XRSTOR," +"XSETBY" + +#. /flag:avx +#: modules/devices/x86/x86_data.c:140 +msgctxt "x86-flag" +msgid "Advanced Vector Extensions" +msgstr "Дополнительные векторные расширения" + +#. /flag:f16c +#: modules/devices/x86/x86_data.c:141 +msgctxt "x86-flag" +msgid "16-bit fp conversions (CVT16)" +msgstr "16-битные конверсии fp (CVT16)" + +#. /flag:rdrand +#: modules/devices/x86/x86_data.c:142 +msgctxt "x86-flag" +msgid "Read Random Number from hardware random number generator instruction" +msgstr "Инструкция считывания случайного числа из аппаратного генератора" + +#. /flag:hypervisor +#: modules/devices/x86/x86_data.c:143 +msgctxt "x86-flag" +msgid "Running on a hypervisor" +msgstr "Запущено в гипервизоре" + +#. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 +#. /flag:rng +#: modules/devices/x86/x86_data.c:145 +msgctxt "x86-flag" +msgid "Random Number Generator present (xstore)" +msgstr "Наличие генератора случайных чисел (xstore)" + +#. /flag:rng_en +#: modules/devices/x86/x86_data.c:146 +msgctxt "x86-flag" +msgid "Random Number Generator enabled" +msgstr "Генератор случайных чисел включен" + +#. /flag:ace +#: modules/devices/x86/x86_data.c:147 +msgctxt "x86-flag" +msgid "on-CPU crypto (xcrypt)" +msgstr "шифрование на процессоре (xcrypt)" + +#. /flag:ace_en +#: modules/devices/x86/x86_data.c:148 +msgctxt "x86-flag" +msgid "on-CPU crypto enabled" +msgstr "шифрование на процессоре включено" + +#. /flag:ace2 +#: modules/devices/x86/x86_data.c:149 +msgctxt "x86-flag" +msgid "Advanced Cryptography Engine v2" +msgstr "" + +#. /flag:ace2_en +#: modules/devices/x86/x86_data.c:150 +msgctxt "x86-flag" +msgid "ACE v2 enabled" +msgstr "ACE v2 включен" + +#. /flag:phe +#: modules/devices/x86/x86_data.c:151 +msgctxt "x86-flag" +msgid "PadLock Hash Engine" +msgstr "Движок контрольных сумм PadLock" + +#. /flag:phe_en +#: modules/devices/x86/x86_data.c:152 +msgctxt "x86-flag" +msgid "PHE enabled" +msgstr "PHE включен" + +#. /flag:pmm +#: modules/devices/x86/x86_data.c:153 +msgctxt "x86-flag" +msgid "PadLock Montgomery Multiplier" +msgstr "Множитель PadLock Montgomery" + +#. /flag:pmm_en +#: modules/devices/x86/x86_data.c:154 +msgctxt "x86-flag" +msgid "PMM enabled" +msgstr "PMM включен" + +#. /flag:lahf_lm +#: modules/devices/x86/x86_data.c:156 +msgctxt "x86-flag" +msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" +msgstr "" +"Загрузка AH из флагов (LAHF) и хранение AH в флагах (SAHF) в длинном режиме" + +#. /flag:cmp_legacy +#: modules/devices/x86/x86_data.c:157 +msgctxt "x86-flag" +msgid "If yes HyperThreading not valid" +msgstr "Если да, многопоточность не работает" + +#. /flag:svm +#: modules/devices/x86/x86_data.c:158 +msgctxt "x86-flag" +msgid "\"Secure virtual machine\": AMD-V" +msgstr "\"Безопасная виртуальная машина\": AMD-V" + +#. /flag:extapic +#: modules/devices/x86/x86_data.c:159 +msgctxt "x86-flag" +msgid "Extended APIC space" +msgstr "Расширенное пространство APIC" + +#. /flag:cr8_legacy +#: modules/devices/x86/x86_data.c:160 +msgctxt "x86-flag" +msgid "CR8 in 32-bit mode" +msgstr "CR8 в 32-битном режиме" + +#. /flag:abm +#: modules/devices/x86/x86_data.c:161 +msgctxt "x86-flag" +msgid "Advanced Bit Manipulation" +msgstr "Дополнительное управление битами" + +#. /flag:sse4a +#: modules/devices/x86/x86_data.c:162 +msgctxt "x86-flag" +msgid "SSE-4A" +msgstr "" + +#. /flag:misalignsse +#: modules/devices/x86/x86_data.c:163 +msgctxt "x86-flag" +msgid "" +"indicates if a general-protection exception (#GP) is generated when some " +"legacy SSE instructions operate on unaligned data. Also depends on CR0 and " +"Alignment Checking bit" +msgstr "" +"показывает, если исключение из общей защиты (#GP) создано при использовании " +"неверных данных некоторыми устаревшими инструкциями SSE. Также зависит от " +"CR0 и бита проверки выравнивания" + +#. /flag:3dnowprefetch +#: modules/devices/x86/x86_data.c:164 +msgctxt "x86-flag" +msgid "3DNow prefetch instructions" +msgstr "инструкции 3DNow prefetch" + +#. /flag:osvw +#: modules/devices/x86/x86_data.c:165 +msgctxt "x86-flag" +msgid "" +"indicates OS Visible Workaround, which allows the OS to work around " +"processor errata." +msgstr "" +"отображает OS Visible Workaround, позволяющий ОС работать в обход опечаток " +"процессора." + +#. /flag:ibs +#: modules/devices/x86/x86_data.c:166 +msgctxt "x86-flag" +msgid "Instruction Based Sampling" +msgstr "Сэмплинг, основанный на инструкциях" + +#. /flag:xop +#: modules/devices/x86/x86_data.c:167 +msgctxt "x86-flag" +msgid "extended AVX instructions" +msgstr "расширенные инструкции AVX" + +#. /flag:skinit +#: modules/devices/x86/x86_data.c:168 +msgctxt "x86-flag" +msgid "SKINIT/STGI instructions" +msgstr "инструкции SKINIT/STGI" + +#. /flag:wdt +#: modules/devices/x86/x86_data.c:169 +msgctxt "x86-flag" +msgid "Watchdog timer" +msgstr "Сторожевой таймер" + +#. /flag:lwp +#: modules/devices/x86/x86_data.c:170 +msgctxt "x86-flag" +msgid "Light Weight Profiling" +msgstr "Легковесное профилирование" + +#. /flag:fma4 +#: modules/devices/x86/x86_data.c:171 +msgctxt "x86-flag" +msgid "4 operands MAC instructions" +msgstr "Инструкции MAC 4 операндов" + +#. /flag:tce +#: modules/devices/x86/x86_data.c:172 +msgctxt "x86-flag" +msgid "translation cache extension" +msgstr "расширение переноса кэша" + +#. /flag:nodeid_msr +#: modules/devices/x86/x86_data.c:173 +msgctxt "x86-flag" +msgid "NodeId MSR" +msgstr "" + +#. /flag:tbm +#: modules/devices/x86/x86_data.c:174 +msgctxt "x86-flag" +msgid "Trailing Bit Manipulation" +msgstr "Скользящее манипулирование битами" + +#. /flag:topoext +#: modules/devices/x86/x86_data.c:175 +msgctxt "x86-flag" +msgid "Topology Extensions CPUID leafs" +msgstr "Расширения топологии потоков CPUID" + +#. /flag:perfctr_core +#: modules/devices/x86/x86_data.c:176 +msgctxt "x86-flag" +msgid "Core Performance Counter Extensions" +msgstr "Расширения счетчика производительности ядра" + +#. /flag:perfctr_nb +#: modules/devices/x86/x86_data.c:177 +msgctxt "x86-flag" +msgid "NB Performance Counter Extensions" +msgstr "Расширения счетчика производительности NB" + +#. /flag:bpext +#: modules/devices/x86/x86_data.c:178 +msgctxt "x86-flag" +msgid "data breakpoint extension" +msgstr "расширение точки прерывания данных" + +#. /flag:ptsc +#: modules/devices/x86/x86_data.c:179 +msgctxt "x86-flag" +msgid "performance time-stamp counter" +msgstr "счетчик временной метки производительности" + +#. /flag:perfctr_l2 +#: modules/devices/x86/x86_data.c:180 +msgctxt "x86-flag" +msgid "L2 Performance Counter Extensions" +msgstr "Расширения счетчика производительности L2" + +#. /flag:mwaitx +#: modules/devices/x86/x86_data.c:181 +msgctxt "x86-flag" +msgid "MWAIT extension (MONITORX/MWAITX)" +msgstr "Расширение MWAIT (MONITORX/MWAITX)" + +#. /flag:cpb +#: modules/devices/x86/x86_data.c:183 +msgctxt "x86-flag" +msgid "AMD Core Performance Boost" +msgstr "Увеличение производительности ядра AMD" + +#. /flag:epb +#: modules/devices/x86/x86_data.c:184 +msgctxt "x86-flag" +msgid "IA32_ENERGY_PERF_BIAS support" +msgstr "Поддержка IA32_ENERGY_PERF_BIAS" + +#. /flag:hw_pstate +#: modules/devices/x86/x86_data.c:185 +msgctxt "x86-flag" +msgid "AMD HW-PState" +msgstr "" + +#. /flag:proc_feedback +#: modules/devices/x86/x86_data.c:186 +msgctxt "x86-flag" +msgid "AMD ProcFeedbackInterface" +msgstr "" + +#. /flag:intel_pt +#: modules/devices/x86/x86_data.c:187 +msgctxt "x86-flag" +msgid "Intel Processor Tracing" +msgstr "Отслеживание процессора Intel" + +#. /flag:tpr_shadow +#: modules/devices/x86/x86_data.c:189 +msgctxt "x86-flag" +msgid "Intel TPR Shadow" +msgstr "" + +#. /flag:vnmi +#: modules/devices/x86/x86_data.c:190 +msgctxt "x86-flag" +msgid "Intel Virtual NMI" +msgstr "" + +#. /flag:flexpriority +#: modules/devices/x86/x86_data.c:191 +msgctxt "x86-flag" +msgid "Intel FlexPriority" +msgstr "" + +#. /flag:ept +#: modules/devices/x86/x86_data.c:192 +msgctxt "x86-flag" +msgid "Intel Extended Page Table" +msgstr "" + +#. /flag:vpid +#: modules/devices/x86/x86_data.c:193 +msgctxt "x86-flag" +msgid "Intel Virtual Processor ID" +msgstr "" + +#. /flag:vmmcall +#: modules/devices/x86/x86_data.c:194 +msgctxt "x86-flag" +msgid "prefer VMMCALL to VMCALL" +msgstr "предпочитать VMMCALL, а не VMCALL" + +#. /flag:fsgsbase +#: modules/devices/x86/x86_data.c:196 +msgctxt "x86-flag" +msgid "{RD/WR}{FS/GS}BASE instructions" +msgstr "Инструкции {RD/WR}{FS/GS}BASE" + +#. /flag:tsc_adjust +#: modules/devices/x86/x86_data.c:197 +msgctxt "x86-flag" +msgid "TSC adjustment MSR" +msgstr "TSC выраснивание MSR" + +#. /flag:bmi1 +#: modules/devices/x86/x86_data.c:198 +msgctxt "x86-flag" +msgid "1st group bit manipulation extensions" +msgstr "Расширения управления битами 1-й группы" + +#. /flag:hle +#: modules/devices/x86/x86_data.c:199 +msgctxt "x86-flag" +msgid "Hardware Lock Elision" +msgstr "Аппаратная блокировка Elision" + +#. /flag:avx2 +#: modules/devices/x86/x86_data.c:200 +msgctxt "x86-flag" +msgid "AVX2 instructions" +msgstr "Инструкции AVX2" + +#. /flag:smep +#: modules/devices/x86/x86_data.c:201 +msgctxt "x86-flag" +msgid "Supervisor Mode Execution Protection" +msgstr "Защита выполнения режима супервизора" + +#. /flag:bmi2 +#: modules/devices/x86/x86_data.c:202 +msgctxt "x86-flag" +msgid "2nd group bit manipulation extensions" +msgstr "Расширения управления битами 2-й группы" + +#. /flag:erms +#: modules/devices/x86/x86_data.c:203 +msgctxt "x86-flag" +msgid "Enhanced REP MOVSB/STOSB" +msgstr "Расширенный REP MOVSB/STOSB" + +#. /flag:invpcid +#: modules/devices/x86/x86_data.c:204 +msgctxt "x86-flag" +msgid "Invalidate Processor Context ID" +msgstr "Аннулировать ID контекста процессора" + +#. /flag:rtm +#: modules/devices/x86/x86_data.c:205 +msgctxt "x86-flag" +msgid "Restricted Transactional Memory" +msgstr "Ограниченная память переносов" + +#. /flag:cqm +#: modules/devices/x86/x86_data.c:206 +msgctxt "x86-flag" +msgid "Cache QoS Monitoring" +msgstr "Мониторинг кэша QoS" + +#. /flag:mpx +#: modules/devices/x86/x86_data.c:207 +msgctxt "x86-flag" +msgid "Memory Protection Extension" +msgstr "Расширение защиты памяти" + +#. /flag:avx512f +#: modules/devices/x86/x86_data.c:208 +msgctxt "x86-flag" +msgid "AVX-512 foundation" +msgstr "Основа AVX-512" + +#. /flag:avx512dq +#: modules/devices/x86/x86_data.c:209 +msgctxt "x86-flag" +msgid "AVX-512 Double/Quad instructions" +msgstr "Инструкции AVX-512 Double/Quad" + +#. /flag:rdseed +#: modules/devices/x86/x86_data.c:210 +msgctxt "x86-flag" +msgid "The RDSEED instruction" +msgstr "Инструкция RDSEED" + +#. /flag:adx +#: modules/devices/x86/x86_data.c:211 +msgctxt "x86-flag" +msgid "The ADCX and ADOX instructions" +msgstr "Инструкции ADCX и ADOX" + +#. /flag:smap +#: modules/devices/x86/x86_data.c:212 +msgctxt "x86-flag" +msgid "Supervisor Mode Access Prevention" +msgstr "Предотвращение доступа к режиму супервизора" + +#. /flag:clflushopt +#: modules/devices/x86/x86_data.c:213 +msgctxt "x86-flag" +msgid "CLFLUSHOPT instruction" +msgstr "Инструкция CLFLUSHOPT" + +#. /flag:clwb +#: modules/devices/x86/x86_data.c:214 +msgctxt "x86-flag" +msgid "CLWB instruction" +msgstr "Инструкция CLWB" + +#. /flag:avx512pf +#: modules/devices/x86/x86_data.c:215 +msgctxt "x86-flag" +msgid "AVX-512 Prefetch" +msgstr "" + +#. /flag:avx512er +#: modules/devices/x86/x86_data.c:216 +msgctxt "x86-flag" +msgid "AVX-512 Exponential and Reciprocal" +msgstr "" + +#. /flag:avx512cd +#: modules/devices/x86/x86_data.c:217 +msgctxt "x86-flag" +msgid "AVX-512 Conflict Detection" +msgstr "Обнаружения конфликтов AVX-512" + +#. /flag:sha_ni +#: modules/devices/x86/x86_data.c:218 +msgctxt "x86-flag" +msgid "SHA1/SHA256 Instruction Extensions" +msgstr "Расширения инструкций SHA1/SHA256" + +#. /flag:avx512bw +#: modules/devices/x86/x86_data.c:219 +msgctxt "x86-flag" +msgid "AVX-512 Byte/Word instructions" +msgstr "Инструкции AVX-512 Byte/Word" + +#. /flag:avx512vl +#: modules/devices/x86/x86_data.c:220 +msgctxt "x86-flag" +msgid "AVX-512 128/256 Vector Length extensions" +msgstr "Расширения длины вектора AVX-512 128/256" + +#. /flag:xsaveopt +#: modules/devices/x86/x86_data.c:222 +msgctxt "x86-flag" +msgid "Optimized XSAVE" +msgstr "Оптимизированный XSAVE" + +#. /flag:xsavec +#: modules/devices/x86/x86_data.c:223 +msgctxt "x86-flag" +msgid "XSAVEC" +msgstr "" + +#. /flag:xgetbv1 +#: modules/devices/x86/x86_data.c:224 +msgctxt "x86-flag" +msgid "XGETBV with ECX = 1" +msgstr "XGETBV с ECX = 1" + +#. /flag:xsaves +#: modules/devices/x86/x86_data.c:225 +msgctxt "x86-flag" +msgid "XSAVES/XRSTORS" +msgstr "" + +#. /flag:cqm_llc +#: modules/devices/x86/x86_data.c:227 +msgctxt "x86-flag" +msgid "LLC QoS" +msgstr "" + +#. /flag:cqm_occup_llc +#: modules/devices/x86/x86_data.c:229 +msgctxt "x86-flag" +msgid "LLC occupancy monitoring" +msgstr "Мониторинг занятости LLC" + +#. /flag:cqm_mbm_total +#: modules/devices/x86/x86_data.c:230 +msgctxt "x86-flag" +msgid "LLC total MBM monitoring" +msgstr "Полный MBM-мониторинг LLC" + +#. /flag:cqm_mbm_local +#: modules/devices/x86/x86_data.c:231 +msgctxt "x86-flag" +msgid "LLC local MBM monitoring" +msgstr "Локальный MBM-мониторинг LLC" + +#. /flag:clzero +#: modules/devices/x86/x86_data.c:233 +msgctxt "x86-flag" +msgid "CLZERO instruction" +msgstr "Инструкция CLZERO" + +#. /flag:irperf +#: modules/devices/x86/x86_data.c:234 +msgctxt "x86-flag" +msgid "instructions retired performance counter" +msgstr "инструкции счетчика отложенной производительности" + +#. /flag:dtherm +#: modules/devices/x86/x86_data.c:236 +msgctxt "x86-flag" +msgid "digital thermal sensor" +msgstr "цифровой сенсор температуры" + +#. /flag:ida +#: modules/devices/x86/x86_data.c:237 +msgctxt "x86-flag" +msgid "Intel Dynamic Acceleration" +msgstr "Динамическое ускорение Intel" + +#. /flag:arat +#: modules/devices/x86/x86_data.c:238 +msgctxt "x86-flag" +msgid "Always Running APIC Timer" +msgstr "Таймер APIC всегда запущен" + +#. /flag:pln +#: modules/devices/x86/x86_data.c:239 +msgctxt "x86-flag" +msgid "Intel Power Limit Notification" +msgstr "Уведомление о лимите энергии Intel" + +#. /flag:pts +#: modules/devices/x86/x86_data.c:240 +msgctxt "x86-flag" +msgid "Intel Package Thermal Status" +msgstr "Статус температуры Intel" + +#. /flag:hwp +#: modules/devices/x86/x86_data.c:241 +msgctxt "x86-flag" +msgid "Intel Hardware P-states" +msgstr "Аппаратные P-states Intel" + +#. /flag:hwp_notify +#: modules/devices/x86/x86_data.c:242 +msgctxt "x86-flag" +msgid "HWP notification" +msgstr "Уведомление HWP" + +#. /flag:hwp_act_window +#: modules/devices/x86/x86_data.c:243 +msgctxt "x86-flag" +msgid "HWP Activity Window" +msgstr "Окно активности HWP" + +#. /flag:hwp_epp +#: modules/devices/x86/x86_data.c:244 +msgctxt "x86-flag" +msgid "HWP Energy Performance Preference" +msgstr "Настройка производительности энергии HWP" + +#. /flag:hwp_pkg_req +#: modules/devices/x86/x86_data.c:245 +msgctxt "x86-flag" +msgid "HWP package-level request" +msgstr "Запрос уровня пакета HWP" + +#. /flag:npt +#: modules/devices/x86/x86_data.c:247 +msgctxt "x86-flag" +msgid "AMD Nested Page Table support" +msgstr "Поддержка таблиц вложенной страницы AMD" + +#. /flag:lbrv +#: modules/devices/x86/x86_data.c:248 +msgctxt "x86-flag" +msgid "AMD LBR Virtualization support" +msgstr "Поддержка виртуализации AMD LBR" + +#. /flag:svm_lock +#: modules/devices/x86/x86_data.c:249 +msgctxt "x86-flag" +msgid "AMD SVM locking MSR" +msgstr "Блокировка MSR AMD SVM" + +#. /flag:nrip_save +#: modules/devices/x86/x86_data.c:250 +msgctxt "x86-flag" +msgid "AMD SVM next_rip save" +msgstr "Сохранение next_rip AMD SVM" + +#. /flag:tsc_scale +#: modules/devices/x86/x86_data.c:251 +msgctxt "x86-flag" +msgid "AMD TSC scaling support" +msgstr "Поддержка масштабирования AMD TSC" + +#. /flag:vmcb_clean +#: modules/devices/x86/x86_data.c:252 +msgctxt "x86-flag" +msgid "AMD VMCB clean bits support" +msgstr "Поддержка чистых бит AMD VMCB" + +#. /flag:flushbyasid +#: modules/devices/x86/x86_data.c:253 +msgctxt "x86-flag" +msgid "AMD flush-by-ASID support" +msgstr "Поддержка AMD flush-by-ASID" + +#. /flag:decodeassists +#: modules/devices/x86/x86_data.c:254 +msgctxt "x86-flag" +msgid "AMD Decode Assists support" +msgstr "Поддержка помощи декодирования" + +#. /flag:pausefilter +#: modules/devices/x86/x86_data.c:255 +msgctxt "x86-flag" +msgid "AMD filtered pause intercept" +msgstr "Перехват фильтрованной паузы AMD" + +#. /flag:pfthreshold +#: modules/devices/x86/x86_data.c:256 +msgctxt "x86-flag" +msgid "AMD pause filter threshold" +msgstr "Порог фильтра паузы AMD" + +#. /flag:avic +#: modules/devices/x86/x86_data.c:257 +msgctxt "x86-flag" +msgid "Virtual Interrupt Controller" +msgstr "Контроллер виртуального прерывания" + +#. /flag:pku +#: modules/devices/x86/x86_data.c:259 +msgctxt "x86-flag" +msgid "Protection Keys for Userspace" +msgstr "Ключи защиты для пространства пользователя" + +#. /flag:ospke +#: modules/devices/x86/x86_data.c:260 +msgctxt "x86-flag" +msgid "OS Protection Keys Enable" +msgstr "Включение защиты ключей ОС" + +#. /flag:overflow_recov +#: modules/devices/x86/x86_data.c:262 +msgctxt "x86-flag" +msgid "MCA overflow recovery support" +msgstr "Поддержка восстановления после переполнения MCA" + +#. /flag:succor +#: modules/devices/x86/x86_data.c:263 +msgctxt "x86-flag" +msgid "uncorrectable error containment and recovery" +msgstr "неисправимое содержание ошибки и восстановление" + +#. /flag:smca +#: modules/devices/x86/x86_data.c:264 +msgctxt "x86-flag" +msgid "Scalable MCA" +msgstr "Масштабируемый MCA" + +#. /bug:f00f +#: modules/devices/x86/x86_data.c:267 +msgctxt "x86-flag" +msgid "Intel F00F bug" +msgstr "Ошибка Intel F00F" + +#. /bug:fdiv +#: modules/devices/x86/x86_data.c:268 +msgctxt "x86-flag" +msgid "FPU FDIV" +msgstr "" + +#. /bug:coma +#: modules/devices/x86/x86_data.c:269 +msgctxt "x86-flag" +msgid "Cyrix 6x86 coma" +msgstr "" + +#. /bug:tlb_mmatch +#: modules/devices/x86/x86_data.c:270 +msgctxt "x86-flag" +msgid "AMD Erratum 383" +msgstr "" + +#. /bug:apic_c1e +#. /bug:amd_e400 +#: modules/devices/x86/x86_data.c:271 modules/devices/x86/x86_data.c:280 +msgctxt "x86-flag" +msgid "AMD Erratum 400" +msgstr "" + +#. /bug:11ap +#: modules/devices/x86/x86_data.c:272 +msgctxt "x86-flag" +msgid "Bad local APIC aka 11AP" +msgstr "Неверный локальный APIC или 11AP" + +#. /bug:fxsave_leak +#: modules/devices/x86/x86_data.c:273 +msgctxt "x86-flag" +msgid "FXSAVE leaks FOP/FIP/FOP" +msgstr "FXSAVE утекает FOP/FIP/FOP" + +#. /bug:clflush_monitor +#: modules/devices/x86/x86_data.c:274 +msgctxt "x86-flag" +msgid "AAI65, CLFLUSH required before MONITOR" +msgstr "AAI65, CLFLUSH требуются до MONITOR" + +#. /bug:sysret_ss_attrs +#: modules/devices/x86/x86_data.c:275 +msgctxt "x86-flag" +msgid "SYSRET doesn't fix up SS attrs" +msgstr "SYSRET не исправляет атрибуты SS" + +#. /bug:espfix +#: modules/devices/x86/x86_data.c:276 +msgctxt "x86-flag" +msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" +msgstr "IRET на 16-битные SS прерывает высшие биты ESP/RSP" + +#. /bug:null_seg +#: modules/devices/x86/x86_data.c:277 +msgctxt "x86-flag" +msgid "Nulling a selector preserves the base" +msgstr "Обнуление селектора продпочитается основному" + +#. /bug:swapgs_fence +#: modules/devices/x86/x86_data.c:278 +msgctxt "x86-flag" +msgid "SWAPGS without input dep on GS" +msgstr "SWAPGS без ввода зависит от GS" + +#. /bug:monitor +#: modules/devices/x86/x86_data.c:279 +msgctxt "x86-flag" +msgid "IPI required to wake up remote CPU" +msgstr "требуется IPI для удаленного пробуждения процессора" + +#. /x86/kernel/cpu/powerflags.h +#. /flag:pm:ts +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "temperature sensor" +msgstr "сенсор температуры" + +#. /flag:pm:fid +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "frequency id control" +msgstr "контроль частоты id" + +#. /flag:pm:vid +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "voltage id control" +msgstr "контроль вольтажа id" + +#. /flag:pm:ttp +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "thermal trip" +msgstr "изменение температуры" + +#. /flag:pm:tm +#: modules/devices/x86/x86_data.c:287 +msgctxt "x86-flag" +msgid "hardware thermal control" +msgstr "аппаратный контроль температуры" + +#. /flag:pm:stc +#: modules/devices/x86/x86_data.c:288 +msgctxt "x86-flag" +msgid "software thermal control" +msgstr "программный контроль температуры" + +#. /flag:pm:100mhzsteps +#: modules/devices/x86/x86_data.c:289 +msgctxt "x86-flag" +msgid "100 MHz multiplier control" +msgstr "контроль множителя 100 МГц" + +#. /flag:pm:hwpstate +#: modules/devices/x86/x86_data.c:290 +msgctxt "x86-flag" +msgid "hardware P-state control" +msgstr "аппаратное управление P-state" + +#. /flag:pm:cpb +#: modules/devices/x86/x86_data.c:291 +msgctxt "x86-flag" +msgid "core performance boost" +msgstr "повышение производительности ядра" + +#. /flag:pm:eff_freq_ro +#: modules/devices/x86/x86_data.c:292 +msgctxt "x86-flag" +msgid "Readonly aperf/mperf" +msgstr "aperf/mperf только для чтения" + +#. /flag:pm:proc_feedback +#: modules/devices/x86/x86_data.c:293 +msgctxt "x86-flag" +msgid "processor feedback interface" +msgstr "интерфейс отзыва процессора" + +#. /flag:pm:acc_power +#: modules/devices/x86/x86_data.c:294 +msgctxt "x86-flag" +msgid "accumulated power mechanism" +msgstr "механизм накопления питания" + +#: modules/network.c:59 +msgid "Interfaces" +msgstr "Интерфейсы" + +#: modules/network.c:60 +msgid "IP Connections" +msgstr "IP Подключения" + +#: modules/network.c:61 +msgid "Routing Table" +msgstr "Таблица маршрутизации" + +#: modules/network.c:62 modules/network.c:303 +msgid "ARP Table" +msgstr "Таблица ARP" + +#: modules/network.c:63 +msgid "DNS Servers" +msgstr "DNS сервера" + +#: modules/network.c:64 +msgid "Statistics" +msgstr "Статистика" + +#: modules/network.c:65 +msgid "Shared Directories" +msgstr "Общие каталоги" + +#: modules/network.c:304 modules/network.c:326 modules/network.c:357 +#: modules/network/net.c:477 +msgid "IP Address" +msgstr "IP-адрес" + +#: modules/network.c:304 modules/network.c:357 modules/network.c:374 +msgid "Interface" +msgstr "Интерфейс" + +#: modules/network.c:304 +msgid "MAC Address" +msgstr "MAC-адрес" + +#: modules/network.c:313 +msgid "SAMBA" +msgstr "" + +#: modules/network.c:314 +msgid "NFS" +msgstr "" + +#: modules/network.c:325 +msgid "Name Servers" +msgstr "" + +#: modules/network.c:340 +msgid "Connections" +msgstr "" + +#: modules/network.c:341 +msgid "Local Address" +msgstr "Локальный адрес" + +#: modules/network.c:341 +msgid "Protocol" +msgstr "Протокол" + +#: modules/network.c:341 +msgid "Foreign Address" +msgstr "Удалённый адрес" + +#: modules/network.c:341 +msgid "State" +msgstr "Состояние" + +#: modules/network.c:357 +msgid "Sent" +msgstr "Отправлено" + +#: modules/network.c:357 +msgid "Received" +msgstr "Получено" + +#: modules/network.c:373 +msgid "IP routing table" +msgstr "" + +#: modules/network.c:374 +msgid "Destination/Gateway" +msgstr "Цель / Шлюз" + +#: modules/network.c:374 +msgid "Flags" +msgstr "Флаги" + +#: modules/network.c:374 modules/network/net.c:478 +msgid "Mask" +msgstr "Маска" + +#: modules/network.c:402 +msgid "Network" +msgstr "Сеть" + +#: modules/network.c:435 +msgid "Gathers information about this computer's network connection" +msgstr "Собирает информацию о сетевых подключениях" + +#: modules/network/net.c:72 +msgctxt "wi-op-mode" +msgid "Auto" +msgstr "" + +#: modules/network/net.c:73 +msgctxt "wi-op-mode" +msgid "Ad-Hoc" +msgstr "" + +#: modules/network/net.c:74 +msgctxt "wi-op-mode" +msgid "Managed" +msgstr "" + +#: modules/network/net.c:75 +msgctxt "wi-op-mode" +msgid "Master" +msgstr "" + +#: modules/network/net.c:76 +msgctxt "wi-op-mode" +msgid "Repeater" +msgstr "" + +#: modules/network/net.c:77 +msgctxt "wi-op-mode" +msgid "Secondary" +msgstr "" + +#: modules/network/net.c:78 +msgctxt "wi-op-mode" +msgid "(Unknown)" +msgstr "" + +#: modules/network/net.c:242 modules/network/net.c:262 +#: modules/network/net.c:270 +msgctxt "net-if-type" +msgid "Ethernet" +msgstr "" + +#: modules/network/net.c:243 +msgctxt "net-if-type" +msgid "Loopback" +msgstr "" + +#: modules/network/net.c:244 +msgctxt "net-if-type" +msgid "Point-to-Point" +msgstr "" + +#: modules/network/net.c:245 modules/network/net.c:246 +#: modules/network/net.c:247 modules/network/net.c:248 +#: modules/network/net.c:272 +msgctxt "net-if-type" +msgid "Wireless" +msgstr "" + +#: modules/network/net.c:249 +msgctxt "net-if-type" +msgid "Virtual Point-to-Point (TUN)" +msgstr "" + +#: modules/network/net.c:250 +msgctxt "net-if-type" +msgid "Ethernet (TAP)" +msgstr "" + +#: modules/network/net.c:251 +msgctxt "net-if-type" +msgid "Parallel Line Internet Protocol" +msgstr "" + +#: modules/network/net.c:252 +msgctxt "net-if-type" +msgid "Infrared" +msgstr "" + +#: modules/network/net.c:253 modules/network/net.c:271 +msgctxt "net-if-type" +msgid "Serial Line Internet Protocol" +msgstr "" + +#: modules/network/net.c:254 +msgctxt "net-if-type" +msgid "Integrated Services Digital Network" +msgstr "" + +#: modules/network/net.c:255 +msgctxt "net-if-type" +msgid "IPv6-over-IPv4 Tunnel" +msgstr "" + +#: modules/network/net.c:256 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface (NAT)" +msgstr "" + +#: modules/network/net.c:257 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface" +msgstr "" + +#: modules/network/net.c:258 +msgctxt "net-if-type" +msgid "Personal Area Network (PAN)" +msgstr "" + +#: modules/network/net.c:259 +msgctxt "net-if-type" +msgid "Bluetooth" +msgstr "" + +#: modules/network/net.c:260 +msgctxt "net-if-type" +msgid "Bridge Interface" +msgstr "" + +#: modules/network/net.c:261 +msgctxt "net-if-type" +msgid "Hamachi Virtual Personal Network" +msgstr "" + +#: modules/network/net.c:263 +msgctxt "net-if-type" +msgid "Intermediate Functional Block" +msgstr "" + +#: modules/network/net.c:264 +msgctxt "net-if-type" +msgid "GRE Network Tunnel" +msgstr "" + +#: modules/network/net.c:265 +msgctxt "net-if-type" +msgid "Mesh Network" +msgstr "" + +#: modules/network/net.c:266 +msgctxt "net-if-type" +msgid "Wireless Master Interface" +msgstr "" + +#: modules/network/net.c:267 +msgctxt "net-if-type" +msgid "VirtualBox Virtual Network Interface" +msgstr "" + +#: modules/network/net.c:273 +msgctxt "net-if-type" +msgid "Wireless (WAN)" +msgstr "" + +#: modules/network/net.c:275 +msgctxt "net-if-type" +msgid "(Unknown)" +msgstr "" + +#: modules/network/net.c:348 modules/network/net.c:358 +msgid "Network Interfaces" +msgstr "" + +#: modules/network/net.c:348 +msgid "None Found" +msgstr "" + +#: modules/network/net.c:400 modules/network/net.c:422 +#: modules/network/net.c:423 +msgid "MiB" +msgstr " МиБ" + +#: modules/network/net.c:414 +msgid "Network Adapter Properties" +msgstr "Свойства сетевого адаптера" + +#: modules/network/net.c:415 +msgid "Interface Type" +msgstr "Тип интерфейса" + +#: modules/network/net.c:416 +msgid "Hardware Address (MAC)" +msgstr "Аппаратный адрес (MAC)" + +#: modules/network/net.c:420 +msgid "MTU" +msgstr "" + +#: modules/network/net.c:421 +msgid "Transfer Details" +msgstr "Информация о передаче данных" + +#: modules/network/net.c:422 +msgid "Bytes Received" +msgstr "Получено байт" + +#: modules/network/net.c:423 +msgid "Bytes Sent" +msgstr "Отправлено байт" + +#: modules/network/net.c:440 modules/network/net.c:462 +#: modules/network/net.c:463 +msgid "dBm" +msgstr "" + +#: modules/network/net.c:440 +msgid "mW" +msgstr "" + +#: modules/network/net.c:454 +msgid "Wireless Properties" +msgstr "" + +#: modules/network/net.c:455 +msgid "Network Name (SSID)" +msgstr "" + +#: modules/network/net.c:456 +msgid "Bit Rate" +msgstr "" + +#: modules/network/net.c:456 +msgid "Mb/s" +msgstr "" + +#: modules/network/net.c:457 +msgid "Transmission Power" +msgstr "" + +#: modules/network/net.c:459 +msgid "Status" +msgstr "" + +#: modules/network/net.c:460 +msgid "Link Quality" +msgstr "" + +#: modules/network/net.c:461 +msgid "Signal / Noise" +msgstr "" + +#: modules/network/net.c:476 +msgid "Internet Protocol (IPv4)" +msgstr "" + +#: modules/network/net.c:477 modules/network/net.c:478 +#: modules/network/net.c:480 +msgid "(Not set)" +msgstr "" + +#: modules/network/net.c:479 +msgid "Broadcast Address" +msgstr "Широковещательный адрес" + +#~ msgid "CPU Clock" +#~ msgstr "Частота процессора" + +#~ msgid "pixels" +#~ msgstr "пикселей" + +#~ msgid "Desktop Environment" +#~ msgstr "Среда рабочего стола" + +#~ msgid "%s$CPU%d$%s=%.2fMHz\n" +#~ msgstr "%s$CPU%d$%s=%.2f МГц\n" diff --git a/po/salvage.sh b/po/salvage.sh new file mode 100644 index 00000000..295187f4 --- /dev/null +++ b/po/salvage.sh @@ -0,0 +1,83 @@ +#!bash + +# To help with https://github.com/lpereira/hardinfo/issues/100 +# Saves the old label translations. +# +# This is not an automated magical tool, it is an ugly hack of a helper +# for a tedious process. Read the instructions if you want to use it! +# +# bash updatepo.sh +# { commit here or the next commit's diff will be noisy and useless } +# +# { repeat for each language... } +# bash salvage.sh XX.po >XX.po.salv +# { edit XX.po.salv, remove nonsense } +# msgcat --use-first XX.po XX.po.salv > XX.po.merged +# diff XX.po XX.po.merged +# { if there are any added translations, they do not actually appear +# in hardinfo.pot, and they will end up "obsolete" and then re-processed +# in the next salvage. So save some hassle and just remove them now. } +# mv XX.po.merged XX.po +# +# { when all languages are done run updatepo.sh again to clean up } +# bash updatepo.sh +# + +if [ -z "$@" ]; then + echo "READ script before running!" + echo "Error: Needs .po file to process" + exit 1 +fi + +do_salvage() { + msgid=() + msgstr=() + + while IFS= read -r line; do + msgid+=( "$line" ) + done <<< "$MSGEXEC_MSGID" + + while IFS= read -r line; do + msgstr+=( "$line" ) + done <&0 + + for i in ${!msgid[@]}; do + # column titles + msgid[$i]=`echo "${msgid[$i]}" | sed -e 's/ColumnTitle\$.*=//'` + msgstr[$i]=`echo "${msgstr[$i]}" | sed -e 's/ColumnTitle\$.*=//'` + + # section titles + msgid[$i]=`echo "${msgid[$i]}" | sed -e 's/\[\(.*\)\]/\1/'` + msgstr[$i]=`echo "${msgstr[$i]}" | sed -e 's/\[\(.*\)\]/\1/'` + + # regular labels + msgid[$i]=`echo "${msgid[$i]}" | sed -e 's/=.*$//'` + msgstr[$i]=`echo "${msgstr[$i]}" | sed -e 's/=.*$//'` + + # junk + msgid[$i]=`echo "${msgid[$i]}" | sed -e 's/%s//'` + msgid[$i]=`echo "${msgid[$i]}" | sed -e 's/%s//'` + + if [[ -n "${msgid[$i]}" && -n "${msgstr[$i]}" ]]; then + if [ "${msgid[$i]}" != "${msgstr[$i]}" ]; then + echo "msgid \"${msgid[$i]}\"" + echo "msgstr \"${msgstr[$i]}\"" + echo "" + fi + fi + done +} + +cat >salvage.tmp <<'EOT' + +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +EOT + +export -f do_salvage +msgattrib --only-obsolete "$@" | msgexec bash -c 'do_salvage "$0"' >>salvage.tmp +msguniq salvage.tmp +rm salvage.tmp diff --git a/po/updatepo.sh b/po/updatepo.sh new file mode 100644 index 00000000..d5b0f9d6 --- /dev/null +++ b/po/updatepo.sh @@ -0,0 +1,52 @@ +#!bash + +GITVER=`git describe --always --dirty` +GITHASH=`git rev-parse HEAD` + +echo "Update gettext translation files." + +DER=`pwd` +if [ ! -e "updatepo.sh" ] +then + echo "Error: Run from po/, the location of hardinfo.pot and XX.po files." + exit 1 +fi + +MSGTOTALOLD=`msgattrib --untranslated hardinfo.pot | grep -E "^msgstr \"\"" | wc -l` +echo "hardinfo.pot has $MSGTOTALOLD strings" + +mv hardinfo.pot hardinfo.pot.old +echo "" > hardinfo.pot # empty existing file to join (-j) with +for d in hardinfo/ shell/ modules/ includes/; +do + # work from hardinfo root to get reasonable file reference comments + cd .. + echo -n `pwd`; echo "/$d ..." + find "$d" -type f -name "*.[hc]" -print | sort | xargs xgettext -j -d hardinfo -o "$DER/hardinfo.pot" -k_ -kN_ -kC_:1c,2 -kNC_:1c,2 -c/ --from-code=UTF-8 + cd "$DER" +done; + +MSGTOTAL=`msgattrib --untranslated hardinfo.pot | grep -E "^msgstr \"\"" | wc -l` +TDIFF=$(($MSGTOTAL - $MSGTOTALOLD)) +CHANGE="$TDIFF" +if [ $TDIFF -gt 0 ]; then CHANGE="+$TDIFF"; fi +if [ $TDIFF -eq 0 ]; then CHANGE="no change"; fi +echo "hardinfo.pot now has $MSGTOTAL strings ($CHANGE)" +echo "(as of $GITVER $GITHASH)" + +for f in *.po +do + cp "$f" "$f.old" + + msgmerge -q -N "$f" hardinfo.pot > tmp.po + + # set/reset the X-Poedit-Basepath header + grep -v '"X-Poedit-Basepath\:[^"]*"' tmp.po | sed 's:\("Language\:[^"]*"\):\1\n"X-Poedit-Basepath\: ../\\n":' >"$f" + + rm -f tmp.po + + # stats + UNMSG=`msgattrib --untranslated "$f" | grep -E "^msgstr \"\"" | wc -l` + DONE=" "; if [ $UNMSG -eq 0 ]; then DONE="x"; fi + echo "- [$DONE] $f : ($UNMSG / $MSGTOTAL remain untranslated)" +done diff --git a/shell/callbacks.c b/shell/callbacks.c index d5ac34da..95a7bd61 100644 --- a/shell/callbacks.c +++ b/shell/callbacks.c @@ -37,42 +37,6 @@ void cb_sync_manager() sync_manager_show(shell->window); } -void cb_save_graphic() -{ - Shell *shell = shell_get_main_shell(); - GtkWidget *dialog; - gchar *filename; - - /* save the pixbuf to a png file */ - dialog = gtk_file_chooser_dialog_new(_("Save Image"), - NULL, - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, - GTK_RESPONSE_CANCEL, - GTK_STOCK_SAVE, - GTK_RESPONSE_ACCEPT, NULL); - - filename = g_strconcat(shell->selected->name, ".png", NULL); - gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), filename); - g_free(filename); - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - gtk_widget_destroy(dialog); - - shell_status_update(_("Saving image...")); - - tree_view_save_image(filename); - - shell_status_update(_("Done.")); - g_free(filename); - - return; - } - - gtk_widget_destroy(dialog); -} - void cb_open_web_page() { open_url("http://www.hardinfo.org"); @@ -148,8 +112,14 @@ void cb_about_module(GtkAction * action) about = gtk_about_dialog_new(); + gtk_window_set_transient_for(GTK_WINDOW(about), GTK_WINDOW(shell->window)); + text = g_strdup_printf(_("%s Module"), sm->name); +#if GTK_CHECK_VERSION(2, 12, 0) + gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(about), text); +#else gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), text); +#endif g_free(text); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about), @@ -181,41 +151,51 @@ void cb_about_module(GtkAction * action) void cb_about() { + Shell *shell = shell_get_main_shell(); GtkWidget *about; + gchar *copyright = NULL; const gchar *authors[] = { - _("Author:"), - "Leandro A. F. Pereira", - "", - _("Contributors:"), - "Agney Lopes Roth Ferraz", - "Andrey Esin", - "", - _("Based on work by:"), - _("MD5 implementation by Colin Plumb (see md5.c for details)"), - _("SHA1 implementation by Steve Reid (see sha1.c for details)"), - _("Blowfish implementation by Paul Kocher (see blowfich.c for details)"), - _("Raytracing benchmark by John Walker (see fbench.c for details)"), - _("FFT benchmark by Scott Robert Ladd (see fftbench.c for details)"), - _("Some code partly based on x86cpucaps by Osamu Kayasono"), - _("Vendor list based on GtkSysInfo by Pissens Sebastien"), - _("DMI support based on code by Stewart Adam"), - _("SCSI support based on code by Pascal F. Martin"), - NULL + _("Author:"), + "Leandro A. F. Pereira", + "", + _("Contributors:"), + "Agney Lopes Roth Ferraz", + "Andrey Esin", + "Burt P.", + "", + _("Based on work by:"), + _("MD5 implementation by Colin Plumb (see md5.c for details)"), + _("SHA1 implementation by Steve Reid (see sha1.c for details)"), + _("Blowfish implementation by Paul Kocher (see blowfich.c for details)"), + _("Raytracing benchmark by John Walker (see fbench.c for details)"), + _("FFT benchmark by Scott Robert Ladd (see fftbench.c for details)"), + _("Some code partly based on x86cpucaps by Osamu Kayasono"), + _("Vendor list based on GtkSysInfo by Pissens Sebastien"), + _("DMI support based on code by Stewart Adam"), + _("SCSI support based on code by Pascal F. Martin"), + NULL }; const gchar *artists[] = { - _("Jakub Szypulka"), - _("Tango Project"), - _("The GNOME Project"), - _("VMWare, Inc. (USB icon from VMWare Workstation 6)"), - NULL + "Jakub Szypulka", + _("Tango Project"), + _("The GNOME Project"), + _("VMWare, Inc. (USB icon from VMWare Workstation 6)"), + NULL }; about = gtk_about_dialog_new(); + gtk_window_set_transient_for(GTK_WINDOW(about), GTK_WINDOW(shell->window)); + +#if GTK_CHECK_VERSION(2, 12, 0) + gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(about), "HardInfo"); +#else gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), "HardInfo"); +#endif + + copyright = g_strdup_printf("Copyright \302\251 2003-%d Leandro A. F. Pereira", HARDINFO_COPYRIGHT_LATEST_YEAR); + gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about), VERSION); - gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about), - "Copyright \302\251 2003-2016 " - "Leandro A. F. Pereira"); + gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about), copyright); gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about), _("System information and benchmark tool")); gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(about), @@ -232,15 +212,17 @@ void cb_about() "You should have received a copy of the GNU General Public License " "along with this program; if not, write to the Free Software " "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA")); -#if GTK_CHECK_VERSION(2,8,0) gtk_about_dialog_set_wrap_license(GTK_ABOUT_DIALOG(about), TRUE); -#endif gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(about), authors); gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(about), artists); + gtk_about_dialog_set_translator_credits(GTK_ABOUT_DIALOG(about), + _("translator-credits")); gtk_dialog_run(GTK_DIALOG(about)); gtk_widget_destroy(about); + + g_free(copyright); } void cb_generate_report() @@ -260,6 +242,6 @@ void cb_quit(void) do { gtk_main_quit(); } while (gtk_main_level() > 1); - + exit(0); } diff --git a/shell/loadgraph-uber.c b/shell/loadgraph-uber.c new file mode 100644 index 00000000..61964b37 --- /dev/null +++ b/shell/loadgraph-uber.c @@ -0,0 +1,127 @@ +/* + * Christian Hergert's uber-graph (GPL3) + * wrapped in an interface compatible with + * Leandro A. F. Pereira's loadgraph (GPL2.1). + */ + +#include <string.h> +#include "loadgraph.h" +#include "uber.h" + +#define LG_MAX_LINES 9 + +static const gchar *default_colors[] = { "#73d216", + "#f57900", + /*colors from simple.c sample */ "#3465a4", + "#ef2929", + "#75507b", + "#ce5c00", + "#c17d11", + "#ce5c00", + "#729fcf", + NULL }; + +struct _LoadGraph { + GtkWidget *uber_widget; + gdouble cur_value[LG_MAX_LINES]; + gint height; +}; + +gdouble +_sample_func (UberLineGraph *graph, + guint line, + gpointer user_data) +{ + LoadGraph *lg = (LoadGraph *)user_data; + return lg->cur_value[line-1]; +} + +LoadGraph *load_graph_new(gint size) +{ + LoadGraph *lg; + GdkRGBA color; + int i = 0; + + lg = g_new0(LoadGraph, 1); + lg->uber_widget = uber_line_graph_new(); + lg->height = (size+1) * 2; /* idk */ + for (i = 0; i < LG_MAX_LINES; i++) { + lg->cur_value[i] = UBER_LINE_GRAPH_NO_VALUE; + //GtkWidget *label = uber_label_new(); + //uber_label_set_text(UBER_LABEL(label), "BLAH!"); + gdk_rgba_parse(&color, default_colors[i]); + uber_line_graph_add_line(UBER_LINE_GRAPH(lg->uber_widget), &color, NULL); /* UBER_LABEL(label) */ + } + uber_line_graph_set_autoscale(UBER_LINE_GRAPH(lg->uber_widget), TRUE); + uber_line_graph_set_data_func(UBER_LINE_GRAPH(lg->uber_widget), + (UberLineGraphFunc)_sample_func, (gpointer *)lg, NULL); + return lg; +} + +void load_graph_set_data_suffix(LoadGraph * lg, gchar * suffix) +{ + +} + +gchar *load_graph_get_data_suffix(LoadGraph * lg) +{ + return strdup(""); +} + +GtkWidget *load_graph_get_framed(LoadGraph * lg) +{ + if (lg != NULL) + return lg->uber_widget; + return NULL; +} + +void load_graph_clear(LoadGraph * lg) +{ + int i; + if (lg != NULL) { + for (i = 0; i < LG_MAX_LINES; i++) { + lg->cur_value[i] = UBER_LINE_GRAPH_NO_VALUE; + } + uber_graph_scale_changed(lg->uber_widget); + } +} + +void load_graph_set_color(LoadGraph * lg, LoadGraphColor color) +{ + +} + +void load_graph_destroy(LoadGraph * lg) +{ + if (lg != NULL) { + g_object_unref(lg->uber_widget); + g_free(lg); + } +} + +static gboolean _expose(GtkWidget * widget, GdkEventExpose * event, gpointer user_data) +{ + return TRUE; +} + +void load_graph_configure_expose(LoadGraph * lg) +{ + +} + +void load_graph_update_ex(LoadGraph *lg, guint line, gdouble value) +{ + if (lg != NULL && line < LG_MAX_LINES) + lg->cur_value[line] = value; +} + +void load_graph_update(LoadGraph * lg, gdouble value) +{ + load_graph_update_ex(lg, 0, value); +} + +gint load_graph_get_height(LoadGraph *lg) { + if (lg != NULL) + return lg->height; + return 0; +} diff --git a/shell/loadgraph.c b/shell/loadgraph.c index 8fbeef48..ceb91720 100644 --- a/shell/loadgraph.c +++ b/shell/loadgraph.c @@ -20,11 +20,31 @@ * You should have received a copy of the GNU Lesser General Public * License along with the Simple Load Graph; if not, write to the Free * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA. + * 02111-1307 USA. */ #include "loadgraph.h" +struct _LoadGraph { + GdkPixmap *buf; + GdkGC *grid; + GdkGC *trace; + GdkGC *fill; + GtkWidget *area; + + gint *data; + gfloat scale; + + gint size; + gint width, height; + LoadGraphColor color; + + gint max_value, remax_count; + + PangoLayout *layout; + gchar *suffix; +}; + static void _draw(LoadGraph * lg); LoadGraph *load_graph_new(gint size) @@ -89,7 +109,7 @@ void load_graph_clear(LoadGraph * lg) gint i; for (i = 0; i < lg->size; i++) - lg->data[i] = 0; + lg->data[i] = 0; lg->scale = 1.0; lg->max_value = 1; @@ -119,14 +139,14 @@ void load_graph_destroy(LoadGraph * lg) } static gboolean _expose(GtkWidget * widget, GdkEventExpose * event, - gpointer user_data) + gpointer user_data) { LoadGraph *lg = (LoadGraph *) user_data; GdkDrawable *draw = GDK_DRAWABLE(lg->buf); gdk_draw_drawable(lg->area->window, - lg->area->style->black_gc, - draw, 0, 0, 0, 0, lg->width, lg->height); + lg->area->style->black_gc, + draw, 0, 0, 0, 0, lg->width, lg->height); return FALSE; } @@ -146,27 +166,17 @@ void load_graph_configure_expose(LoadGraph * lg) /* init graphic contexts */ gdk_gc_set_line_attributes(lg->grid, - 1, GDK_LINE_ON_OFF_DASH, - GDK_CAP_NOT_LAST, GDK_JOIN_ROUND); + 1, GDK_LINE_ON_OFF_DASH, + GDK_CAP_NOT_LAST, GDK_JOIN_ROUND); gdk_gc_set_dashes(lg->grid, 0, (gint8*)"\2\2", 2); - -#if 0 /* old-style grid */ - gdk_rgb_gc_set_foreground(lg->grid, 0x707070); -#endif gdk_gc_set_line_attributes(lg->trace, - 1, GDK_LINE_SOLID, - GDK_CAP_PROJECTING, GDK_JOIN_ROUND); - -#if 0 /* old-style fill */ - gdk_gc_set_line_attributes(lg->fill, - 1, GDK_LINE_SOLID, - GDK_CAP_BUTT, GDK_JOIN_BEVEL); -#endif + 1, GDK_LINE_SOLID, + GDK_CAP_PROJECTING, GDK_JOIN_ROUND); /* configures the expose event */ g_signal_connect(G_OBJECT(lg->area), "expose-event", - (GCallback) _expose, lg); + (GCallback) _expose, lg); } static void _draw_label_and_line(LoadGraph * lg, gint position, gint value) @@ -175,21 +185,21 @@ static void _draw_label_and_line(LoadGraph * lg, gint position, gint value) /* draw lines */ if (position > 0) - gdk_draw_line(GDK_DRAWABLE(lg->buf), lg->grid, 0, position, - lg->width, position); + gdk_draw_line(GDK_DRAWABLE(lg->buf), lg->grid, 0, position, + lg->width, position); else - position = -1 * position; + position = -1 * position; /* draw label */ tmp = - g_strdup_printf("<span size=\"x-small\">%d%s</span>", value, - lg->suffix); + g_strdup_printf("<span size=\"x-small\">%d%s</span>", value, + lg->suffix); pango_layout_set_markup(lg->layout, tmp, -1); pango_layout_set_width(lg->layout, - lg->area->allocation.width * PANGO_SCALE); + lg->area->allocation.width * PANGO_SCALE); gdk_draw_layout(GDK_DRAWABLE(lg->buf), lg->trace, 2, position, - lg->layout); + lg->layout); g_free(tmp); } @@ -201,15 +211,15 @@ static void _draw(LoadGraph * lg) /* clears the drawing area */ gdk_draw_rectangle(draw, lg->area->style->black_gc, - TRUE, 0, 0, lg->width, lg->height); + TRUE, 0, 0, lg->width, lg->height); /* the graph */ GdkPoint *points = g_new0(GdkPoint, lg->size + 1); for (i = 0; i < lg->size; i++) { - points[i].x = i * 4; - points[i].y = lg->height - lg->data[i] * lg->scale; + points[i].x = i * 4; + points[i].y = lg->height - lg->data[i] * lg->scale; } points[0].x = points[1].x = 0; @@ -223,8 +233,8 @@ static void _draw(LoadGraph * lg) /* vertical bars */ for (i = lg->width, d = 0; i > 1; i--, d++) - if ((d % 45) == 0 && d) - gdk_draw_line(draw, lg->grid, i, 0, i, lg->height); + if ((d % 45) == 0 && d) + gdk_draw_line(draw, lg->grid, i, 0, i, lg->height); /* horizontal bars and labels; 25%, 50% and 75% */ _draw_label_and_line(lg, -1, lg->max_value); @@ -232,41 +242,27 @@ static void _draw(LoadGraph * lg) _draw_label_and_line(lg, lg->height / 2, lg->max_value / 2); _draw_label_and_line(lg, 3 * (lg->height / 4), lg->max_value / 4); -#if 0 /* old-style drawing */ - for (i = 0; i < lg->size; i++) { - gint this = lg->height - lg->data[i] * lg->scale; - gint next = lg->height - lg->data[i + 1] * lg->scale; - gint i4 = i * 4; - - gdk_draw_line(draw, lg->fill, i4, this, i4, lg->height); - gdk_draw_line(draw, lg->fill, i4 + 2, this, i4 + 2, lg->height); - } - - for (i = 0; i < lg->size; i++) { - gint this = lg->height - lg->data[i] * lg->scale; - gint next = lg->height - lg->data[i + 1] * lg->scale; - gint i4 = i * 4; - - gdk_draw_line(draw, lg->trace, i4, this, i4 + 2, - (this + next) / 2); - gdk_draw_line(draw, lg->trace, i4 + 2, (this + next) / 2, - i4 + 4, next); - } -#endif - gtk_widget_queue_draw(lg->area); } -void load_graph_update(LoadGraph * lg, gint value) +void load_graph_update_ex(LoadGraph *lg, guint line, gdouble value) +{ + /* not implemented */ + if (line == 0) + load_graph_update(lg, value); +} + +void load_graph_update(LoadGraph * lg, gdouble v) { gint i; + gint value = (gint)v; if (value < 0) - return; + return; /* shift-right our data */ for (i = 0; i < lg->size - 1; i++) { - lg->data[i] = lg->data[i + 1]; + lg->data[i] = lg->data[i + 1]; } /* insert the updated value */ @@ -274,20 +270,20 @@ void load_graph_update(LoadGraph * lg, gint value) /* calculates the maximum value */ if (lg->remax_count++ > 20) { - /* only finds the maximum amongst the data every 20 times */ - lg->remax_count = 0; + /* only finds the maximum amongst the data every 20 times */ + lg->remax_count = 0; - gint max = lg->data[0]; - for (i = 1; i < lg->size; i++) { - if (lg->data[i] > max) - max = lg->data[i]; - } + gint max = lg->data[0]; + for (i = 1; i < lg->size; i++) { + if (lg->data[i] > max) + max = lg->data[i]; + } - lg->max_value = max; + lg->max_value = max; } else { - /* otherwise, select the maximum between the current maximum - and the supplied value */ - lg->max_value = MAX(value, lg->max_value); + /* otherwise, select the maximum between the current maximum + and the supplied value */ + lg->max_value = MAX(value, lg->max_value); } /* recalculates the scale; always use 90% of it */ @@ -297,53 +293,8 @@ void load_graph_update(LoadGraph * lg, gint value) _draw(lg); } -#ifdef LOADGRAPH_UNIT_TEST -gboolean lg_update(gpointer d) -{ - LoadGraph *lg = (LoadGraph *) d; - - static int i = 0; - static int j = 1; - - if (i > 150) { - j = -1; - } else if (i < 0) { - j = 1; - } - - i += j; - if (rand() % 10 > 8) - i *= 2; - if (rand() % 10 < 2) - i /= 2; - load_graph_update(lg, i + rand() % 50); - - return TRUE; -} - -int main(int argc, char **argv) -{ - - - LoadGraph *lg; - GtkWidget *window; - - gtk_init(&argc, &argv); - - window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_widget_show(window); - - lg = load_graph_new(50); - gtk_container_add(GTK_CONTAINER(window), load_graph_get_framed(lg)); - gtk_container_set_border_width(GTK_CONTAINER(window), 20); - load_graph_configure_expose(lg); - - lg_update(lg); - - g_timeout_add(100, lg_update, lg); - - gtk_main(); - +gint load_graph_get_height(LoadGraph *lg) { + if (lg != NULL) + return lg->height; return 0; } -#endif diff --git a/shell/menu.c b/shell/menu.c index f5724d31..e966f485 100644 --- a/shell/menu.c +++ b/shell/menu.c @@ -53,17 +53,12 @@ static GtkActionEntry entries[] = { N_("_Open..."), NULL, NULL, G_CALLBACK(cb_sync_manager)}, - + {"CopyAction", GTK_STOCK_COPY, N_("_Copy to Clipboard"), "<control>C", N_("Copy to clipboard"), G_CALLBACK(cb_copy_to_clipboard)}, - {"SaveGraphAction", GTK_STOCK_SAVE_AS, - N_("_Save image as..."), "<control>S", - NULL, - G_CALLBACK(cb_save_graphic)}, - {"RefreshAction", GTK_STOCK_REFRESH, N_("_Refresh"), "F5", NULL, @@ -130,15 +125,15 @@ void menu_init(Shell * shell) /* Pack up our objects: * menu_box -> window * actions -> action_group - * action_group -> menu_manager */ - gtk_action_group_set_translation_domain( action_group, "hardinfo" );//gettext + * action_group -> menu_manager */ + gtk_action_group_set_translation_domain( action_group, "hardinfo" );//gettext gtk_action_group_add_actions(action_group, entries, G_N_ELEMENTS(entries), NULL); gtk_action_group_add_toggle_actions(action_group, toggle_entries, G_N_ELEMENTS(toggle_entries), NULL); gtk_ui_manager_insert_action_group(menu_manager, action_group, 0); - + /* Read in the UI from our XML file */ error = NULL; diff --git a/shell/report.c b/shell/report.c index 3b5d3bdb..398af323 100644 --- a/shell/report.c +++ b/shell/report.c @@ -67,7 +67,7 @@ void report_key_value(ReportContext * ctx, gchar * key, gchar * value) gint report_get_visible_columns(ReportContext *ctx) { gint columns; - + /* Column count starts at two, since we always have at least two columns visible. */ columns = 2; @@ -77,10 +77,10 @@ gint report_get_visible_columns(ReportContext *ctx) if (ctx->columns & REPORT_COL_EXTRA1) columns++; - + if (ctx->columns & REPORT_COL_EXTRA2) columns++; - + return columns; } @@ -88,7 +88,7 @@ void report_context_configure(ReportContext * ctx, GKeyFile * keyfile) { gchar **keys; const gchar *group = "$ShellParam$"; - + /* FIXME: sometime in the future we'll save images in the report. this flag will be set if we should support that. @@ -100,19 +100,19 @@ void report_context_configure(ReportContext * ctx, GKeyFile * keyfile) "ViewType", NULL) == SHELL_VIEW_PROGRESS); - + keys = g_key_file_get_keys(keyfile, group, NULL, NULL); if (keys) { gint i = 0; - + for (; keys[i]; i++) { gchar *key = keys[i]; - + if (g_str_equal(key, "ShowColumnHeaders")) { ctx->show_column_headers = g_key_file_get_boolean(keyfile, group, key, NULL); } else if (g_str_has_prefix(key, "ColumnTitle")) { gchar *value, *title = strchr(key, '$'); - + if (!title) { DEBUG("couldn't find column title"); break; @@ -135,20 +135,20 @@ void report_context_configure(ReportContext * ctx, GKeyFile * keyfile) } else if (g_str_equal(title, "Progress")) { ctx->columns |= REPORT_COL_PROGRESS; } - + g_hash_table_replace(ctx->column_titles, g_strdup(title), g_strdup(value)); } else if (g_str_equal(key, "ViewType")) { if (g_key_file_get_integer(keyfile, group, "ViewType", NULL) == SHELL_VIEW_PROGRESS) { ctx->columns &= ~REPORT_COL_VALUE; ctx->columns |= REPORT_COL_PROGRESS; - } + } } } - g_strfreev(keys); + g_strfreev(keys); } - + } void report_table(ReportContext * ctx, gchar * text) @@ -164,7 +164,7 @@ void report_table(ReportContext * ctx, gchar * text) /**/ g_key_file_load_from_data(key_file, text, strlen(text), 0, NULL); groups = g_key_file_get_groups(key_file, NULL); - + for (i = 0; groups[i]; i++) { if (groups[i][0] == '$') { report_context_configure(ctx, key_file); @@ -209,7 +209,7 @@ void report_table(ReportContext * ctx, gchar * text) value = g_strdup("..."); } } - + if (*key == '$') { report_key_value(ctx, strchr(key + 1, '$') + 1, value); @@ -301,7 +301,7 @@ report_html_key_value(ReportContext * ctx, gchar * key, gchar * value) gint columns = report_get_visible_columns(ctx); gchar **values; gint i; - + if (columns == 2) { ctx->output = h_strdup_cprintf("<tr><td class=\"field\">%s</td>" "<td class=\"value\">%s</td></tr>\n", @@ -309,9 +309,9 @@ report_html_key_value(ReportContext * ctx, gchar * key, gchar * value) key, value); } else { values = g_strsplit(value, "|", columns); - + ctx->output = h_strdup_cprintf("\n<tr>\n<td class=\"field\">%s</td>", ctx->output, key); - + for (i = columns - 2; i >= 0; i--) { ctx->output = h_strdup_cprintf("<td class=\"value\">%s</td>", ctx->output, @@ -319,7 +319,7 @@ report_html_key_value(ReportContext * ctx, gchar * key, gchar * value) } ctx->output = h_strdup_cprintf("</tr>\n", ctx->output); - + g_strfreev(values); } } @@ -372,7 +372,7 @@ report_text_key_value(ReportContext * ctx, gchar * key, gchar * value) gint columns = report_get_visible_columns(ctx); gchar **values; gint i; - + if (columns == 2) { if (strlen(value)) ctx->output = h_strdup_cprintf("%s\t\t: %s\n", ctx->output, key, value); @@ -380,9 +380,9 @@ report_text_key_value(ReportContext * ctx, gchar * key, gchar * value) ctx->output = h_strdup_cprintf("%s\n", ctx->output, key); } else { values = g_strsplit(value, "|", columns); - + ctx->output = h_strdup_cprintf("%s\t", ctx->output, key); - + for (i = columns - 2; i >= 0; i--) { ctx->output = h_strdup_cprintf("%s\t", ctx->output, @@ -390,7 +390,7 @@ report_text_key_value(ReportContext * ctx, gchar * key, gchar * value) } ctx->output = h_strdup_cprintf("\n", ctx->output); - + g_strfreev(values); } } @@ -490,6 +490,15 @@ static gchar *report_get_filename(void) GtkWidget *dialog; gchar *filename = NULL; +#if GTK_CHECK_VERSION(3, 0, 0) + dialog = gtk_file_chooser_dialog_new(_("Save File"), + NULL, + GTK_FILE_CHOOSER_ACTION_SAVE, + "_Cancel", + GTK_RESPONSE_CANCEL, + "_Save", + GTK_RESPONSE_ACCEPT, NULL); +#else dialog = gtk_file_chooser_dialog_new(_("Save File"), NULL, GTK_FILE_CHOOSER_ACTION_SAVE, @@ -497,6 +506,7 @@ static gchar *report_get_filename(void) GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); +#endif gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), "hardinfo_report"); @@ -548,7 +558,7 @@ ReportContext *report_context_text_new() ctx->output = g_strdup(""); ctx->format = REPORT_FORMAT_TEXT; - + ctx->column_titles = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); ctx->first_table = TRUE; @@ -636,15 +646,21 @@ static gboolean report_generate(ReportDialog * rd) GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, _("Open the report with your web browser?")); +#if GTK_CHECK_VERSION(3, 0, 0) + gtk_dialog_add_buttons(GTK_DIALOG(dialog), + "_No", GTK_RESPONSE_REJECT, + "_Open", GTK_RESPONSE_ACCEPT, NULL); +#else gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_NO, GTK_RESPONSE_REJECT, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); +#endif if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { gchar *temp; - + temp = g_strdup_printf("file://%s", file); open_url(temp); - + g_free(temp); } @@ -744,7 +760,7 @@ report_dialog_sel_toggle(GtkCellRendererToggle * cellrenderertoggle, if (active) { GtkTreeIter parent; - + if (gtk_tree_model_iter_parent(model, &parent, &iter)) { gtk_tree_store_set(GTK_TREE_STORE(model), &parent, TREE_COL_SEL, active, -1); @@ -786,12 +802,20 @@ static ReportDialog gtk_window_set_type_hint(GTK_WINDOW(dialog), GDK_WINDOW_TYPE_HINT_DIALOG); +#if GTK_CHECK_VERSION(2, 14, 0) + dialog1_vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); +#else dialog1_vbox = GTK_DIALOG(dialog)->vbox; +#endif gtk_box_set_spacing(GTK_BOX(dialog1_vbox), 5); gtk_container_set_border_width(GTK_CONTAINER(dialog1_vbox), 4); gtk_widget_show(dialog1_vbox); +#if GTK_CHECK_VERSION(3, 0, 0) + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); +#else hbox = gtk_hbox_new(FALSE, 5); +#endif gtk_box_pack_start(GTK_BOX(dialog1_vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new(_("<big><b>Generate Report</b></big>\n" @@ -799,15 +823,23 @@ static ReportDialog "to view in your report:")); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); +#if GTK_CHECK_VERSION(3, 0, 0) + gtk_widget_set_valign(label, GTK_ALIGN_CENTER); +#else gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); +#endif gtk_box_pack_start(GTK_BOX(hbox), icon_cache_get_image("report-large.png"), FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); gtk_widget_show_all(hbox); - + +#if GTK_CHECK_VERSION(3, 0, 0) + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); +#else hbox = gtk_hbox_new(FALSE, 5); +#endif gtk_box_pack_start(GTK_BOX(dialog1_vbox), hbox, TRUE, TRUE, 0); gtk_widget_show(hbox); @@ -847,7 +879,11 @@ static ReportDialog gtk_tree_view_column_add_attribute(column, cr_text, "markup", TREE_COL_NAME); +#if GTK_CHECK_VERSION(3, 0, 0) + vbuttonbox3 = gtk_button_box_new(GTK_ORIENTATION_VERTICAL); +#else vbuttonbox3 = gtk_vbutton_box_new(); +#endif gtk_widget_show(vbuttonbox3); gtk_box_pack_start(GTK_BOX(hbox), vbuttonbox3, FALSE, TRUE, 0); gtk_box_set_spacing(GTK_BOX(vbuttonbox3), 5); @@ -857,33 +893,58 @@ static ReportDialog button3 = gtk_button_new_with_mnemonic(_("Select _None")); gtk_widget_show(button3); gtk_container_add(GTK_CONTAINER(vbuttonbox3), button3); +#if GTK_CHECK_VERSION(2, 18, 0) + gtk_widget_set_can_default(button3, TRUE); +#else GTK_WIDGET_SET_FLAGS(button3, GTK_CAN_DEFAULT); +#endif g_signal_connect(button3, "clicked", G_CALLBACK(report_dialog_sel_none), rd); button6 = gtk_button_new_with_mnemonic(_("Select _All")); gtk_widget_show(button6); gtk_container_add(GTK_CONTAINER(vbuttonbox3), button6); +#if GTK_CHECK_VERSION(2, 18, 0) + gtk_widget_set_can_default(button6, TRUE); +#else GTK_WIDGET_SET_FLAGS(button6, GTK_CAN_DEFAULT); +#endif g_signal_connect(button6, "clicked", G_CALLBACK(report_dialog_sel_all), rd); +#if GTK_CHECK_VERSION(2, 14, 0) +/* TODO:GTK3 + * [https://developer.gnome.org/gtk3/stable/GtkDialog.html#gtk-dialog-get-action-area] + * gtk_dialog_get_action_area has been deprecated since version 3.12 and should not be used in newly-written code. + * Direct access to the action area is discouraged; use gtk_dialog_add_button(), etc. + */ + dialog1_action_area = gtk_dialog_get_action_area(GTK_DIALOG(dialog)); +#else dialog1_action_area = GTK_DIALOG(dialog)->action_area; +#endif gtk_widget_show(dialog1_action_area); gtk_button_box_set_layout(GTK_BUTTON_BOX(dialog1_action_area), GTK_BUTTONBOX_END); - button8 = gtk_button_new_from_stock(GTK_STOCK_CANCEL); + button8 = gtk_button_new_with_mnemonic(_("_Cancel")); gtk_widget_show(button8); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button8, GTK_RESPONSE_CANCEL); +#if GTK_CHECK_VERSION(2, 18, 0) + gtk_widget_set_can_default(button8, TRUE); +#else GTK_WIDGET_SET_FLAGS(button8, GTK_CAN_DEFAULT); +#endif button7 = gtk_button_new_with_mnemonic(_("_Generate")); gtk_widget_show(button7); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button7, GTK_RESPONSE_ACCEPT); +#if GTK_CHECK_VERSION(2, 18, 0) + gtk_widget_set_can_default(button7, TRUE); +#else GTK_WIDGET_SET_FLAGS(button7, GTK_CAN_DEFAULT); +#endif rd->dialog = dialog; rd->btn_cancel = button8; diff --git a/shell/shell.c b/shell/shell.c index bf866e84..b81e77b6 100644 --- a/shell/shell.c +++ b/shell/shell.c @@ -284,9 +284,7 @@ void shell_view_set_enabled(gboolean setting) shell_action_set_enabled("CopyAction", setting); shell_action_set_enabled("ReportAction", setting); shell_action_set_enabled("SyncManagerAction", setting && sync_manager_count_entries() > 0); - shell_action_set_enabled("SaveGraphAction", - setting ? shell->view_type == - SHELL_VIEW_PROGRESS : FALSE); + } void shell_status_set_enabled(gboolean setting) @@ -358,14 +356,18 @@ static ShellNote *note_new(void) note->label = gtk_label_new(""); note->event_box = gtk_event_box_new(); button = gtk_button_new(); - + border_box = gtk_event_box_new(); gtk_container_set_border_width(GTK_CONTAINER(border_box), 1); gtk_container_add(GTK_CONTAINER(note->event_box), border_box); gtk_widget_show(border_box); - + +#if GTK_CHECK_VERSION(3, 0, 0) + /* TODO:GTK3 css-based style */ +#else gtk_widget_modify_bg(border_box, GTK_STATE_NORMAL, &info_default_fill_color); gtk_widget_modify_bg(note->event_box, GTK_STATE_NORMAL, &info_default_border_color); +#endif icon = icon_cache_get_image("close.png"); gtk_widget_show(icon); @@ -374,7 +376,11 @@ static ShellNote *note_new(void) g_signal_connect(G_OBJECT(button), "clicked", (GCallback) close_note, NULL); +#if GTK_CHECK_VERSION(3, 0, 0) + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); +#else hbox = gtk_hbox_new(FALSE, 3); +#endif icon = icon_cache_get_image("dialog-information.png"); gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0); @@ -395,7 +401,7 @@ void shell_set_title(Shell *shell, gchar *subtitle) tmp = g_strdup_printf(_("%s - System Information"), subtitle); gtk_window_set_title(GTK_WINDOW(shell->window), tmp); - + g_free(tmp); } else { gtk_window_set_title(GTK_WINDOW(shell->window), _("System Information")); @@ -415,14 +421,22 @@ static void create_window(void) gtk_window_set_default_size(GTK_WINDOW(shell->window), 800, 600); g_signal_connect(G_OBJECT(shell->window), "destroy", destroy_me, NULL); +#if GTK_CHECK_VERSION(3, 0, 0) + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else vbox = gtk_vbox_new(FALSE, 0); +#endif gtk_widget_show(vbox); gtk_container_add(GTK_CONTAINER(shell->window), vbox); shell->vbox = vbox; menu_init(shell); +#if GTK_CHECK_VERSION(3, 0, 0) + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); +#else hbox = gtk_hbox_new(FALSE, 5); +#endif gtk_widget_show(hbox); gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 3); @@ -432,23 +446,39 @@ static void create_window(void) gtk_box_pack_end(GTK_BOX(hbox), shell->progress, FALSE, FALSE, 5); shell->status = gtk_label_new(""); +#if GTK_CHECK_VERSION(3, 0, 0) + gtk_widget_set_valign(GTK_MISC(shell->status), GTK_ALIGN_CENTER); +#else gtk_misc_set_alignment(GTK_MISC(shell->status), 0.0, 0.5); +#endif gtk_widget_show(shell->status); gtk_box_pack_start(GTK_BOX(hbox), shell->status, FALSE, FALSE, 5); +#if GTK_CHECK_VERSION(3, 0, 0) + shell->hpaned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL); +#else shell->hpaned = gtk_hpaned_new(); +#endif gtk_widget_show(shell->hpaned); gtk_box_pack_end(GTK_BOX(vbox), shell->hpaned, TRUE, TRUE, 0); gtk_paned_set_position(GTK_PANED(shell->hpaned), 210); +#if GTK_CHECK_VERSION(3, 0, 0) + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); +#else vbox = gtk_vbox_new(FALSE, 5); +#endif gtk_widget_show(vbox); gtk_paned_add2(GTK_PANED(shell->hpaned), vbox); shell->note = note_new(); gtk_box_pack_end(GTK_BOX(vbox), shell->note->event_box, FALSE, FALSE, 0); +#if GTK_CHECK_VERSION(3, 0, 0) + shell->vpaned = gtk_paned_new(GTK_ORIENTATION_VERTICAL); +#else shell->vpaned = gtk_vpaned_new(); +#endif gtk_box_pack_start(GTK_BOX(vbox), shell->vpaned, TRUE, TRUE, 0); gtk_widget_show(shell->vpaned); @@ -479,7 +509,7 @@ static void menu_item_set_icon_always_visible(Shell *shell, { GtkWidget *menuitem; gchar *path; - + path = g_strdup_printf("%s/%s", parent_path, item_id); menuitem = gtk_ui_manager_get_widget(shell->ui_manager, path); #if GTK_CHECK_VERSION(2, 18, 0) @@ -533,7 +563,7 @@ static void add_module_to_menu(gchar * name, GdkPixbuf * pixbuf) "/menubar/ViewMenu/LastSep", name, name, GTK_UI_MANAGER_MENU, TRUE); shell->merge_ids = g_slist_prepend(shell->merge_ids, GINT_TO_POINTER(merge_id)); - + merge_id = gtk_ui_manager_new_merge_id(shell->ui_manager); gtk_ui_manager_add_ui(shell->ui_manager, merge_id, @@ -579,7 +609,7 @@ add_module_entry_to_view_menu(gchar * module, gchar * name, shell->merge_ids = g_slist_prepend(shell->merge_ids, GINT_TO_POINTER(merge_id)); menu_item_set_icon_always_visible(shell, path, name); - + g_free(path); } @@ -589,7 +619,7 @@ void shell_add_modules_to_gui(gpointer _shell_module, gpointer _shell_tree) ShellTree *shelltree = (ShellTree *) _shell_tree; GtkTreeStore *store = GTK_TREE_STORE(shelltree->model); GtkTreeIter parent; - + if (!module) { return; } @@ -645,19 +675,28 @@ static void __tree_iter_destroy(gpointer data) ShellSummary *summary_new(void) { ShellSummary *summary; - + summary = g_new0(ShellSummary, 1); summary->scroll = gtk_scrolled_window_new(NULL, NULL); +#if GTK_CHECK_VERSION(3, 0, 0) + summary->view = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); +#else summary->view = gtk_vbox_new(FALSE, 5); +#endif summary->items = NULL; gtk_container_set_border_width(GTK_CONTAINER(summary->view), 6); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(summary->scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); +#if GTK_CHECK_VERSION(3, 0, 0) + gtk_container_add(GTK_SCROLLED_WINDOW(summary->scroll), + summary->view); +#else gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(summary->scroll), summary->view); - gtk_widget_show_all(summary->scroll); +#endif + gtk_widget_show_all(summary->scroll); return summary; } @@ -684,7 +723,7 @@ void shell_init(GSList * modules) shell->moreinfo = info_tree_new(TRUE); shell->loadgraph = load_graph_new(75); shell->summary = summary_new(); - + update_tbl = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, __tree_iter_destroy); @@ -700,7 +739,7 @@ void shell_init(GSList * modules) NULL); gtk_notebook_append_page(GTK_NOTEBOOK(shell->notebook), shell->summary->scroll, NULL); - + gtk_notebook_set_show_tabs(GTK_NOTEBOOK(shell->notebook), FALSE); gtk_notebook_set_show_border(GTK_NOTEBOOK(shell->notebook), FALSE); @@ -723,10 +762,9 @@ void shell_init(GSList * modules) shell_action_set_enabled("RefreshAction", FALSE); shell_action_set_enabled("CopyAction", FALSE); - shell_action_set_enabled("SaveGraphAction", FALSE); shell_action_set_active("SidePaneAction", TRUE); shell_action_set_active("ToolbarAction", TRUE); - + #ifndef HAS_LIBSOUP shell_action_set_enabled("SyncManagerAction", FALSE); #else @@ -738,21 +776,21 @@ static gboolean update_field(gpointer data) { ShellFieldUpdate *fu; GtkTreeIter *iter; - + fu = (ShellFieldUpdate *) data; g_return_val_if_fail(fu != NULL, FALSE); - + DEBUG("update_field [%s]", fu->field_name); - + iter = g_hash_table_lookup(update_tbl, fu->field_name); if (!iter) { return FALSE; } - + /* if the entry is still selected, update it */ if (iter && fu->entry->selected && fu->entry->fieldfunc) { GtkTreeStore *store = GTK_TREE_STORE(shell->info->model); - gchar *value = fu->entry->fieldfunc(_(fu->field_name)); + gchar *value = fu->entry->fieldfunc(fu->field_name); /* * this function is also used to feed the load graph when ViewType @@ -761,7 +799,7 @@ static gboolean update_field(gpointer data) if (shell->view_type == SHELL_VIEW_LOAD_GRAPH && gtk_tree_selection_iter_is_selected(shell->info->selection, iter)) { - load_graph_update(shell->loadgraph, atoi(value)); + load_graph_update(shell->loadgraph, atof(value)); } gtk_tree_store_set(store, iter, INFO_TREE_COL_VALUE, value, -1); @@ -802,20 +840,31 @@ static gboolean update_field(gpointer data) static gboolean reload_section(gpointer data) { ShellModuleEntry *entry = (ShellModuleEntry *) data; +#if GTK_CHECK_VERSION(2, 14, 0) + GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(shell->window)); +#endif /* if the entry is still selected, update it */ if (entry->selected) { GtkTreePath *path = NULL; GtkTreeIter iter; double pos_info_scroll, pos_more_scroll; - + /* save current position */ +#if GTK_CHECK_VERSION(3, 0, 0) + /* TODO:GTK3 */ +#else pos_info_scroll = RANGE_GET_VALUE(info, vscrollbar); pos_more_scroll = RANGE_GET_VALUE(moreinfo, vscrollbar); - +#endif + /* avoid drawing the window while we reload */ +#if GTK_CHECK_VERSION(2, 14, 0) + gdk_window_freeze_updates(gdk_window); +#else gdk_window_freeze_updates(shell->window->window); - +#endif + /* gets the current selected path */ if (gtk_tree_selection_get_selected (shell->info->selection, &shell->info->model, &iter)) { @@ -835,12 +884,20 @@ static gboolean reload_section(gpointer data) gtk_tree_path_free(path); } else { /* restore position */ +#if GTK_CHECK_VERSION(3, 0, 0) + /* TODO:GTK3 */ +#else RANGE_SET_VALUE(info, vscrollbar, pos_info_scroll); RANGE_SET_VALUE(moreinfo, vscrollbar, pos_more_scroll); +#endif } - + /* make the window drawable again */ +#if GTK_CHECK_VERSION(2, 14, 0) + gdk_window_thaw_updates(gdk_window); +#else gdk_window_thaw_updates(shell->window->window); +#endif } /* destroy the timeout: it'll be set up again */ @@ -892,15 +949,25 @@ info_tree_compare_val_func(GtkTreeModel * model, static void set_view_type(ShellViewType viewtype, gboolean reload) { +#if GTK_CHECK_VERSION(2, 18, 0) + GtkAllocation* alloc; +#endif + if (viewtype < SHELL_VIEW_NORMAL || viewtype >= SHELL_VIEW_N_VIEWS) viewtype = SHELL_VIEW_NORMAL; shell->normalize_percentage = TRUE; shell->view_type = viewtype; + shell->_order_type = SHELL_ORDER_DESCENDING; + + /* use an unsorted tree model */ + GtkTreeSortable *sortable = GTK_TREE_SORTABLE(shell->info->model); - /* reset to the default model */ + gtk_tree_sortable_set_sort_column_id(sortable, + GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID, + GTK_SORT_ASCENDING); gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view), - shell->info->model); + GTK_TREE_MODEL(sortable)); /* reset to the default view columns */ if (!reload) { @@ -909,13 +976,10 @@ static void set_view_type(ShellViewType viewtype, gboolean reload) gtk_tree_view_column_set_visible(shell->info->col_progress, FALSE); gtk_tree_view_column_set_visible(shell->info->col_value, TRUE); } - + /* turn off the rules hint */ gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(shell->info->view), FALSE); - /* turn off the save graphic action */ - shell_action_set_enabled("SaveGraphAction", FALSE); - close_note(NULL, NULL); switch (viewtype) { @@ -923,7 +987,7 @@ static void set_view_type(ShellViewType viewtype, gboolean reload) case SHELL_VIEW_NORMAL: gtk_widget_show(shell->info->scroll); gtk_widget_hide(shell->notebook); - + if (!reload) { gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info->view), FALSE); } @@ -931,42 +995,57 @@ static void set_view_type(ShellViewType viewtype, gboolean reload) case SHELL_VIEW_DUAL: gtk_widget_show(shell->info->scroll); gtk_widget_show(shell->moreinfo->scroll); - gtk_notebook_set_page(GTK_NOTEBOOK(shell->notebook), 0); - gtk_widget_show(shell->notebook); + gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 0); + gtk_widget_show(shell->notebook); - gtk_paned_set_position(GTK_PANED(shell->vpaned), - shell->hpaned->allocation.height / 2); - break; +#if GTK_CHECK_VERSION(2, 18, 0) + alloc = g_new(GtkAllocation, 1); + gtk_widget_get_allocation(shell->hpaned, alloc); + gtk_paned_set_position(GTK_PANED(shell->vpaned), alloc->height / 2); + g_free(alloc); +#else + gtk_paned_set_position(GTK_PANED(shell->vpaned), + shell->hpaned->allocation.height / 2); +#endif + break; case SHELL_VIEW_LOAD_GRAPH: gtk_widget_show(shell->info->scroll); - gtk_notebook_set_page(GTK_NOTEBOOK(shell->notebook), 1); - gtk_widget_show(shell->notebook); - load_graph_clear(shell->loadgraph); + gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 1); + gtk_widget_show(shell->notebook); + load_graph_clear(shell->loadgraph); - gtk_paned_set_position(GTK_PANED(shell->vpaned), +#if GTK_CHECK_VERSION(2, 18, 0) + alloc = g_new(GtkAllocation, 1); + gtk_widget_get_allocation(shell->hpaned, alloc); + gtk_paned_set_position(GTK_PANED(shell->vpaned), + alloc->height - load_graph_get_height(shell->loadgraph) - 16); + g_free(alloc); +#else + gtk_paned_set_position(GTK_PANED(shell->vpaned), shell->hpaned->allocation.height - - shell->loadgraph->height - 16); + load_graph_get_height(shell->loadgraph) - 16); +#endif + break; case SHELL_VIEW_PROGRESS_DUAL: gtk_widget_show(shell->notebook); gtk_widget_show(shell->moreinfo->scroll); - gtk_notebook_set_page(GTK_NOTEBOOK(shell->notebook), 0); + gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 0); /* fallthrough */ case SHELL_VIEW_PROGRESS: gtk_widget_show(shell->info->scroll); - shell_action_set_enabled("SaveGraphAction", TRUE); - + if (!reload) { gtk_tree_view_column_set_visible(shell->info->col_progress, TRUE); gtk_tree_view_column_set_visible(shell->info->col_value, FALSE); } - + if (viewtype == SHELL_VIEW_PROGRESS) gtk_widget_hide(shell->notebook); break; case SHELL_VIEW_SUMMARY: - gtk_notebook_set_page(GTK_NOTEBOOK(shell->notebook), 2); + gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 2); gtk_widget_show(shell->notebook); gtk_widget_hide(shell->info->scroll); @@ -1104,11 +1183,11 @@ group_handle_normal(GKeyFile * key_file, ShellModuleEntry * entry, gchar *value; GtkTreeIter child; - value = g_key_file_get_value(key_file, group, key, NULL); - if (entry->fieldfunc && value && g_str_equal(value, "...")) { - g_free(value); - value = entry->fieldfunc(_(key)); - } + value = g_key_file_get_value(key_file, group, key, NULL); + if (entry->fieldfunc && value && g_str_equal(value, "...")) { + g_free(value); + value = entry->fieldfunc(key); + } if ((key && value) && g_utf8_validate(key, -1, NULL) && g_utf8_validate(value, -1, NULL)) { if (ngroups == 1) { @@ -1116,7 +1195,7 @@ group_handle_normal(GKeyFile * key_file, ShellModuleEntry * entry, } else { gtk_tree_store_append(store, &child, &parent); } - + /* FIXME: use g_key_file_get_string_list? */ if (g_utf8_strchr(value, -1, '|')) { gchar **columns = g_strsplit(value, "|", 0); @@ -1284,7 +1363,7 @@ void shell_clear_field_updates(void) { if (update_sfusrc) { GSList *sfusrc; - + for (sfusrc = update_sfusrc; sfusrc; sfusrc = sfusrc->next) { ShellFieldUpdateSource *src = (ShellFieldUpdateSource *) sfusrc->data; @@ -1299,6 +1378,17 @@ void shell_clear_field_updates(void) } } +static gboolean +select_first_item(gpointer data) +{ + GtkTreeIter first; + + if (gtk_tree_model_get_iter_first(shell->info->model, &first)) + gtk_tree_selection_select_iter(shell->info->selection, &first); + + return FALSE; +} + static void module_selected_show_info(ShellModuleEntry * entry, gboolean reload) { @@ -1308,12 +1398,19 @@ module_selected_show_info(ShellModuleEntry * entry, gboolean reload) gboolean has_shell_param = FALSE; gint i; gsize ngroups; +#if GTK_CHECK_VERSION(2, 14, 0) + GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(shell->info->view)); +#endif module_entry_scan(entry); key_data = module_entry_function(entry); /* */ +#if GTK_CHECK_VERSION(2, 14, 0) + gdk_window_freeze_updates(gdk_window); +#else gdk_window_freeze_updates(shell->info->view->window); +#endif g_object_ref(shell->info->model); gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view), NULL); @@ -1325,7 +1422,7 @@ module_selected_show_info(ShellModuleEntry * entry, gboolean reload) /* recreate the iter hash table */ h_hash_table_remove_all(update_tbl); } - + shell_clear_field_updates(); store = GTK_TREE_STORE(shell->info->model); @@ -1353,18 +1450,22 @@ module_selected_show_info(ShellModuleEntry * entry, gboolean reload) g_strfreev(keys); } - + /* */ if (!has_shell_param) { gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info->view), FALSE); } - + /* */ g_object_unref(shell->info->model); gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view), shell->info->model); gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->info->view)); +#if GTK_CHECK_VERSION(2, 14, 0) + gdk_window_thaw_updates(gdk_window); +#else gdk_window_thaw_updates(shell->info->view->window); +#endif shell_set_note_from_entry(entry); if (shell->view_type == SHELL_VIEW_PROGRESS || shell->view_type == SHELL_VIEW_PROGRESS_DUAL) { @@ -1384,6 +1485,15 @@ module_selected_show_info(ShellModuleEntry * entry, gboolean reload) g_strfreev(groups); g_key_file_free(key_file); g_free(key_data); + + if (!reload) { + switch (shell->view_type) { + case SHELL_VIEW_DUAL: + case SHELL_VIEW_LOAD_GRAPH: + case SHELL_VIEW_PROGRESS_DUAL: + g_idle_add(select_first_item, NULL); + } + } } static void info_selected_show_extra(gchar * data) @@ -1426,7 +1536,7 @@ static gchar *shell_summary_clear_value(gchar *value) { GKeyFile *keyfile; gchar *return_value; - + keyfile = g_key_file_new(); if (!value) return_value = g_strdup(""); else @@ -1434,18 +1544,18 @@ static gchar *shell_summary_clear_value(gchar *value) strlen(value), 0, NULL)) { gchar **groups; gint group; - + return_value = g_strdup(""); - + groups = g_key_file_get_groups(keyfile, NULL); for (group = 0; groups[group]; group++) { gchar **keys; gint key; - + keys = g_key_file_get_keys(keyfile, groups[group], NULL, NULL); for (key = 0; keys[key]; key++) { gchar *temp = keys[key]; - + if (*temp == '$') { temp++; while (*temp && *temp != '$') @@ -1458,17 +1568,17 @@ static gchar *shell_summary_clear_value(gchar *value) keys[key], NULL); } } - + g_strfreev(keys); } - + g_strfreev(groups); } else { return_value = g_strdup(value); } - + g_key_file_free(keyfile); - + return g_strstrip(return_value); } @@ -1484,25 +1594,30 @@ static void shell_summary_add_item(ShellSummary *summary, GtkWidget *content; GtkWidget *alignment; gchar *temp; - + temp = shell_summary_clear_value(value); - + /* creates the frame */ frame = gtk_frame_new(NULL); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE); +#if GTK_CHECK_VERSION(3, 0, 0) + frame_label_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); +#else frame_label_box = gtk_hbox_new(FALSE, 5); +#endif frame_image = icon_cache_get_image(icon); frame_label = gtk_label_new(name); gtk_label_set_use_markup(GTK_LABEL(frame_label), TRUE); gtk_box_pack_start(GTK_BOX(frame_label_box), frame_image, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(frame_label_box), frame_label, FALSE, FALSE, 0); + /* TODO:GTK3 gtk_alignment_new(), etc is deprecated from 3.14 */ alignment = gtk_alignment_new(0.5, 0.5, 1, 1); + gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 48, 0); gtk_widget_show(alignment); gtk_container_add(GTK_CONTAINER(frame), alignment); - gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 48, 0); content = gtk_label_new(temp); gtk_misc_set_alignment(GTK_MISC(content), 0.0, 0.5); @@ -1510,29 +1625,29 @@ static void shell_summary_add_item(ShellSummary *summary, gtk_widget_show_all(frame); gtk_widget_show_all(frame_label_box); - + gtk_frame_set_label_widget(GTK_FRAME(frame), frame_label_box); - + /* pack the item on the summary screen */ gtk_box_pack_start(GTK_BOX(shell->summary->view), frame, FALSE, FALSE, 4); /* add the item to the list of summary items */ summary->items = g_slist_prepend(summary->items, frame); - + g_free(temp); } static void shell_summary_clear(ShellSummary *summary) { GSList *item; - + for (item = summary->items; item; item = item->next) { gtk_widget_destroy(GTK_WIDGET(item->data)); } - + g_slist_free(summary->items); summary->items = NULL; - + if (summary->header) gtk_widget_destroy(summary->header); summary->header = NULL; } @@ -1541,20 +1656,20 @@ static void shell_summary_create_header(ShellSummary *summary, { GtkWidget *header, *label; gchar *temp; - + temp = g_strdup_printf(_("<b>%s \342\206\222 Summary</b>"), title); - + header = gtk_menu_item_new_with_label(temp); gtk_menu_item_select(GTK_MENU_ITEM(header)); gtk_widget_show(header); - + label = gtk_bin_get_child(GTK_BIN(header)); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); - + gtk_box_pack_start(GTK_BOX(shell->summary->view), header, FALSE, FALSE, 4); - + summary->header = header; - + g_free(temp); } @@ -1566,20 +1681,20 @@ static void shell_show_summary(void) set_view_type(SHELL_VIEW_SUMMARY, FALSE); shell_summary_clear(shell->summary); shell_summary_create_header(shell->summary, shell->selected_module->name); - + keyfile = g_key_file_new(); summary = shell->selected_module->summaryfunc(); - + if (g_key_file_load_from_data(keyfile, summary, strlen(summary), 0, NULL)) { gchar **groups; gint group; - + groups = g_key_file_get_groups(keyfile, NULL); - + for (group = 0; groups[group]; group++) { gchar *icon, *method, *method_result; - + shell_status_pulse(); icon = g_key_file_get_string(keyfile, groups[group], "Icon", NULL); @@ -1589,25 +1704,25 @@ static void shell_show_summary(void) } else { method_result = g_strdup("N/A"); } - + shell_summary_add_item(shell->summary, icon, groups[group], method_result); shell_status_pulse(); - + g_free(icon); g_free(method); g_free(method_result); } - + g_strfreev(groups); } else { DEBUG("error while parsing summary"); set_view_type(SHELL_VIEW_NORMAL, FALSE); - } - + } + g_free(summary); g_key_file_free(keyfile); - + shell_view_set_enabled(TRUE); } @@ -1619,6 +1734,7 @@ static void module_selected(gpointer data) ShellModuleEntry *entry; static ShellModuleEntry *current = NULL; static gboolean updating = FALSE; + GtkScrollbar *hscrollbar, *vscrollbar; /* Gets the currently selected item on the left-side TreeView; if there is no selection, silently return */ @@ -1626,7 +1742,7 @@ static void module_selected(gpointer data) return; } - /* Mark the currently selected module as "unselected"; this is used to kill the + /* Mark the currently selected module as "unselected"; this is used to kill the update timeout. */ if (current) { current->selected = FALSE; @@ -1641,7 +1757,7 @@ static void module_selected(gpointer data) if (!gtk_tree_model_iter_parent(model, &parent, &iter)) { memcpy(&parent, &iter, sizeof(iter)); } - + gtk_tree_model_get(model, &parent, TREE_COL_MODULE, &shell->selected_module, -1); /* Get the current selection and shows its related info */ @@ -1655,15 +1771,19 @@ static void module_selected(gpointer data) entry->selected = TRUE; shell->selected = entry; module_selected_show_info(entry, FALSE); - + info_selected_show_extra(NULL); /* clears the more info store */ gtk_tree_view_columns_autosize(GTK_TREE_VIEW(shell->info->view)); /* urgh. why don't GTK do this when the model is cleared? */ +#if GTK_CHECK_VERSION(3, 0, 0) + /* TODO:GTK3 */ +#else RANGE_SET_VALUE(info, vscrollbar, 0.0); RANGE_SET_VALUE(info, hscrollbar, 0.0); RANGE_SET_VALUE(moreinfo, vscrollbar, 0.0); RANGE_SET_VALUE(moreinfo, hscrollbar, 0.0); +#endif title = g_strdup_printf("%s - %s", shell->selected_module->name, entry->name); shell_set_title(shell, title); @@ -1700,7 +1820,7 @@ static void info_selected(GtkTreeSelection * ts, gpointer data) if (!gtk_tree_selection_get_selected(ts, &model, &parent)) return; - + if (shell->view_type == SHELL_VIEW_NORMAL || shell->view_type == SHELL_VIEW_PROGRESS) { gtk_tree_selection_unselect_all(ts); diff --git a/shell/syncmanager.c b/shell/syncmanager.c index 0b95e720..db94d474 100644 --- a/shell/syncmanager.c +++ b/shell/syncmanager.c @@ -117,7 +117,7 @@ void sync_manager_clear_entries(void) { #ifdef HAS_LIBSOUP DEBUG("clearing syncmanager entries"); - + g_slist_free(entries); entries = NULL; #else @@ -470,7 +470,7 @@ static void sync_dialog_netarea_start_actions(SyncDialog * sd, gtk_label_set_use_markup(GTK_LABEL(labels[i]), TRUE); gtk_label_set_use_markup(GTK_LABEL(status_labels[i]), TRUE); - + gtk_misc_set_alignment(GTK_MISC(labels[i]), 0.0, 0.5); gtk_misc_set_alignment(GTK_MISC(status_labels[i]), 1.0, 0.5); @@ -489,8 +489,8 @@ static void sync_dialog_netarea_start_actions(SyncDialog * sd, if (sd->flag_cancel) { markup = - g_strdup_printf(_("<s>%s</s> <i>(canceled)</i>"), - sna[i].name); + g_strdup_printf("<s>%s</s> <i>%s</i>", + sna[i].name, _("(canceled)")); gtk_label_set_markup(GTK_LABEL(labels[i]), markup); g_free(markup); @@ -506,8 +506,8 @@ static void sync_dialog_netarea_start_actions(SyncDialog * sd, if (sna[i].do_action && !sna[i].do_action(sd, &sna[i])) { markup = - g_strdup_printf(_("<b><s>%s</s></b> <i>(failed)</i>"), - sna[i].name); + g_strdup_printf("<b><s>%s</s></b> <i>%s</i>", + sna[i].name, _("(failed)")); gtk_label_set_markup(GTK_LABEL(labels[i]), markup); g_free(markup); @@ -667,18 +667,29 @@ static SyncDialog *sync_dialog_new(GtkWidget *parent) gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); +#if GTK_CHECK_VERSION(2, 14, 0) + dialog1_vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); +#else dialog1_vbox = GTK_DIALOG(dialog)->vbox; +#endif gtk_box_set_spacing(GTK_BOX(dialog1_vbox), 5); gtk_container_set_border_width(GTK_CONTAINER(dialog1_vbox), 4); gtk_widget_show(dialog1_vbox); - +#if GTK_CHECK_VERSION(3, 0, 0) + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); +#else hbox = gtk_hbox_new(FALSE, 5); +#endif gtk_box_pack_start(GTK_BOX(dialog1_vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new(LABEL_SYNC_DEFAULT); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); +#if GTK_CHECK_VERSION(3, 0, 0) + gtk_widget_set_valign(label, GTK_ALIGN_CENTER); +#else gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); +#endif gtk_box_pack_start(GTK_BOX(hbox), icon_cache_get_image("syncmanager.png"), @@ -725,29 +736,43 @@ static SyncDialog *sync_dialog_new(GtkWidget *parent) populate_store(store); +#if GTK_CHECK_VERSION(2, 14, 0) + dialog1_action_area = gtk_dialog_get_action_area(GTK_DIALOG(dialog)); +#else dialog1_action_area = GTK_DIALOG(dialog)->action_area; +#endif gtk_widget_show(dialog1_action_area); gtk_button_box_set_layout(GTK_BUTTON_BOX(dialog1_action_area), GTK_BUTTONBOX_END); - button8 = gtk_button_new_from_stock(GTK_STOCK_CANCEL); + button8 = gtk_button_new_with_mnemonic(_("_Cancel")); gtk_widget_show(button8); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button8, GTK_RESPONSE_CANCEL); +#if GTK_CHECK_VERSION(2, 18, 0) + gtk_widget_set_can_default(button8, TRUE); +#else GTK_WIDGET_SET_FLAGS(button8, GTK_CAN_DEFAULT); - +#endif button7 = gtk_button_new_with_mnemonic(_("_Synchronize")); gtk_widget_show(button7); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button7, GTK_RESPONSE_ACCEPT); +#if GTK_CHECK_VERSION(2, 18, 0) + gtk_widget_set_can_default(button7, TRUE); +#else GTK_WIDGET_SET_FLAGS(button7, GTK_CAN_DEFAULT); - +#endif button6 = gtk_button_new_from_stock(GTK_STOCK_CLOSE); g_signal_connect(G_OBJECT(button6), "clicked", (GCallback) close_clicked, NULL); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button6, GTK_RESPONSE_ACCEPT); +#if GTK_CHECK_VERSION(2, 18, 0) + gtk_widget_set_can_default(button6, TRUE); +#else GTK_WIDGET_SET_FLAGS(button6, GTK_CAN_DEFAULT); +#endif sd->dialog = dialog; sd->button_sync = button7; diff --git a/test/data/alpha_as_cpuinfo b/test/data/alpha_as_cpuinfo new file mode 100644 index 00000000..698b3d4d --- /dev/null +++ b/test/data/alpha_as_cpuinfo @@ -0,0 +1,19 @@ +cpu : Alpha +cpu model : EV56 +cpu variation : 7 +cpu revision : 0 +cpu serial number : +system type : Rawhide +system variation : Tincup +system revision : 0 +system serial number : BT00000000 +cycle frequency [Hz] : 531914893 +timer frequency [Hz] : 1200.00 +page size [bytes] : 8192 +phys. address bits : 40 +max. addr. space # : 127 +BogoMIPS : 1063.92 +kernel unaligned acc : 0 (pc=0,va=0) +user unaligned acc : 0 (pc=0,va=0) +platform string : AlphaServer 1200 5/533 4MB +cpus detected : 1 diff --git a/test/data/arm_asus_android_cpuinfo b/test/data/arm_asus_android_cpuinfo new file mode 100644 index 00000000..bc1e811d --- /dev/null +++ b/test/data/arm_asus_android_cpuinfo @@ -0,0 +1,17 @@ +Processor : AArch64 Processor rev 1 (aarch64) +processor : 0 +processor : 1 +processor : 2 +processor : 3 +processor : 4 +processor : 5 +processor : 6 +processor : 7 +Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part : 0xd03 +CPU revision : 1 + +Hardware : Qualcomm Technologies, Inc MSM8939 diff --git a/test/data/arm_jetsontx2_cpuinfo b/test/data/arm_jetsontx2_cpuinfo new file mode 100644 index 00000000..0ac0480b --- /dev/null +++ b/test/data/arm_jetsontx2_cpuinfo @@ -0,0 +1,61 @@ +processor : 0 +model name : ARMv8 Processor rev 3 (v8l) +BogoMIPS : 62.50 +Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part : 0xd07 +CPU revision : 3 + +processor : 1 +model name : ARMv8 Processor rev 0 (v8l) +BogoMIPS : 62.50 +Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 +CPU implementer : 0x4e +CPU architecture: 8 +CPU variant : 0x0 +CPU part : 0x003 +CPU revision : 0 +MTS version : 37620520 + +processor : 2 +model name : ARMv8 Processor rev 0 (v8l) +BogoMIPS : 62.50 +Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 +CPU implementer : 0x4e +CPU architecture: 8 +CPU variant : 0x0 +CPU part : 0x003 +CPU revision : 0 +MTS version : 37620520 + +processor : 3 +model name : ARMv8 Processor rev 3 (v8l) +BogoMIPS : 62.50 +Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part : 0xd07 +CPU revision : 3 + +processor : 4 +model name : ARMv8 Processor rev 3 (v8l) +BogoMIPS : 62.50 +Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part : 0xd07 +CPU revision : 3 + +processor : 5 +model name : ARMv8 Processor rev 3 (v8l) +BogoMIPS : 62.50 +Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part : 0xd07 +CPU revision : 3 diff --git a/test/data/arm_marv_cpuinfo b/test/data/arm_marv_cpuinfo new file mode 100644 index 00000000..e48bebc6 --- /dev/null +++ b/test/data/arm_marv_cpuinfo @@ -0,0 +1,9 @@ +Processor : Feroceon 88FR131 rev 1 (v5l) +BogoMIPS : 1192.75 +Features : swp half fastmult edsp +CPU implementer : 0x56 +CPU architecture: 5TE +CPU variant : 0x2 +CPU part : 0x131 +CPU revision : 1 + diff --git a/test/data/arm_rpi3_aarch32_cpuinfo b/test/data/arm_rpi3_aarch32_cpuinfo new file mode 100644 index 00000000..5092ba9b --- /dev/null +++ b/test/data/arm_rpi3_aarch32_cpuinfo @@ -0,0 +1,44 @@ +processor : 0 +model name : ARMv7 Processor rev 4 (v7l) +BogoMIPS : 38.40 +Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 +CPU implementer : 0x41 +CPU architecture: 7 +CPU variant : 0x0 +CPU part : 0xd03 +CPU revision : 4 + +processor : 1 +model name : ARMv7 Processor rev 4 (v7l) +BogoMIPS : 38.40 +Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 +CPU implementer : 0x41 +CPU architecture: 7 +CPU variant : 0x0 +CPU part : 0xd03 +CPU revision : 4 + +processor : 2 +model name : ARMv7 Processor rev 4 (v7l) +BogoMIPS : 38.40 +Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 +CPU implementer : 0x41 +CPU architecture: 7 +CPU variant : 0x0 +CPU part : 0xd03 +CPU revision : 4 + +processor : 3 +model name : ARMv7 Processor rev 4 (v7l) +BogoMIPS : 38.40 +Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 +CPU implementer : 0x41 +CPU architecture: 7 +CPU variant : 0x0 +CPU part : 0xd03 +CPU revision : 4 + +Hardware : BCM2835 +Revision : a02082 +Serial : 00000000d5442118 + diff --git a/test/data/arm_rpi3_aarch64_cpuinfo b/test/data/arm_rpi3_aarch64_cpuinfo new file mode 100644 index 00000000..f7aef079 --- /dev/null +++ b/test/data/arm_rpi3_aarch64_cpuinfo @@ -0,0 +1,36 @@ +processor : 0 +BogoMIPS : 38.40 +Features : fp asimd evtstrm crc32 cpuid +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part : 0xd03 +CPU revision : 4 + +processor : 1 +BogoMIPS : 38.40 +Features : fp asimd evtstrm crc32 cpuid +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part : 0xd03 +CPU revision : 4 + +processor : 2 +BogoMIPS : 38.40 +Features : fp asimd evtstrm crc32 cpuid +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part : 0xd03 +CPU revision : 4 + +processor : 3 +BogoMIPS : 38.40 +Features : fp asimd evtstrm crc32 cpuid +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part : 0xd03 +CPU revision : 4 + diff --git a/test/data/ia64_x2_cpuinfo b/test/data/ia64_x2_cpuinfo new file mode 100644 index 00000000..f355d80e --- /dev/null +++ b/test/data/ia64_x2_cpuinfo @@ -0,0 +1,27 @@ +processor : 0 +vendor : GenuineIntel +arch : IA-64 +family : Itanium +model : 0 +revision : 6 +archrev : 0 +features : standard +cpu number : 0 +cpu regs : 4 +cpu MHz : 733.433976 +itc MHz : 733.433976 +BogoMIPS : 517.99 + +processor : 1 +vendor : GenuineIntel +arch : IA-64 +family : Itanium +model : 0 +revision : 6 +archrev : 0 +features : standard +cpu number : 0 +cpu regs : 4 +cpu MHz : 733.433976 +itc MHz : 733.433976 +BogoMIPS : 729.80 diff --git a/test/data/m68k_sun3_cpuinfo b/test/data/m68k_sun3_cpuinfo new file mode 100644 index 00000000..8c9c8d54 --- /dev/null +++ b/test/data/m68k_sun3_cpuinfo @@ -0,0 +1,6 @@ +CPU: 68020 +MMU: Sun-3 +FPU: 68881 +Clocking: 19.9MHz +BogoMips: 4.97 +Calibration: 24896 loops diff --git a/test/data/mips_loongson_cpuinfo b/test/data/mips_loongson_cpuinfo new file mode 100644 index 00000000..f2ee0e90 --- /dev/null +++ b/test/data/mips_loongson_cpuinfo @@ -0,0 +1,13 @@ +system type : gdium +processor : 0 +cpu model : ICT Loongson-2 V0.3 FPU V0.1 +BogoMIPS : 598.60 +wait instruction : no +microsecond timers : yes +tlb_entries : 64 +extra interrupt vector : no +hardware watchpoint : no +ASEs implemented : +shadow register sets : 1 +VCED exceptions : not available +VCEI exceptions : not available diff --git a/test/data/parisc_hppa_fortex4_cpuinfo b/test/data/parisc_hppa_fortex4_cpuinfo new file mode 100644 index 00000000..79efffc2 --- /dev/null +++ b/test/data/parisc_hppa_fortex4_cpuinfo @@ -0,0 +1,59 @@ +processor : 0 +cpu family : PA-RISC 2.0 +cpu : PA8500 (PCX-W) +cpu MHz : 440.000000 +model : 9000/785/J7000 +model name : Forte W 4-way +hversion : 0x00005bf0 +sversion : 0x00000491 +I-cache : 512 KB +D-cache : 1024 KB (WB) +ITLB entries : 160 +DTLB entries : 160 - shared with ITLB +bogomips : 878.18 +software id : 2002742099 + +processor : 1 +cpu family : PA-RISC 2.0 +cpu : PA8500 (PCX-W) +cpu MHz : 440.000000 +model : 9000/785/J7000 +model name : Forte W 4-way +hversion : 0x00005bf0 +sversion : 0x00000491 +I-cache : 512 KB +D-cache : 1024 KB (WB) +ITLB entries : 160 +DTLB entries : 160 - shared with ITLB +bogomips : 878.18 +software id : 2002742099 + +processor : 2 +cpu family : PA-RISC 2.0 +cpu : PA8500 (PCX-W) +cpu MHz : 440.000000 +model : 9000/785/J7000 +model name : Forte W 4-way +hversion : 0x00005bf0 +sversion : 0x00000491 +I-cache : 512 KB +D-cache : 1024 KB (WB) +ITLB entries : 160 +DTLB entries : 160 - shared with ITLB +bogomips : 878.18 +software id : 2002742099 + +processor : 3 +cpu family : PA-RISC 2.0 +cpu : PA8500 (PCX-W) +cpu MHz : 440.000000 +model : 9000/785/J7000 +model name : Forte W 4-way +hversion : 0x00005bf0 +sversion : 0x00000491 +I-cache : 512 KB +D-cache : 1024 KB (WB) +ITLB entries : 160 +DTLB entries : 160 - shared with ITLB +bogomips : 878.18 +software id : 2002742099 diff --git a/test/data/power8_cpuinfo b/test/data/power8_cpuinfo new file mode 100644 index 00000000..0544168b --- /dev/null +++ b/test/data/power8_cpuinfo @@ -0,0 +1,325 @@ +processor : 0 +cpu : POWER8 (raw), altivec supported +clock : 3857.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 1 +cpu : POWER8 (raw), altivec supported +clock : 3857.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 2 +cpu : POWER8 (raw), altivec supported +clock : 3857.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 3 +cpu : POWER8 (raw), altivec supported +clock : 3857.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 4 +cpu : POWER8 (raw), altivec supported +clock : 3857.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 5 +cpu : POWER8 (raw), altivec supported +clock : 3857.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 6 +cpu : POWER8 (raw), altivec supported +clock : 3857.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 7 +cpu : POWER8 (raw), altivec supported +clock : 3857.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 8 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 9 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 10 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 11 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 12 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 13 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 14 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 15 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 16 +cpu : POWER8 (raw), altivec supported +clock : 3059.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 17 +cpu : POWER8 (raw), altivec supported +clock : 3059.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 18 +cpu : POWER8 (raw), altivec supported +clock : 3059.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 19 +cpu : POWER8 (raw), altivec supported +clock : 3059.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 20 +cpu : POWER8 (raw), altivec supported +clock : 3059.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 21 +cpu : POWER8 (raw), altivec supported +clock : 3059.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 22 +cpu : POWER8 (raw), altivec supported +clock : 3059.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 23 +cpu : POWER8 (raw), altivec supported +clock : 3059.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 24 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 25 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 26 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 27 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 28 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 29 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 30 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 31 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 32 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 33 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 34 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 35 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 36 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 37 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 38 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 39 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 40 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 41 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 42 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 43 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 44 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 45 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 46 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 47 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 48 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 49 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 50 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 51 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 52 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 53 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 54 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 55 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 56 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 57 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 58 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 59 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 60 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 61 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 62 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +processor : 63 +cpu : POWER8 (raw), altivec supported +clock : 2061.000000MHz +revision : 2.0 (pvr 004d 0200) + +timebase : 512000000 +platform : PowerNV +model : 8335-GCA +machine : PowerNV 8335-GCA +firmware : OPAL v3 diff --git a/test/data/ppc_g5_cpuinfo b/test/data/ppc_g5_cpuinfo new file mode 100644 index 00000000..f326316a --- /dev/null +++ b/test/data/ppc_g5_cpuinfo @@ -0,0 +1,30 @@ +processor : 0 +cpu : PPC970MP, altivec supported +clock : 1250.000000MHz +revision : 1.1 (pvr 0044 0101) + +processor : 1 +cpu : PPC970MP, altivec supported +clock : 1250.000000MHz +revision : 1.1 (pvr 0044 0101) + +processor : 2 +cpu : PPC970MP, altivec supported +clock : 1250.000000MHz +revision : 1.1 (pvr 0044 0101) + +processor : 3 +cpu : PPC970MP, altivec supported +clock : 1250.000000MHz +revision : 1.1 (pvr 0044 0101) + +timebase : 33333333 +platform : PowerMac +model : PowerMac11,2 +machine : PowerMac11,2 +motherboard : PowerMac11,2 MacRISC4 Power Macintosh +detected as : 337 (PowerMac G5 Dual Core) +pmac flags : 00000000 +L2 cache : 1024K unified +pmac-generation : NewWorld + diff --git a/test/data/riscv_fake_cpuinfo b/test/data/riscv_fake_cpuinfo new file mode 100644 index 00000000..3f23c5e8 --- /dev/null +++ b/test/data/riscv_fake_cpuinfo @@ -0,0 +1,2 @@ +hart : 0 +isa : rv32a4p0c2pdfimsu_Xargle2P1_SXbargle diff --git a/test/data/riscv_sim_cpuinfo b/test/data/riscv_sim_cpuinfo new file mode 100644 index 00000000..a87cdecb --- /dev/null +++ b/test/data/riscv_sim_cpuinfo @@ -0,0 +1,2 @@ +hart : 0 +isa : RV64G diff --git a/test/data/rpi1_raspbian.dts b/test/data/rpi1_raspbian.dts new file mode 100644 index 00000000..ce50cba4 --- /dev/null +++ b/test/data/rpi1_raspbian.dts @@ -0,0 +1,758 @@ +/dts-v1/; + +/ { + compatible = "brcm,bcm2835"; + serial-number = "00000000925ea123"; + model = "Raspberry Pi Model B Rev 1"; + memreserve = <0xf000000 0x1000000>; + interrupt-parent = <0x1>; + #address-cells = <0x1>; + #size-cells = <0x1>; + + clocks { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x0>; + + clock@3 { + compatible = "fixed-clock"; + #clock-cells = <0x0>; + phandle = <0x2>; + reg = <0x3>; + clock-output-names = "osc"; + clock-frequency = <0x124f800>; + }; + + clock@4 { + compatible = "fixed-clock"; + #clock-cells = <0x0>; + phandle = <0x11>; + reg = <0x4>; + clock-output-names = "otg"; + clock-frequency = <0x1c9c3800>; + }; + }; + + __overrides__ { + i2c1 = [00 00 00 1b 73 74 61 74 75 73 00]; + i2c_vc = [00 00 00 1b 73 74 61 74 75 73 00]; + sd_overclock = "", "", "", " brcm,overclock-50:0"; + i2c0_baudrate = [00 00 00 1a 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; + sd_pio_limit = "", "", "", " brcm,pio-limit:0"; + act_led_trigger = [00 00 00 1c 6c 69 6e 75 78 2c 64 65 66 61 75 6c 74 2d 74 72 69 67 67 65 72 00]; + audio = [00 00 00 1d 73 74 61 74 75 73 00]; + sd_debug = "", "", "", " brcm,debug"; + cache_line_size = [00 00 00 15 63 61 63 68 65 2d 6c 69 6e 65 2d 73 69 7a 65 3a 30 00]; + i2c1_baudrate = [00 00 00 1b 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; + spi = [00 00 00 19 73 74 61 74 75 73 00]; + i2c_arm = [00 00 00 1a 73 74 61 74 75 73 00]; + uart0 = [00 00 00 16 73 74 61 74 75 73 00]; + i2c2_iknowwhatimdoing = [00 00 00 10 73 74 61 74 75 73 00]; + i2s = [00 00 00 18 73 74 61 74 75 73 00]; + i2c0 = [00 00 00 1a 73 74 61 74 75 73 00]; + watchdog = [00 00 00 1e 73 74 61 74 75 73 00]; + i2c_baudrate = [00 00 00 1a 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; + i2c_vc_baudrate = [00 00 00 1b 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; + act_led_activelow = <0x1c 0x6770696f 0x733a3800>; + i2c2_baudrate = [00 00 00 10 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; + sd_force_pio = "", "", "", " brcm,force-pio?"; + uart1 = [00 00 00 17 73 74 61 74 75 73 00]; + i2c_arm_baudrate = [00 00 00 1a 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; + random = [00 00 00 1f 73 74 61 74 75 73 00]; + act_led_gpio = <0x1c 0x6770696f 0x733a3400>; + i2c = [00 00 00 1a 73 74 61 74 75 73 00]; + }; + + system { + linux,serial = <0x0 0x925b29dd>; + linux,revision = <0x2>; + }; + + __symbols__ { + pwm = "/soc/pwm@7e20c000"; + clk_usb = "/clocks/clock@4"; + pixelvalve0 = "/soc/pixelvalve@7e206000"; + intc = "/soc/interrupt-controller@7e00b200"; + spi2 = "/soc/spi@7e2150c0"; + dsi1 = "/soc/dsi@7e700000"; + clocks = "/soc/cprman@7e101000"; + i2c1 = "/soc/i2c@7e804000"; + i2c_vc = "/soc/i2c@7e804000"; + firmwarekms = "/soc/firmwarekms@7e600000"; + smi = "/soc/smi@7e600000"; + gpu = "/soc/gpu"; + spi0 = "/soc/spi@7e204000"; + thermal = "/soc/thermal"; + vdd_5v0_reg = "/fixedregulator_5v0"; + vchiq = "/soc/vchiq"; + sdhost = "/soc/sdhost@7e202000"; + aux = "/soc/aux@0x7e215000"; + gpio = "/soc/gpio@7e200000"; + dpi = "/soc/dpi@7e208000"; + v3d = "/soc/v3d@7ec00000"; + audio = "/soc/audio"; + vdd_3v3_reg = "/fixedregulator_3v3"; + dma = "/soc/dma@7e007000"; + spidev1 = "/soc/spi@7e204000/spidev@1"; + vc4 = "/soc/gpu"; + power = "/soc/power"; + soc = "/soc"; + leds = "/leds"; + i2s_pins = "/soc/gpio@7e200000/i2s"; + firmware = "/soc/firmware"; + cprman = "/soc/cprman@7e101000"; + mmc = "/soc/mmc@7e300000"; + pixelvalve1 = "/soc/pixelvalve@7e207000"; + spi = "/soc/spi@7e204000"; + spi0_pins = "/soc/gpio@7e200000/spi0_pins"; + pitouchscreen_touch = "/soc/i2cdsi/bridge@38"; + i2c_arm = "/soc/i2c@7e205000"; + clk_osc = "/clocks/clock@3"; + ethernet = "/soc/usb@7e980000/usb1@1/usbether@1"; + uart0 = "/soc/serial@7e201000"; + i2c1_pins = "/soc/gpio@7e200000/i2c1"; + fb = "/soc/fb"; + sdhost_pins = "/soc/gpio@7e200000/sdhost_pins"; + i2c2 = "/soc/i2c@7e805000"; + i2s = "/soc/i2s@7e203000"; + spi1 = "/soc/spi@7e215080"; + usb = "/soc/usb@7e980000"; + dsi0 = "/soc/dsi@7e209000"; + audio_pins = "/soc/gpio@7e200000/audio_pins"; + i2c0 = "/soc/i2c@7e205000"; + i2c0_pins = "/soc/gpio@7e200000/i2c0"; + watchdog = "/soc/watchdog@7e100000"; + vec = "/soc/vec@7e806000"; + i2c_dsi = "/soc/i2cdsi"; + pitouchscreen_bridge = "/soc/i2cdsi/bridge@45"; + spi0_cs_pins = "/soc/gpio@7e200000/spi0_cs_pins"; + sound = "/soc/sound"; + hvs = "/soc/hvs@7e400000"; + act_led = "/leds/act"; + spidev0 = "/soc/spi@7e204000/spidev@0"; + hdmi = "/soc/hdmi@7e902000"; + pixelvalve2 = "/soc/pixelvalve@7e807000"; + mailbox = "/soc/mailbox@7e00b880"; + uart1 = "/soc/serial@7e215040"; + random = "/soc/rng@7e104000"; + i2c = "/soc/i2c@7e205000"; + }; + + soc { + compatible = "simple-bus"; + ranges = <0x7e000000 0x20000000 0x2000000>; + #address-cells = <0x1>; + #size-cells = <0x1>; + phandle = <0x21>; + dma-ranges = <0x40000000 0x0 0x20000000>; + + serial@7e201000 { + compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; + clocks = <0x6 0x13 0x6 0x14>; + clock-names = "uartclk", "apb_pclk"; + status = "okay"; + interrupts = <0x2 0x19>; + phandle = <0x16>; + arm,primecell-periphid = <0x241011>; + reg = <0x7e201000 0x1000>; + }; + + pixelvalve@7e207000 { + compatible = "brcm,bcm2835-pixelvalve1"; + status = "disabled"; + interrupts = <0x2 0xe>; + phandle = <0x25>; + reg = <0x7e207000 0x100>; + }; + + cprman@7e101000 { + compatible = "brcm,bcm2835-cprman"; + clocks = <0x2 0x3 0x0 0x3 0x1 0x3 0x2 0x4 0x0 0x4 0x1 0x4 0x2>; + firmware = <0x5>; + #clock-cells = <0x1>; + phandle = <0x6>; + reg = <0x7e101000 0x2000>; + }; + + hvs@7e400000 { + compatible = "brcm,bcm2835-hvs"; + status = "disabled"; + interrupts = <0x2 0x1>; + phandle = <0x29>; + reg = <0x7e400000 0x6000>; + }; + + gpio@7e200000 { + compatible = "brcm,bcm2835-gpio"; + gpio-controller; + #interrupt-cells = <0x2>; + interrupts = <0x2 0x11 0x2 0x12>; + phandle = <0x9>; + reg = <0x7e200000 0xb4>; + #gpio-cells = <0x2>; + interrupt-controller; + + i2c1 { + brcm,pins = <0x2 0x3>; + phandle = <0xf>; + brcm,function = <0x4>; + }; + + spi0_pins { + brcm,pins = <0x9 0xa 0xb>; + phandle = <0xa>; + brcm,function = <0x4>; + }; + + sdhost_pins { + brcm,pins = <0x30 0x31 0x32 0x33 0x34 0x35>; + phandle = <0x12>; + brcm,function = <0x4>; + }; + + i2s { + brcm,pins = <0x1c 0x1d 0x1e 0x1f>; + phandle = <0x8>; + brcm,function = <0x6>; + }; + + audio_pins { + brcm,pins = <0x28 0x2d>; + phandle = <0x14>; + brcm,function = <0x4>; + }; + + i2c0 { + brcm,pins = <0x0 0x1>; + phandle = <0xc>; + brcm,function = <0x4>; + }; + + spi0_cs_pins { + brcm,pins = <0x8 0x7>; + phandle = <0xb>; + brcm,function = <0x1>; + }; + }; + + pixelvalve@7e807000 { + compatible = "brcm,bcm2835-pixelvalve2"; + status = "disabled"; + interrupts = <0x2 0xa>; + phandle = <0x2b>; + reg = <0x7e807000 0x100>; + }; + + v3d@7ec00000 { + power-domains = <0xe 0xa>; + compatible = "brcm,vc4-v3d"; + status = "disabled"; + interrupts = <0x1 0xa>; + phandle = <0x2f>; + reg = <0x7ec00000 0x1000>; + }; + + gpu { + compatible = "brcm,bcm2835-vc4"; + status = "disabled"; + phandle = <0x30>; + }; + + mmc@7e300000 { + compatible = "brcm,bcm2835-mmc"; + clocks = <0x6 0x1c>; + status = "disabled"; + interrupts = <0x2 0x1e>; + brcm,overclock-50 = <0x0>; + dma-names = "rx-tx"; + phandle = <0x32>; + reg = <0x7e300000 0x100>; + dmas = <0x7 0xb>; + }; + + arm-pmu { + compatible = "arm,arm1176-pmu"; + }; + + thermal { + compatible = "brcm,bcm2835-thermal"; + firmware = <0x5>; + phandle = <0x39>; + }; + + spi@7e204000 { + compatible = "brcm,bcm2835-spi"; + clocks = <0x6 0x14>; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0x16>; + cs-gpios = <0x9 0x8 0x1 0x9 0x7 0x1>; + #size-cells = <0x0>; + dma-names = "tx", "rx"; + phandle = <0x19>; + reg = <0x7e204000 0x1000>; + pinctrl-0 = <0xa 0xb>; + dmas = <0x7 0x6 0x7 0x7>; + pinctrl-names = "default"; + + spidev@1 { + compatible = "spidev"; + #address-cells = <0x1>; + #size-cells = <0x0>; + phandle = <0x23>; + reg = <0x1>; + spi-max-frequency = <0x7a120>; + }; + + spidev@0 { + compatible = "spidev"; + #address-cells = <0x1>; + #size-cells = <0x0>; + phandle = <0x22>; + reg = <0x0>; + spi-max-frequency = <0x7a120>; + }; + }; + + i2cdsi { + gpios = <0x9 0x2 0x0 0x9 0x3 0x0>; + compatible = "i2c-gpio"; + status = "disabled"; + #address-cells = <0x1>; + #size-cells = <0x0>; + phandle = <0x35>; + + bridge@45 { + compatible = "raspberrypi,touchscreen-bridge-i2c"; + phandle = <0x36>; + reg = <0x45>; + }; + + bridge@38 { + compatible = "raspberrypi,touchscreen-ts-i2c"; + phandle = <0x37>; + reg = <0x38>; + }; + }; + + vchiq { + compatible = "brcm,bcm2835-vchiq"; + cache-line-size = <0x20>; + firmware = <0x5>; + interrupts = <0x0 0x2>; + phandle = <0x15>; + reg = <0x7e00b840 0xf>; + }; + + i2c@7e804000 { + compatible = "brcm,bcm2835-i2c"; + clocks = <0x6 0x14>; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0x15>; + #size-cells = <0x0>; + phandle = <0x1b>; + reg = <0x7e804000 0x1000>; + clock-frequency = <0x186a0>; + pinctrl-0 = <0xf>; + pinctrl-names = "default"; + }; + + audio { + brcm,pwm-channels = <0x8>; + compatible = "brcm,bcm2835-audio"; + status = "okay"; + phandle = <0x1d>; + pinctrl-0 = <0x14>; + pinctrl-names = "default"; + }; + + timer@7e003000 { + compatible = "brcm,bcm2835-system-timer"; + interrupts = <0x1 0x0 0x1 0x1 0x1 0x2 0x1 0x3>; + reg = <0x7e003000 0x1000>; + clock-frequency = <0xf4240>; + }; + + i2s@7e203000 { + compatible = "brcm,bcm2835-i2s"; + clocks = <0x6 0x1f>; + #sound-dai-cells = <0x0>; + status = "disabled"; + dma-names = "tx", "rx"; + phandle = <0x18>; + reg = <0x7e203000 0x24>; + pinctrl-0 = <0x8>; + dmas = <0x7 0x2 0x7 0x3>; + pinctrl-names = "default"; + }; + + mailbox@7e00b880 { + compatible = "brcm,bcm2835-mbox"; + #mbox-cells = <0x0>; + interrupts = <0x0 0x1>; + phandle = <0x13>; + reg = <0x7e00b880 0x40>; + }; + + gpiomem { + compatible = "brcm,bcm2835-gpiomem"; + reg = <0x7e200000 0x1000>; + }; + + vec@7e806000 { + compatible = "brcm,bcm2835-vec"; + clocks = <0x6 0x18>; + status = "disabled"; + interrupts = <0x2 0x1b>; + phandle = <0x2a>; + reg = <0x7e806000 0x1000>; + }; + + power { + compatible = "raspberrypi,bcm2835-power"; + firmware = <0x5>; + phandle = <0xe>; + #power-domain-cells = <0x1>; + }; + + pixelvalve@7e206000 { + compatible = "brcm,bcm2835-pixelvalve0"; + status = "disabled"; + interrupts = <0x2 0xd>; + phandle = <0x24>; + reg = <0x7e206000 0x100>; + }; + + firmware { + compatible = "raspberrypi,bcm2835-firmware"; + mboxes = <0x13>; + phandle = <0x5>; + }; + + dsi@7e209000 { + compatible = "brcm,bcm2835-dsi0"; + clocks = <0x6 0x20 0x6 0x2f 0x6 0x31>; + clock-names = "phy", "escape", "pixel"; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0x4>; + #size-cells = <0x0>; + #clock-cells = <0x1>; + phandle = <0x3>; + reg = <0x7e209000 0x78>; + clock-output-names = "dsi0_byte", "dsi0_ddr2", "dsi0_ddr"; + }; + + fb { + compatible = "brcm,bcm2708-fb"; + firmware = <0x5>; + status = "okay"; + phandle = <0x38>; + }; + + sdhost@7e202000 { + compatible = "brcm,bcm2835-sdhost"; + clocks = <0x6 0x14>; + brcm,pio-limit = <0x1>; + status = "okay"; + interrupts = <0x2 0x18>; + brcm,overclock-50 = <0x0>; + bus-width = <0x4>; + dma-names = "rx-tx"; + phandle = <0x20>; + reg = <0x7e202000 0x100>; + pinctrl-0 = <0x12>; + dmas = <0x7 0xd>; + pinctrl-names = "default"; + }; + + dpi@7e208000 { + compatible = "brcm,bcm2835-dpi"; + clocks = <0x6 0x14 0x6 0x2c>; + clock-names = "core", "pixel"; + status = "disabled"; + #address-cells = <0x1>; + #size-cells = <0x0>; + phandle = <0x31>; + reg = <0x7e208000 0x8c>; + }; + + hdmi@7e902000 { + power-domains = <0xe 0x5>; + compatible = "brcm,bcm2835-hdmi"; + clocks = <0x6 0x10 0x6 0x19>; + clock-names = "pixel", "hdmi"; + ddc = <0x10>; + status = "disabled"; + interrupts = <0x2 0x8 0x2 0x9>; + dma-names = "audio-rx"; + phandle = <0x2c>; + hpd-gpios = <0x9 0x2e 0x0>; + reg = <0x7e902000 0x600 0x7e808000 0x100>; + dmas = <0x7 0x11>; + }; + + pwm@7e20c000 { + compatible = "brcm,bcm2835-pwm"; + clocks = <0x6 0x1e>; + status = "disabled"; + assigned-clock-rates = <0x989680>; + assigned-clocks = <0x6 0x1e>; + phandle = <0x28>; + reg = <0x7e20c000 0x28>; + #pwm-cells = <0x2>; + }; + + watchdog@7e100000 { + compatible = "brcm,bcm2835-pm-wdt"; + phandle = <0x1e>; + reg = <0x7e100000 0x28>; + }; + + interrupt-controller@7e00b200 { + compatible = "brcm,bcm2835-armctrl-ic"; + #interrupt-cells = <0x2>; + phandle = <0x1>; + reg = <0x7e00b200 0x200>; + interrupt-controller; + }; + + dsi@7e700000 { + power-domains = <0xe 0x12>; + compatible = "brcm,bcm2835-dsi1"; + clocks = <0x6 0x23 0x6 0x30 0x6 0x32>; + clock-names = "phy", "escape", "pixel"; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0xc>; + #size-cells = <0x0>; + #clock-cells = <0x1>; + phandle = <0x4>; + reg = <0x7e700000 0x8c>; + clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr"; + }; + + sound { + status = "disabled"; + phandle = <0x3a>; + }; + + i2c@7e205000 { + compatible = "brcm,bcm2835-i2c"; + clocks = <0x6 0x14>; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0x15>; + #size-cells = <0x0>; + phandle = <0x1a>; + reg = <0x7e205000 0x1000>; + clock-frequency = <0x186a0>; + pinctrl-0 = <0xc>; + pinctrl-names = "default"; + }; + + serial@7e215040 { + compatible = "brcm,bcm2835-aux-uart"; + clocks = <0xd 0x0>; + status = "disabled"; + interrupt-parent = <0xd>; + interrupts = <0x0>; + phandle = <0x17>; + reg = <0x7e215040 0x40>; + }; + + dma@7e007000 { + #dma-cells = <0x1>; + compatible = "brcm,bcm2835-dma"; + brcm,dma-channel-mask = <0x7f34>; + interrupts = <0x1 0x10 0x1 0x11 0x1 0x12 0x1 0x13 0x1 0x14 0x1 0x15 0x1 0x16 0x1 0x17 0x1 0x18 0x1 0x19 0x1 0x1a 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1c>; + phandle = <0x7>; + reg = <0x7e007000 0xf00>; + interrupt-names = "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7", "dma8", "dma9", "dma10", "dma11", "dma12", "dma13", "dma14", "dma-shared-all"; + }; + + i2c@7e805000 { + compatible = "brcm,bcm2835-i2c"; + clocks = <0x6 0x14>; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0x15>; + #size-cells = <0x0>; + phandle = <0x10>; + reg = <0x7e805000 0x1000>; + clock-frequency = <0x186a0>; + }; + + spi@7e215080 { + compatible = "brcm,bcm2835-aux-spi"; + clocks = <0xd 0x1>; + status = "disabled"; + interrupt-parent = <0xd>; + #address-cells = <0x1>; + interrupts = <0x1>; + #size-cells = <0x0>; + phandle = <0x26>; + reg = <0x7e215080 0x40>; + }; + + aux@0x7e215000 { + compatible = "brcm,bcm2835-aux"; + clocks = <0x6 0x14>; + #interrupt-cells = <0x1>; + interrupts = <0x1 0x1d>; + #clock-cells = <0x1>; + phandle = <0xd>; + reg = <0x7e215000 0x8>; + interrupt-controller; + }; + + firmwarekms@7e600000 { + compatible = "raspberrypi,rpi-firmware-kms"; + status = "disabled"; + interrupts = <0x2 0x10>; + brcm,firmware = <0x5>; + phandle = <0x33>; + reg = <0x7e600000 0x100>; + }; + + rng@7e104000 { + compatible = "brcm,bcm2835-rng"; + phandle = <0x1f>; + reg = <0x7e104000 0x10>; + }; + + usb@7e980000 { + power-domains = <0xe 0x6>; + compatible = "brcm,bcm2708-usb"; + clocks = <0x11>; + clock-names = "otg"; + #address-cells = <0x1>; + interrupts = <0x2 0x0 0x1 0x9>; + #size-cells = <0x0>; + phandle = <0x2d>; + reg = <0x7e980000 0x10000 0x7e006000 0x1000>; + + usb1@1 { + compatible = "usb424,9512"; + #address-cells = <0x1>; + #size-cells = <0x0>; + reg = <0x1>; + + usbether@1 { + compatible = "usb424,ec00"; + local-mac-address = [04 05 07 01 02 03]; + phandle = <0x2e>; + reg = <0x1>; + }; + }; + }; + + smi@7e600000 { + compatible = "brcm,bcm2835-smi"; + clocks = <0x6 0x2a>; + status = "disabled"; + interrupts = <0x2 0x10>; + assigned-clock-rates = <0x7735940>; + dma-names = "rx-tx"; + assigned-clocks = <0x6 0x2a>; + phandle = <0x34>; + reg = <0x7e600000 0x100>; + dmas = <0x7 0x4>; + }; + + spi@7e2150c0 { + compatible = "brcm,bcm2835-aux-spi"; + clocks = <0xd 0x2>; + status = "disabled"; + interrupt-parent = <0xd>; + #address-cells = <0x1>; + interrupts = <0x2>; + #size-cells = <0x0>; + phandle = <0x27>; + reg = <0x7e2150c0 0x40>; + }; + }; + + leds { + compatible = "gpio-leds"; + phandle = <0x3d>; + + act { + gpios = <0x9 0x10 0x1>; + label = "led0"; + phandle = <0x1c>; + linux,default-trigger = "mmc0"; + }; + }; + + aliases { + intc = "/soc/interrupt-controller@7e00b200"; + spi2 = "/soc/spi@7e2150c0"; + i2c1 = "/soc/i2c@7e804000"; + i2c_vc = "/soc/i2c@7e804000"; + spi0 = "/soc/spi@7e204000"; + thermal = "/soc/thermal"; + vchiq = "/soc/vchiq"; + sdhost = "/soc/sdhost@7e202000"; + aux = "/soc/aux@0x7e215000"; + gpio = "/soc/gpio@7e200000"; + audio = "/soc/audio"; + dma = "/soc/dma@7e007000"; + soc = "/soc"; + leds = "/leds"; + mmc = "/soc/mmc@7e300000"; + serial1 = "/soc/serial@7e215040"; + i2c_arm = "/soc/i2c@7e205000"; + ethernet = "/soc/usb@7e980000/usb1@1/usbether@1"; + uart0 = "/soc/serial@7e201000"; + fb = "/soc/fb"; + i2c2 = "/soc/i2c@7e805000"; + i2s = "/soc/i2s@7e203000"; + spi1 = "/soc/spi@7e215080"; + usb = "/soc/usb@7e980000"; + i2c0 = "/soc/i2c@7e205000"; + watchdog = "/soc/watchdog@7e100000"; + sound = "/soc/sound"; + mailbox = "/soc/mailbox@7e00b880"; + uart1 = "/soc/serial@7e215040"; + random = "/soc/rng@7e104000"; + i2c = "/soc/i2c@7e205000"; + serial0 = "/soc/serial@7e201000"; + }; + + chosen { + bootargs = "bcm2708_fb.fbwidth=1680 bcm2708_fb.fbheight=1050 bcm2708_fb.fbdepth=16 bcm2708_fb.fbswap=1 vc_mem.mem_base=0xfa00000 vc_mem.mem_size=0x10000000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait"; + kaslr-seed = <0xb1f76783 0x32e6766e>; + }; + + memory { + device_type = "memory"; + reg = <0x0 0xf000000>; + }; + + fixedregulator_3v3 { + compatible = "regulator-fixed"; + phandle = <0x3c>; + regulator-min-microvolt = <0x325aa0>; + regulator-max-microvolt = <0x325aa0>; + regulator-always-on; + regulator-name = "3v3"; + }; + + fixedregulator_5v0 { + compatible = "regulator-fixed"; + phandle = <0x3b>; + regulator-min-microvolt = <0x4c4b40>; + regulator-max-microvolt = <0x4c4b40>; + regulator-always-on; + regulator-name = "5v0"; + }; + + axi { + + vc_mem { + reg = <0xfa00000 0x10000000 0x40000000>; + }; + }; +}; diff --git a/test/data/rpi3_arch_arm64.dts b/test/data/rpi3_arch_arm64.dts new file mode 100644 index 00000000..5054edd1 --- /dev/null +++ b/test/data/rpi3_arch_arm64.dts @@ -0,0 +1,666 @@ +/dts-v1/; + +/ { + compatible = "raspberrypi,3-model-b", "brcm,bcm2837"; + serial-number = "00000000d544ea12"; + model = "Raspberry Pi 3 Model B"; + interrupt-parent = <0x1>; + #address-cells = <0x1>; + #size-cells = <0x1>; + + clocks { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x0>; + + clock@3 { + compatible = "fixed-clock"; + #clock-cells = <0x0>; + phandle = <0x3>; + reg = <0x3>; + clock-output-names = "osc"; + clock-frequency = <0x124f800>; + linux,phandle = <0x3>; + }; + + clock@4 { + compatible = "fixed-clock"; + #clock-cells = <0x0>; + phandle = <0xe>; + reg = <0x4>; + clock-output-names = "otg"; + clock-frequency = <0x1c9c3800>; + linux,phandle = <0xe>; + }; + }; + + soc { + compatible = "simple-bus"; + ranges = <0x7e000000 0x3f000000 0x1000000 0x40000000 0x40000000 0x1000>; + #address-cells = <0x1>; + #size-cells = <0x1>; + dma-ranges = <0xc0000000 0x0 0x3f000000>; + + serial@7e201000 { + compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; + clocks = <0x4 0x13 0x4 0x14>; + clock-names = "uartclk", "apb_pclk"; + interrupts = <0x2 0x19>; + arm,primecell-periphid = <0x241011>; + reg = <0x7e201000 0x1000>; + }; + + pixelvalve@7e207000 { + compatible = "brcm,bcm2835-pixelvalve1"; + interrupts = <0x2 0xe>; + reg = <0x7e207000 0x100>; + }; + + cprman@7e101000 { + compatible = "brcm,bcm2835-cprman"; + clocks = <0x3>; + #clock-cells = <0x1>; + phandle = <0x4>; + reg = <0x7e101000 0x2000>; + linux,phandle = <0x4>; + }; + + thermal@7e212000 { + compatible = "brcm,bcm2837-thermal"; + clocks = <0x4 0x1b>; + status = "okay"; + reg = <0x7e212000 0x8>; + }; + + hvs@7e400000 { + compatible = "brcm,bcm2835-hvs"; + interrupts = <0x2 0x1>; + reg = <0x7e400000 0x6000>; + }; + + gpio@7e200000 { + compatible = "brcm,bcm2835-gpio"; + gpio-controller; + #interrupt-cells = <0x2>; + interrupts = <0x2 0x11 0x2 0x12 0x2 0x13 0x2 0x14>; + phandle = <0x11>; + reg = <0x7e200000 0xb4>; + #gpio-cells = <0x2>; + linux,phandle = <0x11>; + pinctrl-names = "default"; + interrupt-controller; + + uart0_gpio14 { + brcm,pins = <0xe 0xf>; + brcm,function = <0x4>; + }; + + gpclk1_gpio5 { + brcm,pins = <0x5>; + brcm,function = <0x4>; + }; + + uart1_ctsrts_gpio16 { + brcm,pins = <0x10 0x11>; + brcm,function = <0x2>; + }; + + jtag_gpio4 { + brcm,pins = <0x4 0x5 0x6 0xc 0xd>; + brcm,function = <0x3>; + }; + + alt0 { + brcm,pins = <0x4 0x5 0x7 0x8 0x9 0xa 0xb 0xe 0xf>; + brcm,function = <0x4>; + }; + + uart0_gpio30 { + brcm,pins = <0x1e 0x1f>; + brcm,function = <0x7>; + }; + + uart1_ctsrts_gpio42 { + brcm,pins = <0x2a 0x2b>; + brcm,function = <0x2>; + }; + + gpclk0_gpio4 { + brcm,pins = <0x4>; + brcm,function = <0x4>; + }; + + pwm0_gpio12 { + brcm,pins = <0xc>; + brcm,function = <0x4>; + }; + + pwm1_gpio19 { + brcm,pins = <0x13>; + brcm,function = <0x2>; + }; + + pwm0_gpio40 { + brcm,pins = <0x28>; + phandle = <0x8>; + brcm,function = <0x4>; + linux,phandle = <0x8>; + }; + + gpclk2_gpio43 { + brcm,pins = <0x2b>; + brcm,function = <0x4>; + }; + + uart1_ctsrts_gpio30 { + brcm,pins = <0x1e 0x1f>; + brcm,function = <0x2>; + }; + + gpioout { + brcm,pins = <0x6>; + brcm,function = <0x1>; + }; + + spi0_gpio35 { + brcm,pins = <0x23 0x24 0x25 0x26 0x27>; + brcm,function = <0x4>; + }; + + pwm1_gpio45 { + brcm,pins = <0x2d>; + phandle = <0x9>; + brcm,function = <0x4>; + linux,phandle = <0x9>; + }; + + pcm_gpio28 { + brcm,pins = <0x1c 0x1d 0x1e 0x1f>; + brcm,function = <0x6>; + }; + + dpi_gpio0 { + brcm,pins = <0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b>; + brcm,function = <0x6>; + }; + + i2c0_gpio0 { + brcm,pins = <0x0 0x1>; + phandle = <0x6>; + brcm,function = <0x4>; + linux,phandle = <0x6>; + }; + + pcm_gpio18 { + brcm,pins = <0x12 0x13 0x14 0x15>; + brcm,function = <0x4>; + }; + + pwm1_gpio13 { + brcm,pins = <0xd>; + brcm,function = <0x4>; + }; + + pwm1_gpio41 { + brcm,pins = <0x29>; + brcm,function = <0x4>; + }; + + spi0_gpio7 { + brcm,pins = <0x7 0x8 0x9 0xa 0xb>; + brcm,function = <0x4>; + }; + + i2c1_gpio44 { + brcm,pins = <0x2c 0x2d>; + brcm,function = <0x6>; + }; + + i2c_slave_gpio18 { + brcm,pins = <0x12 0x13 0x14 0x15>; + brcm,function = <0x7>; + }; + + emmc_gpio48 { + brcm,pins = <0x30 0x31 0x32 0x33 0x34 0x35>; + phandle = <0xa>; + brcm,function = <0x7>; + linux,phandle = <0xa>; + }; + + i2c1_gpio2 { + brcm,pins = <0x2 0x3>; + phandle = <0xb>; + brcm,function = <0x4>; + linux,phandle = <0xb>; + }; + + spi1_gpio16 { + brcm,pins = <0x10 0x11 0x12 0x13 0x14 0x15>; + brcm,function = <0x3>; + }; + + jtag_gpio22 { + brcm,pins = <0x16 0x17 0x18 0x19 0x1a 0x1b>; + brcm,function = <0x3>; + }; + + uart1_gpio36 { + brcm,pins = <0x24 0x25 0x26 0x27>; + brcm,function = <0x6>; + }; + + spi2_gpio40 { + brcm,pins = <0x28 0x29 0x2a 0x2b 0x2c 0x2d>; + brcm,function = <0x3>; + }; + + i2c0_gpio44 { + brcm,pins = <0x2c 0x2d>; + brcm,function = <0x5>; + }; + + uart0_ctsrts_gpio16 { + brcm,pins = <0x10 0x11>; + brcm,function = <0x7>; + }; + + gpclk2_gpio6 { + brcm,pins = <0x6>; + brcm,function = <0x4>; + }; + + sdhost_gpio48 { + brcm,pins = <0x30 0x31 0x32 0x33 0x34 0x35>; + brcm,function = <0x4>; + }; + + emmc_gpio34 { + brcm,pins = <0x22 0x23 0x24 0x25 0x26 0x27>; + brcm,pull = <0x0 0x2 0x2 0x2 0x2 0x2>; + brcm,function = <0x7>; + }; + + gpclk1_gpio44 { + brcm,pins = <0x2c>; + brcm,function = <0x4>; + }; + + uart1_gpio14 { + brcm,pins = <0xe 0xf>; + brcm,function = <0x2>; + }; + + i2c0_gpio32 { + brcm,pins = <0x20 0x22>; + brcm,function = <0x4>; + }; + + uart1_gpio32 { + brcm,pins = <0x20 0x21>; + brcm,function = <0x2>; + }; + + pwm0_gpio18 { + brcm,pins = <0x12>; + brcm,function = <0x2>; + }; + + gpclk1_gpio42 { + brcm,pins = <0x2a>; + brcm,function = <0x4>; + }; + + uart0_ctsrts_gpio32 { + brcm,pins = <0x20 0x21>; + brcm,function = <0x7>; + }; + + uart1_gpio40 { + brcm,pins = <0x28 0x29>; + brcm,function = <0x2>; + }; + + emmc_gpio22 { + brcm,pins = <0x16 0x17 0x18 0x19 0x1a 0x1b>; + brcm,function = <0x7>; + }; + }; + + pixelvalve@7e807000 { + compatible = "brcm,bcm2835-pixelvalve2"; + interrupts = <0x2 0xa>; + reg = <0x7e807000 0x100>; + }; + + v3d@7ec00000 { + power-domains = <0xc 0xa>; + compatible = "brcm,bcm2835-v3d"; + interrupts = <0x1 0xa>; + reg = <0x7ec00000 0x1000>; + }; + + gpu { + compatible = "brcm,bcm2835-vc4"; + }; + + spi@7e204000 { + compatible = "brcm,bcm2835-spi"; + clocks = <0x4 0x14>; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0x16>; + #size-cells = <0x0>; + reg = <0x7e204000 0x1000>; + }; + + sdhci@7e300000 { + compatible = "brcm,bcm2835-sdhci"; + clocks = <0x4 0x1c>; + status = "okay"; + interrupts = <0x2 0x1e>; + bus-width = <0x4>; + reg = <0x7e300000 0x100>; + pinctrl-0 = <0xa>; + pinctrl-names = "default"; + }; + + i2c@7e804000 { + compatible = "brcm,bcm2835-i2c"; + clocks = <0x4 0x14>; + status = "okay"; + #address-cells = <0x1>; + interrupts = <0x2 0x15>; + #size-cells = <0x0>; + reg = <0x7e804000 0x1000>; + clock-frequency = <0x186a0>; + pinctrl-0 = <0xb>; + pinctrl-names = "default"; + }; + + timer@7e003000 { + compatible = "brcm,bcm2835-system-timer"; + interrupts = <0x1 0x0 0x1 0x1 0x1 0x2 0x1 0x3>; + reg = <0x7e003000 0x1000>; + clock-frequency = <0xf4240>; + }; + + i2s@7e203000 { + compatible = "brcm,bcm2835-i2s"; + status = "disabled"; + dma-names = "tx", "rx"; + reg = <0x7e203000 0x20 0x7e101098 0x2>; + dmas = <0x5 0x2 0x5 0x3>; + }; + + mailbox@7e00b880 { + compatible = "brcm,bcm2835-mbox"; + #mbox-cells = <0x0>; + interrupts = <0x0 0x1>; + phandle = <0xf>; + reg = <0x7e00b880 0x40>; + linux,phandle = <0xf>; + }; + + vec@7e806000 { + power-domains = <0xc 0x7>; + compatible = "brcm,bcm2835-vec"; + clocks = <0x4 0x18>; + status = "okay"; + interrupts = <0x2 0x1b>; + reg = <0x7e806000 0x1000>; + }; + + power { + compatible = "raspberrypi,bcm2835-power"; + firmware = <0x10>; + phandle = <0xc>; + linux,phandle = <0xc>; + #power-domain-cells = <0x1>; + }; + + pixelvalve@7e206000 { + compatible = "brcm,bcm2835-pixelvalve0"; + interrupts = <0x2 0xd>; + reg = <0x7e206000 0x100>; + }; + + firmware { + compatible = "raspberrypi,bcm2835-firmware"; + mboxes = <0xf>; + phandle = <0x10>; + linux,phandle = <0x10>; + }; + + hdmi@7e902000 { + power-domains = <0xc 0x5>; + compatible = "brcm,bcm2835-hdmi"; + clocks = <0x4 0x10 0x4 0x19>; + clock-names = "pixel", "hdmi"; + ddc = <0xd>; + status = "okay"; + interrupts = <0x2 0x8 0x2 0x9>; + reg = <0x7e902000 0x600 0x7e808000 0x100>; + }; + + pwm@7e20c000 { + compatible = "brcm,bcm2835-pwm"; + clocks = <0x4 0x1e>; + status = "okay"; + assigned-clock-rates = <0x989680>; + assigned-clocks = <0x4 0x1e>; + reg = <0x7e20c000 0x28>; + pinctrl-0 = <0x8 0x9>; + #pwm-cells = <0x2>; + pinctrl-names = "default"; + }; + + watchdog@7e100000 { + compatible = "brcm,bcm2835-pm-wdt"; + reg = <0x7e100000 0x28>; + }; + + interrupt-controller@7e00b200 { + compatible = "brcm,bcm2836-armctrl-ic"; + #interrupt-cells = <0x2>; + interrupt-parent = <0x2>; + interrupts = <0x8>; + phandle = <0x1>; + reg = <0x7e00b200 0x200>; + linux,phandle = <0x1>; + interrupt-controller; + }; + + local_intc { + compatible = "brcm,bcm2836-l1-intc"; + #interrupt-cells = <0x1>; + interrupt-parent = <0x2>; + phandle = <0x2>; + reg = <0x40000000 0x100>; + linux,phandle = <0x2>; + interrupt-controller; + }; + + i2c@7e205000 { + compatible = "brcm,bcm2835-i2c"; + clocks = <0x4 0x14>; + status = "okay"; + #address-cells = <0x1>; + interrupts = <0x2 0x15>; + #size-cells = <0x0>; + reg = <0x7e205000 0x1000>; + clock-frequency = <0x186a0>; + pinctrl-0 = <0x6>; + pinctrl-names = "default"; + }; + + serial@7e215040 { + compatible = "brcm,bcm2835-aux-uart"; + clocks = <0x7 0x0>; + status = "okay"; + interrupts = <0x1 0x1d>; + reg = <0x7e215040 0x40>; + }; + + dma@7e007000 { + #dma-cells = <0x1>; + compatible = "brcm,bcm2835-dma"; + brcm,dma-channel-mask = <0x7f35>; + interrupts = <0x1 0x10 0x1 0x11 0x1 0x12 0x1 0x13 0x1 0x14 0x1 0x15 0x1 0x16 0x1 0x17 0x1 0x18 0x1 0x19 0x1 0x1a 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1c>; + phandle = <0x5>; + reg = <0x7e007000 0xf00>; + linux,phandle = <0x5>; + interrupt-names = "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7", "dma8", "dma9", "dma10", "dma11", "dma12", "dma13", "dma14", "dma-shared-all"; + }; + + i2c@7e805000 { + compatible = "brcm,bcm2835-i2c"; + clocks = <0x4 0x14>; + status = "okay"; + #address-cells = <0x1>; + interrupts = <0x2 0x15>; + #size-cells = <0x0>; + phandle = <0xd>; + reg = <0x7e805000 0x1000>; + linux,phandle = <0xd>; + }; + + spi@7e215080 { + compatible = "brcm,bcm2835-aux-spi"; + clocks = <0x7 0x1>; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x1 0x1d>; + #size-cells = <0x0>; + reg = <0x7e215080 0x40>; + }; + + aux@0x7e215000 { + compatible = "brcm,bcm2835-aux"; + clocks = <0x4 0x14>; + #clock-cells = <0x1>; + phandle = <0x7>; + reg = <0x7e215000 0x8>; + linux,phandle = <0x7>; + }; + + rng@7e104000 { + compatible = "brcm,bcm2835-rng"; + reg = <0x7e104000 0x10>; + }; + + usb@7e980000 { + power-domains = <0xc 0x6>; + compatible = "brcm,bcm2835-usb"; + clocks = <0xe>; + clock-names = "otg"; + #address-cells = <0x1>; + interrupts = <0x1 0x9>; + #size-cells = <0x0>; + reg = <0x7e980000 0x10000>; + dr_mode = "host"; + + usb1@1 { + compatible = "usb424,9514"; + #address-cells = <0x1>; + #size-cells = <0x0>; + reg = <0x1>; + + usbether@1 { + compatible = "usb424,ec00"; + reg = <0x1>; + }; + }; + }; + + spi@7e2150c0 { + compatible = "brcm,bcm2835-aux-spi"; + clocks = <0x7 0x2>; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x1 0x1d>; + #size-cells = <0x0>; + reg = <0x7e2150c0 0x40>; + }; + }; + + leds { + compatible = "gpio-leds"; + + act { + gpios = <0x11 0x2f 0x0>; + label = "ACT"; + default-state = "keep"; + linux,default-trigger = "heartbeat"; + }; + }; + + aliases { + ethernet = "/soc/usb@7e980000/usb1@1/usbether@1"; + }; + + chosen { + bootargs = "console=ttyS0,115200 console=tty0 root=PARTUUID=08d5518c-02 rw rootwait smsc95xx.macaddr=01:02:03:04:05:06"; + linux,initrd-start = ":wP"; + linux,initrd-end = <0x3ab2d71e>; + }; + + framebuffer@3daf0000 { + compatible = "simple-framebuffer"; + width = <0x290>; + stride = <0xa40>; + status = "okay"; + reg = <0x3daf0000 0x10a800>; + format = "a8r8g8b8"; + height = <0x1a0>; + }; + + timer { + compatible = "arm,armv7-timer"; + always-on; + interrupt-parent = <0x2>; + interrupts = <0x0 0x1 0x3 0x2>; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x3b000000>; + }; + + cpus { + #address-cells = <0x1>; + #size-cells = <0x0>; + + cpu@3 { + compatible = "arm,cortex-a53"; + cpu-release-addr = <0x0 0xf0>; + device_type = "cpu"; + enable-method = "spin-table"; + reg = <0x3>; + }; + + cpu@1 { + compatible = "arm,cortex-a53"; + cpu-release-addr = <0x0 0xe0>; + device_type = "cpu"; + enable-method = "spin-table"; + reg = <0x1>; + }; + + cpu@2 { + compatible = "arm,cortex-a53"; + cpu-release-addr = <0x0 0xe8>; + device_type = "cpu"; + enable-method = "spin-table"; + reg = <0x2>; + }; + + cpu@0 { + compatible = "arm,cortex-a53"; + cpu-release-addr = <0x0 0xd8>; + device_type = "cpu"; + enable-method = "spin-table"; + reg = <0x0>; + }; + }; +}; diff --git a/test/data/rpi3_raspbian.dts b/test/data/rpi3_raspbian.dts new file mode 100644 index 00000000..9d6bf638 --- /dev/null +++ b/test/data/rpi3_raspbian.dts @@ -0,0 +1,892 @@ +/dts-v1/; + +/ { + compatible = "brcm,bcm2837", "brcm,bcm2836"; + serial-number = "00000000d544ea12"; + model = "Raspberry Pi 3 Model B Rev 1.2"; + memreserve = <0x3b000000 0x4000000>; + interrupt-parent = <0x1>; + #address-cells = <0x1>; + #size-cells = <0x1>; + + clocks { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x0>; + + clock@3 { + compatible = "fixed-clock"; + #clock-cells = <0x0>; + phandle = <0x3>; + reg = <0x3>; + clock-output-names = "osc"; + clock-frequency = <0x124f800>; + }; + + clock@4 { + compatible = "fixed-clock"; + #clock-cells = <0x0>; + phandle = <0x16>; + reg = <0x4>; + clock-output-names = "otg"; + clock-frequency = <0x1c9c3800>; + }; + }; + + __overrides__ { + pwr_led_gpio = "", "", "", "(gpios:4"; + i2c1 = "", "", "", "&status"; + i2c_vc = "", "", "", "%status"; + sd_overclock = "", "", "", ",brcm,overclock-50:0"; + i2c0_baudrate = "", "", "", "%clock-frequency:0"; + sd_pio_limit = "", "", "", ",brcm,pio-limit:0"; + act_led_trigger = "", "", "", "'linux,default-trigger"; + audio = "", "", "", ")status"; + sd_debug = "", "", "", ",brcm,debug"; + cache_line_size = [00 00 00 1c 63 61 63 68 65 2d 6c 69 6e 65 2d 73 69 7a 65 3a 30 00]; + i2c1_baudrate = "", "", "", "&clock-frequency:0"; + spi = "", "", "", "$status"; + i2c_arm = "", "", "", "&status"; + pwr_led_activelow = "", "", "", "(gpios:8"; + uart0 = "", "", "", "!status"; + i2c2_iknowwhatimdoing = [00 00 00 14 73 74 61 74 75 73 00]; + i2s = "", "", "", "#status"; + i2c0 = "", "", "", "%status"; + arm_freq = <0x1d 0x636c6f63 0x6b2d6672 0x65717565 0x6e63793a 0x30000000 0x1e636c 0x6f636b2d 0x66726571 0x75656e63 0x793a3000 0x1f 0x636c6f63 0x6b2d6672 0x65717565 0x6e63793a 0x30000000 0x20636c 0x6f636b2d 0x66726571 0x75656e63 0x793a3000>; + watchdog = "", "", "", "*status"; + i2c_baudrate = "", "", "", "&clock-frequency:0"; + i2c_vc_baudrate = "", "", "", "%clock-frequency:0"; + act_led_activelow = "", "", "", "'gpios:8"; + i2c2_baudrate = [00 00 00 14 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; + sd_force_pio = "", "", "", ",brcm,force-pio?"; + pwr_led_trigger = "", "", "", "(linux,default-trigger"; + uart1 = "", "", "", "\"status"; + i2c_arm_baudrate = "", "", "", "&clock-frequency:0"; + random = "", "", "", "+status"; + act_led_gpio = "", "", "", "'gpios:4"; + i2c = "", "", "", "&status"; + }; + + system { + linux,serial = <0x0 0xd5442118>; + linux,revision = <0xa02082>; + }; + + __symbols__ { + pwm = "/soc/pwm@7e20c000"; + clk_usb = "/clocks/clock@4"; + pixelvalve0 = "/soc/pixelvalve@7e206000"; + intc = "/soc/interrupt-controller@7e00b200"; + spi2 = "/soc/spi@7e2150c0"; + dsi1 = "/soc/dsi@7e700000"; + clocks = "/soc/cprman@7e101000"; + i2c1 = "/soc/i2c@7e804000"; + i2c_vc = "/soc/i2c@7e205000"; + firmwarekms = "/soc/firmwarekms@7e600000"; + smi = "/soc/smi@7e600000"; + gpu = "/soc/gpu"; + spi0 = "/soc/spi@7e204000"; + thermal = "/soc/thermal"; + vdd_5v0_reg = "/fixedregulator_5v0"; + vchiq = "/soc/vchiq"; + sdhost = "/soc/sdhost@7e202000"; + aux = "/soc/aux@0x7e215000"; + gpio = "/soc/gpio@7e200000"; + dpi = "/soc/dpi@7e208000"; + v3d = "/soc/v3d@7ec00000"; + audio = "/soc/audio"; + vdd_3v3_reg = "/fixedregulator_3v3"; + dma = "/soc/dma@7e007000"; + spidev1 = "/soc/spi@7e204000/spidev@1"; + v7_cpu3 = "/cpus/cpu@3"; + vc4 = "/soc/gpu"; + power = "/soc/power"; + soc = "/soc"; + v7_cpu1 = "/cpus/cpu@1"; + leds = "/leds"; + i2s_pins = "/soc/gpio@7e200000/i2s"; + firmware = "/soc/firmware"; + cprman = "/soc/cprman@7e101000"; + mmc = "/soc/mmc@7e300000"; + pixelvalve1 = "/soc/pixelvalve@7e207000"; + spi = "/soc/spi@7e204000"; + spi0_pins = "/soc/gpio@7e200000/spi0_pins"; + pitouchscreen_touch = "/soc/i2cdsi/bridge@38"; + i2c_arm = "/soc/i2c@7e804000"; + clk_osc = "/clocks/clock@3"; + ethernet = "/soc/usb@7e980000/usb1@1/usbether@1"; + uart0 = "/soc/serial@7e201000"; + i2c1_pins = "/soc/gpio@7e200000/i2c1"; + fb = "/soc/fb"; + sdhost_pins = "/soc/gpio@7e200000/sdhost_pins"; + i2c2 = "/soc/i2c@7e805000"; + uart1_pins = "/soc/gpio@7e200000/uart1_pins"; + i2s = "/soc/i2s@7e203000"; + spi1 = "/soc/spi@7e215080"; + virtgpio = "/soc/virtgpio"; + usb = "/soc/usb@7e980000"; + dsi0 = "/soc/dsi@7e209000"; + expgpio = "/soc/expgpio"; + audio_pins = "/soc/gpio@7e200000/audio_pins"; + i2c0 = "/soc/i2c@7e205000"; + i2c0_pins = "/soc/gpio@7e200000/i2c0"; + pwr_led = "/leds/pwr"; + watchdog = "/soc/watchdog@7e100000"; + uart0_pins = "/soc/gpio@7e200000/uart0_pins"; + vec = "/soc/vec@7e806000"; + local_intc = "/soc/local_intc"; + i2c_dsi = "/soc/i2cdsi"; + pitouchscreen_bridge = "/soc/i2cdsi/bridge@45"; + spi0_cs_pins = "/soc/gpio@7e200000/spi0_cs_pins"; + sound = "/soc/sound"; + hvs = "/soc/hvs@7e400000"; + act_led = "/leds/act"; + spidev0 = "/soc/spi@7e204000/spidev@0"; + v7_cpu2 = "/cpus/cpu@2"; + bt_pins = "/soc/gpio@7e200000/bt_pins"; + sdio_pins = "/soc/gpio@7e200000/sdio_pins"; + cpus = "/cpus"; + hdmi = "/soc/hdmi@7e902000"; + pixelvalve2 = "/soc/pixelvalve@7e807000"; + v7_cpu0 = "/cpus/cpu@0"; + mailbox = "/soc/mailbox@7e00b880"; + uart1 = "/soc/serial@7e215040"; + random = "/soc/rng@7e104000"; + i2c = "/soc/i2c@7e804000"; + }; + + soc { + compatible = "simple-bus"; + ranges = <0x7e000000 0x3f000000 0x1000000 0x40000000 0x40000000 0x40000>; + #address-cells = <0x1>; + #size-cells = <0x1>; + phandle = <0x2d>; + dma-ranges = <0xc0000000 0x0 0x3f000000>; + + serial@7e201000 { + compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; + clocks = <0x7 0x13 0x7 0x14>; + clock-names = "uartclk", "apb_pclk"; + status = "okay"; + interrupts = <0x2 0x19>; + phandle = <0x21>; + arm,primecell-periphid = <0x241011>; + reg = <0x7e201000 0x1000>; + pinctrl-0 = <0x8 0x9>; + pinctrl-names = "default"; + }; + + pixelvalve@7e207000 { + compatible = "brcm,bcm2835-pixelvalve1"; + status = "disabled"; + interrupts = <0x2 0xe>; + phandle = <0x31>; + reg = <0x7e207000 0x100>; + }; + + cprman@7e101000 { + compatible = "brcm,bcm2835-cprman"; + clocks = <0x3 0x4 0x0 0x4 0x1 0x4 0x2 0x5 0x0 0x5 0x1 0x5 0x2>; + firmware = <0x6>; + #clock-cells = <0x1>; + phandle = <0x7>; + reg = <0x7e101000 0x2000>; + }; + + hvs@7e400000 { + compatible = "brcm,bcm2835-hvs"; + status = "disabled"; + interrupts = <0x2 0x1>; + phandle = <0x35>; + reg = <0x7e400000 0x6000>; + }; + + gpio@7e200000 { + compatible = "brcm,bcm2835-gpio"; + gpio-controller; + #interrupt-cells = <0x2>; + interrupts = <0x2 0x11 0x2 0x12>; + phandle = <0xc>; + reg = <0x7e200000 0xb4>; + #gpio-cells = <0x2>; + interrupt-controller; + + i2c1 { + brcm,pins = <0x2 0x3>; + phandle = <0x13>; + brcm,function = <0x4>; + }; + + spi0_pins { + brcm,pins = <0x9 0xa 0xb>; + phandle = <0xd>; + brcm,function = <0x4>; + }; + + sdhost_pins { + brcm,pins = <0x30 0x31 0x32 0x33 0x34 0x35>; + phandle = <0x17>; + brcm,function = <0x4>; + }; + + uart1_pins { + brcm,pins; + phandle = <0x11>; + brcm,pull; + brcm,function; + }; + + i2s { + brcm,pins = <0x12 0x13 0x14 0x15>; + phandle = <0xb>; + brcm,function = <0x4>; + }; + + audio_pins { + brcm,pins = <0x28 0x29>; + phandle = <0x1a>; + brcm,function = <0x4>; + }; + + i2c0 { + brcm,pins = <0x0 0x1>; + phandle = <0xf>; + brcm,function = <0x4>; + }; + + uart0_pins { + brcm,pins = <0x20 0x21>; + phandle = <0x8>; + brcm,pull = <0x0 0x2>; + brcm,function = <0x7>; + }; + + spi0_cs_pins { + brcm,pins = <0x8 0x7>; + phandle = <0xe>; + brcm,function = <0x1>; + }; + + bt_pins { + brcm,pins = <0x2b>; + phandle = <0x9>; + brcm,pull = <0x0>; + brcm,function = <0x4>; + }; + + sdio_pins { + brcm,pins = <0x22 0x23 0x24 0x25 0x26 0x27>; + phandle = <0x18>; + brcm,pull = <0x0 0x2 0x2 0x2 0x2 0x2>; + brcm,function = <0x7>; + }; + }; + + pixelvalve@7e807000 { + compatible = "brcm,bcm2835-pixelvalve2"; + status = "disabled"; + interrupts = <0x2 0xa>; + phandle = <0x37>; + reg = <0x7e807000 0x100>; + }; + + v3d@7ec00000 { + power-domains = <0x12 0xa>; + compatible = "brcm,vc4-v3d"; + status = "disabled"; + interrupts = <0x1 0xa>; + phandle = <0x3b>; + reg = <0x7ec00000 0x1000>; + }; + + gpu { + compatible = "brcm,bcm2835-vc4"; + status = "disabled"; + phandle = <0x3c>; + }; + + mmc@7e300000 { + compatible = "brcm,bcm2835-mmc"; + clocks = <0x7 0x1c>; + status = "okay"; + interrupts = <0x2 0x1e>; + brcm,overclock-50 = <0x0>; + bus-width = <0x4>; + dma-names = "rx-tx"; + phandle = <0x3e>; + reg = <0x7e300000 0x100>; + pinctrl-0 = <0x18>; + dmas = <0xa 0xb>; + non-removable; + pinctrl-names = "default"; + }; + + arm-pmu { + compatible = "arm,cortex-a7-pmu"; + interrupt-parent = <0x2>; + interrupts = <0x9>; + }; + + thermal { + compatible = "brcm,bcm2835-thermal"; + firmware = <0x6>; + phandle = <0x45>; + }; + + spi@7e204000 { + compatible = "brcm,bcm2835-spi"; + clocks = <0x7 0x14>; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0x16>; + cs-gpios = <0xc 0x8 0x1 0xc 0x7 0x1>; + #size-cells = <0x0>; + dma-names = "tx", "rx"; + phandle = <0x24>; + reg = <0x7e204000 0x1000>; + pinctrl-0 = <0xd 0xe>; + dmas = <0xa 0x6 0xa 0x7>; + pinctrl-names = "default"; + + spidev@1 { + compatible = "spidev"; + #address-cells = <0x1>; + #size-cells = <0x0>; + phandle = <0x2f>; + reg = <0x1>; + spi-max-frequency = <0x7a120>; + }; + + spidev@0 { + compatible = "spidev"; + #address-cells = <0x1>; + #size-cells = <0x0>; + phandle = <0x2e>; + reg = <0x0>; + spi-max-frequency = <0x7a120>; + }; + }; + + i2cdsi { + gpios = <0xc 0x2c 0x0 0xc 0x2d 0x0>; + compatible = "i2c-gpio"; + status = "disabled"; + #address-cells = <0x1>; + #size-cells = <0x0>; + phandle = <0x41>; + + bridge@45 { + compatible = "raspberrypi,touchscreen-bridge-i2c"; + phandle = <0x42>; + reg = <0x45>; + }; + + bridge@38 { + compatible = "raspberrypi,touchscreen-ts-i2c"; + phandle = <0x43>; + reg = <0x38>; + }; + }; + + vchiq { + compatible = "brcm,bcm2835-vchiq"; + cache-line-size = <0x40>; + firmware = <0x6>; + interrupts = <0x0 0x2>; + phandle = <0x1c>; + reg = <0x7e00b840 0xf>; + }; + + i2c@7e804000 { + compatible = "brcm,bcm2835-i2c"; + clocks = <0x7 0x14>; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0x15>; + #size-cells = <0x0>; + phandle = <0x26>; + reg = <0x7e804000 0x1000>; + clock-frequency = <0x186a0>; + pinctrl-0 = <0x13>; + pinctrl-names = "default"; + }; + + audio { + brcm,pwm-channels = <0x8>; + compatible = "brcm,bcm2835-audio"; + status = "okay"; + phandle = <0x29>; + pinctrl-0 = <0x1a>; + pinctrl-names = "default"; + }; + + i2s@7e203000 { + compatible = "brcm,bcm2835-i2s"; + clocks = <0x7 0x1f>; + #sound-dai-cells = <0x0>; + status = "disabled"; + dma-names = "tx", "rx"; + phandle = <0x23>; + reg = <0x7e203000 0x24>; + pinctrl-0 = <0xb>; + dmas = <0xa 0x2 0xa 0x3>; + pinctrl-names = "default"; + }; + + mailbox@7e00b880 { + compatible = "brcm,bcm2835-mbox"; + #mbox-cells = <0x0>; + interrupts = <0x0 0x1>; + phandle = <0x19>; + reg = <0x7e00b880 0x40>; + }; + + gpiomem { + compatible = "brcm,bcm2835-gpiomem"; + reg = <0x7e200000 0x1000>; + }; + + vec@7e806000 { + compatible = "brcm,bcm2835-vec"; + clocks = <0x7 0x18>; + status = "disabled"; + interrupts = <0x2 0x1b>; + phandle = <0x36>; + reg = <0x7e806000 0x1000>; + }; + + power { + compatible = "raspberrypi,bcm2835-power"; + firmware = <0x6>; + phandle = <0x12>; + #power-domain-cells = <0x1>; + }; + + pixelvalve@7e206000 { + compatible = "brcm,bcm2835-pixelvalve0"; + status = "disabled"; + interrupts = <0x2 0xd>; + phandle = <0x30>; + reg = <0x7e206000 0x100>; + }; + + firmware { + compatible = "raspberrypi,bcm2835-firmware"; + mboxes = <0x19>; + phandle = <0x6>; + }; + + dsi@7e209000 { + compatible = "brcm,bcm2835-dsi0"; + clocks = <0x7 0x20 0x7 0x2f 0x7 0x31>; + clock-names = "phy", "escape", "pixel"; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0x4>; + #size-cells = <0x0>; + #clock-cells = <0x1>; + phandle = <0x4>; + reg = <0x7e209000 0x78>; + clock-output-names = "dsi0_byte", "dsi0_ddr2", "dsi0_ddr"; + }; + + fb { + compatible = "brcm,bcm2708-fb"; + firmware = <0x6>; + status = "okay"; + phandle = <0x44>; + }; + + sdhost@7e202000 { + compatible = "brcm,bcm2835-sdhost"; + clocks = <0x7 0x14>; + brcm,pio-limit = <0x1>; + status = "okay"; + interrupts = <0x2 0x18>; + brcm,overclock-50 = <0x0>; + bus-width = <0x4>; + dma-names = "rx-tx"; + phandle = <0x2c>; + reg = <0x7e202000 0x100>; + pinctrl-0 = <0x17>; + dmas = <0xa 0xd>; + pinctrl-names = "default"; + }; + + virtgpio { + compatible = "brcm,bcm2835-virtgpio"; + gpio-controller; + firmware = <0x6>; + status = "okay"; + phandle = <0x1b>; + #gpio-cells = <0x2>; + }; + + dpi@7e208000 { + compatible = "brcm,bcm2835-dpi"; + clocks = <0x7 0x14 0x7 0x2c>; + clock-names = "core", "pixel"; + status = "disabled"; + #address-cells = <0x1>; + #size-cells = <0x0>; + phandle = <0x3d>; + reg = <0x7e208000 0x8c>; + }; + + expgpio { + compatible = "brcm,bcm2835-expgpio"; + gpio-controller; + firmware = <0x6>; + status = "okay"; + phandle = <0x15>; + #gpio-cells = <0x2>; + }; + + hdmi@7e902000 { + power-domains = <0x12 0x5>; + compatible = "brcm,bcm2835-hdmi"; + clocks = <0x7 0x10 0x7 0x19>; + clock-names = "pixel", "hdmi"; + ddc = <0x14>; + status = "disabled"; + interrupts = <0x2 0x8 0x2 0x9>; + dma-names = "audio-rx"; + phandle = <0x38>; + hpd-gpios = <0x15 0x4 0x1>; + reg = <0x7e902000 0x600 0x7e808000 0x100>; + dmas = <0xa 0x11>; + }; + + timer { + compatible = "arm,armv7-timer"; + always-on; + interrupt-parent = <0x2>; + interrupts = <0x0 0x1 0x3 0x2>; + }; + + pwm@7e20c000 { + compatible = "brcm,bcm2835-pwm"; + clocks = <0x7 0x1e>; + status = "disabled"; + assigned-clock-rates = <0x989680>; + assigned-clocks = <0x7 0x1e>; + phandle = <0x34>; + reg = <0x7e20c000 0x28>; + #pwm-cells = <0x2>; + }; + + watchdog@7e100000 { + compatible = "brcm,bcm2835-pm-wdt"; + phandle = <0x2a>; + reg = <0x7e100000 0x28>; + }; + + interrupt-controller@7e00b200 { + compatible = "brcm,bcm2836-armctrl-ic"; + #interrupt-cells = <0x2>; + interrupt-parent = <0x2>; + interrupts = <0x8>; + phandle = <0x1>; + reg = <0x7e00b200 0x200>; + interrupt-controller; + }; + + local_intc { + compatible = "brcm,bcm2836-l1-intc"; + #interrupt-cells = <0x1>; + interrupt-parent = <0x2>; + phandle = <0x2>; + reg = <0x40000000 0x100>; + interrupt-controller; + }; + + dsi@7e700000 { + power-domains = <0x12 0x12>; + compatible = "brcm,bcm2835-dsi1"; + clocks = <0x7 0x23 0x7 0x30 0x7 0x32>; + clock-names = "phy", "escape", "pixel"; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0xc>; + #size-cells = <0x0>; + #clock-cells = <0x1>; + phandle = <0x5>; + reg = <0x7e700000 0x8c>; + clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr"; + }; + + sound { + status = "disabled"; + phandle = <0x46>; + }; + + i2c@7e205000 { + compatible = "brcm,bcm2835-i2c"; + clocks = <0x7 0x14>; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0x15>; + #size-cells = <0x0>; + phandle = <0x25>; + reg = <0x7e205000 0x1000>; + clock-frequency = <0x186a0>; + pinctrl-0 = <0xf>; + pinctrl-names = "default"; + }; + + serial@7e215040 { + compatible = "brcm,bcm2835-aux-uart"; + clocks = <0x10 0x0>; + status = "disabled"; + interrupt-parent = <0x10>; + interrupts = <0x0>; + phandle = <0x22>; + reg = <0x7e215040 0x40>; + pinctrl-0 = <0x11>; + pinctrl-names = "default"; + }; + + dma@7e007000 { + #dma-cells = <0x1>; + compatible = "brcm,bcm2835-dma"; + brcm,dma-channel-mask = <0x7f34>; + interrupts = <0x1 0x10 0x1 0x11 0x1 0x12 0x1 0x13 0x1 0x14 0x1 0x15 0x1 0x16 0x1 0x17 0x1 0x18 0x1 0x19 0x1 0x1a 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1c>; + phandle = <0xa>; + reg = <0x7e007000 0xf00>; + interrupt-names = "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7", "dma8", "dma9", "dma10", "dma11", "dma12", "dma13", "dma14", "dma-shared-all"; + }; + + i2c@7e805000 { + compatible = "brcm,bcm2835-i2c"; + clocks = <0x7 0x14>; + status = "disabled"; + #address-cells = <0x1>; + interrupts = <0x2 0x15>; + #size-cells = <0x0>; + phandle = <0x14>; + reg = <0x7e805000 0x1000>; + clock-frequency = <0x186a0>; + }; + + spi@7e215080 { + compatible = "brcm,bcm2835-aux-spi"; + clocks = <0x10 0x1>; + status = "disabled"; + interrupt-parent = <0x10>; + #address-cells = <0x1>; + interrupts = <0x1>; + #size-cells = <0x0>; + phandle = <0x32>; + reg = <0x7e215080 0x40>; + }; + + aux@0x7e215000 { + compatible = "brcm,bcm2835-aux"; + clocks = <0x7 0x14>; + #interrupt-cells = <0x1>; + interrupts = <0x1 0x1d>; + #clock-cells = <0x1>; + phandle = <0x10>; + reg = <0x7e215000 0x8>; + interrupt-controller; + }; + + firmwarekms@7e600000 { + compatible = "raspberrypi,rpi-firmware-kms"; + status = "disabled"; + interrupts = <0x2 0x10>; + brcm,firmware = <0x6>; + phandle = <0x3f>; + reg = <0x7e600000 0x100>; + }; + + rng@7e104000 { + compatible = "brcm,bcm2835-rng"; + phandle = <0x2b>; + reg = <0x7e104000 0x10>; + }; + + syscon@40000000 { + compatible = "brcm,bcm2836-arm-local", "syscon"; + reg = <0x40000000 0x100>; + }; + + usb@7e980000 { + power-domains = <0x12 0x6>; + compatible = "brcm,bcm2708-usb"; + clocks = <0x16>; + clock-names = "otg"; + #address-cells = <0x1>; + interrupts = <0x2 0x0 0x1 0x9>; + #size-cells = <0x0>; + phandle = <0x39>; + reg = <0x7e980000 0x10000 0x7e006000 0x1000>; + + usb1@1 { + compatible = "usb424,9514"; + #address-cells = <0x1>; + #size-cells = <0x0>; + reg = <0x1>; + + usbether@1 { + compatible = "usb424,ec00"; + local-mac-address = [04 05 06 01 02 03]; + phandle = <0x3a>; + reg = <0x1>; + }; + }; + }; + + smi@7e600000 { + compatible = "brcm,bcm2835-smi"; + clocks = <0x7 0x2a>; + status = "disabled"; + interrupts = <0x2 0x10>; + assigned-clock-rates = <0x7735940>; + dma-names = "rx-tx"; + assigned-clocks = <0x7 0x2a>; + phandle = <0x40>; + reg = <0x7e600000 0x100>; + dmas = <0xa 0x4>; + }; + + spi@7e2150c0 { + compatible = "brcm,bcm2835-aux-spi"; + clocks = <0x10 0x2>; + status = "disabled"; + interrupt-parent = <0x10>; + #address-cells = <0x1>; + interrupts = <0x2>; + #size-cells = <0x0>; + phandle = <0x33>; + reg = <0x7e2150c0 0x40>; + }; + }; + + leds { + compatible = "gpio-leds"; + phandle = <0x49>; + + act { + gpios = <0x1b 0x0 0x0>; + label = "led0"; + phandle = <0x27>; + linux,default-trigger = "mmc0"; + }; + + pwr { + gpios = <0x15 0x7 0x0>; + label = "led1"; + phandle = <0x28>; + linux,default-trigger = "input"; + }; + }; + + aliases { + intc = "/soc/interrupt-controller@7e00b200"; + spi2 = "/soc/spi@7e2150c0"; + i2c1 = "/soc/i2c@7e804000"; + i2c_vc = "/soc/i2c@7e205000"; + spi0 = "/soc/spi@7e204000"; + thermal = "/soc/thermal"; + vchiq = "/soc/vchiq"; + sdhost = "/soc/sdhost@7e202000"; + aux = "/soc/aux@0x7e215000"; + gpio = "/soc/gpio@7e200000"; + audio = "/soc/audio"; + dma = "/soc/dma@7e007000"; + soc = "/soc"; + leds = "/leds"; + mmc = "/soc/mmc@7e300000"; + serial1 = "/soc/serial@7e201000"; + i2c_arm = "/soc/i2c@7e804000"; + ethernet = "/soc/usb@7e980000/usb1@1/usbether@1"; + uart0 = "/soc/serial@7e201000"; + fb = "/soc/fb"; + i2c2 = "/soc/i2c@7e805000"; + i2s = "/soc/i2s@7e203000"; + spi1 = "/soc/spi@7e215080"; + usb = "/soc/usb@7e980000"; + i2c0 = "/soc/i2c@7e205000"; + watchdog = "/soc/watchdog@7e100000"; + sound = "/soc/sound"; + mailbox = "/soc/mailbox@7e00b880"; + uart1 = "/soc/serial@7e215040"; + random = "/soc/rng@7e104000"; + i2c = "/soc/i2c@7e804000"; + serial0 = "/soc/serial@7e215040"; + }; + + chosen { + bootargs = "8250.nr_uarts=0 bcm2708_fb.fbwidth=640 bcm2708_fb.fbheight=480 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000 dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait"; + kaslr-seed = <0xef42e779 0x662d8187>; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x3b000000>; + }; + + fixedregulator_3v3 { + compatible = "regulator-fixed"; + phandle = <0x48>; + regulator-min-microvolt = <0x325aa0>; + regulator-max-microvolt = <0x325aa0>; + regulator-always-on; + regulator-name = "3v3"; + }; + + cpus { + #address-cells = <0x1>; + #size-cells = <0x0>; + phandle = <0x4a>; + + cpu@3 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; + phandle = <0x20>; + reg = <0x3>; + clock-frequency = <0x47868c00>; + }; + + cpu@1 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; + phandle = <0x1e>; + reg = <0x1>; + clock-frequency = <0x47868c00>; + }; + + cpu@2 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; + phandle = <0x1f>; + reg = <0x2>; + clock-frequency = <0x47868c00>; + }; + + cpu@0 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; + phandle = <0x1d>; + reg = <0x0>; + clock-frequency = <0x47868c00>; + }; + }; + + fixedregulator_5v0 { + compatible = "regulator-fixed"; + phandle = <0x47>; + regulator-min-microvolt = <0x4c4b40>; + regulator-max-microvolt = <0x4c4b40>; + regulator-always-on; + regulator-name = "5v0"; + }; + + axi { + + vc_mem { + reg = <0x3dc00000 0x3f000000 0xc0000000>; + }; + }; +}; diff --git a/test/data/s390_hurcules_cpuinfo b/test/data/s390_hurcules_cpuinfo new file mode 100644 index 00000000..722678f0 --- /dev/null +++ b/test/data/s390_hurcules_cpuinfo @@ -0,0 +1,5 @@ +vendor_id : IBM/S390 +# processors : 2 +bogomips per cpu: 411.23 +processor 0: version = FF, identification = 111000, machine = 7060 +processor 1: version = FF, identification = 111111, machine = 7060 diff --git a/test/data/sh_dreamcast_cpuinfo b/test/data/sh_dreamcast_cpuinfo new file mode 100644 index 00000000..84e9dd90 --- /dev/null +++ b/test/data/sh_dreamcast_cpuinfo @@ -0,0 +1,9 @@ +machine : Sega Dreamcast +processor : 0 +cpu family : sh4 +cpu type : SH7750 +cache size : 8K-bytes/16K-bytes +bogomips : 199.06 +cpu clock : 199.49MHz +bus clock : 99.74MHz +module clock : 49.87MHz diff --git a/test/data/sh_sh3_cpuinfo b/test/data/sh_sh3_cpuinfo new file mode 100644 index 00000000..a9389bec --- /dev/null +++ b/test/data/sh_sh3_cpuinfo @@ -0,0 +1,4 @@ +cpu family : SH-3 +cache size : 8K-byte +bogomips : 39.83 + diff --git a/test/data/sh_sh64_cpuinfo b/test/data/sh_sh64_cpuinfo new file mode 100644 index 00000000..ba869c45 --- /dev/null +++ b/test/data/sh_sh64_cpuinfo @@ -0,0 +1,13 @@ +machine : Hitachi Cayman +processor : 0 +cpu family : SH-5 +cpu type : SH5-101 +icache size : 32K-bytes +dcache size : 32K-bytes +itlb entries : 64 +dtlb entries : 64 +cpu clock : 314.73MHz +bus clock : 157.36MHz +module clock : 26.22MHz +bogomips : 313.75 + diff --git a/test/data/sparc_m7_cpuinfo b/test/data/sparc_m7_cpuinfo new file mode 100644 index 00000000..b3556e30 --- /dev/null +++ b/test/data/sparc_m7_cpuinfo @@ -0,0 +1,45 @@ +cpu : SPARC-M7 +fpu : SPARC-M7 integrated FPU +pmu : sparc-m7 +prom : OBP 4.40.1 2016/04/25 06:45 +type : sun4v +ncpus probed : 16 +ncpus active : 16 +D$ parity tl1 : 0 +I$ parity tl1 : 0 +cpucaps : flush,stbar,swap,muldiv,v9,blkinit,n2,mul32,div32,v8plus,popc,vis,vis2,ASIBlkInit,fmaf,vis3,hpc,ima,pause,cbcond,adp,aes,des,camellia,md5,sha1,sha256,sha512,mpmul,montmul,montsqr,crc32c +Cpu0ClkTck : 00000000f65c15b0 +Cpu1ClkTck : 00000000f65c15b0 +Cpu2ClkTck : 00000000f65c15b0 +Cpu3ClkTck : 00000000f65c15b0 +Cpu4ClkTck : 00000000f65c15b0 +Cpu5ClkTck : 00000000f65c15b0 +Cpu6ClkTck : 00000000f65c15b0 +Cpu7ClkTck : 00000000f65c15b0 +Cpu8ClkTck : 00000000f65c15b0 +Cpu9ClkTck : 00000000f65c15b0 +Cpu10ClkTck : 00000000f65c15b0 +Cpu11ClkTck : 00000000f65c15b0 +Cpu12ClkTck : 00000000f65c15b0 +Cpu13ClkTck : 00000000f65c15b0 +Cpu14ClkTck : 00000000f65c15b0 +Cpu15ClkTck : 00000000f65c15b0 +MMU Type : Hypervisor (sun4v) +MMU PGSZs : 8K,64K,4MB,256MB,2GB,16GB +State: +CPU0: online +CPU1: online +CPU2: online +CPU3: online +CPU4: online +CPU5: online +CPU6: online +CPU7: online +CPU8: online +CPU9: online +CPU10: online +CPU11: online +CPU12: online +CPU13: online +CPU14: online +CPU15: online diff --git a/test/data/x86_amdr7_cpuinfo b/test/data/x86_amdr7_cpuinfo new file mode 100644 index 00000000..ba527616 --- /dev/null +++ b/test/data/x86_amdr7_cpuinfo @@ -0,0 +1,447 @@ +processor : 0 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 0 +cpu cores : 8 +apicid : 0 +initial apicid : 0 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 1 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 0 +cpu cores : 8 +apicid : 1 +initial apicid : 1 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 2 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 1 +cpu cores : 8 +apicid : 2 +initial apicid : 2 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 3 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 1 +cpu cores : 8 +apicid : 3 +initial apicid : 3 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 4 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 2 +cpu cores : 8 +apicid : 4 +initial apicid : 4 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 5 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 2 +cpu cores : 8 +apicid : 5 +initial apicid : 5 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 6 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 3 +cpu cores : 8 +apicid : 6 +initial apicid : 6 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 7 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 3 +cpu cores : 8 +apicid : 7 +initial apicid : 7 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 8 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 3600.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 4 +cpu cores : 8 +apicid : 8 +initial apicid : 8 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 9 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 4 +cpu cores : 8 +apicid : 9 +initial apicid : 9 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 10 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 5 +cpu cores : 8 +apicid : 10 +initial apicid : 10 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 11 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 5 +cpu cores : 8 +apicid : 11 +initial apicid : 11 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 12 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 6 +cpu cores : 8 +apicid : 12 +initial apicid : 12 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 13 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 6 +cpu cores : 8 +apicid : 13 +initial apicid : 13 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 14 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 7 +cpu cores : 8 +apicid : 14 +initial apicid : 14 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] + +processor : 15 +vendor_id : AuthenticAMD +cpu family : 23 +model : 1 +model name : AMD Ryzen 7 1800X Eight-Core Processor +stepping : 1 +microcode : 0x8001105 +cpu MHz : 2200.000 +cache size : 512 KB +physical id : 0 +siblings : 16 +core id : 7 +cpu cores : 8 +apicid : 15 +initial apicid : 15 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca +bugs : fxsave_leak sysret_ss_attrs null_seg +bogomips : 7186.18 +TLB size : 2560 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm hwpstate eff_freq_ro [13] [14] diff --git a/test/data/x86_cyrix6x86coma_cpuinfo b/test/data/x86_cyrix6x86coma_cpuinfo new file mode 100644 index 00000000..9080825f --- /dev/null +++ b/test/data/x86_cyrix6x86coma_cpuinfo @@ -0,0 +1,17 @@ +processor : 0 +vendor_id : CyrixInstead +cpu family : 5 +model : 4 +model name : 6x86L 2x Core/Bus Clock +stepping : 2 +fdiv_bug : no +hlt_bug : no +sep_bug : no +f00f_bug : no +coma_bug : yes +fpu : yes +fpu_exception : yes +cpuid level : 1 +wp : yes +flags : fpu de cx8 mtrr +bogomips : 149.50 diff --git a/test/data/x86_pent_cpuinfo b/test/data/x86_pent_cpuinfo new file mode 100644 index 00000000..e8a7ef81 --- /dev/null +++ b/test/data/x86_pent_cpuinfo @@ -0,0 +1,17 @@ +processor : 0 +vendor_id : GenuineIntel +cpu family : 5 +model : 4 +model name : Pentium MMX +stepping : 3 +cpu MHz : 232.300 +fdiv_bug : no +hlt_bug : no +f00f_bug : yes +coma_bug : no +fpu : yes +fpu_exception : yes +cpuid level : 1 +wp : yes +flags : fpu vme de pse tsc msr mce cx8 mmx +bogomips : 465.42 diff --git a/test/data/x86_pentf00f_cpuinfo b/test/data/x86_pentf00f_cpuinfo new file mode 100644 index 00000000..7a511dd3 --- /dev/null +++ b/test/data/x86_pentf00f_cpuinfo @@ -0,0 +1,18 @@ +processor : 0 +vendor_id : GenuineIntel +cpu family : 5 +model : 2 +model name : Pentium 75 - 200 +stepping : 12 +cpu MHz : 133.335273 +fdiv_bug : no +hlt_bug : no +sep_bug : no +f00f_bug : yes +fpu : yes +fpu_exception : yes +cpuid level : 1 +wp : yes +flags : fpu vme de pse tsc msr mce cx8 +bogomips : 53.04 + diff --git a/test/rm_hardinfo.sh b/test/rm_hardinfo.sh new file mode 100644 index 00000000..8cd58075 --- /dev/null +++ b/test/rm_hardinfo.sh @@ -0,0 +1,30 @@ +#!bash + +# when you just want it all gone. +# +# it is not smart in any way, and will screw up your package manager +# if hardinfo is installed as a package. + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root." + exit 1 +fi + +remove_hardinfo() { + BASEDER="$1" + echo "Removing hardinfo from $BASEDER ..." + rm -rf "$BASEDER/share/hardinfo" + rm -rf "$BASEDER/lib/hardinfo" + rm -f "$BASEDER"/share/locale/*/LC_MESSAGES/hardinfo.mo + rm -f "$BASEDER/bin/hardinfo" + rm -f "$BASEDER/share/applications/hardinfo.desktop" + rm -f "$BASEDER/share/doc/hardinfo" + rm -f "$BASEDER/share/man/man1/hardinfo.1.gz" + rm -f "$BASEDER/share/pixmaps/hardinfo.xpm" + rm -f "$BASEDER/share/menu/hardinfo" + #locate -e hardinfo | grep "$BASEDER" +} + +remove_hardinfo "/usr/local" +remove_hardinfo "/usr" +# add some other base install path here diff --git a/test/test.sh b/test/test.sh new file mode 100644 index 00000000..7f52e2b6 --- /dev/null +++ b/test/test.sh @@ -0,0 +1,33 @@ + +DATADER=`pwd` + +do_test() { + ARCH="$1" + CPUINFO="$DATADER/$2" + mkdir "build-$ARCH" + cd "build-$ARCH" + cmake ../.. -DOVRARCH=$ARCH -DOVRCPUINFO=\"$CPUINFO\" + make -j + cd .. +} + +#do_test x86 data/x86_pent_cpuinfo +#do_test x86 data/x86_amdr7_cpuinfo +#do_test x86 data/x86_pentf00f_cpuinfo +#do_test x86 data/x86_cyrix6x86coma_cpuinfo +#do_test ppc data/ppc_g5_cpuinfo +#do_test ppc data/power8_cpuinfo +#do_test arm data/arm_rpi3_aarch64_cpuinfo +#do_test arm data/arm_jetsontx2_cpuinfo +#do_test sparc data/sparc_m7_cpuinfo +#do_test mips data/mips_loongson_cpuinfo +#do_test alpha data/alpha_as_cpuinfo +#do_test parisc data/parisc_hppa_fortex4_cpuinfo +#do_test ia64 data/ia64_x2_cpuinfo +#do_test m68k data/m68k_sun3_cpuinfo +#do_test sh data/sh_dreamcast_cpuinfo +#do_test sh data/sh_sh3_cpuinfo +#do_test sh data/sh_sh64_cpuinfo +#do_test s390 data/s390_hurcules_cpuinfo +#do_test riscv data/riscv_sim_cpuinfo +#do_test riscv data/riscv_fake_cpuinfo diff --git a/test/ws_scan.sh b/test/ws_scan.sh new file mode 100644 index 00000000..d22586f8 --- /dev/null +++ b/test/ws_scan.sh @@ -0,0 +1,11 @@ +#!bash + +# checks for mixed indentation and empty lines with whitespace +# run from test/ + +cd .. +grep -lHIrP --include=*.{h,c} -- '^((\t+ +)|( +\t+)|\s+$)' | sed 's/^/- [ ] /' > test/hardinfo-bad.txt +grep -LHIrP --include=*.{h,c} -- '^((\t+ +)|( +\t+)|\s+$)' | sed 's/^/- [x] /' > test/hardinfo-good.txt +cat test/hardinfo-bad.txt test/hardinfo-good.txt | LC_ALL=C sort -k 1.5 | grep -vP " (test|build|deps)" +rm test/hardinfo-bad.txt test/hardinfo-good.txt +cd test |