aboutsummaryrefslogtreecommitdiff
path: root/hardinfo2
diff options
context:
space:
mode:
authorLeandro A. F. Pereira <leandro@hardinfo.org>2010-05-03 09:27:26 -0300
committerLeandro A. F. Pereira <leandro@hardinfo.org>2010-05-03 21:08:06 -0300
commit9273c075a2f993c5154614b70233d8f74515c851 (patch)
treeeb72a8c58e6bc8f4ca3b739d28fbecc269c0052d /hardinfo2
parent9a50155ec3e27aa6cedf3f118196f1947c769a29 (diff)
Move files from hardinfo2 to root.
Diffstat (limited to 'hardinfo2')
-rw-r--r--hardinfo2/.gitignore6
-rw-r--r--hardinfo2/CMakeLists.txt184
-rw-r--r--hardinfo2/LICENSE341
-rw-r--r--hardinfo2/TODO45
-rw-r--r--hardinfo2/arch/common/blowfish.h63
-rw-r--r--hardinfo2/arch/common/cryptohash.h78
-rw-r--r--hardinfo2/arch/common/display.h143
-rw-r--r--hardinfo2/arch/common/drawing.h28
-rw-r--r--hardinfo2/arch/common/environment.h42
-rw-r--r--hardinfo2/arch/common/fft.h65
-rw-r--r--hardinfo2/arch/common/fib.h48
-rw-r--r--hardinfo2/arch/common/languages.h107
-rw-r--r--hardinfo2/arch/common/nqueens.h45
-rw-r--r--hardinfo2/arch/common/printers.h268
-rw-r--r--hardinfo2/arch/common/raytrace.h45
-rw-r--r--hardinfo2/arch/common/users.h63
l---------hardinfo2/arch/linux/alpha/alsa.h1
l---------hardinfo2/arch/linux/alpha/battery.h1
l---------hardinfo2/arch/linux/alpha/boots.h1
l---------hardinfo2/arch/linux/alpha/devmemory.h1
l---------hardinfo2/arch/linux/alpha/filesystem.h1
l---------hardinfo2/arch/linux/alpha/inputdevices.h1
l---------hardinfo2/arch/linux/alpha/loadavg.h1
l---------hardinfo2/arch/linux/alpha/memory.h1
l---------hardinfo2/arch/linux/alpha/modules.h1
l---------hardinfo2/arch/linux/alpha/net.h1
l---------hardinfo2/arch/linux/alpha/nfs.h1
l---------hardinfo2/arch/linux/alpha/os.h1
l---------hardinfo2/arch/linux/alpha/pci.h1
-rw-r--r--hardinfo2/arch/linux/alpha/processor.h81
l---------hardinfo2/arch/linux/alpha/resources.h1
l---------hardinfo2/arch/linux/alpha/samba.h1
l---------hardinfo2/arch/linux/alpha/sensors.h1
l---------hardinfo2/arch/linux/alpha/storage.h1
l---------hardinfo2/arch/linux/alpha/uptime.h1
l---------hardinfo2/arch/linux/alpha/usb.h1
l---------hardinfo2/arch/linux/armv4l/alsa.h1
l---------hardinfo2/arch/linux/armv4l/battery.h1
l---------hardinfo2/arch/linux/armv4l/boots.h1
l---------hardinfo2/arch/linux/armv4l/devmemory.h1
l---------hardinfo2/arch/linux/armv4l/filesystem.h1
l---------hardinfo2/arch/linux/armv4l/inputdevices.h1
l---------hardinfo2/arch/linux/armv4l/loadavg.h1
l---------hardinfo2/arch/linux/armv4l/memory.h1
l---------hardinfo2/arch/linux/armv4l/modules.h1
l---------hardinfo2/arch/linux/armv4l/net.h1
l---------hardinfo2/arch/linux/armv4l/nfs.h1
l---------hardinfo2/arch/linux/armv4l/os.h1
l---------hardinfo2/arch/linux/armv4l/pci.h1
-rw-r--r--hardinfo2/arch/linux/armv4l/processor.h84
l---------hardinfo2/arch/linux/armv4l/resources.h1
l---------hardinfo2/arch/linux/armv4l/samba.h1
l---------hardinfo2/arch/linux/armv4l/sensors.h1
l---------hardinfo2/arch/linux/armv4l/storage.h1
l---------hardinfo2/arch/linux/armv4l/uptime.h1
l---------hardinfo2/arch/linux/armv4l/usb.h1
-rw-r--r--hardinfo2/arch/linux/common/alsa.h68
-rw-r--r--hardinfo2/arch/linux/common/battery.h303
-rw-r--r--hardinfo2/arch/linux/common/boots.h60
-rw-r--r--hardinfo2/arch/linux/common/devmemory.h100
-rw-r--r--hardinfo2/arch/linux/common/dmi.h198
-rw-r--r--hardinfo2/arch/linux/common/filesystem.h108
-rw-r--r--hardinfo2/arch/linux/common/inputdevices.h139
-rw-r--r--hardinfo2/arch/linux/common/loadavg.h47
-rw-r--r--hardinfo2/arch/linux/common/memory.h56
-rw-r--r--hardinfo2/arch/linux/common/modules.h169
-rw-r--r--hardinfo2/arch/linux/common/net.h448
-rw-r--r--hardinfo2/arch/linux/common/nfs.h55
-rw-r--r--hardinfo2/arch/linux/common/os.h215
-rw-r--r--hardinfo2/arch/linux/common/pci.h240
-rw-r--r--hardinfo2/arch/linux/common/resources.h103
-rw-r--r--hardinfo2/arch/linux/common/samba.h119
-rw-r--r--hardinfo2/arch/linux/common/sensors.h376
-rw-r--r--hardinfo2/arch/linux/common/storage.h372
-rw-r--r--hardinfo2/arch/linux/common/uptime.h74
-rw-r--r--hardinfo2/arch/linux/common/usb.h343
l---------hardinfo2/arch/linux/ia64/alsa.h1
l---------hardinfo2/arch/linux/ia64/battery.h1
l---------hardinfo2/arch/linux/ia64/boots.h1
l---------hardinfo2/arch/linux/ia64/devmemory.h1
l---------hardinfo2/arch/linux/ia64/filesystem.h1
l---------hardinfo2/arch/linux/ia64/inputdevices.h1
l---------hardinfo2/arch/linux/ia64/loadavg.h1
l---------hardinfo2/arch/linux/ia64/memory.h1
l---------hardinfo2/arch/linux/ia64/modules.h1
l---------hardinfo2/arch/linux/ia64/net.h1
l---------hardinfo2/arch/linux/ia64/nfs.h1
l---------hardinfo2/arch/linux/ia64/os.h1
l---------hardinfo2/arch/linux/ia64/pci.h1
-rw-r--r--hardinfo2/arch/linux/ia64/processor.h82
l---------hardinfo2/arch/linux/ia64/resources.h1
l---------hardinfo2/arch/linux/ia64/samba.h1
l---------hardinfo2/arch/linux/ia64/sensors.h1
l---------hardinfo2/arch/linux/ia64/storage.h1
l---------hardinfo2/arch/linux/ia64/uptime.h1
l---------hardinfo2/arch/linux/ia64/usb.h1
l---------hardinfo2/arch/linux/m68k/alsa.h1
l---------hardinfo2/arch/linux/m68k/battery.h1
l---------hardinfo2/arch/linux/m68k/boots.h1
l---------hardinfo2/arch/linux/m68k/devmemory.h1
l---------hardinfo2/arch/linux/m68k/filesystem.h1
l---------hardinfo2/arch/linux/m68k/inputdevices.h1
l---------hardinfo2/arch/linux/m68k/loadavg.h1
l---------hardinfo2/arch/linux/m68k/memory.h1
l---------hardinfo2/arch/linux/m68k/modules.h1
l---------hardinfo2/arch/linux/m68k/net.h1
l---------hardinfo2/arch/linux/m68k/nfs.h1
l---------hardinfo2/arch/linux/m68k/os.h1
l---------hardinfo2/arch/linux/m68k/pci.h1
-rw-r--r--hardinfo2/arch/linux/m68k/processor.h83
l---------hardinfo2/arch/linux/m68k/resources.h1
l---------hardinfo2/arch/linux/m68k/samba.h1
l---------hardinfo2/arch/linux/m68k/sensors.h1
l---------hardinfo2/arch/linux/m68k/storage.h1
l---------hardinfo2/arch/linux/m68k/uptime.h1
l---------hardinfo2/arch/linux/m68k/usb.h1
l---------hardinfo2/arch/linux/mips/alsa.h1
l---------hardinfo2/arch/linux/mips/battery.h1
l---------hardinfo2/arch/linux/mips/boots.h1
l---------hardinfo2/arch/linux/mips/devmemory.h1
l---------hardinfo2/arch/linux/mips/filesystem.h1
l---------hardinfo2/arch/linux/mips/inputdevices.h1
l---------hardinfo2/arch/linux/mips/loadavg.h1
l---------hardinfo2/arch/linux/mips/memory.h1
l---------hardinfo2/arch/linux/mips/modules.h1
l---------hardinfo2/arch/linux/mips/net.h1
l---------hardinfo2/arch/linux/mips/nfs.h1
l---------hardinfo2/arch/linux/mips/os.h1
l---------hardinfo2/arch/linux/mips/pci.h1
-rw-r--r--hardinfo2/arch/linux/mips/processor.h78
l---------hardinfo2/arch/linux/mips/resources.h1
l---------hardinfo2/arch/linux/mips/samba.h1
l---------hardinfo2/arch/linux/mips/sensors.h1
l---------hardinfo2/arch/linux/mips/storage.h1
l---------hardinfo2/arch/linux/mips/uptime.h1
l---------hardinfo2/arch/linux/mips/usb.h1
l---------hardinfo2/arch/linux/parisc/alsa.h1
l---------hardinfo2/arch/linux/parisc/battery.h1
l---------hardinfo2/arch/linux/parisc/boots.h1
l---------hardinfo2/arch/linux/parisc/devmemory.h1
l---------hardinfo2/arch/linux/parisc/filesystem.h1
l---------hardinfo2/arch/linux/parisc/inputdevices.h1
l---------hardinfo2/arch/linux/parisc/loadavg.h1
l---------hardinfo2/arch/linux/parisc/memory.h1
l---------hardinfo2/arch/linux/parisc/modules.h1
l---------hardinfo2/arch/linux/parisc/net.h1
l---------hardinfo2/arch/linux/parisc/nfs.h1
l---------hardinfo2/arch/linux/parisc/os.h1
l---------hardinfo2/arch/linux/parisc/pci.h1
-rw-r--r--hardinfo2/arch/linux/parisc/processor.h95
l---------hardinfo2/arch/linux/parisc/resources.h1
l---------hardinfo2/arch/linux/parisc/samba.h1
l---------hardinfo2/arch/linux/parisc/sensors.h1
l---------hardinfo2/arch/linux/parisc/storage.h1
l---------hardinfo2/arch/linux/parisc/uptime.h1
l---------hardinfo2/arch/linux/parisc/usb.h1
l---------hardinfo2/arch/linux/ppc/alsa.h1
l---------hardinfo2/arch/linux/ppc/battery.h1
l---------hardinfo2/arch/linux/ppc/boots.h1
l---------hardinfo2/arch/linux/ppc/devmemory.h1
l---------hardinfo2/arch/linux/ppc/filesystem.h1
l---------hardinfo2/arch/linux/ppc/inputdevices.h1
l---------hardinfo2/arch/linux/ppc/loadavg.h1
l---------hardinfo2/arch/linux/ppc/memory.h1
l---------hardinfo2/arch/linux/ppc/modules.h1
l---------hardinfo2/arch/linux/ppc/net.h1
l---------hardinfo2/arch/linux/ppc/nfs.h1
l---------hardinfo2/arch/linux/ppc/os.h1
l---------hardinfo2/arch/linux/ppc/pci.h1
-rw-r--r--hardinfo2/arch/linux/ppc/processor.h89
l---------hardinfo2/arch/linux/ppc/resources.h1
l---------hardinfo2/arch/linux/ppc/samba.h1
l---------hardinfo2/arch/linux/ppc/sensors.h1
l---------hardinfo2/arch/linux/ppc/storage.h1
l---------hardinfo2/arch/linux/ppc/uptime.h1
l---------hardinfo2/arch/linux/ppc/usb.h1
l---------hardinfo2/arch/linux/s390/alsa.h1
l---------hardinfo2/arch/linux/s390/battery.h1
l---------hardinfo2/arch/linux/s390/boots.h1
l---------hardinfo2/arch/linux/s390/devmemory.h1
l---------hardinfo2/arch/linux/s390/filesystem.h1
l---------hardinfo2/arch/linux/s390/inputdevices.h1
l---------hardinfo2/arch/linux/s390/loadavg.h1
l---------hardinfo2/arch/linux/s390/memory.h1
l---------hardinfo2/arch/linux/s390/modules.h1
l---------hardinfo2/arch/linux/s390/net.h1
l---------hardinfo2/arch/linux/s390/nfs.h1
l---------hardinfo2/arch/linux/s390/os.h1
l---------hardinfo2/arch/linux/s390/pci.h1
-rw-r--r--hardinfo2/arch/linux/s390/processor.h81
l---------hardinfo2/arch/linux/s390/resources.h1
l---------hardinfo2/arch/linux/s390/samba.h1
l---------hardinfo2/arch/linux/s390/sensors.h1
l---------hardinfo2/arch/linux/s390/storage.h1
l---------hardinfo2/arch/linux/s390/uptime.h1
l---------hardinfo2/arch/linux/s390/usb.h1
l---------hardinfo2/arch/linux/sh/alsa.h1
l---------hardinfo2/arch/linux/sh/battery.h1
l---------hardinfo2/arch/linux/sh/boots.h1
l---------hardinfo2/arch/linux/sh/devmemory.h1
l---------hardinfo2/arch/linux/sh/filesystem.h1
l---------hardinfo2/arch/linux/sh/inputdevices.h1
l---------hardinfo2/arch/linux/sh/loadavg.h1
l---------hardinfo2/arch/linux/sh/memory.h1
l---------hardinfo2/arch/linux/sh/modules.h1
l---------hardinfo2/arch/linux/sh/net.h1
l---------hardinfo2/arch/linux/sh/nfs.h1
l---------hardinfo2/arch/linux/sh/os.h1
l---------hardinfo2/arch/linux/sh/pci.h1
-rw-r--r--hardinfo2/arch/linux/sh/processor.h78
l---------hardinfo2/arch/linux/sh/resources.h1
l---------hardinfo2/arch/linux/sh/samba.h1
l---------hardinfo2/arch/linux/sh/sensors.h1
l---------hardinfo2/arch/linux/sh/storage.h1
l---------hardinfo2/arch/linux/sh/uptime.h1
l---------hardinfo2/arch/linux/sh/usb.h1
l---------hardinfo2/arch/linux/sparc/alsa.h1
l---------hardinfo2/arch/linux/sparc/battery.h1
l---------hardinfo2/arch/linux/sparc/boots.h1
l---------hardinfo2/arch/linux/sparc/devmemory.h1
l---------hardinfo2/arch/linux/sparc/filesystem.h1
l---------hardinfo2/arch/linux/sparc/inputdevices.h1
l---------hardinfo2/arch/linux/sparc/loadavg.h1
l---------hardinfo2/arch/linux/sparc/memory.h1
l---------hardinfo2/arch/linux/sparc/modules.h1
l---------hardinfo2/arch/linux/sparc/net.h1
l---------hardinfo2/arch/linux/sparc/nfs.h1
l---------hardinfo2/arch/linux/sparc/os.h1
l---------hardinfo2/arch/linux/sparc/pci.h1
-rw-r--r--hardinfo2/arch/linux/sparc/processor.h67
l---------hardinfo2/arch/linux/sparc/resources.h1
l---------hardinfo2/arch/linux/sparc/samba.h1
l---------hardinfo2/arch/linux/sparc/sensors.h1
l---------hardinfo2/arch/linux/sparc/storage.h1
l---------hardinfo2/arch/linux/sparc/uptime.h1
l---------hardinfo2/arch/linux/sparc/usb.h1
l---------hardinfo2/arch/linux/x86/alsa.h1
l---------hardinfo2/arch/linux/x86/battery.h1
l---------hardinfo2/arch/linux/x86/boots.h1
l---------hardinfo2/arch/linux/x86/devmemory.h1
l---------hardinfo2/arch/linux/x86/dmi.h1
l---------hardinfo2/arch/linux/x86/filesystem.h1
l---------hardinfo2/arch/linux/x86/inputdevices.h1
l---------hardinfo2/arch/linux/x86/loadavg.h1
l---------hardinfo2/arch/linux/x86/memory.h1
l---------hardinfo2/arch/linux/x86/modules.h1
l---------hardinfo2/arch/linux/x86/net.h1
l---------hardinfo2/arch/linux/x86/nfs.h1
l---------hardinfo2/arch/linux/x86/os.h1
l---------hardinfo2/arch/linux/x86/pci.h1
-rw-r--r--hardinfo2/arch/linux/x86/processor.h589
l---------hardinfo2/arch/linux/x86/resources.h1
l---------hardinfo2/arch/linux/x86/samba.h1
l---------hardinfo2/arch/linux/x86/sensors.h1
l---------hardinfo2/arch/linux/x86/storage.h1
l---------hardinfo2/arch/linux/x86/uptime.h1
l---------hardinfo2/arch/linux/x86/usb.h1
l---------hardinfo2/arch/linux/x86_641
-rw-r--r--hardinfo2/autopackage/default.apspec58
-rw-r--r--hardinfo2/benchmark.conf311
-rw-r--r--hardinfo2/benchmark.databin65536 -> 0 bytes
-rw-r--r--hardinfo2/doc/index.hlp35
-rw-r--r--hardinfo2/hardinfo.desktop9
-rw-r--r--hardinfo2/hardinfo/hardinfo.c161
-rw-r--r--hardinfo2/help-viewer/egg-markdown.c1586
-rw-r--r--hardinfo2/help-viewer/help-viewer.c514
-rw-r--r--hardinfo2/help-viewer/markdown-text-view.c637
-rw-r--r--hardinfo2/includes/benchmark.h21
-rw-r--r--hardinfo2/includes/binreloc.h68
-rw-r--r--hardinfo2/includes/blowfish.h33
-rw-r--r--hardinfo2/includes/callbacks.h45
-rw-r--r--hardinfo2/includes/computer.h186
-rw-r--r--hardinfo2/includes/devices.h87
-rw-r--r--hardinfo2/includes/egg-markdown.h84
-rw-r--r--hardinfo2/includes/expr.h48
-rw-r--r--hardinfo2/includes/fftbench.h19
-rw-r--r--hardinfo2/includes/guibench.h24
-rw-r--r--hardinfo2/includes/hardinfo.h151
-rw-r--r--hardinfo2/includes/help-viewer.h43
-rw-r--r--hardinfo2/includes/iconcache.h30
-rw-r--r--hardinfo2/includes/loadgraph.h69
-rw-r--r--hardinfo2/includes/markdown-text-view.h70
-rw-r--r--hardinfo2/includes/md5.h26
-rw-r--r--hardinfo2/includes/menu.h25
-rw-r--r--hardinfo2/includes/network.h14
-rw-r--r--hardinfo2/includes/nqueens.h13
-rw-r--r--hardinfo2/includes/remote.h29
-rw-r--r--hardinfo2/includes/report.h93
-rw-r--r--hardinfo2/includes/sha1.h30
-rw-r--r--hardinfo2/includes/shell.h225
-rw-r--r--hardinfo2/includes/socket.h36
-rw-r--r--hardinfo2/includes/ssh-conn.h66
-rw-r--r--hardinfo2/includes/stock.h34
-rw-r--r--hardinfo2/includes/syncmanager.h42
-rw-r--r--hardinfo2/includes/test-utils.h24
-rw-r--r--hardinfo2/includes/uidefs.h79
-rw-r--r--hardinfo2/includes/vendor.h33
-rw-r--r--hardinfo2/includes/x86/processor-platform.h36
-rw-r--r--hardinfo2/includes/xmlrpc-client.h43
-rw-r--r--hardinfo2/includes/xmlrpc-server.h25
-rw-r--r--hardinfo2/modules/benchmark.c654
-rw-r--r--hardinfo2/modules/benchmark/blowfish.c493
-rw-r--r--hardinfo2/modules/benchmark/cryptohash.c79
-rw-r--r--hardinfo2/modules/benchmark/drawing.c29
-rw-r--r--hardinfo2/modules/benchmark/fbench.c745
-rw-r--r--hardinfo2/modules/benchmark/fft.c65
-rw-r--r--hardinfo2/modules/benchmark/fftbench.c211
-rw-r--r--hardinfo2/modules/benchmark/fib.c50
-rw-r--r--hardinfo2/modules/benchmark/guibench.c353
-rw-r--r--hardinfo2/modules/benchmark/md5.c317
-rw-r--r--hardinfo2/modules/benchmark/nqueens.c37
-rw-r--r--hardinfo2/modules/benchmark/raytrace.c47
-rw-r--r--hardinfo2/modules/benchmark/sha1.c329
-rw-r--r--hardinfo2/modules/computer.c689
-rw-r--r--hardinfo2/modules/computer/alsa.c71
-rw-r--r--hardinfo2/modules/computer/boots.c65
-rw-r--r--hardinfo2/modules/computer/display.c148
-rw-r--r--hardinfo2/modules/computer/environment.c45
-rw-r--r--hardinfo2/modules/computer/filesystem.c112
-rw-r--r--hardinfo2/modules/computer/languages.c112
-rw-r--r--hardinfo2/modules/computer/loadavg.c50
-rw-r--r--hardinfo2/modules/computer/memory.c59
-rw-r--r--hardinfo2/modules/computer/modules.c174
-rw-r--r--hardinfo2/modules/computer/os.c220
-rw-r--r--hardinfo2/modules/computer/uptime.c76
-rw-r--r--hardinfo2/modules/computer/users.c65
-rw-r--r--hardinfo2/modules/devices.c442
-rw-r--r--hardinfo2/modules/devices/battery.c307
-rw-r--r--hardinfo2/modules/devices/devmemory.c107
-rw-r--r--hardinfo2/modules/devices/dmi.c200
-rw-r--r--hardinfo2/modules/devices/inputdevices.c144
-rw-r--r--hardinfo2/modules/devices/pci.c245
-rw-r--r--hardinfo2/modules/devices/printers.c271
-rw-r--r--hardinfo2/modules/devices/resources.c105
-rw-r--r--hardinfo2/modules/devices/sensors.c383
-rw-r--r--hardinfo2/modules/devices/storage.c377
-rw-r--r--hardinfo2/modules/devices/usb.c349
-rw-r--r--hardinfo2/modules/devices/x86/processor.c562
-rw-r--r--hardinfo2/modules/network.c443
-rw-r--r--hardinfo2/modules/network/net.c454
-rw-r--r--hardinfo2/modules/network/nfs.c61
-rw-r--r--hardinfo2/modules/network/samba.c124
-rw-r--r--hardinfo2/pixmaps/about-modules.pngbin534 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/audio.pngbin1084 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/battery.pngbin1048 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/benchmark.pngbin649 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/blowfish.pngbin1368 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/bluetooth.pngbin894 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/boot.pngbin1161 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/cdrom.pngbin904 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/close.pngbin272 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/compress.pngbin657 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/computer.pngbin952 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/cryptohash.pngbin985 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/dev_removable.pngbin562 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/devel.pngbin982 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/devices.pngbin771 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/dialog-error.pngbin925 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/dialog-information.pngbin1102 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/dialog-warning.pngbin937 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/dns.pngbin1389 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/environment.pngbin1024 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/face-grin.pngbin816 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/fft.pngbin961 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/hdd.pngbin524 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/home.pngbin815 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/inputdevices.pngbin1132 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/internet.pngbin848 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/joystick.pngbin896 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/keyboard.pngbin663 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/language.pngbin1135 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/logo.pngbin1904 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/logo.xcfbin3998 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/memory.pngbin796 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/modem.pngbin1668 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/module.pngbin932 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/monitor.pngbin784 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/mouse.pngbin1048 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/nautilus.pngbin1264 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/network-connections.pngbin800 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/network-interface.pngbin1019 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/network-statistics.pngbin1161 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/network.pngbin658 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/nqueens.pngbin925 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/os.pngbin1381 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/pcmcia.pngbin873 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/printer.pngbin908 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/processor.pngbin1099 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/raytrace.pngbin955 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/report-large.pngbin2435 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/report.pngbin1119 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/resources.pngbin935 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/server-large.pngbin1359 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/server.pngbin821 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/shares.pngbin806 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/summary.pngbin1374 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/syncmanager-small.pngbin920 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/syncmanager.pngbin3633 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/therm.pngbin490 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/usb.pngbin683 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/usbfldisk.pngbin821 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/users.pngbin1255 -> 0 bytes
-rw-r--r--hardinfo2/pixmaps/wireless.pngbin912 -> 0 bytes
-rw-r--r--hardinfo2/remote/remote.c1307
-rw-r--r--hardinfo2/remote/ssh-conn.c338
-rw-r--r--hardinfo2/remote/xmlrpc-client.c247
-rw-r--r--hardinfo2/remote/xmlrpc-server.c782
-rw-r--r--hardinfo2/shell/callbacks.c430
-rw-r--r--hardinfo2/shell/iconcache.c100
-rw-r--r--hardinfo2/shell/loadgraph.c347
-rw-r--r--hardinfo2/shell/menu.c202
-rw-r--r--hardinfo2/shell/report.c890
-rw-r--r--hardinfo2/shell/shell.c1961
-rw-r--r--hardinfo2/shell/stock.c91
-rw-r--r--hardinfo2/shell/syncmanager.c758
-rw-r--r--hardinfo2/util/binreloc.c672
-rw-r--r--hardinfo2/util/expr.c250
-rw-r--r--hardinfo2/util/socket.c127
-rw-r--r--hardinfo2/util/util.c1292
-rw-r--r--hardinfo2/util/vendor.c195
420 files changed, 0 insertions, 31802 deletions
diff --git a/hardinfo2/.gitignore b/hardinfo2/.gitignore
deleted file mode 100644
index 000e8741..00000000
--- a/hardinfo2/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-Makefile
-config.h
-*.so
-*.o
-*~
-arch/this
diff --git a/hardinfo2/CMakeLists.txt b/hardinfo2/CMakeLists.txt
deleted file mode 100644
index 24641294..00000000
--- a/hardinfo2/CMakeLists.txt
+++ /dev/null
@@ -1,184 +0,0 @@
-project(HardInfo)
-cmake_minimum_required(VERSION 2.6)
-
-if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
- set(HARDINFO_OS "linux")
-else()
- message(FATAL_ERROR "Unsupported operating system: ${CMAKE_HOST_SYSTEM_NAME}")
-endif()
-
-if(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "i[3-6]86|x86_64")
- set(HARDINFO_ARCH "x86")
-elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "ppc{32,64}")
- set(HARDINFO_ARCH "ppc")
-elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "mips")
- set(HARDINFO_ARCH "mips")
-elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "parisc.*")
- set(HARDINFO_ARCH "parisc")
-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 "ia64")
- set(HARDINFO_ARCH "ia64")
-elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "alpha")
- set(HARDINFO_ARCH "alpha")
-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}")
- set(HARDINFO_ARCH "sh")
-else()
- message(FATAL_ERROR "Unsupported architecture: ${CMAKE_HOST_SYSTEM_PROCESSOR}")
-endif()
-
-message(STATUS "Building HardInfo for architecture: ${HARDINFO_OS}-${HARDINFO_ARCH}")
-
-include(FindPkgConfig)
-pkg_check_modules(GTK REQUIRED gtk+-2.0>=2.10 glib-2.0>=2.10 gthread-2.0>=2.10)
-pkg_check_modules(LIBSOUP libsoup-2.4>=2.26)
-
-include_directories(
- ${CMAKE_SOURCE_DIR}
- ${CMAKE_SOURCE_DIR}/includes
- ${CMAKE_SOURCE_DIR}/includes/${HARDINFO_ARCH}
- ${GTK_INCLUDE_DIRS}
- ${LIBSOUP_INCLUDE_DIRS}
-)
-link_directories(
- ${GTK_LIBRARY_DIRS}
- ${LIBSOUP_LIBRARY_DIRS}
-)
-
-set(HARDINFO_MODULES
- computer
- devices
- benchmark
- network
-)
-set(HARDINFO_RESOURCES
- "benchmark.conf"
- "benchmark.data"
-)
-
-set(MODULE_computer_SOURCES
- modules/computer.c
- modules/computer/alsa.c
- modules/computer/boots.c
- modules/computer/display.c
- modules/computer/environment.c
- modules/computer/filesystem.c
- modules/computer/languages.c
- modules/computer/loadavg.c
- modules/computer/memory.c
- modules/computer/modules.c
- modules/computer/os.c
- modules/computer/uptime.c
- modules/computer/users.c
-)
-set(MODULE_devices_SOURCES
- modules/devices.c
- modules/devices/${HARDINFO_ARCH}/processor.c
- modules/devices/battery.c
- modules/devices/devmemory.c
- modules/devices/dmi.c
- modules/devices/inputdevices.c
- modules/devices/pci.c
- modules/devices/printers.c
- modules/devices/resources.c
- modules/devices/sensors.c
- modules/devices/storage.c
- modules/devices/usb.c
-)
-set(MODULE_network_SOURCES
- modules/network.c
- modules/network/net.c
- modules/network/nfs.c
- modules/network/samba.c
-)
-set(MODULE_benchmark_SOURCES
- modules/benchmark.c
- modules/benchmark/blowfish.c
- modules/benchmark/cryptohash.c
- modules/benchmark/drawing.c
- modules/benchmark/fbench.c
- modules/benchmark/fftbench.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
-)
-
-foreach (_module ${HARDINFO_MODULES})
- add_library(${_module} MODULE ${MODULE_${_module}_SOURCES})
-endforeach()
-
-add_library(hardinfo-remote SHARED
- remote/remote.c
- remote/ssh-conn.c
- remote/xmlrpc-client.c
- remote/xmlrpc-server.c
-)
-add_library(hardinfo-help-viewer SHARED
- help-viewer/egg-markdown.c
- help-viewer/help-viewer.c
- help-viewer/markdown-text-view.c
-)
-add_library(hardinfo-shell SHARED
- shell/callbacks.c
- shell/iconcache.c
- shell/loadgraph.c
- shell/menu.c
- shell/report.c
- shell/shell.c
- shell/stock.c
- shell/syncmanager.c
-)
-add_library(hardinfo-util SHARED
- util/binreloc.c
- util/expr.c
- util/socket.c
- util/vendor.c
- util/util.c
-)
-add_executable(hardinfo
- hardinfo/hardinfo.c
-)
-target_link_libraries(hardinfo
- ${GTK_LIBRARIES}
- ${LIBSOUP_LIBRARIES}
- hardinfo-shell
- hardinfo-util
-)
-target_link_libraries(hardinfo-shell
- hardinfo-help-viewer
- hardinfo-remote
-)
-
-install(TARGETS hardinfo ${HARDINFO_MODULES}
- RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib/hardinfo/modules
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
-)
-install(TARGETS hardinfo-shell hardinfo-util hardinfo-help-viewer hardinfo-remote
- LIBRARY DESTINATION lib
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
-)
-install(FILES ${HARDINFO_RESOURCES}
- DESTINATION share/hardinfo
- PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
-)
-install(DIRECTORY pixmaps
- DESTINATION share/hardinfo
- PATTERN "*.{png,svg}"
- PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
-)
-install(DIRECTORY doc
- DESTINATION share/hardinfo
- PATTERN "*.{hlp,png}"
- PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
-)
- \ No newline at end of file
diff --git a/hardinfo2/LICENSE b/hardinfo2/LICENSE
deleted file mode 100644
index 21b9363e..00000000
--- a/hardinfo2/LICENSE
+++ /dev/null
@@ -1,341 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- 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
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/hardinfo2/TODO b/hardinfo2/TODO
deleted file mode 100644
index 513752d4..00000000
--- a/hardinfo2/TODO
+++ /dev/null
@@ -1,45 +0,0 @@
-
-- Report Generation
-
- * Ability to create more detailed reports
- * Public web page to host user's reports
-
-- Benchmark
-
- * New benchmarks
- o Video
- o FPU+CPU
- o Disk
- o Phoronix?
- * Change current benchmarks
- o Remove CPU Fibonacci
- * Add CPU Rubik Cube solver? :P
-
-- More information
-
- * PCMCIA/Cardbus information
- * S.M.A.R.T.
- * Show USB devices as a tree instead of a list
- * x86info integration?
-
-- i18n, build system
-
- * GNU gettext
- * Better build system (no more symlink mess)
-
-- Misc
-
- * Round benchmark results to two decimal places at most,
- or get rid of decimal places altogether.
- * Add preferences window
- * Save/restore
- * Window position
- * Window size
- * Proxy configuration
- * Use HTTP_PROXY variable;
- * Use GNOME settings;
- * Manual configuration.
- * Default browser
- * Auto-detect;
- * Use GNOME settings;
- * Manual configuration.
diff --git a/hardinfo2/arch/common/blowfish.h b/hardinfo2/arch/common/blowfish.h
deleted file mode 100644
index 333fb157..00000000
--- a/hardinfo2/arch/common/blowfish.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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 <blowfish.h>
-
-static gpointer
-parallel_blowfish(unsigned int start, unsigned int end, void *data, gint thread_number)
-{
- BLOWFISH_CTX ctx;
- unsigned int i;
- unsigned long L, R;
-
- L = 0xBEBACAFE;
- R = 0xDEADBEEF;
-
- for (i = start; i <= end; i++) {
- Blowfish_Init(&ctx, (unsigned char*)data, 65536);
- Blowfish_Encrypt(&ctx, &L, &R);
- Blowfish_Decrypt(&ctx, &L, &R);
- }
-
- return NULL;
-}
-
-static void
-benchmark_fish(void)
-{
- gdouble elapsed = 0;
- gchar *tmpsrc;
-
- gchar *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("Performing Blowfish benchmark...");
-
- elapsed = benchmark_parallel_for(0, 50000, parallel_blowfish, tmpsrc);
-
- g_free(bdata_path);
- g_free(tmpsrc);
-
- bench_results[BENCHMARK_BLOWFISH] = elapsed;
-}
diff --git a/hardinfo2/arch/common/cryptohash.h b/hardinfo2/arch/common/cryptohash.h
deleted file mode 100644
index 2c917c9b..00000000
--- a/hardinfo2/arch/common/cryptohash.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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 <md5.h>
-#include <sha1.h>
-
-static void inline md5_step(char *data, glong srclen)
-{
- struct MD5Context ctx;
- guchar checksum[16];
-
- MD5Init(&ctx);
- MD5Update(&ctx, (guchar *)data, srclen);
- MD5Final(checksum, &ctx);
-}
-
-static void inline sha1_step(char *data, glong srclen)
-{
- SHA1_CTX ctx;
- guchar checksum[20];
-
- SHA1Init(&ctx);
- SHA1Update(&ctx, (guchar*)data, srclen);
- SHA1Final(checksum, &ctx);
-}
-
-static gpointer cryptohash_for(unsigned int start, unsigned int end, void *data, gint thread_number)
-{
- unsigned int i;
-
- for (i = start; i <= end; i++) {
- if (i & 1) {
- md5_step(data, 65536);
- } else {
- sha1_step(data, 65536);
- }
- }
-
- return NULL;
-}
-
-static void
-benchmark_cryptohash(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 CryptoHash benchmark...");
-
- elapsed = benchmark_parallel_for(0, 5000, cryptohash_for, tmpsrc);
-
- g_free(bdata_path);
- g_free(tmpsrc);
-
- bench_results[BENCHMARK_CRYPTOHASH] = 312.0 / elapsed;
-}
diff --git a/hardinfo2/arch/common/display.h b/hardinfo2/arch/common/display.h
deleted file mode 100644
index 075a0a24..00000000
--- a/hardinfo2/arch/common/display.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * 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
- */
-
-static void
-get_glx_info(DisplayInfo *di)
-{
- gchar *output;
- if (g_spawn_command_line_sync("glxinfo", &output, NULL, NULL, NULL)) {
- gchar **output_lines;
- gint i = 0;
-
- for (output_lines = g_strsplit(output, "\n", 0);
- output_lines && output_lines[i];
- i++) {
- if (strstr(output_lines[i], "OpenGL")) {
- gchar **tmp = g_strsplit(output_lines[i], ":", 0);
-
- tmp[1] = g_strchug(tmp[1]);
-
- get_str("OpenGL vendor str", di->ogl_vendor);
- get_str("OpenGL renderer str", di->ogl_renderer);
- get_str("OpenGL version str", di->ogl_version);
-
- g_strfreev(tmp);
- } else if (strstr(output_lines[i], "direct rendering: Yes")) {
- di->dri = TRUE;
- }
- }
-
- g_free(output);
- g_strfreev(output_lines);
-
- if (!di->ogl_vendor)
- di->ogl_vendor = "Unknown";
- if (!di->ogl_renderer)
- di->ogl_renderer = "Unknown";
- if (!di->ogl_version)
- di->ogl_version = "Unknown";
- } else {
- di->ogl_vendor = di->ogl_renderer = di->ogl_version = "Unknown";
- }
-
-}
-
-static void
-get_x11_info(DisplayInfo *di)
-{
- gchar *output;
-
- if (g_spawn_command_line_sync("xdpyinfo", &output, NULL, NULL, NULL)) {
- gchar **output_lines, **old;
-
- output_lines = g_strsplit(output, "\n", 0);
- g_free(output);
-
- old = output_lines;
- while (*(output_lines++)) {
- gchar **tmp = g_strsplit(*output_lines, ":", 0);
-
- if (tmp[1] && tmp[0]) {
- tmp[1] = g_strchug(tmp[1]);
-
- get_str("vendor string", di->vendor);
- get_str("X.Org version", di->version);
- get_str("XFree86 version", di->version);
-
- if (g_str_has_prefix(tmp[0], "number of extensions")) {
- int n;
-
- di->extensions = g_strdup("");
-
- for (n = atoi(tmp[1]); n; n--) {
- di->extensions = h_strconcat(di->extensions,
- g_strstrip(*(++output_lines)),
- "=\n",
- NULL);
- }
- g_strfreev(tmp);
-
- break;
- }
- }
-
- g_strfreev(tmp);
- }
-
- g_strfreev(old);
- }
-
- GdkScreen *screen = gdk_screen_get_default();
-
- if (screen && GDK_IS_SCREEN(screen)) {
- gint n_monitors = gdk_screen_get_n_monitors(screen);
- gint i;
-
- di->monitors = NULL;
- for (i = 0; i < n_monitors; i++) {
- GdkRectangle rect;
-
- gdk_screen_get_monitor_geometry(screen, i, &rect);
-
- di->monitors = h_strdup_cprintf("Monitor %d=%dx%d pixels\n",
- di->monitors, i, rect.width, rect.height);
- }
- } else {
- di->monitors = "";
- }
-}
-
-static DisplayInfo *
-computer_get_display(void)
-{
- DisplayInfo *di = g_new0(DisplayInfo, 1);
-
- GdkScreen *screen = gdk_screen_get_default();
-
- if (screen && GDK_IS_SCREEN(screen)) {
- di->width = gdk_screen_get_width(screen);
- di->height = gdk_screen_get_height(screen);
- } else {
- di->width = di->height = 0;
- }
-
- get_glx_info(di);
- get_x11_info(di);
-
- return di;
-}
diff --git a/hardinfo2/arch/common/drawing.h b/hardinfo2/arch/common/drawing.h
deleted file mode 100644
index 4ebfb3b5..00000000
--- a/hardinfo2/arch/common/drawing.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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 "guibench.h"
-
-static void
-benchmark_gui(void)
-{
- shell_view_set_enabled(FALSE);
- shell_status_update("Running drawing benchmark...");
-
- bench_results[BENCHMARK_GUI] = guibench();
-}
diff --git a/hardinfo2/arch/common/environment.h b/hardinfo2/arch/common/environment.h
deleted file mode 100644
index 669be6d1..00000000
--- a/hardinfo2/arch/common/environment.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 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
- */
-
-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");
- 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();
-}
-
-gchar *callback_env_var(void)
-{
- return g_strdup(_env);
-}
diff --git a/hardinfo2/arch/common/fft.h b/hardinfo2/arch/common/fft.h
deleted file mode 100644
index f1a0ced8..00000000
--- a/hardinfo2/arch/common/fft.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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 <fftbench.h>
-
-static gpointer fft_for(unsigned int start, unsigned int end, void *data, gint thread_number)
-{
- unsigned int i;
- FFTBench **benches = (FFTBench **)data;
- FFTBench *fftbench = (FFTBench *)(benches[thread_number]);
-
- for (i = start; i <= end; i++) {
- fft_bench_run(fftbench);
- }
-
- return NULL;
-}
-
-static void
-benchmark_fft(void)
-{
- gdouble elapsed = 0;
- int n_cores, i;
- gchar *temp;
- FFTBench **benches;
-
- shell_view_set_enabled(FALSE);
- shell_status_update("Running FFT benchmark...");
-
- /* Pre-allocate all benchmarks */
- temp = module_call_method("devices::getProcessorCount");
- n_cores = temp ? atoi(temp) : 1;
- g_free(temp);
-
- benches = g_new0(FFTBench *, n_cores);
- for (i = 0; i < n_cores; i++) {
- benches[i] = fft_bench_new();
- }
-
- /* Run the benchmark */
- elapsed = benchmark_parallel_for(0, 4, fft_for, benches);
-
- /* Free up the memory */
- for (i = 0; i < n_cores; i++) {
- fft_bench_free(benches[i]);
- }
- g_free(benches);
-
- bench_results[BENCHMARK_FFT] = elapsed;
-}
diff --git a/hardinfo2/arch/common/fib.h b/hardinfo2/arch/common/fib.h
deleted file mode 100644
index 6a216afe..00000000
--- a/hardinfo2/arch/common/fib.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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
- */
-
-static gulong
-fib(gulong n)
-{
- if (n == 0)
- return 0;
- else if (n <= 2)
- return 1;
- return fib(n - 1) + fib(n - 2);
-}
-
-static void
-benchmark_fib(void)
-{
- GTimer *timer = g_timer_new();
- gdouble elapsed;
-
- shell_view_set_enabled(FALSE);
- shell_status_update("Calculating the 42nd Fibonacci number...");
-
- g_timer_reset(timer);
- g_timer_start(timer);
-
- fib(42);
-
- g_timer_stop(timer);
- elapsed = g_timer_elapsed(timer, NULL);
- g_timer_destroy(timer);
-
- bench_results[BENCHMARK_FIB] = elapsed;
-}
diff --git a/hardinfo2/arch/common/languages.h b/hardinfo2/arch/common/languages.h
deleted file mode 100644
index 39e557fc..00000000
--- a/hardinfo2/arch/common/languages.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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
- */
-
-void
-scan_languages(OperatingSystem * os)
-{
- FILE *locale;
- gchar buf[512], *retval = NULL;
-
- locale = popen("locale -va && echo", "r");
- if (!locale)
- return;
-
- gchar name[32];
- gchar *title = NULL,
- *source = NULL,
- *address = NULL,
- *email = NULL,
- *language = NULL,
- *territory = NULL,
- *revision = NULL,
- *date = NULL,
- *codeset = NULL;
-
- while (fgets(buf, 512, locale)) {
- if (!strncmp(buf, "locale:", 7)) {
- sscanf(buf, "locale: %s", name);
- (void)fgets(buf, 128, locale);
- } else if (strchr(buf, '|')) {
- gchar **tmp = g_strsplit(buf, "|", 2);
-
- tmp[0] = g_strstrip(tmp[0]);
-
- if (tmp[1]) {
- tmp[1] = g_strstrip(tmp[1]);
-
- get_str("title", title);
- get_str("source", source);
- get_str("address", address);
- get_str("email", email);
- get_str("language", language);
- get_str("territory", territory);
- get_str("revision", revision);
- get_str("date", date);
- get_str("codeset", codeset);
- }
-
- 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
-
- g_hash_table_insert(moreinfo, g_strdup(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);
-
- os->languages = retval;
-}
diff --git a/hardinfo2/arch/common/nqueens.h b/hardinfo2/arch/common/nqueens.h
deleted file mode 100644
index 6ad5b4fd..00000000
--- a/hardinfo2/arch/common/nqueens.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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 <nqueens.h>
-
-static gpointer nqueens_for(unsigned int start, unsigned int end, void *data, gint thread_number)
-{
- unsigned int i;
-
- for (i = start; i <= end; i++) {
- nqueens(0);
- }
-
- return NULL;
-}
-
-static void
-benchmark_nqueens(void)
-{
- gdouble elapsed = 0;
-
- shell_view_set_enabled(FALSE);
- shell_status_update("Running N-Queens benchmark...");
-
- elapsed = benchmark_parallel_for(0, 10, nqueens_for, NULL);
-
- bench_results[BENCHMARK_NQUEENS] = elapsed;
-}
-
-
diff --git a/hardinfo2/arch/common/printers.h b/hardinfo2/arch/common/printers.h
deleted file mode 100644
index 0e865c04..00000000
--- a/hardinfo2/arch/common/printers.h
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-
-typedef struct _CUPSDest CUPSDest;
-typedef struct _CUPSOption CUPSOption;
-
-struct _CUPSOption {
- char *name, *value;
-};
-
-struct _CUPSDest {
- char *name, *instance;
- int is_default;
- int num_options;
- CUPSOption *options;
-};
-
-static int (*cups_dests_get) (CUPSDest **dests) = NULL;
-static int (*cups_dests_free) (int num_dests, CUPSDest *dests) = NULL;
-static gboolean cups_init = FALSE;
-static GModule *cups = NULL;
-
-static gboolean
-remove_printer_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "PRN");
-}
-
-static void
-__init_cups(void)
-{
- const char *libcups[] = { "libcups", "libcups.so", "libcups.so.1", "libcups.so.2", NULL };
-
- if (!(cups_dests_get && cups_dests_free)) {
- int i;
-
- for (i = 0; libcups[i] != NULL; i++) {
- cups = g_module_open(libcups[i], G_MODULE_BIND_LAZY);
- if (cups)
- break;
- }
-
- if (!cups) {
- cups_init = FALSE;
- return;
- }
-
- if (!g_module_symbol(cups, "cupsGetDests", (gpointer) & cups_dests_get)
- || !g_module_symbol(cups, "cupsFreeDests", (gpointer) & cups_dests_free)) {
- g_module_close(cups);
- cups_init = FALSE;
- }
- }
-
- cups_init = TRUE;
-}
-
-gchar *__cups_callback_ptype(gchar *strvalue)
-{
- if (strvalue) {
- unsigned value = atoi(strvalue);
- gchar *output = g_strdup("\n");
-
- if (value & 0x0004)
- output = h_strdup_cprintf("\342\232\254 Can do black and white printing=\n", output);
- if (value & 0x0008)
- output = h_strdup_cprintf("\342\232\254 Can do color printing=\n", output);
- if (value & 0x0010)
- output = h_strdup_cprintf("\342\232\254 Can do duplexing=\n", output);
- if (value & 0x0020)
- output = h_strdup_cprintf("\342\232\254 Can do staple output=\n", output);
- if (value & 0x0040)
- output = h_strdup_cprintf("\342\232\254 Can do copies=\n", output);
- if (value & 0x0080)
- output = h_strdup_cprintf("\342\232\254 Can collate copies=\n", output);
- if (value & 0x80000)
- output = h_strdup_cprintf("\342\232\254 Printer is rejecting jobs=\n", output);
- if (value & 0x1000000)
- output = h_strdup_cprintf("\342\232\254 Printer was automatically discovered and added=\n", output);
-
- return output;
- } else {
- return g_strdup("Unknown");
- }
-}
-
-gchar *__cups_callback_state(gchar *value)
-{
- if (!value) {
- return g_strdup("Unknown");
- }
-
- if (g_str_equal(value, "3")) {
- return g_strdup("Idle");
- } else if (g_str_equal(value, "4")) {
- return g_strdup("Printing a Job");
- } else if (g_str_equal(value, "5")) {
- return g_strdup("Stopped");
- } else {
- return g_strdup("Unknown");
- }
-}
-
-gchar *__cups_callback_state_change_time(gchar *value)
-{
- struct tm tm;
- char buf[255];
-
- if (value) {
- strptime(value, "%s", &tm);
- strftime(buf, sizeof(buf), "%c", &tm);
-
- return g_strdup(buf);
- } else {
- return g_strdup("Unknown");
- }
-}
-
-gchar *__cups_callback_boolean(gchar *value)
-{
- if (value) {
- return g_strdup(g_str_equal(value, "1") ? "Yes" : "No");
- } else {
- return g_strdup("Unknown");
- }
-}
-
-const struct {
- char *key, *name;
- gchar *(*callback)(gchar *value);
-} cups_fields[] = {
- { "Printer Information", NULL, NULL },
- { "printer-info", "Destination Name", NULL },
- { "printer-make-and-model", "Make and Model", NULL },
-
- { "Capabilities", NULL, NULL },
- { "printer-type", "#", __cups_callback_ptype },
-
- { "Printer State", NULL, NULL },
- { "printer-state", "State", __cups_callback_state },
- { "printer-state-change-time", "Change Time", __cups_callback_state_change_time },
- { "printer-state-reasons", "State Reasons" },
-
- { "Sharing Information", NULL, NULL },
- { "printer-is-shared", "Shared?", __cups_callback_boolean },
- { "printer-location", "Physical Location" },
- { "auth-info-required", "Authentication Required", __cups_callback_boolean },
-
- { "Jobs", NULL, NULL },
- { "job-hold-until", "Hold Until", NULL },
- { "job-priority", "Priority", NULL },
- { "printer-is-accepting-jobs", "Accepting Jobs", __cups_callback_boolean },
-
- { "Media", NULL, NULL },
- { "media", "Media", NULL },
- { "finishings", "Finishings", NULL },
- { "copies", "Copies", NULL },
-};
-
-void
-__scan_printers(void)
-{
- int num_dests, i, j;
- CUPSDest *dests;
- gchar *prn_id, *prn_moreinfo;
-
- g_free(printer_list);
- g_free(printer_icons);
-
- if (!cups_init) {
- __init_cups();
-
- printer_icons = g_strdup("");
- printer_list = g_strdup("[Printers]\n"
- "No suitable CUPS library found=");
- return;
- }
-
- /* remove old devices from global device table */
- g_hash_table_foreach_remove(moreinfo, remove_printer_devices, NULL);
-
- num_dests = cups_dests_get(&dests);
- if (num_dests > 0) {
- printer_list = g_strdup_printf("[Printers (CUPS)]\n");
- printer_icons = g_strdup("");
- for (i = 0; i < num_dests; i++) {
- GHashTable *options;
-
- options = g_hash_table_new(g_str_hash, g_str_equal);
-
- for (j = 0; j < dests[i].num_options; j++) {
- g_hash_table_insert(options,
- g_strdup(dests[i].options[j].name),
- g_strdup(dests[i].options[j].value));
- }
-
- prn_id = g_strdup_printf("PRN%d", i);
-
- printer_list = h_strdup_cprintf("\n$%s$%s=%s\n",
- printer_list,
- prn_id,
- dests[i].name,
- dests[i].is_default ? "<i>Default</i>" : "");
- printer_icons = h_strdup_cprintf("\nIcon$%s$%s=printer.png",
- printer_icons,
- prn_id,
- dests[i].name);
-
- prn_moreinfo = g_strdup("");
- for (j = 0; j < G_N_ELEMENTS(cups_fields); j++) {
- if (!cups_fields[j].name) {
- prn_moreinfo = h_strdup_cprintf("[%s]\n",
- prn_moreinfo,
- cups_fields[j].key);
- } else {
- gchar *temp;
-
- temp = g_hash_table_lookup(options, cups_fields[j].key);
-
- if (cups_fields[j].callback) {
- temp = cups_fields[j].callback(temp);
- } else {
- if (temp) {
- /* FIXME Do proper escaping */
- temp = g_strdup(strreplacechr(temp, "&=", ' '));
- } else {
- temp = g_strdup("Unknown");
- }
- }
-
- prn_moreinfo = h_strdup_cprintf("%s=%s\n",
- prn_moreinfo,
- cups_fields[j].name,
- temp);
-
- g_free(temp);
- }
- }
-
- g_hash_table_insert(moreinfo, prn_id, prn_moreinfo);
- g_hash_table_destroy(options);
- }
-
- cups_dests_free(num_dests, dests);
- } else {
- printer_list = g_strdup("[Printers]\n"
- "No printers found=\n");
- }
-}
diff --git a/hardinfo2/arch/common/raytrace.h b/hardinfo2/arch/common/raytrace.h
deleted file mode 100644
index fe2fda91..00000000
--- a/hardinfo2/arch/common/raytrace.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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
- */
-
-void fbench(); /* fbench.c */
-
-static gpointer
-parallel_raytrace(unsigned int start, unsigned int end, gpointer data, gint thread_number)
-{
- unsigned int i;
-
- for (i = start; i <= end; i++) {
- fbench();
- }
-
- return NULL;
-}
-
-static void
-benchmark_raytrace(void)
-{
- gdouble elapsed = 0;
-
- shell_view_set_enabled(FALSE);
- shell_status_update("Performing John Walker's FBENCH...");
-
- elapsed = benchmark_parallel_for(0, 1000, parallel_raytrace, NULL);
-
- bench_results[BENCHMARK_RAYTRACE] = elapsed;
-}
-
diff --git a/hardinfo2/arch/common/users.h b/hardinfo2/arch/common/users.h
deleted file mode 100644
index 8d087fa5..00000000
--- a/hardinfo2/arch/common/users.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 <pwd.h>
-
-static gchar *users = NULL;
-
-static gboolean
-remove_users(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "USER");
-}
-
-static void
-scan_users_do(void)
-{
- struct passwd *passwd_;
- passwd_ = getpwent();
- if (!passwd_)
- return;
-
- if (users) {
- g_free(users);
- g_hash_table_foreach_remove(moreinfo, remove_users, NULL);
- }
-
- users = g_strdup("");
-
- 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);
- g_hash_table_insert(moreinfo, key, val);
-
- strend(passwd_->pw_gecos, ',');
- users = h_strdup_cprintf("$%s$%s=%s\n", users, key, passwd_->pw_name, passwd_->pw_gecos);
- passwd_ = getpwent();
- }
-
- endpwent();
-}
diff --git a/hardinfo2/arch/linux/alpha/alsa.h b/hardinfo2/arch/linux/alpha/alsa.h
deleted file mode 120000
index ede8a364..00000000
--- a/hardinfo2/arch/linux/alpha/alsa.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/alsa.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/battery.h b/hardinfo2/arch/linux/alpha/battery.h
deleted file mode 120000
index ed7360e1..00000000
--- a/hardinfo2/arch/linux/alpha/battery.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/battery.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/boots.h b/hardinfo2/arch/linux/alpha/boots.h
deleted file mode 120000
index 97384500..00000000
--- a/hardinfo2/arch/linux/alpha/boots.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/boots.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/devmemory.h b/hardinfo2/arch/linux/alpha/devmemory.h
deleted file mode 120000
index f8a833e7..00000000
--- a/hardinfo2/arch/linux/alpha/devmemory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/devmemory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/filesystem.h b/hardinfo2/arch/linux/alpha/filesystem.h
deleted file mode 120000
index d884bcd0..00000000
--- a/hardinfo2/arch/linux/alpha/filesystem.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/filesystem.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/inputdevices.h b/hardinfo2/arch/linux/alpha/inputdevices.h
deleted file mode 120000
index 0f594231..00000000
--- a/hardinfo2/arch/linux/alpha/inputdevices.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/inputdevices.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/loadavg.h b/hardinfo2/arch/linux/alpha/loadavg.h
deleted file mode 120000
index 1f64e107..00000000
--- a/hardinfo2/arch/linux/alpha/loadavg.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/loadavg.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/memory.h b/hardinfo2/arch/linux/alpha/memory.h
deleted file mode 120000
index 64c6e0ed..00000000
--- a/hardinfo2/arch/linux/alpha/memory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/memory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/modules.h b/hardinfo2/arch/linux/alpha/modules.h
deleted file mode 120000
index d21c9a20..00000000
--- a/hardinfo2/arch/linux/alpha/modules.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/modules.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/net.h b/hardinfo2/arch/linux/alpha/net.h
deleted file mode 120000
index 488b5ae3..00000000
--- a/hardinfo2/arch/linux/alpha/net.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/net.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/nfs.h b/hardinfo2/arch/linux/alpha/nfs.h
deleted file mode 120000
index 73e0b8c9..00000000
--- a/hardinfo2/arch/linux/alpha/nfs.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/nfs.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/os.h b/hardinfo2/arch/linux/alpha/os.h
deleted file mode 120000
index 44051626..00000000
--- a/hardinfo2/arch/linux/alpha/os.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/os.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/pci.h b/hardinfo2/arch/linux/alpha/pci.h
deleted file mode 120000
index 8df04a0e..00000000
--- a/hardinfo2/arch/linux/alpha/pci.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/pci.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/processor.h b/hardinfo2/arch/linux/alpha/processor.h
deleted file mode 100644
index 1e5b014c..00000000
--- a/hardinfo2/arch/linux/alpha/processor.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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
- */
-
-struct _Processor {
- gchar *model_name;
- gfloat bogomips, cpu_mhz;
- gchar *strmodel;
-};
-
-static GSList *
-__scan_processors(void)
-{
- Processor *processor;
- FILE *cpuinfo;
- gchar buffer[128];
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- processor = g_new0(Processor, 1);
- 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 model", processor->model_name);
- get_float("BogoMIPS", processor->bogomips);
- get_str("platform string", processor->strmodel);
-
- }
- g_strfreev(tmp);
- }
-
- 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);
-
- return g_slist_append(NULL, processor);
-}
-
-static gchar *
-processor_get_info(GSList *processors)
-{
- 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
- );
-}
diff --git a/hardinfo2/arch/linux/alpha/resources.h b/hardinfo2/arch/linux/alpha/resources.h
deleted file mode 120000
index 20a4815d..00000000
--- a/hardinfo2/arch/linux/alpha/resources.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/resources.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/samba.h b/hardinfo2/arch/linux/alpha/samba.h
deleted file mode 120000
index ebab9b11..00000000
--- a/hardinfo2/arch/linux/alpha/samba.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/samba.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/sensors.h b/hardinfo2/arch/linux/alpha/sensors.h
deleted file mode 120000
index 3b799377..00000000
--- a/hardinfo2/arch/linux/alpha/sensors.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/sensors.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/storage.h b/hardinfo2/arch/linux/alpha/storage.h
deleted file mode 120000
index 3ea886ce..00000000
--- a/hardinfo2/arch/linux/alpha/storage.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/storage.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/uptime.h b/hardinfo2/arch/linux/alpha/uptime.h
deleted file mode 120000
index a5bac980..00000000
--- a/hardinfo2/arch/linux/alpha/uptime.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/uptime.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/alpha/usb.h b/hardinfo2/arch/linux/alpha/usb.h
deleted file mode 120000
index aee3046c..00000000
--- a/hardinfo2/arch/linux/alpha/usb.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/usb.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/alsa.h b/hardinfo2/arch/linux/armv4l/alsa.h
deleted file mode 120000
index 0216845a..00000000
--- a/hardinfo2/arch/linux/armv4l/alsa.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/alsa.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/battery.h b/hardinfo2/arch/linux/armv4l/battery.h
deleted file mode 120000
index e4c794f2..00000000
--- a/hardinfo2/arch/linux/armv4l/battery.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/battery.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/boots.h b/hardinfo2/arch/linux/armv4l/boots.h
deleted file mode 120000
index 97384500..00000000
--- a/hardinfo2/arch/linux/armv4l/boots.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/boots.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/devmemory.h b/hardinfo2/arch/linux/armv4l/devmemory.h
deleted file mode 120000
index f8a833e7..00000000
--- a/hardinfo2/arch/linux/armv4l/devmemory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/devmemory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/filesystem.h b/hardinfo2/arch/linux/armv4l/filesystem.h
deleted file mode 120000
index 6b325b40..00000000
--- a/hardinfo2/arch/linux/armv4l/filesystem.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/filesystem.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/inputdevices.h b/hardinfo2/arch/linux/armv4l/inputdevices.h
deleted file mode 120000
index b9226a29..00000000
--- a/hardinfo2/arch/linux/armv4l/inputdevices.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/inputdevices.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/loadavg.h b/hardinfo2/arch/linux/armv4l/loadavg.h
deleted file mode 120000
index daaed6d5..00000000
--- a/hardinfo2/arch/linux/armv4l/loadavg.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/loadavg.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/memory.h b/hardinfo2/arch/linux/armv4l/memory.h
deleted file mode 120000
index 5ffc013e..00000000
--- a/hardinfo2/arch/linux/armv4l/memory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/memory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/modules.h b/hardinfo2/arch/linux/armv4l/modules.h
deleted file mode 120000
index 8ce5a808..00000000
--- a/hardinfo2/arch/linux/armv4l/modules.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/modules.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/net.h b/hardinfo2/arch/linux/armv4l/net.h
deleted file mode 120000
index 72d77b26..00000000
--- a/hardinfo2/arch/linux/armv4l/net.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/net.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/nfs.h b/hardinfo2/arch/linux/armv4l/nfs.h
deleted file mode 120000
index 3d1048da..00000000
--- a/hardinfo2/arch/linux/armv4l/nfs.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/nfs.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/os.h b/hardinfo2/arch/linux/armv4l/os.h
deleted file mode 120000
index ef547be5..00000000
--- a/hardinfo2/arch/linux/armv4l/os.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/os.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/pci.h b/hardinfo2/arch/linux/armv4l/pci.h
deleted file mode 120000
index 63760048..00000000
--- a/hardinfo2/arch/linux/armv4l/pci.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/pci.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/processor.h b/hardinfo2/arch/linux/armv4l/processor.h
deleted file mode 100644
index 82b6be04..00000000
--- a/hardinfo2/arch/linux/armv4l/processor.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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
- */
-
-struct _Processor {
- gchar *model_name;
- gchar *flags;
- gfloat bogomips, cpu_mhz;
-
- gchar *has_fpu;
-};
-
-
-static GSList *
-__scan_processors(void)
-{
- Processor *processor;
- FILE *cpuinfo;
- gchar buffer[128];
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- processor = g_new0(Processor, 1);
- 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("Processor", processor->model_name);
- get_str("Features", processor->flags);
- get_float("BogoMIPS", processor->bogomips);
-
- get_str("Hardware", processor->has_fpu);
- }
- g_strfreev(tmp);
- }
-
- processor->cpu_mhz = 0.0f;
-
- fclose(cpuinfo);
-
- return g_slist_append(NULL, processor);
-}
-
-static gchar *
-processor_get_info(GSList *processors)
-{
- Processor *processor = (Processor *)processors->data;
-
- return g_strdup_printf("[Processor]\n"
- "Name=%s\n"
- "Features=%s\n"
- "BogoMips=%.2f\n"
- "Endianesss="
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- "Little Endian",
-#else
- "Big Endian",
-#endif
- "\n"
- "Hardware=%s\n",
- processor->model_name,
- processor->flags,
- processor->bogomips,
- processor->has_fpu);
-}
diff --git a/hardinfo2/arch/linux/armv4l/resources.h b/hardinfo2/arch/linux/armv4l/resources.h
deleted file mode 120000
index 20a4815d..00000000
--- a/hardinfo2/arch/linux/armv4l/resources.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/resources.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/samba.h b/hardinfo2/arch/linux/armv4l/samba.h
deleted file mode 120000
index 9227f722..00000000
--- a/hardinfo2/arch/linux/armv4l/samba.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/samba.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/sensors.h b/hardinfo2/arch/linux/armv4l/sensors.h
deleted file mode 120000
index 35e5f37a..00000000
--- a/hardinfo2/arch/linux/armv4l/sensors.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/sensors.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/storage.h b/hardinfo2/arch/linux/armv4l/storage.h
deleted file mode 120000
index 55b68de3..00000000
--- a/hardinfo2/arch/linux/armv4l/storage.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/storage.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/uptime.h b/hardinfo2/arch/linux/armv4l/uptime.h
deleted file mode 120000
index 78c026ff..00000000
--- a/hardinfo2/arch/linux/armv4l/uptime.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/uptime.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/armv4l/usb.h b/hardinfo2/arch/linux/armv4l/usb.h
deleted file mode 120000
index 8b8fbb5d..00000000
--- a/hardinfo2/arch/linux/armv4l/usb.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/usb.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/common/alsa.h b/hardinfo2/arch/linux/common/alsa.h
deleted file mode 100644
index 1a156c2e..00000000
--- a/hardinfo2/arch/linux/common/alsa.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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
- */
-
-gchar *
-computer_get_alsacards(Computer * computer)
-{
- GSList *p;
- gchar *tmp = g_strdup("[Audio Devices]\n");
- gint n = 0;
-
- if (computer->alsa) {
- 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);
- }
- }
-
- return tmp;
-}
-
-static AlsaInfo *
-computer_get_alsainfo(void)
-{
- AlsaInfo *ai;
- AlsaCard *ac;
- FILE *cards;
- gchar buffer[128];
-
- cards = fopen("/proc/asound/cards", "r");
- if (!cards)
- return NULL;
-
- ai = g_new0(AlsaInfo, 1);
-
- while (fgets(buffer, 128, cards)) {
- gchar **tmp;
-
- ac = g_new0(AlsaCard, 1);
-
- tmp = g_strsplit(buffer, ":", 0);
-
- 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 */
- }
- fclose(cards);
-
- return ai;
-}
diff --git a/hardinfo2/arch/linux/common/battery.h b/hardinfo2/arch/linux/common/battery.h
deleted file mode 100644
index 5161422a..00000000
--- a/hardinfo2/arch/linux/common/battery.h
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * 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
- */
-
-#include <time.h>
-
-const struct {
- gchar *key, *name;
-} ups_fields[] = {
- { "UPS Status", NULL },
- { "STATUS", "Status" },
- { "TIMELEFT", "Time Left" },
- { "LINEV", "Line Voltage" },
- { "LOADPCT", "Load Percent" },
-
- { "UPS Battery Information", NULL },
- { "BATTV", "Battery Voltage" },
- { "BCHARGE", "Battery Charge" },
- { "BATTDATE", "Battery Date" },
-
- { "UPS Information", NULL },
- { "APCMODEL", "Model" },
- { "FIRMWARE", "Firmware Version" },
- { "SERIALNO", "Serial Number" },
- { "UPSMODE", "UPS Mode" },
- { "CABLE", "Cable" },
- { "UPSNAME", "UPS Name" },
-
- { "UPS Nominal Values", NULL },
- { "NOMINV", "Voltage" },
- { "NOMBATTV", "Battery Voltage" },
- { "NOMPOWER", "Power" }
-};
-
-
-static void
-__scan_battery_apcupsd(void)
-{
- GHashTable *ups_data;
- FILE *apcaccess;
- char buffer[512], *apcaccess_path;
- int i;
-
- apcaccess_path = find_program("apcaccess");
-
- if ((apcaccess = popen(apcaccess_path, "r"))) {
- /* first line isn't important */
- if (fgets(buffer, 512, apcaccess)) {
- /* allocate the key, value hash table */
- ups_data = g_hash_table_new(g_str_hash, g_str_equal);
-
- /* read up all the apcaccess' output, saving it in the key, value hash table */
- while (fgets(buffer, 512, apcaccess)) {
- buffer[9] = '\0';
-
- g_hash_table_insert(ups_data,
- g_strdup(g_strstrip(buffer)),
- g_strdup(g_strstrip(buffer + 10)));
- }
-
- /* builds the ups info string, respecting the field order as found in ups_fields */
- for (i = 0; i < G_N_ELEMENTS(ups_fields); i++) {
- if (!ups_fields[i].name) {
- /* there's no name: make a group with the key as its name */
- battery_list = h_strdup_cprintf("[%s]\n", battery_list, ups_fields[i].key);
- } else {
- /* there's a name: adds a line */
- battery_list = h_strdup_cprintf("%s=%s\n", battery_list,
- ups_fields[i].name,
- g_hash_table_lookup(ups_data, ups_fields[i].key));
- }
- }
-
- g_hash_table_destroy(ups_data);
- }
-
- pclose(apcaccess);
- }
-
- g_free(apcaccess_path);
-}
-
-static void
-__scan_battery_acpi(void)
-{
- gchar *acpi_path;
-
- gchar *present = NULL;
- gchar *capacity = NULL;
- gchar *technology = NULL;
- gchar *voltage = NULL;
- gchar *model = NULL, *serial = NULL, *type = NULL;
- gchar *state = NULL, *rate = NULL;
- gchar *remaining = NULL;
- gchar *manufacturer = NULL;
-
- acpi_path = g_strdup("/proc/acpi/battery");
- if (g_file_test(acpi_path, G_FILE_TEST_EXISTS)) {
- GDir *acpi;
-
- if ((acpi = g_dir_open(acpi_path, 0, NULL))) {
- const gchar *entry;
-
- while ((entry = g_dir_read_name(acpi))) {
- gchar *path = g_strdup_printf("%s/%s/info", acpi_path, entry);
- FILE *f;
- gchar buffer[256];
- gdouble charge_rate = 1.0;
-
- f = fopen(path, "r");
- g_free(path);
-
- if (!f)
- goto cleanup;
-
- while (fgets(buffer, 256, f)) {
- gchar **tmp = g_strsplit(buffer, ":", 2);
-
- GET_STR("present", present);
- GET_STR("design capacity", capacity);
- GET_STR("battery technology", technology);
- GET_STR("design voltage", voltage);
- GET_STR("model number", model);
- GET_STR("serial number", serial);
- GET_STR("battery type", type);
- GET_STR("OEM info", manufacturer);
-
- g_strfreev(tmp);
- }
- fclose(f);
-
- path = g_strdup_printf("%s/%s/state", acpi_path, entry);
- f = fopen(path, "r");
- g_free(path);
-
- if (!f)
- goto cleanup;
-
- while (fgets(buffer, 256, f)) {
- gchar **tmp = g_strsplit(buffer, ":", 2);
-
- GET_STR("charging state", state);
- GET_STR("present rate", rate);
- GET_STR("remaining capacity", remaining);
-
- g_strfreev(tmp);
- }
-
- fclose(f);
-
- const gchar *url = vendor_get_url(manufacturer);
- if (url) {
- char *tmp = g_strdup_printf("%s (%s)", vendor_get_name(manufacturer), url);
- g_free(manufacturer);
- manufacturer = tmp;
- }
-
- if (g_str_equal(present, "yes")) {
- charge_rate = atof(remaining) / atof(capacity);
-
- battery_list = h_strdup_cprintf("\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",
- battery_list,
- entry,
- state, rate,
- remaining, capacity, charge_rate * 100.0,
- technology, type,
- manufacturer,
- model,
- serial);
- }
-
- cleanup:
- g_free(present);
- g_free(capacity);
- g_free(technology);
- g_free(type);
- g_free(model);
- g_free(serial);
- g_free(state);
- g_free(remaining);
- g_free(rate);
- g_free(manufacturer);
-
- present = capacity = technology = type = \
- model = serial = state = remaining = rate = NULL;
- }
-
- g_dir_close(acpi);
- }
- }
-
- g_free(acpi_path);
-}
-
-static void
-__scan_battery_apm(void)
-{
- FILE *procapm;
- static char *sremaining = NULL, *stotal = NULL;
- static unsigned int last_time = 0;
- static int percentage = 0;
- const char *ac_status[] = { "Battery",
- "AC Power",
- "Charging" };
- int ac_bat;
- char apm_bios_ver[16], apm_drv_ver[16];
- char trash[10];
-
- if ((procapm = fopen("/proc/apm", "r"))) {
- int old_percentage = percentage;
-
- (void)fscanf(procapm, "%s %s %s 0x%x %s %s %d%%",
- apm_drv_ver, apm_bios_ver, trash,
- &ac_bat, trash, trash, &percentage);
- fclose(procapm);
-
- if (last_time == 0) {
- last_time = time(NULL);
- sremaining = stotal = NULL;
- }
-
- if (old_percentage - percentage > 0) {
- if (sremaining && stotal) {
- g_free(sremaining);
- g_free(stotal);
- }
-
- int secs_remaining = (time(NULL) - last_time) * percentage /
- (old_percentage - percentage);
- sremaining = seconds_to_string(secs_remaining);
- stotal = seconds_to_string((secs_remaining * 100) / percentage);
-
- last_time = time(NULL);
- }
- } else {
- return;
- }
-
- if (stotal && sremaining) {
- battery_list = h_strdup_cprintf("\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",
- battery_list,
- percentage,
- sremaining, stotal,
- ac_status[ac_bat],
- apm_drv_ver, apm_bios_ver);
- } else {
- battery_list = h_strdup_cprintf("\n[Battery (APM)]\n"
- "Charge=%d%%\n"
- "Using=%s\n"
- "APM driver version=%s\n"
- "APM BIOS version=%s\n",
- battery_list,
- percentage,
- ac_status[ac_bat],
- apm_drv_ver, apm_bios_ver);
-
- }
-}
-
-static void
-__scan_battery(void)
-{
- if (battery_list) {
- g_free(battery_list);
- }
- battery_list = g_strdup("");
-
- __scan_battery_acpi();
- __scan_battery_apm();
- __scan_battery_apcupsd();
-
- if (*battery_list == '\0') {
- g_free(battery_list);
-
- battery_list = g_strdup("[No batteries]\n"
- "No batteries found on this system=\n");
- }
-}
diff --git a/hardinfo2/arch/linux/common/boots.h b/hardinfo2/arch/linux/common/boots.h
deleted file mode 100644
index 8a3c11fa..00000000
--- a/hardinfo2/arch/linux/common/boots.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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
- */
-
-void
-scan_boots_real(void)
-{
- FILE *last;
- char buffer[256];
-
- scan_os(FALSE);
-
- if (!computer->os->boots)
- computer->os->boots = g_strdup("[Boots]\n");
- 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) == ' ') {
- strcpy(buf, buf + 1);
-
- buf--;
- } else {
- buf++;
- }
- }
-
- 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]);
- g_strfreev(tmp);
- }
- }
-
- pclose(last);
- }
-}
diff --git a/hardinfo2/arch/linux/common/devmemory.h b/hardinfo2/arch/linux/common/devmemory.h
deleted file mode 100644
index e3921cdd..00000000
--- a/hardinfo2/arch/linux/common/devmemory.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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
- */
-
-static GHashTable *memlabels;
-
-static void __scan_memory()
-{
- gchar **keys, *tmp;
- 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 */
- gchar *os_kernel = module_call_method("computer::getOSKernel");
- offset = strstr(os_kernel, "Linux 2.4") ? 3 : 0;
- g_free(os_kernel);
- }
-
- 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[1]);
-
- if ((tmp = g_hash_table_lookup(memlabels, newkeys[0]))) {
- g_free(newkeys[0]);
- newkeys[0] = g_strdup(tmp);
- }
-
- g_hash_table_replace(moreinfo, g_strdup(newkeys[0]), g_strdup(newkeys[1]));
-
- tmp = g_strconcat(meminfo, newkeys[0], "=", newkeys[1], "\n", NULL);
- g_free(meminfo);
- meminfo = tmp;
-
- tmp = g_strconcat(lginterval,
- "UpdateInterval$", newkeys[0], "=1000\n", NULL);
- g_free(lginterval);
- lginterval = tmp;
-
- g_strfreev(newkeys);
- }
- g_strfreev(keys);
-}
-
-static void __init_memory_labels(void)
-{
- static struct {
- char *proc_label;
- char *real_label;
- } proc2real[] = {
- { "MemTotal", "Total Memory" },
- { "MemFree", "Free Memory" },
- { "SwapCached", "Cached Swap" },
- { "HighTotal", "High Memory" },
- { "HighFree", "Free High Memory" },
- { "LowTotal", "Low Memory" },
- { "LowFree", "Free Low Memory" },
- { "SwapTotal", "Virtual Memory" },
- { "SwapFree", "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/hardinfo2/arch/linux/common/dmi.h b/hardinfo2/arch/linux/common/dmi.h
deleted file mode 100644
index 6d35b25a..00000000
--- a/hardinfo2/arch/linux/common/dmi.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * 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
- */
-/*
- * DMI support based on patch by Stewart Adam <s.adam@diffingo.com>
- */
-#include <unistd.h>
-#include <sys/types.h>
-
-typedef struct _DMIInfo DMIInfo;
-
-struct _DMIInfo {
- const gchar *name;
- const gchar *file; /* for sysfs */
- const gchar *param; /* for dmidecode */
-};
-
-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" },
- { "$Board", NULL, NULL },
- { "Name", "/sys/class/dmi/id/board_name", "baseboard-product-name" },
- { "Vendor", "/sys/class/dmi/id/board_vendor", "baseboard-manufacturer" },
-};
-
-static gchar *dmi_info = NULL;
-
-gboolean dmi_get_info_dmidecode()
-{
- FILE *dmi_pipe;
- gchar buffer[256];
- DMIInfo *info;
- gboolean dmi_failed = 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) == '$') {
- dmi_info = h_strdup_cprintf("[%s]\n", dmi_info,
- (info->name) + 1);
- } else {
- gchar *temp;
-
- if (!info->param)
- continue;
-
- temp = g_strconcat("dmidecode -s ", info->param, NULL);
- if ((dmi_pipe = popen(temp, "r"))) {
- g_free(temp);
-
- (void)fgets(buffer, 256, dmi_pipe);
- if (pclose(dmi_pipe)) {
- dmi_failed = TRUE;
- break;
- }
-
- const gchar *url = vendor_get_url(buffer);
- if (url) {
- const gchar *vendor = vendor_get_name(buffer);
- if (g_strstr_len(vendor, -1, g_strstrip(buffer)) ||
- g_strstr_len(g_strstrip(buffer), -1, vendor)) {
- dmi_info = h_strdup_cprintf("%s=%s (%s)\n",
- dmi_info,
- info->name,
- g_strstrip(buffer),
- url);
- } else {
- dmi_info = h_strdup_cprintf("%s=%s (%s, %s)\n",
- dmi_info,
- info->name,
- g_strstrip(buffer),
- vendor, url);
- }
- } else {
- dmi_info = h_strdup_cprintf("%s=%s\n",
- dmi_info,
- info->name,
- buffer);
- }
- } else {
- g_free(temp);
- dmi_failed = TRUE;
- break;
- }
- }
- }
-
- if (dmi_failed) {
- g_free(dmi_info);
- dmi_info = NULL;
- }
-
- return !dmi_failed;
-}
-
-gboolean dmi_get_info_sys()
-{
- FILE *dmi_file;
- gchar buffer[256];
- DMIInfo *info;
- gboolean dmi_failed = 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) == '$') {
- dmi_info = h_strdup_cprintf("[%s]\n", dmi_info,
- (info->name) + 1);
- } else {
- if (!info->file)
- continue;
-
- if ((dmi_file = fopen(info->file, "r"))) {
- (void)fgets(buffer, 256, dmi_file);
- fclose(dmi_file);
-
- const gchar *url = vendor_get_url(buffer);
- if (url) {
- const gchar *vendor = vendor_get_name(buffer);
- if (g_strstr_len(vendor, -1, g_strstrip(buffer)) ||
- g_strstr_len(g_strstrip(buffer), -1, vendor)) {
- dmi_info = h_strdup_cprintf("%s=%s (%s)\n",
- dmi_info,
- info->name,
- g_strstrip(buffer),
- url);
- } else {
- dmi_info = h_strdup_cprintf("%s=%s (%s, %s)\n",
- dmi_info,
- info->name,
- g_strstrip(buffer),
- vendor, url);
- }
- } else {
- dmi_info = h_strdup_cprintf("%s=%s\n",
- dmi_info,
- info->name,
- g_strstrip(buffer));
- }
- } else {
- dmi_failed = TRUE;
- break;
- }
- }
- }
-
- if (dmi_failed) {
- g_free(dmi_info);
- dmi_info = NULL;
- }
-
- return !dmi_failed;
-}
-
-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"
- "Please try running HardInfo as root.=\n");
- }
-}
diff --git a/hardinfo2/arch/linux/common/filesystem.h b/hardinfo2/arch/linux/common/filesystem.h
deleted file mode 100644
index 48cbbd51..00000000
--- a/hardinfo2/arch/linux/common/filesystem.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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
- *
- * 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.
- */
-#include <sys/vfs.h>
-
-static gchar *fs_list = NULL;
-
-static gboolean
-remove_filesystem_entries(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "FS");
-}
-
-static void
-scan_filesystems(void)
-{
- FILE *mtab;
- gchar buf[1024];
- struct statfs sfs;
- int count = 0;
-
- g_free(fs_list);
- fs_list = g_strdup("");
- g_hash_table_foreach_remove(moreinfo, remove_filesystem_entries, NULL);
-
- mtab = fopen("/etc/mtab", "r");
- if (!mtab)
- 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;
- if ((strhash = g_hash_table_lookup(moreinfo, tmp[0]))) {
- g_hash_table_remove(moreinfo, tmp[0]);
- g_free(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);
- g_hash_table_insert(moreinfo, g_strdup_printf("FS%d", ++count), strhash);
-
- 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/hardinfo2/arch/linux/common/inputdevices.h b/hardinfo2/arch/linux/common/inputdevices.h
deleted file mode 100644
index 20e4289c..00000000
--- a/hardinfo2/arch/linux/common/inputdevices.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * 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
- */
-
-static gchar *input_icons = NULL;
-
-static gboolean
-remove_input_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "INP");
-}
-
-static struct {
- char *name;
- char *icon;
-} input_devices[] = {
- { "Keyboard", "keyboard.png" },
- { "Joystick", "joystick.png" },
- { "Mouse", "mouse.png" },
- { "Speaker", "audio.png" },
- { "Unknown", "module.png" },
-};
-
-void
-__scan_input_devices(void)
-{
- FILE *dev;
- gchar buffer[128];
- gchar *tmp, *name = NULL, *phys = NULL;
- gint bus, vendor, product, version;
- int d = 0, n = 0;
-
- dev = fopen("/proc/bus/input/devices", "r");
- if (!dev)
- return;
-
- if (input_list) {
- g_hash_table_foreach_remove(moreinfo, remove_input_devices, NULL);
- g_free(input_list);
- g_free(input_icons);
- }
- input_list = g_strdup("");
- input_icons = g_strdup("");
-
- while (fgets(buffer, 128, dev)) {
- tmp = buffer;
-
- switch (*tmp) {
- case 'N':
- name = g_strdup(tmp + strlen("N: Name="));
- remove_quotes(name);
- break;
- case 'P':
- phys = g_strdup(tmp + strlen("P: Phys="));
- break;
- case 'I':
- sscanf(tmp, "I: Bus=%x Vendor=%x Product=%x Version=%x",
- &bus, &vendor, &product, &version);
- break;
- case 'H':
- if (strstr(tmp, "kbd"))
- d = 0; //INPUT_KEYBOARD;
- else if (strstr(tmp, "js"))
- d = 1; //INPUT_JOYSTICK;
- else if (strstr(tmp, "mouse"))
- d = 2; //INPUT_MOUSE;
- else
- d = 4; //INPUT_UNKNOWN;
- break;
- case '\n':
- if (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[1] != 0) {
- strhash = h_strdup_cprintf("Connected to=%s\n",
- strhash, phys);
- }
-
- if (strstr(phys,"ir")) {
- strhash = h_strdup_cprintf("InfraRed port=yes\n",
- strhash);
- }
-
- g_hash_table_insert(moreinfo, tmp, strhash);
-
- g_free(phys);
- g_free(name);
- }
- }
-
- fclose(dev);
-}
diff --git a/hardinfo2/arch/linux/common/loadavg.h b/hardinfo2/arch/linux/common/loadavg.h
deleted file mode 100644
index ce2d8775..00000000
--- a/hardinfo2/arch/linux/common/loadavg.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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
- */
-
-static LoadInfo *
-computer_get_loadinfo(void)
-{
- LoadInfo *li = g_new0(LoadInfo, 1);
- FILE *procloadavg;
-
- procloadavg = fopen("/proc/loadavg", "r");
- (void)fscanf(procloadavg, "%f %f %f", &(li->load1), &(li->load5),
- &(li->load15));
- fclose(procloadavg);
-
- return li;
-}
-
-static gchar *
-computer_get_formatted_loadavg()
-{
- LoadInfo *li;
- gchar *tmp;
-
- li = computer_get_loadinfo();
-
- tmp =
- g_strdup_printf("%.2f, %.2f, %.2f", li->load1, li->load5,
- li->load15);
-
- g_free(li);
- return tmp;
-}
diff --git a/hardinfo2/arch/linux/common/memory.h b/hardinfo2/arch/linux/common/memory.h
deleted file mode 100644
index c87359b9..00000000
--- a/hardinfo2/arch/linux/common/memory.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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
- */
-
-static MemoryInfo *
-computer_get_memory(void)
-{
- MemoryInfo *mi;
- FILE *procmem;
- gchar buffer[128];
-
- procmem = fopen("/proc/meminfo", "r");
- if (!procmem)
- 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);
- }
- fclose(procmem);
-
- mi->used = mi->total - mi->free;
-
- mi->total /= 1000;
- mi->cached /= 1000;
- mi->used /= 1000;
- mi->free /= 1000;
-
- mi->used -= mi->cached;
- mi->ratio = 1 - (gdouble) mi->used / mi->total;
-
- return mi;
-}
diff --git a/hardinfo2/arch/linux/common/modules.h b/hardinfo2/arch/linux/common/modules.h
deleted file mode 100644
index 78fb9de3..00000000
--- a/hardinfo2/arch/linux/common/modules.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * 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
- */
-
-#define GET_STR(field_name,ptr) \
- if (!ptr && strstr(tmp[0], field_name)) { \
- ptr = g_markup_escape_text(g_strstrip(tmp[1]), strlen(tmp[1])); \
- g_strfreev(tmp); \
- continue; \
- }
-
-static gboolean
-remove_module_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "MOD");
-}
-
-static GHashTable *_module_hash_table = NULL;
-
-static void
-scan_modules_do(void)
-{
- FILE *lsmod;
- gchar buffer[1024];
- gchar *lsmod_path;
-
- if (!_module_hash_table) {
- _module_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
- }
-
- if (module_list) {
- g_free(module_list);
- }
-
- module_list = NULL;
- g_hash_table_foreach_remove(moreinfo, remove_module_devices, NULL);
-
- lsmod_path = find_program("lsmod");
- lsmod = popen(lsmod_path, "r");
- if (!lsmod) {
- g_free(lsmod_path);
- return;
- }
-
- (void)fgets(buffer, 1024, lsmod); /* Discards the first line */
-
- while (fgets(buffer, 1024, lsmod)) {
- gchar *buf, *strmodule, *hashkey;
- gchar *author = NULL,
- *description = NULL,
- *license = NULL,
- *deps = NULL, *vermagic = NULL, *filename = NULL, modname[64];
- FILE *modi;
- glong memory;
-
- shell_status_pulse();
-
- buf = buffer;
-
- sscanf(buf, "%s %ld", modname, &memory);
-
- hashkey = g_strdup_printf("MOD%s", modname);
- buf = g_strdup_printf("/sbin/modinfo %s 2>/dev/null", modname);
-
- modi = popen(buf, "r");
- while (fgets(buffer, 1024, modi)) {
- gchar **tmp = g_strsplit(buffer, ":", 2);
-
- GET_STR("author", author);
- GET_STR("description", description);
- GET_STR("license", license);
- GET_STR("depends", deps);
- GET_STR("vermagic", vermagic);
- GET_STR("filename", filename);
-
- g_strfreev(tmp);
- }
- pclose(modi);
- g_free(buf);
-
- /* old modutils includes quotes in some strings; strip them */
- /*remove_quotes(modname);
- remove_quotes(description);
- remove_quotes(vermagic);
- remove_quotes(author);
- remove_quotes(license); */
-
- /* old modutils displays <none> when there's no value for a
- given field; this is not desirable in the module name
- display, so change it to an empty string */
- if (description && g_str_equal(description, "&lt;none&gt;")) {
- g_free(description);
- description = g_strdup("");
-
- g_hash_table_insert(_module_hash_table,
- g_strdup(modname),
- g_strdup_printf("Kernel module (%s)", modname));
- } else {
- g_hash_table_insert(_module_hash_table,
- g_strdup(modname),
- g_strdup(description));
- }
-
- /* append this module to the list of modules */
- module_list = h_strdup_cprintf("$%s$%s=%s\n",
- module_list,
- hashkey,
- 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);
- }
-
- g_hash_table_insert(moreinfo, hashkey, strmodule);
-
- g_free(license);
- g_free(description);
- g_free(author);
- g_free(vermagic);
- g_free(filename);
- }
- pclose(lsmod);
-
- g_free(lsmod_path);
-}
diff --git a/hardinfo2/arch/linux/common/net.h b/hardinfo2/arch/linux/common/net.h
deleted file mode 100644
index c3224321..00000000
--- a/hardinfo2/arch/linux/common/net.h
+++ /dev/null
@@ -1,448 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 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
- */
-/*
- * Wireless Extension Example
- * http://www.krugle.org/examples/p-OZYzuisV6gyQIaTu/iwconfig.c
- */
-static gchar *network_interfaces = NULL, *network_icons = NULL;
-
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <linux/sockios.h>
-
-#include <arpa/inet.h>
-
-#ifdef HAS_LINUX_WE
-#include <linux/if.h>
-#include <linux/wireless.h>
-#else
-#include <net/if.h>
-#endif /* HAS_LINUX_WE */
-
-typedef struct _NetInfo NetInfo;
-struct _NetInfo {
- char name[16];
- int mtu;
- unsigned char mac[8];
- char ip[16];
- char mask[16];
- char broadcast[16];
-
-#ifdef HAS_LINUX_WE
- 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;
- gboolean is_wireless;
-#endif
-};
-
-#ifdef HAS_LINUX_WE
-const gchar *wi_operation_modes[] = { "Auto", "Ad-Hoc", "Managed", "Master", "Repeater", "Secondary", "Unknown" };
-
-void get_wireless_info(int fd, NetInfo *netinfo)
-{
- FILE *wrls;
- char wbuf[256];
- struct iwreq wi_req;
- 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 (strstr(buf1, ".")) {
- sscanf(buf1, "%d %d. %d %d %d %d %d %d %d %d",
- &(netinfo->wi_status),
- &(netinfo->wi_quality_level),
- &(netinfo->wi_signal_level),
- &(netinfo->wi_noise_level),
- &trash, &trash, &trash, &trash, &trash, &trash);
- } else {
- sscanf(buf1, "%d %d %d %d %d %d %d %d %d %d",
- &(netinfo->wi_status),
- &(netinfo->wi_quality_level),
- &(netinfo->wi_signal_level),
- &(netinfo->wi_noise_level),
- &trash, &trash, &trash, &trash, &trash,
- &trash);
- }
-
- break;
- }
- }
- fclose(wrls);
- }
-
- 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 ((r = ioctl(fd, SIOCGIWESSID, &wi_req) < 0)) {
- strcpy(netinfo->wi_essid, "");
- } else {
- netinfo->wi_essid[wi_req.u.essid.length] = '\0';
- }
-
- /* obtain bit rate */
- if ((r = ioctl(fd, SIOCGIWRATE, &wi_req) < 0)) {
- netinfo->wi_rate = 0;
- } else {
- netinfo->wi_rate = wi_req.u.bitrate.value;
- }
-
- /* obtain operation mode */
- if ((r = ioctl(fd, SIOCGIWMODE, &wi_req) < 0)) {
- netinfo->wi_mode = 0;
- } else {
- if (wi_req.u.mode >= 0 && wi_req.u.mode < 6) {
- netinfo->wi_mode = wi_req.u.mode;
- } else {
- netinfo->wi_mode = 6;
- }
- }
-
-#if WIRELESS_EXT >= 10
- /* obtain txpower */
- if ((r = 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 /* HAS_LINUX_WE */
-
-void get_net_info(char *if_name, NetInfo * netinfo)
-{
- struct ifreq ifr;
- int fd;
-
- fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
-
- /* IPv4 */
- ifr.ifr_addr.sa_family = AF_INET;
- strcpy(netinfo->name, if_name);
-
- /* MTU */
- strcpy(ifr.ifr_name, if_name);
- if (ioctl(fd, SIOCGIFMTU, &ifr) < 0) {
- netinfo->mtu = 0;
- } else {
- netinfo->mtu = ifr.ifr_mtu;
- }
-
- /* HW Address */
- strcpy(ifr.ifr_name, if_name);
- if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) {
- memset(netinfo->mac, 0, 8);
- } else {
- 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;
- } else {
- sprintf(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;
- } else {
- sprintf(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;
- } else {
- sprintf(netinfo->broadcast, "%s",
- inet_ntoa(((struct sockaddr_in *) &ifr.ifr_addr)->
- sin_addr));
- }
-
-#ifdef HAS_LINUX_WE
- get_wireless_info(fd, netinfo);
-#endif
-
- shutdown(fd, 0);
- close(fd);
-}
-
-static struct {
- char *type;
- 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" },
- { NULL, "Unknown", "network" },
-};
-
-static void net_get_iface_type(gchar * name, gchar ** type, gchar ** icon, NetInfo *ni)
-{
- int i;
-
-#ifdef HAS_LINUX_WE
- if (ni->is_wireless) {
- *type = "Wireless";
- *icon = "wireless";
-
- return;
- }
-#endif
-
- for (i = 0; netdev2type[i].type; i++) {
- if (g_str_has_prefix(name, netdev2type[i].type))
- break;
- }
-
- *type = netdev2type[i].label;
- *icon = netdev2type[i].icon;
-}
-
-static gboolean
-remove_net_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "NET");
-}
-
-static void scan_net_interfaces_24(void)
-{
- FILE *proc_net;
- NetInfo ni;
- gchar buffer[256];
- gchar *devid, *detailed;
- gdouble recv_bytes;
- gdouble recv_errors;
- gdouble recv_packets;
-
- gdouble trans_bytes;
- gdouble trans_errors;
- 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");
- }
-
- return;
- }
-
- if (network_interfaces) {
- g_free(network_interfaces);
- }
-
- if (network_icons) {
- g_free(network_icons);
- }
-
- network_interfaces = g_strdup("[Network Interfaces]\n");
- network_icons = g_strdup("");
-
- proc_net = fopen("/proc/net/dev", "r");
- if (!proc_net)
- 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);
-
-#ifdef HAS_LINUX_WE
- 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));
- } else {
- 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 / %d\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);
- }
-#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");
- }
-
- g_hash_table_insert(moreinfo, devid, detailed);
- }
- }
- fclose(proc_net);
-}
-
-static void scan_net_interfaces(void)
-{
- /* FIXME: See if we're running Linux 2.6 and if /sys is mounted, then use
- that instead of /proc/net/dev */
-
- /* remove old devices from global device table */
- g_hash_table_foreach_remove(moreinfo, remove_net_devices, NULL);
-
- scan_net_interfaces_24();
-}
diff --git a/hardinfo2/arch/linux/common/nfs.h b/hardinfo2/arch/linux/common/nfs.h
deleted file mode 100644
index 894680db..00000000
--- a/hardinfo2/arch/linux/common/nfs.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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
- */
-
-static gchar *nfs_shares_list = NULL;
-void
-scan_nfs_shared_directories(void)
-{
- FILE *exports;
- gint count = 0;
- gchar buf[512];
-
- if (nfs_shares_list) {
- g_free(nfs_shares_list);
- }
-
- nfs_shares_list = g_strdup("");
-
- if ((exports = fopen("/etc/exports", "r"))) {
- while (fgets(buf, 512, exports)) {
- if (buf[0] != '/')
- continue;
-
- strend(buf, ' ');
- strend(buf, '\t');
-
- nfs_shares_list = h_strdup_cprintf("%s=\n",
- buf, nfs_shares_list);
- count++;
- }
-
- fclose(exports);
- }
-
- if (!count) {
- g_free(nfs_shares_list);
-
- nfs_shares_list = g_strdup("No NFS exports=\n");
- }
-}
-
diff --git a/hardinfo2/arch/linux/common/os.h b/hardinfo2/arch/linux/common/os.h
deleted file mode 100644
index 93d10f13..00000000
--- a/hardinfo2/arch/linux/common/os.h
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * 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
- */
-
-static gchar *
-get_libc_version(void)
-{
- FILE *libc;
- gchar buf[256], *tmp, *p;
-
- if (g_file_test("/lib/ld-uClibc.so.0", G_FILE_TEST_EXISTS)) {
- return g_strdup("uClibc Library");
- } else if (!g_file_test("/lib/libc.so.6", G_FILE_TEST_EXISTS)) {
- goto err;
- }
-
- libc = popen("/lib/libc.so.6", "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:
- return g_strdup("Unknown");
-}
-
-#include <gdk/gdkx.h>
-
-void
-detect_desktop_environment(OperatingSystem * os)
-{
- const gchar *tmp = g_getenv("GNOME_DESKTOP_SESSION_ID");
- FILE *version;
- char vers[16];
-
- 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:
- 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 {
- os->desktop = g_strdup_printf("Unknown (Window Manager: %s)",
- windowman);
- }
- } else {
- os->desktop = g_strdup("Unknown");
- }
- }
- }
-}
-
-static OperatingSystem *
-computer_get_os(void)
-{
- struct utsname utsbuf;
- OperatingSystem *os;
- int i;
-
- os = g_new0(OperatingSystem, 1);
-
- /* 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];
-
- release = popen("lsb_release -d", "r");
- if (release) {
- (void)fgets(buffer, 128, release);
- pclose(release);
-
- os->distro = buffer;
- os->distro = g_strdup(os->distro + strlen("Description:\t"));
- }
- }
-
- 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 %.2f", atof(os->distro) / 100.0);
- g_free(os->distro);
- os->distro = tmp;
- }
-
- os->distrocode = g_strdup(distro_db[i].codename);
-
- break;
- }
- }
-
- os->distro = g_strstrip(os->distro);
-
- /* Kernel and hostname info */
- uname(&utsbuf);
- os->kernel_version = g_strdup(utsbuf.version);
- 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->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);
-
- return os;
-}
diff --git a/hardinfo2/arch/linux/common/pci.h b/hardinfo2/arch/linux/common/pci.h
deleted file mode 100644
index f77215b0..00000000
--- a/hardinfo2/arch/linux/common/pci.h
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * 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
- */
-
-/*
- * TODO: This thing must be rewritten. We really should have a struct with all the
- * PCI stuff we'll present to the user, and hash them by the PCI ID
- * (domain:bus:device.function).
- * This way we'll have ways to better organize the output, instead of relying
- * on the order the information appears on lspci's output.
- * Also, the "Resources" thing might be better implemented (and we won't need
- * copies of information scattered everywhere like we do today).
- */
-
-GHashTable *_pci_devices = NULL;
-
-void
-__scan_pci(void)
-{
- FILE *lspci;
- 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);
- }
-
- buf = g_build_filename(g_get_home_dir(), ".hardinfo", "pci.ids", NULL);
- if (!g_file_test(buf, G_FILE_TEST_EXISTS)) {
- DEBUG("using system-provided PCI IDs");
- g_free(buf);
- if (!(lspci = popen(command_line, "r"))) {
- goto pci_error;
- }
- } 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);
- goto pci_error;
- } else {
- g_free(buf);
- }
- }
-
- while (fgets(buffer, 256, lspci)) {
- buf = g_strstrip(buffer);
-
- if (!strncmp(buf, "Flags", 5)) {
- gint irq = 0, freq = 0, latency = 0, i;
- gchar **list;
- gboolean bus_master;
-
- buf += 7;
-
- bus_master = FALSE;
-
- list = g_strsplit(buf, ", ", 10);
- for (i = 0; i <= 10; i++) {
- if (!list[i])
- break;
-
- if (!strncmp(list[i], "IRQ", 3))
- sscanf(list[i], "IRQ %d", &irq);
- else if (strstr(list[i], "Mhz"))
- sscanf(list[i], "%dMhz", &freq);
- else if (!strncmp(list[i], "bus master", 10))
- bus_master = TRUE;
- else if (!strncmp(list[i], "latency", 7))
- sscanf(list[i], "latency %d", &latency);
- }
- g_strfreev(list);
-
- if (irq)
- strdevice = h_strdup_cprintf("IRQ=%d\n", strdevice, irq);
- if (freq)
- strdevice = h_strdup_cprintf("Frequency=%dMHz\n", strdevice, freq);
- if (latency)
- strdevice = h_strdup_cprintf("Latency=%d\n", strdevice, latency);
-
- strdevice = h_strdup_cprintf("Bus Master=%s\n", strdevice, 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);
- } 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",
- strdevice,
- vendor_get_name(buf),
- oem_vendor_url);
- } else if (!strncmp(buf, "Capabilities", 12)
- && !strstr(buf, "only to root") &&
- !strstr(buf, "access denied")) {
- WALK_UNTIL(' ');
- WALK_UNTIL(']');
- buf++;
- strdevice = h_strdup_cprintf("Capability#%d=%s\n", strdevice, ++x, buf);
- } else if (!strncmp(buf, "Memory at", 9) && strstr(buf, "[size=")) {
- gint mem;
- gchar unit;
- gboolean prefetch;
- gboolean _32bit;
-
- prefetch = strstr(buf, "non-prefetchable") ? FALSE : TRUE;
- _32bit = strstr(buf, "32-bit") ? TRUE : FALSE;
-
- WALK_UNTIL('[');
- sscanf(buf, "[size=%d%c", &mem, &unit);
-
- strdevice = h_strdup_cprintf("Memory#%d=%d%cB (%s%s)\n",
- strdevice, ++x,
- mem,
- (unit == ']') ? ' ' : unit,
- _32bit ? "32-bit, " : "",
- prefetch ? "prefetchable" :
- "non-prefetchable");
-
- } else if (!strncmp(buf, "I/O ports at", 12)) {
- guint io_addr, io_size;
-
- 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,
- io_addr + io_size - 1);
- } else if ((buf[0] >= '0' && buf[0] <= '9') && (buf[4] == ':' || buf[2] == ':')) {
- gint bus, device, function, domain;
- gpointer start, end;
-
- if (strdevice != NULL && strhash != NULL) {
- g_hash_table_insert(moreinfo, strhash, strdevice);
- g_free(category);
- g_free(name);
- }
-
- if (buf[4] == ':') {
- sscanf(buf, "%x:%x:%x.%d", &domain, &bus, &device, &function);
- } else {
- /* lspci without domain field */
- sscanf(buf, "%x:%x.%x", &bus, &device, &function);
- domain = 0;
- }
-
- WALK_UNTIL(' ');
-
- start = buf;
-
- WALK_UNTIL(':');
- end = buf + 1;
- *buf = 0;
-
- buf = start + 1;
- category = g_strdup(buf);
-
- buf = end;
-
- if (strstr(category, "RAM memory")) icon = "mem";
- 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);
-
- const gchar *url = vendor_get_url(name);
- if (url) {
- strdevice = h_strdup_cprintf("Vendor=%s (%s)\n",
- strdevice,
- 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);
- } else if (strhash) {
- /* insert the last device */
- g_hash_table_insert(moreinfo, strhash, strdevice);
- g_free(category);
- g_free(name);
- }
-
- g_free(lspci_path);
- g_free(command_line);
-}
diff --git a/hardinfo2/arch/linux/common/resources.h b/hardinfo2/arch/linux/common/resources.h
deleted file mode 100644
index e266e375..00000000
--- a/hardinfo2/arch/linux/common/resources.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 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
- */
-
-gchar *_resources = NULL;
-
-#if GLIB_CHECK_VERSION(2,14,0)
-static GRegex *_regex_pci = NULL,
- *_regex_module = NULL;
-
-static gchar *_resource_obtain_name(gchar *name)
-{
- gchar *temp;
-
- if (!_regex_pci && !_regex_module) {
- _regex_pci = g_regex_new("^[0-9a-fA-F]{4}:[0-9a-fA-F]{2}:"
- "[0-9a-fA-F]{2}\\.[0-9a-fA-F]{1}$",
- 0, 0, NULL);
- _regex_module = g_regex_new("^[0-9a-zA-Z\\_\\-]+$", 0, 0, NULL);
- }
-
- name = g_strstrip(name);
-
- if (g_regex_match(_regex_pci, name, 0, NULL)) {
- temp = module_call_method_param("devices::getPCIDeviceDescription", name);
- if (temp) {
- return g_strdup_printf("<b><small>PCI</small></b> %s", (gchar *)idle_free(temp));
- }
- } else if (g_regex_match(_regex_module, name, 0, NULL)) {
- temp = module_call_method_param("computer::getKernelModuleDescription", name);
- if (temp) {
- return g_strdup_printf("<b><small>Module</small></b> %s", (gchar *)idle_free(temp));
- }
- }
-
- return g_strdup(name);
-}
-#else
-static gchar *_resource_obtain_name(gchar *name)
-{
- return g_strdup(name);
-}
-#endif
-
-void scan_device_resources(gboolean reload)
-{
- SCAN_START();
- FILE *io;
- gchar buffer[256];
- gint i;
-
- struct {
- gchar *file;
- gchar *description;
- } resources[] = {
- { "/proc/ioports", "[I/O Ports]\n" },
- { "/proc/iomem", "[Memory]\n" },
- { "/proc/dma", "[DMA]\n" }
- };
-
- g_free(_resources);
- _resources = g_strdup("");
-
- for (i = 0; i < G_N_ELEMENTS(resources); i++) {
- if ((io = fopen(resources[i].file, "r"))) {
- _resources = h_strconcat(_resources, resources[i].description, NULL);
-
- while (fgets(buffer, 256, io)) {
- gchar **temp = g_strsplit(buffer, ":", 2);
- gchar *name = _resource_obtain_name(temp[1]);
-
- _resources = h_strdup_cprintf("<tt>%s</tt>=%s\n", _resources,
- temp[0], name);
-
- g_strfreev(temp);
- g_free(name);
- }
-
- fclose(io);
- }
- }
-
- SCAN_END();
-}
-
-gchar *callback_device_resources(void)
-{
- return g_strdup(_resources);
-}
diff --git a/hardinfo2/arch/linux/common/samba.h b/hardinfo2/arch/linux/common/samba.h
deleted file mode 100644
index 7d835612..00000000
--- a/hardinfo2/arch/linux/common/samba.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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
- */
-
-static gchar *smb_shares_list = NULL;
-
-void scan_samba_from_string(gchar *str, gsize length);
-void scan_samba_usershares(void);
-
-void
-scan_samba(void)
-{
- gchar *str;
- gsize length;
-
- if (smb_shares_list) {
- g_free(smb_shares_list);
- smb_shares_list = g_strdup("");
- }
-
- if (g_file_get_contents("/etc/samba/smb.conf",
- &str, &length, NULL)) {
- shell_status_update("Scanning SAMBA shares...");
- scan_samba_from_string(str, length);
- g_free(str);
- }
-
- scan_samba_usershares();
-}
-
-void
-scan_samba_usershares(void)
-{
- FILE *usershare_list;
-
- if ((usershare_list = popen("net usershare list", "r"))) {
- char buffer[512];
-
- shell_status_update("Scanning SAMBA user shares...");
-
- while (fgets(buffer, 512, usershare_list)) {
- gchar *usershare, *cmdline;
- gsize length;
-
- cmdline = g_strdup_printf("net usershare info '%s'",
- strend(buffer, '\n'));
- if (g_spawn_command_line_sync(cmdline,
- &usershare, NULL,
- NULL, NULL)) {
- length = strlen(usershare);
- scan_samba_from_string(usershare, length);
- g_free(usershare);
- }
-
- g_free(cmdline);
-
- shell_status_pulse();
- }
-
- pclose(usershare_list);
- }
-}
-
-void
-scan_samba_from_string(gchar *str, gsize length)
-{
- GKeyFile *keyfile;
- GError *error = NULL;
- gchar **groups;
- gint i = 0;
-
- keyfile = g_key_file_new();
-
- gchar *_smbconf = str;
- for (; *_smbconf; _smbconf++)
- if (*_smbconf == ';') *_smbconf = '\0';
-
- if (!g_key_file_load_from_data(keyfile, str, length, 0, &error)) {
- smb_shares_list = g_strdup("Cannot parse smb.conf=\n");
- if (error)
- g_error_free(error);
- goto cleanup;
- }
-
- groups = g_key_file_get_groups(keyfile, NULL);
- while (groups[i]) {
- shell_status_pulse();
-
- if (g_key_file_has_key(keyfile, groups[i], "path", NULL)) {
- gchar *path = g_key_file_get_string(keyfile, groups[i], "path", NULL);
- smb_shares_list = h_strdup_cprintf("%s=%s\n",
- smb_shares_list,
- groups[i], path);
- g_free(path);
- }
-
- i++;
- }
-
- g_strfreev(groups);
-
- cleanup:
- g_key_file_free(keyfile);
-}
-
diff --git a/hardinfo2/arch/linux/common/sensors.h b/hardinfo2/arch/linux/common/sensors.h
deleted file mode 100644
index abbe90b4..00000000
--- a/hardinfo2/arch/linux/common/sensors.h
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * 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
- */
-
-static gchar *sensors = NULL;
-static GHashTable *sensor_labels = NULL;
-static GHashTable *sensor_compute = NULL;
-
-static void read_sensor_labels(gchar * driver)
-{
- FILE *conf;
- gchar buf[256], *line, *p;
- gboolean lock = FALSE;
- gint i;
-
- 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);
-
- /* Try to open lm-sensors config file sensors3.conf */
- conf = fopen("/etc/sensors3.conf", "r");
-
- /* If it fails, try to open sensors.conf */
- if (!conf) conf = fopen("/etc/sensors.conf", "r");
-
- if (!conf) {
- /* Cannot open config file. */
- return;
- }
-
- 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;
- }
- }
- }
-
- fclose(conf);
-}
-
-static gchar *get_sensor_label(gchar * sensor)
-{
- gchar *ret;
-
- ret = g_hash_table_lookup(sensor_labels, sensor);
- if (!ret)
- ret = g_strdup(sensor);
- else
- ret = g_strdup(ret);
-
- return ret;
-}
-
-static float adjust_sensor(gchar * name, float value)
-{
- GSList *postfix;
-
- postfix = g_hash_table_lookup(sensor_compute, name);
- if (!postfix)
- return value;
-
- return math_postfix_eval(postfix, value);
-}
-
-
-static void read_sensors_hwmon(void)
-{
- int hwmon, count;
- gchar *path_hwmon, *path_sensor, *tmp, *driver, *name, *mon;
- hwmon = 0;
-
- path_hwmon = g_strdup_printf("/sys/class/hwmon/hwmon%d/device/", hwmon);
- while (g_file_test(path_hwmon, G_FILE_TEST_EXISTS)) {
- tmp = g_strdup_printf("%sdriver", path_hwmon);
- driver = g_file_read_link(tmp, NULL);
- g_free(tmp);
-
- tmp = g_path_get_basename(driver);
- g_free(driver);
- driver = tmp;
-
- if (!sensor_labels) {
- read_sensor_labels(driver);
- }
-
- sensors = g_strconcat(sensors, "[Cooling Fans]\n", NULL);
- for (count = 1;; count++) {
- path_sensor =
- g_strdup_printf("%sfan%d_input", path_hwmon, count);
- if (!g_file_get_contents(path_sensor, &tmp, NULL, NULL)) {
- g_free(path_sensor);
- break;
- }
-
- mon = g_strdup_printf("fan%d", count);
- name = get_sensor_label(mon);
- if (!g_str_equal(name, "ignore")) {
- sensors = h_strdup_cprintf("%s=%.0fRPM\n",
- sensors, name,
- adjust_sensor(mon, atof(tmp)));
- }
-
- g_free(name);
- g_free(mon);
- g_free(tmp);
- g_free(path_sensor);
- }
-
- sensors = g_strconcat(sensors, "[Temperatures]\n", NULL);
- for (count = 1;; count++) {
- path_sensor =
- g_strdup_printf("%stemp%d_input", path_hwmon, count);
- if (!g_file_get_contents(path_sensor, &tmp, NULL, NULL)) {
- g_free(path_sensor);
- break;
- }
-
- mon = g_strdup_printf("temp%d", count);
- name = get_sensor_label(mon);
- if (!g_str_equal(name, "ignore")) {
- sensors = h_strdup_cprintf("%s=%.2f\302\260C\n",
- sensors, name,
- adjust_sensor(mon,
- atof(tmp) /
- 1000.0));
- }
-
- g_free(tmp);
- g_free(name);
- g_free(path_sensor);
- g_free(mon);
- }
-
- sensors = g_strconcat(sensors, "[Voltage Values]\n", NULL);
- for (count = 0;; count++) {
- path_sensor =
- g_strdup_printf("%sin%d_input", path_hwmon, count);
- if (!g_file_get_contents(path_sensor, &tmp, NULL, NULL)) {
- g_free(path_sensor);
- break;
- }
-
-
- mon = g_strdup_printf("in%d", count);
- name = get_sensor_label(mon);
- if (!g_str_equal(name, "ignore")) {
- sensors = h_strdup_cprintf("%s=%.3fV\n",
- sensors, name,
- adjust_sensor(mon,
- atof(tmp) /
- 1000.0));
- }
-
- g_free(tmp);
- g_free(mon);
- g_free(name);
- g_free(path_sensor);
- }
-
- g_free(path_hwmon);
- g_free(driver);
- path_hwmon =
- g_strdup_printf("/sys/class/hwmon/hwmon%d/device/", ++hwmon);
- }
-
- g_free(path_hwmon);
-
-}
-
-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;
-
- if (g_file_get_contents(path, &contents, NULL, NULL)) {
- int temperature;
-
- sscanf(contents, "temperature: %d C", &temperature);
-
- temp = h_strdup_cprintf("\n%s=%d\302\260C\n",
- temp, entry, temperature);
-
- g_free(contents);
- }
- }
-
- if (*temp != '\0')
- sensors =
- h_strdup_cprintf("\n[ACPI Thermal Zone]\n%s",
- sensors, temp);
-
- g_dir_close(tz);
- }
- }
-
-}
-
-static void read_sensors_omnibook(void)
-{
- const gchar *path_ob = "/proc/omnibook/temperature";
- gchar *contents;
-
- if (g_file_get_contents(path_ob, &contents, NULL, NULL)) {
- int temperature;
-
- sscanf(contents, "CPU temperature: %d C", &temperature);
-
- sensors = h_strdup_cprintf("\n[Omnibook]\n"
- "CPU temperature=%d\302\260C\n",
- sensors, temperature);
-
- g_free(contents);
- }
-}
-
-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;
-
- if (old)
- 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);
- }
-
- g_strfreev(disks);
- }
- } else {
- g_free(old);
- old = NULL;
- }
-
- if (old) {
- sensors = g_strconcat(sensors, "\n", old, NULL);
- }
-}
-
-static void __scan_sensors(void)
-{
- if (sensors)
- g_free(sensors);
-
- sensors = g_strdup("");
-
- read_sensors_hwmon();
- read_sensors_acpi();
- read_sensors_omnibook();
- read_sensors_hddtemp();
-
- /* FIXME: Add support for ibm acpi and more sensors */
-}
diff --git a/hardinfo2/arch/linux/common/storage.h b/hardinfo2/arch/linux/common/storage.h
deleted file mode 100644
index ebf9eba1..00000000
--- a/hardinfo2/arch/linux/common/storage.h
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * 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
- */
-
-static gchar *storage_icons = NULL;
-
-static gboolean
-remove_scsi_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "SCSI");
-}
-
-/* SCSI support by Pascal F.Martin <pascalmartin@earthlink.net> */
-void
-__scan_scsi_devices(void)
-{
- FILE *proc_scsi;
- gchar buffer[256], *buf;
- gint n = 0;
- gint scsi_controller;
- gint scsi_channel;
- gint scsi_id;
- gint scsi_lun;
- gchar *vendor = NULL, *revision = NULL, *model = NULL;
- gchar *scsi_storage_list;
-
- /* remove old devices from global device table */
- g_hash_table_foreach_remove(moreinfo, remove_scsi_devices, NULL);
-
- if (!g_file_test("/proc/scsi/scsi", G_FILE_TEST_EXISTS))
- return;
-
- scsi_storage_list = g_strdup("\n[SCSI Disks]\n");
-
- if ((proc_scsi = fopen("/proc/scsi/scsi", "r"))) {
- while (fgets(buffer, 256, proc_scsi)) {
- buf = g_strstrip(buffer);
- if (!strncmp(buf, "Host: scsi", 10)) {
- sscanf(buf,
- "Host: scsi%d Channel: %d Id: %d Lun: %d",
- &scsi_controller, &scsi_channel, &scsi_id, &scsi_lun);
-
- n++;
- } else if (!strncmp(buf, "Vendor: ", 8)) {
- buf[17] = '\0';
- buf[41] = '\0';
- buf[53] = '\0';
-
- vendor = g_strdup(g_strstrip(buf + 8));
- model = g_strdup_printf("%s %s", vendor, g_strstrip(buf + 24));
- revision = g_strdup(g_strstrip(buf + 46));
- } else if (!strncmp(buf, "Type: ", 8)) {
- char *p;
- gchar *type = NULL, *icon = NULL;
-
- if (!(p = strstr(buf, "ANSI SCSI revision"))) {
- p = strstr(buf, "ANSI SCSI revision");
- }
-
- if (p != NULL) {
- while (*(--p) == ' ');
- *(++p) = 0;
-
- static struct {
- char *type;
- char *label;
- char *icon;
- } type2icon[] = {
- { "Direct-Access", "Disk", "hdd"},
- { "Sequential-Access", "Tape", "tape"},
- { "Printer", "Printer", "lpr"},
- { "WORM", "CD-ROM", "cdrom"},
- { "CD-ROM", "CD-ROM", "cdrom"},
- { "Scanner", "Scanner", "scanner"},
- { "Flash Disk", "USB Flash Disk", "usbfldisk" },
- { NULL, "Generic", "scsi"}
- };
- int i;
-
- if (strstr(model, "Flash Disk")) {
- type = "Flash Disk";
- icon = "usbfldisk";
- } else {
- for (i = 0; type2icon[i].type != NULL; i++)
- if (g_str_equal(buf + 8, type2icon[i].type))
- break;
-
- type = type2icon[i].label;
- icon = type2icon[i].icon;
- }
- }
-
- gchar *devid = g_strdup_printf("SCSI%d", n);
- scsi_storage_list = h_strdup_cprintf("$%s$%s=\n", scsi_storage_list, devid, model);
- storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid, model, icon);
-
- gchar *strhash = g_strdup_printf("[Device Information]\n"
- "Model=%s\n", model);
-
- const gchar *url = vendor_get_url(model);
- if (url) {
- strhash = h_strdup_cprintf("Vendor=%s (%s)\n",
- strhash,
- vendor_get_name(model),
- url);
- } else {
- strhash = h_strdup_cprintf("Vendor=%s\n",
- strhash,
- vendor_get_name(model));
- }
-
- strhash = h_strdup_cprintf("Type=%s\n"
- "Revision=%s\n"
- "[SCSI Controller]\n"
- "Controller=scsi%d\n"
- "Channel=%d\n"
- "ID=%d\n" "LUN=%d\n",
- strhash,
- type,
- revision,
- scsi_controller,
- scsi_channel,
- scsi_id,
- scsi_lun);
- g_hash_table_insert(moreinfo, devid, strhash);
-
- g_free(model);
- g_free(revision);
- g_free(vendor);
- }
- }
- fclose(proc_scsi);
- }
-
- if (n) {
- storage_list = h_strconcat(storage_list, scsi_storage_list, NULL);
- g_free(scsi_storage_list);
- }
-}
-
-static gboolean
-remove_ide_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "IDE");
-}
-
-void
-__scan_ide_devices(void)
-{
- FILE *proc_ide;
- gchar *device, iface, *model, *media, *pgeometry = NULL, *lgeometry =
- NULL;
- gint n = 0, i = 0, cache, nn = 0;
- gchar *capab = NULL, *speed = NULL, *driver = NULL, *ide_storage_list;
-
- /* remove old devices from global device table */
- g_hash_table_foreach_remove(moreinfo, remove_ide_devices, NULL);
-
- ide_storage_list = g_strdup("\n[IDE Disks]\n");
-
- iface = 'a';
- for (i = 0; i <= 16; i++) {
- device = g_strdup_printf("/proc/ide/hd%c/model", iface);
- if (g_file_test(device, G_FILE_TEST_EXISTS)) {
- gchar buf[128];
-
- cache = 0;
-
- proc_ide = fopen(device, "r");
- (void)fgets(buf, 128, proc_ide);
- fclose(proc_ide);
-
- buf[strlen(buf) - 1] = 0;
-
- model = g_strdup(buf);
-
- g_free(device);
-
- device = g_strdup_printf("/proc/ide/hd%c/media", iface);
- proc_ide = fopen(device, "r");
- (void)fgets(buf, 128, proc_ide);
- fclose(proc_ide);
- buf[strlen(buf) - 1] = 0;
-
- media = g_strdup(buf);
- if (g_str_equal(media, "cdrom")) {
- /* obtain cd-rom drive information from cdrecord */
- GTimer *timer;
- gchar *tmp = g_strdup_printf("cdrecord dev=/dev/hd%c -prcap 2>/dev/stdout", iface);
- FILE *prcap;
-
- if ((prcap = popen(tmp, "r"))) {
- /* we need a timeout so cdrecord does not try to get information on cd drives
- with inserted media, which is not possible currently. half second should be
- enough. */
- timer = g_timer_new();
- g_timer_start(timer);
-
- while (fgets(buf, 128, prcap) && g_timer_elapsed(timer, NULL) < 0.5) {
- if (g_str_has_prefix(buf, " Does")) {
- if (g_str_has_suffix(buf, "media\n") && !strstr(buf, "speed")) {
- gchar *media_type = g_strstrip(strstr(buf, "Does "));
- gchar **ttmp = g_strsplit(media_type, " ", 0);
-
- capab = h_strdup_cprintf("\nCan %s#%d=%s\n",
- capab,
- ttmp[1], ++nn, ttmp[2]);
-
- g_strfreev(ttmp);
- } else if (strstr(buf, "Buffer-Underrun-Free")) {
- capab = h_strdup_cprintf("\nSupports BurnProof=%s\n",
- capab,
- strstr(buf, "Does not") ? "No" : "Yes");
- } else if (strstr(buf, "multi-session")) {
- capab = h_strdup_cprintf("\nCan read multi-session CDs=%s\n",
- capab,
- strstr(buf, "Does not") ? "No" : "Yes");
- } else if (strstr(buf, "audio CDs")) {
- capab = h_strdup_cprintf("\nCan play audio CDs=%s\n",
- capab,
- strstr(buf, "Does not") ? "No" : "Yes");
- } else if (strstr(buf, "PREVENT/ALLOW")) {
- capab = h_strdup_cprintf("\nCan lock media=%s\n",
- capab,
- strstr(buf, "Does not") ? "No" : "Yes");
- }
- } else if ((strstr(buf, "read") || strstr(buf, "write")) && strstr(buf, "kB/s")) {
- speed = g_strconcat(speed ? speed : "",
- strreplacechr(g_strstrip(buf), ":", '='),
- "\n", NULL);
- } else if (strstr(buf, "Device seems to be")) {
- driver = g_strdup_printf("Driver=%s\n", strchr(buf, ':') + 1);
- }
- }
-
- pclose(prcap);
- g_timer_destroy(timer);
- }
-
- g_free(tmp);
- }
- g_free(device);
-
- device = g_strdup_printf("/proc/ide/hd%c/cache", iface);
- if (g_file_test(device, G_FILE_TEST_EXISTS)) {
- proc_ide = fopen(device, "r");
- (void)fscanf(proc_ide, "%d", &cache);
- fclose(proc_ide);
- }
- g_free(device);
-
- device = g_strdup_printf("/proc/ide/hd%c/geometry", iface);
- if (g_file_test(device, G_FILE_TEST_EXISTS)) {
- gchar *tmp;
-
- proc_ide = fopen(device, "r");
-
- (void)fgets(buf, 64, proc_ide);
- for (tmp = buf; *tmp; tmp++) {
- if (*tmp >= '0' && *tmp <= '9')
- break;
- }
-
- pgeometry = g_strdup(g_strstrip(tmp));
-
- (void)fgets(buf, 64, proc_ide);
- for (tmp = buf; *tmp; tmp++) {
- if (*tmp >= '0' && *tmp <= '9')
- break;
- }
- lgeometry = g_strdup(g_strstrip(tmp));
-
- fclose(proc_ide);
- }
- g_free(device);
-
- n++;
-
- gchar *devid = g_strdup_printf("IDE%d", n);
-
- ide_storage_list = h_strdup_cprintf("$%s$%s=\n", ide_storage_list,
- devid, model);
- storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid,
- model, g_str_equal(media, "cdrom") ? \
- "cdrom" : "hdd");
-
- gchar *strhash = g_strdup_printf("[Device Information]\n"
- "Model=%s\n",
- model);
-
- const gchar *url = vendor_get_url(model);
-
- if (url) {
- strhash = h_strdup_cprintf("Vendor=%s (%s)\n",
- strhash,
- vendor_get_name(model),
- url);
- } else {
- strhash = h_strdup_cprintf("Vendor=%s\n",
- strhash,
- vendor_get_name(model));
- }
-
- strhash = h_strdup_cprintf("Device Name=hd%c\n"
- "Media=%s\n"
- "Cache=%dkb\n",
- strhash,
- iface,
- media,
- cache);
- if (driver) {
- strhash = h_strdup_cprintf("%s\n", strhash, driver);
-
- g_free(driver);
- driver = NULL;
- }
-
- if (pgeometry && lgeometry) {
- strhash = h_strdup_cprintf("[Geometry]\n"
- "Physical=%s\n"
- "Logical=%s\n",
- strhash, pgeometry, lgeometry);
-
- g_free(pgeometry);
- pgeometry = NULL;
- g_free(lgeometry);
- lgeometry = NULL;
- }
-
- if (capab) {
- strhash = h_strdup_cprintf("[Capabilities]\n%s", strhash, capab);
-
- g_free(capab);
- capab = NULL;
- }
-
- if (speed) {
- strhash = h_strdup_cprintf("[Speeds]\n%s", strhash, speed);
-
- g_free(speed);
- speed = NULL;
- }
-
- g_hash_table_insert(moreinfo, devid, strhash);
-
- g_free(model);
- model = g_strdup("");
- } else
- g_free(device);
-
- iface++;
- }
-
- if (n) {
- storage_list = h_strconcat(storage_list, ide_storage_list, NULL);
- g_free(ide_storage_list);
- }
-}
diff --git a/hardinfo2/arch/linux/common/uptime.h b/hardinfo2/arch/linux/common/uptime.h
deleted file mode 100644
index 8fdc3a27..00000000
--- a/hardinfo2/arch/linux/common/uptime.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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
- */
-
-static UptimeInfo *
-computer_get_uptime(void)
-{
- UptimeInfo *ui = g_new0(UptimeInfo, 1);
- FILE *procuptime;
- gulong minutes;
-
- if ((procuptime = fopen("/proc/uptime", "r")) != NULL) {
- (void)fscanf(procuptime, "%lu", &minutes);
- ui->minutes = minutes / 60;
- fclose(procuptime);
- } else {
- return NULL;
- }
-
- ui->hours = ui->minutes / 60;
- ui->minutes %= 60;
- ui->days = ui->hours / 24;
- ui->hours %= 24;
-
- return ui;
-}
-
-static gchar *
-computer_get_formatted_uptime()
-{
- UptimeInfo *ui;
- gchar *tmp;
-
- ui = computer_get_uptime();
-
- /* FIXME: Use ngettext */
-#define plural(x) ((x > 1) ? "s" : "")
-
- 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));
- }
- } 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));
- }
-
- g_free(ui);
- return tmp;
-}
diff --git a/hardinfo2/arch/linux/common/usb.h b/hardinfo2/arch/linux/common/usb.h
deleted file mode 100644
index 7c135d7c..00000000
--- a/hardinfo2/arch/linux/common/usb.h
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 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
- */
-/*
- * FIXME:
- * - listing with sysfs does not generate device hierarchy
- */
-static gboolean
-remove_usb_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "USB");
-}
-
-static gchar *usb_list = NULL;
-
-void __scan_usb_sysfs_add_device(gchar * endpoint, int n)
-{
- gchar *manufacturer, *product, *mxpwr, *tmp, *strhash;
- gint bus, classid, vendor, prodid;
- gfloat version, speed;
-
- classid = h_sysfs_read_int(endpoint, "bDeviceClass");
- vendor = h_sysfs_read_int(endpoint, "idVendor");
- prodid = h_sysfs_read_int(endpoint, "idProduct");
- bus = h_sysfs_read_int(endpoint, "busnum");
- speed = h_sysfs_read_float(endpoint, "speed");
- version = h_sysfs_read_float(endpoint, "version");
-
- if (!(mxpwr = h_sysfs_read_string(endpoint, "bMaxPower"))) {
- mxpwr = g_strdup("0 mA");
- }
-
- if (!(manufacturer = h_sysfs_read_string(endpoint, "manufacturer"))) {
- 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);
- }
- }
-
- 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;
- }
-
- 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);
-
- g_hash_table_insert(moreinfo, tmp, strhash);
-
- g_free(manufacturer);
- g_free(product);
- g_free(mxpwr);
-}
-
-gboolean __scan_usb_sysfs(void)
-{
- GDir *sysfs;
- gchar *filename;
- const gchar *sysfs_path = "/sys/class/usb_endpoint";
- gint usb_device_number = 0;
-
- if (!(sysfs = g_dir_open(sysfs_path, 0, NULL))) {
- return FALSE;
- }
-
- if (usb_list) {
- g_hash_table_foreach_remove(moreinfo, remove_usb_devices, NULL);
- g_free(usb_list);
- }
- usb_list = g_strdup("[USB Devices]\n");
-
- while ((filename = (gchar *) g_dir_read_name(sysfs))) {
- gchar *endpoint =
- g_build_filename(sysfs_path, filename, "device", NULL);
- gchar *temp;
-
- temp = g_build_filename(endpoint, "idVendor", NULL);
- if (g_file_test(temp, G_FILE_TEST_EXISTS)) {
- __scan_usb_sysfs_add_device(endpoint, ++usb_device_number);
- }
-
- g_free(temp);
- g_free(endpoint);
- }
-
- g_dir_close(sysfs);
-
- return usb_device_number > 0;
-}
-
-gboolean __scan_usb_procfs(void)
-{
- FILE *dev;
- gchar buffer[128];
- gchar *tmp, *manuf = NULL, *product = NULL, *mxpwr;
- gint bus, level, port, classid, trash;
- gint vendor, prodid;
- gfloat ver, rev, speed;
- int n = 0;
-
- dev = fopen("/proc/bus/usb/devices", "r");
- if (!dev)
- return 0;
-
- if (usb_list) {
- g_hash_table_foreach_remove(moreinfo, remove_usb_devices, NULL);
- g_free(usb_list);
- }
- usb_list = g_strdup("[USB Devices]\n");
-
- while (fgets(buffer, 128, dev)) {
- tmp = buffer;
-
- switch (*tmp) {
- case 'T':
- sscanf(tmp,
- "T: Bus=%d Lev=%d Prnt=%d Port=%d Cnt=%d Dev#=%d Spd=%f",
- &bus, &level, &trash, &port, &trash, &trash, &speed);
- break;
- case 'D':
- sscanf(tmp, "D: Ver=%f Cls=%x", &ver, &classid);
- break;
- case 'P':
- sscanf(tmp, "P: Vendor=%x ProdID=%x Rev=%f",
- &vendor, &prodid, &rev);
- break;
- case 'S':
- if (strstr(tmp, "Manufacturer=")) {
- manuf = g_strdup(strchr(tmp, '=') + 1);
- remove_linefeed(manuf);
- } else if (strstr(tmp, "Product=")) {
- product = g_strdup(strchr(tmp, '=') + 1);
- remove_linefeed(product);
- }
- break;
- case 'C':
- mxpwr = strstr(buffer, "MxPwr=") + 6;
-
- tmp = g_strdup_printf("USB%d", ++n);
-
- if (*product == '\0') {
- g_free(product);
- if (classid == 9) {
- product = g_strdup_printf("USB %.2f Hub", ver);
- } else {
- 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);
-
- g_hash_table_insert(moreinfo, tmp, strhash);
- }
-
- g_free(manuf);
- g_free(product);
- manuf = g_strdup("");
- product = g_strdup("");
- }
- }
-
- fclose(dev);
-
- return n > 0;
-}
-
-void __scan_usb_lsusb_add_device(char *buffer, FILE *lsusb, int usb_device_number)
-{
- gint bus, device, vendor_id, product_id;
- gchar *product, *vendor, *max_power, *tmp, *strhash;
-
- sscanf(buffer, "Bus %d Device %d: ID %x:%x",
- &bus, &device, &vendor_id, &product_id);
-
- while (fgets(buffer, 512, lsusb)) {
- if (g_str_has_prefix(buffer, " idVendor")) {
- vendor = g_strstrip(g_strdup(buffer + 28));
- } else if (g_str_has_prefix(buffer, " idProduct")) {
- product = g_strstrip(g_strdup(buffer + 28));
- } else if (g_str_has_prefix(buffer, " MaxPower")) {
- max_power = g_strstrip(g_strdup(buffer + 26));
- } else if (g_str_has_prefix(buffer, "\n")) {
- /* device separator */
- break;
- }
- }
-
- tmp = g_strdup_printf("USB%d", usb_device_number);
- 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"
- "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,
- vendor,
- max_power,
- 0.0f /* FIXME */,
- 0 /* FIXME */,
- vendor_id, product_id, bus);
-
- g_hash_table_insert(moreinfo, tmp, strhash);
-
- g_free(vendor);
- g_free(product);
- g_free(max_power);
-}
-
-gboolean __scan_usb_lsusb(void)
-{
- static gchar *lsusb_path = NULL;
- int usb_device_number = 0;
- FILE *lsusb;
- char buffer[512], *temp;
-
- if (!lsusb_path) {
- if (!(lsusb_path = find_program("lsusb"))) {
- DEBUG("lsusb not found");
-
- return FALSE;
- }
- }
-
- temp = g_strdup_printf("%s -v", lsusb_path);
- if (!(lsusb = popen(temp, "r"))) {
- DEBUG("cannot run %s", lsusb_path);
-
- g_free(temp);
- return FALSE;
- }
-
- g_free(temp);
-
- if (usb_list) {
- g_hash_table_foreach_remove(moreinfo, remove_usb_devices, NULL);
- g_free(usb_list);
- }
- usb_list = g_strdup("[USB Devices]\n");
-
- while (fgets(buffer, sizeof(buffer), lsusb)) {
- if (g_str_has_prefix(buffer, "Bus ")) {
- __scan_usb_lsusb_add_device(buffer, lsusb, ++usb_device_number);
- }
- }
-
- pclose(lsusb);
-
- return usb_device_number > 0;
-}
-
-void __scan_usb(void)
-{
- if (!__scan_usb_procfs()) {
- if (!__scan_usb_sysfs()) {
- __scan_usb_lsusb();
- }
- }
-}
diff --git a/hardinfo2/arch/linux/ia64/alsa.h b/hardinfo2/arch/linux/ia64/alsa.h
deleted file mode 120000
index ede8a364..00000000
--- a/hardinfo2/arch/linux/ia64/alsa.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/alsa.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/battery.h b/hardinfo2/arch/linux/ia64/battery.h
deleted file mode 120000
index ed7360e1..00000000
--- a/hardinfo2/arch/linux/ia64/battery.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/battery.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/boots.h b/hardinfo2/arch/linux/ia64/boots.h
deleted file mode 120000
index 97384500..00000000
--- a/hardinfo2/arch/linux/ia64/boots.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/boots.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/devmemory.h b/hardinfo2/arch/linux/ia64/devmemory.h
deleted file mode 120000
index f8a833e7..00000000
--- a/hardinfo2/arch/linux/ia64/devmemory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/devmemory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/filesystem.h b/hardinfo2/arch/linux/ia64/filesystem.h
deleted file mode 120000
index d884bcd0..00000000
--- a/hardinfo2/arch/linux/ia64/filesystem.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/filesystem.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/inputdevices.h b/hardinfo2/arch/linux/ia64/inputdevices.h
deleted file mode 120000
index 0f594231..00000000
--- a/hardinfo2/arch/linux/ia64/inputdevices.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/inputdevices.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/loadavg.h b/hardinfo2/arch/linux/ia64/loadavg.h
deleted file mode 120000
index 1f64e107..00000000
--- a/hardinfo2/arch/linux/ia64/loadavg.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/loadavg.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/memory.h b/hardinfo2/arch/linux/ia64/memory.h
deleted file mode 120000
index 64c6e0ed..00000000
--- a/hardinfo2/arch/linux/ia64/memory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/memory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/modules.h b/hardinfo2/arch/linux/ia64/modules.h
deleted file mode 120000
index d21c9a20..00000000
--- a/hardinfo2/arch/linux/ia64/modules.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/modules.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/net.h b/hardinfo2/arch/linux/ia64/net.h
deleted file mode 120000
index 488b5ae3..00000000
--- a/hardinfo2/arch/linux/ia64/net.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/net.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/nfs.h b/hardinfo2/arch/linux/ia64/nfs.h
deleted file mode 120000
index 73e0b8c9..00000000
--- a/hardinfo2/arch/linux/ia64/nfs.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/nfs.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/os.h b/hardinfo2/arch/linux/ia64/os.h
deleted file mode 120000
index 44051626..00000000
--- a/hardinfo2/arch/linux/ia64/os.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/os.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/pci.h b/hardinfo2/arch/linux/ia64/pci.h
deleted file mode 120000
index 8df04a0e..00000000
--- a/hardinfo2/arch/linux/ia64/pci.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/pci.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/processor.h b/hardinfo2/arch/linux/ia64/processor.h
deleted file mode 100644
index d3d41519..00000000
--- a/hardinfo2/arch/linux/ia64/processor.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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
- */
-
-struct _Processor {
- gchar *model_name;
- gchar *vendor_id;
- gfloat bogomips, cpu_mhz;
- gchar *strmodel;
-};
-
-static GSList *
-__scan_processors(void)
-{
- Processor *processor;
- FILE *cpuinfo;
- gchar buffer[128];
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- processor = g_new0(Processor, 1);
- 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("vendor", processor->model_name);
- get_str("arch", processor->vendor_id);
- get_str("family", processor->strmodel);
- get_float("BogoMIPS", processor->bogomips);
-
- }
- g_strfreev(tmp);
- }
-
- processor->cpu_mhz = 0.0f;
-
- fclose(cpuinfo);
-
- return g_slist_append(NULL, processor);
-}
-
-static gchar *
-processor_get_info(GSList *processors)
-{
- 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
- );
-}
diff --git a/hardinfo2/arch/linux/ia64/resources.h b/hardinfo2/arch/linux/ia64/resources.h
deleted file mode 120000
index 20a4815d..00000000
--- a/hardinfo2/arch/linux/ia64/resources.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/resources.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/samba.h b/hardinfo2/arch/linux/ia64/samba.h
deleted file mode 120000
index ebab9b11..00000000
--- a/hardinfo2/arch/linux/ia64/samba.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/samba.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/sensors.h b/hardinfo2/arch/linux/ia64/sensors.h
deleted file mode 120000
index 3b799377..00000000
--- a/hardinfo2/arch/linux/ia64/sensors.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/sensors.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/storage.h b/hardinfo2/arch/linux/ia64/storage.h
deleted file mode 120000
index 3ea886ce..00000000
--- a/hardinfo2/arch/linux/ia64/storage.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/storage.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/uptime.h b/hardinfo2/arch/linux/ia64/uptime.h
deleted file mode 120000
index a5bac980..00000000
--- a/hardinfo2/arch/linux/ia64/uptime.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/uptime.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ia64/usb.h b/hardinfo2/arch/linux/ia64/usb.h
deleted file mode 120000
index aee3046c..00000000
--- a/hardinfo2/arch/linux/ia64/usb.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/usb.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/alsa.h b/hardinfo2/arch/linux/m68k/alsa.h
deleted file mode 120000
index 0216845a..00000000
--- a/hardinfo2/arch/linux/m68k/alsa.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/alsa.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/battery.h b/hardinfo2/arch/linux/m68k/battery.h
deleted file mode 120000
index e4c794f2..00000000
--- a/hardinfo2/arch/linux/m68k/battery.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/battery.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/boots.h b/hardinfo2/arch/linux/m68k/boots.h
deleted file mode 120000
index 97384500..00000000
--- a/hardinfo2/arch/linux/m68k/boots.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/boots.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/devmemory.h b/hardinfo2/arch/linux/m68k/devmemory.h
deleted file mode 120000
index f8a833e7..00000000
--- a/hardinfo2/arch/linux/m68k/devmemory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/devmemory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/filesystem.h b/hardinfo2/arch/linux/m68k/filesystem.h
deleted file mode 120000
index 6b325b40..00000000
--- a/hardinfo2/arch/linux/m68k/filesystem.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/filesystem.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/inputdevices.h b/hardinfo2/arch/linux/m68k/inputdevices.h
deleted file mode 120000
index b9226a29..00000000
--- a/hardinfo2/arch/linux/m68k/inputdevices.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/inputdevices.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/loadavg.h b/hardinfo2/arch/linux/m68k/loadavg.h
deleted file mode 120000
index daaed6d5..00000000
--- a/hardinfo2/arch/linux/m68k/loadavg.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/loadavg.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/memory.h b/hardinfo2/arch/linux/m68k/memory.h
deleted file mode 120000
index 5ffc013e..00000000
--- a/hardinfo2/arch/linux/m68k/memory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/memory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/modules.h b/hardinfo2/arch/linux/m68k/modules.h
deleted file mode 120000
index 8ce5a808..00000000
--- a/hardinfo2/arch/linux/m68k/modules.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/modules.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/net.h b/hardinfo2/arch/linux/m68k/net.h
deleted file mode 120000
index 72d77b26..00000000
--- a/hardinfo2/arch/linux/m68k/net.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/net.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/nfs.h b/hardinfo2/arch/linux/m68k/nfs.h
deleted file mode 120000
index 3d1048da..00000000
--- a/hardinfo2/arch/linux/m68k/nfs.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/nfs.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/os.h b/hardinfo2/arch/linux/m68k/os.h
deleted file mode 120000
index ef547be5..00000000
--- a/hardinfo2/arch/linux/m68k/os.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/os.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/pci.h b/hardinfo2/arch/linux/m68k/pci.h
deleted file mode 120000
index 63760048..00000000
--- a/hardinfo2/arch/linux/m68k/pci.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/pci.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/processor.h b/hardinfo2/arch/linux/m68k/processor.h
deleted file mode 100644
index 6fbd8293..00000000
--- a/hardinfo2/arch/linux/m68k/processor.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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
- */
-
-struct _Processor {
- gchar *model_name;
- gfloat bogomips, cpu_mhz;
-
- gchar *has_fpu;
-};
-
-static GSList *
-__scan_processors(void)
-{
- Processor *processor;
- FILE *cpuinfo;
- gchar buffer[128];
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- processor = g_new0(Processor, 1);
- 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", processor->model_name);
- get_float("Clocking", processor->cpu_mhz);
- get_float("bogomips", processor->bogomips);
-
- get_str("FPU", processor->has_fpu);
- }
- 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);
-}
-
-static 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
- );
-}
diff --git a/hardinfo2/arch/linux/m68k/resources.h b/hardinfo2/arch/linux/m68k/resources.h
deleted file mode 120000
index 20a4815d..00000000
--- a/hardinfo2/arch/linux/m68k/resources.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/resources.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/samba.h b/hardinfo2/arch/linux/m68k/samba.h
deleted file mode 120000
index 9227f722..00000000
--- a/hardinfo2/arch/linux/m68k/samba.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/samba.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/sensors.h b/hardinfo2/arch/linux/m68k/sensors.h
deleted file mode 120000
index 35e5f37a..00000000
--- a/hardinfo2/arch/linux/m68k/sensors.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/sensors.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/storage.h b/hardinfo2/arch/linux/m68k/storage.h
deleted file mode 120000
index 55b68de3..00000000
--- a/hardinfo2/arch/linux/m68k/storage.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/storage.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/uptime.h b/hardinfo2/arch/linux/m68k/uptime.h
deleted file mode 120000
index 78c026ff..00000000
--- a/hardinfo2/arch/linux/m68k/uptime.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/uptime.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/m68k/usb.h b/hardinfo2/arch/linux/m68k/usb.h
deleted file mode 120000
index 8b8fbb5d..00000000
--- a/hardinfo2/arch/linux/m68k/usb.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/usb.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/alsa.h b/hardinfo2/arch/linux/mips/alsa.h
deleted file mode 120000
index 0216845a..00000000
--- a/hardinfo2/arch/linux/mips/alsa.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/alsa.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/battery.h b/hardinfo2/arch/linux/mips/battery.h
deleted file mode 120000
index e4c794f2..00000000
--- a/hardinfo2/arch/linux/mips/battery.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/battery.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/boots.h b/hardinfo2/arch/linux/mips/boots.h
deleted file mode 120000
index 97384500..00000000
--- a/hardinfo2/arch/linux/mips/boots.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/boots.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/devmemory.h b/hardinfo2/arch/linux/mips/devmemory.h
deleted file mode 120000
index f8a833e7..00000000
--- a/hardinfo2/arch/linux/mips/devmemory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/devmemory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/filesystem.h b/hardinfo2/arch/linux/mips/filesystem.h
deleted file mode 120000
index 6b325b40..00000000
--- a/hardinfo2/arch/linux/mips/filesystem.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/filesystem.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/inputdevices.h b/hardinfo2/arch/linux/mips/inputdevices.h
deleted file mode 120000
index b9226a29..00000000
--- a/hardinfo2/arch/linux/mips/inputdevices.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/inputdevices.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/loadavg.h b/hardinfo2/arch/linux/mips/loadavg.h
deleted file mode 120000
index daaed6d5..00000000
--- a/hardinfo2/arch/linux/mips/loadavg.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/loadavg.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/memory.h b/hardinfo2/arch/linux/mips/memory.h
deleted file mode 120000
index 5ffc013e..00000000
--- a/hardinfo2/arch/linux/mips/memory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/memory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/modules.h b/hardinfo2/arch/linux/mips/modules.h
deleted file mode 120000
index 8ce5a808..00000000
--- a/hardinfo2/arch/linux/mips/modules.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/modules.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/net.h b/hardinfo2/arch/linux/mips/net.h
deleted file mode 120000
index 72d77b26..00000000
--- a/hardinfo2/arch/linux/mips/net.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/net.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/nfs.h b/hardinfo2/arch/linux/mips/nfs.h
deleted file mode 120000
index 3d1048da..00000000
--- a/hardinfo2/arch/linux/mips/nfs.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/nfs.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/os.h b/hardinfo2/arch/linux/mips/os.h
deleted file mode 120000
index ef547be5..00000000
--- a/hardinfo2/arch/linux/mips/os.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/os.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/pci.h b/hardinfo2/arch/linux/mips/pci.h
deleted file mode 120000
index 63760048..00000000
--- a/hardinfo2/arch/linux/mips/pci.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/pci.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/processor.h b/hardinfo2/arch/linux/mips/processor.h
deleted file mode 100644
index cd10bd7a..00000000
--- a/hardinfo2/arch/linux/mips/processor.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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
- */
-
-struct _Processor {
- gchar *model_name;
- gchar *vendor_id;
- gfloat bogomips, cpu_mhz;
-};
-
-static GSList *
-__scan_processors(void)
-{
- Processor *processor;
- FILE *cpuinfo;
- gchar buffer[128];
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- processor = g_new0(Processor, 1);
- 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("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);
- }
-
- fclose(cpuinfo);
-
- return g_slist_append(NULL, processor);
-}
-
-static 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
- );
-}
diff --git a/hardinfo2/arch/linux/mips/resources.h b/hardinfo2/arch/linux/mips/resources.h
deleted file mode 120000
index 20a4815d..00000000
--- a/hardinfo2/arch/linux/mips/resources.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/resources.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/samba.h b/hardinfo2/arch/linux/mips/samba.h
deleted file mode 120000
index 9227f722..00000000
--- a/hardinfo2/arch/linux/mips/samba.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/samba.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/sensors.h b/hardinfo2/arch/linux/mips/sensors.h
deleted file mode 120000
index 35e5f37a..00000000
--- a/hardinfo2/arch/linux/mips/sensors.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/sensors.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/storage.h b/hardinfo2/arch/linux/mips/storage.h
deleted file mode 120000
index 55b68de3..00000000
--- a/hardinfo2/arch/linux/mips/storage.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/storage.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/uptime.h b/hardinfo2/arch/linux/mips/uptime.h
deleted file mode 120000
index 78c026ff..00000000
--- a/hardinfo2/arch/linux/mips/uptime.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/uptime.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/mips/usb.h b/hardinfo2/arch/linux/mips/usb.h
deleted file mode 120000
index 8b8fbb5d..00000000
--- a/hardinfo2/arch/linux/mips/usb.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/usb.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/alsa.h b/hardinfo2/arch/linux/parisc/alsa.h
deleted file mode 120000
index 0216845a..00000000
--- a/hardinfo2/arch/linux/parisc/alsa.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/alsa.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/battery.h b/hardinfo2/arch/linux/parisc/battery.h
deleted file mode 120000
index e4c794f2..00000000
--- a/hardinfo2/arch/linux/parisc/battery.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/battery.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/boots.h b/hardinfo2/arch/linux/parisc/boots.h
deleted file mode 120000
index 97384500..00000000
--- a/hardinfo2/arch/linux/parisc/boots.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/boots.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/devmemory.h b/hardinfo2/arch/linux/parisc/devmemory.h
deleted file mode 120000
index f8a833e7..00000000
--- a/hardinfo2/arch/linux/parisc/devmemory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/devmemory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/filesystem.h b/hardinfo2/arch/linux/parisc/filesystem.h
deleted file mode 120000
index 6b325b40..00000000
--- a/hardinfo2/arch/linux/parisc/filesystem.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/filesystem.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/inputdevices.h b/hardinfo2/arch/linux/parisc/inputdevices.h
deleted file mode 120000
index b9226a29..00000000
--- a/hardinfo2/arch/linux/parisc/inputdevices.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/inputdevices.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/loadavg.h b/hardinfo2/arch/linux/parisc/loadavg.h
deleted file mode 120000
index daaed6d5..00000000
--- a/hardinfo2/arch/linux/parisc/loadavg.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/loadavg.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/memory.h b/hardinfo2/arch/linux/parisc/memory.h
deleted file mode 120000
index 5ffc013e..00000000
--- a/hardinfo2/arch/linux/parisc/memory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/memory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/modules.h b/hardinfo2/arch/linux/parisc/modules.h
deleted file mode 120000
index 8ce5a808..00000000
--- a/hardinfo2/arch/linux/parisc/modules.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/modules.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/net.h b/hardinfo2/arch/linux/parisc/net.h
deleted file mode 120000
index 72d77b26..00000000
--- a/hardinfo2/arch/linux/parisc/net.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/net.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/nfs.h b/hardinfo2/arch/linux/parisc/nfs.h
deleted file mode 120000
index 3d1048da..00000000
--- a/hardinfo2/arch/linux/parisc/nfs.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/nfs.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/os.h b/hardinfo2/arch/linux/parisc/os.h
deleted file mode 120000
index ef547be5..00000000
--- a/hardinfo2/arch/linux/parisc/os.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/os.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/pci.h b/hardinfo2/arch/linux/parisc/pci.h
deleted file mode 120000
index 63760048..00000000
--- a/hardinfo2/arch/linux/parisc/pci.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/pci.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/processor.h b/hardinfo2/arch/linux/parisc/processor.h
deleted file mode 100644
index 1712e523..00000000
--- a/hardinfo2/arch/linux/parisc/processor.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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
- */
-
-struct _Processor {
- gchar *model_name;
- gchar *vendor_id;
- gchar *flags;
- gfloat bogomips, cpu_mhz;
-
- gchar *has_fpu;
-
- gchar *strmodel;
-};
-
-static GSList *
-__scan_processors(void)
-{
- Processor *processor;
- FILE *cpuinfo;
- gchar buffer[128];
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- processor = g_new0(Processor, 1);
- 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);
- }
-
- fclose(cpuinfo);
-
- return g_slist_append(NULL, processor);
-}
-
-static 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);
-}
diff --git a/hardinfo2/arch/linux/parisc/resources.h b/hardinfo2/arch/linux/parisc/resources.h
deleted file mode 120000
index 20a4815d..00000000
--- a/hardinfo2/arch/linux/parisc/resources.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/resources.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/samba.h b/hardinfo2/arch/linux/parisc/samba.h
deleted file mode 120000
index 9227f722..00000000
--- a/hardinfo2/arch/linux/parisc/samba.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/samba.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/sensors.h b/hardinfo2/arch/linux/parisc/sensors.h
deleted file mode 120000
index 35e5f37a..00000000
--- a/hardinfo2/arch/linux/parisc/sensors.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/sensors.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/storage.h b/hardinfo2/arch/linux/parisc/storage.h
deleted file mode 120000
index 55b68de3..00000000
--- a/hardinfo2/arch/linux/parisc/storage.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/storage.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/uptime.h b/hardinfo2/arch/linux/parisc/uptime.h
deleted file mode 120000
index 78c026ff..00000000
--- a/hardinfo2/arch/linux/parisc/uptime.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/uptime.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/parisc/usb.h b/hardinfo2/arch/linux/parisc/usb.h
deleted file mode 120000
index 8b8fbb5d..00000000
--- a/hardinfo2/arch/linux/parisc/usb.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/usb.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/alsa.h b/hardinfo2/arch/linux/ppc/alsa.h
deleted file mode 120000
index 0216845a..00000000
--- a/hardinfo2/arch/linux/ppc/alsa.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/alsa.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/battery.h b/hardinfo2/arch/linux/ppc/battery.h
deleted file mode 120000
index e4c794f2..00000000
--- a/hardinfo2/arch/linux/ppc/battery.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/battery.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/boots.h b/hardinfo2/arch/linux/ppc/boots.h
deleted file mode 120000
index 97384500..00000000
--- a/hardinfo2/arch/linux/ppc/boots.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/boots.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/devmemory.h b/hardinfo2/arch/linux/ppc/devmemory.h
deleted file mode 120000
index f8a833e7..00000000
--- a/hardinfo2/arch/linux/ppc/devmemory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/devmemory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/filesystem.h b/hardinfo2/arch/linux/ppc/filesystem.h
deleted file mode 120000
index 6b325b40..00000000
--- a/hardinfo2/arch/linux/ppc/filesystem.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/filesystem.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/inputdevices.h b/hardinfo2/arch/linux/ppc/inputdevices.h
deleted file mode 120000
index b9226a29..00000000
--- a/hardinfo2/arch/linux/ppc/inputdevices.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/inputdevices.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/loadavg.h b/hardinfo2/arch/linux/ppc/loadavg.h
deleted file mode 120000
index daaed6d5..00000000
--- a/hardinfo2/arch/linux/ppc/loadavg.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/loadavg.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/memory.h b/hardinfo2/arch/linux/ppc/memory.h
deleted file mode 120000
index 5ffc013e..00000000
--- a/hardinfo2/arch/linux/ppc/memory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/memory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/modules.h b/hardinfo2/arch/linux/ppc/modules.h
deleted file mode 120000
index 8ce5a808..00000000
--- a/hardinfo2/arch/linux/ppc/modules.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/modules.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/net.h b/hardinfo2/arch/linux/ppc/net.h
deleted file mode 120000
index 72d77b26..00000000
--- a/hardinfo2/arch/linux/ppc/net.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/net.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/nfs.h b/hardinfo2/arch/linux/ppc/nfs.h
deleted file mode 120000
index 3d1048da..00000000
--- a/hardinfo2/arch/linux/ppc/nfs.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/nfs.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/os.h b/hardinfo2/arch/linux/ppc/os.h
deleted file mode 120000
index ef547be5..00000000
--- a/hardinfo2/arch/linux/ppc/os.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/os.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/pci.h b/hardinfo2/arch/linux/ppc/pci.h
deleted file mode 120000
index 63760048..00000000
--- a/hardinfo2/arch/linux/ppc/pci.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/pci.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/processor.h b/hardinfo2/arch/linux/ppc/processor.h
deleted file mode 100644
index 863b2eb7..00000000
--- a/hardinfo2/arch/linux/ppc/processor.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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
- */
-
-struct _Processor {
- gchar *model_name;
- gchar *vendor_id;
- gint cache_size;
- gfloat bogomips, cpu_mhz;
-};
-
-static GSList *
-__scan_processors(void)
-{
- Processor *processor;
- FILE *cpuinfo;
- gchar buffer[128];
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- processor = g_new0(Processor, 1);
- 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", 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);
-
- }
- 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;
-
- fclose(cpuinfo);
-
- return g_slist_append(NULL, processor);
-}
-
-static gchar *
-processor_get_info(GSList *processors)
-{
- 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
- );
-}
diff --git a/hardinfo2/arch/linux/ppc/resources.h b/hardinfo2/arch/linux/ppc/resources.h
deleted file mode 120000
index 20a4815d..00000000
--- a/hardinfo2/arch/linux/ppc/resources.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/resources.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/samba.h b/hardinfo2/arch/linux/ppc/samba.h
deleted file mode 120000
index 9227f722..00000000
--- a/hardinfo2/arch/linux/ppc/samba.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/samba.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/sensors.h b/hardinfo2/arch/linux/ppc/sensors.h
deleted file mode 120000
index 35e5f37a..00000000
--- a/hardinfo2/arch/linux/ppc/sensors.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/sensors.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/storage.h b/hardinfo2/arch/linux/ppc/storage.h
deleted file mode 120000
index 55b68de3..00000000
--- a/hardinfo2/arch/linux/ppc/storage.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/storage.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/uptime.h b/hardinfo2/arch/linux/ppc/uptime.h
deleted file mode 120000
index 78c026ff..00000000
--- a/hardinfo2/arch/linux/ppc/uptime.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/uptime.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/ppc/usb.h b/hardinfo2/arch/linux/ppc/usb.h
deleted file mode 120000
index 8b8fbb5d..00000000
--- a/hardinfo2/arch/linux/ppc/usb.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/usb.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/alsa.h b/hardinfo2/arch/linux/s390/alsa.h
deleted file mode 120000
index ede8a364..00000000
--- a/hardinfo2/arch/linux/s390/alsa.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/alsa.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/battery.h b/hardinfo2/arch/linux/s390/battery.h
deleted file mode 120000
index ed7360e1..00000000
--- a/hardinfo2/arch/linux/s390/battery.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/battery.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/boots.h b/hardinfo2/arch/linux/s390/boots.h
deleted file mode 120000
index 97384500..00000000
--- a/hardinfo2/arch/linux/s390/boots.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/boots.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/devmemory.h b/hardinfo2/arch/linux/s390/devmemory.h
deleted file mode 120000
index f8a833e7..00000000
--- a/hardinfo2/arch/linux/s390/devmemory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/devmemory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/filesystem.h b/hardinfo2/arch/linux/s390/filesystem.h
deleted file mode 120000
index d884bcd0..00000000
--- a/hardinfo2/arch/linux/s390/filesystem.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/filesystem.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/inputdevices.h b/hardinfo2/arch/linux/s390/inputdevices.h
deleted file mode 120000
index 0f594231..00000000
--- a/hardinfo2/arch/linux/s390/inputdevices.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/inputdevices.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/loadavg.h b/hardinfo2/arch/linux/s390/loadavg.h
deleted file mode 120000
index 1f64e107..00000000
--- a/hardinfo2/arch/linux/s390/loadavg.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/loadavg.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/memory.h b/hardinfo2/arch/linux/s390/memory.h
deleted file mode 120000
index 64c6e0ed..00000000
--- a/hardinfo2/arch/linux/s390/memory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/memory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/modules.h b/hardinfo2/arch/linux/s390/modules.h
deleted file mode 120000
index d21c9a20..00000000
--- a/hardinfo2/arch/linux/s390/modules.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/modules.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/net.h b/hardinfo2/arch/linux/s390/net.h
deleted file mode 120000
index 488b5ae3..00000000
--- a/hardinfo2/arch/linux/s390/net.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/net.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/nfs.h b/hardinfo2/arch/linux/s390/nfs.h
deleted file mode 120000
index 73e0b8c9..00000000
--- a/hardinfo2/arch/linux/s390/nfs.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/nfs.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/os.h b/hardinfo2/arch/linux/s390/os.h
deleted file mode 120000
index 44051626..00000000
--- a/hardinfo2/arch/linux/s390/os.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/os.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/pci.h b/hardinfo2/arch/linux/s390/pci.h
deleted file mode 120000
index 8df04a0e..00000000
--- a/hardinfo2/arch/linux/s390/pci.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/pci.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/processor.h b/hardinfo2/arch/linux/s390/processor.h
deleted file mode 100644
index 25dab8ca..00000000
--- a/hardinfo2/arch/linux/s390/processor.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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
- */
-
-struct _Processor {
- gchar *vendor_id, *model_name;
- gint cache_size;
- gfloat bogomips, cpu_mhz;
-};
-
-static GSList *
-__scan_processors(void)
-{
- Processor *processor;
- FILE *cpuinfo;
- gchar buffer[128];
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- processor = g_new0(Processor, 1);
- 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("vendor_id", processor->vendor_id);
- get_float("# processors", processor->cache_size);
- get_int("bogomips per cpu", processor->bogomips);
-
- }
- g_strfreev(tmp);
- }
-
- processor->cpu_mhz = 0.0f;
-
- processor->model_name = g_strconcat("S390 ", processor->vendor_id, NULL);
- g_free(processor->vendor_id);
-
- fclose(cpuinfo);
-
- return g_slist_append(NULL, processor);
-}
-
-static 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
- );
-}
diff --git a/hardinfo2/arch/linux/s390/resources.h b/hardinfo2/arch/linux/s390/resources.h
deleted file mode 120000
index 20a4815d..00000000
--- a/hardinfo2/arch/linux/s390/resources.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/resources.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/samba.h b/hardinfo2/arch/linux/s390/samba.h
deleted file mode 120000
index ebab9b11..00000000
--- a/hardinfo2/arch/linux/s390/samba.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/samba.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/sensors.h b/hardinfo2/arch/linux/s390/sensors.h
deleted file mode 120000
index 3b799377..00000000
--- a/hardinfo2/arch/linux/s390/sensors.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/sensors.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/storage.h b/hardinfo2/arch/linux/s390/storage.h
deleted file mode 120000
index 3ea886ce..00000000
--- a/hardinfo2/arch/linux/s390/storage.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/storage.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/uptime.h b/hardinfo2/arch/linux/s390/uptime.h
deleted file mode 120000
index a5bac980..00000000
--- a/hardinfo2/arch/linux/s390/uptime.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/uptime.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/s390/usb.h b/hardinfo2/arch/linux/s390/usb.h
deleted file mode 120000
index aee3046c..00000000
--- a/hardinfo2/arch/linux/s390/usb.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/usb.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/alsa.h b/hardinfo2/arch/linux/sh/alsa.h
deleted file mode 120000
index 0216845a..00000000
--- a/hardinfo2/arch/linux/sh/alsa.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/alsa.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/battery.h b/hardinfo2/arch/linux/sh/battery.h
deleted file mode 120000
index e4c794f2..00000000
--- a/hardinfo2/arch/linux/sh/battery.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/battery.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/boots.h b/hardinfo2/arch/linux/sh/boots.h
deleted file mode 120000
index e7ef0408..00000000
--- a/hardinfo2/arch/linux/sh/boots.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/boots.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/devmemory.h b/hardinfo2/arch/linux/sh/devmemory.h
deleted file mode 120000
index 5b1b866f..00000000
--- a/hardinfo2/arch/linux/sh/devmemory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/devmemory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/filesystem.h b/hardinfo2/arch/linux/sh/filesystem.h
deleted file mode 120000
index 6b325b40..00000000
--- a/hardinfo2/arch/linux/sh/filesystem.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/filesystem.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/inputdevices.h b/hardinfo2/arch/linux/sh/inputdevices.h
deleted file mode 120000
index b9226a29..00000000
--- a/hardinfo2/arch/linux/sh/inputdevices.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/inputdevices.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/loadavg.h b/hardinfo2/arch/linux/sh/loadavg.h
deleted file mode 120000
index daaed6d5..00000000
--- a/hardinfo2/arch/linux/sh/loadavg.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/loadavg.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/memory.h b/hardinfo2/arch/linux/sh/memory.h
deleted file mode 120000
index 5ffc013e..00000000
--- a/hardinfo2/arch/linux/sh/memory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/memory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/modules.h b/hardinfo2/arch/linux/sh/modules.h
deleted file mode 120000
index 8ce5a808..00000000
--- a/hardinfo2/arch/linux/sh/modules.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/modules.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/net.h b/hardinfo2/arch/linux/sh/net.h
deleted file mode 120000
index 72d77b26..00000000
--- a/hardinfo2/arch/linux/sh/net.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/net.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/nfs.h b/hardinfo2/arch/linux/sh/nfs.h
deleted file mode 120000
index 3d1048da..00000000
--- a/hardinfo2/arch/linux/sh/nfs.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/nfs.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/os.h b/hardinfo2/arch/linux/sh/os.h
deleted file mode 120000
index ef547be5..00000000
--- a/hardinfo2/arch/linux/sh/os.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/os.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/pci.h b/hardinfo2/arch/linux/sh/pci.h
deleted file mode 120000
index 63760048..00000000
--- a/hardinfo2/arch/linux/sh/pci.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/pci.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/processor.h b/hardinfo2/arch/linux/sh/processor.h
deleted file mode 100644
index de33ee91..00000000
--- a/hardinfo2/arch/linux/sh/processor.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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
- */
-
-struct _Processor {
- gchar *model_name;
- gchar *vendor_id;
- gfloat bogomips, cpu_mhz;
-};
-
-static GSList *
-__scan_processors(void)
-{
- Processor *processor;
- FILE *cpuinfo;
- gchar buffer[128];
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- processor = g_new0(Processor, 1);
- 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("machine", processor->model_name);
- get_str("cpu type", processor->vendor_id);
- get_float("bogomips", processor->bogomips);
- processor->cpu_mhz = processor->bogomips;
- }
- g_strfreev(tmp);
- }
-
- fclose(cpuinfo);
-
- return g_slist_append(NULL, processor);
-}
-
-static 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
- );
-}
diff --git a/hardinfo2/arch/linux/sh/resources.h b/hardinfo2/arch/linux/sh/resources.h
deleted file mode 120000
index 20a4815d..00000000
--- a/hardinfo2/arch/linux/sh/resources.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/resources.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/samba.h b/hardinfo2/arch/linux/sh/samba.h
deleted file mode 120000
index 9227f722..00000000
--- a/hardinfo2/arch/linux/sh/samba.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/samba.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/sensors.h b/hardinfo2/arch/linux/sh/sensors.h
deleted file mode 120000
index 35e5f37a..00000000
--- a/hardinfo2/arch/linux/sh/sensors.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/sensors.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/storage.h b/hardinfo2/arch/linux/sh/storage.h
deleted file mode 120000
index 55b68de3..00000000
--- a/hardinfo2/arch/linux/sh/storage.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/storage.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/uptime.h b/hardinfo2/arch/linux/sh/uptime.h
deleted file mode 120000
index 78c026ff..00000000
--- a/hardinfo2/arch/linux/sh/uptime.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/uptime.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sh/usb.h b/hardinfo2/arch/linux/sh/usb.h
deleted file mode 120000
index 8b8fbb5d..00000000
--- a/hardinfo2/arch/linux/sh/usb.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/usb.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/alsa.h b/hardinfo2/arch/linux/sparc/alsa.h
deleted file mode 120000
index 0216845a..00000000
--- a/hardinfo2/arch/linux/sparc/alsa.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/alsa.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/battery.h b/hardinfo2/arch/linux/sparc/battery.h
deleted file mode 120000
index e4c794f2..00000000
--- a/hardinfo2/arch/linux/sparc/battery.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/battery.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/boots.h b/hardinfo2/arch/linux/sparc/boots.h
deleted file mode 120000
index 97384500..00000000
--- a/hardinfo2/arch/linux/sparc/boots.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/boots.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/devmemory.h b/hardinfo2/arch/linux/sparc/devmemory.h
deleted file mode 120000
index f8a833e7..00000000
--- a/hardinfo2/arch/linux/sparc/devmemory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/devmemory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/filesystem.h b/hardinfo2/arch/linux/sparc/filesystem.h
deleted file mode 120000
index 6b325b40..00000000
--- a/hardinfo2/arch/linux/sparc/filesystem.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/filesystem.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/inputdevices.h b/hardinfo2/arch/linux/sparc/inputdevices.h
deleted file mode 120000
index b9226a29..00000000
--- a/hardinfo2/arch/linux/sparc/inputdevices.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/inputdevices.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/loadavg.h b/hardinfo2/arch/linux/sparc/loadavg.h
deleted file mode 120000
index daaed6d5..00000000
--- a/hardinfo2/arch/linux/sparc/loadavg.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/loadavg.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/memory.h b/hardinfo2/arch/linux/sparc/memory.h
deleted file mode 120000
index 5ffc013e..00000000
--- a/hardinfo2/arch/linux/sparc/memory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/memory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/modules.h b/hardinfo2/arch/linux/sparc/modules.h
deleted file mode 120000
index 8ce5a808..00000000
--- a/hardinfo2/arch/linux/sparc/modules.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/modules.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/net.h b/hardinfo2/arch/linux/sparc/net.h
deleted file mode 120000
index 72d77b26..00000000
--- a/hardinfo2/arch/linux/sparc/net.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/net.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/nfs.h b/hardinfo2/arch/linux/sparc/nfs.h
deleted file mode 120000
index 3d1048da..00000000
--- a/hardinfo2/arch/linux/sparc/nfs.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/nfs.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/os.h b/hardinfo2/arch/linux/sparc/os.h
deleted file mode 120000
index ef547be5..00000000
--- a/hardinfo2/arch/linux/sparc/os.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/os.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/pci.h b/hardinfo2/arch/linux/sparc/pci.h
deleted file mode 120000
index 63760048..00000000
--- a/hardinfo2/arch/linux/sparc/pci.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/pci.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/processor.h b/hardinfo2/arch/linux/sparc/processor.h
deleted file mode 100644
index 0272c963..00000000
--- a/hardinfo2/arch/linux/sparc/processor.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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
- */
-
-struct _Processor {
- gchar *model_name;
- gchar *has_fpu;
- gfloat cpu_mhz;
-};
-
-static GSList *
-__scan_processors(void)
-{
- Processor *processor;
- FILE *cpuinfo;
- gchar buffer[128];
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- processor = g_new0(Processor, 1);
- 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", processor->model_name);
- get_str("fpu", processor->has_fpu);
- }
- g_strfreev(tmp);
- }
-
- fclose(cpuinfo);
-
- processor->cpu_mhz = 0.0f;
-
- return g_slist_append(NULL, processor);
-}
-
-static 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);
-}
diff --git a/hardinfo2/arch/linux/sparc/resources.h b/hardinfo2/arch/linux/sparc/resources.h
deleted file mode 120000
index 20a4815d..00000000
--- a/hardinfo2/arch/linux/sparc/resources.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/resources.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/samba.h b/hardinfo2/arch/linux/sparc/samba.h
deleted file mode 120000
index 9227f722..00000000
--- a/hardinfo2/arch/linux/sparc/samba.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/samba.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/sensors.h b/hardinfo2/arch/linux/sparc/sensors.h
deleted file mode 120000
index 35e5f37a..00000000
--- a/hardinfo2/arch/linux/sparc/sensors.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/sensors.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/storage.h b/hardinfo2/arch/linux/sparc/storage.h
deleted file mode 120000
index 55b68de3..00000000
--- a/hardinfo2/arch/linux/sparc/storage.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/storage.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/uptime.h b/hardinfo2/arch/linux/sparc/uptime.h
deleted file mode 120000
index 78c026ff..00000000
--- a/hardinfo2/arch/linux/sparc/uptime.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/uptime.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/sparc/usb.h b/hardinfo2/arch/linux/sparc/usb.h
deleted file mode 120000
index 8b8fbb5d..00000000
--- a/hardinfo2/arch/linux/sparc/usb.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/usb.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/alsa.h b/hardinfo2/arch/linux/x86/alsa.h
deleted file mode 120000
index 0216845a..00000000
--- a/hardinfo2/arch/linux/x86/alsa.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/alsa.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/battery.h b/hardinfo2/arch/linux/x86/battery.h
deleted file mode 120000
index e4c794f2..00000000
--- a/hardinfo2/arch/linux/x86/battery.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/battery.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/boots.h b/hardinfo2/arch/linux/x86/boots.h
deleted file mode 120000
index e7ef0408..00000000
--- a/hardinfo2/arch/linux/x86/boots.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/boots.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/devmemory.h b/hardinfo2/arch/linux/x86/devmemory.h
deleted file mode 120000
index f8a833e7..00000000
--- a/hardinfo2/arch/linux/x86/devmemory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/devmemory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/dmi.h b/hardinfo2/arch/linux/x86/dmi.h
deleted file mode 120000
index 1a285fbd..00000000
--- a/hardinfo2/arch/linux/x86/dmi.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/dmi.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/filesystem.h b/hardinfo2/arch/linux/x86/filesystem.h
deleted file mode 120000
index 6b325b40..00000000
--- a/hardinfo2/arch/linux/x86/filesystem.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/filesystem.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/inputdevices.h b/hardinfo2/arch/linux/x86/inputdevices.h
deleted file mode 120000
index b9226a29..00000000
--- a/hardinfo2/arch/linux/x86/inputdevices.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/inputdevices.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/loadavg.h b/hardinfo2/arch/linux/x86/loadavg.h
deleted file mode 120000
index daaed6d5..00000000
--- a/hardinfo2/arch/linux/x86/loadavg.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/loadavg.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/memory.h b/hardinfo2/arch/linux/x86/memory.h
deleted file mode 120000
index 5ffc013e..00000000
--- a/hardinfo2/arch/linux/x86/memory.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/memory.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/modules.h b/hardinfo2/arch/linux/x86/modules.h
deleted file mode 120000
index 8ce5a808..00000000
--- a/hardinfo2/arch/linux/x86/modules.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/modules.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/net.h b/hardinfo2/arch/linux/x86/net.h
deleted file mode 120000
index 72d77b26..00000000
--- a/hardinfo2/arch/linux/x86/net.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/net.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/nfs.h b/hardinfo2/arch/linux/x86/nfs.h
deleted file mode 120000
index 3d1048da..00000000
--- a/hardinfo2/arch/linux/x86/nfs.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/nfs.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/os.h b/hardinfo2/arch/linux/x86/os.h
deleted file mode 120000
index ef547be5..00000000
--- a/hardinfo2/arch/linux/x86/os.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/os.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/pci.h b/hardinfo2/arch/linux/x86/pci.h
deleted file mode 120000
index 63760048..00000000
--- a/hardinfo2/arch/linux/x86/pci.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/pci.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/processor.h b/hardinfo2/arch/linux/x86/processor.h
deleted file mode 100644
index 273b0578..00000000
--- a/hardinfo2/arch/linux/x86/processor.h
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
- * 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
- */
-
-typedef struct _ProcessorCache ProcessorCache;
-
-struct _ProcessorCache {
- gint level;
- gint number_of_sets;
- gint physical_line_partition;
- gint size;
- gchar *type;
- gint ways_of_associativity;
-};
-
-struct _Processor {
- gchar *model_name;
- gchar *vendor_id;
- gchar *flags;
- gint cache_size;
- gfloat bogomips, cpu_mhz;
-
- gchar *has_fpu;
- gchar *bug_fdiv, *bug_hlt, *bug_f00f, *bug_coma;
-
- gint model, family, stepping;
- gchar *strmodel;
-
- gint id;
-
- GSList *cache;
-};
-
-/*
- * This function is partly based on x86cpucaps
- * by Osamu Kayasono <jacobi@jcom.home.ne.jp>
- */
-static void get_processor_strfamily(Processor * processor)
-{
- gint family = processor->family;
- gint model = processor->model;
-
- if (g_str_equal(processor->vendor_id, "GenuineIntel")) {
- if (family == 4) {
- processor->strmodel = g_strdup("i486 series");
- } else if (family == 5) {
- if (model < 4) {
- processor->strmodel = g_strdup("Pentium Classic");
- } else {
- processor->strmodel = g_strdup("Pentium MMX");
- }
- } else if (family == 6) {
- if (model <= 1) {
- processor->strmodel = g_strdup("Pentium Pro");
- } else if (model < 7) {
- processor->strmodel = g_strdup("Pentium II/Pentium II Xeon/Celeron");
- } else if (model == 9) {
- processor->strmodel = g_strdup("Pentium M");
- } else {
- processor->strmodel = g_strdup("Pentium III/Pentium III Xeon/Celeron/Core Duo/Core Duo 2");
- }
- } else if (family > 6) {
- processor->strmodel = g_strdup("Pentium 4");
- } else {
- processor->strmodel = g_strdup("i386 class");
- }
- } else if (g_str_equal(processor->vendor_id, "AuthenticAMD")) {
- if (family == 4) {
- if (model <= 9) {
- processor->strmodel = g_strdup("AMD i80486 series");
- } else {
- processor->strmodel = g_strdup("AMD 5x86");
- }
- } else if (family == 5) {
- if (model <= 3) {
- processor->strmodel = g_strdup("AMD K5");
- } else if (model <= 7) {
- processor->strmodel = g_strdup("AMD K6");
- } else if (model == 8) {
- processor->strmodel = g_strdup("AMD K6-2");
- } else if (model == 9) {
- processor->strmodel = g_strdup("AMD K6-III");
- } else {
- processor->strmodel = g_strdup("AMD K6-2+/III+");
- }
- } else if (family == 6) {
- if (model == 1) {
- processor->strmodel = g_strdup("AMD Athlon (K7)");
- } else if (model == 2) {
- processor->strmodel = g_strdup("AMD Athlon (K75)");
- } else if (model == 3) {
- processor->strmodel = g_strdup("AMD Duron (Spitfire)");
- } else if (model == 4) {
- processor->strmodel = g_strdup("AMD Athlon (Thunderbird)");
- } else if (model == 6) {
- processor->strmodel = g_strdup("AMD Athlon XP/MP/4 (Palomino)");
- } else if (model == 7) {
- processor->strmodel = g_strdup("AMD Duron (Morgan)");
- } else if (model == 8) {
- processor->strmodel = g_strdup("AMD Athlon XP/MP (Thoroughbred)");
- } else if (model == 10) {
- processor->strmodel = g_strdup("AMD Athlon XP/MP (Barton)");
- } else {
- processor->strmodel = g_strdup("AMD Athlon (unknown)");
- }
- } else if (family > 6) {
- processor->strmodel = g_strdup("AMD Opteron/Athlon64/FX");
- } else {
- processor->strmodel = g_strdup("AMD i386 class");
- }
- } else if (g_str_equal(processor->vendor_id, "CyrixInstead")) {
- if (family == 4) {
- processor->strmodel = g_strdup("Cyrix 5x86");
- } else if (family == 5) {
- processor->strmodel = g_strdup("Cyrix M1 (6x86)");
- } else if (family == 6) {
- if (model == 0) {
- processor->strmodel = g_strdup("Cyrix M2 (6x86MX)");
- } else if (model <= 5) {
- processor->strmodel = g_strdup("VIA Cyrix III (M2 core)");
- } else if (model == 6) {
- processor->strmodel = g_strdup("VIA Cyrix III (WinChip C5A)");
- } else if (model == 7) {
- processor->strmodel = g_strdup("VIA Cyrix III (WinChip C5B/C)");
- } else {
- processor->strmodel = g_strdup("VIA Cyrix III (WinChip C5C-T)");
- }
- } else {
- processor->strmodel = g_strdup("Cyrix i386 class");
- }
- } else if (g_str_equal(processor->vendor_id, "CentaurHauls")) {
- if (family == 5) {
- if (model <= 4) {
- processor->strmodel = g_strdup("Centaur WinChip C6");
- } else if (model <= 8) {
- processor->strmodel = g_strdup("Centaur WinChip 2");
- } else {
- processor->strmodel = g_strdup("Centaur WinChip 2A");
- }
- } else {
- processor->strmodel = g_strdup("Centaur i386 class");
- }
- } else if (g_str_equal(processor->vendor_id, "GenuineTMx86")) {
- processor->strmodel = g_strdup("Transmeta Crusoe TM3x00/5x00");
- } else {
- processor->strmodel = g_strdup("Unknown");
- }
-}
-
-static gchar *__cache_get_info_as_string(Processor *processor)
-{
- gchar *result = g_strdup("");
- GSList *cache_list;
- ProcessorCache *cache;
-
- if (!processor->cache) {
- return g_strdup("Cache information not available=\n");
- }
-
- 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,
- cache->level,
- cache->type,
- cache->ways_of_associativity,
- cache->number_of_sets,
- cache->size);
- }
-
- return result;
-}
-
-static void __cache_obtain_info(Processor *processor, gint processor_number)
-{
- ProcessorCache *cache;
- gchar *endpoint, *entry, *index;
- gint i;
-
- endpoint = g_strdup_printf("/sys/devices/system/cpu/cpu%d/cache", processor_number);
-
- for (i = 0; ; i++) {
- cache = g_new0(ProcessorCache, 1);
-
- index = g_strdup_printf("index%d/", i);
-
- entry = g_strconcat(index, "type", NULL);
- cache->type = h_sysfs_read_string(endpoint, entry);
- g_free(entry);
-
- if (!cache->type) {
- g_free(cache);
- g_free(index);
- goto fail;
- }
-
- entry = g_strconcat(index, "level", NULL);
- cache->level = h_sysfs_read_int(endpoint, entry);
- g_free(entry);
-
- entry = g_strconcat(index, "number_of_sets", NULL);
- cache->number_of_sets = h_sysfs_read_int(endpoint, entry);
- g_free(entry);
-
- entry = g_strconcat(index, "physical_line_partition", NULL);
- cache->physical_line_partition = h_sysfs_read_int(endpoint, entry);
- g_free(entry);
-
- entry = g_strconcat(index, "size", NULL);
- cache->size = h_sysfs_read_int(endpoint, entry);
- g_free(entry);
-
-
- entry = g_strconcat(index, "ways_of_associativity", NULL);
- cache->ways_of_associativity = h_sysfs_read_int(endpoint, entry);
- g_free(entry);
-
- g_free(index);
-
- processor->cache = g_slist_append(processor->cache, cache);
- }
-
-fail:
- g_free(endpoint);
-}
-
-static GSList *__scan_processors(void)
-{
- GSList *procs = NULL;
- Processor *processor = NULL;
- FILE *cpuinfo;
- gchar buffer[512];
- gint processor_number = 0;
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- while (fgets(buffer, 512, cpuinfo)) {
- gchar **tmp = g_strsplit(buffer, ":", 2);
-
- if (g_str_has_prefix(tmp[0], "processor")) {
- if (processor) {
- get_processor_strfamily(processor);
- procs = g_slist_append(procs, processor);
- }
-
- processor = g_new0(Processor, 1);
-
- __cache_obtain_info(processor, processor_number++);
- }
-
- if (tmp[0] && tmp[1]) {
- tmp[0] = g_strstrip(tmp[0]);
- tmp[1] = g_strstrip(tmp[1]);
-
- get_str("model name", processor->model_name);
- get_str("vendor_id", processor->vendor_id);
- get_str("flags", processor->flags);
- get_int("cache size", processor->cache_size);
- get_float("cpu MHz", processor->cpu_mhz);
- get_float("bogomips", processor->bogomips);
-
- get_str("fpu", processor->has_fpu);
-
- get_str("fdiv_bug", processor->bug_fdiv);
- get_str("hlt_bug", processor->bug_hlt);
- get_str("f00f_bug", processor->bug_f00f);
- get_str("coma_bug", processor->bug_coma);
-
- get_int("model", processor->model);
- get_int("cpu family", processor->family);
- get_int("stepping", processor->stepping);
-
- get_int("processor", processor->id);
- }
- g_strfreev(tmp);
- }
-
- if (processor) {
- get_processor_strfamily(processor);
- procs = g_slist_append(procs, processor);
- }
-
- fclose(cpuinfo);
-
- return procs;
-}
-
-/*
- * Sources:
- * - Linux' cpufeature.h
- * - http://gentoo-wiki.com/Cpuinfo
- * - Intel IA-32 Architecture Software Development Manual
- */
-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 Architeture" },
- { "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" },
- { NULL, NULL },
-};
-
-GHashTable *cpu_flags = NULL;
-
-static 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)) {
- DEBUG("using internal CPU flags database");
-
- for (i = 0; flag_meaning[i].name != NULL; i++) {
- g_hash_table_insert(cpu_flags, flag_meaning[i].name,
- flag_meaning[i].meaning);
- }
- } 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);
- 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);
-}
-
-gchar *processor_get_capabilities_from_flags(gchar * strflags)
-{
- /* FIXME:
- * - Separate between processor capabilities, additional instructions and whatnot.
- */
- gchar **flags, **old;
- 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]);
-
- if (meaning) {
- tmp = h_strdup_cprintf("%s=%s\n", tmp, flags[j], meaning);
- } else {
- tmp = h_strdup_cprintf("%s=\n", tmp, flags[j]);
- }
- j++;
- }
-
- g_strfreev(old);
- return tmp;
-}
-
-static gchar *processor_get_detailed_info(Processor * processor)
-{
- gchar *tmp, *ret, *cache_info;
-
- tmp = processor_get_capabilities_from_flags(processor->flags);
- 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"
- "[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",
- 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->bug_fdiv ? processor->bug_fdiv : "no",
- processor->bug_hlt ? processor->bug_hlt : "no",
- processor->bug_f00f ? processor->bug_f00f : "no",
- processor->bug_coma ? processor->bug_coma : "no",
- processor->has_fpu ? processor->has_fpu : "no",
- cache_info,
- tmp);
- g_free(tmp);
- g_free(cache_info);
-
- return ret;
-}
-
-static 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=%.2fMHz\n",
- tmp, processor->id,
- processor->model_name,
- processor->cpu_mhz);
-
- hashkey = g_strdup_printf("CPU%d", processor->id);
- g_hash_table_insert(moreinfo, hashkey,
- processor_get_detailed_info(processor));
- }
-
- 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/hardinfo2/arch/linux/x86/resources.h b/hardinfo2/arch/linux/x86/resources.h
deleted file mode 120000
index 20a4815d..00000000
--- a/hardinfo2/arch/linux/x86/resources.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../arch/linux/common/resources.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/samba.h b/hardinfo2/arch/linux/x86/samba.h
deleted file mode 120000
index 9227f722..00000000
--- a/hardinfo2/arch/linux/x86/samba.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/samba.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/sensors.h b/hardinfo2/arch/linux/x86/sensors.h
deleted file mode 120000
index 35e5f37a..00000000
--- a/hardinfo2/arch/linux/x86/sensors.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/sensors.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/storage.h b/hardinfo2/arch/linux/x86/storage.h
deleted file mode 120000
index 55b68de3..00000000
--- a/hardinfo2/arch/linux/x86/storage.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/storage.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/uptime.h b/hardinfo2/arch/linux/x86/uptime.h
deleted file mode 120000
index 78c026ff..00000000
--- a/hardinfo2/arch/linux/x86/uptime.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/uptime.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86/usb.h b/hardinfo2/arch/linux/x86/usb.h
deleted file mode 120000
index 8b8fbb5d..00000000
--- a/hardinfo2/arch/linux/x86/usb.h
+++ /dev/null
@@ -1 +0,0 @@
-../../linux/common/usb.h \ No newline at end of file
diff --git a/hardinfo2/arch/linux/x86_64 b/hardinfo2/arch/linux/x86_64
deleted file mode 120000
index f4bad791..00000000
--- a/hardinfo2/arch/linux/x86_64
+++ /dev/null
@@ -1 +0,0 @@
-x86 \ No newline at end of file
diff --git a/hardinfo2/autopackage/default.apspec b/hardinfo2/autopackage/default.apspec
deleted file mode 100644
index 2aea83a7..00000000
--- a/hardinfo2/autopackage/default.apspec
+++ /dev/null
@@ -1,58 +0,0 @@
-# -*- shell-script -*-
-# Generated by mkapspec 0.2
-[Meta]
-ShortName: hardinfo
-SoftwareVersion: 0.5
-DisplayName: HardInfo
-RootName: @hardinfo.org/hardinfo:$SOFTWAREVERSION
-Summary: System profiler and benchmark tool
-Maintainer: Leandro A. F. Pereira <leandro@hardinfo.org>
-Packager: Leandro A. F. Pereira <leandro@hardinfo.org>
-PackageVersion: 1
-CPUArchitectures: x86
-AutopackageTarget: 1.2
-Type: Application
-License: GPL
-
-[BuildPrepare]
-# If you're using autotools, the default should be enough.
-# prepareBuild will set up apbuild and run configure for you. If you
-# need to pass arguments to configure, just add them to prepareBuild:
-# prepareBuild --enable-foo --disable-bar
-export APBUILD_INCLUDE="/usr/local/gtk-headers/2.6"
-export CC="apgcc"
-prepareBuild
-
-[BuildUnprepare]
-# If you're using prepareBuild above, there is no need to change this!
-unprepareBuild
-
-[Globals]
-
-[Prepare]
-require '@gtk.org/gtk' 2.6
-require '@gtk.org/glib' 2.6
-require '@gnome.org/libsoup' 8.0
-
-[Imports]
-# This command will tell makeinstaller what to include in the package.
-# The selection comes from the files created by 'make install' or equivalent.
-# Usually, you can leave this at the default
-cd ../
-echo '*' | import
-
-[Install]
-# See http://www.autopackage.org/api/ for details
-installExe bin/*
-installData share/*
-copyFile lib/hardinfo/modules/benchmark.so $PREFIX/lib/hardinfo/modules/benchmark.so
-copyFile lib/hardinfo/modules/computer.so $PREFIX/lib/hardinfo/modules/computer.so
-copyFile lib/hardinfo/modules/devices.so $PREFIX/lib/hardinfo/modules/devices.so
-copyFile lib/hardinfo/modules/network.so $PREFIX/lib/hardinfo/modules/network.so
-installMenuItem "System" share/applications/hardinfo.desktop
-
-[Uninstall]
-# Leaving this at the default is safe unless you use custom commands in
-# "Install" to create files. By default, all autopackage API functions are
-# logged.
-uninstallFromLog
diff --git a/hardinfo2/benchmark.conf b/hardinfo2/benchmark.conf
deleted file mode 100644
index ef2162da..00000000
--- a/hardinfo2/benchmark.conf
+++ /dev/null
@@ -1,311 +0,0 @@
-[param]
-last_update=1241368430
-[FPU FFT]
-2x Intel(R) Pentium(R) DualCPUT3200@ 2.00GHz=5.500|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
-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) 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
-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
-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) 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
-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
-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) 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
-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) 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
-[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) 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) 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 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
-AMD Athlon(tm) XP 1900+=31.633|1593 MHz|Unknown
-2x Intel(R) Pentium(R) 4 CPU 3.20GHz=66.611|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) 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
-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
-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
-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) 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
-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) 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
-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
-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
-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
-[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) 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
-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) 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
-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
-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
-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
-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
-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
-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) 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
-AMD Athlon(tm) XP 2200+=29.739|1782 MHz|Unknown
-2x Intel(R) Pentium(R) DualCPUT2370@ 1.73GHz=25.822|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
-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
-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
-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) 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
-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) Celeron(R) M processor900MHz=64.668|900 MHz|Unknown
-2x AMD Athlon(tm) 64 X2 Dual Core Processor 4800+=12.799|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
-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) 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) 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
-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 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) 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) 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
-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
-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
-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
-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 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
-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
-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.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) 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
-[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 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
-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
-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) 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) 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) 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
-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 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) XP 1600+=6.387|1398 MHz|Unknown
-2x Genuine Intel(R) CPU T2050@ 1.60GHz=6.104|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 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
-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]
diff --git a/hardinfo2/benchmark.data b/hardinfo2/benchmark.data
deleted file mode 100644
index efb964db..00000000
--- a/hardinfo2/benchmark.data
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/doc/index.hlp b/hardinfo2/doc/index.hlp
deleted file mode 100644
index b1abff39..00000000
--- a/hardinfo2/doc/index.hlp
+++ /dev/null
@@ -1,35 +0,0 @@
-# HardInfo Documentation
-
-## Introduction
-
-HardInfo can gather information about your system's hardware and operating system, perform benchmarks, and generate printable reports either in HTML or in plain text formats.
-
-## Feature Overview
-
-* Obtains information about basic hardware items;
-* Obtains information about basic operating system items;
-* Performs CPU and FPU benchmarks;
-* Allows [network-updater.hlp synchronization of benchmark results] with other HardInfo users;
-* Some tables can be [network-updater.hlp updated] from the Internet;
-* Can be used either in local or in [remote.hlp remote] mode;
-* Generates repots in HTML or plain text formats;
-* Can be used either with a GTK+ GUI or on a terminal.
-
-## Using
-
-* [report-generation.hlp Generating Reports]
-* [network-updater.hlp Using the Network Updater]
-* [remote.hlp Obtaining Information from a Remote Machine]
-* [benchmark.hlp Performing and Understanding Benchmarks]
-* [command-line.hlp Using HardInfo from the command line]
-
-## Improving
-
-* [bug-reporting.hlp How to Report Bugs]
-* [feature-requests.hlp How to Request a Feature]
-* [http://hardinfo.org/developer Developer Documentation]
-
-## Following
-
-* [http://twitter.com/hardinfo Twitter] (for GitHub commits)
-* [http://lists.hardinfo.org Mailing Lists]
diff --git a/hardinfo2/hardinfo.desktop b/hardinfo2/hardinfo.desktop
deleted file mode 100644
index 523432f1..00000000
--- a/hardinfo2/hardinfo.desktop
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Name=System Profiler and Benchmark
-Name[pt_BR]=Informações e Testes do Sistema
-Exec=hardinfo
-Icon=/usr/share/hardinfo/pixmaps/logo.png
-Terminal=false
-Type=Application
-StartupNotify=true
-Categories=System; \ No newline at end of file
diff --git a/hardinfo2/hardinfo/hardinfo.c b/hardinfo2/hardinfo/hardinfo.c
deleted file mode 100644
index 784a3c06..00000000
--- a/hardinfo2/hardinfo/hardinfo.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 <config.h>
-#include <shell.h>
-
-#include <report.h>
-#include <hardinfo.h>
-#include <iconcache.h>
-#include <stock.h>
-#include <vendor.h>
-#include <xmlrpc-server.h>
-
-#include <binreloc.h>
-
-ProgramParameters params = { 0 };
-
-int main(int argc, char **argv)
-{
- GSList *modules;
-
- DEBUG("HardInfo version " VERSION ". Debug version.");
-
- DEBUG("g_thread_init()");
- if (!g_thread_supported())
- g_thread_init(NULL);
-
- /* parse all command line parameters */
- parameters_init(&argc, &argv, &params);
-
- /* 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("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",
- RELEASE ? "Yes" : "No (" VERSION ")", ARCH,
- ENABLE_BINRELOC ? "Yes" : "No",
- PREFIX, LIBPREFIX, PLATFORM, KERNEL, HOSTNAME);
-
- DEBUG(" Debugging is enabled.");
-
- /* show also available modules */
- params.list_modules = TRUE;
- }
-
- /* initialize the binreloc library, so we can load program data */
- if (!binreloc_init(FALSE))
- g_error("Failed to find runtime data.\n\n"
- "\342\200\242 Is HardInfo correctly installed?\n"
- "\342\200\242 See if %s and %s exists and you have read permision.",
- PREFIX, LIBPREFIX);
-
- /* list all module names */
- if (params.list_modules) {
- g_print("Modules:\n"
- "%-20s%-15s%-12s\n", "File Name", "Name", "Version");
-
- for (modules = modules_load_all(); modules;
- modules = modules->next) {
- ShellModule *module = (ShellModule *) modules->data;
- 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_free(name);
- }
-
- return 0;
- }
-
- if (!params.create_report && !params.run_benchmark && !params.run_xmlrpc_server) {
- /* we only try to open the UI if the user didn't asked for a
- report. */
- params.gui_running = ui_init(&argc, &argv);
-
- /* as a fallback, if GTK+ initialization failed, run in report
- generation mode. */
- if (!params.gui_running)
- params.create_report = TRUE;
- }
-
- if (params.use_modules) {
- /* load only selected modules */
- DEBUG("loading user-selected modules");
- modules = modules_load_selected();
- } else {
- /* load all modules */
- DEBUG("loading all modules");
- modules = modules_load_all();
- }
-
- /* initialize vendor database */
- vendor_init();
-
- if (params.run_xmlrpc_server) {
- g_type_init();
-
- xmlrpc_server_init();
- xmlrpc_server_start(NULL);
- } else 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);
- } else {
- g_print("%s\n", result);
- g_free(result);
- }
- } else if (params.gui_running) {
- /* initialize gui and start gtk+ main loop */
- icon_cache_init();
- stock_icons_init();
-
- shell_init(modules);
-
- DEBUG("entering gtk+ main loop");
-
- gtk_main();
- } else if (params.create_report) {
- /* generate report */
- gchar *report;
-
- DEBUG("generating report");
-
- report = report_create_from_module_list_format(modules,
- params.
- report_format);
- g_print("%s", report);
-
- g_free(report);
- } else {
- g_error("Don't know what to do. Exiting.");
- }
-
- DEBUG("finished");
- return 0;
-}
diff --git a/hardinfo2/help-viewer/egg-markdown.c b/hardinfo2/help-viewer/egg-markdown.c
deleted file mode 100644
index 4056d4f9..00000000
--- a/hardinfo2/help-viewer/egg-markdown.c
+++ /dev/null
@@ -1,1586 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2008 Richard Hughes <richard@hughsie.com>
- * Copyright (C) 2009 Leandro Pereira <leandro@hardinfo.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-
-#define _GNU_SOURCE
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-
-#include "egg-markdown.h"
-
-/*******************************************************************************
- *
- * This is a simple Markdown parser.
- * It can output to Pango, HTML or plain text. The following limitations are
- * already known, and properly deliberate:
- *
- * - No code section support
- * - No ordered list support
- * - No blockquote section support
- * - No image support
- * - No links or email support
- * - No backslash escapes support
- * - No HTML escaping support
- * - Auto-escapes certain word patterns, like http://
- *
- * It does support the rest of the standard pretty well, although it's not
- * been run against any conformance tests. The parsing is single pass, with
- * a simple enumerated intepretor mode and a single line back-memory.
- *
- ******************************************************************************/
-
-static void egg_markdown_finalize (GObject *object);
-
-#define EGG_MARKDOWN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), EGG_TYPE_MARKDOWN, EggMarkdownPrivate))
-
-typedef gchar *(EggMarkdownLinkBuilder)(gchar *title, gchar *uri, gint link_id);
-typedef gchar *(EggMarkdownImageBuilder)(gchar *alt_text, gchar *path, gint link_id);
-
-typedef enum {
- EGG_MARKDOWN_MODE_BLANK,
- EGG_MARKDOWN_MODE_RULE,
- EGG_MARKDOWN_MODE_BULLETT,
- EGG_MARKDOWN_MODE_PARA,
- EGG_MARKDOWN_MODE_H1,
- EGG_MARKDOWN_MODE_H2,
- EGG_MARKDOWN_MODE_UNKNOWN
-} EggMarkdownMode;
-
-typedef struct {
- const gchar *em_start;
- const gchar *em_end;
- const gchar *strong_start;
- const gchar *strong_end;
- const gchar *code_start;
- const gchar *code_end;
- const gchar *h1_start;
- const gchar *h1_end;
- const gchar *h2_start;
- const gchar *h2_end;
- const gchar *bullett_start;
- const gchar *bullett_end;
- const gchar *rule;
-
- EggMarkdownLinkBuilder *link_builder;
- EggMarkdownImageBuilder *image_builder;
-} EggMarkdownTags;
-
-struct EggMarkdownPrivate
-{
- EggMarkdownMode mode;
- EggMarkdownTags tags;
- EggMarkdownOutput output;
- gint max_lines;
- guint line_count;
- gboolean smart_quoting;
- gboolean escape;
- gboolean autocode;
- GString *pending;
- GString *processed;
- GArray *link_table;
-};
-
-G_DEFINE_TYPE (EggMarkdown, egg_markdown, G_TYPE_OBJECT)
-
-/**
- * egg_markdown_to_text_line_is_rule:
- *
- * Horizontal rules are created by placing three or more hyphens, asterisks,
- * or underscores on a line by themselves.
- * You may use spaces between the hyphens or asterisks.
- **/
-static gboolean
-egg_markdown_to_text_line_is_rule (const gchar *line)
-{
- guint i;
- guint len;
- guint count = 0;
- gchar *copy = NULL;
- gboolean ret = FALSE;
-
- len = strnlen (line, EGG_MARKDOWN_MAX_LINE_LENGTH);
- if (len == 0)
- goto out;
-
- /* replace non-rule chars with ~ */
- copy = g_strdup (line);
- g_strcanon (copy, "-*_ ", '~');
- for (i=0; i<len; i++) {
- if (copy[i] == '~')
- goto out;
- if (copy[i] != ' ')
- count++;
- }
-
- /* if we matched, return true */
- if (count >= 3)
- ret = TRUE;
-out:
- g_free (copy);
- return ret;
-}
-
-/**
- * egg_markdown_to_text_line_is_bullett:
- **/
-static gboolean
-egg_markdown_to_text_line_is_bullett (const gchar *line)
-{
- return (g_str_has_prefix (line, "- ") ||
- g_str_has_prefix (line, "* ") ||
- g_str_has_prefix (line, "+ ") ||
- g_str_has_prefix (line, " - ") ||
- g_str_has_prefix (line, " * ") ||
- g_str_has_prefix (line, " + "));
-}
-
-/**
- * egg_markdown_to_text_line_is_header1:
- **/
-static gboolean
-egg_markdown_to_text_line_is_header1 (const gchar *line)
-{
- return g_str_has_prefix (line, "# ");
-}
-
-/**
- * egg_markdown_to_text_line_is_header2:
- **/
-static gboolean
-egg_markdown_to_text_line_is_header2 (const gchar *line)
-{
- return g_str_has_prefix (line, "## ");
-}
-
-/**
- * egg_markdown_to_text_line_is_header1_type2:
- **/
-static gboolean
-egg_markdown_to_text_line_is_header1_type2 (const gchar *line)
-{
- return g_str_has_prefix (line, "===");
-}
-
-/**
- * egg_markdown_to_text_line_is_header2_type2:
- **/
-static gboolean
-egg_markdown_to_text_line_is_header2_type2 (const gchar *line)
-{
- return g_str_has_prefix (line, "---");
-}
-
-#if 0
-/**
- * egg_markdown_to_text_line_is_code:
- **/
-static gboolean
-egg_markdown_to_text_line_is_code (const gchar *line)
-{
- return (g_str_has_prefix (line, " ") || g_str_has_prefix (line, "\t"));
-}
-
-/**
- * egg_markdown_to_text_line_is_blockquote:
- **/
-static gboolean
-egg_markdown_to_text_line_is_blockquote (const gchar *line)
-{
- return (g_str_has_prefix (line, "> "));
-}
-#endif
-
-/**
- * egg_markdown_to_text_line_is_blank:
- **/
-static gboolean
-egg_markdown_to_text_line_is_blank (const gchar *line)
-{
- guint i;
- guint len;
- gboolean ret = FALSE;
-
- len = strnlen (line, EGG_MARKDOWN_MAX_LINE_LENGTH);
-
- /* a line with no characters is blank by definition */
- if (len == 0) {
- ret = TRUE;
- goto out;
- }
-
- /* find if there are only space chars */
- for (i=0; i<len; i++) {
- if (line[i] != ' ' && line[i] != '\t')
- goto out;
- }
-
- /* if we matched, return true */
- ret = TRUE;
-out:
- return ret;
-}
-
-/**
- * egg_markdown_replace:
- **/
-static gchar *
-egg_markdown_replace (const gchar *haystack, const gchar *needle, const gchar *replace)
-{
- gchar *new;
- gchar **split;
-
- split = g_strsplit (haystack, needle, -1);
- new = g_strjoinv (replace, split);
- g_strfreev (split);
-
- return new;
-}
-
-/**
- * egg_markdown_strstr_spaces:
- **/
-static gchar *
-egg_markdown_strstr_spaces (const gchar *haystack, const gchar *needle)
-{
- gchar *found;
- const gchar *haystack_new = haystack;
-
-retry:
- /* don't find if surrounded by spaces */
- found = strstr (haystack_new, needle);
- if (found == NULL)
- return NULL;
-
- /* start of the string, always valid */
- if (found == haystack)
- return found;
-
- /* end of the string, always valid */
- if (*(found-1) == ' ' && *(found+1) == ' ') {
- haystack_new = found+1;
- goto retry;
- }
- return found;
-}
-
-
-/**
- * egg_markdown_to_text_line_formatter:
- **/
-static gchar *
-egg_markdown_to_text_line_formatter (const gchar *line, const gchar *formatter, const gchar *left, const gchar *right)
-{
- guint len;
- gchar *str1;
- gchar *str2;
- gchar *start = NULL;
- gchar *middle = NULL;
- gchar *end = NULL;
- gchar *copy = NULL;
- gchar *data = NULL;
- gchar *temp;
-
- /* needed to know for shifts */
- len = strnlen (formatter, EGG_MARKDOWN_MAX_LINE_LENGTH);
- if (len == 0)
- goto out;
-
- /* find sections */
- copy = g_strdup (line);
- str1 = egg_markdown_strstr_spaces (copy, formatter);
- if (str1 != NULL) {
- *str1 = '\0';
- str2 = egg_markdown_strstr_spaces (str1+len, formatter);
- if (str2 != NULL) {
- *str2 = '\0';
- middle = str1 + len;
- start = copy;
- end = str2 + len;
- }
- }
-
- /* if we found, replace and keep looking for the same string */
- if (start != NULL && middle != NULL && end != NULL) {
- temp = g_strdup_printf ("%s%s%s%s%s", start, left, middle, right, end);
- /* recursive */
- data = egg_markdown_to_text_line_formatter (temp, formatter, left, right);
- g_free (temp);
- } else {
- /* not found, keep return as-is */
- data = g_strdup (line);
- }
-out:
- g_free (copy);
- return data;
-}
-
-static gchar *
-egg_markdown_to_text_line_formatter_image (EggMarkdown *self, const gchar *line)
-{
- const guint len = 2; /* needed to know for shifts */
- gchar *str1;
- gchar *str2;
- gchar *start = NULL;
- gchar *path = NULL;
- gchar *alt_text = NULL;
- gchar *end = NULL;
- gchar *copy = NULL;
- gchar *data = NULL;
-
- /* find sections */
- copy = g_strdup (line);
- str1 = egg_markdown_strstr_spaces (copy, "![");
- if (str1 != NULL) {
- *str1 = '\0';
- str2 = egg_markdown_strstr_spaces (str1+len, "]");
- if (str2 != NULL) {
- *str2 = '\0';
- start = copy;
- alt_text = str1 + len;
-
- str2 = strstr (str2 + 1, "(");
- if (str2 != NULL) {
- *str2 = '\0';
-
- str1 = strstr (str2 + 1, ")");
- if (str1 != NULL) {
- *str1 = '\0';
- path = str2 + 1;
- end = str1 + 1;
- }
- }
- }
- }
-
- /* if we found, replace and keep looking for the same string */
- if (start && (path && *path) && alt_text && end) {
- gchar *formatted_img;
- gchar *path_copy = g_strdup(path);
-
- g_array_append_val(self->priv->link_table, path_copy);
-
- formatted_img = self->priv->tags.image_builder(alt_text,
- path,
- self->priv->link_table->len - 1);
-
- data = g_strdup_printf ("%s%s%s",
- start, formatted_img, end);
-
- g_free(formatted_img);
- } else {
- /* not found, keep return as-is */
- data = g_strdup (line);
- }
-
- g_free (copy);
- return data;
-}
-
-
-/**
- * egg_markdown_to_text_line_formatter_link:
- **/
-static gchar *
-egg_markdown_to_text_line_formatter_link (EggMarkdown *self, const gchar *line)
-{
- const guint len = 1; /* needed to know for shifts */
- gchar *str1;
- gchar *str2;
- gchar *start = NULL;
- gchar *link = NULL;
- gchar *link_title = NULL;
- gchar *end = NULL;
- gchar *copy = NULL;
- gchar *data = NULL;
-
- /* find sections */
- copy = g_strdup (line);
- str1 = egg_markdown_strstr_spaces (copy, "[");
- if (str1 != NULL) {
- *str1 = '\0';
- str2 = egg_markdown_strstr_spaces (str1+len, "]");
- if (str2 != NULL) {
- *str2 = '\0';
- start = copy;
- link = str1 + len;
- end = str2 + len;
-
- str2 = strstr (link, " ");
- if (str2 != NULL) {
- *str2 = '\0';
- link_title = str2 + len;
- }
- }
- }
-
- /* if we found, replace and keep looking for the same string */
- if (start && (link && *link) && link_title && end) {
- gchar *formatted_link;
- gchar *link_copy = g_strdup(link);
-
- g_array_append_val(self->priv->link_table, link_copy);
-
- formatted_link = self->priv->tags.link_builder(link_title,
- link,
- self->priv->link_table->len - 1);
-
- data = g_strdup_printf ("%s%s%s",
- start, formatted_link, end);
-
- g_free(formatted_link);
- } else {
- /* not found, keep return as-is */
- data = g_strdup (line);
- }
-
- g_free (copy);
- return data;
-}
-
-void
-egg_markdown_clear(EggMarkdown *self)
-{
- int i;
-
- for (i = 0; i < self->priv->link_table->len; i++) {
- g_free(g_array_index(self->priv->link_table, gchar *, i));
- }
-
- g_array_free(self->priv->link_table, TRUE);
- self->priv->link_table = g_array_new(FALSE, FALSE, sizeof(gchar *));
-}
-
-gchar *
-egg_markdown_get_link_uri(EggMarkdown *self, const gint link_id)
-{
- g_return_val_if_fail(link_id < self->priv->link_table->len, NULL);
-
- return g_strdup(g_array_index(self->priv->link_table, gchar *, link_id));
-}
-
-/**
- * egg_markdown_to_text_line_format_sections:
- **/
-static gchar *
-egg_markdown_to_text_line_format_sections (EggMarkdown *self, const gchar *line)
-{
- gchar *data = g_strdup (line);
- gchar *temp;
-
- /* smart quoting */
- if (self->priv->smart_quoting) {
- if (self->priv->escape) {
- temp = data;
- data = egg_markdown_to_text_line_formatter (temp, "&quot;", "“", "”");
- g_free (temp);
-
- temp = data;
- data = egg_markdown_to_text_line_formatter (temp, "&apos;", "‘", "’");
- g_free (temp);
- } else {
- temp = data;
- data = egg_markdown_to_text_line_formatter (temp, "\"", "“", "”");
- g_free (temp);
-
- temp = data;
- data = egg_markdown_to_text_line_formatter (temp, "'", "‘", "’");
- g_free (temp);
- }
- }
-
- /* image */
- temp = data;
- data = egg_markdown_to_text_line_formatter_image (self, temp);
- g_free(temp);
-
- /* link */
- temp = data;
- data = egg_markdown_to_text_line_formatter_link (self, temp);
- g_free(temp);
-
- /* bold1 */
- temp = data;
- data = egg_markdown_to_text_line_formatter (temp, "**", self->priv->tags.strong_start, self->priv->tags.strong_end);
- g_free (temp);
-
- /* bold2 */
- temp = data;
- data = egg_markdown_to_text_line_formatter (temp, "__", self->priv->tags.strong_start, self->priv->tags.strong_end);
- g_free (temp);
-
- /* italic1 */
- temp = data;
- data = egg_markdown_to_text_line_formatter (temp, "*", self->priv->tags.em_start, self->priv->tags.em_end);
- g_free (temp);
-
- /* italic2 */
- temp = data;
- data = egg_markdown_to_text_line_formatter (temp, "_", self->priv->tags.em_start, self->priv->tags.em_end);
- g_free (temp);
-
- /* em-dash */
- temp = data;
- data = egg_markdown_replace (temp, " -- ", " — ");
- g_free (temp);
-
- return data;
-}
-
-/**
- * egg_markdown_to_text_line_format:
- **/
-static gchar *
-egg_markdown_to_text_line_format (EggMarkdown *self, const gchar *line)
-{
- guint i;
- gchar *text;
- gboolean mode = FALSE;
- gchar **codes;
- GString *string;
-
- /* optimise the trivial case where we don't have any code tags */
- text = strstr (line, "`");
- if (text == NULL) {
- text = egg_markdown_to_text_line_format_sections (self, line);
- goto out;
- }
-
- /* we want to parse the code sections without formatting */
- codes = g_strsplit (line, "`", -1);
- string = g_string_new ("");
- for (i=0; codes[i] != NULL; i++) {
- if (!mode) {
- text = egg_markdown_to_text_line_format_sections (self, codes[i]);
- g_string_append (string, text);
- g_free (text);
- mode = TRUE;
- } else {
- /* just append without formatting */
- g_string_append (string, self->priv->tags.code_start);
- g_string_append (string, codes[i]);
- g_string_append (string, self->priv->tags.code_end);
- mode = FALSE;
- }
- }
- text = g_string_free (string, FALSE);
-out:
- return text;
-}
-
-/**
- * egg_markdown_add_pending:
- **/
-static gboolean
-egg_markdown_add_pending (EggMarkdown *self, const gchar *line)
-{
- gchar *copy;
-
- /* would put us over the limit */
- if (self->priv->line_count >= self->priv->max_lines)
- return FALSE;
-
- copy = g_strdup (line);
-
- /* strip leading and trailing spaces */
- g_strstrip (copy);
-
- /* append */
- g_string_append_printf (self->priv->pending, "%s ", copy);
-
- g_free (copy);
- return TRUE;
-}
-
-/**
- * egg_markdown_add_pending_header:
- **/
-static gboolean
-egg_markdown_add_pending_header (EggMarkdown *self, const gchar *line)
-{
- gchar *copy;
- gboolean ret;
-
- /* strip trailing # */
- copy = g_strdup (line);
- g_strdelimit (copy, "#", ' ');
- ret = egg_markdown_add_pending (self, copy);
- g_free (copy);
- return ret;
-}
-
-/**
- * egg_markdown_count_chars_in_word:
- **/
-static guint
-egg_markdown_count_chars_in_word (const gchar *text, gchar find)
-{
- guint i;
- guint len;
- guint count = 0;
-
- /* get length */
- len = strnlen (text, EGG_MARKDOWN_MAX_LINE_LENGTH);
- if (len == 0)
- goto out;
-
- /* find matching chars */
- for (i=0; i<len; i++) {
- if (text[i] == find)
- count++;
- }
-out:
- return count;
-}
-
-/**
- * egg_markdown_word_is_code:
- **/
-static gboolean
-egg_markdown_word_is_code (const gchar *text)
-{
- /* already code */
- if (g_str_has_prefix (text, "`"))
- return FALSE;
- if (g_str_has_suffix (text, "`"))
- return FALSE;
-
- /* paths */
- if (g_str_has_prefix (text, "/"))
- return TRUE;
-
- /* bugzillas */
- if (g_str_has_prefix (text, "#"))
- return TRUE;
-
- /* uri's */
- if (g_str_has_prefix (text, "http://"))
- return TRUE;
- if (g_str_has_prefix (text, "https://"))
- return TRUE;
- if (g_str_has_prefix (text, "ftp://"))
- return TRUE;
-
- /* patch files */
- if (g_strrstr (text, ".patch") != NULL)
- return TRUE;
- if (g_strrstr (text, ".diff") != NULL)
- return TRUE;
-
- /* function names */
- if (g_strrstr (text, "()") != NULL)
- return TRUE;
-
- /* email addresses */
- if (g_strrstr (text, "@") != NULL)
- return TRUE;
-
- /* compiler defines */
- if (text[0] != '_' &&
- egg_markdown_count_chars_in_word (text, '_') > 1)
- return TRUE;
-
- /* nothing special */
- return FALSE;
-}
-
-/**
- * egg_markdown_word_auto_format_code:
- **/
-static gchar *
-egg_markdown_word_auto_format_code (const gchar *text)
-{
- guint i;
- gchar *temp;
- gchar **words;
- gboolean ret = FALSE;
-
- /* split sentence up with space */
- words = g_strsplit (text, " ", -1);
-
- /* search each word */
- for (i=0; words[i] != NULL; i++) {
- if (egg_markdown_word_is_code (words[i])) {
- temp = g_strdup_printf ("`%s`", words[i]);
- g_free (words[i]);
- words[i] = temp;
- ret = TRUE;
- }
- }
-
- /* no replacements, so just return a copy */
- if (!ret) {
- temp = g_strdup (text);
- goto out;
- }
-
- /* join the array back into a string */
- temp = g_strjoinv (" ", words);
-out:
- g_strfreev (words);
- return temp;
-}
-
-/**
- * egg_markdown_flush_pending:
- **/
-static void
-egg_markdown_flush_pending (EggMarkdown *self)
-{
- gchar *copy;
- gchar *temp;
-
- /* no data yet */
- if (self->priv->mode == EGG_MARKDOWN_MODE_UNKNOWN)
- return;
-
- /* remove trailing spaces */
- while (g_str_has_suffix (self->priv->pending->str, " "))
- g_string_set_size (self->priv->pending, self->priv->pending->len - 1);
-
- /* pango requires escaping */
- copy = g_strdup (self->priv->pending->str);
- if (!self->priv->escape && self->priv->output == EGG_MARKDOWN_OUTPUT_PANGO) {
- g_strdelimit (copy, "<", '(');
- g_strdelimit (copy, ">", ')');
- }
-
- /* check words for code */
- if (self->priv->autocode &&
- (self->priv->mode == EGG_MARKDOWN_MODE_PARA ||
- self->priv->mode == EGG_MARKDOWN_MODE_BULLETT)) {
- temp = egg_markdown_word_auto_format_code (copy);
- g_free (copy);
- copy = temp;
- }
-
- /* escape */
- if (self->priv->escape) {
- temp = g_markup_escape_text (copy, -1);
- g_free (copy);
- copy = temp;
- }
-
- /* do formatting */
- temp = egg_markdown_to_text_line_format (self, copy);
- if (self->priv->mode == EGG_MARKDOWN_MODE_BULLETT) {
- g_string_append_printf (self->priv->processed, "%s%s%s\n", self->priv->tags.bullett_start, temp, self->priv->tags.bullett_end);
- self->priv->line_count++;
- } else if (self->priv->mode == EGG_MARKDOWN_MODE_H1) {
- g_string_append_printf (self->priv->processed, "%s%s%s\n", self->priv->tags.h1_start, temp, self->priv->tags.h1_end);
- } else if (self->priv->mode == EGG_MARKDOWN_MODE_H2) {
- g_string_append_printf (self->priv->processed, "%s%s%s\n", self->priv->tags.h2_start, temp, self->priv->tags.h2_end);
- } else if (self->priv->mode == EGG_MARKDOWN_MODE_PARA ||
- self->priv->mode == EGG_MARKDOWN_MODE_RULE) {
- g_string_append_printf (self->priv->processed, "%s\n", temp);
- self->priv->line_count++;
- }
-
- DEBUG ("adding '%s'", temp);
-
- /* clear */
- g_string_truncate (self->priv->pending, 0);
- g_free (copy);
- g_free (temp);
-}
-
-/**
- * egg_markdown_to_text_line_process:
- **/
-static gboolean
-egg_markdown_to_text_line_process (EggMarkdown *self, const gchar *line)
-{
- gboolean ret;
-
- /* blank */
- ret = egg_markdown_to_text_line_is_blank (line);
- if (ret) {
- DEBUG ("blank: '%s'", line);
- egg_markdown_flush_pending (self);
- /* a new line after a list is the end of list, not a gap */
- if (self->priv->mode != EGG_MARKDOWN_MODE_BULLETT)
- ret = egg_markdown_add_pending (self, "\n");
- self->priv->mode = EGG_MARKDOWN_MODE_BLANK;
- goto out;
- }
-
- /* header1_type2 */
- ret = egg_markdown_to_text_line_is_header1_type2 (line);
- if (ret) {
- DEBUG ("header1_type2: '%s'", line);
- if (self->priv->mode == EGG_MARKDOWN_MODE_PARA)
- self->priv->mode = EGG_MARKDOWN_MODE_H1;
- goto out;
- }
-
- /* header2_type2 */
- ret = egg_markdown_to_text_line_is_header2_type2 (line);
- if (ret) {
- DEBUG ("header2_type2: '%s'", line);
- if (self->priv->mode == EGG_MARKDOWN_MODE_PARA)
- self->priv->mode = EGG_MARKDOWN_MODE_H2;
- goto out;
- }
-
- /* rule */
- ret = egg_markdown_to_text_line_is_rule (line);
- if (ret) {
- DEBUG ("rule: '%s'", line);
- egg_markdown_flush_pending (self);
- self->priv->mode = EGG_MARKDOWN_MODE_RULE;
- ret = egg_markdown_add_pending (self, self->priv->tags.rule);
- goto out;
- }
-
- /* bullett */
- ret = egg_markdown_to_text_line_is_bullett (line);
- if (ret) {
- DEBUG ("bullett: '%s'", line);
- egg_markdown_flush_pending (self);
- self->priv->mode = EGG_MARKDOWN_MODE_BULLETT;
- ret = egg_markdown_add_pending (self, &line[2]);
- goto out;
- }
-
- /* header1 */
- ret = egg_markdown_to_text_line_is_header1 (line);
- if (ret) {
- DEBUG ("header1: '%s'", line);
- egg_markdown_flush_pending (self);
- self->priv->mode = EGG_MARKDOWN_MODE_H1;
- ret = egg_markdown_add_pending_header (self, &line[2]);
- goto out;
- }
-
- /* header2 */
- ret = egg_markdown_to_text_line_is_header2 (line);
- if (ret) {
- DEBUG ("header2: '%s'", line);
- egg_markdown_flush_pending (self);
- self->priv->mode = EGG_MARKDOWN_MODE_H2;
- ret = egg_markdown_add_pending_header (self, &line[3]);
- goto out;
- }
-
- /* paragraph */
- if (self->priv->mode == EGG_MARKDOWN_MODE_BLANK || self->priv->mode == EGG_MARKDOWN_MODE_UNKNOWN) {
- egg_markdown_flush_pending (self);
- self->priv->mode = EGG_MARKDOWN_MODE_PARA;
- }
-
- /* add to pending */
- DEBUG ("continue: '%s'", line);
- ret = egg_markdown_add_pending (self, line);
-out:
- /* if we failed to add, we don't know the mode */
- if (!ret)
- self->priv->mode = EGG_MARKDOWN_MODE_UNKNOWN;
- return ret;
-}
-
-/**
- * egg_markdown_linkbuilder_pango:
- **/
-static gchar *
-egg_markdown_linkbuilder_pango (gchar *title, gchar *uri, gint link_id)
-{
- /* FIXME: This is a nasty hack, since extending Pango markup to allow new tags
- * is too complicated. We use the language code as a link index
- * since it won't allow anything besides letters or numbers.
- * To obtain the link URI, use egg_markdown_get_link_uri(). */
- return g_strdup_printf("<span lang=\"%d\" foreground=\"blue\"><u>%s</u></span>",
- link_id, title);
-}
-
-/**
- * egg_markdown_linkbuilder_html
- **/
-static gchar *
-egg_markdown_linkbuilder_html (gchar *title, gchar *uri, gint link_id)
-{
- return g_strdup_printf("<a href=\"%s\">%s</a>", uri, title);
-}
-
-/**
- * egg_markdown_linkbuilder_text
- **/
-static gchar *
-egg_markdown_linkbuilder_text (gchar *title, gchar *uri, gint link_id)
-{
- return g_strdup_printf("%s (%s)", title, uri);
-}
-
-/**
- * egg_markdown_imagebuilder_pango:
- **/
-static gchar *
-egg_markdown_imagebuilder_pango (gchar *alt_text, gchar *uri, gint link_id)
-{
- /* FIXME See egg_markdown_linkbuilder_pango() */
- return g_strdup_printf("<span lang=\"%d\" underline=\"double\">%s</span>",
- link_id, alt_text);
-}
-
-/**
- * egg_markdown_imagebuilder_html
- **/
-static gchar *
-egg_markdown_imagebuilder_html (gchar *alt_text, gchar *uri, gint link_id)
-{
- return g_strdup_printf("<img src=\"%s\" alt=\"%s\">", uri, alt_text);
-}
-
-/**
- * egg_markdown_imagebuilder_text
- **/
-static gchar *
-egg_markdown_imagebuilder_text (gchar *alt_text, gchar *uri, gint link_id)
-{
- return g_strdup(alt_text);
-}
-
-/**
- * egg_markdown_set_output:
- **/
-gboolean
-egg_markdown_set_output (EggMarkdown *self, EggMarkdownOutput output)
-{
- gboolean ret = TRUE;
- g_return_val_if_fail (EGG_IS_MARKDOWN (self), FALSE);
-
- /* PangoMarkup */
- if (output == EGG_MARKDOWN_OUTPUT_PANGO) {
- self->priv->tags.em_start = "<i>";
- self->priv->tags.em_end = "</i>";
- self->priv->tags.strong_start = "<b>";
- self->priv->tags.strong_end = "</b>";
- self->priv->tags.code_start = "<tt><span bgcolor=\"#eee\">";
- self->priv->tags.code_end = "</span></tt>";
- self->priv->tags.h1_start = "<span color=\"#444\" size=\"xx-large\"><b>";
- self->priv->tags.h1_end = "</b></span>";
- self->priv->tags.h2_start = "<big><b>";
- self->priv->tags.h2_end = "</b></big>";
- self->priv->tags.bullett_start = " • ";
- self->priv->tags.bullett_end = "";
- self->priv->tags.rule = "⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯\n";
- self->priv->tags.link_builder = egg_markdown_linkbuilder_pango;
- self->priv->tags.image_builder = egg_markdown_imagebuilder_pango;
-
- /* XHTML */
- } else if (output == EGG_MARKDOWN_OUTPUT_HTML) {
- self->priv->tags.em_start = "<em>";
- self->priv->tags.em_end = "<em>";
- self->priv->tags.strong_start = "<strong>";
- self->priv->tags.strong_end = "</strong>";
- self->priv->tags.code_start = "<code>";
- self->priv->tags.code_end = "</code>";
- self->priv->tags.h1_start = "<h1>";
- self->priv->tags.h1_end = "</h1>";
- self->priv->tags.h2_start = "<h2>";
- self->priv->tags.h2_end = "</h2>";
- self->priv->tags.bullett_start = "<li>";
- self->priv->tags.bullett_end = "</li>";
- self->priv->tags.rule = "<hr>";
- self->priv->tags.link_builder = egg_markdown_linkbuilder_html;
- self->priv->tags.image_builder = egg_markdown_imagebuilder_html;
-
- /* plain text */
- } else if (output == EGG_MARKDOWN_OUTPUT_TEXT) {
- self->priv->tags.em_start = "";
- self->priv->tags.em_end = "";
- self->priv->tags.strong_start = "";
- self->priv->tags.strong_end = "";
- self->priv->tags.code_start = "";
- self->priv->tags.code_end = "";
- self->priv->tags.h1_start = "[";
- self->priv->tags.h1_end = "]";
- self->priv->tags.h2_start = "-";
- self->priv->tags.h2_end = "-";
- self->priv->tags.bullett_start = "* ";
- self->priv->tags.bullett_end = "";
- self->priv->tags.rule = " ----- \n";
- self->priv->tags.link_builder = egg_markdown_linkbuilder_text;
- self->priv->tags.image_builder = egg_markdown_imagebuilder_text;
-
- /* unknown */
- } else {
- g_warning ("unknown output enum");
- ret = FALSE;
- }
-
- /* save if valid */
- if (ret)
- self->priv->output = output;
- return ret;
-}
-
-/**
- * egg_markdown_set_max_lines:
- **/
-gboolean
-egg_markdown_set_max_lines (EggMarkdown *self, gint max_lines)
-{
- g_return_val_if_fail (EGG_IS_MARKDOWN (self), FALSE);
- self->priv->max_lines = max_lines;
- return TRUE;
-}
-
-/**
- * egg_markdown_set_smart_quoting:
- **/
-gboolean
-egg_markdown_set_smart_quoting (EggMarkdown *self, gboolean smart_quoting)
-{
- g_return_val_if_fail (EGG_IS_MARKDOWN (self), FALSE);
- self->priv->smart_quoting = smart_quoting;
- return TRUE;
-}
-
-/**
- * egg_markdown_set_escape:
- **/
-gboolean
-egg_markdown_set_escape (EggMarkdown *self, gboolean escape)
-{
- g_return_val_if_fail (EGG_IS_MARKDOWN (self), FALSE);
- self->priv->escape = escape;
- return TRUE;
-}
-
-/**
- * egg_markdown_set_autocode:
- **/
-gboolean
-egg_markdown_set_autocode (EggMarkdown *self, gboolean autocode)
-{
- g_return_val_if_fail (EGG_IS_MARKDOWN (self), FALSE);
- self->priv->autocode = autocode;
- return TRUE;
-}
-
-/**
- * egg_markdown_parse:
- **/
-gchar *
-egg_markdown_parse (EggMarkdown *self, const gchar *markdown)
-{
- gchar **lines;
- guint i;
- guint len;
- gchar *temp;
- gboolean ret;
-
- g_return_val_if_fail (EGG_IS_MARKDOWN (self), NULL);
- g_return_val_if_fail (self->priv->output != EGG_MARKDOWN_OUTPUT_UNKNOWN, NULL);
-
- DEBUG ("input='%s'", markdown);
-
- /* process */
- self->priv->mode = EGG_MARKDOWN_MODE_UNKNOWN;
- self->priv->line_count = 0;
- g_string_truncate (self->priv->pending, 0);
- g_string_truncate (self->priv->processed, 0);
- lines = g_strsplit (markdown, "\n", -1);
- len = g_strv_length (lines);
-
- /* process each line */
- for (i=0; i<len; i++) {
- ret = egg_markdown_to_text_line_process (self, lines[i]);
- if (!ret)
- break;
- }
- g_strfreev (lines);
- egg_markdown_flush_pending (self);
-
- /* remove trailing \n */
- while (g_str_has_suffix (self->priv->processed->str, "\n"))
- g_string_set_size (self->priv->processed, self->priv->processed->len - 1);
-
- /* get a copy */
- temp = g_strdup (self->priv->processed->str);
- g_string_truncate (self->priv->pending, 0);
- g_string_truncate (self->priv->processed, 0);
-
- DEBUG ("output='%s'", temp);
-
- return temp;
-}
-
-/**
- * egg_markdown_class_init:
- * @klass: The EggMarkdownClass
- **/
-static void
-egg_markdown_class_init (EggMarkdownClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = egg_markdown_finalize;
- g_type_class_add_private (klass, sizeof (EggMarkdownPrivate));
-}
-
-/**
- * egg_markdown_init:
- **/
-static void
-egg_markdown_init (EggMarkdown *self)
-{
- self->priv = EGG_MARKDOWN_GET_PRIVATE (self);
-
- self->priv->mode = EGG_MARKDOWN_MODE_UNKNOWN;
- self->priv->output = EGG_MARKDOWN_OUTPUT_UNKNOWN;
- self->priv->pending = g_string_new ("");
- self->priv->processed = g_string_new ("");
- self->priv->link_table = g_array_new(FALSE, FALSE, sizeof(gchar *));
- self->priv->max_lines = -1;
- self->priv->smart_quoting = FALSE;
- self->priv->escape = FALSE;
- self->priv->autocode = FALSE;
-}
-
-/**
- * egg_markdown_finalize:
- * @object: The object to finalize
- **/
-static void
-egg_markdown_finalize (GObject *object)
-{
- EggMarkdown *self;
- int i;
-
- g_return_if_fail (EGG_IS_MARKDOWN (object));
-
- self = EGG_MARKDOWN (object);
-
- g_return_if_fail (self->priv != NULL);
- g_string_free (self->priv->pending, TRUE);
- g_string_free (self->priv->processed, TRUE);
-
- for (i = 0; i < self->priv->link_table->len; i++) {
- g_free(g_array_index(self->priv->link_table, gchar *, i));
- }
- g_array_free (self->priv->link_table, TRUE);
-
- G_OBJECT_CLASS (egg_markdown_parent_class)->finalize (object);
-}
-
-/**
- * egg_markdown_new:
- *
- * Return value: a new EggMarkdown object.
- **/
-EggMarkdown *
-egg_markdown_new (void)
-{
- EggMarkdown *self;
- self = g_object_new (EGG_TYPE_MARKDOWN, NULL);
- return EGG_MARKDOWN (self);
-}
-
-/***************************************************************************
- *** MAKE CHECK TESTS ***
- ***************************************************************************/
-#ifdef EGG_TEST
-#include "egg-test.h"
-
-void
-egg_markdown_test (EggTest *test)
-{
- EggMarkdown *self;
- gchar *text;
- gboolean ret;
- const gchar *markdown;
- const gchar *markdown_expected;
-
- if (!egg_test_start (test, "EggMarkdown"))
- return;
-
- /************************************************************
- **************** line_is_rule **************
- ************************************************************/
- ret = egg_markdown_to_text_line_is_rule ("* * *");
- egg_test_title_assert (test, "is rule (1)", ret);
-
- /************************************************************/
- ret = egg_markdown_to_text_line_is_rule ("***");
- egg_test_title_assert (test, "is rule (2)", ret);
-
- /************************************************************/
- ret = egg_markdown_to_text_line_is_rule ("*****");
- egg_test_title_assert (test, "is rule (3)", ret);
-
- /************************************************************/
- ret = egg_markdown_to_text_line_is_rule ("- - -");
- egg_test_title_assert (test, "is rule (4)", ret);
-
- /************************************************************/
- ret = egg_markdown_to_text_line_is_rule ("---------------------------------------");
- egg_test_title_assert (test, "is rule (5)", ret);
-
- /************************************************************/
- ret = egg_markdown_to_text_line_is_rule ("");
- egg_test_title_assert (test, "is rule (blank)", !ret);
-
- /************************************************************/
- ret = egg_markdown_to_text_line_is_rule ("richard hughes");
- egg_test_title_assert (test, "is rule (text)", !ret);
-
- /************************************************************/
- ret = egg_markdown_to_text_line_is_rule ("- richard-hughes");
- egg_test_title_assert (test, "is rule (bullet)", !ret);
-
- /************************************************************/
- ret = egg_markdown_to_text_line_is_blank ("");
- egg_test_title_assert (test, "is blank (blank)", ret);
-
- /************************************************************/
- ret = egg_markdown_to_text_line_is_blank (" \t ");
- egg_test_title_assert (test, "is blank (mix)", ret);
-
- /************************************************************/
- ret = egg_markdown_to_text_line_is_blank ("richard hughes");
- egg_test_title_assert (test, "is blank (name)", !ret);
-
- /************************************************************/
- ret = egg_markdown_to_text_line_is_blank ("ccccccccc");
- egg_test_title_assert (test, "is blank (full)", !ret);
-
-
- /************************************************************
- **************** replace **************
- ************************************************************/
- text = egg_markdown_replace ("summary -- really -- sure!", " -- ", " – ");
- egg_test_title (test, "replace (multiple)");
- if (g_str_equal (text, "summary – really – sure!"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got %s", text);
- g_free (text);
-
- /************************************************************
- **************** formatter **************
- ************************************************************/
- text = egg_markdown_to_text_line_formatter ("**is important** text", "**", "<b>", "</b>");
- egg_test_title (test, "formatter (left)");
- if (g_str_equal (text, "<b>is important</b> text"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got %s", text);
- g_free (text);
-
- /************************************************************/
- text = egg_markdown_to_text_line_formatter ("this is **important**", "**", "<b>", "</b>");
- egg_test_title (test, "formatter (right)");
- if (g_str_equal (text, "this is <b>important</b>"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got %s", text);
- g_free (text);
-
- /************************************************************/
- text = egg_markdown_to_text_line_formatter ("**important**", "**", "<b>", "</b>");
- egg_test_title (test, "formatter (only)");
- if (g_str_equal (text, "<b>important</b>"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got %s", text);
- g_free (text);
-
- /************************************************************/
- text = egg_markdown_to_text_line_formatter ("***important***", "**", "<b>", "</b>");
- egg_test_title (test, "formatter (only)");
- if (g_str_equal (text, "<b>*important</b>*"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got %s", text);
- g_free (text);
-
- /************************************************************/
- text = egg_markdown_to_text_line_formatter ("I guess * this is * not bold", "*", "<i>", "</i>");
- egg_test_title (test, "formatter (with spaces)");
- if (g_str_equal (text, "I guess * this is * not bold"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got %s", text);
- g_free (text);
-
- /************************************************************/
- text = egg_markdown_to_text_line_formatter ("this **is important** text in **several** places", "**", "<b>", "</b>");
- egg_test_title (test, "formatter (middle, multiple)");
- if (g_str_equal (text, "this <b>is important</b> text in <b>several</b> places"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got %s", text);
- g_free (text);
-
- /************************************************************/
- text = egg_markdown_word_auto_format_code ("this is http://www.hughsie.com/with_spaces_in_url inline link");
- egg_test_title (test, "auto formatter (url)");
- if (g_str_equal (text, "this is `http://www.hughsie.com/with_spaces_in_url` inline link"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got %s", text);
- g_free (text);
-
- /************************************************************/
- text = egg_markdown_to_text_line_formatter ("this was \"triffic\" it was", "\"", "“", "”");
- egg_test_title (test, "formatter (quotes)");
- if (g_str_equal (text, "this was “triffic” it was"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got %s", text);
- g_free (text);
-
- /************************************************************/
- text = egg_markdown_to_text_line_formatter ("This isn't a present", "'", "‘", "’");
- egg_test_title (test, "formatter (one quote)");
- if (g_str_equal (text, "This isn't a present"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got %s", text);
- g_free (text);
-
- /************************************************************
- **************** markdown **************
- ************************************************************/
- egg_test_title (test, "get EggMarkdown object");
- self = egg_markdown_new ();
- egg_test_assert (test, self != NULL);
-
- /************************************************************/
- ret = egg_markdown_set_output (self, EGG_MARKDOWN_OUTPUT_PANGO);
- egg_test_title_assert (test, "set pango output", ret);
-
- /************************************************************/
- markdown = "OEMs\n"
- "====\n"
- " - Bullett\n";
- markdown_expected =
- "<big>OEMs</big>\n"
- "• Bullett";
- egg_test_title (test, "markdown (type2 header)");
- text = egg_markdown_parse (self, markdown);
- if (g_str_equal (text, markdown_expected))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s', expected '%s'", text, markdown_expected);
- g_free (text);
-
-
- /************************************************************/
- markdown = "this is http://www.hughsie.com/with_spaces_in_url inline link\n";
- markdown_expected = "this is <tt>http://www.hughsie.com/with_spaces_in_url</tt> inline link";
- egg_test_title (test, "markdown (autocode)");
- egg_markdown_set_autocode (self, TRUE);
- text = egg_markdown_parse (self, markdown);
- if (g_str_equal (text, markdown_expected))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s', expected '%s'", text, markdown_expected);
- g_free (text);
-
- /************************************************************/
- markdown = "*** This software is currently in alpha state ***\n";
- markdown_expected = "<b><i> This software is currently in alpha state </b></i>";
- egg_test_title (test, "markdown some invalid header");
- text = egg_markdown_parse (self, markdown);
- if (g_str_equal (text, markdown_expected))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s', expected '%s'", text, markdown_expected);
- g_free (text);
-
- /************************************************************/
- markdown = " - This is a *very*\n"
- " short paragraph\n"
- " that is not usual.\n"
- " - Another";
- markdown_expected =
- "• This is a <i>very</i> short paragraph that is not usual.\n"
- "• Another";
- egg_test_title (test, "markdown (complex1)");
- text = egg_markdown_parse (self, markdown);
- if (g_str_equal (text, markdown_expected))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s', expected '%s'", text, markdown_expected);
- g_free (text);
-
- /************************************************************/
- markdown = "* This is a *very*\n"
- " short paragraph\n"
- " that is not usual.\n"
- "* This is the second\n"
- " bullett point.\n"
- "* And the third.\n"
- " \n"
- "* * *\n"
- " \n"
- "Paragraph one\n"
- "isn't __very__ long at all.\n"
- "\n"
- "Paragraph two\n"
- "isn't much better.";
- markdown_expected =
- "• This is a <i>very</i> short paragraph that is not usual.\n"
- "• This is the second bullett point.\n"
- "• And the third.\n"
- "⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯\n"
- "Paragraph one isn't <b>very</b> long at all.\n"
- "Paragraph two isn't much better.";
- egg_test_title (test, "markdown (complex1)");
- text = egg_markdown_parse (self, markdown);
- if (g_str_equal (text, markdown_expected))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s', expected '%s'", text, markdown_expected);
- g_free (text);
-
- /************************************************************/
- markdown = "This is a spec file description or\n"
- "an **update** description in bohdi.\n"
- "\n"
- "* * *\n"
- "# Big title #\n"
- "\n"
- "The *following* things 'were' fixed:\n"
- "- Fix `dave`\n"
- "* Fubar update because of \"security\"\n";
- markdown_expected =
- "This is a spec file description or an <b>update</b> description in bohdi.\n"
- "⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯\n"
- "<big>Big title</big>\n"
- "The <i>following</i> things 'were' fixed:\n"
- "• Fix <tt>dave</tt>\n"
- "• Fubar update because of \"security\"";
- egg_test_title (test, "markdown (complex2)");
- text = egg_markdown_parse (self, markdown);
- if (g_str_equal (text, markdown_expected))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s', expected '%s'", text, markdown_expected);
- g_free (text);
-
- /************************************************************/
- markdown = "* list seporated with spaces -\n"
- " first item\n"
- "\n"
- "* second item\n"
- "\n"
- "* third item\n";
- markdown_expected =
- "• list seporated with spaces - first item\n"
- "• second item\n"
- "• third item";
- egg_test_title (test, "markdown (list with spaces)");
- text = egg_markdown_parse (self, markdown);
- if (g_str_equal (text, markdown_expected))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s', expected '%s'", text, markdown_expected);
- g_free (text);
-
- /************************************************************/
- ret = egg_markdown_set_max_lines (self, 1);
- egg_test_title_assert (test, "set max_lines", ret);
-
- /************************************************************/
- markdown = "* list seporated with spaces -\n"
- " first item\n"
- "* second item\n";
- markdown_expected =
- "• list seporated with spaces - first item";
- egg_test_title (test, "markdown (one line limit)");
- text = egg_markdown_parse (self, markdown);
- if (g_str_equal (text, markdown_expected))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s', expected '%s'", text, markdown_expected);
- g_free (text);
-
- /************************************************************/
- ret = egg_markdown_set_max_lines (self, 1);
- egg_test_title_assert (test, "set max_lines", ret);
-
- /************************************************************/
- markdown = "* list & spaces";
- markdown_expected =
- "• list & spaces";
- egg_test_title (test, "markdown (escaping)");
- text = egg_markdown_parse (self, markdown);
- if (g_str_equal (text, markdown_expected))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s', expected '%s'", text, markdown_expected);
- g_free (text);
-
- /************************************************************/
- egg_test_title (test, "markdown (free text)");
- text = egg_markdown_parse (self, "This isn't a present");
- if (g_str_equal (text, "This isn't a present"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s'", text);
- g_free (text);
-
- /************************************************************/
- egg_test_title (test, "markdown (autotext underscore)");
- text = egg_markdown_parse (self, "This isn't CONFIG_UEVENT_HELPER_PATH present");
- if (g_str_equal (text, "This isn't <tt>CONFIG_UEVENT_HELPER_PATH</tt> present"))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s'", text);
- g_free (text);
-
- /************************************************************/
- markdown = "*Thu Mar 12 12:00:00 2009* Dan Walsh <dwalsh@redhat.com> - 2.0.79-1\n"
- "- Update to upstream \n"
- " * Netlink socket handoff patch from Adam Jackson.\n"
- " * AVC caching of compute_create results by Eric Paris.\n"
- "\n"
- "*Tue Mar 10 12:00:00 2009* Dan Walsh <dwalsh@redhat.com> - 2.0.78-5\n"
- "- Add patch from ajax to accellerate X SELinux \n"
- "- Update eparis patch\n";
- markdown_expected =
- "<i>Thu Mar 12 12:00:00 2009</i> Dan Walsh <tt>&lt;dwalsh@redhat.com&gt;</tt> - 2.0.79-1\n"
- "• Update to upstream\n"
- "• Netlink socket handoff patch from Adam Jackson.\n"
- "• AVC caching of compute_create results by Eric Paris.\n"
- "<i>Tue Mar 10 12:00:00 2009</i> Dan Walsh <tt>&lt;dwalsh@redhat.com&gt;</tt> - 2.0.78-5\n"
- "• Add patch from ajax to accellerate X SELinux\n"
- "• Update eparis patch";
- egg_test_title (test, "markdown (end of bullett)");
- egg_markdown_set_escape (self, TRUE);
- ret = egg_markdown_set_max_lines (self, 1024);
- text = egg_markdown_parse (self, markdown);
- if (g_str_equal (text, markdown_expected))
- egg_test_success (test, NULL);
- else
- egg_test_failed (test, "failed, got '%s', expected '%s'", text, markdown_expected);
- g_free (text);
-
- g_object_unref (self);
-
- egg_test_end (test);
-}
-#endif
-
diff --git a/hardinfo2/help-viewer/help-viewer.c b/hardinfo2/help-viewer/help-viewer.c
deleted file mode 100644
index ace6ef37..00000000
--- a/hardinfo2/help-viewer/help-viewer.c
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- * HelpViewer - Simple Help file browser
- * Copyright (C) 2009 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
- */
-
-#define _GNU_SOURCE /* for strcasestr() */
-#include <string.h>
-#include <stdlib.h>
-#include <gtk/gtk.h>
-
-#include "config.h"
-#include "shell.h"
-#include "markdown-text-view.h"
-#include "help-viewer.h"
-#include "hardinfo.h"
-
-static void do_search(HelpViewer *hv, gchar *text);
-
-static void forward_clicked(GtkWidget *widget, gpointer data)
-{
- HelpViewer *hv = (HelpViewer *)data;
- GSList *temp;
-
- /* puts the current file on the back stack */
- hv->back_stack = g_slist_prepend(hv->back_stack, g_strdup(hv->current_file));
-
- /* enables the back button */
- gtk_widget_set_sensitive(hv->btn_back, TRUE);
-
- /* loads the new current file */
- if (g_str_has_prefix(hv->forward_stack->data, "search://")) {
- do_search(hv, hv->forward_stack->data + sizeof("search://") - 1);
- } else {
- markdown_textview_load_file(MARKDOWN_TEXTVIEW(hv->text_view), hv->forward_stack->data);
- }
-
- /* pops the stack */
- temp = hv->forward_stack->next;
- g_free(hv->forward_stack->data);
- g_slist_free1(hv->forward_stack);
- hv->forward_stack = temp;
-
- /* if there aren't items on forward stack anymore, disables the button */
- if (!hv->forward_stack) {
- gtk_widget_set_sensitive(hv->btn_forward, FALSE);
- }
-}
-
-static void back_clicked(GtkWidget *widget, gpointer data)
-{
- HelpViewer *hv = (HelpViewer *)data;
- GSList *temp;
-
- /* puts the current file on the forward stack */
- hv->forward_stack = g_slist_prepend(hv->forward_stack, g_strdup(hv->current_file));
-
- /* enables the forward button */
- gtk_widget_set_sensitive(hv->btn_forward, TRUE);
-
- /* loads the new current file */
- if (g_str_has_prefix(hv->back_stack->data, "search://")) {
- do_search(hv, hv->back_stack->data + sizeof("search://") - 1);
- } else {
- markdown_textview_load_file(MARKDOWN_TEXTVIEW(hv->text_view), hv->back_stack->data);
- }
-
- /* pops the stack */
- temp = hv->back_stack->next;
- g_free(hv->back_stack->data);
- g_slist_free1(hv->back_stack);
- hv->back_stack = temp;
-
- /* if there aren't items on back stack anymore, disables the button */
- if (!hv->back_stack) {
- gtk_widget_set_sensitive(hv->btn_back, FALSE);
- }
-}
-
-static void link_clicked(MarkdownTextView *text_view, gchar *link, gpointer data)
-{
- HelpViewer *hv = (HelpViewer *)data;
-
- if (g_str_has_prefix(link, "http://")) {
- open_url(link);
- } else {
- /* adds the current file to the back stack (before loading the new file */
- hv->back_stack = g_slist_prepend(hv->back_stack, g_strdup(hv->current_file));
- gtk_widget_set_sensitive(hv->btn_back, TRUE);
-
- gtk_statusbar_pop(GTK_STATUSBAR(hv->status_bar), 1);
- markdown_textview_load_file(text_view, link);
- }
-}
-
-static void file_load_complete(MarkdownTextView *text_view, gchar *file, gpointer data)
-{
- HelpViewer *hv = (HelpViewer *)data;
-
- /* sets the currently-loaded file */
- g_free(hv->current_file);
- hv->current_file = g_strdup(file);
-
- gtk_statusbar_push(GTK_STATUSBAR(hv->status_bar), 1, "Done.");
-}
-
-static void hovering_over_link(MarkdownTextView *text_view, gchar *link, gpointer data)
-{
- HelpViewer *hv = (HelpViewer *)data;
- gchar *temp;
-
- temp = g_strconcat("Link to ", link, NULL);
-
- gtk_statusbar_push(GTK_STATUSBAR(hv->status_bar), 1, temp);
-
- g_free(temp);
-}
-
-static void hovering_over_text(MarkdownTextView *text_view, gpointer data)
-{
- HelpViewer *hv = (HelpViewer *)data;
-
- gtk_statusbar_pop(GTK_STATUSBAR(hv->status_bar), 1);
-}
-
-static void do_search(HelpViewer *hv, gchar *text)
-{
- GString *markdown;
- GDir *dir;
- gchar **terms;
- gint no_results = 0;
- int term;
-
- /*
- * FIXME: This search is currently pretty slow; think on a better way to do search.
- * Ideas:
- * - Build a index the first time the help file is opened
- * - Search only titles and subtitles
- */
-
- terms = g_strsplit(text, " ", 0);
- markdown = g_string_new("# Search Results\n");
- g_string_append_printf(markdown, "Search terms: *%s*\n****\n", text);
-
- gtk_widget_set_sensitive(hv->window, FALSE);
-
- if ((dir = g_dir_open(hv->help_directory, 0, NULL))) {
- const gchar *name;
-
- while ((name = g_dir_read_name(dir))) {
-#if GTK_CHECK_VERSION(2,16,0)
- gtk_entry_progress_pulse(GTK_ENTRY(hv->text_search));
-#endif /* GTK_CHECK_VERSION(2,16,0) */
-
- if (g_str_has_suffix(name, ".hlp")) {
- FILE *file;
- gchar *path;
- gchar buffer[256];
-
- path = g_build_filename(hv->help_directory, name, NULL);
- if ((file = fopen(path, "rb"))) {
- gboolean found = FALSE;
- gchar *title = NULL;
-
- while (!found && fgets(buffer, sizeof buffer, file)) {
- if (!title && (g_str_has_prefix(buffer, "# ") || g_str_has_prefix(buffer, " # "))) {
- title = g_strstrip(strchr(buffer, '#') + 1);
- title = g_strdup(title);
- }
-
- for (term = 0; !found && terms[term]; term++) {
-#ifdef strcasestr
- found = strcasestr(buffer, terms[term]) != NULL;
-#else
- gchar *upper1, *upper2;
-
- upper1 = g_utf8_strup(buffer, -1);
- upper2 = g_utf8_strup(terms[term], -1);
-
- found = strstr(upper1, upper2) != NULL;
-
- g_free(upper1);
- g_free(upper2);
-#endif
- }
- }
-
- if (found) {
- no_results++;
-
- if (title) {
- g_string_append_printf(markdown,
- "* [%s %s]\n", name, title);
- } else {
- g_string_append_printf(markdown,
- "* [%s %s]\n", name, name);
- }
- }
-
- g_free(title);
- fclose(file);
- }
-
- g_free(path);
- }
- }
-
- g_dir_close(dir);
- }
-
-
- if (no_results == 0) {
- g_string_append_printf(markdown,
- "Search returned no results.");
- } else {
- g_string_append_printf(markdown,
- "****\n%d results found.", no_results);
- }
-
- /* shows the results inside the textview */
- markdown_textview_set_text(MARKDOWN_TEXTVIEW(hv->text_view), markdown->str);
-
- g_free(hv->current_file);
- hv->current_file = g_strdup_printf("search://%s", text);
-
-#if GTK_CHECK_VERSION(2,16,0)
- gtk_entry_set_progress_fraction(GTK_ENTRY(hv->text_search), 0.0f);
-#endif /* GTK_CHECK_VERSION(2,16,0) */
- gtk_widget_set_sensitive(hv->window, TRUE);
-
- g_string_free(markdown, TRUE);
- g_strfreev(terms);
-}
-
-static void activate(GtkEntry *entry, gpointer data)
-{
- HelpViewer *hv = (HelpViewer *)data;
-
- /* adds the current file to the back stack (before loading the new file */
- hv->back_stack = g_slist_prepend(hv->back_stack, g_strdup(hv->current_file));
- gtk_widget_set_sensitive(hv->btn_back, TRUE);
-
- do_search((HelpViewer *)data, (gchar *)gtk_entry_get_text(entry));
-}
-
-#if GTK_CHECK_VERSION(2,16,0)
-static void icon_press(GtkEntry *entry, gint position,
- GdkEventButton *event, gpointer data)
-{
- if (position == GTK_ENTRY_ICON_SECONDARY)
- activate(entry, data);
-}
-#endif /* GTK_CHECK_VERSION(2,16,0) */
-
-static void home_clicked(GtkWidget *button, gpointer data)
-{
- HelpViewer *hv = (HelpViewer *)data;
-
- help_viewer_open_page(hv, "index.hlp");
-}
-
-void help_viewer_open_page(HelpViewer *hv, const gchar *page)
-{
- gchar *temp;
-
- temp = g_strdup(hv->current_file);
-
- if (!markdown_textview_load_file(MARKDOWN_TEXTVIEW(hv->text_view), page)) {
- GtkWidget *dialog;
- Shell *shell;
-
- shell = shell_get_main_shell();
- dialog = gtk_message_dialog_new(GTK_WINDOW(shell->window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "Cannot open help file (%s).",
- page);
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
-
- g_free(temp);
- } else {
- /* adds the current file to the back stack (before loading the new file */
- hv->back_stack = g_slist_prepend(hv->back_stack, temp);
- gtk_widget_set_sensitive(hv->btn_back, TRUE);
- gtk_window_present(GTK_WINDOW(hv->window));
- }
-}
-
-void help_viewer_destroy(HelpViewer *hv)
-{
- Shell *shell;
- GSList *item;
-
- for (item = hv->back_stack; item; item = item->next) {
- g_free(item->data);
- }
-
- for (item = hv->forward_stack; item; item = item->next) {
- g_free(item->data);
- }
-
- g_slist_free(hv->back_stack);
- g_slist_free(hv->forward_stack);
-
- g_free(hv->current_file);
- g_free(hv->help_directory);
-
- shell = shell_get_main_shell();
- shell->help_viewer = NULL;
-}
-
-static gboolean destroy_me(GtkWidget *widget, gpointer data)
-{
- HelpViewer *hv = (HelpViewer *)data;
-
- help_viewer_destroy(hv);
-
- return FALSE;
-}
-
-HelpViewer *
-help_viewer_new (const gchar *help_dir, const gchar *help_file)
-{
- Shell *shell;
- HelpViewer *hv;
- GtkWidget *help_viewer;
- GtkWidget *vbox;
- GtkWidget *hbox;
- GtkWidget *toolbar1;
- GtkIconSize tmp_toolbar_icon_size;
- GtkWidget *btn_back;
- GtkWidget *btn_forward;
- GtkWidget *separatortoolitem1;
- GtkWidget *toolbar2;
- GtkWidget *toolitem3;
-#if !GTK_CHECK_VERSION(2,16,0)
- GtkWidget *label1;
-#endif /* GTK_CHECK_VERSION(2,16,0) */
- GtkWidget *toolitem4;
- GtkWidget *txt_search;
- GtkWidget *scrolledhelp_viewer;
- GtkWidget *markdown_textview;
- GtkWidget *status_bar;
- GtkWidget *btn_home;
- GdkPixbuf *icon;
-
- shell = shell_get_main_shell();
-
- help_viewer = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_widget_set_size_request(help_viewer, 300, 200);
- gtk_window_set_default_size(GTK_WINDOW(help_viewer), 640, 480);
- gtk_window_set_title(GTK_WINDOW(help_viewer), "Help Viewer");
- gtk_window_set_transient_for(GTK_WINDOW(help_viewer), GTK_WINDOW(shell->window));
-
- icon = gtk_widget_render_icon(help_viewer, GTK_STOCK_HELP,
- GTK_ICON_SIZE_DIALOG,
- NULL);
- gtk_window_set_icon(GTK_WINDOW(help_viewer), icon);
- g_object_unref(icon);
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_widget_show (vbox);
- gtk_container_add (GTK_CONTAINER (help_viewer), vbox);
-
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox);
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
-
- toolbar1 = gtk_toolbar_new ();
- gtk_widget_show (toolbar1);
- gtk_box_pack_start (GTK_BOX (hbox), toolbar1, TRUE, TRUE, 0);
- gtk_toolbar_set_style (GTK_TOOLBAR (toolbar1), GTK_TOOLBAR_BOTH_HORIZ);
- tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar1));
-
- btn_back = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-go-back");
- gtk_widget_show (btn_back);
- gtk_container_add (GTK_CONTAINER (toolbar1), btn_back);
- gtk_tool_item_set_is_important (GTK_TOOL_ITEM (btn_back), TRUE);
- gtk_widget_set_sensitive(btn_back, FALSE);
-
- btn_forward = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-go-forward");
- gtk_widget_show (btn_forward);
- gtk_container_add (GTK_CONTAINER (toolbar1), btn_forward);
- gtk_widget_set_sensitive(btn_forward, FALSE);
-
- separatortoolitem1 = (GtkWidget*) gtk_separator_tool_item_new ();
- gtk_widget_show (separatortoolitem1);
- gtk_container_add (GTK_CONTAINER (toolbar1), separatortoolitem1);
-
- btn_home = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-home");
- gtk_widget_show (btn_home);
- gtk_container_add (GTK_CONTAINER (toolbar1), btn_home);
-
- toolbar2 = gtk_toolbar_new ();
- gtk_widget_show (toolbar2);
- gtk_box_pack_end (GTK_BOX (hbox), toolbar2, FALSE, TRUE, 0);
- gtk_toolbar_set_style (GTK_TOOLBAR (toolbar2), GTK_TOOLBAR_BOTH_HORIZ);
- gtk_toolbar_set_show_arrow (GTK_TOOLBAR (toolbar2), FALSE);
- tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar2));
-
- toolitem3 = (GtkWidget*) gtk_tool_item_new ();
- gtk_widget_show (toolitem3);
- gtk_container_add (GTK_CONTAINER (toolbar2), toolitem3);
-
-#if !GTK_CHECK_VERSION(2,16,0)
- label1 = gtk_label_new_with_mnemonic ("_Search:");
- gtk_widget_show (label1);
- gtk_container_add (GTK_CONTAINER (toolitem3), label1);
-#endif /* GTK_CHECK_VERSION(2,16,0) */
-
- toolitem4 = (GtkWidget*) gtk_tool_item_new ();
- gtk_widget_show (toolitem4);
- gtk_container_add (GTK_CONTAINER (toolbar2), toolitem4);
-
- txt_search = gtk_entry_new ();
- gtk_widget_show (txt_search);
- gtk_container_add (GTK_CONTAINER (toolitem4), txt_search);
- gtk_entry_set_invisible_char (GTK_ENTRY (txt_search), 9679);
-#if GTK_CHECK_VERSION(2,16,0)
- gtk_entry_set_icon_from_stock(GTK_ENTRY(txt_search),
- GTK_ENTRY_ICON_SECONDARY,
- GTK_STOCK_FIND);
-#endif /* GTK_CHECK_VERSION(2,16,0) */
-
- scrolledhelp_viewer = gtk_scrolled_window_new (NULL, NULL);
- gtk_widget_show (scrolledhelp_viewer);
- gtk_box_pack_start (GTK_BOX (vbox), scrolledhelp_viewer, TRUE, TRUE, 0);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledhelp_viewer), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-
- markdown_textview = markdown_textview_new();
- markdown_textview_set_image_directory(MARKDOWN_TEXTVIEW(markdown_textview), help_dir);
- gtk_widget_show (markdown_textview);
- gtk_container_add (GTK_CONTAINER (scrolledhelp_viewer), markdown_textview);
-
- status_bar = gtk_statusbar_new ();
- gtk_widget_show (status_bar);
- gtk_box_pack_start (GTK_BOX (vbox), status_bar, FALSE, FALSE, 0);
-
- hv = g_new0(HelpViewer, 1);
- hv->window = help_viewer;
- hv->status_bar = status_bar;
- hv->btn_back = btn_back;
- hv->btn_forward = btn_forward;
- hv->text_view = markdown_textview;
- hv->text_search = txt_search;
- hv->help_directory = g_strdup(help_dir);
- hv->back_stack = NULL;
- hv->forward_stack = NULL;
-
- g_signal_connect(markdown_textview, "link-clicked", G_CALLBACK(link_clicked), hv);
- g_signal_connect(markdown_textview, "hovering-over-link", G_CALLBACK(hovering_over_link), hv);
- g_signal_connect(markdown_textview, "hovering-over-text", G_CALLBACK(hovering_over_text), hv);
- g_signal_connect(markdown_textview, "file-load-complete", G_CALLBACK(file_load_complete), hv);
-
- g_signal_connect(btn_back, "clicked", G_CALLBACK(back_clicked), hv);
- g_signal_connect(btn_forward, "clicked", G_CALLBACK(forward_clicked), hv);
- g_signal_connect(btn_home, "clicked", G_CALLBACK(home_clicked), hv);
-
- g_signal_connect(help_viewer, "delete-event", G_CALLBACK(destroy_me), hv);
- g_signal_connect(txt_search, "activate", G_CALLBACK(activate), hv);
-
-#if GTK_CHECK_VERSION(2,16,0)
- g_signal_connect(txt_search, "icon-press", G_CALLBACK(icon_press), hv);
-#endif /* GTK_CHECK_VERSION(2,16,0) */
-
- if (!markdown_textview_load_file(MARKDOWN_TEXTVIEW(markdown_textview), help_file ? help_file : "index.hlp")) {
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new(GTK_WINDOW(shell->window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "Cannot open help file (%s).",
- help_file ? help_file : "index.hlp");
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
-
- gtk_widget_destroy(hv->window);
- g_free(hv);
-
- return NULL;
- }
-
- gtk_widget_show_all(hv->window);
-
- return hv;
-}
-
-#ifdef HELPVIEWER_TEST
-int main(int argc, char **argv)
-{
- HelpViewer *hv;
-
- gtk_init(&argc, &argv);
-
- hv = help_viewer_new("documentation", NULL);
-
- gtk_main();
-}
-#endif /* HELPVIEWER_TEST */
diff --git a/hardinfo2/help-viewer/markdown-text-view.c b/hardinfo2/help-viewer/markdown-text-view.c
deleted file mode 100644
index 6bfcc131..00000000
--- a/hardinfo2/help-viewer/markdown-text-view.c
+++ /dev/null
@@ -1,637 +0,0 @@
-/*
- * Markdown Text View
- * GtkTextView subclass that supports Markdown syntax
- *
- * Copyright (C) 2009 Leandro Pereira <leandro@hardinfo.org>
- * Portions Copyright (C) 2007-2008 Richard Hughes <richard@hughsie.com>
- * Portions Copyright (C) GTK+ Team (based on hypertext textview demo)
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-#include <stdlib.h>
-#include <gdk/gdkkeysyms.h>
-
-#include "markdown-text-view.h"
-#include "config.h"
-
-static GdkCursor *hand_cursor = NULL;
-
-G_DEFINE_TYPE(MarkdownTextView, markdown_textview, GTK_TYPE_TEXT_VIEW);
-
-enum {
- LINK_CLICKED,
- HOVERING_OVER_LINK,
- HOVERING_OVER_TEXT,
- FILE_LOAD_COMPLETE,
- LAST_SIGNAL
-};
-
-static guint markdown_textview_signals[LAST_SIGNAL] = { 0 };
-
-GtkWidget *markdown_textview_new()
-{
- return g_object_new(TYPE_MARKDOWN_TEXTVIEW, NULL);
-}
-
-static void markdown_textview_class_init(MarkdownTextViewClass * klass)
-{
- GObjectClass *object_class;
-
- if (!hand_cursor) {
- hand_cursor = gdk_cursor_new(GDK_HAND2);
- }
-
- object_class = G_OBJECT_CLASS(klass);
-
- markdown_textview_signals[LINK_CLICKED] = g_signal_new(
- "link-clicked",
- G_OBJECT_CLASS_TYPE(object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET(MarkdownTextViewClass, link_clicked),
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE,
- 1,
- G_TYPE_STRING);
-
- markdown_textview_signals[HOVERING_OVER_LINK] = g_signal_new(
- "hovering-over-link",
- G_OBJECT_CLASS_TYPE(object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET(MarkdownTextViewClass, hovering_over_link),
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE,
- 1,
- G_TYPE_STRING);
-
- markdown_textview_signals[HOVERING_OVER_TEXT] = g_signal_new(
- "hovering-over-text",
- G_OBJECT_CLASS_TYPE(object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET(MarkdownTextViewClass, hovering_over_text),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE,
- 0);
-
- markdown_textview_signals[FILE_LOAD_COMPLETE] = g_signal_new(
- "file-load-complete",
- G_OBJECT_CLASS_TYPE(object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET(MarkdownTextViewClass, file_load_complete),
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE,
- 1,
- G_TYPE_STRING);
-}
-
-static void
-gtk_text_buffer_insert_markup(GtkTextBuffer * buffer, GtkTextIter * iter,
- const gchar * markup)
-{
- PangoAttrIterator *paiter;
- PangoAttrList *attrlist;
- GtkTextMark *mark;
- GError *error = NULL;
- gchar *text;
-
- g_return_if_fail(GTK_IS_TEXT_BUFFER(buffer));
- g_return_if_fail(markup != NULL);
-
- if (*markup == '\000')
- return;
-
- /* invalid */
- if (!pango_parse_markup(markup, -1, 0, &attrlist, &text, NULL, &error)) {
- g_warning("Invalid markup string: %s", error->message);
- g_error_free(error);
- return;
- }
-
- /* trivial, no markup */
- if (attrlist == NULL) {
- gtk_text_buffer_insert(buffer, iter, text, -1);
- g_free(text);
- return;
- }
-
- /* create mark with right gravity */
- mark = gtk_text_buffer_create_mark(buffer, NULL, iter, FALSE);
- paiter = pango_attr_list_get_iterator(attrlist);
-
- do {
- PangoAttribute *attr;
- GtkTextTag *tag;
- GtkTextTag *tag_para;
- gint start, end;
-
- pango_attr_iterator_range(paiter, &start, &end);
-
- if (end == G_MAXINT) /* last chunk */
- end = start - 1; /* resulting in -1 to be passed to _insert */
-
- tag = gtk_text_tag_new(NULL);
-
- if ((attr = pango_attr_iterator_get(paiter, PANGO_ATTR_LANGUAGE)))
- g_object_set(tag, "language",
- pango_language_to_string(((PangoAttrLanguage *)
- attr)->value), NULL);
-
- if ((attr = pango_attr_iterator_get(paiter, PANGO_ATTR_FAMILY)))
- g_object_set(tag, "family", ((PangoAttrString *) attr)->value,
- NULL);
-
- if ((attr = pango_attr_iterator_get(paiter, PANGO_ATTR_STYLE)))
- g_object_set(tag, "style", ((PangoAttrInt *) attr)->value,
- NULL);
-
- if ((attr = pango_attr_iterator_get(paiter, PANGO_ATTR_WEIGHT)))
- g_object_set(tag, "weight", ((PangoAttrInt *) attr)->value,
- NULL);
-
- if ((attr = pango_attr_iterator_get(paiter, PANGO_ATTR_VARIANT)))
- g_object_set(tag, "variant", ((PangoAttrInt *) attr)->value,
- NULL);
-
- if ((attr = pango_attr_iterator_get(paiter, PANGO_ATTR_STRETCH)))
- g_object_set(tag, "stretch", ((PangoAttrInt *) attr)->value,
- NULL);
-
- if ((attr = pango_attr_iterator_get(paiter, PANGO_ATTR_SIZE)))
- g_object_set(tag, "size", ((PangoAttrInt *) attr)->value,
- NULL);
-
- if ((attr = pango_attr_iterator_get(paiter, PANGO_ATTR_FONT_DESC)))
- g_object_set(tag, "font-desc",
- ((PangoAttrFontDesc *) attr)->desc, NULL);
-
- if ((attr =
- pango_attr_iterator_get(paiter, PANGO_ATTR_FOREGROUND))) {
- GdkColor col = { 0,
- ((PangoAttrColor *) attr)->color.red,
- ((PangoAttrColor *) attr)->color.green,
- ((PangoAttrColor *) attr)->color.blue
- };
-
- g_object_set(tag, "foreground-gdk", &col, NULL);
- }
-
- if ((attr =
- pango_attr_iterator_get(paiter, PANGO_ATTR_BACKGROUND))) {
- GdkColor col = { 0,
- ((PangoAttrColor *) attr)->color.red,
- ((PangoAttrColor *) attr)->color.green,
- ((PangoAttrColor *) attr)->color.blue
- };
-
- g_object_set(tag, "background-gdk", &col, NULL);
- }
-
- if ((attr = pango_attr_iterator_get(paiter, PANGO_ATTR_UNDERLINE)))
- g_object_set(tag, "underline", ((PangoAttrInt *) attr)->value,
- NULL);
-
- if ((attr =
- pango_attr_iterator_get(paiter, PANGO_ATTR_STRIKETHROUGH)))
- g_object_set(tag, "strikethrough",
- (gboolean) (((PangoAttrInt *) attr)->value != 0),
- NULL);
-
- if ((attr = pango_attr_iterator_get(paiter, PANGO_ATTR_RISE)))
- g_object_set(tag, "rise", ((PangoAttrInt *) attr)->value,
- NULL);
-
- if ((attr = pango_attr_iterator_get(paiter, PANGO_ATTR_SCALE)))
- g_object_set(tag, "scale", ((PangoAttrFloat *) attr)->value,
- NULL);
-
- gtk_text_tag_table_add(gtk_text_buffer_get_tag_table(buffer), tag);
-
- tag_para =
- gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table
- (buffer), "para");
- gtk_text_buffer_insert_with_tags(buffer, iter, text + start,
- end - start, tag, tag_para, NULL);
-
- /* mark had right gravity, so it should be
- * at the end of the inserted text now */
- gtk_text_buffer_get_iter_at_mark(buffer, iter, mark);
- } while (pango_attr_iterator_next(paiter));
-
- gtk_text_buffer_delete_mark(buffer, mark);
- pango_attr_iterator_destroy(paiter);
- pango_attr_list_unref(attrlist);
- g_free(text);
-}
-
-
-static void
-set_cursor_if_appropriate(MarkdownTextView * self, gint x, gint y)
-{
- GSList *tags = NULL, *tagp = NULL;
- GtkTextIter iter;
- gboolean hovering = FALSE;
- gchar *link_uri = NULL;
-
- gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(self), &iter, x,
- y);
-
- tags = gtk_text_iter_get_tags(&iter);
- for (tagp = tags; tagp != NULL; tagp = tagp->next) {
- GtkTextTag *tag = tagp->data;
- gint is_underline = 0;
- gchar *lang = NULL;
-
- g_object_get(G_OBJECT(tag),
- "underline", &is_underline,
- "language", &lang,
- NULL);
-
- if (is_underline == 1 && lang) {
- link_uri = egg_markdown_get_link_uri(self->markdown, atoi(lang));
- g_free(lang);
- hovering = TRUE;
- break;
- }
-
- g_free(lang);
- }
-
- if (hovering != self->hovering_over_link) {
- self->hovering_over_link = hovering;
-
- if (self->hovering_over_link) {
- g_signal_emit(self, markdown_textview_signals[HOVERING_OVER_LINK],
- 0, link_uri);
- gdk_window_set_cursor(gtk_text_view_get_window
- (GTK_TEXT_VIEW(self),
- GTK_TEXT_WINDOW_TEXT), hand_cursor);
- } else {
- g_signal_emit(self, markdown_textview_signals[HOVERING_OVER_TEXT], 0);
- gdk_window_set_cursor(gtk_text_view_get_window
- (GTK_TEXT_VIEW(self),
- GTK_TEXT_WINDOW_TEXT), NULL);
- }
- }
-
- if (link_uri)
- g_free(link_uri);
-
- if (tags)
- g_slist_free(tags);
-}
-
-/* Update the cursor image if the pointer moved.
- */
-static gboolean
-motion_notify_event(GtkWidget * self, GdkEventMotion * event)
-{
- gint x, y;
-
- gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(self),
- GTK_TEXT_WINDOW_WIDGET,
- event->x, event->y, &x, &y);
-
- set_cursor_if_appropriate(MARKDOWN_TEXTVIEW(self), x, y);
-
- gdk_window_get_pointer(self->window, NULL, NULL, NULL);
- return FALSE;
-}
-
-/* Also update the cursor image if the window becomes visible
- * (e.g. when a window covering it got iconified).
- */
-static gboolean
-visibility_notify_event(GtkWidget * self, GdkEventVisibility * event)
-{
- gint wx, wy, bx, by;
-
- gdk_window_get_pointer(self->window, &wx, &wy, NULL);
-
- gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(self),
- GTK_TEXT_WINDOW_WIDGET,
- wx, wy, &bx, &by);
-
- set_cursor_if_appropriate(MARKDOWN_TEXTVIEW(self), bx, by);
-
- return FALSE;
-}
-
-static void
-follow_if_link(GtkWidget * widget, GtkTextIter * iter)
-{
- GSList *tags = NULL, *tagp = NULL;
- MarkdownTextView *self = MARKDOWN_TEXTVIEW(widget);
-
- tags = gtk_text_iter_get_tags(iter);
- for (tagp = tags; tagp != NULL; tagp = tagp->next) {
- GtkTextTag *tag = tagp->data;
- gint is_underline = 0;
- gchar *lang = NULL;
-
- g_object_get(G_OBJECT(tag),
- "underline", &is_underline,
- "language", &lang,
- NULL);
-
- if (is_underline == 1 && lang) {
- gchar *link = egg_markdown_get_link_uri(self->markdown, atoi(lang));
- if (link) {
- g_signal_emit(self, markdown_textview_signals[LINK_CLICKED],
- 0, link);
- g_free(link);
- }
- g_free(lang);
- break;
- }
-
- g_free(lang);
- }
-
- if (tags)
- g_slist_free(tags);
-}
-
-static gboolean
-key_press_event(GtkWidget * self,
- GdkEventKey * event)
-{
- GtkTextIter iter;
- GtkTextBuffer *buffer;
-
- switch (event->keyval) {
- case GDK_Return:
- case GDK_KP_Enter:
- buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(self));
- gtk_text_buffer_get_iter_at_mark(buffer, &iter,
- gtk_text_buffer_get_insert
- (buffer));
- follow_if_link(self, &iter);
- break;
-
- default:
- break;
- }
-
- return FALSE;
-}
-
-static gboolean
-event_after(GtkWidget * self, GdkEvent * ev)
-{
- GtkTextIter start, end, iter;
- GtkTextBuffer *buffer;
- GdkEventButton *event;
- gint x, y;
-
- if (ev->type != GDK_BUTTON_RELEASE)
- return FALSE;
-
- event = (GdkEventButton *) ev;
-
- if (event->button != 1)
- return FALSE;
-
- buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(self));
-
- /* we shouldn't follow a link if the user has selected something */
- gtk_text_buffer_get_selection_bounds(buffer, &start, &end);
- if (gtk_text_iter_get_offset(&start) != gtk_text_iter_get_offset(&end))
- return FALSE;
-
- gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(self),
- GTK_TEXT_WINDOW_WIDGET,
- event->x, event->y, &x, &y);
-
- gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(self), &iter, x,
- y);
-
- follow_if_link(self, &iter);
-
- return FALSE;
-}
-
-void
-markdown_textview_clear(MarkdownTextView * self)
-{
- GtkTextBuffer *text_buffer;
-
- g_return_if_fail(IS_MARKDOWN_TEXTVIEW(self));
-
- egg_markdown_clear(self->markdown);
-
- text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(self));
- gtk_text_buffer_set_text(text_buffer, "\n", 1);
-}
-
-static void
-load_images(MarkdownTextView * self)
-{
- GtkTextBuffer *buffer;
- GtkTextIter iter;
- GSList *tags, *tagp;
- gchar *image_path;
-
- buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(self));
- gtk_text_buffer_get_start_iter(buffer, &iter);
-
- do {
- tags = gtk_text_iter_get_tags(&iter);
- for (tagp = tags; tagp != NULL; tagp = tagp->next) {
- GtkTextTag *tag = tagp->data;
- gint is_underline = 0;
- gchar *lang = NULL;
-
- g_object_get(G_OBJECT(tag),
- "underline", &is_underline,
- "language", &lang,
- NULL);
-
- if (is_underline == 2 && lang) {
- GdkPixbuf *pixbuf;
- gchar *path;
-
- image_path = egg_markdown_get_link_uri(self->markdown, atoi(lang));
- path = g_build_filename(self->image_directory, image_path, NULL);
- pixbuf = gdk_pixbuf_new_from_file(path, NULL);
- if (pixbuf) {
- GtkTextMark *mark;
- GtkTextIter start;
-
- mark = gtk_text_buffer_create_mark(buffer, NULL, &iter, FALSE);
-
- gtk_text_buffer_get_iter_at_mark(buffer, &start, mark);
- gtk_text_iter_forward_to_tag_toggle(&iter, tag);
- gtk_text_buffer_delete(buffer, &start, &iter);
-
- gtk_text_buffer_insert_pixbuf(buffer, &iter, pixbuf);
-
- g_object_unref(pixbuf);
- gtk_text_buffer_delete_mark(buffer, mark);
- }
-
- g_free(image_path);
- g_free(lang);
- g_free(path);
- break;
- }
-
- g_free(lang);
- }
-
- if (tags)
- g_slist_free(tags);
- } while (gtk_text_iter_forward_to_tag_toggle(&iter, NULL));
-}
-
-static gboolean
-append_text(MarkdownTextView * self,
- const gchar * text)
-{
- GtkTextIter iter;
- GtkTextBuffer *text_buffer;
- gchar *line;
-
- g_return_val_if_fail(IS_MARKDOWN_TEXTVIEW(self), FALSE);
-
- text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(self));
- gtk_text_buffer_get_end_iter(text_buffer, &iter);
-
- line = egg_markdown_parse(self->markdown, text);
- if (line && *line) {
- gtk_text_buffer_insert_markup(text_buffer, &iter, line);
- gtk_text_buffer_insert(text_buffer, &iter, "\n", 1);
- g_free(line);
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-gboolean
-markdown_textview_set_text(MarkdownTextView * self,
- const gchar * text)
-{
- gboolean result = TRUE;
- gchar **lines;
- gint line;
-
- g_return_val_if_fail(IS_MARKDOWN_TEXTVIEW(self), FALSE);
-
- markdown_textview_clear(self);
-
- lines = g_strsplit(text, "\n", 0);
- for (line = 0; result && lines[line]; line++) {
- result = append_text(self, (const gchar *)lines[line]);
- }
- g_strfreev(lines);
-
- load_images(self);
-
- return result;
-}
-
-gboolean
-markdown_textview_load_file(MarkdownTextView * self,
- const gchar * file_name)
-{
- FILE *text_file;
- gchar *path;
-
- g_return_val_if_fail(IS_MARKDOWN_TEXTVIEW(self), FALSE);
-
- path = g_build_filename(self->image_directory, file_name, NULL);
-
- /* we do assume UTF-8 encoding */
- if ((text_file = fopen(path, "rb"))) {
- GtkTextBuffer *text_buffer;
- GtkTextIter iter;
- gchar *line;
- gchar buffer[EGG_MARKDOWN_MAX_LINE_LENGTH];
-
- text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(self));
-
- gtk_text_buffer_set_text(text_buffer, "\n", 1);
- gtk_text_buffer_get_start_iter(text_buffer, &iter);
-
- egg_markdown_clear(self->markdown);
-
- while (fgets(buffer, EGG_MARKDOWN_MAX_LINE_LENGTH, text_file)) {
- line = egg_markdown_parse(self->markdown, buffer);
-
- if (line && *line) {
- gtk_text_buffer_insert_markup(text_buffer, &iter, line);
- gtk_text_buffer_insert(text_buffer, &iter, "\n", 1);
- }
-
- g_free(line);
- }
- fclose(text_file);
-
- load_images(self);
-
- g_signal_emit(self, markdown_textview_signals[FILE_LOAD_COMPLETE], 0, file_name);
-
- g_free(path);
-
- return TRUE;
- }
-
- g_free(path);
-
- return FALSE;
-}
-
-void
-markdown_textview_set_image_directory(MarkdownTextView * self, const gchar *directory)
-{
- g_return_if_fail(IS_MARKDOWN_TEXTVIEW(self));
-
- g_free(self->image_directory);
- self->image_directory = g_strdup(directory);
-}
-
-static void markdown_textview_init(MarkdownTextView * self)
-{
- self->markdown = egg_markdown_new();
- self->image_directory = g_strdup(".");
-
- egg_markdown_set_output(self->markdown, EGG_MARKDOWN_OUTPUT_PANGO);
- egg_markdown_set_escape(self->markdown, TRUE);
- egg_markdown_set_autocode(self->markdown, TRUE);
- egg_markdown_set_smart_quoting(self->markdown, TRUE);
-
- gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(self), GTK_WRAP_WORD);
- gtk_text_view_set_editable(GTK_TEXT_VIEW(self), FALSE);
- gtk_text_view_set_left_margin(GTK_TEXT_VIEW(self), 10);
- gtk_text_view_set_right_margin(GTK_TEXT_VIEW(self), 10);
- gtk_text_view_set_pixels_above_lines(GTK_TEXT_VIEW(self), 3);
- gtk_text_view_set_pixels_below_lines(GTK_TEXT_VIEW(self), 3);
-
- g_signal_connect(self, "event-after",
- G_CALLBACK(event_after), NULL);
- g_signal_connect(self, "key-press-event",
- G_CALLBACK(key_press_event), NULL);
- g_signal_connect(self, "motion-notify-event",
- G_CALLBACK(motion_notify_event), NULL);
- g_signal_connect(self, "visibility-notify-event",
- G_CALLBACK(visibility_notify_event), NULL);
-}
-
diff --git a/hardinfo2/includes/benchmark.h b/hardinfo2/includes/benchmark.h
deleted file mode 100644
index 27bcbf4c..00000000
--- a/hardinfo2/includes/benchmark.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef __BENCHMARK_H__
-#define __BENCHMARK_H__
-
-#include "hardinfo.h"
-
-extern ProgramParameters params;
-
-enum {
- BENCHMARK_BLOWFISH,
- BENCHMARK_CRYPTOHASH,
- BENCHMARK_FIB,
- BENCHMARK_NQUEENS,
- BENCHMARK_FFT,
- BENCHMARK_RAYTRACE,
- BENCHMARK_GUI,
- BENCHMARK_N_ENTRIES
-} BenchmarkEntries;
-
-extern gdouble bench_results[BENCHMARK_N_ENTRIES];
-
-#endif /* __BENCHMARK_H__ */ \ No newline at end of file
diff --git a/hardinfo2/includes/binreloc.h b/hardinfo2/includes/binreloc.h
deleted file mode 100644
index 3bf48bc6..00000000
--- a/hardinfo2/includes/binreloc.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * BinReloc - a library for creating relocatable executables
- * Written by: Hongli Lai <h.lai@chello.nl>
- * http://autopackage.org/
- *
- * This source code is public domain. You can relicense this code
- * under whatever license you want.
- *
- * See http://autopackage.org/docs/binreloc/ for
- * more information and how to use this.
- */
-
-#ifndef __BINRELOC_H__
-#define __BINRELOC_H__
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-
-/** These error codes can be returned by br_init(), br_init_lib(), gbr_init() or gbr_init_lib(). */
-typedef enum {
- /** Cannot allocate memory. */
- GBR_INIT_ERROR_NOMEM,
- /** Unable to open /proc/self/maps; see errno for details. */
- GBR_INIT_ERROR_OPEN_MAPS,
- /** Unable to read from /proc/self/maps; see errno for details. */
- GBR_INIT_ERROR_READ_MAPS,
- /** The file format of /proc/self/maps is invalid; kernel bug? */
- GBR_INIT_ERROR_INVALID_MAPS,
- /** BinReloc is disabled (the ENABLE_BINRELOC macro is not defined). */
- GBR_INIT_ERROR_DISABLED
-} GbrInitError;
-
-
-#ifndef BINRELOC_RUNNING_DOXYGEN
-/* Mangle symbol names to avoid symbol collisions with other ELF objects. */
- #define gbr_find_exe UfUy21856259474323_gbr_find_exe
- #define gbr_find_exe_dir UfUy21856259474323_gbr_find_exe_dir
- #define gbr_find_prefix UfUy21856259474323_gbr_find_prefix
- #define gbr_find_bin_dir UfUy21856259474323_gbr_find_bin_dir
- #define gbr_find_sbin_dir UfUy21856259474323_gbr_find_sbin_dir
- #define gbr_find_data_dir UfUy21856259474323_gbr_find_data_dir
- #define gbr_find_locale_dir UfUy21856259474323_gbr_find_locale_dir
- #define gbr_find_lib_dir UfUy21856259474323_gbr_find_lib_dir
- #define gbr_find_libexec_dir UfUy21856259474323_gbr_find_libexec_dir
- #define gbr_find_etc_dir UfUy21856259474323_gbr_find_etc_dir
-
-
-#endif
-gboolean gbr_init (GError **error);
-gboolean gbr_init_lib (GError **error);
-
-gchar *gbr_find_exe (const gchar *default_exe);
-gchar *gbr_find_exe_dir (const gchar *default_dir);
-gchar *gbr_find_prefix (const gchar *default_prefix);
-gchar *gbr_find_bin_dir (const gchar *default_bin_dir);
-gchar *gbr_find_sbin_dir (const gchar *default_sbin_dir);
-gchar *gbr_find_data_dir (const gchar *default_data_dir);
-gchar *gbr_find_locale_dir (const gchar *default_locale_dir);
-gchar *gbr_find_lib_dir (const gchar *default_lib_dir);
-gchar *gbr_find_libexec_dir (const gchar *default_libexec_dir);
-gchar *gbr_find_etc_dir (const gchar *default_etc_dir);
-
-
-G_END_DECLS
-
-#endif /* __BINRELOC_H__ */
diff --git a/hardinfo2/includes/blowfish.h b/hardinfo2/includes/blowfish.h
deleted file mode 100644
index 3f33e945..00000000
--- a/hardinfo2/includes/blowfish.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-blowfish.h: Header file for blowfish.c
-
-Copyright (C) 1997 by Paul Kocher
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.
-This library 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
-Lesser General Public License for more details.
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-See blowfish.c for more information about this file.
-*/
-
-
-typedef struct {
- unsigned long P[16 + 2];
- unsigned long S[4][256];
-} BLOWFISH_CTX;
-
-void Blowfish_Init(BLOWFISH_CTX *ctx, unsigned char *key, int keyLen);
-void Blowfish_Encrypt(BLOWFISH_CTX *ctx, unsigned long *xl, unsigned long *xr);
-void Blowfish_Decrypt(BLOWFISH_CTX *ctx, unsigned long *xl, unsigned long *xr);
-
-
-
diff --git a/hardinfo2/includes/callbacks.h b/hardinfo2/includes/callbacks.h
deleted file mode 100644
index d53e1861..00000000
--- a/hardinfo2/includes/callbacks.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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
- */
-
-#ifndef __CALLBACKS_H__
-#define __CALLBACKS_H__
-
-#include <gtk/gtk.h>
-
-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();
-void cb_side_pane();
-void cb_toolbar();
-void cb_open_web_page();
-void cb_open_online_docs();
-void cb_open_online_docs_context();
-void cb_sync_manager();
-void cb_report_bug();
-void cb_donate();
-void cb_connect_to();
-void cb_manage_hosts();
-void cb_connect_host(GtkAction * action);
-void cb_local_computer();
-void cb_act_as_server();
-
-#endif /* __CALLBACKS_H__ */
diff --git a/hardinfo2/includes/computer.h b/hardinfo2/includes/computer.h
deleted file mode 100644
index 05f7c4be..00000000
--- a/hardinfo2/includes/computer.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * 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
- */
-#ifndef __COMPUTER_H__
-#define __COMPUTER_H__
-
-#include "hardinfo.h"
-
-#define DB_PREFIX "/etc/"
-
-static struct {
- gchar *file, *codename;
-} distro_db[] = {
- { 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 "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;
-typedef struct _UptimeInfo UptimeInfo;
-typedef struct _LoadInfo LoadInfo;
-typedef struct _DisplayInfo DisplayInfo;
-
-typedef struct _AlsaInfo AlsaInfo;
-typedef struct _AlsaCard AlsaCard;
-
-typedef struct _FileSystem FileSystem;
-typedef struct _FileSystemEntry FileSystemEntry;
-
-struct _AlsaCard {
- gchar *alsa_name;
- gchar *friendly_name;
-/*
- gchar *board;
- gchar revision, compat_class;
- gint subsys_vendorid, subsys_id;
-
- gint cap_dac_res, cap_adc_res;
- gboolean cap_3d_enh;
-
- gint curr_mic_gain;
- gboolean curr_3d_enh,
- curr_loudness,
- curr_simstereo;
- gchar *curr_mic_select;
-*/
-};
-
-struct _AlsaInfo {
- GSList *cards;
-};
-
-struct _DisplayInfo {
- gchar *ogl_vendor, *ogl_renderer, *ogl_version;
- gboolean dri;
-
- gchar *display_name, *vendor, *version;
- gchar *extensions;
- gchar *monitors;
-
- gint width, height;
-};
-
-struct _LoadInfo {
- float load1, load5, load15;
-};
-
-struct _UptimeInfo {
- int days, hours, minutes;
-};
-
-struct _Computer {
- MemoryInfo *memory;
- OperatingSystem *os;
- DisplayInfo *display;
- AlsaInfo *alsa;
-
- gchar *date_time;
-};
-
-struct _OperatingSystem {
- gchar *kernel;
- gchar *libc;
- gchar *distrocode, *distro;
- gchar *hostname;
- gchar *language;
- gchar *homedir;
- gchar *kernel_version;
-
- gchar *languages;
-
- gchar *desktop;
- gchar *username;
-
- gchar *boots;
-};
-
-struct _MemoryInfo {
- gint total, used, free, cached;
- gfloat ratio;
-};
-
-#define get_str(field_name,ptr) \
- if (g_str_has_prefix(tmp[0], field_name)) { \
- ptr = g_strdup(tmp[1]); \
- g_strfreev(tmp); \
- continue; \
- }
-#define get_int(field_name,ptr) \
- if (g_str_has_prefix(tmp[0], field_name)) { \
- ptr = atoi(tmp[1]); \
- g_strfreev(tmp); \
- continue; \
- }
-#define get_float(field_name,ptr) \
- if (g_str_has_prefix(tmp[0], field_name)) { \
- ptr = atof(tmp[1]); \
- g_strfreev(tmp); \
- continue; \
- }
-
-extern gchar *users;
-extern gchar *fs_list;
-extern GHashTable *_module_hash_table;
-extern Computer *computer;
-extern GHashTable *moreinfo;
-extern gchar *module_list;
-
-gchar *computer_get_formatted_loadavg();
-gchar *computer_get_formatted_uptime();
-gchar *computer_get_alsacards(Computer * computer);
-
-OperatingSystem *computer_get_os(void);
-AlsaInfo *computer_get_alsainfo(void);
-LoadInfo *computer_get_loadinfo(void);
-MemoryInfo *computer_get_memory(void);
-UptimeInfo *computer_get_uptime(void);
-DisplayInfo *computer_get_display(void);
-
-void scan_modules_do(void);
-void scan_filesystems(void);
-void scan_users_do(void);
-
-#endif /* __COMPUTER_H__ */
diff --git a/hardinfo2/includes/devices.h b/hardinfo2/includes/devices.h
deleted file mode 100644
index adbffd8c..00000000
--- a/hardinfo2/includes/devices.h
+++ /dev/null
@@ -1,87 +0,0 @@
-#ifndef __DEVICES_H__
-#define __DEVICES_H__
-
-#include "hardinfo.h"
-#include "processor-platform.h"
-
-#define WALK_UNTIL(x) while((*buf != '\0') && (*buf != x)) buf++
-
-#define GET_STR(field_name,ptr) \
- if (!ptr && strstr(tmp[0], field_name)) { \
- ptr = g_markup_escape_text(g_strstrip(tmp[1]), strlen(tmp[1])); \
- g_strfreev(tmp); \
- continue; \
- }
-
-#define get_str(field_name,ptr) \
- if (g_str_has_prefix(tmp[0], field_name)) { \
- ptr = g_strdup(tmp[1]); \
- g_strfreev(tmp); \
- continue; \
- }
-#define get_int(field_name,ptr) \
- if (g_str_has_prefix(tmp[0], field_name)) { \
- ptr = atoi(tmp[1]); \
- g_strfreev(tmp); \
- continue; \
- }
-#define get_float(field_name,ptr) \
- if (g_str_has_prefix(tmp[0], field_name)) { \
- ptr = atof(tmp[1]); \
- g_strfreev(tmp); \
- continue; \
- }
-
-
-
-/* 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);
-
-/* Memory */
-void init_memory_labels(void);
-void scan_memory_do(void);
-
-/* Printers */
-void init_cups(void);
-
-/* Battery */
-void scan_battery_do(void);
-
-/* PCI */
-void scan_pci_do(void);
-
-/* Printers */
-void scan_printers_do(void);
-
-/* Sensors */
-void scan_sensors_do(void);
-
-extern gchar *battery_list;
-extern gchar *dmi_info;
-extern gchar *input_icons;
-extern gchar *input_list;
-extern gchar *lginterval;
-extern gchar *meminfo;
-extern gchar *pci_list;
-extern gchar *printer_icons;
-extern gchar *printer_list;
-extern gchar *_resources;
-extern gchar *sensors;
-extern gchar *storage_icons;
-extern gchar *storage_list;
-extern gchar *usb_list;
-extern GHashTable *memlabels;
-extern GHashTable *moreinfo;
-extern GHashTable *_pci_devices;
-extern GHashTable *sensor_compute;
-extern GHashTable *sensor_labels;
-extern GModule *cups;
-
-
-
-#endif /* __DEVICES_H__ */ \ No newline at end of file
diff --git a/hardinfo2/includes/egg-markdown.h b/hardinfo2/includes/egg-markdown.h
deleted file mode 100644
index 4475b9f0..00000000
--- a/hardinfo2/includes/egg-markdown.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2008 Richard Hughes <richard@hughsie.com>
- * Copyright (C) 2009 Leandro Pereira <leandro@hardinfo.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EGG_MARKDOWN_H
-#define __EGG_MARKDOWN_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define EGG_TYPE_MARKDOWN (egg_markdown_get_type ())
-#define EGG_MARKDOWN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EGG_TYPE_MARKDOWN, EggMarkdown))
-#define EGG_MARKDOWN_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EGG_TYPE_MARKDOWN, EggMarkdownClass))
-#define EGG_IS_MARKDOWN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EGG_TYPE_MARKDOWN))
-#define EGG_IS_MARKDOWN_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EGG_TYPE_MARKDOWN))
-#define EGG_MARKDOWN_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EGG_TYPE_MARKDOWN, EggMarkdownClass))
-#define EGG_MARKDOWN_ERROR (egg_markdown_error_quark ())
-#define EGG_MARKDOWN_TYPE_ERROR (egg_markdown_error_get_type ())
-
-#define EGG_MARKDOWN_MAX_LINE_LENGTH 2048
-
-typedef struct EggMarkdownPrivate EggMarkdownPrivate;
-
-typedef struct
-{
- GObject parent;
- EggMarkdownPrivate *priv;
-} EggMarkdown;
-
-typedef struct
-{
- GObjectClass parent_class;
- void (* active_changed) (EggMarkdown *self,
- gboolean active);
-} EggMarkdownClass;
-
-typedef enum {
- EGG_MARKDOWN_OUTPUT_TEXT,
- EGG_MARKDOWN_OUTPUT_PANGO,
- EGG_MARKDOWN_OUTPUT_HTML,
- EGG_MARKDOWN_OUTPUT_UNKNOWN
-} EggMarkdownOutput;
-
-GType egg_markdown_get_type (void);
-EggMarkdown *egg_markdown_new (void);
-gboolean egg_markdown_set_output (EggMarkdown *self,
- EggMarkdownOutput output);
-gboolean egg_markdown_set_max_lines (EggMarkdown *self,
- gint max_lines);
-gboolean egg_markdown_set_smart_quoting (EggMarkdown *self,
- gboolean smart_quoting);
-gboolean egg_markdown_set_escape (EggMarkdown *self,
- gboolean escape);
-gboolean egg_markdown_set_autocode (EggMarkdown *self,
- gboolean autocode);
-gchar *egg_markdown_parse (EggMarkdown *self,
- const gchar *text);
-void egg_markdown_clear (EggMarkdown *self);
-gchar *egg_markdown_get_link_uri (EggMarkdown *self,
- const gint link_id);
-
-G_END_DECLS
-
-#endif /* __EGG_MARKDOWN_H */
-
diff --git a/hardinfo2/includes/expr.h b/hardinfo2/includes/expr.h
deleted file mode 100644
index 4bda6b72..00000000
--- a/hardinfo2/includes/expr.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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
- */
-#ifndef __EXPR_H__
-#define __EXPR_H__
-
-typedef struct _MathToken MathToken;
-
-typedef enum {
- TOKEN_OPERATOR,
- TOKEN_VARIABLE,
- TOKEN_VALUE
-} MathTokenType;
-
-struct _MathToken {
- union {
- gfloat value;
- gchar op;
- } val;
- MathTokenType type;
-};
-
-#define math_postfix_free math_infix_free
-
-GSList *math_infix_to_postfix(GSList *infix);
-void math_infix_free(GSList *infix, gboolean free_tokens);
-
-GSList *math_string_to_infix(gchar *string);
-GSList *math_string_to_postfix(gchar *string);
-
-gfloat math_postfix_eval(GSList *postfix, gfloat at_value);
-gfloat math_string_eval(gchar *string, gfloat at_value);
-
-#endif /* __EXPR_H__ */
diff --git a/hardinfo2/includes/fftbench.h b/hardinfo2/includes/fftbench.h
deleted file mode 100644
index 7c0afc3d..00000000
--- a/hardinfo2/includes/fftbench.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef __FFTBENCH_H__
-#define __FFTBENCH_H__
-
-#include <glib.h>
-
-typedef struct _FFTBench FFTBench;
-
-struct _FFTBench {
- double **a, *b, *r;
- int *p;
-};
-
-FFTBench *fft_bench_new(void);
-void fft_bench_run(FFTBench *fftbench);
-void fft_bench_free(FFTBench *fftbench);
-
-#endif /* __FFTBENCH_H__ */
-
-
diff --git a/hardinfo2/includes/guibench.h b/hardinfo2/includes/guibench.h
deleted file mode 100644
index d24403bc..00000000
--- a/hardinfo2/includes/guibench.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 __GUIBENCH_H__
-#define __GUIBENCH_H__
-
-double guibench(void);
-
-#endif /* __GUIBENCH_H__ */ \ No newline at end of file
diff --git a/hardinfo2/includes/hardinfo.h b/hardinfo2/includes/hardinfo.h
deleted file mode 100644
index 42a92a30..00000000
--- a/hardinfo2/includes/hardinfo.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * 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
- */
-
-#ifndef __HARDINFO_H__
-#define __HARDINFO_H__
-
-#include <gtk/gtk.h>
-#include "config.h"
-#include "shell.h"
-#include "vendor.h"
-
-typedef enum {
- MODULE_FLAG_NONE = 0,
- MODULE_FLAG_NO_REMOTE = 1<<0,
- MODULE_FLAG_HAS_HELP = 1<<1,
-} ModuleEntryFlags;
-
-typedef struct _ModuleEntry ModuleEntry;
-typedef struct _ModuleAbout ModuleAbout;
-typedef struct _FileTypes FileTypes;
-typedef struct _ProgramParameters ProgramParameters;
-
-struct _ProgramParameters {
- gboolean create_report;
- gboolean show_version;
- gboolean gui_running;
- gboolean list_modules;
- gboolean autoload_deps;
- gboolean run_xmlrpc_server;
-
- gint report_format;
-
- gchar **use_modules;
- gchar *run_benchmark;
- gchar *path_lib;
- gchar *path_data;
- gchar *argv0;
-};
-
-struct _FileTypes {
- gchar *name;
- gchar *mime_type;
- gchar *extension;
- gpointer data;
-};
-
-struct _ModuleEntry {
- gchar *name;
- gchar *icon;
- gpointer callback;
- gpointer scan_callback;
- guint32 flags;
-};
-
-struct _ModuleAbout {
- const gchar *description;
- const gchar *author;
- const gchar *version;
- const gchar *license;
-};
-
-/* String utility functions */
-inline void remove_quotes(gchar *str);
-inline char *strend(gchar *str, gchar chr);
-inline void remove_linefeed(gchar *str);
-gchar *strreplacechr(gchar *string, gchar *replace, gchar new_char);
-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);
-void file_chooser_add_filters(GtkWidget *chooser, FileTypes *filters);
-gchar *file_chooser_get_extension(GtkWidget *chooser, FileTypes *filters);
-gchar *file_chooser_build_filename(GtkWidget *chooser, gchar *extension);
-gpointer file_types_get_data_by_name(FileTypes *file_types, gchar *name);
-
-/* Misc utility functions */
-#if RELEASE == 1
-gpointer idle_free(gpointer ptr);
-#else
-gpointer __idle_free(gpointer ptr, gchar *f, gint l);
-#define idle_free(p) __idle_free(p, __FILE__, __LINE__)
-#endif /* RELEASE == 1 */
-
-gchar *find_program(gchar *program_name);
-inline gchar *size_human_readable(gfloat size);
-void nonblock_sleep(guint msec);
-void open_url(gchar *url);
-GSList *modules_get_list(void);
-GSList *modules_load_selected(void);
-GSList *modules_load_all(void);
-void module_unload_all(void);
-ModuleAbout *module_get_about(ShellModule *module);
-gchar *seconds_to_string(unsigned int seconds);
-
-gchar *h_strdup_cprintf(const gchar *format, gchar *source, ...);
-gchar *h_strconcat(gchar *string1, ...);
-void h_hash_table_remove_all (GHashTable *hash_table);
-
-void module_entry_scan_all_except(ModuleEntry *entries, gint except_entry);
-void module_entry_scan_all(ModuleEntry *entries);
-void module_entry_reload(ShellModuleEntry *module_entry);
-void module_entry_scan(ShellModuleEntry *module_entry);
-gchar *module_entry_function(ShellModuleEntry *module_entry);
-const gchar *module_entry_get_note(ShellModuleEntry *module_entry);
-gchar *module_entry_get_field(ShellModuleEntry * module_entry, gchar * field);
-gchar *module_entry_get_moreinfo(ShellModuleEntry * module_entry, gchar * field);
-
-/* BinReloc stuff */
-gboolean binreloc_init(gboolean try_hardcoded);
-
-/* GTK UI stuff */
-gboolean ui_init(int *argc, char ***argv);
-void parameters_init(int *argc, char ***argv, ProgramParameters *params);
-extern ProgramParameters params;
-
-/* Module stuff */
-gchar *module_call_method(gchar *method);
-gchar *module_call_method_param(gchar * method, gchar * parameter);
-
-/* Sysfs stuff */
-gfloat h_sysfs_read_float(gchar *endpoint, gchar *entry);
-gint h_sysfs_read_int(gchar *endpoint, gchar *entry);
-gchar *h_sysfs_read_string(gchar *endpoint, gchar *entry);
-
-#define SCAN_START() static gboolean scanned = FALSE; if (reload) scanned = FALSE; if (scanned) return;
-#define SCAN_END() scanned = TRUE;
-
-#define _CONCAT(a,b) a ## b
-#define CONCAT(a,b) _CONCAT(a,b)
-
-#endif /* __HARDINFO_H__ */
diff --git a/hardinfo2/includes/help-viewer.h b/hardinfo2/includes/help-viewer.h
deleted file mode 100644
index 688ff325..00000000
--- a/hardinfo2/includes/help-viewer.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * HelpViewer - Simple Help file browser
- * Copyright (C) 2009 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 __HELP_VIEWER_H__
-#define __HELP_VIEWER_H__
-
-typedef struct _HelpViewer HelpViewer;
-
-struct _HelpViewer {
- GtkWidget *window;
- GtkWidget *status_bar;
-
- GtkWidget *btn_back, *btn_forward;
- GtkWidget *text_view;
- GtkWidget *text_search;
-
- gchar *current_file;
- gchar *help_directory;
-
- GSList *back_stack, *forward_stack;
-};
-
-HelpViewer *help_viewer_new(const gchar *help_dir, const gchar *help_file);
-void help_viewer_open_page(HelpViewer *help_viewer, const gchar *page);
-void help_viewer_destroy(HelpViewer *help_viewer);
-
-#endif /* __HELP_VIEWER_H__ */
-
diff --git a/hardinfo2/includes/iconcache.h b/hardinfo2/includes/iconcache.h
deleted file mode 100644
index 97f59a82..00000000
--- a/hardinfo2/includes/iconcache.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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
- */
-
-#ifndef __ICONCACHE_H__
-#define __ICONCACHE_H__
-
-#include <gtk/gtk.h>
-
-void icon_cache_init(void);
-GdkPixbuf *icon_cache_get_pixbuf(const gchar *file);
-GtkWidget *icon_cache_get_image(const gchar *file);
-GdkPixbuf *icon_cache_get_pixbuf_at_size(const gchar *file, gint wid, gint hei);
-GtkWidget *icon_cache_get_image_at_size(const gchar *file, gint wid, gint hei);
-
-#endif /* __ICONCACHE_H__ */
diff --git a/hardinfo2/includes/loadgraph.h b/hardinfo2/includes/loadgraph.h
deleted file mode 100644
index 3a53f793..00000000
--- a/hardinfo2/includes/loadgraph.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Simple Load Graph
- * Copyright (C) 2006 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * The Simple Load Graph is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License, version 2.1, as published by the Free Software Foundation.
- *
- * The Simple Load Graph 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
- * Lesser General Public License for more details.
- *
- * 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.
- */
-
-
-#ifndef __LOADGRAPH_H__
-#define __LOADGRAPH_H__
-
-#include <stdlib.h>
-#include <gtk/gtk.h>
-#include <math.h>
-
-typedef struct _LoadGraph LoadGraph;
-
-typedef enum {
- LG_COLOR_GREEN = 0x4FB05A,
- LG_COLOR_BLUE = 0x4F58B0,
- LG_COLOR_RED = 0xB04F4F
-} LoadGraphColor;
-
-struct _LoadGraph {
- GdkPixmap *buf;
- GtkWidget *area;
-
- GdkGC *grid;
- GdkGC *trace;
- GdkGC *fill;
-
- gint *data;
- gfloat scale;
-
- gint size;
- gint width, height;
- LoadGraphColor color;
-
- gint max_value, remax_count;
-
- PangoLayout *layout;
- gchar *suffix;
-};
-
-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_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);
-
-#endif /* __LOADGRAPH_H__ */
diff --git a/hardinfo2/includes/markdown-text-view.h b/hardinfo2/includes/markdown-text-view.h
deleted file mode 100644
index 648ea39c..00000000
--- a/hardinfo2/includes/markdown-text-view.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Markdown Text View
- * GtkTextView subclass that supports Markdown syntax
- *
- * Copyright (C) 2009 Leandro Pereira <leandro@hardinfo.org>
- * Portions Copyright (C) 2007-2008 Richard Hughes <richard@hughsie.com>
- * Portions Copyright (C) GTK+ Team (based on hypertext textview demo)
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-#ifndef __MARKDOWN_TEXTVIEW_H__
-#define __MARKDOWN_TEXTVIEW_H__
-
-#include <gtk/gtk.h>
-#include "egg-markdown.h"
-
-G_BEGIN_DECLS
-#define TYPE_MARKDOWN_TEXTVIEW (markdown_textview_get_type())
-#define MARKDOWN_TEXTVIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TYPE_MARKDOWN_TEXTVIEW, MarkdownTextView))
-#define MARKDOWN_TEXTVIEW_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST((obj), MARKDOWN_TEXTVIEW, MarkdownTextViewClass))
-#define IS_MARKDOWN_TEXTVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), TYPE_MARKDOWN_TEXTVIEW))
-#define IS_MARKDOWN_TEXTVIEW_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((obj), TYPE_MARKDOWN_TEXTVIEW))
-#define MARKDOWN_TEXTVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), TYPE_MARKDOWN_TEXTVIEW, MarkdownTextViewClass))
-
-typedef struct _MarkdownTextView MarkdownTextView;
-typedef struct _MarkdownTextViewClass MarkdownTextViewClass;
-
-struct _MarkdownTextView {
- GtkTextView parent;
-
- EggMarkdown *markdown;
- gboolean hovering_over_link;
- gchar *image_directory;
-};
-
-struct _MarkdownTextViewClass {
- GtkTextViewClass parent_class;
-
- void (*link_clicked) (MarkdownTextView *text_view, gchar *uri);
- void (*hovering_over_link) (MarkdownTextView *text_view, gchar *uri);
- void (*hovering_over_text) (MarkdownTextView *text_view);
- void (*file_load_complete) (MarkdownTextView *text_view, gchar *file);
-};
-
-GtkWidget *markdown_textview_new();
-gboolean markdown_textview_load_file(MarkdownTextView * textview,
- const gchar * file_name);
-gboolean markdown_textview_set_text(MarkdownTextView * textview,
- const gchar * text);
-void markdown_textview_clear(MarkdownTextView * textview);
-void markdown_textview_set_image_directory(MarkdownTextView * self,
- const gchar * directory);
-GType markdown_textview_get_type();
-G_END_DECLS
-
-#endif /* __MARKDOWN_TEXTVIEW_H__ */
diff --git a/hardinfo2/includes/md5.h b/hardinfo2/includes/md5.h
deleted file mode 100644
index 1522170c..00000000
--- a/hardinfo2/includes/md5.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* See md5.c for explanation and copyright information. */
-
-#ifndef MD5_H
-#define MD5_H
-
-/* Unlike previous versions of this code, uint32 need not be exactly
- 32 bits, merely 32 bits or more. Choosing a data type which is 32
- bits instead of 64 is not important; speed is considerably more
- important. ANSI guarantees that "unsigned long" will be big enough,
- and always using it seems to have few disadvantages. */
-typedef unsigned long uint32;
-
-struct MD5Context {
- uint32 buf[4];
- uint32 bits[2];
- unsigned char in[64];
-};
-
-void MD5Init (struct MD5Context *context);
-void MD5Update (struct MD5Context *context,
- unsigned char const *buf, unsigned len);
-void MD5Final (unsigned char digest[16],
- struct MD5Context *context);
-void MD5Transform (uint32 buf[4], const unsigned char in[64]);
-
-#endif /* !MD5_H */
diff --git a/hardinfo2/includes/menu.h b/hardinfo2/includes/menu.h
deleted file mode 100644
index 361b2323..00000000
--- a/hardinfo2/includes/menu.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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
- */
-#ifndef __MENU_H__
-#define __MENU_H__
-
-#include <shell.h>
-
-void menu_init(Shell *shell);
-
-#endif /* __MENU_H__ */
diff --git a/hardinfo2/includes/network.h b/hardinfo2/includes/network.h
deleted file mode 100644
index e8113089..00000000
--- a/hardinfo2/includes/network.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef __NETWORK_H__
-#define __NETWORK_H__
-
-#include "hardinfo.h"
-
-extern gchar *smb_shares_list;
-extern gchar *nfs_shares_list;
-extern gchar *network_interfaces;
-extern gchar *network_icons;
-extern GHashTable *moreinfo;
-
-void scan_net_interfaces(void);
-
-#endif /* __NETWORK_H__ */ \ No newline at end of file
diff --git a/hardinfo2/includes/nqueens.h b/hardinfo2/includes/nqueens.h
deleted file mode 100644
index a4be93f0..00000000
--- a/hardinfo2/includes/nqueens.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * N-Queens Problem Solver
- * Found somewhere on the Internet; can't remember where. Possibly Wikipedia.
- */
-#ifndef __NQUEENS_H__
-#define __NQUEENS_H__
-
-int nqueens(int y);
-
-
-#endif /* __NQUEENS_H__ */
-
-
diff --git a/hardinfo2/includes/remote.h b/hardinfo2/includes/remote.h
deleted file mode 100644
index 6a988a3b..00000000
--- a/hardinfo2/includes/remote.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Remote Client
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 __REMOTE_H__
-#define __REMOTE_H__
-
-void remote_disconnect_all(gboolean ssh);
-gboolean remote_connect_host(gchar * hostname);
-void connect_dialog_show(GtkWidget * parent);
-void host_manager_show(GtkWidget * parent);
-
-#endif /* __REMOTE_H__ */
-
diff --git a/hardinfo2/includes/report.h b/hardinfo2/includes/report.h
deleted file mode 100644
index 782621cb..00000000
--- a/hardinfo2/includes/report.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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
- */
-
-#ifndef __REPORT_H__
-#define __REPORT_H__
-#include <gtk/gtk.h>
-#include <shell.h>
-
-typedef enum {
- REPORT_FORMAT_HTML,
- REPORT_FORMAT_TEXT,
- N_REPORT_FORMAT
-} ReportFormat;
-
-typedef enum {
- REPORT_COL_PROGRESS = 1<<0,
- REPORT_COL_VALUE = 1<<1,
- REPORT_COL_EXTRA1 = 1<<2,
- REPORT_COL_EXTRA2 = 1<<3,
- REPORT_COL_TEXTVALUE= 1<<4
-} ReportColumn;
-
-typedef struct _ReportDialog ReportDialog;
-typedef struct _ReportContext ReportContext;
-
-struct _ReportContext {
- ShellModuleEntry *entry;
- gchar *output;
-
- void (*header) (ReportContext *ctx);
- void (*footer) (ReportContext *ctx);
- void (*title) (ReportContext *ctx, gchar *text);
- void (*subtitle) (ReportContext *ctx, gchar *text);
- void (*subsubtitle) (ReportContext *ctx, gchar *text);
- void (*keyvalue) (ReportContext *ctx, gchar *key, gchar *value);
-
- ReportFormat format;
-
- gboolean is_image_enabled;
- gboolean first_table;
-
- gboolean show_column_headers;
- guint columns;
- GHashTable *column_titles;
-};
-
-struct _ReportDialog {
- GtkWidget *dialog;
- GtkWidget *filechooser;
- GtkWidget *btn_cancel;
- GtkWidget *btn_generate;
- GtkWidget *btn_sel_all;
- GtkWidget *btn_sel_none;
- GtkWidget *treeview;
-
- GtkTreeModel *model;
-};
-
-void report_dialog_show();
-
-ReportContext *report_context_html_new();
-ReportContext *report_context_text_new();
-
-void report_header (ReportContext *ctx);
-void report_footer (ReportContext *ctx);
-void report_title (ReportContext *ctx, gchar *text);
-void report_subtitle (ReportContext *ctx, gchar *text);
-void report_subsubtitle (ReportContext *ctx, gchar *text);
-void report_key_value (ReportContext *ctx, gchar *key, gchar *value);
-void report_table (ReportContext *ctx, gchar *text);
-
-void report_create_from_module_list(ReportContext *ctx, GSList *modules);
-gchar *report_create_from_module_list_format(GSList *modules, ReportFormat format);
-
-void report_context_free(ReportContext *ctx);
-void report_module_list_free(GSList *modules);
-
-#endif /* __REPORT_H__ */
diff --git a/hardinfo2/includes/sha1.h b/hardinfo2/includes/sha1.h
deleted file mode 100644
index 573ff8ac..00000000
--- a/hardinfo2/includes/sha1.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * SHA-1 in C
- * By Steve Reid <steve@edmweb.com>
- * 100% Public Domain
- */
-
-#ifndef __SHA1_H__
-#define __SHA1_H__
-
-#include <glib.h>
-
-#ifndef LITTLE_ENDIAN
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-#define LITTLE_ENDIAN /* This should be #define'd if true. */
-#endif /* G_BYTE_ORDER */
-#endif /* LITTLE_ENDIAN */
-
-
-typedef struct {
- guint32 state[5];
- guint32 count[2];
- guchar buffer[64];
-} SHA1_CTX;
-
-void SHA1Transform(guint32 state[5], guchar buffer[64]);
-void SHA1Init(SHA1_CTX* context);
-void SHA1Update(SHA1_CTX* context, guchar* data, unsigned int len);
-void SHA1Final(guchar digest[20], SHA1_CTX* context);
-
-#endif /* __SHA1_H__ */
diff --git a/hardinfo2/includes/shell.h b/hardinfo2/includes/shell.h
deleted file mode 100644
index 2eb9e6d2..00000000
--- a/hardinfo2/includes/shell.h
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * 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
- */
-#ifndef __SHELL_H__
-#define __SHELL_H__
-
-#include <gtk/gtk.h>
-
-#include "loadgraph.h"
-#include "help-viewer.h"
-
-typedef struct _Shell Shell;
-typedef struct _ShellTree ShellTree;
-typedef struct _ShellInfoTree ShellInfoTree;
-typedef struct _ShellNote ShellNote;
-typedef struct _ShellSummary ShellSummary;
-
-typedef struct _ShellModule ShellModule;
-typedef struct _ShellModuleMethod ShellModuleMethod;
-typedef struct _ShellModuleEntry ShellModuleEntry;
-
-typedef struct _ShellFieldUpdate ShellFieldUpdate;
-typedef struct _ShellFieldUpdateSource ShellFieldUpdateSource;
-
-typedef enum {
- SHELL_ORDER_DESCENDING,
- SHELL_ORDER_ASCENDING,
-} ShellOrderType;
-
-typedef enum {
- SHELL_PACK_RESIZE = 1 << 0,
- SHELL_PACK_SHRINK = 1 << 1
-} ShellPackOptions;
-
-typedef enum {
- SHELL_VIEW_NORMAL,
- SHELL_VIEW_DUAL,
- SHELL_VIEW_LOAD_GRAPH,
- SHELL_VIEW_PROGRESS,
- SHELL_VIEW_PROGRESS_DUAL,
- SHELL_VIEW_SUMMARY,
- SHELL_VIEW_N_VIEWS
-} ShellViewType;
-
-typedef enum {
- TREE_COL_PBUF,
- TREE_COL_NAME,
- TREE_COL_MODULE_ENTRY,
- TREE_COL_MODULE,
- TREE_COL_SEL,
- TREE_NCOL
-} ShellTreeColumns;
-
-typedef enum {
- INFO_TREE_COL_NAME,
- INFO_TREE_COL_VALUE,
- INFO_TREE_COL_DATA,
- INFO_TREE_COL_PBUF,
- INFO_TREE_COL_PROGRESS,
- INFO_TREE_COL_EXTRA1,
- INFO_TREE_COL_EXTRA2,
- INFO_TREE_NCOL
-} ShellInfoTreeColumns;
-
-struct _Shell {
- GtkWidget *window, *vbox;
- GtkWidget *status, *progress;
- GtkWidget *remote_label;
- GtkWidget *notebook;
- GtkWidget *hpaned, *vpaned;
-
- ShellTree *tree;
- ShellInfoTree *info, *moreinfo;
- ShellModule *selected_module;
- ShellModuleEntry *selected;
- ShellNote *note;
- ShellSummary *summary;
- LoadGraph *loadgraph;
-
- GtkActionGroup *action_group;
- GtkUIManager *ui_manager;
- GSList *merge_ids;
-
- ShellViewType view_type;
- gboolean normalize_percentage;
-
- gint _pulses;
- ShellOrderType _order_type;
-
- GKeyFile *hosts;
- HelpViewer *help_viewer;
-};
-
-struct _ShellSummary {
- GtkWidget *header;
- GtkWidget *scroll;
- GtkWidget *view;
-
- GSList *items;
-};
-
-struct _ShellTree {
- GtkWidget *scroll;
- GtkWidget *view;
- GtkTreeModel *model;
- GtkTreeSelection *selection;
-
- GSList *modules;
-};
-
-struct _ShellInfoTree {
- GtkWidget *scroll;
- GtkWidget *view;
- GtkTreeModel *model;
- GtkTreeSelection *selection;
-
- GtkTreeViewColumn *col_progress, *col_value, *col_extra1, *col_extra2, *col_textvalue;
-};
-
-struct _ShellNote {
- GtkWidget *event_box;
- GtkWidget *label;
-};
-
-struct _ShellModule {
- gchar *name;
- GdkPixbuf *icon;
- GModule *dll;
-
- gpointer (*aboutfunc) ();
- gchar *(*summaryfunc) ();
- void (*deinit) ();
-
- guchar weight;
-
- GSList *entries;
-};
-
-struct _ShellModuleMethod {
- gchar *name;
- gpointer function;
-};
-
-struct _ShellModuleEntry {
- gchar *name;
- GdkPixbuf *icon;
- gchar *icon_file;
- gboolean selected;
- gint number;
- guint32 flags;
-
- gchar *(*func) ();
- void (*scan_func) ();
-
- gchar *(*fieldfunc) (gchar * entry);
- gchar *(*morefunc) (gchar * entry);
- gchar *(*notefunc) (gint entry);
-};
-
-struct _ShellFieldUpdate {
- ShellModuleEntry *entry;
- gchar *field_name;
-};
-
-struct _ShellFieldUpdateSource {
- guint source_id;
- ShellFieldUpdate *sfu;
-};
-
-void shell_init(GSList *modules);
-void shell_do_reload(void);
-
-Shell *shell_get_main_shell();
-
-void shell_action_set_enabled(const gchar *action_name,
- gboolean setting);
-gboolean shell_action_get_enabled(const gchar *action_name);
-gboolean shell_action_get_active(const gchar *action_name);
-void shell_action_set_active(const gchar *action_name,
- gboolean setting);
-void shell_action_set_property(const gchar *action_name,
- const gchar *property,
- gboolean setting);
-
-void shell_set_side_pane_visible(gboolean setting);
-void shell_set_note_from_entry(ShellModuleEntry *entry);
-void shell_ui_manager_set_visible(const gchar *path,
- gboolean setting);
-
-void shell_status_update(const gchar *message);
-void shell_status_pulse(void);
-void shell_status_set_percentage(gint percentage);
-void shell_status_set_enabled(gboolean setting);
-
-void shell_view_set_enabled(gboolean setting);
-
-void shell_clear_timeouts(Shell *shell);
-void shell_clear_tree_models(Shell *shell);
-void shell_clear_field_updates(void);
-void shell_set_title(Shell *shell, char *subtitle);
-
-void shell_add_modules_to_gui(gpointer _shell_module, gpointer _shell_tree);
-
-void shell_save_hosts_file(void);
-void shell_update_remote_menu(void);
-
-void shell_set_remote_label(Shell *shell, gchar *label);
-
-#endif /* __SHELL_H__ */
-
-
diff --git a/hardinfo2/includes/socket.h b/hardinfo2/includes/socket.h
deleted file mode 100644
index 7c44837e..00000000
--- a/hardinfo2/includes/socket.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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
- */
-
-#ifndef __HI_SOCKET_H__
-#define __HI_SOCKET_H__
-
-typedef struct _Socket Socket;
-
-struct _Socket {
- gint sock;
-};
-
-Socket *sock_connect(gchar * host, gint port);
-int sock_write(Socket * s, gchar * str);
-int sock_read(Socket * s, gchar * buffer, gint size);
-void sock_close(Socket * s);
-
-int sock_ready_to_read(Socket *s);
-int sock_ready_to_write(Socket *s);
-
-#endif /* __HI_SOCKET_H__ */
diff --git a/hardinfo2/includes/ssh-conn.h b/hardinfo2/includes/ssh-conn.h
deleted file mode 100644
index b1b0a9ca..00000000
--- a/hardinfo2/includes/ssh-conn.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- Remote Client
- HardInfo - Displays System Information
- Copyright (C) 2003-2009 Leandro A. F. Pereira <leandro@hardinfo.org>
-
- Based on ssh-method.c from GnomeVFS
- Copyright (C) 1999 Free Software Foundation
- Original author: Ian McKellar <yakk@yakk.net>
-
- The Gnome Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The Gnome Library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-*/
-#ifndef __SSH_CONN_H__
-#define __SSH_CONN_H__
-
-#include "config.h"
-#ifdef HAS_LIBSOUP
-#include <libsoup/soup.h>
-
-typedef struct _SSHConn SSHConn;
-
-typedef enum {
- SSH_CONN_OK,
- SSH_CONN_NO_URI,
- SSH_CONN_UNKNOWN_PROTOCOL,
- SSH_CONN_UNKNOWN_ERROR,
- SSH_CONN_CANNOT_SPAWN_SSH,
- SSH_CONN_BAD_PARAMS,
- SSH_CONN_PERMISSION_DENIED,
- SSH_CONN_HOST_KEY_CHECK_FAIL,
- SSH_CONN_REFUSED,
- SSH_CONN_INVALID_USER_PASS,
-} SSHConnResponse;
-
-struct _SSHConn {
- SoupURI *uri;
- int fd_read, fd_write, fd_error;
- GPid pid;
- gchar *askpass_path;
-
- gint exit_status;
-};
-
-SSHConnResponse ssh_new(SoupURI * uri,
- SSHConn ** conn_return, gchar * command);
-void ssh_close(SSHConn * conn);
-
-int ssh_write(SSHConn * conn,
- gconstpointer buffer, gint num_bytes, gint * bytes_written);
-int ssh_read(gint fd, gpointer buffer, gint num_bytes, gint * bytes_read);
-
-const char *ssh_conn_errors[10];
-#endif /* HAS_LIBSOUP */
-#endif /* __SSH_CONN_H__ */
diff --git a/hardinfo2/includes/stock.h b/hardinfo2/includes/stock.h
deleted file mode 100644
index 706e5c51..00000000
--- a/hardinfo2/includes/stock.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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
- */
-
-#ifndef __STOCK_H__
-#define __STOCK_H__
-
-#define HI_STOCK_REPORT "hi-stock-report"
-#define HI_STOCK_INTERNET "hi-stock-internet"
-#define HI_STOCK_MODULE "hi-stock-module"
-#define HI_STOCK_ABOUT_MODULES "hi-stock-about-modules"
-#define HI_STOCK_SYNC_MENU "hi-stock-sync-menu"
-#define HI_STOCK_DONATE "hi-stock-donate"
-#define HI_STOCK_SERVER "hi-stock-server"
-
-void stock_icons_init(void);
-void stock_icon_register(gchar *filename, gchar *stock_id);
-void stock_icon_register_pixbuf(GdkPixbuf *pixbuf, gchar *stock_id);
-
-#endif /* __STOCK_H__ */
diff --git a/hardinfo2/includes/syncmanager.h b/hardinfo2/includes/syncmanager.h
deleted file mode 100644
index ae0ed267..00000000
--- a/hardinfo2/includes/syncmanager.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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
- */
-
-#ifndef __SYNCMANAGER_H__
-#define __SYNCMANAGER_H__
-
-#include <gtk/gtk.h>
-
-typedef struct _SyncEntry SyncEntry;
-
-struct _SyncEntry {
- gchar *name;
- gchar *fancy_name;
- gchar *save_to;
-
- gchar *(*get_data)(void);
- void (*callback)(SyncEntry *entry, const gchar *response);
-
- gboolean selected;
-};
-
-void sync_manager_add_entry(SyncEntry *entry);
-void sync_manager_clear_entries(void);
-void sync_manager_show(GtkWidget *parent);
-gint sync_manager_count_entries(void);
-
-#endif /* __SYNCMANAGER_H__ */
diff --git a/hardinfo2/includes/test-utils.h b/hardinfo2/includes/test-utils.h
deleted file mode 100644
index 21cac6b5..00000000
--- a/hardinfo2/includes/test-utils.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "libsoup/soup-types.h"
-
-void test_init (int argc, char **argv, GOptionEntry *entries);
-void test_cleanup (void);
-
-extern int debug_level, errors;
-extern gboolean expect_warning;
-void debug_printf (int level, const char *format, ...) G_GNUC_PRINTF (2, 3);
-
-#ifdef HAVE_APACHE
-void apache_init (void);
-void apache_cleanup (void);
-#endif
-
-SoupSession *soup_test_session_new (GType type, ...);
-void soup_test_session_abort_unref (SoupSession *session);
-
-SoupServer *soup_test_server_new (gboolean in_own_thread);
-SoupServer *soup_test_server_new_ssl (gboolean in_own_thread);
-
diff --git a/hardinfo2/includes/uidefs.h b/hardinfo2/includes/uidefs.h
deleted file mode 100644
index a54823ad..00000000
--- a/hardinfo2/includes/uidefs.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef __UIDEFS_H__
-#define __UIDEFS_H__
-
-#include "config.h"
-
-#if RELEASE
-#define DEBUG_TOOLBAR_ITEMS
-#else /* !RELEASE */
-#define DEBUG_TOOLBAR_ITEMS "<separator/>" \
- "<toolitem name=\"ReportBug\" action=\"ReportBugAction\" />"
-#endif /* !RELEASE */
-
-#ifdef HAS_LIBSOUP
-#define REMOTE_MENU_ITEMS " <menu name=\"RemoteMenu\" action=\"RemoteMenuAction\">" \
-" <menuitem name=\"ConnectTo\" action=\"ConnectToAction\" />" \
-" <menuitem name=\"Manage\" action=\"ManageAction\" />" \
-" <separator/>" \
-" <menuitem name=\"ActAsServer\" action=\"ActAsServerAction\" />" \
-" <separator/>" \
-" <menuitem name=\"LocalComputer\" action=\"LocalComputerAction\" />" \
-" </menu>"
-
-#define SYNC_MANAGER_ITEMS " <separator/>" \
-" <menuitem name=\"SyncManager\" action=\"SyncManagerAction\" />"
-
-#else /* !HAS_LIBSOUP */
-#define REMOTE_MENU_ITEMS
-#define SYNC_MANAGER_ITEMS
-#endif /* !HAS_LIBSOUP */
-
-char *uidefs_str = "<ui>" \
-" <menubar>" \
-" <menu name=\"InformationMenu\" action=\"InformationMenuAction\">" \
-" <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>" \
-" <menu name=\"ViewMenu\" action=\"ViewMenuAction\">" \
-" <menuitem name=\"SidePane\" action=\"SidePaneAction\"/>" \
-" <menuitem name=\"Toolbar\" action=\"ToolbarAction\"/>" \
-" <separator/>"\
-" <separator name=\"LastSep\"/>" \
-" <menuitem name=\"Refresh\" action=\"RefreshAction\"/>" \
-" </menu>" \
-REMOTE_MENU_ITEMS \
-" <menu name=\"HelpMenu\" action=\"HelpMenuAction\">" \
-" <menuitem name=\"OnlineDocs\" action=\"OnlineDocsAction\"/>" \
-" <menuitem name=\"ContextHelp\" action=\"ContextHelpAction\"/>" \
-" <separator/>" \
-" <menuitem name=\"WebPage\" action=\"HomePageAction\"/>" \
-" <menuitem name=\"ReportBug\" action=\"ReportBugAction\"/>" \
-" <separator/>" \
-" <menuitem name=\"Donate\" action=\"DonateAction\"/>" \
-" <separator/>" \
-" <menu name=\"HelpMenuModules\" action=\"HelpMenuModulesAction\">" \
-" <separator name=\"LastSep\"/>" \
-" </menu>" \
-" <menuitem name=\"About\" action=\"AboutAction\"/>" \
-" </menu>" \
-" </menubar>" \
-" <toolbar action=\"MainMenuBar\" action=\"MainMenuBarAction\">" \
-" <placeholder name=\"ToolItems\">" \
-" <toolitem name=\"Refresh\" action=\"RefreshAction\"/>" \
-" <separator/>" \
-" <toolitem name=\"Report\" action=\"ReportAction\"/>" \
-" <toolitem name=\"Copy\" action=\"CopyAction\"/>" \
-" <separator/>" \
-DEBUG_TOOLBAR_ITEMS \
-" </placeholder>" \
-" </toolbar>" \
-"</ui>";
-
-#endif /* __UIDEFS_H__ */
diff --git a/hardinfo2/includes/vendor.h b/hardinfo2/includes/vendor.h
deleted file mode 100644
index 778e2ea3..00000000
--- a/hardinfo2/includes/vendor.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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
- */
-
-#ifndef __VENDOR_H__
-#define __VENDOR_H__
-
-typedef struct _Vendor Vendor;
-struct _Vendor {
- char *id;
- char *name;
- char *url;
-};
-
-void vendor_init(void);
-const gchar *vendor_get_name(const gchar *id);
-const gchar *vendor_get_url(const gchar *id);
-
-#endif /* __VENDOR_H__ */
diff --git a/hardinfo2/includes/x86/processor-platform.h b/hardinfo2/includes/x86/processor-platform.h
deleted file mode 100644
index dd9ae9d9..00000000
--- a/hardinfo2/includes/x86/processor-platform.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef __PROCESSOR_PLATFORM_H__
-#define __PROCESSOR_PLATFORM_H__
-
-#include "hardinfo.h"
-
-typedef struct _Processor Processor;
-typedef struct _ProcessorCache ProcessorCache;
-
-struct _ProcessorCache {
- gint level;
- gint number_of_sets;
- gint physical_line_partition;
- gint size;
- gchar *type;
- gint ways_of_associativity;
-};
-
-struct _Processor {
- gchar *model_name;
- gchar *vendor_id;
- gchar *flags;
- gint cache_size;
- gfloat bogomips, cpu_mhz;
-
- gchar *has_fpu;
- gchar *bug_fdiv, *bug_hlt, *bug_f00f, *bug_coma;
-
- gint model, family, stepping;
- gchar *strmodel;
-
- gint id;
-
- GSList *cache;
-};
-
-#endif /* __PROCESSOR_PLATFORM_H__ */
diff --git a/hardinfo2/includes/xmlrpc-client.h b/hardinfo2/includes/xmlrpc-client.h
deleted file mode 100644
index 32fad08c..00000000
--- a/hardinfo2/includes/xmlrpc-client.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * XMLRPC Client
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 __XMLRPC_CLIENT_H__
-#define __XMLRPC_CLIENT_H__
-
-#include "config.h"
-
-#ifdef HAS_LIBSOUP
-#include <libsoup/soup.h>
-
-void xmlrpc_init(void);
-gint xmlrpc_get_integer(gchar *addr,
- gchar *method,
- const gchar *param_types,
- ...);
-gchar *xmlrpc_get_string(gchar *addr,
- gchar *method,
- const gchar *param_types,
- ...);
-GValueArray *xmlrpc_get_array(gchar *addr,
- gchar *method,
- const gchar *param_types,
- ...);
-#endif /* HAS_LIBSOUP */
-
-#endif /* __XMLRPC_CLIENT_H__ */
diff --git a/hardinfo2/includes/xmlrpc-server.h b/hardinfo2/includes/xmlrpc-server.h
deleted file mode 100644
index e608b711..00000000
--- a/hardinfo2/includes/xmlrpc-server.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 __XMLRPC_SERVER_H__
-#define __XMLRPC_SERVER_H__
-
-void xmlrpc_server_start(GMainLoop *main_loop);
-void xmlrpc_server_init(void);
-
-#endif /* __XMLRPC_SERVER_H__ */
-
diff --git a/hardinfo2/modules/benchmark.c b/hardinfo2/modules/benchmark.c
deleted file mode 100644
index 1f85064a..00000000
--- a/hardinfo2/modules/benchmark.c
+++ /dev/null
@@ -1,654 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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>
-#include <iconcache.h>
-#include <shell.h>
-#include <config.h>
-#include <syncmanager.h>
-
-#include <sys/time.h>
-#include <sys/resource.h>
-
-#include <sys/types.h>
-#include <signal.h>
-
-#include "benchmark.h"
-
-void scan_fft(gboolean reload);
-void scan_raytr(gboolean reload);
-void scan_bfsh(gboolean reload);
-void scan_cryptohash(gboolean reload);
-void scan_fib(gboolean reload);
-void scan_nqueens(gboolean reload);
-void scan_gui(gboolean reload);
-
-gchar *callback_fft();
-gchar *callback_raytr();
-gchar *callback_bfsh();
-gchar *callback_fib();
-gchar *callback_cryptohash();
-gchar *callback_nqueens();
-gchar *callback_gui();
-
-static ModuleEntry entries[] = {
- {"CPU Blowfish", "blowfish.png", callback_bfsh, scan_bfsh, MODULE_FLAG_NONE},
- {"CPU CryptoHash", "cryptohash.png", callback_cryptohash, scan_cryptohash, MODULE_FLAG_NONE},
- {"CPU Fibonacci", "nautilus.png", callback_fib, scan_fib, MODULE_FLAG_NONE},
- {"CPU N-Queens", "nqueens.png", callback_nqueens, scan_nqueens, MODULE_FLAG_NONE},
- {"FPU FFT", "fft.png", callback_fft, scan_fft, MODULE_FLAG_NONE},
- {"FPU Raytracing", "raytrace.png", callback_raytr, scan_raytr, MODULE_FLAG_NONE},
- {"GPU Drawing", "module.png", callback_gui, scan_gui, MODULE_FLAG_NO_REMOTE},
- {NULL}
-};
-
-static gboolean sending_benchmark_results = FALSE;
-
-typedef struct _ParallelBenchTask ParallelBenchTask;
-
-struct _ParallelBenchTask {
- gint thread_number;
- guint start, end;
- gpointer data, callback;
-};
-
-gpointer benchmark_parallel_for_dispatcher(gpointer data)
-{
- ParallelBenchTask *pbt = (ParallelBenchTask *)data;
- gpointer (*callback)(unsigned int start, unsigned int end, void *data, gint thread_number);
- gpointer return_value;
-
- if ((callback = pbt->callback)) {
- DEBUG("this is thread %p; items %d -> %d, data %p", g_thread_self(),
- pbt->start, pbt->end, pbt->data);
- return_value = callback(pbt->start, pbt->end, pbt->data, pbt->thread_number);
- DEBUG("this is thread %p; return value is %p", g_thread_self(), return_value);
- } else {
- DEBUG("this is thread %p; callback is NULL and it should't be!", g_thread_self());
- }
-
- g_free(pbt);
-
- return return_value;
-}
-
-gdouble benchmark_parallel_for(guint start, guint end,
- gpointer callback, gpointer callback_data) {
- gchar *temp;
- guint n_cores, iter_per_core, iter, thread_number = 0;
- gdouble elapsed_time;
- GSList *threads = NULL, *t;
- GTimer *timer;
-
- timer = g_timer_new();
-
- temp = module_call_method("devices::getProcessorCount");
- n_cores = temp ? atoi(temp) : 1;
- g_free(temp);
-
- while (1) {
- iter_per_core = (end - start) / n_cores;
-
- if (iter_per_core == 0) {
- DEBUG("not enough items per core; disabling one");
- n_cores--;
- } else {
- break;
- }
- }
-
- DEBUG("processor has %d cores; processing %d elements (%d per core)",
- n_cores, (end - start), iter_per_core);
-
- g_timer_start(timer);
- for (iter = start; iter < end; iter += iter_per_core) {
- ParallelBenchTask *pbt = g_new0(ParallelBenchTask, 1);
- GThread *thread;
-
- DEBUG("launching thread %d", 1 + (iter / iter_per_core));
-
- pbt->thread_number = thread_number++;
- pbt->start = iter == 0 ? 0 : iter;
- pbt->end = iter + iter_per_core - 1;
- pbt->data = callback_data;
- pbt->callback = callback;
-
- if (pbt->end > end)
- pbt->end = end;
-
- thread = g_thread_create((GThreadFunc) benchmark_parallel_for_dispatcher,
- pbt, TRUE, NULL);
- threads = g_slist_append(threads, thread);
-
- DEBUG("thread %d launched as context %p", thread_number, thread);
- }
-
- DEBUG("waiting for all threads to finish");
- for (t = threads; t; t = t->next) {
- DEBUG("waiting for thread with context %p", t->data);
- g_thread_join((GThread *)t->data);
- }
-
- g_timer_stop(timer);
- elapsed_time = g_timer_elapsed(timer, NULL);
-
- g_slist_free(threads);
- g_timer_destroy(timer);
-
- DEBUG("finishing; all threads took %f seconds to finish", elapsed_time);
-
- return elapsed_time;
-}
-
-static gchar *clean_cpuname(gchar *cpuname)
-{
- gchar *ret = NULL, *tmp;
- gchar *remove[] = {
- "(R)", "(r)", "(TM)", "(tm)", "Processor",
- "Technology", "processor", "CPU",
- "cpu", "Genuine", "Authentic", NULL
- };
- gint i;
-
- ret = g_strdup(cpuname);
- for (i = 0; remove[i]; i++) {
- tmp = strreplace(ret, remove[i], "");
- g_free(ret);
- ret = tmp;
- }
-
- ret = strend(ret, '@');
- ret = g_strstrip(ret);
-
- tmp = g_strdup(ret);
- g_free(ret);
-
- return tmp;
-}
-
-static gchar *__benchmark_include_results(gdouble result,
- const gchar * benchmark,
- ShellOrderType order_type)
-{
- GKeyFile *conf;
- gchar **machines;
- gchar *path, *results = g_strdup(""), *return_value, *processor_frequency;
- 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);
- }
-
- 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;
-
- 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_strfreev(machines);
- g_free(path);
- 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);
- g_free(processor_frequency);
- } 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 return_value;
-}
-
-
-
-static gchar *benchmark_include_results_reverse(gdouble result,
- const gchar * benchmark)
-{
- return __benchmark_include_results(result, benchmark,
- SHELL_ORDER_DESCENDING);
-}
-
-static gchar *benchmark_include_results(gdouble result,
- const gchar * benchmark)
-{
- return __benchmark_include_results(result, benchmark,
- SHELL_ORDER_ASCENDING);
-}
-
-gdouble bench_results[BENCHMARK_N_ENTRIES];
-
-#include <arch/common/fib.h>
-#include <arch/common/cryptohash.h>
-#include <arch/common/blowfish.h>
-#include <arch/common/raytrace.h>
-#include <arch/common/nqueens.h>
-#include <arch/common/fft.h>
-#include <arch/common/drawing.h>
-
-gchar *callback_gui()
-{
- return benchmark_include_results_reverse(bench_results[BENCHMARK_GUI],
- "GPU Drawing");
-}
-
-gchar *callback_fft()
-{
- return benchmark_include_results(bench_results[BENCHMARK_FFT],
- "FPU FFT");
-}
-
-gchar *callback_nqueens()
-{
- return benchmark_include_results(bench_results[BENCHMARK_NQUEENS],
- "CPU N-Queens");
-}
-
-gchar *callback_raytr()
-{
- return benchmark_include_results(bench_results[BENCHMARK_RAYTRACE],
- "FPU Raytracing");
-}
-
-gchar *callback_bfsh()
-{
- return benchmark_include_results(bench_results[BENCHMARK_BLOWFISH],
- "CPU Blowfish");
-}
-
-gchar *callback_cryptohash()
-{
- return benchmark_include_results_reverse(bench_results[BENCHMARK_CRYPTOHASH],
- "CPU CryptoHash");
-}
-
-gchar *callback_fib()
-{
- return benchmark_include_results(bench_results[BENCHMARK_FIB],
- "CPU Fibonacci");
-}
-
-typedef struct _BenchmarkDialog BenchmarkDialog;
-struct _BenchmarkDialog {
- GtkWidget *dialog;
- double result;
-};
-
-static gboolean do_benchmark_handler(GIOChannel *source,
- GIOCondition condition,
- gpointer data)
-{
- BenchmarkDialog *bench_dialog = (BenchmarkDialog*)data;
- GIOStatus status;
- gchar *result;
-
- status = g_io_channel_read_line(source, &result, NULL, NULL, NULL);
- if (status != G_IO_STATUS_NORMAL) {
- DEBUG("error while reading benchmark result");
-
- bench_dialog->result = -1.0f;
- gtk_widget_destroy(bench_dialog->dialog);
- return FALSE;
- }
-
- bench_dialog->result = atof(result);
- gtk_widget_destroy(bench_dialog->dialog);
- g_free(result);
-
- return FALSE;
-}
-
-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", "libbenchmark.so", "-a", NULL };
- GPid bench_pid;
- gint bench_stdout;
- GtkWidget *bench_dialog;
- GtkWidget *bench_image;
- BenchmarkDialog *benchmark_dialog;
- GSpawnFlags spawn_flags = G_SPAWN_STDERR_TO_DEV_NULL;
- gchar *bench_status;
-
- bench_status = g_strdup_printf("Benchmarking: <b>%s</b>.", entries[entry].name);
-
- shell_view_set_enabled(FALSE);
- shell_status_update(bench_status);
-
- g_free(bench_status);
-
- bench_image = icon_cache_get_image("benchmark.png");
- gtk_widget_show(bench_image);
-
- bench_dialog = gtk_message_dialog_new(GTK_WINDOW(shell_get_main_shell()->window),
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_INFO,
- GTK_BUTTONS_NONE,
- "Benchmarking. Please do not move your mouse " \
- "or press any keys.");
- g_object_set_data(G_OBJECT(bench_dialog), "result", "0.0");
- gtk_dialog_add_buttons(GTK_DIALOG(bench_dialog),
- "Cancel", GTK_RESPONSE_ACCEPT, NULL);
- gtk_message_dialog_set_image(GTK_MESSAGE_DIALOG(bench_dialog), bench_image);
-
- while (gtk_events_pending()) {
- gtk_main_iteration();
- }
-
- 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;
- }
-
- if (g_spawn_async_with_pipes(NULL,
- argv, NULL,
- spawn_flags,
- NULL, NULL,
- &bench_pid,
- NULL, &bench_stdout, NULL,
- NULL)) {
- GIOChannel *channel;
- guint watch_id;
-
- DEBUG("spawning benchmark; pid=%d", bench_pid);
-
- channel = g_io_channel_unix_new(bench_stdout);
- watch_id = g_io_add_watch(channel, G_IO_IN, do_benchmark_handler,
- benchmark_dialog);
-
- switch (gtk_dialog_run(GTK_DIALOG(bench_dialog))) {
- case GTK_RESPONSE_NONE:
- DEBUG("benchmark finished");
- break;
- case GTK_RESPONSE_ACCEPT:
- DEBUG("cancelling benchmark");
-
- gtk_widget_destroy(bench_dialog);
- g_source_remove(watch_id);
- kill(bench_pid, SIGINT);
- }
-
- bench_results[entry] = benchmark_dialog->result;
-
- g_io_channel_unref(channel);
- shell_view_set_enabled(TRUE);
- shell_status_set_enabled(TRUE);
- g_free(benchmark_dialog);
-
- shell_status_update("Done.");
-
- return;
- }
-
- gtk_widget_destroy(bench_dialog);
- g_free(benchmark_dialog);
- shell_status_set_enabled(TRUE);
- shell_status_update("Done.");
- }
-
- setpriority(PRIO_PROCESS, 0, -20);
- benchmark_function();
- setpriority(PRIO_PROCESS, 0, old_priority);
-}
-
-void scan_gui(gboolean reload)
-{
- SCAN_START();
-
- if (params.run_benchmark) {
- int argc = 0;
-
- ui_init(&argc, NULL);
- }
-
- if (params.gui_running || params.run_benchmark) {
- do_benchmark(benchmark_gui, BENCHMARK_GUI);
- } else {
- bench_results[BENCHMARK_GUI] = 0.0f;
- }
- SCAN_END();
-}
-
-void scan_fft(gboolean reload)
-{
- SCAN_START();
- do_benchmark(benchmark_fft, BENCHMARK_FFT);
- SCAN_END();
-}
-
-void scan_nqueens(gboolean reload)
-{
- SCAN_START();
- do_benchmark(benchmark_nqueens, BENCHMARK_NQUEENS);
- SCAN_END();
-}
-
-void scan_raytr(gboolean reload)
-{
- SCAN_START();
- do_benchmark(benchmark_raytrace, BENCHMARK_RAYTRACE);
- SCAN_END();
-}
-
-void scan_bfsh(gboolean reload)
-{
- SCAN_START();
- do_benchmark(benchmark_fish, BENCHMARK_BLOWFISH);
- SCAN_END();
-}
-
-void scan_cryptohash(gboolean reload)
-{
- SCAN_START();
- do_benchmark(benchmark_cryptohash, BENCHMARK_CRYPTOHASH);
- SCAN_END();
-}
-
-void scan_fib(gboolean reload)
-{
- SCAN_START();
- do_benchmark(benchmark_fib, BENCHMARK_FIB);
- SCAN_END();
-}
-
-const gchar *hi_note_func(gint entry)
-{
- switch (entry) {
- case BENCHMARK_CRYPTOHASH:
- return "Results in MiB/second. Higher is better.";
-
- case BENCHMARK_GUI:
- return "Results in HIMarks. Higher is better.";
-
- case BENCHMARK_FFT:
- case BENCHMARK_RAYTRACE:
- case BENCHMARK_BLOWFISH:
- case BENCHMARK_FIB:
- case BENCHMARK_NQUEENS:
- return "Results in seconds. Lower is better.";
- }
-
- return NULL;
-}
-
-gchar *hi_module_get_name(void)
-{
- return g_strdup("Benchmarks");
-}
-
-guchar hi_module_get_weight(void)
-{
- return 240;
-}
-
-ModuleEntry *hi_module_get_entries(void)
-{
- return entries;
-}
-
-ModuleAbout *hi_module_get_about(void)
-{
- static ModuleAbout ma[] = {
- {
- .author = "Leandro A. F. Pereira",
- .description = "Perform tasks and compare with other systems",
- .version = VERSION,
- .license = "GNU GPL version 2"}
- };
-
- return ma;
-}
-
-static gchar *get_benchmark_results()
-{
- void (*scan_callback) (gboolean rescan);
-
- sending_benchmark_results = TRUE;
-
- gint i = G_N_ELEMENTS(entries) - 1;
- gchar *machine = module_call_method("devices::getProcessorName");
- gchar *machineclock = module_call_method("devices::getProcessorFrequency");
- gchar *machineram = module_call_method("devices::getMemoryTotal");
- gchar *result = g_strdup_printf("[param]\n"
- "machine=%s\n"
- "machineclock=%s\n"
- "machineram=%s\n"
- "nbenchmarks=%d\n",
- machine,
- machineclock,
- machineram, i);
- for (; i >= 0; i--) {
- if ((scan_callback = entries[i].scan_callback)) {
- if (bench_results[i] < 0.0) {
- /* benchmark was cancelled */
- scan_callback(TRUE);
- } else {
- scan_callback(FALSE);
- }
-
- result = h_strdup_cprintf("[bench%d]\n"
- "name=%s\n"
- "value=%f\n",
- result,
- i, entries[i].name, bench_results[i]);
- }
- }
-
- g_free(machine);
- g_free(machineclock);
- g_free(machineram);
-
- sending_benchmark_results = FALSE;
-
- return result;
-}
-
-static gchar *run_benchmark(gchar *name)
-{
- int i;
-
- DEBUG("name = %s", name);
-
- for (i = 0; entries[i].name; i++) {
- if (g_str_equal(entries[i].name, name)) {
- void (*scan_callback)(gboolean rescan);
-
- if ((scan_callback = entries[i].scan_callback)) {
- scan_callback(FALSE);
-
- return g_strdup_printf("%f", bench_results[i]);
- }
- }
- }
-
- return NULL;
-}
-
-ShellModuleMethod *hi_exported_methods(void)
-{
- static ShellModuleMethod m[] = {
- {"runBenchmark", run_benchmark},
- {NULL}
- };
-
- return m;
-}
-
-void hi_module_init(void)
-{
- static SyncEntry se[] = {
- {
- .fancy_name = "Send benchmark results",
- .name = "SendBenchmarkResults",
- .save_to = NULL,
- .get_data = get_benchmark_results},
- {
- .fancy_name = "Receive benchmark results",
- .name = "RecvBenchmarkResults",
- .save_to = "benchmark.conf",
- .get_data = NULL}
- };
-
- sync_manager_add_entry(&se[0]);
- sync_manager_add_entry(&se[1]);
-}
-
-gchar **hi_module_get_dependencies(void)
-{
- static gchar *deps[] = { "libdevices.so", NULL };
-
- return deps;
-}
-
diff --git a/hardinfo2/modules/benchmark/blowfish.c b/hardinfo2/modules/benchmark/blowfish.c
deleted file mode 100644
index 034315ab..00000000
--- a/hardinfo2/modules/benchmark/blowfish.c
+++ /dev/null
@@ -1,493 +0,0 @@
-/*
-blowfish.c: C implementation of the Blowfish algorithm.
-
-Copyright (C) 1997 by Paul Kocher
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.
-This library 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
-Lesser General Public License for more details.
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-
-
-COMMENTS ON USING THIS CODE:
-
-Normal usage is as follows:
- [1] Allocate a BLOWFISH_CTX. (It may be too big for the stack.)
- [2] Call Blowfish_Init with a pointer to your BLOWFISH_CTX, a pointer to
- the key, and the number of bytes in the key.
- [3] To encrypt a 64-bit block, call Blowfish_Encrypt with a pointer to
- BLOWFISH_CTX, a pointer to the 32-bit left half of the plaintext
- and a pointer to the 32-bit right half. The plaintext will be
- overwritten with the ciphertext.
- [4] Decryption is the same as encryption except that the plaintext and
- ciphertext are reversed.
-
-Warning #1: The code does not check key lengths. (Caveat encryptor.)
-Warning #2: Beware that Blowfish keys repeat such that "ab" = "abab".
-Warning #3: It is normally a good idea to zeroize the BLOWFISH_CTX before
- freeing it.
-Warning #4: Endianness conversions are the responsibility of the caller.
- (To encrypt bytes on a little-endian platforms, you'll probably want
- to swap bytes around instead of just casting.)
-Warning #5: Make sure to use a reasonable mode of operation for your
- application. (If you don't know what CBC mode is, see Warning #7.)
-Warning #6: This code is susceptible to timing attacks.
-Warning #7: Security engineering is risky and non-intuitive. Have someone
- check your work. If you don't know what you are doing, get help.
-
-
-This is code is fast enough for most applications, but is not optimized for
-speed.
-
-If you require this code under a license other than LGPL, please ask. (I
-can be located using your favorite search engine.) Unfortunately, I do not
-have time to provide unpaid support for everyone who uses this code.
-
- -- Paul Kocher
-*/
-
-#include "blowfish.h"
-
-#define N 16
-static const unsigned long ORIG_P[16 + 2] =
- { 0x243F6A88L, 0x85A308D3L, 0x13198A2EL, 0x03707344L, 0xA4093822L,
- 0x299F31D0L, 0x082EFA98L, 0xEC4E6C89L, 0x452821E6L, 0x38D01377L,
- 0xBE5466CFL, 0x34E90C6CL, 0xC0AC29B7L,
- 0xC97C50DDL, 0x3F84D5B5L, 0xB5470917L, 0x9216D5D9L, 0x8979FB1BL
-};
-
-static const unsigned long ORIG_S[4][256] = {
- {0xD1310BA6L, 0x98DFB5ACL, 0x2FFD72DBL, 0xD01ADFB7L, 0xB8E1AFEDL,
- 0x6A267E96L, 0xBA7C9045L, 0xF12C7F99L, 0x24A19947L, 0xB3916CF7L,
- 0x0801F2E2L, 0x858EFC16L, 0x636920D8L, 0x71574E69L, 0xA458FEA3L,
- 0xF4933D7EL, 0x0D95748FL, 0x728EB658L, 0x718BCD58L, 0x82154AEEL,
- 0x7B54A41DL, 0xC25A59B5L, 0x9C30D539L, 0x2AF26013L, 0xC5D1B023L,
- 0x286085F0L, 0xCA417918L, 0xB8DB38EFL, 0x8E79DCB0L, 0x603A180EL,
- 0x6C9E0E8BL, 0xB01E8A3EL, 0xD71577C1L, 0xBD314B27L, 0x78AF2FDAL,
- 0x55605C60L, 0xE65525F3L, 0xAA55AB94L, 0x57489862L, 0x63E81440L,
- 0x55CA396AL, 0x2AAB10B6L, 0xB4CC5C34L, 0x1141E8CEL, 0xA15486AFL,
- 0x7C72E993L, 0xB3EE1411L, 0x636FBC2AL, 0x2BA9C55DL, 0x741831F6L,
- 0xCE5C3E16L, 0x9B87931EL, 0xAFD6BA33L, 0x6C24CF5CL, 0x7A325381L,
- 0x28958677L, 0x3B8F4898L, 0x6B4BB9AFL, 0xC4BFE81BL, 0x66282193L,
- 0x61D809CCL, 0xFB21A991L, 0x487CAC60L, 0x5DEC8032L, 0xEF845D5DL,
- 0xE98575B1L, 0xDC262302L, 0xEB651B88L, 0x23893E81L, 0xD396ACC5L,
- 0x0F6D6FF3L, 0x83F44239L, 0x2E0B4482L, 0xA4842004L, 0x69C8F04AL,
- 0x9E1F9B5EL, 0x21C66842L, 0xF6E96C9AL, 0x670C9C61L, 0xABD388F0L,
- 0x6A51A0D2L, 0xD8542F68L, 0x960FA728L, 0xAB5133A3L, 0x6EEF0B6CL,
- 0x137A3BE4L, 0xBA3BF050L, 0x7EFB2A98L, 0xA1F1651DL, 0x39AF0176L,
- 0x66CA593EL, 0x82430E88L, 0x8CEE8619L, 0x456F9FB4L, 0x7D84A5C3L,
- 0x3B8B5EBEL, 0xE06F75D8L, 0x85C12073L, 0x401A449FL, 0x56C16AA6L,
- 0x4ED3AA62L, 0x363F7706L, 0x1BFEDF72L, 0x429B023DL, 0x37D0D724L,
- 0xD00A1248L, 0xDB0FEAD3L, 0x49F1C09BL, 0x075372C9L, 0x80991B7BL,
- 0x25D479D8L, 0xF6E8DEF7L, 0xE3FE501AL, 0xB6794C3BL, 0x976CE0BDL,
- 0x04C006BAL, 0xC1A94FB6L, 0x409F60C4L, 0x5E5C9EC2L, 0x196A2463L,
- 0x68FB6FAFL, 0x3E6C53B5L, 0x1339B2EBL, 0x3B52EC6FL, 0x6DFC511FL,
- 0x9B30952CL, 0xCC814544L, 0xAF5EBD09L, 0xBEE3D004L, 0xDE334AFDL,
- 0x660F2807L, 0x192E4BB3L, 0xC0CBA857L, 0x45C8740FL, 0xD20B5F39L,
- 0xB9D3FBDBL, 0x5579C0BDL, 0x1A60320AL, 0xD6A100C6L, 0x402C7279L,
- 0x679F25FEL, 0xFB1FA3CCL, 0x8EA5E9F8L, 0xDB3222F8L, 0x3C7516DFL,
- 0xFD616B15L, 0x2F501EC8L, 0xAD0552ABL, 0x323DB5FAL, 0xFD238760L,
- 0x53317B48L, 0x3E00DF82L, 0x9E5C57BBL, 0xCA6F8CA0L, 0x1A87562EL,
- 0xDF1769DBL, 0xD542A8F6L, 0x287EFFC3L, 0xAC6732C6L, 0x8C4F5573L,
- 0x695B27B0L, 0xBBCA58C8L, 0xE1FFA35DL, 0xB8F011A0L, 0x10FA3D98L,
- 0xFD2183B8L, 0x4AFCB56CL, 0x2DD1D35BL, 0x9A53E479L, 0xB6F84565L,
- 0xD28E49BCL, 0x4BFB9790L, 0xE1DDF2DAL, 0xA4CB7E33L, 0x62FB1341L,
- 0xCEE4C6E8L, 0xEF20CADAL, 0x36774C01L, 0xD07E9EFEL, 0x2BF11FB4L,
- 0x95DBDA4DL, 0xAE909198L, 0xEAAD8E71L, 0x6B93D5A0L, 0xD08ED1D0L,
- 0xAFC725E0L, 0x8E3C5B2FL, 0x8E7594B7L, 0x8FF6E2FBL, 0xF2122B64L,
- 0x8888B812L, 0x900DF01CL, 0x4FAD5EA0L, 0x688FC31CL, 0xD1CFF191L,
- 0xB3A8C1ADL, 0x2F2F2218L, 0xBE0E1777L, 0xEA752DFEL, 0x8B021FA1L,
- 0xE5A0CC0FL, 0xB56F74E8L, 0x18ACF3D6L, 0xCE89E299L, 0xB4A84FE0L,
- 0xFD13E0B7L, 0x7CC43B81L, 0xD2ADA8D9L, 0x165FA266L, 0x80957705L,
- 0x93CC7314L, 0x211A1477L, 0xE6AD2065L, 0x77B5FA86L, 0xC75442F5L,
- 0xFB9D35CFL, 0xEBCDAF0CL, 0x7B3E89A0L, 0xD6411BD3L, 0xAE1E7E49L,
- 0x00250E2DL, 0x2071B35EL, 0x226800BBL, 0x57B8E0AFL, 0x2464369BL,
- 0xF009B91EL, 0x5563911DL, 0x59DFA6AAL, 0x78C14389L, 0xD95A537FL,
- 0x207D5BA2L, 0x02E5B9C5L, 0x83260376L, 0x6295CFA9L, 0x11C81968L,
- 0x4E734A41L, 0xB3472DCAL, 0x7B14A94AL, 0x1B510052L, 0x9A532915L,
- 0xD60F573FL, 0xBC9BC6E4L, 0x2B60A476L, 0x81E67400L, 0x08BA6FB5L,
- 0x571BE91FL, 0xF296EC6BL, 0x2A0DD915L, 0xB6636521L, 0xE7B9F9B6L,
- 0xFF34052EL, 0xC5855664L, 0x53B02D5DL, 0xA99F8FA1L, 0x08BA4799L,
- 0x6E85076AL}, {0x4B7A70E9L, 0xB5B32944L, 0xDB75092EL,
- 0xC4192623L, 0xAD6EA6B0L, 0x49A7DF7DL,
- 0x9CEE60B8L, 0x8FEDB266L, 0xECAA8C71L,
- 0x699A17FFL, 0x5664526CL, 0xC2B19EE1L,
- 0x193602A5L, 0x75094C29L, 0xA0591340L,
- 0xE4183A3EL, 0x3F54989AL, 0x5B429D65L,
- 0x6B8FE4D6L, 0x99F73FD6L, 0xA1D29C07L,
- 0xEFE830F5L, 0x4D2D38E6L, 0xF0255DC1L,
- 0x4CDD2086L, 0x8470EB26L, 0x6382E9C6L,
- 0x021ECC5EL, 0x09686B3FL, 0x3EBAEFC9L,
- 0x3C971814L, 0x6B6A70A1L, 0x687F3584L,
- 0x52A0E286L, 0xB79C5305L, 0xAA500737L,
- 0x3E07841CL, 0x7FDEAE5CL, 0x8E7D44ECL,
- 0x5716F2B8L, 0xB03ADA37L, 0xF0500C0DL,
- 0xF01C1F04L, 0x0200B3FFL, 0xAE0CF51AL,
- 0x3CB574B2L, 0x25837A58L, 0xDC0921BDL,
- 0xD19113F9L, 0x7CA92FF6L, 0x94324773L,
- 0x22F54701L, 0x3AE5E581L, 0x37C2DADCL,
- 0xC8B57634L, 0x9AF3DDA7L, 0xA9446146L,
- 0x0FD0030EL, 0xECC8C73EL, 0xA4751E41L,
- 0xE238CD99L, 0x3BEA0E2FL, 0x3280BBA1L,
- 0x183EB331L, 0x4E548B38L, 0x4F6DB908L,
- 0x6F420D03L, 0xF60A04BFL, 0x2CB81290L,
- 0x24977C79L, 0x5679B072L, 0xBCAF89AFL,
- 0xDE9A771FL, 0xD9930810L, 0xB38BAE12L,
- 0xDCCF3F2EL, 0x5512721FL, 0x2E6B7124L,
- 0x501ADDE6L, 0x9F84CD87L, 0x7A584718L,
- 0x7408DA17L, 0xBC9F9ABCL, 0xE94B7D8CL,
- 0xEC7AEC3AL, 0xDB851DFAL, 0x63094366L,
- 0xC464C3D2L, 0xEF1C1847L, 0x3215D908L,
- 0xDD433B37L, 0x24C2BA16L, 0x12A14D43L,
- 0x2A65C451L, 0x50940002L, 0x133AE4DDL,
- 0x71DFF89EL, 0x10314E55L, 0x81AC77D6L,
- 0x5F11199BL, 0x043556F1L, 0xD7A3C76BL,
- 0x3C11183BL, 0x5924A509L, 0xF28FE6EDL,
- 0x97F1FBFAL, 0x9EBABF2CL, 0x1E153C6EL,
- 0x86E34570L, 0xEAE96FB1L, 0x860E5E0AL,
- 0x5A3E2AB3L, 0x771FE71CL, 0x4E3D06FAL,
- 0x2965DCB9L, 0x99E71D0FL, 0x803E89D6L,
- 0x5266C825L, 0x2E4CC978L, 0x9C10B36AL,
- 0xC6150EBAL, 0x94E2EA78L, 0xA5FC3C53L,
- 0x1E0A2DF4L, 0xF2F74EA7L, 0x361D2B3DL,
- 0x1939260FL, 0x19C27960L, 0x5223A708L,
- 0xF71312B6L, 0xEBADFE6EL, 0xEAC31F66L,
- 0xE3BC4595L, 0xA67BC883L, 0xB17F37D1L,
- 0x018CFF28L, 0xC332DDEFL, 0xBE6C5AA5L,
- 0x65582185L, 0x68AB9802L, 0xEECEA50FL,
- 0xDB2F953BL, 0x2AEF7DADL, 0x5B6E2F84L,
- 0x1521B628L, 0x29076170L, 0xECDD4775L,
- 0x619F1510L, 0x13CCA830L, 0xEB61BD96L,
- 0x0334FE1EL, 0xAA0363CFL, 0xB5735C90L,
- 0x4C70A239L, 0xD59E9E0BL, 0xCBAADE14L,
- 0xEECC86BCL, 0x60622CA7L, 0x9CAB5CABL,
- 0xB2F3846EL, 0x648B1EAFL, 0x19BDF0CAL,
- 0xA02369B9L, 0x655ABB50L, 0x40685A32L,
- 0x3C2AB4B3L, 0x319EE9D5L, 0xC021B8F7L,
- 0x9B540B19L, 0x875FA099L, 0x95F7997EL,
- 0x623D7DA8L, 0xF837889AL, 0x97E32D77L,
- 0x11ED935FL, 0x16681281L, 0x0E358829L,
- 0xC7E61FD6L, 0x96DEDFA1L, 0x7858BA99L,
- 0x57F584A5L, 0x1B227263L, 0x9B83C3FFL,
- 0x1AC24696L, 0xCDB30AEBL, 0x532E3054L,
- 0x8FD948E4L, 0x6DBC3128L, 0x58EBF2EFL,
- 0x34C6FFEAL, 0xFE28ED61L, 0xEE7C3C73L,
- 0x5D4A14D9L, 0xE864B7E3L, 0x42105D14L,
- 0x203E13E0L, 0x45EEE2B6L, 0xA3AAABEAL,
- 0xDB6C4F15L, 0xFACB4FD0L, 0xC742F442L,
- 0xEF6ABBB5L, 0x654F3B1DL, 0x41CD2105L,
- 0xD81E799EL, 0x86854DC7L, 0xE44B476AL,
- 0x3D816250L, 0xCF62A1F2L, 0x5B8D2646L,
- 0xFC8883A0L, 0xC1C7B6A3L, 0x7F1524C3L,
- 0x69CB7492L, 0x47848A0BL, 0x5692B285L,
- 0x095BBF00L, 0xAD19489DL, 0x1462B174L,
- 0x23820E00L, 0x58428D2AL, 0x0C55F5EAL,
- 0x1DADF43EL, 0x233F7061L, 0x3372F092L,
- 0x8D937E41L, 0xD65FECF1L, 0x6C223BDBL,
- 0x7CDE3759L, 0xCBEE7460L, 0x4085F2A7L,
- 0xCE77326EL, 0xA6078084L, 0x19F8509EL,
- 0xE8EFD855L, 0x61D99735L, 0xA969A7AAL,
- 0xC50C06C2L, 0x5A04ABFCL, 0x800BCADCL,
- 0x9E447A2EL, 0xC3453484L, 0xFDD56705L,
- 0x0E1E9EC9L, 0xDB73DBD3L, 0x105588CDL,
- 0x675FDA79L, 0xE3674340L, 0xC5C43465L,
- 0x713E38D8L, 0x3D28F89EL, 0xF16DFF20L,
- 0x153E21E7L, 0x8FB03D4AL, 0xE6E39F2BL,
- 0xDB83ADF7L}, {0xE93D5A68L, 0x948140F7L,
- 0xF64C261CL, 0x94692934L,
- 0x411520F7L, 0x7602D4F7L,
- 0xBCF46B2EL, 0xD4A20068L,
- 0xD4082471L, 0x3320F46AL,
- 0x43B7D4B7L, 0x500061AFL,
- 0x1E39F62EL, 0x97244546L,
- 0x14214F74L, 0xBF8B8840L,
- 0x4D95FC1DL, 0x96B591AFL,
- 0x70F4DDD3L, 0x66A02F45L,
- 0xBFBC09ECL, 0x03BD9785L,
- 0x7FAC6DD0L, 0x31CB8504L,
- 0x96EB27B3L, 0x55FD3941L,
- 0xDA2547E6L, 0xABCA0A9AL,
- 0x28507825L, 0x530429F4L,
- 0x0A2C86DAL, 0xE9B66DFBL,
- 0x68DC1462L, 0xD7486900L,
- 0x680EC0A4L, 0x27A18DEEL,
- 0x4F3FFEA2L, 0xE887AD8CL,
- 0xB58CE006L, 0x7AF4D6B6L,
- 0xAACE1E7CL, 0xD3375FECL,
- 0xCE78A399L, 0x406B2A42L,
- 0x20FE9E35L, 0xD9F385B9L,
- 0xEE39D7ABL, 0x3B124E8BL,
- 0x1DC9FAF7L, 0x4B6D1856L,
- 0x26A36631L, 0xEAE397B2L,
- 0x3A6EFA74L, 0xDD5B4332L,
- 0x6841E7F7L, 0xCA7820FBL,
- 0xFB0AF54EL, 0xD8FEB397L,
- 0x454056ACL, 0xBA489527L,
- 0x55533A3AL, 0x20838D87L,
- 0xFE6BA9B7L, 0xD096954BL,
- 0x55A867BCL, 0xA1159A58L,
- 0xCCA92963L, 0x99E1DB33L,
- 0xA62A4A56L, 0x3F3125F9L,
- 0x5EF47E1CL, 0x9029317CL,
- 0xFDF8E802L, 0x04272F70L,
- 0x80BB155CL, 0x05282CE3L,
- 0x95C11548L, 0xE4C66D22L,
- 0x48C1133FL, 0xC70F86DCL,
- 0x07F9C9EEL, 0x41041F0FL,
- 0x404779A4L, 0x5D886E17L,
- 0x325F51EBL, 0xD59BC0D1L,
- 0xF2BCC18FL, 0x41113564L,
- 0x257B7834L, 0x602A9C60L,
- 0xDFF8E8A3L, 0x1F636C1BL,
- 0x0E12B4C2L, 0x02E1329EL,
- 0xAF664FD1L, 0xCAD18115L,
- 0x6B2395E0L, 0x333E92E1L,
- 0x3B240B62L, 0xEEBEB922L,
- 0x85B2A20EL, 0xE6BA0D99L,
- 0xDE720C8CL, 0x2DA2F728L,
- 0xD0127845L, 0x95B794FDL,
- 0x647D0862L, 0xE7CCF5F0L,
- 0x5449A36FL, 0x877D48FAL,
- 0xC39DFD27L, 0xF33E8D1EL,
- 0x0A476341L, 0x992EFF74L,
- 0x3A6F6EABL, 0xF4F8FD37L,
- 0xA812DC60L, 0xA1EBDDF8L,
- 0x991BE14CL, 0xDB6E6B0DL,
- 0xC67B5510L, 0x6D672C37L,
- 0x2765D43BL, 0xDCD0E804L,
- 0xF1290DC7L, 0xCC00FFA3L,
- 0xB5390F92L, 0x690FED0BL,
- 0x667B9FFBL, 0xCEDB7D9CL,
- 0xA091CF0BL, 0xD9155EA3L,
- 0xBB132F88L, 0x515BAD24L,
- 0x7B9479BFL, 0x763BD6EBL,
- 0x37392EB3L, 0xCC115979L,
- 0x8026E297L, 0xF42E312DL,
- 0x6842ADA7L, 0xC66A2B3BL,
- 0x12754CCCL, 0x782EF11CL,
- 0x6A124237L, 0xB79251E7L,
- 0x06A1BBE6L, 0x4BFB6350L,
- 0x1A6B1018L, 0x11CAEDFAL,
- 0x3D25BDD8L, 0xE2E1C3C9L,
- 0x44421659L, 0x0A121386L,
- 0xD90CEC6EL, 0xD5ABEA2AL,
- 0x64AF674EL, 0xDA86A85FL,
- 0xBEBFE988L, 0x64E4C3FEL,
- 0x9DBC8057L, 0xF0F7C086L,
- 0x60787BF8L, 0x6003604DL,
- 0xD1FD8346L, 0xF6381FB0L,
- 0x7745AE04L, 0xD736FCCCL,
- 0x83426B33L, 0xF01EAB71L,
- 0xB0804187L, 0x3C005E5FL,
- 0x77A057BEL, 0xBDE8AE24L,
- 0x55464299L, 0xBF582E61L,
- 0x4E58F48FL, 0xF2DDFDA2L,
- 0xF474EF38L, 0x8789BDC2L,
- 0x5366F9C3L, 0xC8B38E74L,
- 0xB475F255L, 0x46FCD9B9L,
- 0x7AEB2661L, 0x8B1DDF84L,
- 0x846A0E79L, 0x915F95E2L,
- 0x466E598EL, 0x20B45770L,
- 0x8CD55591L, 0xC902DE4CL,
- 0xB90BACE1L, 0xBB8205D0L,
- 0x11A86248L, 0x7574A99EL,
- 0xB77F19B6L, 0xE0A9DC09L,
- 0x662D09A1L, 0xC4324633L,
- 0xE85A1F02L, 0x09F0BE8CL,
- 0x4A99A025L, 0x1D6EFE10L,
- 0x1AB93D1DL, 0x0BA5A4DFL,
- 0xA186F20FL, 0x2868F169L,
- 0xDCB7DA83L, 0x573906FEL,
- 0xA1E2CE9BL, 0x4FCD7F52L,
- 0x50115E01L, 0xA70683FAL,
- 0xA002B5C4L, 0x0DE6D027L,
- 0x9AF88C27L, 0x773F8641L,
- 0xC3604C06L, 0x61A806B5L,
- 0xF0177A28L, 0xC0F586E0L,
- 0x006058AAL, 0x30DC7D62L,
- 0x11E69ED7L, 0x2338EA63L,
- 0x53C2DD94L, 0xC2C21634L,
- 0xBBCBEE56L, 0x90BCB6DEL,
- 0xEBFC7DA1L, 0xCE591D76L,
- 0x6F05E409L, 0x4B7C0188L,
- 0x39720A3DL, 0x7C927C24L,
- 0x86E3725FL, 0x724D9DB9L,
- 0x1AC15BB4L, 0xD39EB8FCL,
- 0xED545578L, 0x08FCA5B5L,
- 0xD83D7CD3L, 0x4DAD0FC4L,
- 0x1E50EF5EL, 0xB161E6F8L,
- 0xA28514D9L, 0x6C51133CL,
- 0x6FD5C7E7L, 0x56E14EC4L,
- 0x362ABFCEL, 0xDDC6C837L,
- 0xD79A3234L, 0x92638212L,
- 0x670EFA8EL, 0x406000E0L},
-{0x3A39CE37L, 0xD3FAF5CFL, 0xABC27737L, 0x5AC52D1BL, 0x5CB0679EL,
- 0x4FA33742L, 0xD3822740L, 0x99BC9BBEL, 0xD5118E9DL, 0xBF0F7315L,
- 0xD62D1C7EL, 0xC700C47BL, 0xB78C1B6BL, 0x21A19045L, 0xB26EB1BEL,
- 0x6A366EB4L, 0x5748AB2FL, 0xBC946E79L, 0xC6A376D2L, 0x6549C2C8L,
- 0x530FF8EEL, 0x468DDE7DL, 0xD5730A1DL, 0x4CD04DC6L, 0x2939BBDBL,
- 0xA9BA4650L, 0xAC9526E8L, 0xBE5EE304L, 0xA1FAD5F0L, 0x6A2D519AL,
- 0x63EF8CE2L, 0x9A86EE22L, 0xC089C2B8L, 0x43242EF6L, 0xA51E03AAL,
- 0x9CF2D0A4L, 0x83C061BAL, 0x9BE96A4DL, 0x8FE51550L, 0xBA645BD6L,
- 0x2826A2F9L, 0xA73A3AE1L, 0x4BA99586L, 0xEF5562E9L, 0xC72FEFD3L,
- 0xF752F7DAL, 0x3F046F69L, 0x77FA0A59L, 0x80E4A915L, 0x87B08601L,
- 0x9B09E6ADL, 0x3B3EE593L, 0xE990FD5AL, 0x9E34D797L, 0x2CF0B7D9L,
- 0x022B8B51L, 0x96D5AC3AL, 0x017DA67DL, 0xD1CF3ED6L, 0x7C7D2D28L,
- 0x1F9F25CFL, 0xADF2B89BL, 0x5AD6B472L, 0x5A88F54CL, 0xE029AC71L,
- 0xE019A5E6L, 0x47B0ACFDL, 0xED93FA9BL, 0xE8D3C48DL, 0x283B57CCL,
- 0xF8D56629L, 0x79132E28L, 0x785F0191L, 0xED756055L, 0xF7960E44L,
- 0xE3D35E8CL, 0x15056DD4L, 0x88F46DBAL, 0x03A16125L, 0x0564F0BDL,
- 0xC3EB9E15L, 0x3C9057A2L, 0x97271AECL, 0xA93A072AL, 0x1B3F6D9BL,
- 0x1E6321F5L, 0xF59C66FBL, 0x26DCF319L, 0x7533D928L, 0xB155FDF5L,
- 0x03563482L, 0x8ABA3CBBL, 0x28517711L, 0xC20AD9F8L, 0xABCC5167L,
- 0xCCAD925FL, 0x4DE81751L, 0x3830DC8EL, 0x379D5862L, 0x9320F991L,
- 0xEA7A90C2L, 0xFB3E7BCEL, 0x5121CE64L, 0x774FBE32L, 0xA8B6E37EL,
- 0xC3293D46L, 0x48DE5369L, 0x6413E680L, 0xA2AE0810L, 0xDD6DB224L,
- 0x69852DFDL, 0x09072166L, 0xB39A460AL, 0x6445C0DDL, 0x586CDECFL,
- 0x1C20C8AEL, 0x5BBEF7DDL, 0x1B588D40L, 0xCCD2017FL, 0x6BB4E3BBL,
- 0xDDA26A7EL, 0x3A59FF45L, 0x3E350A44L, 0xBCB4CDD5L, 0x72EACEA8L,
- 0xFA6484BBL, 0x8D6612AEL, 0xBF3C6F47L, 0xD29BE463L, 0x542F5D9EL,
- 0xAEC2771BL, 0xF64E6370L, 0x740E0D8DL, 0xE75B1357L, 0xF8721671L,
- 0xAF537D5DL, 0x4040CB08L, 0x4EB4E2CCL, 0x34D2466AL, 0x0115AF84L,
- 0xE1B00428L, 0x95983A1DL, 0x06B89FB4L, 0xCE6EA048L, 0x6F3F3B82L,
- 0x3520AB82L, 0x011A1D4BL, 0x277227F8L, 0x611560B1L, 0xE7933FDCL,
- 0xBB3A792BL, 0x344525BDL, 0xA08839E1L, 0x51CE794BL, 0x2F32C9B7L,
- 0xA01FBAC9L, 0xE01CC87EL, 0xBCC7D1F6L, 0xCF0111C3L, 0xA1E8AAC7L,
- 0x1A908749L, 0xD44FBD9AL, 0xD0DADECBL, 0xD50ADA38L, 0x0339C32AL,
- 0xC6913667L, 0x8DF9317CL, 0xE0B12B4FL, 0xF79E59B7L, 0x43F5BB3AL,
- 0xF2D519FFL, 0x27D9459CL, 0xBF97222CL, 0x15E6FC2AL, 0x0F91FC71L,
- 0x9B941525L, 0xFAE59361L, 0xCEB69CEBL, 0xC2A86459L, 0x12BAA8D1L,
- 0xB6C1075EL, 0xE3056A0CL, 0x10D25065L, 0xCB03A442L, 0xE0EC6E0EL,
- 0x1698DB3BL, 0x4C98A0BEL, 0x3278E964L, 0x9F1F9532L, 0xE0D392DFL,
- 0xD3A0342BL, 0x8971F21EL, 0x1B0A7441L, 0x4BA3348CL, 0xC5BE7120L,
- 0xC37632D8L, 0xDF359F8DL, 0x9B992F2EL, 0xE60B6F47L, 0x0FE3F11DL,
- 0xE54CDA54L, 0x1EDAD891L, 0xCE6279CFL, 0xCD3E7E6FL, 0x1618B166L,
- 0xFD2C1D05L, 0x848FD2C5L, 0xF6FB2299L, 0xF523F357L, 0xA6327623L,
- 0x93A83531L, 0x56CCCD02L, 0xACF08162L, 0x5A75EBB5L, 0x6E163697L,
- 0x88D273CCL, 0xDE966292L, 0x81B949D0L, 0x4C50901BL, 0x71C65614L,
- 0xE6C6C7BDL, 0x327A140AL, 0x45E1D006L, 0xC3F27B9AL, 0xC9AA53FDL,
- 0x62A80F00L, 0xBB25BFE2L, 0x35BDD2F6L, 0x71126905L, 0xB2040222L,
- 0xB6CBCF7CL, 0xCD769C2BL, 0x53113EC0L, 0x1640E3D3L, 0x38ABBD60L,
- 0x2547ADF0L, 0xBA38209CL, 0xF746CE76L, 0x77AFA1C5L, 0x20756060L,
- 0x85CBFE4EL, 0x8AE88DD8L, 0x7AAAF9B0L, 0x4CF9AA7EL, 0x1948C25CL,
- 0x02FB8A8CL, 0x01C36AE4L, 0xD6EBE1F9L, 0x90D4F869L, 0xA65CDEA0L,
- 0x3F09252DL, 0xC208E69FL, 0xB74E6132L, 0xCE77E25BL, 0x578FDFE3L,
- 0x3AC372E6L}
-};
-
-static unsigned long F(BLOWFISH_CTX * ctx, unsigned long x)
-{
- unsigned short a, b, c, d;
- unsigned long y;
- d = (unsigned short) (x & 0xFF);
- x >>= 8;
- c = (unsigned short) (x & 0xFF);
- x >>= 8;
- b = (unsigned short) (x & 0xFF);
- x >>= 8;
- a = (unsigned short) (x & 0xFF);
- y = ctx->S[0][a] + ctx->S[1][b];
- y = y ^ ctx->S[2][c];
- y = y + ctx->S[3][d];
- return y;
-}
-
-void Blowfish_Encrypt(BLOWFISH_CTX * ctx, unsigned long *xl,
- unsigned long *xr)
-{
- unsigned long Xl;
- unsigned long Xr;
- unsigned long temp;
- short i;
- Xl = *xl;
- Xr = *xr;
- for (i = 0; i < N; ++i) {
- Xl = Xl ^ ctx->P[i];
- Xr = F(ctx, Xl) ^ Xr;
- temp = Xl;
- Xl = Xr;
- Xr = temp;
- }
- temp = Xl;
- Xl = Xr;
- Xr = temp;
- Xr = Xr ^ ctx->P[N];
- Xl = Xl ^ ctx->P[N + 1];
- *xl = Xl;
- *xr = Xr;
-}
-
-void Blowfish_Decrypt(BLOWFISH_CTX * ctx, unsigned long *xl,
- unsigned long *xr)
-{
- unsigned long Xl;
- unsigned long Xr;
- unsigned long temp;
- short i;
- Xl = *xl;
- Xr = *xr;
- for (i = N + 1; i > 1; --i) {
- Xl = Xl ^ ctx->P[i];
- Xr = F(ctx, Xl) ^ Xr;
-
- /* Exchange Xl and Xr */
- temp = Xl;
- Xl = Xr;
- Xr = temp;
- }
-
- /* Exchange Xl and Xr */
- temp = Xl;
- Xl = Xr;
- Xr = temp;
- Xr = Xr ^ ctx->P[1];
- Xl = Xl ^ ctx->P[0];
- *xl = Xl;
- *xr = Xr;
-}
-
-void Blowfish_Init(BLOWFISH_CTX * ctx, unsigned char *key, int keyLen)
-{
- int i, j, k;
- unsigned long data, datal, datar;
- for (i = 0; i < 4; i++) {
- for (j = 0; j < 256; j++)
- ctx->S[i][j] = ORIG_S[i][j];
- }
- j = 0;
- for (i = 0; i < N + 2; ++i) {
- data = 0x00000000;
- for (k = 0; k < 4; ++k) {
- data = (data << 8) | key[j];
- j = j + 1;
- if (j >= keyLen)
- j = 0;
- }
- ctx->P[i] = ORIG_P[i] ^ data;
- }
- datal = 0x00000000;
- datar = 0x00000000;
- for (i = 0; i < N + 2; i += 2) {
- Blowfish_Encrypt(ctx, &datal, &datar);
- ctx->P[i] = datal;
- ctx->P[i + 1] = datar;
- }
- for (i = 0; i < 4; ++i) {
- for (j = 0; j < 256; j += 2) {
- Blowfish_Encrypt(ctx, &datal, &datar);
- ctx->S[i][j] = datal;
- ctx->S[i][j + 1] = datar;
- }
- }
-}
-
-
diff --git a/hardinfo2/modules/benchmark/cryptohash.c b/hardinfo2/modules/benchmark/cryptohash.c
deleted file mode 100644
index 99a19140..00000000
--- a/hardinfo2/modules/benchmark/cryptohash.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * 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 "md5.h"
-#include "sha1.h"
-#include "benchmark.h"
-
-static void inline md5_step(char *data, glong srclen)
-{
- struct MD5Context ctx;
- guchar checksum[16];
-
- MD5Init(&ctx);
- MD5Update(&ctx, (guchar *)data, srclen);
- MD5Final(checksum, &ctx);
-}
-
-static void inline sha1_step(char *data, glong srclen)
-{
- SHA1_CTX ctx;
- guchar checksum[20];
-
- SHA1Init(&ctx);
- SHA1Update(&ctx, (guchar*)data, srclen);
- SHA1Final(checksum, &ctx);
-}
-
-static gpointer cryptohash_for(unsigned int start, unsigned int end, void *data, gint thread_number)
-{
- unsigned int i;
-
- for (i = start; i <= end; i++) {
- if (i & 1) {
- md5_step(data, 65536);
- } else {
- sha1_step(data, 65536);
- }
- }
-
- return NULL;
-}
-
-static void
-benchmark_cryptohash(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 CryptoHash benchmark...");
-
- elapsed = benchmark_parallel_for(0, 5000, cryptohash_for, tmpsrc);
-
- g_free(bdata_path);
- g_free(tmpsrc);
-
- bench_results[BENCHMARK_CRYPTOHASH] = 312.0 / elapsed;
-}
diff --git a/hardinfo2/modules/benchmark/drawing.c b/hardinfo2/modules/benchmark/drawing.c
deleted file mode 100644
index 6f01fe6b..00000000
--- a/hardinfo2/modules/benchmark/drawing.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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 "benchmark.h"
-#include "guibench.h"
-
-static void
-benchmark_gui(void)
-{
- shell_view_set_enabled(FALSE);
- shell_status_update("Running drawing benchmark...");
-
- bench_results[BENCHMARK_GUI] = guibench();
-}
diff --git a/hardinfo2/modules/benchmark/fbench.c b/hardinfo2/modules/benchmark/fbench.c
deleted file mode 100644
index df1b8e19..00000000
--- a/hardinfo2/modules/benchmark/fbench.c
+++ /dev/null
@@ -1,745 +0,0 @@
-/*
-
- John Walker's Floating Point Benchmark, derived from...
-
- Marinchip Interactive Lens Design System
-
- John Walker December 1980
-
- By John Walker
- http://www.fourmilab.ch/
-
- This program may be used, distributed, and modified freely as
- long as the origin information is preserved.
-
- This is a complete optical design raytracing algorithm,
- stripped of its user interface and recast into portable C. It
- not only determines execution speed on an extremely floating
- point (including trig function) intensive real-world
- application, it checks accuracy on an algorithm that is
- exquisitely sensitive to errors. The performance of this
- program is typically far more sensitive to changes in the
- efficiency of the trigonometric library routines than the
- average floating point program.
-
- The benchmark may be compiled in two modes. If the symbol
- INTRIG is defined, built-in trigonometric and square root
- routines will be used for all calculations. Timings made with
- INTRIG defined reflect the machine's basic floating point
- performance for the arithmetic operators. If INTRIG is not
- defined, the system library <math.h> functions are used.
- Results with INTRIG not defined reflect the system's library
- performance and/or floating point hardware support for trig
- functions and square root. Results with INTRIG defined are a
- good guide to general floating point performance, while
- results with INTRIG undefined indicate the performance of an
- application which is math function intensive.
-
- Special note regarding errors in accuracy: this program has
- generated numbers identical to the last digit it formats and
- checks on the following machines, floating point
- architectures, and languages:
-
- Marinchip 9900 QBASIC IBM 370 double-precision (REAL * 8) format
-
- IBM PC / XT / AT Lattice C IEEE 64 bit, 80 bit temporaries
- High C same, in line 80x87 code
- BASICA "Double precision"
- Quick BASIC IEEE double precision, software routines
-
- Sun 3 C IEEE 64 bit, 80 bit temporaries,
- in-line 68881 code, in-line FPA code.
-
- MicroVAX II C Vax "G" format floating point
-
- Macintosh Plus MPW C SANE floating point, IEEE 64 bit format
- implemented in ROM.
-
- Inaccuracies reported by this program should be taken VERY
- SERIOUSLY INDEED, as the program has been demonstrated to be
- invariant under changes in floating point format, as long as
- the format is a recognised double precision format. If you
- encounter errors, please remember that they are just as likely
- to be in the floating point editing library or the
- trigonometric libraries as in the low level operator code.
-
- The benchmark assumes that results are basically reliable, and
- only tests the last result computed against the reference. If
- you're running on a suspect system you can compile this
- program with ACCURACY defined. This will generate a version
- which executes as an infinite loop, performing the ray trace
- and checking the results on every pass. All incorrect results
- will be reported.
-
- Representative timings are given below. All have been
- normalised as if run for 1000 iterations.
-
- Time in seconds Computer, Compiler, and notes
- Normal INTRIG
-
- 3466.00 4031.00 Commodore 128, 2 Mhz 8510 with software floating
- point. Abacus Software/Data-Becker Super-C 128,
- version 3.00, run in fast (2 Mhz) mode. Note:
- the results generated by this system differed
- from the reference results in the 8th to 10th
- decimal place.
-
- 3290.00 IBM PC/AT 6 Mhz, Microsoft/IBM BASICA version A3.00.
- Run with the "/d" switch, software floating point.
-
- 2131.50 IBM PC/AT 6 Mhz, Lattice C version 2.14, small model.
- This version of Lattice compiles subroutine
- calls which either do software floating point
- or use the 80x87. The machine on which I ran
- this had an 80287, but the results were so bad
- I wonder if it was being used.
-
- 1598.00 Macintosh Plus, MPW C, SANE Software floating point.
-
- 1582.13 Marinchip 9900 2 Mhz, QBASIC compiler with software
- floating point. This was a QBASIC version of the
- program which contained the identical algorithm.
-
- 404.00 IBM PC/AT 6 Mhz, Microsoft QuickBASIC version 2.0.
- Software floating point.
-
- 165.15 IBM PC/AT 6 Mhz, Metaware High C version 1.3, small
- model. This was compiled to call subroutines for
- floating point, and the machine contained an 80287
- which was used by the subroutines.
-
- 143.20 Macintosh II, MPW C, SANE calls. I was unable to
- determine whether SANE was using the 68881 chip or
- not.
-
- 121.80 Sun 3/160 16 Mhz, Sun C. Compiled with -fsoft switch
- which executes floating point in software.
-
- 78.78 110.11 IBM RT PC (Model 6150). IBM AIX 1.0 C compiler
- with -O switch.
-
- 75.2 254.0 Microsoft Quick C 1.0, in-line 8087 instructions,
- compiled with 80286 optimisation on. (Switches
- were -Ol -FPi87-G2 -AS). Small memory model.
-
- 69.50 IBM PC/AT 6Mhz, Borland Turbo BASIC 1.0. Compiled
- in "8087 required" mode to generate in-line
- code for the math coprocessor.
-
- 66.96 IBM PC/AT 6Mhz, Microsoft QuickBASIC 4.0. This
- release of QuickBASIC compiles code for the
- 80287 math coprocessor.
-
- 66.36 206.35 IBM PC/AT 6Mhz, Metaware High C version 1.3, small
- model. This was compiled with in-line code for the
- 80287 math coprocessor. Trig functions still call
- library routines.
-
- 63.07 220.43 IBM PC/AT, 6Mhz, Borland Turbo C, in-line 8087 code,
- small model, word alignment, no stack checking,
- 8086 code mode.
-
- 17.18 Apollo DN-3000, 12 Mhz 68020 with 68881, compiled
- with in-line code for the 68881 coprocessor.
- According to Apollo, the library routines are chosen
- at runtime based on coprocessor presence. Since the
- coprocessor was present, the library is supposed to
- use in-line floating point code.
-
- 15.55 27.56 VAXstation II GPX. Compiled and executed under
- VAX/VMS C.
-
- 15.14 37.93 Macintosh II, Unix system V. Green Hills 68020
- Unix compiler with in-line code for the 68881
- coprocessor (-O -ZI switches).
-
- 12.69 Sun 3/160 16 Mhz, Sun C. Compiled with -fswitch,
- which calls a subroutine to select the fastest
- floating point processor. This was using the 68881.
-
- 11.74 26.73 Compaq Deskpro 386, 16 Mhz 80386 with 16 Mhz 80387.
- Metaware High C version 1.3, compiled with in-line
- for the math coprocessor (but not optimised for the
- 80386/80387). Trig functions still call library
- routines.
-
- 8.43 30.49 Sun 3/160 16 Mhz, Sun C. Compiled with -f68881,
- generating in-line MC68881 instructions. Trig
- functions still call library routines.
-
- 6.29 25.17 Sun 3/260 25 Mhz, Sun C. Compiled with -f68881,
- generating in-line MC68881 instructions. Trig
- functions still call library routines.
-
- 4.57 Sun 3/260 25 Mhz, Sun FORTRAN 77. Compiled with
- -O -f68881, generating in-line MC68881 instructions.
- Trig functions are compiled in-line. This used
- the FORTRAN 77 version of the program, FBFORT77.F.
-
- 4.00 14.20 Sun386i/25 Mhz model 250, Sun C compiler.
-
- 4.00 14.00 Sun386i/25 Mhz model 250, Metaware C.
-
- 3.10 12.00 Compaq 386/387 25 Mhz running SCO Xenix 2.
- Compiled with Metaware HighC 386, optimized
- for 386.
-
- 3.00 12.00 Compaq 386/387 25MHZ optimized for 386/387.
-
- 2.96 5.17 Sun 4/260, Sparc RISC processor. Sun C,
- compiled with the -O2 switch for global
- optimisation.
-
- 2.47 COMPAQ 486/25, secondary cache disabled, High C,
- 486/387, inline f.p., small memory model.
-
- 2.20 3.40 Data General Motorola 88000, 16 Mhz, Gnu C.
-
- 1.56 COMPAQ 486/25, 128K secondary cache, High C, 486/387,
- inline f.p., small memory model.
-
- 0.66 1.50 DEC Pmax, Mips processor.
-
- 0.63 0.91 Sun SparcStation 2, Sun C (SunOS 4.1.1) with
- -O4 optimisation and "/usr/lib/libm.il" inline
- floating point.
-
- 0.60 1.07 Intel 860 RISC processor, 33 Mhz, Greenhills
- C compiler.
-
- 0.40 0.90 Dec 3MAX, MIPS 3000 processor, -O4.
-
- 0.31 0.90 IBM RS/6000, -O.
-
- 0.1129 0.2119 Dell Dimension XPS P133c, Pentium 133 MHz,
- Windows 95, Microsoft Visual C 5.0.
-
- 0.0883 0.2166 Silicon Graphics Indigo, MIPS R4400,
- 175 Mhz, "-O3".
-
- 0.0351 0.0561 Dell Dimension XPS R100, Pentium II 400 MHz,
- Windows 98, Microsoft Visual C 5.0.
-
- 0.0312 0.0542 Sun Ultra 2, UltraSPARC V9, 300 MHz, Solaris
- 2.5.1.
-
- 0.00862 0.01074 Dell Inspiron 9100, Pentium 4, 3.4 GHz, gcc -O3.
-
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifndef INTRIG
-#include <math.h>
-#endif
-
-#define cot(x) (1.0 / tan(x))
-
-#define TRUE 1
-#define FALSE 0
-
-#define max_surfaces 10
-
-/* Local variables */
-
-/*static char tbfr[132];*/
-
-static short current_surfaces;
-static short paraxial;
-
-static double clear_aperture;
-
-static double aberr_lspher;
-static double aberr_osc;
-static double aberr_lchrom;
-
-static double max_lspher;
-static double max_osc;
-static double max_lchrom;
-
-static double radius_of_curvature;
-static double object_distance;
-static double ray_height;
-static double axis_slope_angle;
-static double from_index;
-static double to_index;
-
-static double spectral_line[9];
-static double s[max_surfaces][5];
-static double od_sa[2][2];
-
- /*static char outarr[8][80];*//* Computed output of program goes here */
-
-static int itercount; /* The iteration counter for the main loop
- in the program is made global so that
- the compiler should not be allowed to
- optimise out the loop over the ray
- tracing code. */
-
-#ifndef ITERATIONS
-#define ITERATIONS 1000
-#endif
-static int niter = ITERATIONS; /* Iteration counter */
-
-#if 0
-static char *refarr[] = { /* Reference results. These happen to
- be derived from a run on Microsoft
- Quick BASIC on the IBM PC/AT. */
-
- " Marginal ray 47.09479120920 0.04178472683",
- " Paraxial ray 47.08372160249 0.04177864821",
- "Longitudinal spherical aberration: -0.01106960671",
- " (Maximum permissible): 0.05306749907",
- "Offense against sine condition (coma): 0.00008954761",
- " (Maximum permissible): 0.00250000000",
- "Axial chromatic aberration: 0.00448229032",
- " (Maximum permissible): 0.05306749907"
-};
-#endif
-
-/* The test case used in this program is the design for a 4 inch
- achromatic telescope objective used as the example in Wyld's
- classic work on ray tracing by hand, given in Amateur Telescope
- Making, Volume 3. */
-
-static double testcase[4][4] = {
- {27.05, 1.5137, 63.6, 0.52},
- {-16.68, 1, 0, 0.138},
- {-16.68, 1.6164, 36.7, 0.38},
- {-78.1, 1, 0, 0}
-};
-
-/* Internal trig functions (used only if INTRIG is defined). These
- standard functions may be enabled to obtain timings that reflect
- the machine's floating point performance rather than the speed of
- its trig function evaluation. */
-
-#ifdef INTRIG
-
-/* The following definitions should keep you from getting intro trouble
- with compilers which don't let you redefine intrinsic functions. */
-
-#define sin I_sin
-#define cos I_cos
-#define tan I_tan
-#define sqrt I_sqrt
-#define atan I_atan
-#define atan2 I_atan2
-#define asin I_asin
-
-#define fabs(x) ((x < 0.0) ? -x : x)
-
-#define pic 3.1415926535897932
-
-/* Commonly used constants */
-
-static double pi = pic,
- twopi = pic * 2.0,
- piover4 = pic / 4.0, fouroverpi = 4.0 / pic, piover2 = pic / 2.0;
-
-/* Coefficients for ATAN evaluation */
-
-static double atanc[] = {
- 0.0,
- 0.4636476090008061165,
- 0.7853981633974483094,
- 0.98279372324732906714,
- 1.1071487177940905022,
- 1.1902899496825317322,
- 1.2490457723982544262,
- 1.2924966677897852673,
- 1.3258176636680324644
-};
-
-/* aint(x) Return integer part of number. Truncates towards 0 */
-
-double aint(x)
-double x;
-{
- long l;
-
- /* Note that this routine cannot handle the full floating point
- number range. This function should be in the machine-dependent
- floating point library! */
-
- l = x;
- if ((int) (-0.5) != 0 && l < 0)
- l++;
- x = l;
- return x;
-}
-
-/* sin(x) Return sine, x in radians */
-
-static double sin(x)
-double x;
-{
- int sign;
- double y, r, z;
-
- x = (((sign = (x < 0.0)) != 0) ? -x : x);
-
- if (x > twopi)
- x -= (aint(x / twopi) * twopi);
-
- if (x > pi) {
- x -= pi;
- sign = !sign;
- }
-
- if (x > piover2)
- x = pi - x;
-
- if (x < piover4) {
- y = x * fouroverpi;
- z = y * y;
- r = y *
- (((((((-0.202253129293E-13 * z + 0.69481520350522E-11) * z -
- 0.17572474176170806E-8) * z +
- 0.313361688917325348E-6) * z -
- 0.365762041821464001E-4) * z +
- 0.249039457019271628E-2) * z - 0.0807455121882807815) * z +
- 0.785398163397448310);
- } else {
- y = (piover2 - x) * fouroverpi;
- z = y * y;
- r = ((((((-0.38577620372E-12 * z + 0.11500497024263E-9) * z -
- 0.2461136382637005E-7) * z +
- 0.359086044588581953E-5) * z -
- 0.325991886926687550E-3) * z + 0.0158543442438154109) * z -
- 0.308425137534042452) * z + 1.0;
- }
- return sign ? -r : r;
-}
-
-/* cos(x) Return cosine, x in radians, by identity */
-
-static double cos(x)
-double x;
-{
- x = (x < 0.0) ? -x : x;
- if (x > twopi) /* Do range reduction here to limit */
- x = x - (aint(x / twopi) * twopi); /* roundoff on add of PI/2 */
- return sin(x + piover2);
-}
-
-/* tan(x) Return tangent, x in radians, by identity */
-
-static double tan(x)
-double x;
-{
- return sin(x) / cos(x);
-}
-
-/* sqrt(x) Return square root. Initial guess, then Newton-
- Raphson refinement */
-
-double sqrt(x)
-double x;
-{
- double c, cl, y;
- int n;
-
- if (x == 0.0)
- return 0.0;
-
- if (x < 0.0) {
- fprintf(stderr,
- "\nGood work! You tried to take the square root of %g",
- x);
- fprintf(stderr,
- "\nunfortunately, that is too complex for me to handle.\n");
- exit(1);
- }
-
- y = (0.154116 + 1.893872 * x) / (1.0 + 1.047988 * x);
-
- c = (y - x / y) / 2.0;
- cl = 0.0;
- for (n = 50; c != cl && n--;) {
- y = y - c;
- cl = c;
- c = (y - x / y) / 2.0;
- }
- return y;
-}
-
-/* atan(x) Return arctangent in radians,
- range -pi/2 to pi/2 */
-
-static double atan(x)
-double x;
-{
- int sign, l, y;
- double a, b, z;
-
- x = (((sign = (x < 0.0)) != 0) ? -x : x);
- l = 0;
-
- if (x >= 4.0) {
- l = -1;
- x = 1.0 / x;
- y = 0;
- goto atl;
- } else {
- if (x < 0.25) {
- y = 0;
- goto atl;
- }
- }
-
- y = aint(x / 0.5);
- z = y * 0.5;
- x = (x - z) / (x * z + 1);
-
- atl:
- z = x * x;
- b = ((((893025.0 * z + 49116375.0) * z + 425675250.0) * z +
- 1277025750.0) * z + 1550674125.0) * z + 654729075.0;
- a = (((13852575.0 * z + 216602100.0) * z + 891080190.0) * z +
- 1332431100.0) * z + 654729075.0;
- a = (a / b) * x + atanc[y];
- if (l)
- a = piover2 - a;
- return sign ? -a : a;
-}
-
-/* atan2(y,x) Return arctangent in radians of y/x,
- range -pi to pi */
-
-static double atan2(y, x)
-double y, x;
-{
- double temp;
-
- if (x == 0.0) {
- if (y == 0.0) /* Special case: atan2(0,0) = 0 */
- return 0.0;
- else if (y > 0)
- return piover2;
- else
- return -piover2;
- }
- temp = atan(y / x);
- if (x < 0.0) {
- if (y >= 0.0)
- temp += pic;
- else
- temp -= pic;
- }
- return temp;
-}
-
-/* asin(x) Return arcsine in radians of x */
-
-static double asin(x)
-double x;
-{
- if (fabs(x) > 1.0) {
- fprintf(stderr,
- "\nInverse trig functions lose much of their gloss when");
- fprintf(stderr,
- "\ntheir arguments are greater than 1, such as the");
- fprintf(stderr, "\nvalue %g you passed.\n", x);
- exit(1);
- }
- return atan2(x, sqrt(1 - x * x));
-}
-#endif
-
-/* Calculate passage through surface
-
- If the variable PARAXIAL is true, the trace through the
- surface will be done using the paraxial approximations.
- Otherwise, the normal trigonometric trace will be done.
-
- This routine takes the following inputs:
-
- RADIUS_OF_CURVATURE Radius of curvature of surface
- being crossed. If 0, surface is
- plane.
-
- OBJECT_DISTANCE Distance of object focus from
- lens vertex. If 0, incoming
- rays are parallel and
- the following must be specified:
-
- RAY_HEIGHT Height of ray from axis. Only
- relevant if OBJECT.DISTANCE == 0
-
- AXIS_SLOPE_ANGLE Angle incoming ray makes with axis
- at intercept
-
- FROM_INDEX Refractive index of medium being left
-
- TO_INDEX Refractive index of medium being
- entered.
-
- The outputs are the following variables:
-
- OBJECT_DISTANCE Distance from vertex to object focus
- after refraction.
-
- AXIS_SLOPE_ANGLE Angle incoming ray makes with axis
- at intercept after refraction.
-
-*/
-
-static void transit_surface()
-{
- double iang, /* Incidence angle */
- rang, /* Refraction angle */
- iang_sin, /* Incidence angle sin */
- rang_sin, /* Refraction angle sin */
- old_axis_slope_angle, sagitta;
-
- if (paraxial) {
- if (radius_of_curvature != 0.0) {
- if (object_distance == 0.0) {
- axis_slope_angle = 0.0;
- iang_sin = ray_height / radius_of_curvature;
- } else
- iang_sin = ((object_distance -
- radius_of_curvature) / radius_of_curvature) *
- axis_slope_angle;
-
- rang_sin = (from_index / to_index) * iang_sin;
- old_axis_slope_angle = axis_slope_angle;
- axis_slope_angle = axis_slope_angle + iang_sin - rang_sin;
- if (object_distance != 0.0)
- ray_height = object_distance * old_axis_slope_angle;
- object_distance = ray_height / axis_slope_angle;
- return;
- }
- object_distance = object_distance * (to_index / from_index);
- axis_slope_angle = axis_slope_angle * (from_index / to_index);
- return;
- }
-
- if (radius_of_curvature != 0.0) {
- if (object_distance == 0.0) {
- axis_slope_angle = 0.0;
- iang_sin = ray_height / radius_of_curvature;
- } else {
- iang_sin = ((object_distance -
- radius_of_curvature) / radius_of_curvature) *
- sin(axis_slope_angle);
- }
- iang = asin(iang_sin);
- rang_sin = (from_index / to_index) * iang_sin;
- old_axis_slope_angle = axis_slope_angle;
- axis_slope_angle = axis_slope_angle + iang - asin(rang_sin);
- sagitta = sin((old_axis_slope_angle + iang) / 2.0);
- sagitta = 2.0 * radius_of_curvature * sagitta * sagitta;
- object_distance =
- ((radius_of_curvature * sin(old_axis_slope_angle + iang)) *
- cot(axis_slope_angle)) + sagitta;
- return;
- }
-
- rang = -asin((from_index / to_index) * sin(axis_slope_angle));
- object_distance = object_distance * ((to_index *
- cos(-rang)) / (from_index *
- cos
- (axis_slope_angle)));
- axis_slope_angle = -rang;
-}
-
-/* Perform ray trace in specific spectral line */
-
-static void trace_line(line, ray_h)
-int line;
-double ray_h;
-{
- int i;
-
- object_distance = 0.0;
- ray_height = ray_h;
- from_index = 1.0;
-
- for (i = 1; i <= current_surfaces; i++) {
- radius_of_curvature = s[i][1];
- to_index = s[i][2];
- if (to_index > 1.0)
- to_index = to_index + ((spectral_line[4] -
- spectral_line[line]) /
- (spectral_line[3] -
- spectral_line[6])) * ((s[i][2] -
- 1.0) / s[i][3]);
- transit_surface();
- from_index = to_index;
- if (i < current_surfaces)
- object_distance = object_distance - s[i][4];
- }
-}
-
-/* Initialise when called the first time */
-
-void fbench()
-{
- int i, j;
- double od_fline, od_cline;
-
- spectral_line[1] = 7621.0; /* A */
- spectral_line[2] = 6869.955; /* B */
- spectral_line[3] = 6562.816; /* C */
- spectral_line[4] = 5895.944; /* D */
- spectral_line[5] = 5269.557; /* E */
- spectral_line[6] = 4861.344; /* F */
- spectral_line[7] = 4340.477; /* G' */
- spectral_line[8] = 3968.494; /* H */
-
- niter = 3000;
-
- /* Load test case into working array */
-
- clear_aperture = 4.0;
- current_surfaces = 4;
- for (i = 0; i < current_surfaces; i++)
- for (j = 0; j < 4; j++)
- s[i + 1][j + 1] = testcase[i][j];
-
- for (itercount = 0; itercount < niter; itercount++) {
- for (paraxial = 0; paraxial <= 1; paraxial++) {
-
- /* Do main trace in D light */
-
- trace_line(4, clear_aperture / 2.0);
- od_sa[paraxial][0] = object_distance;
- od_sa[paraxial][1] = axis_slope_angle;
- }
- paraxial = FALSE;
-
- /* Trace marginal ray in C */
-
- trace_line(3, clear_aperture / 2.0);
- od_cline = object_distance;
-
- /* Trace marginal ray in F */
-
- trace_line(6, clear_aperture / 2.0);
- od_fline = object_distance;
-
- aberr_lspher = od_sa[1][0] - od_sa[0][0];
- aberr_osc = 1.0 - (od_sa[1][0] * od_sa[1][1]) /
- (sin(od_sa[0][1]) * od_sa[0][0]);
- aberr_lchrom = od_fline - od_cline;
- max_lspher = sin(od_sa[0][1]);
-
- /* D light */
-
- max_lspher = 0.0000926 / (max_lspher * max_lspher);
- max_osc = 0.0025;
- max_lchrom = max_lspher;
- }
-}
-
-#ifdef __FBENCH_TEST__
-int main(void)
-{
- fbench();
-
- return 0;
-}
-#endif
diff --git a/hardinfo2/modules/benchmark/fft.c b/hardinfo2/modules/benchmark/fft.c
deleted file mode 100644
index f1a0ced8..00000000
--- a/hardinfo2/modules/benchmark/fft.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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 <fftbench.h>
-
-static gpointer fft_for(unsigned int start, unsigned int end, void *data, gint thread_number)
-{
- unsigned int i;
- FFTBench **benches = (FFTBench **)data;
- FFTBench *fftbench = (FFTBench *)(benches[thread_number]);
-
- for (i = start; i <= end; i++) {
- fft_bench_run(fftbench);
- }
-
- return NULL;
-}
-
-static void
-benchmark_fft(void)
-{
- gdouble elapsed = 0;
- int n_cores, i;
- gchar *temp;
- FFTBench **benches;
-
- shell_view_set_enabled(FALSE);
- shell_status_update("Running FFT benchmark...");
-
- /* Pre-allocate all benchmarks */
- temp = module_call_method("devices::getProcessorCount");
- n_cores = temp ? atoi(temp) : 1;
- g_free(temp);
-
- benches = g_new0(FFTBench *, n_cores);
- for (i = 0; i < n_cores; i++) {
- benches[i] = fft_bench_new();
- }
-
- /* Run the benchmark */
- elapsed = benchmark_parallel_for(0, 4, fft_for, benches);
-
- /* Free up the memory */
- for (i = 0; i < n_cores; i++) {
- fft_bench_free(benches[i]);
- }
- g_free(benches);
-
- bench_results[BENCHMARK_FFT] = elapsed;
-}
diff --git a/hardinfo2/modules/benchmark/fftbench.c b/hardinfo2/modules/benchmark/fftbench.c
deleted file mode 100644
index dc25dfd6..00000000
--- a/hardinfo2/modules/benchmark/fftbench.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- fftbench.c
-
- Written by Scott Robert Ladd (scott@coyotegulch.com)
- No rights reserved. This is public domain software, for use by anyone.
-
- A number-crunching benchmark using LUP-decomposition to solve a large
- linear equation.
-
- The code herein is design for the purpose of testing computational
- performance; error handling is minimal.
-
- In fact, this is a weak implementation of the FFT; unfortunately, all
- of my really nifty FFTs are in commercial code, and I haven't had time
- to write a new FFT routine for this benchmark. I may add a Hartley
- transform to the seat, too.
-
- Actual benchmark results can be found at:
- http://www.coyotegulch.com
-
- Please do not use this information or algorithm in any way that might
- upset the balance of the universe or otherwise cause a disturbance in
- the space-time continuum.
-*/
-
-#include <time.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <stdbool.h>
-#include <stdio.h>
-
-#include "fftbench.h"
-
-// embedded random number generator; ala Park and Miller
-static long seed = 1325;
-static const long IA = 16807;
-static const long IM = 2147483647;
-static const double AM = 4.65661287525E-10;
-static const long IQ = 127773;
-static const long IR = 2836;
-static const long MASK = 123459876;
-
-static double random_double()
-{
- long k;
- double result;
-
- seed ^= MASK;
- k = seed / IQ;
- seed = IA * (seed - k * IQ) - IR * k;
-
- if (seed < 0)
- seed += IM;
-
- result = AM * seed;
- seed ^= MASK;
-
- return result;
-}
-
-static const int N = 800;
-static const int NM1 = 799; // N - 1
-static const int NP1 = 801; // N + 1
-
-static void lup_decompose(FFTBench *fftbench)
-{
- int i, j, k, k2, t;
- double p, temp, **a;
-
- int *perm = (int *) malloc(sizeof(double) * N);
-
- fftbench->p = perm;
- a = fftbench->a;
-
- for (i = 0; i < N; ++i)
- perm[i] = i;
-
- for (k = 0; k < NM1; ++k) {
- p = 0.0;
-
- for (i = k; i < N; ++i) {
- temp = fabs(a[i][k]);
-
- if (temp > p) {
- p = temp;
- k2 = i;
- }
- }
-
- // check for invalid a
- if (p == 0.0)
- return;
-
- // exchange rows
- t = perm[k];
- perm[k] = perm[k2];
- perm[k2] = t;
-
- for (i = 0; i < N; ++i) {
- temp = a[k][i];
- a[k][i] = a[k2][i];
- a[k2][i] = temp;
- }
-
- for (i = k + 1; i < N; ++i) {
- a[i][k] /= a[k][k];
-
- for (j = k + 1; j < N; ++j)
- a[i][j] -= a[i][k] * a[k][j];
- }
- }
-}
-
-static double *lup_solve(FFTBench *fftbench)
-{
- int i, j, j2;
- double sum, u;
-
- double *y = (double *) malloc(sizeof(double) * N);
- double *x = (double *) malloc(sizeof(double) * N);
-
- double **a = fftbench->a;
- double *b = fftbench->b;
- int *perm = fftbench->p;
-
- for (i = 0; i < N; ++i) {
- y[i] = 0.0;
- x[i] = 0.0;
- }
-
- for (i = 0; i < N; ++i) {
- sum = 0.0;
- j2 = 0;
-
- for (j = 1; j <= i; ++j) {
- sum += a[i][j2] * y[j2];
- ++j2;
- }
-
- y[i] = b[perm[i]] - sum;
- }
-
- i = NM1;
-
- while (1) {
- sum = 0.0;
- u = a[i][i];
-
- for (j = i + 1; j < N; ++j)
- sum += a[i][j] * x[j];
-
- x[i] = (y[i] - sum) / u;
-
- if (i == 0)
- break;
-
- --i;
- }
-
- free(y);
-
- return x;
-}
-
-FFTBench *fft_bench_new(void)
-{
- FFTBench *fftbench;
- int i, j;
-
- fftbench = g_new0(FFTBench, 1);
-
- // generate test data
- fftbench->a = (double **) malloc(sizeof(double *) * N);
-
- for (i = 0; i < N; ++i) {
- fftbench->a[i] = (double *) malloc(sizeof(double) * N);
-
- for (j = 0; j < N; ++j)
- fftbench->a[i][j] = random_double();
- }
-
- fftbench->b = (double *) malloc(sizeof(double) * N);
-
- for (i = 0; i < N; ++i)
- fftbench->b[i] = random_double();
-
- return fftbench;
-}
-
-void fft_bench_run(FFTBench *fftbench)
-{
- lup_decompose(fftbench);
- lup_solve(fftbench);
-}
-
-void fft_bench_free(FFTBench *fftbench)
-{
- int i;
-
- // clean up
- for (i = 0; i < N; ++i)
- free(fftbench->a[i]);
-
- free(fftbench->a);
- free(fftbench->b);
- free(fftbench->p);
- free(fftbench->r);
-
- g_free(fftbench);
-}
diff --git a/hardinfo2/modules/benchmark/fib.c b/hardinfo2/modules/benchmark/fib.c
deleted file mode 100644
index 3ff54dba..00000000
--- a/hardinfo2/modules/benchmark/fib.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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 "benchmark.h"
-
-static gulong
-fib(gulong n)
-{
- if (n == 0)
- return 0;
- else if (n <= 2)
- return 1;
- return fib(n - 1) + fib(n - 2);
-}
-
-static void
-benchmark_fib(void)
-{
- GTimer *timer = g_timer_new();
- gdouble elapsed;
-
- shell_view_set_enabled(FALSE);
- shell_status_update("Calculating the 42nd Fibonacci number...");
-
- g_timer_reset(timer);
- g_timer_start(timer);
-
- fib(42);
-
- g_timer_stop(timer);
- elapsed = g_timer_elapsed(timer, NULL);
- g_timer_destroy(timer);
-
- bench_results[BENCHMARK_FIB] = elapsed;
-}
diff --git a/hardinfo2/modules/benchmark/guibench.c b/hardinfo2/modules/benchmark/guibench.c
deleted file mode 100644
index b9573278..00000000
--- a/hardinfo2/modules/benchmark/guibench.c
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 <gtk/gtk.h>
-
-#include "iconcache.h"
-#include "config.h"
-
-#define N_ITERATIONS 100000
-#define PHRASE "I \342\231\245 HardInfo"
-
-typedef double (*BenchCallback)(GtkWindow *window);
-
-static double test_lines(GtkWindow *window);
-static double test_shapes(GtkWindow *window);
-static double test_filled_shapes(GtkWindow *window);
-static double test_text(GtkWindow *window);
-static double test_icons(GtkWindow *window);
-
-/*
-Results on a AMD Athlon 3200+ (Barton), 1GB RAM,
-nVidia Geforce 6200 with nvidia Xorg driver,
-running Linux 2.6.28, Xorg 1.6.0, Ubuntu 9.04
-desktop, GNOME 2.26.1, composite enabled.
-
-Test Time Iter/Sec
-Line Drawing 3.9570 25271.7663
-Shape Drawing 22.2499 4494.4065
-Filled Shape Drawing 4.0377 24766.2806
-Text Drawing 59.1565 1690.4309
-Icon Blitting 51.720941 1933.4528
-
-Results are normalized according to these values.
-A guibench() result of 1000.0 is roughly equivalent
-to this same setup.
-*/
-
-static struct {
- BenchCallback callback;
- gchar *title;
- gdouble weight;
-} tests[] = {
- { test_lines, "Line Drawing", 25271.77 },
- { test_shapes, "Shape Drawing", 4494.49 },
- { test_filled_shapes, "Filled Shape Drawing", 24766.28 },
- { test_text, "Text Drawing", 1690.43 },
- { test_icons, "Icon Blitting", 1933.45 },
- { NULL, NULL }
-};
-
-static gchar *phrase = NULL;
-
-static gboolean keypress_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
-{
- const int magic[] = { 0x1b, 0x33, 0x3a, 0x35, 0x51 };
- const int states[] = { 0xff52, 0xff52, 0xff54, 0xff54,
- 0xff51, 0xff53, 0xff51, 0xff53,
- 0x62, 0x61 };
- static int state = 0;
-
- if (event->keyval == states[state]) {
- state++;
- } else {
- state = 0;
- }
-
- if (state == G_N_ELEMENTS(states)) {
- int i;
-
- for (i = 0; i < G_N_ELEMENTS(magic); i++) {
- phrase[i + 6] = magic[i] ^ (states[i] & (states[i] >> 8));
- }
-
- state = 0;
- }
-
- return FALSE;
-}
-
-static double test_icons(GtkWindow *window)
-{
- GdkPixbuf *pixbufs[3];
- GdkGC *gc;
- GRand *rand;
- GTimer *timer;
- double time;
- GdkWindow *gdk_window = GTK_WIDGET(window)->window;
- int icons;
-
- gdk_window_clear(gdk_window);
-
- rand = g_rand_new();
- gc = gdk_gc_new(GDK_DRAWABLE(gdk_window));
- timer = g_timer_new();
-
- pixbufs[0] = icon_cache_get_pixbuf("logo.png");
- pixbufs[1] = icon_cache_get_pixbuf("syncmanager.png");
- pixbufs[2] = icon_cache_get_pixbuf("report-large.png");
-
- g_timer_start(timer);
- for (icons = N_ITERATIONS; icons >= 0; icons--) {
- int x, y;
-
- x = g_rand_int_range(rand, 0, 800);
- y = g_rand_int_range(rand, 0, 600);
-
- gdk_draw_pixbuf(GDK_DRAWABLE(gdk_window), gc,
- pixbufs[icons % G_N_ELEMENTS(pixbufs)],
- 0, 0, x, y, 48, 48,
- GDK_RGB_DITHER_NONE, 0, 0);
-
- while (gtk_events_pending()) {
- gtk_main_iteration();
- }
- }
- g_timer_stop(timer);
-
- time = g_timer_elapsed(timer, NULL);
-
- g_rand_free(rand);
- gdk_gc_destroy(gc);
- g_timer_destroy(timer);
-
- return time;
-}
-
-static double test_text(GtkWindow *window)
-{
- GRand *rand;
- GTimer *timer;
- GdkGC *gc;
- double time;
- PangoLayout *layout;
- PangoFontDescription *font;
- GdkWindow *gdk_window = GTK_WIDGET(window)->window;
- int strings;
-
- gdk_window_clear(gdk_window);
-
- rand = g_rand_new();
- gc = gdk_gc_new(GDK_DRAWABLE(gdk_window));
- timer = g_timer_new();
-
- font = pango_font_description_new();
- layout = pango_layout_new(gtk_widget_get_pango_context(GTK_WIDGET(window)));
- pango_layout_set_text(layout, phrase, -1);
-
- g_timer_start(timer);
- for (strings = N_ITERATIONS; strings >= 0; strings--) {
- int x, y, size;
-
- x = g_rand_int_range(rand, 0, 800);
- y = g_rand_int_range(rand, 0, 600);
- size = g_rand_int_range(rand, 1, 96) * PANGO_SCALE;
-
- pango_font_description_set_size(font, size);
- pango_layout_set_font_description(layout, font);
- gdk_draw_layout(GDK_DRAWABLE(gdk_window), gc, x, y, layout);
-
- gdk_rgb_gc_set_foreground(gc, strings << 8);
-
- while (gtk_events_pending()) {
- gtk_main_iteration();
- }
-
- }
- g_timer_stop(timer);
-
- time = g_timer_elapsed(timer, NULL);
-
- g_rand_free(rand);
- gdk_gc_destroy(gc);
- g_timer_destroy(timer);
- g_object_unref(layout);
- pango_font_description_free(font);
-
- return time;
-}
-
-static double test_filled_shapes(GtkWindow *window)
-{
- GRand *rand;
- GTimer *timer;
- GdkGC *gc;
- double time;
- GdkWindow *gdk_window = GTK_WIDGET(window)->window;
- int lines;
-
- gdk_window_clear(gdk_window);
-
- rand = g_rand_new();
- gc = gdk_gc_new(GDK_DRAWABLE(gdk_window));
- timer = g_timer_new();
-
- g_timer_start(timer);
- for (lines = N_ITERATIONS; lines >= 0; lines--) {
- int x1, y1;
-
- x1 = g_rand_int_range(rand, 0, 800);
- y1 = g_rand_int_range(rand, 0, 600);
-
- gdk_rgb_gc_set_foreground(gc, lines << 8);
-
- gdk_draw_rectangle(GDK_DRAWABLE(gdk_window), gc, TRUE,
- x1, y1,
- g_rand_int_range(rand, 0, 400),
- g_rand_int_range(rand, 0, 300));
-
- while (gtk_events_pending()) {
- gtk_main_iteration();
- }
- }
- g_timer_stop(timer);
-
- time = g_timer_elapsed(timer, NULL);
-
- g_rand_free(rand);
- gdk_gc_destroy(gc);
- g_timer_destroy(timer);
-
- return time;
-}
-
-static double test_shapes(GtkWindow *window)
-{
- GRand *rand;
- GTimer *timer;
- GdkGC *gc;
- double time;
- GdkWindow *gdk_window = GTK_WIDGET(window)->window;
- int lines;
-
- gdk_window_clear(gdk_window);
-
- rand = g_rand_new();
- gc = gdk_gc_new(GDK_DRAWABLE(gdk_window));
- timer = g_timer_new();
-
- g_timer_start(timer);
- for (lines = N_ITERATIONS; lines >= 0; lines--) {
- int x1, y1;
-
- x1 = g_rand_int_range(rand, 0, 800);
- y1 = g_rand_int_range(rand, 0, 600);
-
- gdk_rgb_gc_set_foreground(gc, lines << 8);
-
- gdk_draw_rectangle(GDK_DRAWABLE(gdk_window), gc, FALSE,
- x1, y1,
- g_rand_int_range(rand, 0, 400),
- g_rand_int_range(rand, 0, 300));
- while (gtk_events_pending()) {
- gtk_main_iteration();
- }
- }
- g_timer_stop(timer);
-
- time = g_timer_elapsed(timer, NULL);
-
- g_rand_free(rand);
- gdk_gc_destroy(gc);
- g_timer_destroy(timer);
-
- return time;
-}
-
-static double test_lines(GtkWindow *window)
-{
- GRand *rand;
- GTimer *timer;
- GdkGC *gc;
- double time;
- GdkWindow *gdk_window = GTK_WIDGET(window)->window;
- int lines;
-
- gdk_window_clear(gdk_window);
-
- rand = g_rand_new();
- gc = gdk_gc_new(GDK_DRAWABLE(gdk_window));
- timer = g_timer_new();
-
- g_timer_start(timer);
- for (lines = N_ITERATIONS; lines >= 0; lines--) {
- int x1, y1, x2, y2;
-
- x1 = g_rand_int_range(rand, 0, 800);
- y1 = g_rand_int_range(rand, 0, 600);
- x2 = g_rand_int_range(rand, 0, 800);
- y2 = g_rand_int_range(rand, 0, 600);
-
- gdk_draw_line(GDK_DRAWABLE(gdk_window), gc, x1, y1, x2, y2);
- gdk_rgb_gc_set_foreground(gc, lines << 8);
-
- while (gtk_events_pending()) {
- gtk_main_iteration();
- }
- }
- g_timer_stop(timer);
-
- time = g_timer_elapsed(timer, NULL);
-
- g_rand_free(rand);
- gdk_gc_destroy(gc);
- g_timer_destroy(timer);
-
- return time;
-}
-
-double guibench(void)
-{
- GtkWidget *window;
- gdouble score = 0.0f;
- gint i;
-
- phrase = g_strdup(PHRASE);
-
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_widget_set_size_request(window, 800, 600);
- gtk_window_set_title(GTK_WINDOW(window), "guibench");
-
- gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);
- gtk_widget_show(window);
-
- g_signal_connect(window, "key-press-event", G_CALLBACK(keypress_event), NULL);
-
- for (i = 0; tests[i].title; i++) {
- double time;
-
- gtk_window_set_title(GTK_WINDOW(window), tests[i].title);
- time = tests[i].callback(GTK_WINDOW(window));
- score += (N_ITERATIONS / time) / tests[i].weight;
- }
-
- gtk_widget_destroy(window);
- g_free(phrase);
-
- return (score / i) * 1000.0f;
-}
diff --git a/hardinfo2/modules/benchmark/md5.c b/hardinfo2/modules/benchmark/md5.c
deleted file mode 100644
index 70f39c45..00000000
--- a/hardinfo2/modules/benchmark/md5.c
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * This code implements the MD5 message-digest algorithm.
- * The algorithm is due to Ron Rivest. This code was
- * written by Colin Plumb in 1993, no copyright is claimed.
- * This code is in the public domain; do with it what you wish.
- *
- * Equivalent code is available from RSA Data Security, Inc.
- * This code has been tested against that, and is equivalent,
- * except that you don't need to include two pages of legalese
- * with every copy.
- *
- * To compute the message digest of a chunk of bytes, declare an
- * MD5Context structure, pass it to MD5Init, call MD5Update as
- * needed on buffers full of bytes, and then call MD5Final, which
- * will fill a supplied 16-byte array with the digest.
- */
-
-/* This code was modified in 1997 by Jim Kingdon of Cyclic Software to
- not require an integer type which is exactly 32 bits. This work
- draws on the changes for the same purpose by Tatu Ylonen
- <ylo@cs.hut.fi> as part of SSH, but since I didn't actually use
- that code, there is no copyright issue. I hereby disclaim
- copyright in any changes I have made; this code remains in the
- public domain. */
-
-#include <string.h> /* for memcpy() and memset() */
-
-/* Add prototype support. */
-#ifndef PROTO
-#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
-#define PROTO(ARGS) ARGS
-#else
-#define PROTO(ARGS) ()
-#endif
-#endif
-
-#include "md5.h"
-
-#if defined(__OPTIMIZE__)
-#error You must compile this program without "-O". (Or else the benchmark results may be different!)
-#endif
-
-/* Little-endian byte-swapping routines. Note that these do not
- depend on the size of datatypes such as uint32, nor do they require
- us to detect the endianness of the machine we are running on. It
- is possible they should be macros for speed, but I would be
- surprised if they were a performance bottleneck for MD5. */
-
-static uint32 getu32(addr)
-const unsigned char *addr;
-{
- return (((((unsigned long) addr[3] << 8) | addr[2]) << 8)
- | addr[1]) << 8 | addr[0];
-}
-
-static void putu32(data, addr)
-uint32 data;
-unsigned char *addr;
-{
- addr[0] = (unsigned char) data;
- addr[1] = (unsigned char) (data >> 8);
- addr[2] = (unsigned char) (data >> 16);
- addr[3] = (unsigned char) (data >> 24);
-}
-
-/*
- * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
- * initialization constants.
- */
-void MD5Init(ctx)
-struct MD5Context *ctx;
-{
- ctx->buf[0] = 0x67452301;
- ctx->buf[1] = 0xefcdab89;
- ctx->buf[2] = 0x98badcfe;
- ctx->buf[3] = 0x10325476;
-
- ctx->bits[0] = 0;
- ctx->bits[1] = 0;
-}
-
-/*
- * Update context to reflect the concatenation of another buffer full
- * of bytes.
- */
-void MD5Update(ctx, buf, len)
-struct MD5Context *ctx;
-unsigned char const *buf;
-unsigned len;
-{
- uint32 t;
-
- /* Update bitcount */
-
- t = ctx->bits[0];
- if ((ctx->bits[0] = (t + ((uint32) len << 3)) & 0xffffffff) < t)
- ctx->bits[1]++; /* Carry from low to high */
- ctx->bits[1] += len >> 29;
-
- t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
-
- /* Handle any leading odd-sized chunks */
-
- if (t) {
- unsigned char *p = ctx->in + t;
-
- t = 64 - t;
- if (len < t) {
- memcpy(p, buf, len);
- return;
- }
- memcpy(p, buf, t);
- MD5Transform(ctx->buf, ctx->in);
- buf += t;
- len -= t;
- }
-
- /* Process data in 64-byte chunks */
-
- while (len >= 64) {
- memcpy(ctx->in, buf, 64);
- MD5Transform(ctx->buf, ctx->in);
- buf += 64;
- len -= 64;
- }
-
- /* Handle any remaining bytes of data. */
-
- memcpy(ctx->in, buf, len);
-}
-
-/*
- * Final wrapup - pad to 64-byte boundary with the bit pattern
- * 1 0* (64-bit count of bits processed, MSB-first)
- */
-void MD5Final(digest, ctx)
-unsigned char digest[16];
-struct MD5Context *ctx;
-{
- unsigned count;
- unsigned char *p;
-
- /* Compute number of bytes mod 64 */
- count = (ctx->bits[0] >> 3) & 0x3F;
-
- /* Set the first char of padding to 0x80. This is safe since there is
- always at least one byte free */
- p = ctx->in + count;
- *p++ = 0x80;
-
- /* Bytes of padding needed to make 64 bytes */
- count = 64 - 1 - count;
-
- /* Pad out to 56 mod 64 */
- if (count < 8) {
- /* Two lots of padding: Pad the first block to 64 bytes */
- memset(p, 0, count);
- MD5Transform(ctx->buf, ctx->in);
-
- /* Now fill the next block with 56 bytes */
- memset(ctx->in, 0, 56);
- } else {
- /* Pad block to 56 bytes */
- memset(p, 0, count - 8);
- }
-
- /* Append length in bits and transform */
- putu32(ctx->bits[0], ctx->in + 56);
- putu32(ctx->bits[1], ctx->in + 60);
-
- MD5Transform(ctx->buf, ctx->in);
- putu32(ctx->buf[0], digest);
- putu32(ctx->buf[1], digest + 4);
- putu32(ctx->buf[2], digest + 8);
- putu32(ctx->buf[3], digest + 12);
- memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */
-}
-
-#ifndef ASM_MD5
-
-/* The four core functions - F1 is optimized somewhat */
-
-/* #define F1(x, y, z) (x & y | ~x & z) */
-#define F1(x, y, z) (z ^ (x & (y ^ z)))
-#define F2(x, y, z) F1(z, x, y)
-#define F3(x, y, z) (x ^ y ^ z)
-#define F4(x, y, z) (y ^ (x | ~z))
-
-/* This is the central step in the MD5 algorithm. */
-#define MD5STEP(f, w, x, y, z, data, s) \
- ( w += f(x, y, z) + data, w &= 0xffffffff, w = w<<s | w>>(32-s), w += x )
-
-/*
- * The core of the MD5 algorithm, this alters an existing MD5 hash to
- * reflect the addition of 16 longwords of new data. MD5Update blocks
- * the data and converts bytes into longwords for this routine.
- */
-void MD5Transform(buf, inraw)
-uint32 buf[4];
-const unsigned char inraw[64];
-{
- register uint32 a, b, c, d;
- uint32 in[16];
- int i;
-
- for (i = 0; i < 16; ++i)
- in[i] = getu32(inraw + 4 * i);
-
- a = buf[0];
- b = buf[1];
- c = buf[2];
- d = buf[3];
-
- MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
- MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
- MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
- MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
- MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
- MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
- MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
- MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
- MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
- MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
- MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
- MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
- MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
- MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
- MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
- MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
-
- MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
- MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
- MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
- MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
- MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
- MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
- MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
- MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
- MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
- MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
- MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
- MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
- MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
- MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
- MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
- MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
-
- MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
- MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
- MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
- MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
- MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
- MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
- MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
- MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
- MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
- MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
- MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
- MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
- MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
- MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
- MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
- MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
-
- MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
- MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
- MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
- MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
- MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
- MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
- MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
- MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
- MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
- MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
- MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
- MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
- MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
- MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
- MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
- MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
-
- buf[0] += a;
- buf[1] += b;
- buf[2] += c;
- buf[3] += d;
-}
-#endif
-
-#ifdef TEST
-/* Simple test program. Can use it to manually run the tests from
- RFC1321 for example. */
-#include <stdio.h>
-
-int main(int argc, char **argv)
-{
- struct MD5Context context;
- unsigned char checksum[16];
- int i;
- int j;
-
- if (argc < 2) {
- fprintf(stderr, "usage: %s string-to-hash\n", argv[0]);
- exit(1);
- }
- for (j = 1; j < argc; ++j) {
- printf("MD5 (\"%s\") = ", argv[j]);
- MD5Init(&context);
- MD5Update(&context, argv[j], strlen(argv[j]));
- MD5Final(checksum, &context);
- for (i = 0; i < 16; i++) {
- printf("%02x", (unsigned int) checksum[i]);
- }
- printf("\n");
- }
- return 0;
-}
-#endif /* TEST */
diff --git a/hardinfo2/modules/benchmark/nqueens.c b/hardinfo2/modules/benchmark/nqueens.c
deleted file mode 100644
index 838731c4..00000000
--- a/hardinfo2/modules/benchmark/nqueens.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * N-Queens Problem Solver
- * Found somewhere on the Internet; can't remember where. Possibly Wikipedia.
- */
-#include <stdio.h>
-#include <stdbool.h>
-#include <stdlib.h>
-
-#define QUEENS 11
-
-int row[QUEENS];
-
-bool safe(int x, int y)
-{
- int i;
- for (i = 1; i <= y; i++)
- if (row[y - i] == x || row[y - i] == x - i || row[y - i] == x + i)
- return false;
- return true;
-}
-
-int nqueens(int y)
-{
- int x;
-
- for (x = 0; x < QUEENS; x++) {
- if (safe((row[y - 1] = x), y - 1)) {
- if (y < QUEENS) {
- nqueens(y + 1);
- } else {
- break;
- }
- }
- }
-
- return 0;
-}
diff --git a/hardinfo2/modules/benchmark/raytrace.c b/hardinfo2/modules/benchmark/raytrace.c
deleted file mode 100644
index 9fc6361e..00000000
--- a/hardinfo2/modules/benchmark/raytrace.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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 "benchmark.h"
-
-void fbench(); /* fbench.c */
-
-static gpointer
-parallel_raytrace(unsigned int start, unsigned int end, gpointer data, gint thread_number)
-{
- unsigned int i;
-
- for (i = start; i <= end; i++) {
- fbench();
- }
-
- return NULL;
-}
-
-static void
-benchmark_raytrace(void)
-{
- gdouble elapsed = 0;
-
- shell_view_set_enabled(FALSE);
- shell_status_update("Performing John Walker's FBENCH...");
-
- elapsed = benchmark_parallel_for(0, 1000, parallel_raytrace, NULL);
-
- bench_results[BENCHMARK_RAYTRACE] = elapsed;
-}
-
diff --git a/hardinfo2/modules/benchmark/sha1.c b/hardinfo2/modules/benchmark/sha1.c
deleted file mode 100644
index b94ce254..00000000
--- a/hardinfo2/modules/benchmark/sha1.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
-SHA-1 in C
-By Steve Reid <steve@edmweb.com>
-100% Public Domain
-
-Test Vectors (from FIPS PUB 180-1)
-"abc"
- A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
-"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
- 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
-A million repetitions of "a"
- 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
-*/
-
-
-/* #define SHA1HANDSOFF * Copies data before messing with it. */
-
-#include <stdio.h>
-#include <string.h>
-#include <sha1.h>
-
-#if defined(__OPTIMIZE__)
-#error You must compile this program without "-O".
-#endif
-
-
-#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
-
-/* blk0() and blk() perform the initial expand. */
-/* I got the idea of expanding during the round function from SSLeay */
-#ifdef LITTLE_ENDIAN
-#define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
- |(rol(block->l[i],8)&0x00FF00FF))
-#else
-#define blk0(i) block->l[i]
-#endif
-#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
- ^block->l[(i+2)&15]^block->l[i&15],1))
-
-/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */
-#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);
-#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);
-#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);
-#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);
-#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);
-
-
-/* Hash a single 512-bit block. This is the core of the algorithm. */
-
-void SHA1Transform(guint32 state[5], guchar buffer[64])
-{
- guint32 a, b, c, d, e;
- typedef union {
- guchar c[64];
- guint32 l[16];
- } CHAR64LONG16;
- CHAR64LONG16 *block;
-#ifdef SHA1HANDSOFF
- static guchar workspace[64];
- block = (CHAR64LONG16 *) workspace;
- memcpy(block, buffer, 64);
-#else
- block = (CHAR64LONG16 *) buffer;
-#endif
- /* Copy context->state[] to working vars */
- a = state[0];
- b = state[1];
- c = state[2];
- d = state[3];
- e = state[4];
- /* 4 rounds of 20 operations each. Loop unrolled. */
- R0(a, b, c, d, e, 0);
- R0(e, a, b, c, d, 1);
- R0(d, e, a, b, c, 2);
- R0(c, d, e, a, b, 3);
- R0(b, c, d, e, a, 4);
- R0(a, b, c, d, e, 5);
- R0(e, a, b, c, d, 6);
- R0(d, e, a, b, c, 7);
- R0(c, d, e, a, b, 8);
- R0(b, c, d, e, a, 9);
- R0(a, b, c, d, e, 10);
- R0(e, a, b, c, d, 11);
- R0(d, e, a, b, c, 12);
- R0(c, d, e, a, b, 13);
- R0(b, c, d, e, a, 14);
- R0(a, b, c, d, e, 15);
- R1(e, a, b, c, d, 16);
- R1(d, e, a, b, c, 17);
- R1(c, d, e, a, b, 18);
- R1(b, c, d, e, a, 19);
- R2(a, b, c, d, e, 20);
- R2(e, a, b, c, d, 21);
- R2(d, e, a, b, c, 22);
- R2(c, d, e, a, b, 23);
- R2(b, c, d, e, a, 24);
- R2(a, b, c, d, e, 25);
- R2(e, a, b, c, d, 26);
- R2(d, e, a, b, c, 27);
- R2(c, d, e, a, b, 28);
- R2(b, c, d, e, a, 29);
- R2(a, b, c, d, e, 30);
- R2(e, a, b, c, d, 31);
- R2(d, e, a, b, c, 32);
- R2(c, d, e, a, b, 33);
- R2(b, c, d, e, a, 34);
- R2(a, b, c, d, e, 35);
- R2(e, a, b, c, d, 36);
- R2(d, e, a, b, c, 37);
- R2(c, d, e, a, b, 38);
- R2(b, c, d, e, a, 39);
- R3(a, b, c, d, e, 40);
- R3(e, a, b, c, d, 41);
- R3(d, e, a, b, c, 42);
- R3(c, d, e, a, b, 43);
- R3(b, c, d, e, a, 44);
- R3(a, b, c, d, e, 45);
- R3(e, a, b, c, d, 46);
- R3(d, e, a, b, c, 47);
- R3(c, d, e, a, b, 48);
- R3(b, c, d, e, a, 49);
- R3(a, b, c, d, e, 50);
- R3(e, a, b, c, d, 51);
- R3(d, e, a, b, c, 52);
- R3(c, d, e, a, b, 53);
- R3(b, c, d, e, a, 54);
- R3(a, b, c, d, e, 55);
- R3(e, a, b, c, d, 56);
- R3(d, e, a, b, c, 57);
- R3(c, d, e, a, b, 58);
- R3(b, c, d, e, a, 59);
- R4(a, b, c, d, e, 60);
- R4(e, a, b, c, d, 61);
- R4(d, e, a, b, c, 62);
- R4(c, d, e, a, b, 63);
- R4(b, c, d, e, a, 64);
- R4(a, b, c, d, e, 65);
- R4(e, a, b, c, d, 66);
- R4(d, e, a, b, c, 67);
- R4(c, d, e, a, b, 68);
- R4(b, c, d, e, a, 69);
- R4(a, b, c, d, e, 70);
- R4(e, a, b, c, d, 71);
- R4(d, e, a, b, c, 72);
- R4(c, d, e, a, b, 73);
- R4(b, c, d, e, a, 74);
- R4(a, b, c, d, e, 75);
- R4(e, a, b, c, d, 76);
- R4(d, e, a, b, c, 77);
- R4(c, d, e, a, b, 78);
- R4(b, c, d, e, a, 79);
- /* Add the working vars back into context.state[] */
- state[0] += a;
- state[1] += b;
- state[2] += c;
- state[3] += d;
- state[4] += e;
- /* Wipe variables */
- a = b = c = d = e = 0;
-}
-
-
-/* SHA1Init - Initialize new context */
-
-void SHA1Init(SHA1_CTX * context)
-{
- /* SHA1 initialization constants */
- context->state[0] = 0x67452301;
- context->state[1] = 0xEFCDAB89;
- context->state[2] = 0x98BADCFE;
- context->state[3] = 0x10325476;
- context->state[4] = 0xC3D2E1F0;
- context->count[0] = context->count[1] = 0;
-}
-
-
-/* Run your data through this. */
-
-void SHA1Update(SHA1_CTX * context, guchar * data, guint32 len)
-{
- guint32 i, j;
-
- j = (context->count[0] >> 3) & 63;
- if ((context->count[0] += len << 3) < (len << 3))
- context->count[1]++;
- context->count[1] += (len >> 29);
- if ((j + len) > 63) {
- memcpy(&context->buffer[j], data, (i = 64 - j));
- SHA1Transform(context->state, context->buffer);
- for (; i + 63 < len; i += 64) {
- SHA1Transform(context->state, &data[i]);
- }
- j = 0;
- } else
- i = 0;
- memcpy(&context->buffer[j], &data[i], len - i);
-}
-
-
-/* Add padding and return the message digest. */
-
-void SHA1Final(guchar digest[20], SHA1_CTX * context)
-{
- guint32 i, j;
- guchar finalcount[8];
-
- for (i = 0; i < 8; i++) {
- finalcount[i] = (guchar) ((context->count[(i >= 4 ? 0 : 1)]
- >> ((3 - (i & 3)) * 8)) & 255); /* Endian independent */
- }
- SHA1Update(context, (guchar *) "\200", 1);
- while ((context->count[0] & 504) != 448) {
- SHA1Update(context, (guchar *) "\0", 1);
- }
- SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */
- for (i = 0; i < 20; i++) {
- digest[i] = (guchar)
- ((context->state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255);
- }
- /* Wipe variables */
- i = j = 0;
- memset(context->buffer, 0, 64);
- memset(context->state, 0, 20);
- memset(context->count, 0, 8);
- memset(&finalcount, 0, 8);
-#ifdef SHA1HANDSOFF /* make SHA1Transform overwrite it's own static vars */
- SHA1Transform(context->state, context->buffer);
-#endif
-}
-
-#ifdef SHA1_TEST
-static char *b32_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
-
-static void base32_encode_exactly(guchar * buf, gint len,
- guchar * encbuf, gint enclen)
-{
- gint i = 0;
- guchar *ip = buf + len;
- guchar *op = encbuf + enclen;
-
- switch (len % 5) {
- case 0:
- do {
- g_assert(op - encbuf >= 8);
- i = *--ip; /* Input #4 */
- *--op = b32_alphabet[i & 0x1f]; /* Ouput #7 */
- i >>= 5; /* upper <234>, input #4 */
- /* FALLTHROUGH */
- case 4:
- i |= ((guint32) * --ip) << 3; /* had 3 bits in `i' */
- *--op = b32_alphabet[i & 0x1f]; /* Output #6 */
- i >>= 5; /* upper <401234>, input #3 */
- *--op = b32_alphabet[i & 0x1f]; /* Output #5 */
- i >>= 5; /* upper <4>, input #3 */
- /* FALLTHROUGH */
- case 3:
- i |= ((guint32) * --ip) << 1; /* had 1 bits in `i' */
- *--op = b32_alphabet[i & 0x1f]; /* Output #4 */
- i >>= 5; /* upper <1234>, input #2 */
- /* FALLTHROUGH */
- case 2:
- i |= ((guint32) * --ip) << 4; /* had 4 bits in `i' */
- *--op = b32_alphabet[i & 0x1f]; /* Output #3 */
- i >>= 5; /* upper <3401234>, input #1 */
- *--op = b32_alphabet[i & 0x1f]; /* Output #2 */
- i >>= 5; /* upper <34>, input #1 */
- /* FALLTHROUGH */
- case 1:
- i |= ((guint32) * --ip) << 2; /* had 2 bits in `i' */
- *--op = b32_alphabet[i & 0x1f]; /* Output #1 */
- i >>= 5; /* upper <01234>, input #0 */
- *--op = b32_alphabet[i & 0x1f]; /* Output #0 */
- i >>= 5; /* Holds nothing, MBZ */
- g_assert(i == 0);
- g_assert(op >= encbuf);
- } while (op > encbuf);
- }
-}
-
-
-
-/*************************************************************/
-
-int main(int argc, char **argv)
-{
- gint i, j;
- SHA1_CTX context;
- guchar digest[20], buffer[16384];
- FILE *file;
-
- if (argc > 2) {
- puts("Public domain SHA-1 implementation - by Steve Reid <steve@edmweb.com>");
- puts("Produces the SHA-1 hash of a file, or stdin if no file is specified.");
- exit(0);
- }
- if (argc < 2) {
- file = stdin;
- } else {
- if (!(file = fopen(argv[1], "rb"))) {
- fputs("Unable to open file.", stderr);
- exit(-1);
- }
- }
- SHA1Init(&context);
- while (!feof(file)) { /* note: what if ferror(file) */
- i = fread(buffer, 1, 16384, file);
- SHA1Update(&context, buffer, i);
- }
- SHA1Final(digest, &context);
- fclose(file);
-
- for (i = 0; i < 5; i++) {
- for (j = 0; j < 4; j++) {
- printf("%02X", digest[i*4+j]);
- }
- putchar(' ');
- }
- putchar('\n');
-
- {
- guchar tmp[33];
- tmp[32] = '\0';
- base32_encode_exactly(digest, 20, tmp, 32);
- printf("%s\n", tmp);
- }
-
- exit(0);
-}
-#endif /* SHA1_TEST */
diff --git a/hardinfo2/modules/computer.c b/hardinfo2/modules/computer.c
deleted file mode 100644
index cb349408..00000000
--- a/hardinfo2/modules/computer.c
+++ /dev/null
@@ -1,689 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 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 <stdlib.h>
-#include <string.h>
-#include <gtk/gtk.h>
-#include <config.h>
-#include <time.h>
-#include <string.h>
-#include <sys/stat.h>
-
-#include <hardinfo.h>
-#include <iconcache.h>
-#include <shell.h>
-
-#include <vendor.h>
-
-#include "computer.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_env_var();
-#if GLIB_CHECK_VERSION(2,14,0)
-gchar *callback_dev();
-#endif /* GLIB_CHECK_VERSION(2,14,0) */
-
-/* Scan callbacks */
-void scan_summary(gboolean reload);
-void scan_os(gboolean reload);
-void scan_modules(gboolean reload);
-void scan_boots(gboolean reload);
-void scan_locales(gboolean reload);
-void scan_fs(gboolean reload);
-void scan_display(gboolean reload);
-void scan_network(gboolean reload);
-void scan_users(gboolean reload);
-void scan_env_var(gboolean reload);
-#if GLIB_CHECK_VERSION(2,14,0)
-void scan_dev(gboolean reload);
-#endif /* GLIB_CHECK_VERSION(2,14,0) */
-
-static ModuleEntry entries[] = {
- {"Summary", "summary.png", callback_summary, scan_summary, MODULE_FLAG_NONE},
- {"Operating System", "os.png", callback_os, scan_os, MODULE_FLAG_NONE},
- {"Kernel Modules", "module.png", callback_modules, scan_modules, MODULE_FLAG_NONE},
- {"Boots", "boot.png", callback_boots, scan_boots, MODULE_FLAG_NONE},
- {"Languages", "language.png", callback_locales, scan_locales, MODULE_FLAG_NONE},
- {"Filesystems", "dev_removable.png", callback_fs, scan_fs, MODULE_FLAG_NONE},
- {"Display", "monitor.png", callback_display, scan_display, MODULE_FLAG_NONE},
- {"Environment Variables", "environment.png", callback_env_var, scan_env_var, MODULE_FLAG_NONE},
-#if GLIB_CHECK_VERSION(2,14,0)
- {"Development", "devel.png", callback_dev, scan_dev, MODULE_FLAG_NONE},
-#endif /* GLIB_CHECK_VERSION(2,14,0) */
- {"Users", "users.png", callback_users, scan_users, MODULE_FLAG_NONE},
- {NULL},
-};
-
-
-GHashTable *moreinfo = NULL;
-gchar *module_list = NULL;
-Computer *computer = NULL;
-
-gchar *hi_more_info(gchar * entry)
-{
- gchar *info = (gchar *) g_hash_table_lookup(moreinfo, entry);
-
- if (info)
- return g_strdup(info);
-
- return g_strdup_printf("[%s]", entry);
-}
-
-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);
- } else if (g_str_equal(field, "Uptime")) {
- tmp = computer_get_formatted_uptime();
- } else if (g_str_equal(field, "Date/Time")) {
- time_t t = time(NULL);
-
- tmp = g_new0(gchar, 64);
- strftime(tmp, 64, "%c", localtime(&t));
- } else if (g_str_equal(field, "Load Average")) {
- tmp = computer_get_formatted_loadavg();
- } else {
- tmp = g_strdup("");
- }
-
- return tmp;
-}
-
-void scan_summary(gboolean reload)
-{
- SCAN_START();
- module_entry_scan_all_except(entries, 0);
- computer->alsa = computer_get_alsainfo();
- SCAN_END();
-}
-
-void scan_os(gboolean reload)
-{
- SCAN_START();
- computer->os = computer_get_os();
- SCAN_END();
-}
-
-void scan_modules(gboolean reload)
-{
- SCAN_START();
- scan_modules_do();
- SCAN_END();
-}
-
-void scan_boots(gboolean reload)
-{
- SCAN_START();
- scan_boots_real();
- SCAN_END();
-}
-
-void scan_locales(gboolean reload)
-{
- SCAN_START();
- scan_os(FALSE);
- scan_languages(computer->os);
- SCAN_END();
-}
-
-void scan_fs(gboolean reload)
-{
- SCAN_START();
- scan_filesystems();
- SCAN_END();
-}
-
-void scan_display(gboolean reload)
-{
- SCAN_START();
- computer->display = computer_get_display();
- SCAN_END();
-}
-
-void scan_users(gboolean reload)
-{
- SCAN_START();
- scan_users_do();
- SCAN_END();
-}
-
-#if GLIB_CHECK_VERSION(2,14,0)
-static gchar *dev_list = NULL;
-void scan_dev(gboolean reload)
-{
- SCAN_START();
-
- int i;
- struct {
- gchar *compiler_name;
- gchar *version_command;
- gchar *regex;
- gboolean stdout;
- } detect_lang[] = {
- { "Scripting Languages", NULL, FALSE },
- { "CPython", "python -V", "\\d+\\.\\d+\\.\\d+", FALSE },
- { "Perl", "perl -v", "\\d+\\.\\d+\\.\\d+", TRUE },
- { "PHP", "php --version", "\\d+\\.\\d+\\.\\S+", TRUE},
- { "Ruby", "ruby --version", "\\d+\\.\\d+\\.\\d+", TRUE },
- { "Bash", "bash --version", "\\d+\\.\\d+\\.\\S+", TRUE},
- { "Compilers", NULL, FALSE },
- { "C (GCC)", "gcc -v", "\\d+\\.\\d+\\.\\d+", FALSE },
- { "Java", "javac -version", "\\d+\\.\\d+\\.\\d+", FALSE },
- { "CSharp (Mono, old)", "mcs --version", "\\d+\\.\\d+\\.\\d+\\.\\d+", TRUE },
- { "CSharp (Mono)", "gmcs --version", "\\d+\\.\\d+\\.\\d+\\.\\d+", TRUE },
- { "Vala", "valac --version", "\\d+\\.\\d+\\.\\d+", TRUE },
- { "Haskell (GHC)", "ghc -v", "\\d+\\.\\d+\\.\\d+", FALSE },
- { "FreePascal", "fpc --version", "\\d+\\.\\d+\\.\\S+", TRUE },
- { "Tools", NULL, FALSE },
- { "make", "make --version", "\\d+\\.\\d+", TRUE },
- { "GDB", "gdb --version", "\\d+\\.\\S+", TRUE },
- { "strace", "strace -V", "\\d+\\.\\d+\\.\\d+", TRUE },
- { "valgrind", "valgrind --version", "\\d+\\.\\d+\\.\\S+", TRUE },
- { "QMake", "qmake --version", "\\d+\\.\\S+", TRUE},
- };
-
- g_free(dev_list);
-
- dev_list = g_strdup("");
-
- for (i = 0; i < G_N_ELEMENTS(detect_lang); i++) {
- gchar *version = NULL;
- gchar *output;
- 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);
- continue;
- }
-
- if (detect_lang[i].stdout) {
- found = g_spawn_command_line_sync(detect_lang[i].version_command, &output, NULL, NULL, NULL);
- } else {
- found = g_spawn_command_line_sync(detect_lang[i].version_command, NULL, &output, NULL, NULL);
- }
-
- if (found) {
- regex = g_regex_new(detect_lang[i].regex, 0, 0, NULL);
-
- g_regex_match(regex, output, 0, &match_info);
- 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);
- }
-
- temp = g_strdup_printf("Detecting version: %s",
- detect_lang[i].compiler_name);
- shell_status_update(temp);
- g_free(temp);
- }
-
- SCAN_END();
-}
-
-gchar *callback_dev()
-{
- return g_strdup_printf("[$ShellParam$]\n"
- "ColumnTitle$TextValue=Program\n"
- "ColumnTitle$Value=Version\n"
- "ShowColumnHeaders=true\n"
- "%s", dev_list);
-}
-#endif /* GLIB_CHECK_VERSION(2,14,0) */
-
-/* Table based off imvirt by Thomas Liske <liske@ibh.de>
- Copyright (c) 2008 IBH IT-Service GmbH under GPLv2. */
-gchar *computer_get_virtualization()
-{
- gboolean found = FALSE;
- gint i, j;
- gchar *files[] = {
- "/proc/scsi/scsi",
- "/proc/cpuinfo",
- "/var/log/dmesg",
- NULL
- };
- const static struct {
- gchar *str;
- gchar *vmtype;
- } vm_types[] = {
- /* VMware */
- { "VMware", "Virtual (VMware)" },
- { ": VMware Virtual IDE CDROM Drive", "Virtual (VMware)" },
- /* QEMU */
- { "QEMU", "Virtual (QEMU)" },
- { "QEMU Virtual CPU", "Virtual (QEMU)" },
- { ": QEMU HARDDISK", "Virtual (QEMU)" },
- { ": QEMU CD-ROM", "Virtual (QEMU)" },
- /* Generic Virtual Machine */
- { ": Virtual HD,", "Virtual (Unknown)" },
- { ": Virtual CD,", "Virtual (Unknown)" },
- /* Virtual Box */
- { "VBOX", "Virtual (VirtualBox)" },
- { ": VBOX HARDDISK", "Virtual (VirtualBox)" },
- { ": VBOX CD-ROM", "Virtual (VirtualBox)" },
- /* Xen */
- { "Xen virtual console", "Virtual (Xen)" },
- { "Xen reported: ", "Virtual (Xen)" },
- { "xen-vbd: registered block device", "Virtual (Xen)" },
- { 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++) {
- if (strstr(buffer, vm_types[j].str)) {
- found = TRUE;
- break;
- }
- }
- }
-
- 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"
- "[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=...",
- 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 ? "Yes" : "No");
-}
-
-gchar *callback_users()
-{
- return g_strdup_printf("[$ShellParam$]\n"
- "ReloadInterval=10000\n"
- "ViewType=1\n"
- "[Users]\n"
- "%s\n", users);
-}
-
-gchar *get_os_kernel(void)
-{
- scan_os(FALSE);
- return g_strdup(computer->os->kernel);
-}
-
-gchar *get_os(void)
-{
- scan_os(FALSE);
- return g_strdup(computer->os->distro);
-}
-
-gchar *get_display_summary(void)
-{
- scan_display(FALSE);
-
- return g_strdup_printf("%dx%d\n"
- "%s\n"
- "%s",
- computer->display->width,
- computer->display->height,
- computer->display->ogl_renderer,
- computer->display->vendor);
-}
-
-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);
-}
-
-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}
- };
-
- return m;
-}
-
-ModuleEntry *hi_module_get_entries(void)
-{
- return entries;
-}
-
-gchar *hi_module_get_name(void)
-{
- return g_strdup("Computer");
-}
-
-guchar hi_module_get_weight(void)
-{
- return 80;
-}
-
-gchar **hi_module_get_dependencies(void)
-{
- static gchar *deps[] = { "libdevices.so", NULL };
-
- return deps;
-}
-
-gchar *hi_module_get_summary(void)
-{
- return g_strdup("[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"
- "[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");
-}
-
-void hi_module_deinit(void)
-{
- if (computer->os) {
- g_free(computer->os->kernel);
- g_free(computer->os->libc);
- g_free(computer->os->distrocode);
- g_free(computer->os->distro);
- g_free(computer->os->hostname);
- g_free(computer->os->language);
- g_free(computer->os->homedir);
- g_free(computer->os->kernel_version);
- g_free(computer->os->languages);
- g_free(computer->os->desktop);
- g_free(computer->os->username);
- g_free(computer->os->boots);
- g_free(computer->os);
- }
-
- if (computer->display) {
- g_free(computer->display->ogl_vendor);
- g_free(computer->display->ogl_renderer);
- g_free(computer->display->ogl_version);
- g_free(computer->display->display_name);
- g_free(computer->display->vendor);
- g_free(computer->display->version);
- g_free(computer->display->extensions);
- 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);
-
- h_hash_table_remove_all(moreinfo);
- g_hash_table_destroy(moreinfo);
-}
-
-void hi_module_init(void)
-{
- computer = g_new0(Computer, 1);
- moreinfo =
- g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
-}
-
-ModuleAbout *hi_module_get_about(void)
-{
- static ModuleAbout ma[] = {
- {
- .author = "Leandro A. F. Pereira",
- .description = "Gathers high-level computer information",
- .version = VERSION,
- .license = "GNU GPL version 2"}
- };
-
- return ma;
-}
-
diff --git a/hardinfo2/modules/computer/alsa.c b/hardinfo2/modules/computer/alsa.c
deleted file mode 100644
index f1ff3ad8..00000000
--- a/hardinfo2/modules/computer/alsa.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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
- */
-
-#include "hardinfo.h"
-#include "computer.h"
-
-gchar *
-computer_get_alsacards(Computer * computer)
-{
- GSList *p;
- gchar *tmp = g_strdup("[Audio Devices]\n");
- gint n = 0;
-
- if (computer->alsa) {
- 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);
- }
- }
-
- return tmp;
-}
-
-AlsaInfo *
-computer_get_alsainfo(void)
-{
- AlsaInfo *ai;
- AlsaCard *ac;
- FILE *cards;
- gchar buffer[128];
-
- cards = fopen("/proc/asound/cards", "r");
- if (!cards)
- return NULL;
-
- ai = g_new0(AlsaInfo, 1);
-
- while (fgets(buffer, 128, cards)) {
- gchar **tmp;
-
- ac = g_new0(AlsaCard, 1);
-
- tmp = g_strsplit(buffer, ":", 0);
-
- 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 */
- }
- fclose(cards);
-
- return ai;
-}
diff --git a/hardinfo2/modules/computer/boots.c b/hardinfo2/modules/computer/boots.c
deleted file mode 100644
index 4a1023f6..00000000
--- a/hardinfo2/modules/computer/boots.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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 <stdio.h>
-#include <string.h>
-#include "hardinfo.h"
-#include "computer.h"
-
-void
-scan_boots_real(void)
-{
- FILE *last;
- char buffer[256];
-
- scan_os(FALSE);
-
- if (!computer->os->boots)
- computer->os->boots = g_strdup("[Boots]\n");
- 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) == ' ') {
- strcpy(buf, buf + 1);
-
- buf--;
- } else {
- buf++;
- }
- }
-
- 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]);
- g_strfreev(tmp);
- }
- }
-
- pclose(last);
- }
-}
diff --git a/hardinfo2/modules/computer/display.c b/hardinfo2/modules/computer/display.c
deleted file mode 100644
index ce23bbfd..00000000
--- a/hardinfo2/modules/computer/display.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * 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 <string.h>
-
-#include "hardinfo.h"
-#include "computer.h"
-
-static void
-get_glx_info(DisplayInfo *di)
-{
- gchar *output;
- if (g_spawn_command_line_sync("glxinfo", &output, NULL, NULL, NULL)) {
- gchar **output_lines;
- gint i = 0;
-
- for (output_lines = g_strsplit(output, "\n", 0);
- output_lines && output_lines[i];
- i++) {
- if (strstr(output_lines[i], "OpenGL")) {
- gchar **tmp = g_strsplit(output_lines[i], ":", 0);
-
- tmp[1] = g_strchug(tmp[1]);
-
- get_str("OpenGL vendor str", di->ogl_vendor);
- get_str("OpenGL renderer str", di->ogl_renderer);
- get_str("OpenGL version str", di->ogl_version);
-
- g_strfreev(tmp);
- } else if (strstr(output_lines[i], "direct rendering: Yes")) {
- di->dri = TRUE;
- }
- }
-
- g_free(output);
- g_strfreev(output_lines);
-
- if (!di->ogl_vendor)
- di->ogl_vendor = "Unknown";
- if (!di->ogl_renderer)
- di->ogl_renderer = "Unknown";
- if (!di->ogl_version)
- di->ogl_version = "Unknown";
- } else {
- di->ogl_vendor = di->ogl_renderer = di->ogl_version = "Unknown";
- }
-
-}
-
-static void
-get_x11_info(DisplayInfo *di)
-{
- gchar *output;
-
- if (g_spawn_command_line_sync("xdpyinfo", &output, NULL, NULL, NULL)) {
- gchar **output_lines, **old;
-
- output_lines = g_strsplit(output, "\n", 0);
- g_free(output);
-
- old = output_lines;
- while (*(output_lines++)) {
- gchar **tmp = g_strsplit(*output_lines, ":", 0);
-
- if (tmp[1] && tmp[0]) {
- tmp[1] = g_strchug(tmp[1]);
-
- get_str("vendor string", di->vendor);
- get_str("X.Org version", di->version);
- get_str("XFree86 version", di->version);
-
- if (g_str_has_prefix(tmp[0], "number of extensions")) {
- int n;
-
- di->extensions = g_strdup("");
-
- for (n = atoi(tmp[1]); n; n--) {
- di->extensions = h_strconcat(di->extensions,
- g_strstrip(*(++output_lines)),
- "=\n",
- NULL);
- }
- g_strfreev(tmp);
-
- break;
- }
- }
-
- g_strfreev(tmp);
- }
-
- g_strfreev(old);
- }
-
- GdkScreen *screen = gdk_screen_get_default();
-
- if (screen && GDK_IS_SCREEN(screen)) {
- gint n_monitors = gdk_screen_get_n_monitors(screen);
- gint i;
-
- di->monitors = NULL;
- for (i = 0; i < n_monitors; i++) {
- GdkRectangle rect;
-
- gdk_screen_get_monitor_geometry(screen, i, &rect);
-
- di->monitors = h_strdup_cprintf("Monitor %d=%dx%d pixels\n",
- di->monitors, i, rect.width, rect.height);
- }
- } else {
- di->monitors = "";
- }
-}
-
-DisplayInfo *
-computer_get_display(void)
-{
- DisplayInfo *di = g_new0(DisplayInfo, 1);
-
- GdkScreen *screen = gdk_screen_get_default();
-
- if (screen && GDK_IS_SCREEN(screen)) {
- di->width = gdk_screen_get_width(screen);
- di->height = gdk_screen_get_height(screen);
- } else {
- di->width = di->height = 0;
- }
-
- get_glx_info(di);
- get_x11_info(di);
-
- return di;
-}
diff --git a/hardinfo2/modules/computer/environment.c b/hardinfo2/modules/computer/environment.c
deleted file mode 100644
index 8ef63b2d..00000000
--- a/hardinfo2/modules/computer/environment.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 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"
-#include "computer.h"
-
-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");
- 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();
-}
-
-gchar *callback_env_var(void)
-{
- return g_strdup(_env);
-}
diff --git a/hardinfo2/modules/computer/filesystem.c b/hardinfo2/modules/computer/filesystem.c
deleted file mode 100644
index fcd8cf31..00000000
--- a/hardinfo2/modules/computer/filesystem.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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
- *
- * 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.
- */
-
-#include <string.h>
-#include <sys/vfs.h>
-#include "hardinfo.h"
-#include "computer.h"
-
-gchar *fs_list = NULL;
-
-static gboolean
-remove_filesystem_entries(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "FS");
-}
-
-void
-scan_filesystems(void)
-{
- FILE *mtab;
- gchar buf[1024];
- struct statfs sfs;
- int count = 0;
-
- g_free(fs_list);
- fs_list = g_strdup("");
- g_hash_table_foreach_remove(moreinfo, remove_filesystem_entries, NULL);
-
- mtab = fopen("/etc/mtab", "r");
- if (!mtab)
- 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;
- if ((strhash = g_hash_table_lookup(moreinfo, tmp[0]))) {
- g_hash_table_remove(moreinfo, tmp[0]);
- g_free(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);
- g_hash_table_insert(moreinfo, g_strdup_printf("FS%d", ++count), strhash);
-
- 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/hardinfo2/modules/computer/languages.c b/hardinfo2/modules/computer/languages.c
deleted file mode 100644
index 2808da1b..00000000
--- a/hardinfo2/modules/computer/languages.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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 <string.h>
-
-#include "hardinfo.h"
-#include "computer.h"
-
-void
-scan_languages(OperatingSystem * os)
-{
- FILE *locale;
- gchar buf[512], *retval = NULL;
-
- locale = popen("locale -va && echo", "r");
- if (!locale)
- return;
-
- gchar name[32];
- gchar *title = NULL,
- *source = NULL,
- *address = NULL,
- *email = NULL,
- *language = NULL,
- *territory = NULL,
- *revision = NULL,
- *date = NULL,
- *codeset = NULL;
-
- while (fgets(buf, 512, locale)) {
- if (!strncmp(buf, "locale:", 7)) {
- sscanf(buf, "locale: %s", name);
- (void)fgets(buf, 128, locale);
- } else if (strchr(buf, '|')) {
- gchar **tmp = g_strsplit(buf, "|", 2);
-
- tmp[0] = g_strstrip(tmp[0]);
-
- if (tmp[1]) {
- tmp[1] = g_strstrip(tmp[1]);
-
- get_str("title", title);
- get_str("source", source);
- get_str("address", address);
- get_str("email", email);
- get_str("language", language);
- get_str("territory", territory);
- get_str("revision", revision);
- get_str("date", date);
- get_str("codeset", codeset);
- }
-
- 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
-
- g_hash_table_insert(moreinfo, g_strdup(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);
-
- os->languages = retval;
-}
diff --git a/hardinfo2/modules/computer/loadavg.c b/hardinfo2/modules/computer/loadavg.c
deleted file mode 100644
index 523812be..00000000
--- a/hardinfo2/modules/computer/loadavg.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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
- */
-
-#include "hardinfo.h"
-#include "computer.h"
-
-LoadInfo *
-computer_get_loadinfo(void)
-{
- LoadInfo *li = g_new0(LoadInfo, 1);
- FILE *procloadavg;
-
- procloadavg = fopen("/proc/loadavg", "r");
- (void)fscanf(procloadavg, "%f %f %f", &(li->load1), &(li->load5),
- &(li->load15));
- fclose(procloadavg);
-
- return li;
-}
-
-gchar *
-computer_get_formatted_loadavg()
-{
- LoadInfo *li;
- gchar *tmp;
-
- li = computer_get_loadinfo();
-
- tmp =
- g_strdup_printf("%.2f, %.2f, %.2f", li->load1, li->load5,
- li->load15);
-
- g_free(li);
- return tmp;
-}
diff --git a/hardinfo2/modules/computer/memory.c b/hardinfo2/modules/computer/memory.c
deleted file mode 100644
index 3d320e8a..00000000
--- a/hardinfo2/modules/computer/memory.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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
- */
-
-#include "hardinfo.h"
-#include "computer.h"
-
-MemoryInfo *
-computer_get_memory(void)
-{
- MemoryInfo *mi;
- FILE *procmem;
- gchar buffer[128];
-
- procmem = fopen("/proc/meminfo", "r");
- if (!procmem)
- 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);
- }
- fclose(procmem);
-
- mi->used = mi->total - mi->free;
-
- mi->total /= 1000;
- mi->cached /= 1000;
- mi->used /= 1000;
- mi->free /= 1000;
-
- mi->used -= mi->cached;
- mi->ratio = 1 - (gdouble) mi->used / mi->total;
-
- return mi;
-}
diff --git a/hardinfo2/modules/computer/modules.c b/hardinfo2/modules/computer/modules.c
deleted file mode 100644
index 195c444b..00000000
--- a/hardinfo2/modules/computer/modules.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * 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
- */
-
-#include <string.h>
-
-#include "hardinfo.h"
-#include "computer.h"
-
-#define GET_STR(field_name,ptr) \
- if (!ptr && strstr(tmp[0], field_name)) { \
- ptr = g_markup_escape_text(g_strstrip(tmp[1]), strlen(tmp[1])); \
- g_strfreev(tmp); \
- continue; \
- }
-
-static gboolean
-remove_module_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "MOD");
-}
-
-GHashTable *_module_hash_table = NULL;
-
-void
-scan_modules_do(void)
-{
- FILE *lsmod;
- gchar buffer[1024];
- gchar *lsmod_path;
-
- if (!_module_hash_table) {
- _module_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
- }
-
- if (module_list) {
- g_free(module_list);
- }
-
- module_list = NULL;
- g_hash_table_foreach_remove(moreinfo, remove_module_devices, NULL);
-
- lsmod_path = find_program("lsmod");
- lsmod = popen(lsmod_path, "r");
- if (!lsmod) {
- g_free(lsmod_path);
- return;
- }
-
- (void)fgets(buffer, 1024, lsmod); /* Discards the first line */
-
- while (fgets(buffer, 1024, lsmod)) {
- gchar *buf, *strmodule, *hashkey;
- gchar *author = NULL,
- *description = NULL,
- *license = NULL,
- *deps = NULL, *vermagic = NULL, *filename = NULL, modname[64];
- FILE *modi;
- glong memory;
-
- shell_status_pulse();
-
- buf = buffer;
-
- sscanf(buf, "%s %ld", modname, &memory);
-
- hashkey = g_strdup_printf("MOD%s", modname);
- buf = g_strdup_printf("/sbin/modinfo %s 2>/dev/null", modname);
-
- modi = popen(buf, "r");
- while (fgets(buffer, 1024, modi)) {
- gchar **tmp = g_strsplit(buffer, ":", 2);
-
- GET_STR("author", author);
- GET_STR("description", description);
- GET_STR("license", license);
- GET_STR("depends", deps);
- GET_STR("vermagic", vermagic);
- GET_STR("filename", filename);
-
- g_strfreev(tmp);
- }
- pclose(modi);
- g_free(buf);
-
- /* old modutils includes quotes in some strings; strip them */
- /*remove_quotes(modname);
- remove_quotes(description);
- remove_quotes(vermagic);
- remove_quotes(author);
- remove_quotes(license); */
-
- /* old modutils displays <none> when there's no value for a
- given field; this is not desirable in the module name
- display, so change it to an empty string */
- if (description && g_str_equal(description, "&lt;none&gt;")) {
- g_free(description);
- description = g_strdup("");
-
- g_hash_table_insert(_module_hash_table,
- g_strdup(modname),
- g_strdup_printf("Kernel module (%s)", modname));
- } else {
- g_hash_table_insert(_module_hash_table,
- g_strdup(modname),
- g_strdup(description));
- }
-
- /* append this module to the list of modules */
- module_list = h_strdup_cprintf("$%s$%s=%s\n",
- module_list,
- hashkey,
- 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);
- }
-
- g_hash_table_insert(moreinfo, hashkey, strmodule);
-
- g_free(license);
- g_free(description);
- g_free(author);
- g_free(vermagic);
- g_free(filename);
- }
- pclose(lsmod);
-
- g_free(lsmod_path);
-}
diff --git a/hardinfo2/modules/computer/os.c b/hardinfo2/modules/computer/os.c
deleted file mode 100644
index 36b061fc..00000000
--- a/hardinfo2/modules/computer/os.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * 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
- */
-
-#include <string.h>
-#include <sys/utsname.h>
-#include "hardinfo.h"
-#include "computer.h"
-
-static gchar *
-get_libc_version(void)
-{
- FILE *libc;
- gchar buf[256], *tmp, *p;
-
- if (g_file_test("/lib/ld-uClibc.so.0", G_FILE_TEST_EXISTS)) {
- return g_strdup("uClibc Library");
- } else if (!g_file_test("/lib/libc.so.6", G_FILE_TEST_EXISTS)) {
- goto err;
- }
-
- libc = popen("/lib/libc.so.6", "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:
- return g_strdup("Unknown");
-}
-
-#include <gdk/gdkx.h>
-
-void
-detect_desktop_environment(OperatingSystem * os)
-{
- const gchar *tmp = g_getenv("GNOME_DESKTOP_SESSION_ID");
- FILE *version;
- char vers[16];
-
- 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:
- 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 {
- os->desktop = g_strdup_printf("Unknown (Window Manager: %s)",
- windowman);
- }
- } else {
- os->desktop = g_strdup("Unknown");
- }
- }
- }
-}
-
-OperatingSystem *
-computer_get_os(void)
-{
- struct utsname utsbuf;
- OperatingSystem *os;
- int i;
-
- os = g_new0(OperatingSystem, 1);
-
- /* 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];
-
- release = popen("lsb_release -d", "r");
- if (release) {
- (void)fgets(buffer, 128, release);
- pclose(release);
-
- os->distro = buffer;
- os->distro = g_strdup(os->distro + strlen("Description:\t"));
- }
- }
-
- 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 %.2f", atof(os->distro) / 100.0);
- g_free(os->distro);
- os->distro = tmp;
- }
-
- os->distrocode = g_strdup(distro_db[i].codename);
-
- break;
- }
- }
-
- os->distro = g_strstrip(os->distro);
-
- /* Kernel and hostname info */
- uname(&utsbuf);
- os->kernel_version = g_strdup(utsbuf.version);
- 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->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);
-
- return os;
-}
diff --git a/hardinfo2/modules/computer/uptime.c b/hardinfo2/modules/computer/uptime.c
deleted file mode 100644
index 8eb563fa..00000000
--- a/hardinfo2/modules/computer/uptime.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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
- */
-#include "hardinfo.h"
-#include "computer.h"
-
-UptimeInfo *
-computer_get_uptime(void)
-{
- UptimeInfo *ui = g_new0(UptimeInfo, 1);
- FILE *procuptime;
- gulong minutes;
-
- if ((procuptime = fopen("/proc/uptime", "r")) != NULL) {
- (void)fscanf(procuptime, "%lu", &minutes);
- ui->minutes = minutes / 60;
- fclose(procuptime);
- } else {
- return NULL;
- }
-
- ui->hours = ui->minutes / 60;
- ui->minutes %= 60;
- ui->days = ui->hours / 24;
- ui->hours %= 24;
-
- return ui;
-}
-
-gchar *
-computer_get_formatted_uptime()
-{
- UptimeInfo *ui;
- gchar *tmp;
-
- ui = computer_get_uptime();
-
- /* FIXME: Use ngettext */
-#define plural(x) ((x > 1) ? "s" : "")
-
- 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));
- }
- } 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));
- }
-
- g_free(ui);
- return tmp;
-}
diff --git a/hardinfo2/modules/computer/users.c b/hardinfo2/modules/computer/users.c
deleted file mode 100644
index e303ac6e..00000000
--- a/hardinfo2/modules/computer/users.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 <pwd.h>
-#include "hardinfo.h"
-#include "computer.h"
-
-gchar *users = NULL;
-
-static gboolean
-remove_users(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "USER");
-}
-
-void
-scan_users_do(void)
-{
- struct passwd *passwd_;
- passwd_ = getpwent();
- if (!passwd_)
- return;
-
- if (users) {
- g_free(users);
- g_hash_table_foreach_remove(moreinfo, remove_users, NULL);
- }
-
- users = g_strdup("");
-
- 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);
- g_hash_table_insert(moreinfo, key, val);
-
- strend(passwd_->pw_gecos, ',');
- users = h_strdup_cprintf("$%s$%s=%s\n", users, key, passwd_->pw_name, passwd_->pw_gecos);
- passwd_ = getpwent();
- }
-
- endpwent();
-}
diff --git a/hardinfo2/modules/devices.c b/hardinfo2/modules/devices.c
deleted file mode 100644
index c15a9db1..00000000
--- a/hardinfo2/modules/devices.c
+++ /dev/null
@@ -1,442 +0,0 @@
-/*
- * 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
- */
-
-#ifndef __USE_XOPEN
-#define __USE_XOPEN
-#endif /* __USE_XOPEN */
-
-#ifndef _XOPEN_SOURCE
-#define _XOPEN_SOURCE
-#endif /* _XOPEN_SOURCE */
-
-#include <gtk/gtk.h>
-#include <config.h>
-#include <string.h>
-
-#include <hardinfo.h>
-#include <shell.h>
-#include <iconcache.h>
-#include <syncmanager.h>
-
-#include <expr.h>
-#include <socket.h>
-
-#include "devices.h"
-
-gchar *callback_processors();
-gchar *callback_memory();
-gchar *callback_battery();
-gchar *callback_pci();
-gchar *callback_sensors();
-gchar *callback_printers();
-gchar *callback_storage();
-gchar *callback_input();
-gchar *callback_usb();
-#if defined(ARCH_i386) || defined(ARCH_x86_64)
-gchar *callback_dmi();
-#endif
-gchar *callback_device_resources();
-
-void scan_processors(gboolean reload);
-void scan_memory(gboolean reload);
-void scan_battery(gboolean reload);
-void scan_pci(gboolean reload);
-void scan_sensors(gboolean reload);
-void scan_printers(gboolean reload);
-void scan_storage(gboolean reload);
-void scan_input(gboolean reload);
-void scan_usb(gboolean reload);
-#if defined(ARCH_i386) || defined(ARCH_x86_64)
-void scan_dmi(gboolean reload);
-#endif
-void scan_device_resources(gboolean reload);
-
-static ModuleEntry entries[] = {
- {"Processor", "processor.png", callback_processors, scan_processors, MODULE_FLAG_NONE},
- {"Memory", "memory.png", callback_memory, scan_memory, MODULE_FLAG_NONE},
- {"PCI Devices", "devices.png", callback_pci, scan_pci, MODULE_FLAG_NONE},
- {"USB Devices", "usb.png", callback_usb, scan_usb, MODULE_FLAG_NONE},
- {"Printers", "printer.png", callback_printers, scan_printers, MODULE_FLAG_NONE},
- {"Battery", "battery.png", callback_battery, scan_battery, MODULE_FLAG_NONE},
- {"Sensors", "therm.png", callback_sensors, scan_sensors, MODULE_FLAG_NONE},
- {"Input Devices", "inputdevices.png", callback_input, scan_input, MODULE_FLAG_NONE},
- {"Storage", "hdd.png", callback_storage, scan_storage, MODULE_FLAG_NONE},
-#if defined(ARCH_i386) || defined(ARCH_x86_64)
- {"DMI", "computer.png", callback_dmi, scan_dmi, MODULE_FLAG_NONE},
-#endif /* x86 or x86_64 */
- {"Resources", "resources.png", callback_device_resources, scan_device_resources, MODULE_FLAG_NONE},
- {NULL}
-};
-
-static GSList *processors = NULL;
-gchar *printer_list = NULL;
-gchar *printer_icons = NULL;
-gchar *pci_list = NULL;
-gchar *input_list = NULL;
-gchar *storage_list = NULL;
-gchar *battery_list = NULL;
-gchar *meminfo = NULL;
-gchar *lginterval = NULL;
-
-GHashTable *moreinfo = NULL;
-
-#include <vendor.h>
-
-gchar *get_processor_name(void)
-{
- scan_processors(FALSE);
-
- Processor *p = (Processor *) processors->data;
-
- if (g_slist_length(processors) > 1) {
- return idle_free(g_strdup_printf("%dx %s",
- g_slist_length(processors),
- p->model_name));
- } else {
- return p->model_name;
- }
-}
-
-gchar *get_storage_devices(void)
-{
- scan_storage(FALSE);
-
- return storage_list;
-}
-
-gchar *get_printers(void)
-{
- scan_printers(FALSE);
-
- return printer_list;
-}
-
-gchar *get_input_devices(void)
-{
- scan_input(FALSE);
-
- return input_list;
-}
-
-gchar *get_processor_count(void)
-{
- scan_processors(FALSE);
-
- return g_strdup_printf("%d", g_slist_length(processors));
-}
-
-gchar *get_processor_frequency(void)
-{
- Processor *p;
-
- scan_processors(FALSE);
-
- p = (Processor *)processors->data;
- if (p->cpu_mhz == 0.0f) {
- return g_strdup("Unknown");
- } else {
- return g_strdup_printf("%.0f", p->cpu_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)
-{
- /* FIXME */
- return g_strdup("0.0");
-}
-
-ShellModuleMethod *hi_exported_methods(void)
-{
- static ShellModuleMethod m[] = {
- {"getProcessorCount", get_processor_count},
- {"getProcessorName", get_processor_name},
- {"getProcessorFrequency", get_processor_frequency},
- {"getMemoryTotal", get_memory_total},
- {"getStorageDevices", get_storage_devices},
- {"getPrinters", get_printers},
- {"getInputDevices", get_input_devices},
- {"getPCIDeviceDescription", get_pci_device_description},
- {NULL}
- };
-
- return m;
-}
-
-gchar *hi_more_info(gchar * entry)
-{
- gchar *info = (gchar *) g_hash_table_lookup(moreinfo, entry);
-
- if (info)
- return g_strdup(info);
-
- return g_strdup("?");
-}
-
-gchar *hi_get_field(gchar * field)
-{
- gchar *info = (gchar *) g_hash_table_lookup(moreinfo, field);
-
- if (info)
- return g_strdup(info);
-
- return g_strdup(field);
-}
-
-#if defined(ARCH_i386) || defined(ARCH_x86_64)
-void scan_dmi(gboolean reload)
-{
- SCAN_START();
- __scan_dmi();
- SCAN_END();
-}
-#endif
-
-void scan_processors(gboolean reload)
-{
- SCAN_START();
- if (!processors)
- processors = processor_scan();
- SCAN_END();
-}
-
-void scan_memory(gboolean reload)
-{
- SCAN_START();
- scan_memory_do();
- SCAN_END();
-}
-
-void scan_battery(gboolean reload)
-{
- SCAN_START();
- scan_battery_do();
- SCAN_END();
-}
-
-void scan_pci(gboolean reload)
-{
- SCAN_START();
- scan_pci_do();
- SCAN_END();
-}
-
-void scan_sensors(gboolean reload)
-{
- SCAN_START();
- scan_sensors_do();
- SCAN_END();
-}
-
-void scan_printers(gboolean reload)
-{
- SCAN_START();
- scan_printers_do();
- SCAN_END();
-}
-
-void scan_storage(gboolean reload)
-{
- SCAN_START();
- g_free(storage_list);
- storage_list = g_strdup("");
-
- __scan_ide_devices();
- __scan_scsi_devices();
- SCAN_END();
-}
-
-void scan_input(gboolean reload)
-{
- SCAN_START();
- __scan_input_devices();
- SCAN_END();
-}
-
-void scan_usb(gboolean reload)
-{
- SCAN_START();
- __scan_usb();
- SCAN_END();
-}
-
-gchar *callback_processors()
-{
- return processor_get_info(processors);
-}
-
-#if defined(ARCH_i386) || defined(ARCH_x86_64)
-gchar *callback_dmi()
-{
- return g_strdup(dmi_info);
-}
-#endif
-
-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);
-}
-
-gchar *callback_battery()
-{
- return g_strdup_printf("%s\n"
- "[$ShellParam$]\n"
- "ReloadInterval=4000\n", battery_list);
-}
-
-gchar *callback_pci()
-{
- return g_strdup_printf("[PCI Devices]\n"
- "%s"
- "[$ShellParam$]\n" "ViewType=1\n", pci_list);
-}
-
-gchar *callback_sensors()
-{
- return g_strdup_printf("[$ShellParam$]\n"
- "ReloadInterval=5000\n" "%s", sensors);
-}
-
-gchar *callback_printers()
-{
- return g_strdup_printf("%s\n"
- "[$ShellParam$]\n"
- "ViewType=1\n"
- "ReloadInterval=5000\n"
- "%s", printer_list, printer_icons);
-}
-
-gchar *callback_storage()
-{
- return g_strdup_printf("%s\n"
- "[$ShellParam$]\n"
- "ReloadInterval=5000\n"
- "ViewType=1\n%s", storage_list, storage_icons);
-}
-
-gchar *callback_input()
-{
- return g_strdup_printf("[Input Devices]\n"
- "%s"
- "[$ShellParam$]\n"
- "ViewType=1\n"
- "ReloadInterval=5000\n%s", input_list,
- input_icons);
-}
-
-gchar *callback_usb()
-{
- return g_strdup_printf("%s"
- "[$ShellParam$]\n"
- "ViewType=1\n"
- "ReloadInterval=5000\n", usb_list);
-}
-
-ModuleEntry *hi_module_get_entries(void)
-{
- return entries;
-}
-
-gchar *hi_module_get_name(void)
-{
- return g_strdup("Devices");
-}
-
-guchar hi_module_get_weight(void)
-{
- return 85;
-}
-
-void hi_module_init(void)
-{
- if (!g_file_test("/usr/share/misc/pci.ids", G_FILE_TEST_EXISTS)) {
- static SyncEntry se = {
- .fancy_name = "Update PCI ID listing",
- .name = "GetPCIIds",
- .save_to = "pci.ids",
- .get_data = NULL
- };
-
- sync_manager_add_entry(&se);
- }
-
-#if defined(ARCH_i386) || defined(ARCH_x86_64)
- {
- static SyncEntry se = {
- .fancy_name = "Update CPU feature database",
- .name = "RecvCPUFlags",
- .save_to = "cpuflags.conf",
- .get_data = NULL
- };
-
- sync_manager_add_entry(&se);
- }
-#endif /* defined(ARCH_i386) || defined(ARCH_x86_64) */
-
- moreinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
- init_memory_labels();
- init_cups();
-}
-
-void hi_module_deinit(void)
-{
- h_hash_table_remove_all(moreinfo);
- g_hash_table_destroy(moreinfo);
- g_hash_table_destroy(memlabels);
- g_module_close(cups);
-}
-
-ModuleAbout *hi_module_get_about(void)
-{
- static ModuleAbout ma[] = {
- {
- .author = "Leandro A. F. Pereira",
- .description = "Gathers information about hardware devices",
- .version = VERSION,
- .license = "GNU GPL version 2"}
- };
-
- return ma;
-}
-
-gchar **hi_module_get_dependencies(void)
-{
- static gchar *deps[] = { "libcomputer.so", NULL };
-
- return deps;
-}
diff --git a/hardinfo2/modules/devices/battery.c b/hardinfo2/modules/devices/battery.c
deleted file mode 100644
index 37416dbb..00000000
--- a/hardinfo2/modules/devices/battery.c
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * 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
- */
-
-#include <string.h>
-#include <time.h>
-
-#include "hardinfo.h"
-#include "devices.h"
-
-const struct {
- gchar *key, *name;
-} ups_fields[] = {
- { "UPS Status", NULL },
- { "STATUS", "Status" },
- { "TIMELEFT", "Time Left" },
- { "LINEV", "Line Voltage" },
- { "LOADPCT", "Load Percent" },
-
- { "UPS Battery Information", NULL },
- { "BATTV", "Battery Voltage" },
- { "BCHARGE", "Battery Charge" },
- { "BATTDATE", "Battery Date" },
-
- { "UPS Information", NULL },
- { "APCMODEL", "Model" },
- { "FIRMWARE", "Firmware Version" },
- { "SERIALNO", "Serial Number" },
- { "UPSMODE", "UPS Mode" },
- { "CABLE", "Cable" },
- { "UPSNAME", "UPS Name" },
-
- { "UPS Nominal Values", NULL },
- { "NOMINV", "Voltage" },
- { "NOMBATTV", "Battery Voltage" },
- { "NOMPOWER", "Power" }
-};
-
-
-static void
-__scan_battery_apcupsd(void)
-{
- GHashTable *ups_data;
- FILE *apcaccess;
- char buffer[512], *apcaccess_path;
- int i;
-
- apcaccess_path = find_program("apcaccess");
-
- if ((apcaccess = popen(apcaccess_path, "r"))) {
- /* first line isn't important */
- if (fgets(buffer, 512, apcaccess)) {
- /* allocate the key, value hash table */
- ups_data = g_hash_table_new(g_str_hash, g_str_equal);
-
- /* read up all the apcaccess' output, saving it in the key, value hash table */
- while (fgets(buffer, 512, apcaccess)) {
- buffer[9] = '\0';
-
- g_hash_table_insert(ups_data,
- g_strdup(g_strstrip(buffer)),
- g_strdup(g_strstrip(buffer + 10)));
- }
-
- /* builds the ups info string, respecting the field order as found in ups_fields */
- for (i = 0; i < G_N_ELEMENTS(ups_fields); i++) {
- if (!ups_fields[i].name) {
- /* there's no name: make a group with the key as its name */
- battery_list = h_strdup_cprintf("[%s]\n", battery_list, ups_fields[i].key);
- } else {
- /* there's a name: adds a line */
- battery_list = h_strdup_cprintf("%s=%s\n", battery_list,
- ups_fields[i].name,
- g_hash_table_lookup(ups_data, ups_fields[i].key));
- }
- }
-
- g_hash_table_destroy(ups_data);
- }
-
- pclose(apcaccess);
- }
-
- g_free(apcaccess_path);
-}
-
-static void
-__scan_battery_acpi(void)
-{
- gchar *acpi_path;
-
- gchar *present = NULL;
- gchar *capacity = NULL;
- gchar *technology = NULL;
- gchar *voltage = NULL;
- gchar *model = NULL, *serial = NULL, *type = NULL;
- gchar *state = NULL, *rate = NULL;
- gchar *remaining = NULL;
- gchar *manufacturer = NULL;
-
- acpi_path = g_strdup("/proc/acpi/battery");
- if (g_file_test(acpi_path, G_FILE_TEST_EXISTS)) {
- GDir *acpi;
-
- if ((acpi = g_dir_open(acpi_path, 0, NULL))) {
- const gchar *entry;
-
- while ((entry = g_dir_read_name(acpi))) {
- gchar *path = g_strdup_printf("%s/%s/info", acpi_path, entry);
- FILE *f;
- gchar buffer[256];
- gdouble charge_rate = 1.0;
-
- f = fopen(path, "r");
- g_free(path);
-
- if (!f)
- goto cleanup;
-
- while (fgets(buffer, 256, f)) {
- gchar **tmp = g_strsplit(buffer, ":", 2);
-
- GET_STR("present", present);
- GET_STR("design capacity", capacity);
- GET_STR("battery technology", technology);
- GET_STR("design voltage", voltage);
- GET_STR("model number", model);
- GET_STR("serial number", serial);
- GET_STR("battery type", type);
- GET_STR("OEM info", manufacturer);
-
- g_strfreev(tmp);
- }
- fclose(f);
-
- path = g_strdup_printf("%s/%s/state", acpi_path, entry);
- f = fopen(path, "r");
- g_free(path);
-
- if (!f)
- goto cleanup;
-
- while (fgets(buffer, 256, f)) {
- gchar **tmp = g_strsplit(buffer, ":", 2);
-
- GET_STR("charging state", state);
- GET_STR("present rate", rate);
- GET_STR("remaining capacity", remaining);
-
- g_strfreev(tmp);
- }
-
- fclose(f);
-
- const gchar *url = vendor_get_url(manufacturer);
- if (url) {
- char *tmp = g_strdup_printf("%s (%s)", vendor_get_name(manufacturer), url);
- g_free(manufacturer);
- manufacturer = tmp;
- }
-
- if (g_str_equal(present, "yes")) {
- charge_rate = atof(remaining) / atof(capacity);
-
- battery_list = h_strdup_cprintf("\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",
- battery_list,
- entry,
- state, rate,
- remaining, capacity, charge_rate * 100.0,
- technology, type,
- manufacturer,
- model,
- serial);
- }
-
- cleanup:
- g_free(present);
- g_free(capacity);
- g_free(technology);
- g_free(type);
- g_free(model);
- g_free(serial);
- g_free(state);
- g_free(remaining);
- g_free(rate);
- g_free(manufacturer);
-
- present = capacity = technology = type = \
- model = serial = state = remaining = rate = NULL;
- }
-
- g_dir_close(acpi);
- }
- }
-
- g_free(acpi_path);
-}
-
-static void
-__scan_battery_apm(void)
-{
- FILE *procapm;
- static char *sremaining = NULL, *stotal = NULL;
- static unsigned int last_time = 0;
- static int percentage = 0;
- const char *ac_status[] = { "Battery",
- "AC Power",
- "Charging" };
- int ac_bat;
- char apm_bios_ver[16], apm_drv_ver[16];
- char trash[10];
-
- if ((procapm = fopen("/proc/apm", "r"))) {
- int old_percentage = percentage;
-
- (void)fscanf(procapm, "%s %s %s 0x%x %s %s %d%%",
- apm_drv_ver, apm_bios_ver, trash,
- &ac_bat, trash, trash, &percentage);
- fclose(procapm);
-
- if (last_time == 0) {
- last_time = time(NULL);
- sremaining = stotal = NULL;
- }
-
- if (old_percentage - percentage > 0) {
- if (sremaining && stotal) {
- g_free(sremaining);
- g_free(stotal);
- }
-
- int secs_remaining = (time(NULL) - last_time) * percentage /
- (old_percentage - percentage);
- sremaining = seconds_to_string(secs_remaining);
- stotal = seconds_to_string((secs_remaining * 100) / percentage);
-
- last_time = time(NULL);
- }
- } else {
- return;
- }
-
- if (stotal && sremaining) {
- battery_list = h_strdup_cprintf("\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",
- battery_list,
- percentage,
- sremaining, stotal,
- ac_status[ac_bat],
- apm_drv_ver, apm_bios_ver);
- } else {
- battery_list = h_strdup_cprintf("\n[Battery (APM)]\n"
- "Charge=%d%%\n"
- "Using=%s\n"
- "APM driver version=%s\n"
- "APM BIOS version=%s\n",
- battery_list,
- percentage,
- ac_status[ac_bat],
- apm_drv_ver, apm_bios_ver);
-
- }
-}
-
-void
-scan_battery_do(void)
-{
- if (battery_list) {
- g_free(battery_list);
- }
- battery_list = g_strdup("");
-
- __scan_battery_acpi();
- __scan_battery_apm();
- __scan_battery_apcupsd();
-
- if (*battery_list == '\0') {
- g_free(battery_list);
-
- battery_list = g_strdup("[No batteries]\n"
- "No batteries found on this system=\n");
- }
-}
diff --git a/hardinfo2/modules/devices/devmemory.c b/hardinfo2/modules/devices/devmemory.c
deleted file mode 100644
index 8c89d567..00000000
--- a/hardinfo2/modules/devices/devmemory.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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 <string.h>
-#include "devices.h"
-
-GHashTable *memlabels = NULL;
-
-void scan_memory_do(void)
-{
- gchar **keys, *tmp;
- 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 */
- gchar *os_kernel = module_call_method("computer::getOSKernel");
- if (os_kernel) {
- offset = strstr(os_kernel, "Linux 2.4") ? 3 : 0;
- g_free(os_kernel);
- } else {
- 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[1]);
-
- if ((tmp = g_hash_table_lookup(memlabels, newkeys[0]))) {
- g_free(newkeys[0]);
- newkeys[0] = g_strdup(tmp);
- }
-
- g_hash_table_replace(moreinfo, g_strdup(newkeys[0]), g_strdup(newkeys[1]));
-
- tmp = g_strconcat(meminfo, newkeys[0], "=", newkeys[1], "\n", NULL);
- g_free(meminfo);
- meminfo = tmp;
-
- tmp = g_strconcat(lginterval,
- "UpdateInterval$", newkeys[0], "=1000\n", NULL);
- g_free(lginterval);
- lginterval = tmp;
-
- g_strfreev(newkeys);
- }
- g_strfreev(keys);
-}
-
-void init_memory_labels(void)
-{
- static struct {
- char *proc_label;
- char *real_label;
- } proc2real[] = {
- { "MemTotal", "Total Memory" },
- { "MemFree", "Free Memory" },
- { "SwapCached", "Cached Swap" },
- { "HighTotal", "High Memory" },
- { "HighFree", "Free High Memory" },
- { "LowTotal", "Low Memory" },
- { "LowFree", "Free Low Memory" },
- { "SwapTotal", "Virtual Memory" },
- { "SwapFree", "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/hardinfo2/modules/devices/dmi.c b/hardinfo2/modules/devices/dmi.c
deleted file mode 100644
index 8cc45462..00000000
--- a/hardinfo2/modules/devices/dmi.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * 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
- */
-/*
- * DMI support based on patch by Stewart Adam <s.adam@diffingo.com>
- */
-#include <unistd.h>
-#include <sys/types.h>
-
-#include "devices.h"
-
-typedef struct _DMIInfo DMIInfo;
-
-struct _DMIInfo {
- const gchar *name;
- const gchar *file; /* for sysfs */
- const gchar *param; /* for dmidecode */
-};
-
-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" },
- { "$Board", NULL, NULL },
- { "Name", "/sys/class/dmi/id/board_name", "baseboard-product-name" },
- { "Vendor", "/sys/class/dmi/id/board_vendor", "baseboard-manufacturer" },
-};
-
-gchar *dmi_info = NULL;
-
-gboolean dmi_get_info_dmidecode()
-{
- FILE *dmi_pipe;
- gchar buffer[256];
- DMIInfo *info;
- gboolean dmi_failed = 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) == '$') {
- dmi_info = h_strdup_cprintf("[%s]\n", dmi_info,
- (info->name) + 1);
- } else {
- gchar *temp;
-
- if (!info->param)
- continue;
-
- temp = g_strconcat("dmidecode -s ", info->param, NULL);
- if ((dmi_pipe = popen(temp, "r"))) {
- g_free(temp);
-
- (void)fgets(buffer, 256, dmi_pipe);
- if (pclose(dmi_pipe)) {
- dmi_failed = TRUE;
- break;
- }
-
- const gchar *url = vendor_get_url(buffer);
- if (url) {
- const gchar *vendor = vendor_get_name(buffer);
- if (g_strstr_len(vendor, -1, g_strstrip(buffer)) ||
- g_strstr_len(g_strstrip(buffer), -1, vendor)) {
- dmi_info = h_strdup_cprintf("%s=%s (%s)\n",
- dmi_info,
- info->name,
- g_strstrip(buffer),
- url);
- } else {
- dmi_info = h_strdup_cprintf("%s=%s (%s, %s)\n",
- dmi_info,
- info->name,
- g_strstrip(buffer),
- vendor, url);
- }
- } else {
- dmi_info = h_strdup_cprintf("%s=%s\n",
- dmi_info,
- info->name,
- buffer);
- }
- } else {
- g_free(temp);
- dmi_failed = TRUE;
- break;
- }
- }
- }
-
- if (dmi_failed) {
- g_free(dmi_info);
- dmi_info = NULL;
- }
-
- return !dmi_failed;
-}
-
-gboolean dmi_get_info_sys()
-{
- FILE *dmi_file;
- gchar buffer[256];
- DMIInfo *info;
- gboolean dmi_failed = 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) == '$') {
- dmi_info = h_strdup_cprintf("[%s]\n", dmi_info,
- (info->name) + 1);
- } else {
- if (!info->file)
- continue;
-
- if ((dmi_file = fopen(info->file, "r"))) {
- (void)fgets(buffer, 256, dmi_file);
- fclose(dmi_file);
-
- const gchar *url = vendor_get_url(buffer);
- if (url) {
- const gchar *vendor = vendor_get_name(buffer);
- if (g_strstr_len(vendor, -1, g_strstrip(buffer)) ||
- g_strstr_len(g_strstrip(buffer), -1, vendor)) {
- dmi_info = h_strdup_cprintf("%s=%s (%s)\n",
- dmi_info,
- info->name,
- g_strstrip(buffer),
- url);
- } else {
- dmi_info = h_strdup_cprintf("%s=%s (%s, %s)\n",
- dmi_info,
- info->name,
- g_strstrip(buffer),
- vendor, url);
- }
- } else {
- dmi_info = h_strdup_cprintf("%s=%s\n",
- dmi_info,
- info->name,
- g_strstrip(buffer));
- }
- } else {
- dmi_failed = TRUE;
- break;
- }
- }
- }
-
- if (dmi_failed) {
- g_free(dmi_info);
- dmi_info = NULL;
- }
-
- return !dmi_failed;
-}
-
-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"
- "Please try running HardInfo as root.=\n");
- }
-}
diff --git a/hardinfo2/modules/devices/inputdevices.c b/hardinfo2/modules/devices/inputdevices.c
deleted file mode 100644
index c280e218..00000000
--- a/hardinfo2/modules/devices/inputdevices.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * 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
- */
-
-#include <string.h>
-
-#include "hardinfo.h"
-#include "devices.h"
-
-gchar *input_icons = NULL;
-
-static gboolean
-remove_input_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "INP");
-}
-
-static struct {
- char *name;
- char *icon;
-} input_devices[] = {
- { "Keyboard", "keyboard.png" },
- { "Joystick", "joystick.png" },
- { "Mouse", "mouse.png" },
- { "Speaker", "audio.png" },
- { "Unknown", "module.png" },
-};
-
-void
-__scan_input_devices(void)
-{
- FILE *dev;
- gchar buffer[128];
- gchar *tmp, *name = NULL, *phys = NULL;
- gint bus, vendor, product, version;
- int d = 0, n = 0;
-
- dev = fopen("/proc/bus/input/devices", "r");
- if (!dev)
- return;
-
- if (input_list) {
- g_hash_table_foreach_remove(moreinfo, remove_input_devices, NULL);
- g_free(input_list);
- g_free(input_icons);
- }
- input_list = g_strdup("");
- input_icons = g_strdup("");
-
- while (fgets(buffer, 128, dev)) {
- tmp = buffer;
-
- switch (*tmp) {
- case 'N':
- name = g_strdup(tmp + strlen("N: Name="));
- remove_quotes(name);
- break;
- case 'P':
- phys = g_strdup(tmp + strlen("P: Phys="));
- break;
- case 'I':
- sscanf(tmp, "I: Bus=%x Vendor=%x Product=%x Version=%x",
- &bus, &vendor, &product, &version);
- break;
- case 'H':
- if (strstr(tmp, "kbd"))
- d = 0; //INPUT_KEYBOARD;
- else if (strstr(tmp, "js"))
- d = 1; //INPUT_JOYSTICK;
- else if (strstr(tmp, "mouse"))
- d = 2; //INPUT_MOUSE;
- else
- d = 4; //INPUT_UNKNOWN;
- break;
- case '\n':
- if (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[1] != 0) {
- strhash = h_strdup_cprintf("Connected to=%s\n",
- strhash, phys);
- }
-
- if (strstr(phys,"ir")) {
- strhash = h_strdup_cprintf("InfraRed port=yes\n",
- strhash);
- }
-
- g_hash_table_insert(moreinfo, tmp, strhash);
-
- g_free(phys);
- g_free(name);
- }
- }
-
- fclose(dev);
-}
diff --git a/hardinfo2/modules/devices/pci.c b/hardinfo2/modules/devices/pci.c
deleted file mode 100644
index a8439019..00000000
--- a/hardinfo2/modules/devices/pci.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * 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
- */
-
-/*
- * TODO: This thing must be rewritten. We really should have a struct with all the
- * PCI stuff we'll present to the user, and hash them by the PCI ID
- * (domain:bus:device.function).
- * This way we'll have ways to better organize the output, instead of relying
- * on the order the information appears on lspci's output.
- * Also, the "Resources" thing might be better implemented (and we won't need
- * copies of information scattered everywhere like we do today).
- */
-
-#include <string.h>
-
-#include "hardinfo.h"
-#include "devices.h"
-
-GHashTable *_pci_devices = NULL;
-
-void
-scan_pci_do(void)
-{
- FILE *lspci;
- 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);
- }
-
- buf = g_build_filename(g_get_home_dir(), ".hardinfo", "pci.ids", NULL);
- if (!g_file_test(buf, G_FILE_TEST_EXISTS)) {
- DEBUG("using system-provided PCI IDs");
- g_free(buf);
- if (!(lspci = popen(command_line, "r"))) {
- goto pci_error;
- }
- } 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);
- goto pci_error;
- } else {
- g_free(buf);
- }
- }
-
- while (fgets(buffer, 256, lspci)) {
- buf = g_strstrip(buffer);
-
- if (!strncmp(buf, "Flags", 5)) {
- gint irq = 0, freq = 0, latency = 0, i;
- gchar **list;
- gboolean bus_master;
-
- buf += 7;
-
- bus_master = FALSE;
-
- list = g_strsplit(buf, ", ", 10);
- for (i = 0; i <= 10; i++) {
- if (!list[i])
- break;
-
- if (!strncmp(list[i], "IRQ", 3))
- sscanf(list[i], "IRQ %d", &irq);
- else if (strstr(list[i], "Mhz"))
- sscanf(list[i], "%dMhz", &freq);
- else if (!strncmp(list[i], "bus master", 10))
- bus_master = TRUE;
- else if (!strncmp(list[i], "latency", 7))
- sscanf(list[i], "latency %d", &latency);
- }
- g_strfreev(list);
-
- if (irq)
- strdevice = h_strdup_cprintf("IRQ=%d\n", strdevice, irq);
- if (freq)
- strdevice = h_strdup_cprintf("Frequency=%dMHz\n", strdevice, freq);
- if (latency)
- strdevice = h_strdup_cprintf("Latency=%d\n", strdevice, latency);
-
- strdevice = h_strdup_cprintf("Bus Master=%s\n", strdevice, 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);
- } 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",
- strdevice,
- vendor_get_name(buf),
- oem_vendor_url);
- } else if (!strncmp(buf, "Capabilities", 12)
- && !strstr(buf, "only to root") &&
- !strstr(buf, "access denied")) {
- WALK_UNTIL(' ');
- WALK_UNTIL(']');
- buf++;
- strdevice = h_strdup_cprintf("Capability#%d=%s\n", strdevice, ++x, buf);
- } else if (!strncmp(buf, "Memory at", 9) && strstr(buf, "[size=")) {
- gint mem;
- gchar unit;
- gboolean prefetch;
- gboolean _32bit;
-
- prefetch = strstr(buf, "non-prefetchable") ? FALSE : TRUE;
- _32bit = strstr(buf, "32-bit") ? TRUE : FALSE;
-
- WALK_UNTIL('[');
- sscanf(buf, "[size=%d%c", &mem, &unit);
-
- strdevice = h_strdup_cprintf("Memory#%d=%d%cB (%s%s)\n",
- strdevice, ++x,
- mem,
- (unit == ']') ? ' ' : unit,
- _32bit ? "32-bit, " : "",
- prefetch ? "prefetchable" :
- "non-prefetchable");
-
- } else if (!strncmp(buf, "I/O ports at", 12)) {
- guint io_addr, io_size;
-
- 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,
- io_addr + io_size - 1);
- } else if ((buf[0] >= '0' && buf[0] <= '9') && (buf[4] == ':' || buf[2] == ':')) {
- gint bus, device, function, domain;
- gpointer start, end;
-
- if (strdevice != NULL && strhash != NULL) {
- g_hash_table_insert(moreinfo, strhash, strdevice);
- g_free(category);
- g_free(name);
- }
-
- if (buf[4] == ':') {
- sscanf(buf, "%x:%x:%x.%d", &domain, &bus, &device, &function);
- } else {
- /* lspci without domain field */
- sscanf(buf, "%x:%x.%x", &bus, &device, &function);
- domain = 0;
- }
-
- WALK_UNTIL(' ');
-
- start = buf;
-
- WALK_UNTIL(':');
- end = buf + 1;
- *buf = 0;
-
- buf = start + 1;
- category = g_strdup(buf);
-
- buf = end;
-
- if (strstr(category, "RAM memory")) icon = "mem";
- 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);
-
- const gchar *url = vendor_get_url(name);
- if (url) {
- strdevice = h_strdup_cprintf("Vendor=%s (%s)\n",
- strdevice,
- 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);
- } else if (strhash) {
- /* insert the last device */
- g_hash_table_insert(moreinfo, strhash, strdevice);
- g_free(category);
- g_free(name);
- }
-
- g_free(lspci_path);
- g_free(command_line);
-}
diff --git a/hardinfo2/modules/devices/printers.c b/hardinfo2/modules/devices/printers.c
deleted file mode 100644
index 80851a00..00000000
--- a/hardinfo2/modules/devices/printers.c
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-
-#include "devices.h"
-
-typedef struct _CUPSDest CUPSDest;
-typedef struct _CUPSOption CUPSOption;
-
-struct _CUPSOption {
- char *name, *value;
-};
-
-struct _CUPSDest {
- char *name, *instance;
- int is_default;
- int num_options;
- CUPSOption *options;
-};
-
-static int (*cups_dests_get) (CUPSDest **dests) = NULL;
-static int (*cups_dests_free) (int num_dests, CUPSDest *dests) = NULL;
-static gboolean cups_init = FALSE;
-
-GModule *cups;
-
-static gboolean
-remove_printer_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "PRN");
-}
-
-void
-init_cups(void)
-{
- const char *libcups[] = { "libcups", "libcups.so", "libcups.so.1", "libcups.so.2", NULL };
-
- if (!(cups_dests_get && cups_dests_free)) {
- int i;
-
- for (i = 0; libcups[i] != NULL; i++) {
- cups = g_module_open(libcups[i], G_MODULE_BIND_LAZY);
- if (cups)
- break;
- }
-
- if (!cups) {
- cups_init = FALSE;
- return;
- }
-
- if (!g_module_symbol(cups, "cupsGetDests", (gpointer) & cups_dests_get)
- || !g_module_symbol(cups, "cupsFreeDests", (gpointer) & cups_dests_free)) {
- g_module_close(cups);
- cups_init = FALSE;
- }
- }
-
- cups_init = TRUE;
-}
-
-gchar *__cups_callback_ptype(gchar *strvalue)
-{
- if (strvalue) {
- unsigned value = atoi(strvalue);
- gchar *output = g_strdup("\n");
-
- if (value & 0x0004)
- output = h_strdup_cprintf("\342\232\254 Can do black and white printing=\n", output);
- if (value & 0x0008)
- output = h_strdup_cprintf("\342\232\254 Can do color printing=\n", output);
- if (value & 0x0010)
- output = h_strdup_cprintf("\342\232\254 Can do duplexing=\n", output);
- if (value & 0x0020)
- output = h_strdup_cprintf("\342\232\254 Can do staple output=\n", output);
- if (value & 0x0040)
- output = h_strdup_cprintf("\342\232\254 Can do copies=\n", output);
- if (value & 0x0080)
- output = h_strdup_cprintf("\342\232\254 Can collate copies=\n", output);
- if (value & 0x80000)
- output = h_strdup_cprintf("\342\232\254 Printer is rejecting jobs=\n", output);
- if (value & 0x1000000)
- output = h_strdup_cprintf("\342\232\254 Printer was automatically discovered and added=\n", output);
-
- return output;
- } else {
- return g_strdup("Unknown");
- }
-}
-
-gchar *__cups_callback_state(gchar *value)
-{
- if (!value) {
- return g_strdup("Unknown");
- }
-
- if (g_str_equal(value, "3")) {
- return g_strdup("Idle");
- } else if (g_str_equal(value, "4")) {
- return g_strdup("Printing a Job");
- } else if (g_str_equal(value, "5")) {
- return g_strdup("Stopped");
- } else {
- return g_strdup("Unknown");
- }
-}
-
-gchar *__cups_callback_state_change_time(gchar *value)
-{
- struct tm tm;
- char buf[255];
-
- if (value) {
- strptime(value, "%s", &tm);
- strftime(buf, sizeof(buf), "%c", &tm);
-
- return g_strdup(buf);
- } else {
- return g_strdup("Unknown");
- }
-}
-
-gchar *__cups_callback_boolean(gchar *value)
-{
- if (value) {
- return g_strdup(g_str_equal(value, "1") ? "Yes" : "No");
- } else {
- return g_strdup("Unknown");
- }
-}
-
-const struct {
- char *key, *name;
- gchar *(*callback)(gchar *value);
-} cups_fields[] = {
- { "Printer Information", NULL, NULL },
- { "printer-info", "Destination Name", NULL },
- { "printer-make-and-model", "Make and Model", NULL },
-
- { "Capabilities", NULL, NULL },
- { "printer-type", "#", __cups_callback_ptype },
-
- { "Printer State", NULL, NULL },
- { "printer-state", "State", __cups_callback_state },
- { "printer-state-change-time", "Change Time", __cups_callback_state_change_time },
- { "printer-state-reasons", "State Reasons" },
-
- { "Sharing Information", NULL, NULL },
- { "printer-is-shared", "Shared?", __cups_callback_boolean },
- { "printer-location", "Physical Location" },
- { "auth-info-required", "Authentication Required", __cups_callback_boolean },
-
- { "Jobs", NULL, NULL },
- { "job-hold-until", "Hold Until", NULL },
- { "job-priority", "Priority", NULL },
- { "printer-is-accepting-jobs", "Accepting Jobs", __cups_callback_boolean },
-
- { "Media", NULL, NULL },
- { "media", "Media", NULL },
- { "finishings", "Finishings", NULL },
- { "copies", "Copies", NULL },
-};
-
-void
-scan_printers_do(void)
-{
- int num_dests, i, j;
- CUPSDest *dests;
- gchar *prn_id, *prn_moreinfo;
-
- g_free(printer_list);
- g_free(printer_icons);
-
- if (!cups_init) {
- __init_cups();
-
- printer_icons = g_strdup("");
- printer_list = g_strdup("[Printers]\n"
- "No suitable CUPS library found=");
- return;
- }
-
- /* remove old devices from global device table */
- g_hash_table_foreach_remove(moreinfo, remove_printer_devices, NULL);
-
- num_dests = cups_dests_get(&dests);
- if (num_dests > 0) {
- printer_list = g_strdup_printf("[Printers (CUPS)]\n");
- printer_icons = g_strdup("");
- for (i = 0; i < num_dests; i++) {
- GHashTable *options;
-
- options = g_hash_table_new(g_str_hash, g_str_equal);
-
- for (j = 0; j < dests[i].num_options; j++) {
- g_hash_table_insert(options,
- g_strdup(dests[i].options[j].name),
- g_strdup(dests[i].options[j].value));
- }
-
- prn_id = g_strdup_printf("PRN%d", i);
-
- printer_list = h_strdup_cprintf("\n$%s$%s=%s\n",
- printer_list,
- prn_id,
- dests[i].name,
- dests[i].is_default ? "<i>Default</i>" : "");
- printer_icons = h_strdup_cprintf("\nIcon$%s$%s=printer.png",
- printer_icons,
- prn_id,
- dests[i].name);
-
- prn_moreinfo = g_strdup("");
- for (j = 0; j < G_N_ELEMENTS(cups_fields); j++) {
- if (!cups_fields[j].name) {
- prn_moreinfo = h_strdup_cprintf("[%s]\n",
- prn_moreinfo,
- cups_fields[j].key);
- } else {
- gchar *temp;
-
- temp = g_hash_table_lookup(options, cups_fields[j].key);
-
- if (cups_fields[j].callback) {
- temp = cups_fields[j].callback(temp);
- } else {
- if (temp) {
- /* FIXME Do proper escaping */
- temp = g_strdup(strreplacechr(temp, "&=", ' '));
- } else {
- temp = g_strdup("Unknown");
- }
- }
-
- prn_moreinfo = h_strdup_cprintf("%s=%s\n",
- prn_moreinfo,
- cups_fields[j].name,
- temp);
-
- g_free(temp);
- }
- }
-
- g_hash_table_insert(moreinfo, prn_id, prn_moreinfo);
- g_hash_table_destroy(options);
- }
-
- cups_dests_free(num_dests, dests);
- } else {
- printer_list = g_strdup("[Printers]\n"
- "No printers found=\n");
- }
-}
diff --git a/hardinfo2/modules/devices/resources.c b/hardinfo2/modules/devices/resources.c
deleted file mode 100644
index 270000dd..00000000
--- a/hardinfo2/modules/devices/resources.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 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 "devices.h"
-
-gchar *_resources = NULL;
-
-#if GLIB_CHECK_VERSION(2,14,0)
-static GRegex *_regex_pci = NULL,
- *_regex_module = NULL;
-
-static gchar *_resource_obtain_name(gchar *name)
-{
- gchar *temp;
-
- if (!_regex_pci && !_regex_module) {
- _regex_pci = g_regex_new("^[0-9a-fA-F]{4}:[0-9a-fA-F]{2}:"
- "[0-9a-fA-F]{2}\\.[0-9a-fA-F]{1}$",
- 0, 0, NULL);
- _regex_module = g_regex_new("^[0-9a-zA-Z\\_\\-]+$", 0, 0, NULL);
- }
-
- name = g_strstrip(name);
-
- if (g_regex_match(_regex_pci, name, 0, NULL)) {
- temp = module_call_method_param("devices::getPCIDeviceDescription", name);
- if (temp) {
- return g_strdup_printf("<b><small>PCI</small></b> %s", (gchar *)idle_free(temp));
- }
- } else if (g_regex_match(_regex_module, name, 0, NULL)) {
- temp = module_call_method_param("computer::getKernelModuleDescription", name);
- if (temp) {
- return g_strdup_printf("<b><small>Module</small></b> %s", (gchar *)idle_free(temp));
- }
- }
-
- return g_strdup(name);
-}
-#else
-static gchar *_resource_obtain_name(gchar *name)
-{
- return g_strdup(name);
-}
-#endif
-
-void scan_device_resources(gboolean reload)
-{
- SCAN_START();
- FILE *io;
- gchar buffer[256];
- gint i;
-
- struct {
- gchar *file;
- gchar *description;
- } resources[] = {
- { "/proc/ioports", "[I/O Ports]\n" },
- { "/proc/iomem", "[Memory]\n" },
- { "/proc/dma", "[DMA]\n" }
- };
-
- g_free(_resources);
- _resources = g_strdup("");
-
- for (i = 0; i < G_N_ELEMENTS(resources); i++) {
- if ((io = fopen(resources[i].file, "r"))) {
- _resources = h_strconcat(_resources, resources[i].description, NULL);
-
- while (fgets(buffer, 256, io)) {
- gchar **temp = g_strsplit(buffer, ":", 2);
- gchar *name = _resource_obtain_name(temp[1]);
-
- _resources = h_strdup_cprintf("<tt>%s</tt>=%s\n", _resources,
- temp[0], name);
-
- g_strfreev(temp);
- g_free(name);
- }
-
- fclose(io);
- }
- }
-
- SCAN_END();
-}
-
-gchar *callback_device_resources(void)
-{
- return g_strdup(_resources);
-}
diff --git a/hardinfo2/modules/devices/sensors.c b/hardinfo2/modules/devices/sensors.c
deleted file mode 100644
index 9f02566d..00000000
--- a/hardinfo2/modules/devices/sensors.c
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * 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
- */
-
-#include <string.h>
-
-#include "devices.h"
-#include "expr.h"
-#include "hardinfo.h"
-#include "socket.h"
-
-gchar *sensors = NULL;
-GHashTable *sensor_compute = NULL;
-GHashTable *sensor_labels = NULL;
-
-static void read_sensor_labels(gchar * driver)
-{
- FILE *conf;
- gchar buf[256], *line, *p;
- gboolean lock = FALSE;
- gint i;
-
- 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);
-
- /* Try to open lm-sensors config file sensors3.conf */
- conf = fopen("/etc/sensors3.conf", "r");
-
- /* If it fails, try to open sensors.conf */
- if (!conf) conf = fopen("/etc/sensors.conf", "r");
-
- if (!conf) {
- /* Cannot open config file. */
- return;
- }
-
- 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;
- }
- }
- }
-
- fclose(conf);
-}
-
-static gchar *get_sensor_label(gchar * sensor)
-{
- gchar *ret;
-
- ret = g_hash_table_lookup(sensor_labels, sensor);
- if (!ret)
- ret = g_strdup(sensor);
- else
- ret = g_strdup(ret);
-
- return ret;
-}
-
-static float adjust_sensor(gchar * name, float value)
-{
- GSList *postfix;
-
- postfix = g_hash_table_lookup(sensor_compute, name);
- if (!postfix)
- return value;
-
- return math_postfix_eval(postfix, value);
-}
-
-
-static void read_sensors_hwmon(void)
-{
- int hwmon, count;
- gchar *path_hwmon, *path_sensor, *tmp, *driver, *name, *mon;
- hwmon = 0;
-
- path_hwmon = g_strdup_printf("/sys/class/hwmon/hwmon%d/device/", hwmon);
- while (g_file_test(path_hwmon, G_FILE_TEST_EXISTS)) {
- tmp = g_strdup_printf("%sdriver", path_hwmon);
- driver = g_file_read_link(tmp, NULL);
- g_free(tmp);
-
- tmp = g_path_get_basename(driver);
- g_free(driver);
- driver = tmp;
-
- if (!sensor_labels) {
- read_sensor_labels(driver);
- }
-
- sensors = g_strconcat(sensors, "[Cooling Fans]\n", NULL);
- for (count = 1;; count++) {
- path_sensor =
- g_strdup_printf("%sfan%d_input", path_hwmon, count);
- if (!g_file_get_contents(path_sensor, &tmp, NULL, NULL)) {
- g_free(path_sensor);
- break;
- }
-
- mon = g_strdup_printf("fan%d", count);
- name = get_sensor_label(mon);
- if (!g_str_equal(name, "ignore")) {
- sensors = h_strdup_cprintf("%s=%.0fRPM\n",
- sensors, name,
- adjust_sensor(mon, atof(tmp)));
- }
-
- g_free(name);
- g_free(mon);
- g_free(tmp);
- g_free(path_sensor);
- }
-
- sensors = g_strconcat(sensors, "[Temperatures]\n", NULL);
- for (count = 1;; count++) {
- path_sensor =
- g_strdup_printf("%stemp%d_input", path_hwmon, count);
- if (!g_file_get_contents(path_sensor, &tmp, NULL, NULL)) {
- g_free(path_sensor);
- break;
- }
-
- mon = g_strdup_printf("temp%d", count);
- name = get_sensor_label(mon);
- if (!g_str_equal(name, "ignore")) {
- sensors = h_strdup_cprintf("%s=%.2f\302\260C\n",
- sensors, name,
- adjust_sensor(mon,
- atof(tmp) /
- 1000.0));
- }
-
- g_free(tmp);
- g_free(name);
- g_free(path_sensor);
- g_free(mon);
- }
-
- sensors = g_strconcat(sensors, "[Voltage Values]\n", NULL);
- for (count = 0;; count++) {
- path_sensor =
- g_strdup_printf("%sin%d_input", path_hwmon, count);
- if (!g_file_get_contents(path_sensor, &tmp, NULL, NULL)) {
- g_free(path_sensor);
- break;
- }
-
-
- mon = g_strdup_printf("in%d", count);
- name = get_sensor_label(mon);
- if (!g_str_equal(name, "ignore")) {
- sensors = h_strdup_cprintf("%s=%.3fV\n",
- sensors, name,
- adjust_sensor(mon,
- atof(tmp) /
- 1000.0));
- }
-
- g_free(tmp);
- g_free(mon);
- g_free(name);
- g_free(path_sensor);
- }
-
- g_free(path_hwmon);
- g_free(driver);
- path_hwmon =
- g_strdup_printf("/sys/class/hwmon/hwmon%d/device/", ++hwmon);
- }
-
- g_free(path_hwmon);
-
-}
-
-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;
-
- if (g_file_get_contents(path, &contents, NULL, NULL)) {
- int temperature;
-
- sscanf(contents, "temperature: %d C", &temperature);
-
- temp = h_strdup_cprintf("\n%s=%d\302\260C\n",
- temp, entry, temperature);
-
- g_free(contents);
- }
- }
-
- if (*temp != '\0')
- sensors =
- h_strdup_cprintf("\n[ACPI Thermal Zone]\n%s",
- sensors, temp);
-
- g_dir_close(tz);
- }
- }
-
-}
-
-static void read_sensors_omnibook(void)
-{
- const gchar *path_ob = "/proc/omnibook/temperature";
- gchar *contents;
-
- if (g_file_get_contents(path_ob, &contents, NULL, NULL)) {
- int temperature;
-
- sscanf(contents, "CPU temperature: %d C", &temperature);
-
- sensors = h_strdup_cprintf("\n[Omnibook]\n"
- "CPU temperature=%d\302\260C\n",
- sensors, temperature);
-
- g_free(contents);
- }
-}
-
-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;
-
- if (old)
- 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);
- }
-
- g_strfreev(disks);
- }
- } else {
- g_free(old);
- old = NULL;
- }
-
- if (old) {
- sensors = g_strconcat(sensors, "\n", old, NULL);
- }
-}
-
-void scan_sensors_do(void)
-{
- if (sensors)
- g_free(sensors);
-
- sensors = g_strdup("");
-
- read_sensors_hwmon();
- read_sensors_acpi();
- read_sensors_omnibook();
- read_sensors_hddtemp();
-
- /* FIXME: Add support for ibm acpi and more sensors */
-}
diff --git a/hardinfo2/modules/devices/storage.c b/hardinfo2/modules/devices/storage.c
deleted file mode 100644
index 23ab1de2..00000000
--- a/hardinfo2/modules/devices/storage.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * 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
- */
-
-#include <string.h>
-
-#include "hardinfo.h"
-#include "devices.h"
-
-gchar *storage_icons = NULL;
-
-static gboolean
-remove_scsi_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "SCSI");
-}
-
-/* SCSI support by Pascal F.Martin <pascalmartin@earthlink.net> */
-void
-__scan_scsi_devices(void)
-{
- FILE *proc_scsi;
- gchar buffer[256], *buf;
- gint n = 0;
- gint scsi_controller;
- gint scsi_channel;
- gint scsi_id;
- gint scsi_lun;
- gchar *vendor = NULL, *revision = NULL, *model = NULL;
- gchar *scsi_storage_list;
-
- /* remove old devices from global device table */
- g_hash_table_foreach_remove(moreinfo, remove_scsi_devices, NULL);
-
- if (!g_file_test("/proc/scsi/scsi", G_FILE_TEST_EXISTS))
- return;
-
- scsi_storage_list = g_strdup("\n[SCSI Disks]\n");
-
- if ((proc_scsi = fopen("/proc/scsi/scsi", "r"))) {
- while (fgets(buffer, 256, proc_scsi)) {
- buf = g_strstrip(buffer);
- if (!strncmp(buf, "Host: scsi", 10)) {
- sscanf(buf,
- "Host: scsi%d Channel: %d Id: %d Lun: %d",
- &scsi_controller, &scsi_channel, &scsi_id, &scsi_lun);
-
- n++;
- } else if (!strncmp(buf, "Vendor: ", 8)) {
- buf[17] = '\0';
- buf[41] = '\0';
- buf[53] = '\0';
-
- vendor = g_strdup(g_strstrip(buf + 8));
- model = g_strdup_printf("%s %s", vendor, g_strstrip(buf + 24));
- revision = g_strdup(g_strstrip(buf + 46));
- } else if (!strncmp(buf, "Type: ", 8)) {
- char *p;
- gchar *type = NULL, *icon = NULL;
-
- if (!(p = strstr(buf, "ANSI SCSI revision"))) {
- p = strstr(buf, "ANSI SCSI revision");
- }
-
- if (p != NULL) {
- while (*(--p) == ' ');
- *(++p) = 0;
-
- static struct {
- char *type;
- char *label;
- char *icon;
- } type2icon[] = {
- { "Direct-Access", "Disk", "hdd"},
- { "Sequential-Access", "Tape", "tape"},
- { "Printer", "Printer", "lpr"},
- { "WORM", "CD-ROM", "cdrom"},
- { "CD-ROM", "CD-ROM", "cdrom"},
- { "Scanner", "Scanner", "scanner"},
- { "Flash Disk", "USB Flash Disk", "usbfldisk" },
- { NULL, "Generic", "scsi"}
- };
- int i;
-
- if (strstr(model, "Flash Disk")) {
- type = "Flash Disk";
- icon = "usbfldisk";
- } else {
- for (i = 0; type2icon[i].type != NULL; i++)
- if (g_str_equal(buf + 8, type2icon[i].type))
- break;
-
- type = type2icon[i].label;
- icon = type2icon[i].icon;
- }
- }
-
- gchar *devid = g_strdup_printf("SCSI%d", n);
- scsi_storage_list = h_strdup_cprintf("$%s$%s=\n", scsi_storage_list, devid, model);
- storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid, model, icon);
-
- gchar *strhash = g_strdup_printf("[Device Information]\n"
- "Model=%s\n", model);
-
- const gchar *url = vendor_get_url(model);
- if (url) {
- strhash = h_strdup_cprintf("Vendor=%s (%s)\n",
- strhash,
- vendor_get_name(model),
- url);
- } else {
- strhash = h_strdup_cprintf("Vendor=%s\n",
- strhash,
- vendor_get_name(model));
- }
-
- strhash = h_strdup_cprintf("Type=%s\n"
- "Revision=%s\n"
- "[SCSI Controller]\n"
- "Controller=scsi%d\n"
- "Channel=%d\n"
- "ID=%d\n" "LUN=%d\n",
- strhash,
- type,
- revision,
- scsi_controller,
- scsi_channel,
- scsi_id,
- scsi_lun);
- g_hash_table_insert(moreinfo, devid, strhash);
-
- g_free(model);
- g_free(revision);
- g_free(vendor);
- }
- }
- fclose(proc_scsi);
- }
-
- if (n) {
- storage_list = h_strconcat(storage_list, scsi_storage_list, NULL);
- g_free(scsi_storage_list);
- }
-}
-
-static gboolean
-remove_ide_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "IDE");
-}
-
-void
-__scan_ide_devices(void)
-{
- FILE *proc_ide;
- gchar *device, iface, *model, *media, *pgeometry = NULL, *lgeometry =
- NULL;
- gint n = 0, i = 0, cache, nn = 0;
- gchar *capab = NULL, *speed = NULL, *driver = NULL, *ide_storage_list;
-
- /* remove old devices from global device table */
- g_hash_table_foreach_remove(moreinfo, remove_ide_devices, NULL);
-
- ide_storage_list = g_strdup("\n[IDE Disks]\n");
-
- iface = 'a';
- for (i = 0; i <= 16; i++) {
- device = g_strdup_printf("/proc/ide/hd%c/model", iface);
- if (g_file_test(device, G_FILE_TEST_EXISTS)) {
- gchar buf[128];
-
- cache = 0;
-
- proc_ide = fopen(device, "r");
- (void)fgets(buf, 128, proc_ide);
- fclose(proc_ide);
-
- buf[strlen(buf) - 1] = 0;
-
- model = g_strdup(buf);
-
- g_free(device);
-
- device = g_strdup_printf("/proc/ide/hd%c/media", iface);
- proc_ide = fopen(device, "r");
- (void)fgets(buf, 128, proc_ide);
- fclose(proc_ide);
- buf[strlen(buf) - 1] = 0;
-
- media = g_strdup(buf);
- if (g_str_equal(media, "cdrom")) {
- /* obtain cd-rom drive information from cdrecord */
- GTimer *timer;
- gchar *tmp = g_strdup_printf("cdrecord dev=/dev/hd%c -prcap 2>/dev/stdout", iface);
- FILE *prcap;
-
- if ((prcap = popen(tmp, "r"))) {
- /* we need a timeout so cdrecord does not try to get information on cd drives
- with inserted media, which is not possible currently. half second should be
- enough. */
- timer = g_timer_new();
- g_timer_start(timer);
-
- while (fgets(buf, 128, prcap) && g_timer_elapsed(timer, NULL) < 0.5) {
- if (g_str_has_prefix(buf, " Does")) {
- if (g_str_has_suffix(buf, "media\n") && !strstr(buf, "speed")) {
- gchar *media_type = g_strstrip(strstr(buf, "Does "));
- gchar **ttmp = g_strsplit(media_type, " ", 0);
-
- capab = h_strdup_cprintf("\nCan %s#%d=%s\n",
- capab,
- ttmp[1], ++nn, ttmp[2]);
-
- g_strfreev(ttmp);
- } else if (strstr(buf, "Buffer-Underrun-Free")) {
- capab = h_strdup_cprintf("\nSupports BurnProof=%s\n",
- capab,
- strstr(buf, "Does not") ? "No" : "Yes");
- } else if (strstr(buf, "multi-session")) {
- capab = h_strdup_cprintf("\nCan read multi-session CDs=%s\n",
- capab,
- strstr(buf, "Does not") ? "No" : "Yes");
- } else if (strstr(buf, "audio CDs")) {
- capab = h_strdup_cprintf("\nCan play audio CDs=%s\n",
- capab,
- strstr(buf, "Does not") ? "No" : "Yes");
- } else if (strstr(buf, "PREVENT/ALLOW")) {
- capab = h_strdup_cprintf("\nCan lock media=%s\n",
- capab,
- strstr(buf, "Does not") ? "No" : "Yes");
- }
- } else if ((strstr(buf, "read") || strstr(buf, "write")) && strstr(buf, "kB/s")) {
- speed = g_strconcat(speed ? speed : "",
- strreplacechr(g_strstrip(buf), ":", '='),
- "\n", NULL);
- } else if (strstr(buf, "Device seems to be")) {
- driver = g_strdup_printf("Driver=%s\n", strchr(buf, ':') + 1);
- }
- }
-
- pclose(prcap);
- g_timer_destroy(timer);
- }
-
- g_free(tmp);
- }
- g_free(device);
-
- device = g_strdup_printf("/proc/ide/hd%c/cache", iface);
- if (g_file_test(device, G_FILE_TEST_EXISTS)) {
- proc_ide = fopen(device, "r");
- (void)fscanf(proc_ide, "%d", &cache);
- fclose(proc_ide);
- }
- g_free(device);
-
- device = g_strdup_printf("/proc/ide/hd%c/geometry", iface);
- if (g_file_test(device, G_FILE_TEST_EXISTS)) {
- gchar *tmp;
-
- proc_ide = fopen(device, "r");
-
- (void)fgets(buf, 64, proc_ide);
- for (tmp = buf; *tmp; tmp++) {
- if (*tmp >= '0' && *tmp <= '9')
- break;
- }
-
- pgeometry = g_strdup(g_strstrip(tmp));
-
- (void)fgets(buf, 64, proc_ide);
- for (tmp = buf; *tmp; tmp++) {
- if (*tmp >= '0' && *tmp <= '9')
- break;
- }
- lgeometry = g_strdup(g_strstrip(tmp));
-
- fclose(proc_ide);
- }
- g_free(device);
-
- n++;
-
- gchar *devid = g_strdup_printf("IDE%d", n);
-
- ide_storage_list = h_strdup_cprintf("$%s$%s=\n", ide_storage_list,
- devid, model);
- storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid,
- model, g_str_equal(media, "cdrom") ? \
- "cdrom" : "hdd");
-
- gchar *strhash = g_strdup_printf("[Device Information]\n"
- "Model=%s\n",
- model);
-
- const gchar *url = vendor_get_url(model);
-
- if (url) {
- strhash = h_strdup_cprintf("Vendor=%s (%s)\n",
- strhash,
- vendor_get_name(model),
- url);
- } else {
- strhash = h_strdup_cprintf("Vendor=%s\n",
- strhash,
- vendor_get_name(model));
- }
-
- strhash = h_strdup_cprintf("Device Name=hd%c\n"
- "Media=%s\n"
- "Cache=%dkb\n",
- strhash,
- iface,
- media,
- cache);
- if (driver) {
- strhash = h_strdup_cprintf("%s\n", strhash, driver);
-
- g_free(driver);
- driver = NULL;
- }
-
- if (pgeometry && lgeometry) {
- strhash = h_strdup_cprintf("[Geometry]\n"
- "Physical=%s\n"
- "Logical=%s\n",
- strhash, pgeometry, lgeometry);
-
- g_free(pgeometry);
- pgeometry = NULL;
- g_free(lgeometry);
- lgeometry = NULL;
- }
-
- if (capab) {
- strhash = h_strdup_cprintf("[Capabilities]\n%s", strhash, capab);
-
- g_free(capab);
- capab = NULL;
- }
-
- if (speed) {
- strhash = h_strdup_cprintf("[Speeds]\n%s", strhash, speed);
-
- g_free(speed);
- speed = NULL;
- }
-
- g_hash_table_insert(moreinfo, devid, strhash);
-
- g_free(model);
- model = g_strdup("");
- } else
- g_free(device);
-
- iface++;
- }
-
- if (n) {
- storage_list = h_strconcat(storage_list, ide_storage_list, NULL);
- g_free(ide_storage_list);
- }
-}
diff --git a/hardinfo2/modules/devices/usb.c b/hardinfo2/modules/devices/usb.c
deleted file mode 100644
index 39914dd0..00000000
--- a/hardinfo2/modules/devices/usb.c
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 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
- */
-/*
- * FIXME:
- * - listing with sysfs does not generate device hierarchy
- */
-
-#include <string.h>
-
-#include "hardinfo.h"
-#include "devices.h"
-
-gchar *usb_list = NULL;
-
-static gboolean
-remove_usb_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "USB");
-}
-
-void __scan_usb_sysfs_add_device(gchar * endpoint, int n)
-{
- gchar *manufacturer, *product, *mxpwr, *tmp, *strhash;
- gint bus, classid, vendor, prodid;
- gfloat version, speed;
-
- classid = h_sysfs_read_int(endpoint, "bDeviceClass");
- vendor = h_sysfs_read_int(endpoint, "idVendor");
- prodid = h_sysfs_read_int(endpoint, "idProduct");
- bus = h_sysfs_read_int(endpoint, "busnum");
- speed = h_sysfs_read_float(endpoint, "speed");
- version = h_sysfs_read_float(endpoint, "version");
-
- if (!(mxpwr = h_sysfs_read_string(endpoint, "bMaxPower"))) {
- mxpwr = g_strdup("0 mA");
- }
-
- if (!(manufacturer = h_sysfs_read_string(endpoint, "manufacturer"))) {
- 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);
- }
- }
-
- 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;
- }
-
- 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);
-
- g_hash_table_insert(moreinfo, tmp, strhash);
-
- g_free(manufacturer);
- g_free(product);
- g_free(mxpwr);
-}
-
-gboolean __scan_usb_sysfs(void)
-{
- GDir *sysfs;
- gchar *filename;
- const gchar *sysfs_path = "/sys/class/usb_endpoint";
- gint usb_device_number = 0;
-
- if (!(sysfs = g_dir_open(sysfs_path, 0, NULL))) {
- return FALSE;
- }
-
- if (usb_list) {
- g_hash_table_foreach_remove(moreinfo, remove_usb_devices, NULL);
- g_free(usb_list);
- }
- usb_list = g_strdup("[USB Devices]\n");
-
- while ((filename = (gchar *) g_dir_read_name(sysfs))) {
- gchar *endpoint =
- g_build_filename(sysfs_path, filename, "device", NULL);
- gchar *temp;
-
- temp = g_build_filename(endpoint, "idVendor", NULL);
- if (g_file_test(temp, G_FILE_TEST_EXISTS)) {
- __scan_usb_sysfs_add_device(endpoint, ++usb_device_number);
- }
-
- g_free(temp);
- g_free(endpoint);
- }
-
- g_dir_close(sysfs);
-
- return usb_device_number > 0;
-}
-
-gboolean __scan_usb_procfs(void)
-{
- FILE *dev;
- gchar buffer[128];
- gchar *tmp, *manuf = NULL, *product = NULL, *mxpwr;
- gint bus, level, port, classid, trash;
- gint vendor, prodid;
- gfloat ver, rev, speed;
- int n = 0;
-
- dev = fopen("/proc/bus/usb/devices", "r");
- if (!dev)
- return 0;
-
- if (usb_list) {
- g_hash_table_foreach_remove(moreinfo, remove_usb_devices, NULL);
- g_free(usb_list);
- }
- usb_list = g_strdup("[USB Devices]\n");
-
- while (fgets(buffer, 128, dev)) {
- tmp = buffer;
-
- switch (*tmp) {
- case 'T':
- sscanf(tmp,
- "T: Bus=%d Lev=%d Prnt=%d Port=%d Cnt=%d Dev#=%d Spd=%f",
- &bus, &level, &trash, &port, &trash, &trash, &speed);
- break;
- case 'D':
- sscanf(tmp, "D: Ver=%f Cls=%x", &ver, &classid);
- break;
- case 'P':
- sscanf(tmp, "P: Vendor=%x ProdID=%x Rev=%f",
- &vendor, &prodid, &rev);
- break;
- case 'S':
- if (strstr(tmp, "Manufacturer=")) {
- manuf = g_strdup(strchr(tmp, '=') + 1);
- remove_linefeed(manuf);
- } else if (strstr(tmp, "Product=")) {
- product = g_strdup(strchr(tmp, '=') + 1);
- remove_linefeed(product);
- }
- break;
- case 'C':
- mxpwr = strstr(buffer, "MxPwr=") + 6;
-
- tmp = g_strdup_printf("USB%d", ++n);
-
- if (*product == '\0') {
- g_free(product);
- if (classid == 9) {
- product = g_strdup_printf("USB %.2f Hub", ver);
- } else {
- 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);
-
- g_hash_table_insert(moreinfo, tmp, strhash);
- }
-
- g_free(manuf);
- g_free(product);
- manuf = g_strdup("");
- product = g_strdup("");
- }
- }
-
- fclose(dev);
-
- return n > 0;
-}
-
-void __scan_usb_lsusb_add_device(char *buffer, FILE *lsusb, int usb_device_number)
-{
- gint bus, device, vendor_id, product_id;
- gchar *product, *vendor, *max_power, *tmp, *strhash;
-
- sscanf(buffer, "Bus %d Device %d: ID %x:%x",
- &bus, &device, &vendor_id, &product_id);
-
- while (fgets(buffer, 512, lsusb)) {
- if (g_str_has_prefix(buffer, " idVendor")) {
- vendor = g_strstrip(g_strdup(buffer + 28));
- } else if (g_str_has_prefix(buffer, " idProduct")) {
- product = g_strstrip(g_strdup(buffer + 28));
- } else if (g_str_has_prefix(buffer, " MaxPower")) {
- max_power = g_strstrip(g_strdup(buffer + 26));
- } else if (g_str_has_prefix(buffer, "\n")) {
- /* device separator */
- break;
- }
- }
-
- tmp = g_strdup_printf("USB%d", usb_device_number);
- 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"
- "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,
- vendor,
- max_power,
- 0.0f /* FIXME */,
- 0 /* FIXME */,
- vendor_id, product_id, bus);
-
- g_hash_table_insert(moreinfo, tmp, strhash);
-
- g_free(vendor);
- g_free(product);
- g_free(max_power);
-}
-
-gboolean __scan_usb_lsusb(void)
-{
- static gchar *lsusb_path = NULL;
- int usb_device_number = 0;
- FILE *lsusb;
- char buffer[512], *temp;
-
- if (!lsusb_path) {
- if (!(lsusb_path = find_program("lsusb"))) {
- DEBUG("lsusb not found");
-
- return FALSE;
- }
- }
-
- temp = g_strdup_printf("%s -v", lsusb_path);
- if (!(lsusb = popen(temp, "r"))) {
- DEBUG("cannot run %s", lsusb_path);
-
- g_free(temp);
- return FALSE;
- }
-
- g_free(temp);
-
- if (usb_list) {
- g_hash_table_foreach_remove(moreinfo, remove_usb_devices, NULL);
- g_free(usb_list);
- }
- usb_list = g_strdup("[USB Devices]\n");
-
- while (fgets(buffer, sizeof(buffer), lsusb)) {
- if (g_str_has_prefix(buffer, "Bus ")) {
- __scan_usb_lsusb_add_device(buffer, lsusb, ++usb_device_number);
- }
- }
-
- pclose(lsusb);
-
- return usb_device_number > 0;
-}
-
-void __scan_usb(void)
-{
- if (!__scan_usb_procfs()) {
- if (!__scan_usb_sysfs()) {
- __scan_usb_lsusb();
- }
- }
-}
diff --git a/hardinfo2/modules/devices/x86/processor.c b/hardinfo2/modules/devices/x86/processor.c
deleted file mode 100644
index aee409f1..00000000
--- a/hardinfo2/modules/devices/x86/processor.c
+++ /dev/null
@@ -1,562 +0,0 @@
-/*
- * 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
- */
-#include "hardinfo.h"
-#include "devices.h"
-
-/*
- * This function is partly based on x86cpucaps
- * by Osamu Kayasono <jacobi@jcom.home.ne.jp>
- */
-void get_processor_strfamily(Processor * processor)
-{
- gint family = processor->family;
- gint model = processor->model;
-
- if (g_str_equal(processor->vendor_id, "GenuineIntel")) {
- if (family == 4) {
- processor->strmodel = g_strdup("i486 series");
- } else if (family == 5) {
- if (model < 4) {
- processor->strmodel = g_strdup("Pentium Classic");
- } else {
- processor->strmodel = g_strdup("Pentium MMX");
- }
- } else if (family == 6) {
- if (model <= 1) {
- processor->strmodel = g_strdup("Pentium Pro");
- } else if (model < 7) {
- processor->strmodel = g_strdup("Pentium II/Pentium II Xeon/Celeron");
- } else if (model == 9) {
- processor->strmodel = g_strdup("Pentium M");
- } else {
- processor->strmodel = g_strdup("Pentium III/Pentium III Xeon/Celeron/Core Duo/Core Duo 2");
- }
- } else if (family > 6) {
- processor->strmodel = g_strdup("Pentium 4");
- } else {
- processor->strmodel = g_strdup("i386 class");
- }
- } else if (g_str_equal(processor->vendor_id, "AuthenticAMD")) {
- if (family == 4) {
- if (model <= 9) {
- processor->strmodel = g_strdup("AMD i80486 series");
- } else {
- processor->strmodel = g_strdup("AMD 5x86");
- }
- } else if (family == 5) {
- if (model <= 3) {
- processor->strmodel = g_strdup("AMD K5");
- } else if (model <= 7) {
- processor->strmodel = g_strdup("AMD K6");
- } else if (model == 8) {
- processor->strmodel = g_strdup("AMD K6-2");
- } else if (model == 9) {
- processor->strmodel = g_strdup("AMD K6-III");
- } else {
- processor->strmodel = g_strdup("AMD K6-2+/III+");
- }
- } else if (family == 6) {
- if (model == 1) {
- processor->strmodel = g_strdup("AMD Athlon (K7)");
- } else if (model == 2) {
- processor->strmodel = g_strdup("AMD Athlon (K75)");
- } else if (model == 3) {
- processor->strmodel = g_strdup("AMD Duron (Spitfire)");
- } else if (model == 4) {
- processor->strmodel = g_strdup("AMD Athlon (Thunderbird)");
- } else if (model == 6) {
- processor->strmodel = g_strdup("AMD Athlon XP/MP/4 (Palomino)");
- } else if (model == 7) {
- processor->strmodel = g_strdup("AMD Duron (Morgan)");
- } else if (model == 8) {
- processor->strmodel = g_strdup("AMD Athlon XP/MP (Thoroughbred)");
- } else if (model == 10) {
- processor->strmodel = g_strdup("AMD Athlon XP/MP (Barton)");
- } else {
- processor->strmodel = g_strdup("AMD Athlon (unknown)");
- }
- } else if (family > 6) {
- processor->strmodel = g_strdup("AMD Opteron/Athlon64/FX");
- } else {
- processor->strmodel = g_strdup("AMD i386 class");
- }
- } else if (g_str_equal(processor->vendor_id, "CyrixInstead")) {
- if (family == 4) {
- processor->strmodel = g_strdup("Cyrix 5x86");
- } else if (family == 5) {
- processor->strmodel = g_strdup("Cyrix M1 (6x86)");
- } else if (family == 6) {
- if (model == 0) {
- processor->strmodel = g_strdup("Cyrix M2 (6x86MX)");
- } else if (model <= 5) {
- processor->strmodel = g_strdup("VIA Cyrix III (M2 core)");
- } else if (model == 6) {
- processor->strmodel = g_strdup("VIA Cyrix III (WinChip C5A)");
- } else if (model == 7) {
- processor->strmodel = g_strdup("VIA Cyrix III (WinChip C5B/C)");
- } else {
- processor->strmodel = g_strdup("VIA Cyrix III (WinChip C5C-T)");
- }
- } else {
- processor->strmodel = g_strdup("Cyrix i386 class");
- }
- } else if (g_str_equal(processor->vendor_id, "CentaurHauls")) {
- if (family == 5) {
- if (model <= 4) {
- processor->strmodel = g_strdup("Centaur WinChip C6");
- } else if (model <= 8) {
- processor->strmodel = g_strdup("Centaur WinChip 2");
- } else {
- processor->strmodel = g_strdup("Centaur WinChip 2A");
- }
- } else {
- processor->strmodel = g_strdup("Centaur i386 class");
- }
- } else if (g_str_equal(processor->vendor_id, "GenuineTMx86")) {
- processor->strmodel = g_strdup("Transmeta Crusoe TM3x00/5x00");
- } else {
- processor->strmodel = g_strdup("Unknown");
- }
-}
-
-static gchar *__cache_get_info_as_string(Processor *processor)
-{
- gchar *result = g_strdup("");
- GSList *cache_list;
- ProcessorCache *cache;
-
- if (!processor->cache) {
- return g_strdup("Cache information not available=\n");
- }
-
- 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,
- cache->level,
- cache->type,
- cache->ways_of_associativity,
- cache->number_of_sets,
- cache->size);
- }
-
- return result;
-}
-
-static void __cache_obtain_info(Processor *processor, gint processor_number)
-{
- ProcessorCache *cache;
- gchar *endpoint, *entry, *index;
- gint i;
-
- endpoint = g_strdup_printf("/sys/devices/system/cpu/cpu%d/cache", processor_number);
-
- for (i = 0; ; i++) {
- cache = g_new0(ProcessorCache, 1);
-
- index = g_strdup_printf("index%d/", i);
-
- entry = g_strconcat(index, "type", NULL);
- cache->type = h_sysfs_read_string(endpoint, entry);
- g_free(entry);
-
- if (!cache->type) {
- g_free(cache);
- g_free(index);
- goto fail;
- }
-
- entry = g_strconcat(index, "level", NULL);
- cache->level = h_sysfs_read_int(endpoint, entry);
- g_free(entry);
-
- entry = g_strconcat(index, "number_of_sets", NULL);
- cache->number_of_sets = h_sysfs_read_int(endpoint, entry);
- g_free(entry);
-
- entry = g_strconcat(index, "physical_line_partition", NULL);
- cache->physical_line_partition = h_sysfs_read_int(endpoint, entry);
- g_free(entry);
-
- entry = g_strconcat(index, "size", NULL);
- cache->size = h_sysfs_read_int(endpoint, entry);
- g_free(entry);
-
-
- entry = g_strconcat(index, "ways_of_associativity", NULL);
- cache->ways_of_associativity = h_sysfs_read_int(endpoint, entry);
- g_free(entry);
-
- g_free(index);
-
- processor->cache = g_slist_append(processor->cache, cache);
- }
-
-fail:
- g_free(endpoint);
-}
-
-GSList *processor_scan(void)
-{
- GSList *procs = NULL;
- Processor *processor = NULL;
- FILE *cpuinfo;
- gchar buffer[512];
- gint processor_number = 0;
-
- cpuinfo = fopen("/proc/cpuinfo", "r");
- if (!cpuinfo)
- return NULL;
-
- while (fgets(buffer, 512, cpuinfo)) {
- gchar **tmp = g_strsplit(buffer, ":", 2);
-
- if (g_str_has_prefix(tmp[0], "processor")) {
- if (processor) {
- get_processor_strfamily(processor);
- procs = g_slist_append(procs, processor);
- }
-
- processor = g_new0(Processor, 1);
-
- __cache_obtain_info(processor, processor_number++);
- }
-
- if (tmp[0] && tmp[1]) {
- tmp[0] = g_strstrip(tmp[0]);
- tmp[1] = g_strstrip(tmp[1]);
-
- get_str("model name", processor->model_name);
- get_str("vendor_id", processor->vendor_id);
- get_str("flags", processor->flags);
- get_int("cache size", processor->cache_size);
- get_float("cpu MHz", processor->cpu_mhz);
- get_float("bogomips", processor->bogomips);
-
- get_str("fpu", processor->has_fpu);
-
- get_str("fdiv_bug", processor->bug_fdiv);
- get_str("hlt_bug", processor->bug_hlt);
- get_str("f00f_bug", processor->bug_f00f);
- get_str("coma_bug", processor->bug_coma);
-
- get_int("model", processor->model);
- get_int("cpu family", processor->family);
- get_int("stepping", processor->stepping);
-
- get_int("processor", processor->id);
- }
- g_strfreev(tmp);
- }
-
- if (processor) {
- get_processor_strfamily(processor);
- procs = g_slist_append(procs, processor);
- }
-
- fclose(cpuinfo);
-
- return procs;
-}
-
-/*
- * Sources:
- * - Linux' cpufeature.h
- * - http://gentoo-wiki.com/Cpuinfo
- * - Intel IA-32 Architecture Software Development Manual
- */
-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 Architeture" },
- { "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" },
- { NULL, NULL },
-};
-
-GHashTable *cpu_flags = NULL;
-
-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)) {
- DEBUG("using internal CPU flags database");
-
- for (i = 0; flag_meaning[i].name != NULL; i++) {
- g_hash_table_insert(cpu_flags, flag_meaning[i].name,
- flag_meaning[i].meaning);
- }
- } 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);
- 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);
-}
-
-gchar *processor_get_capabilities_from_flags(gchar * strflags)
-{
- /* FIXME:
- * - Separate between processor capabilities, additional instructions and whatnot.
- */
- gchar **flags, **old;
- 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]);
-
- if (meaning) {
- tmp = h_strdup_cprintf("%s=%s\n", tmp, flags[j], meaning);
- } else {
- tmp = h_strdup_cprintf("%s=\n", tmp, flags[j]);
- }
- j++;
- }
-
- g_strfreev(old);
- return tmp;
-}
-
-gchar *processor_get_detailed_info(Processor * processor)
-{
- gchar *tmp, *ret, *cache_info;
-
- tmp = processor_get_capabilities_from_flags(processor->flags);
- 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"
- "[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",
- 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->bug_fdiv ? processor->bug_fdiv : "no",
- processor->bug_hlt ? processor->bug_hlt : "no",
- processor->bug_f00f ? processor->bug_f00f : "no",
- processor->bug_coma ? processor->bug_coma : "no",
- processor->has_fpu ? processor->has_fpu : "no",
- cache_info,
- tmp);
- g_free(tmp);
- g_free(cache_info);
-
- 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=%.2fMHz\n",
- tmp, processor->id,
- processor->model_name,
- processor->cpu_mhz);
-
- hashkey = g_strdup_printf("CPU%d", processor->id);
- g_hash_table_insert(moreinfo, hashkey,
- processor_get_detailed_info(processor));
- }
-
- 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/hardinfo2/modules/network.c b/hardinfo2/modules/network.c
deleted file mode 100644
index 168e04a9..00000000
--- a/hardinfo2/modules/network.c
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 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 <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <gtk/gtk.h>
-#include <config.h>
-#include <time.h>
-#include <string.h>
-#include <sys/utsname.h>
-#include <sys/stat.h>
-
-#include <sys/socket.h>
-#include <netdb.h>
-
-#include <hardinfo.h>
-#include <iconcache.h>
-#include <shell.h>
-
-#include <vendor.h>
-
-#include "network.h"
-
-GHashTable *moreinfo = NULL;
-
-/* Callbacks */
-gchar *callback_network();
-gchar *callback_route();
-gchar *callback_dns();
-gchar *callback_connections();
-gchar *callback_shares();
-gchar *callback_arp();
-gchar *callback_statistics();
-
-/* Scan callbacks */
-void scan_network(gboolean reload);
-void scan_route(gboolean reload);
-void scan_dns(gboolean reload);
-void scan_connections(gboolean reload);
-void scan_shares(gboolean reload);
-void scan_arp(gboolean reload);
-void scan_statistics(gboolean reload);
-
-static ModuleEntry entries[] = {
- {"Interfaces", "network-interface.png", callback_network, scan_network, MODULE_FLAG_NONE},
- {"IP Connections", "network-connections.png", callback_connections, scan_connections, MODULE_FLAG_NONE},
- {"Routing Table", "network.png", callback_route, scan_route, MODULE_FLAG_NONE},
- {"ARP Table", "module.png", callback_arp, scan_arp, MODULE_FLAG_NONE},
- {"DNS Servers", "dns.png", callback_dns, scan_dns, MODULE_FLAG_NONE},
- {"Statistics", "network-statistics.png", callback_statistics, scan_statistics, MODULE_FLAG_NONE},
- {"Shared Directories", "shares.png", callback_shares, scan_shares, MODULE_FLAG_NONE},
- {NULL},
-};
-
-void scan_shares(gboolean reload)
-{
- SCAN_START();
- scan_samba();
- scan_nfs_shared_directories();
- SCAN_END();
-}
-
-static gchar *__statistics = NULL;
-void scan_statistics(gboolean reload)
-{
- FILE *netstat;
- gchar buffer[256];
- gchar *netstat_path;
-
- 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",
- __statistics,
- g_strstrip(tmp1),
- g_strstrip(tmp2));
- }
- }
-
- pclose(netstat);
- }
-
- g_free(command_line);
- g_free(netstat_path);
- }
-
- SCAN_END();
-}
-
-static gchar *__nameservers = NULL;
-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,
- ip);
- } else {
- __nameservers = h_strdup_cprintf("%s=%s\n",
- __nameservers,
- ip, hbuf);
-
- }
-
- shell_status_pulse();
- }
- }
- fclose(resolv);
- }
-
- SCAN_END();
-}
-
-void scan_network(gboolean reload)
-{
- SCAN_START();
- scan_net_interfaces();
- SCAN_END();
-}
-
-static gchar *__routing_table = NULL;
-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);
- (void)fgets(buffer, 256, route);
-
- while (fgets(buffer, 256, route)) {
- buffer[15] = '\0';
- 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),
- g_strstrip(buffer + 72),
- g_strstrip(buffer + 48),
- g_strstrip(buffer + 32));
- }
-
- pclose(route);
- }
-
- g_free(command_line);
- g_free(route_path);
- }
-
- SCAN_END();
-}
-
-static gchar *__arp_table = NULL;
-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);
-
- 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();
-}
-
-static gchar *__connections = NULL;
-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';
- buffer[43] = '\0';
- buffer[67] = '\0';
-
- if (g_str_has_prefix(buffer, "tcp") || g_str_has_prefix(buffer, "udp")) {
- __connections = h_strdup_cprintf("%s=%s|%s|%s\n",
- __connections,
- g_strstrip(buffer + 20), /* local address */
- g_strstrip(buffer), /* protocol */
- g_strstrip(buffer + 44), /* foreign address */
- 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"
- "%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);
-}
-
-gchar *callback_shares()
-{
- return g_strdup_printf("[SAMBA]\n"
- "%s\n"
- "[NFS]\n"
- "%s", smb_shares_list, nfs_shares_list);
-}
-
-gchar *callback_dns()
-{
- return g_strdup_printf("[Name servers]\n"
- "%s\n"
- "[$ShellParam$]\n"
- "ColumnTitle$TextValue=IP Address\n"
- "ColumnTitle$Value=Name\n"
- "ShowColumnHeaders=true\n", __nameservers);
-}
-
-gchar *callback_connections()
-{
- return g_strdup_printf("[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",
- __connections);
-}
-
-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);
-}
-
-gchar *callback_route()
-{
- return g_strdup_printf("[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",
- __routing_table);
-}
-
-gchar *callback_statistics()
-{
- return g_strdup_printf("%s\n"
- "[$ShellParam$]\n"
- "ReloadInterval=3000\n",
- __statistics);
-}
-
-gchar *hi_more_info(gchar * entry)
-{
- gchar *info = (gchar *) g_hash_table_lookup(moreinfo, entry);
-
- if (info)
- return g_strdup(info);
-
- return g_strdup_printf("[%s]", entry);
-}
-
-ModuleEntry *hi_module_get_entries(void)
-{
- return entries;
-}
-
-gchar *hi_module_get_name(void)
-{
- return g_strdup("Network");
-}
-
-guchar hi_module_get_weight(void)
-{
- return 160;
-}
-
-void hi_module_init(void)
-{
- moreinfo =
- g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
-}
-
-void hi_module_deinit(void)
-{
- h_hash_table_remove_all(moreinfo);
- g_hash_table_destroy(moreinfo);
-
- 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);
- g_free(__routing_table);
- g_free(__connections);
-}
-
-ModuleAbout *hi_module_get_about(void)
-{
- static ModuleAbout ma[] = {
- {
- .author = "Leandro A. F. Pereira",
- .description = "Gathers information about this computer's network connection",
- .version = VERSION,
- .license = "GNU GPL version 2"}
- };
-
- return ma;
-}
diff --git a/hardinfo2/modules/network/net.c b/hardinfo2/modules/network/net.c
deleted file mode 100644
index c470bc37..00000000
--- a/hardinfo2/modules/network/net.c
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 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
- */
-/*
- * Wireless Extension Example
- * http://www.krugle.org/examples/p-OZYzuisV6gyQIaTu/iwconfig.c
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <linux/sockios.h>
-
-#include <arpa/inet.h>
-
-#ifdef HAS_LINUX_WE
-#include <linux/if.h>
-#include <linux/wireless.h>
-#else
-#include <net/if.h>
-#endif /* HAS_LINUX_WE */
-
-#include "hardinfo.h"
-#include "network.h"
-
-gchar *network_interfaces = NULL, *network_icons = NULL;
-
-typedef struct _NetInfo NetInfo;
-struct _NetInfo {
- char name[16];
- int mtu;
- unsigned char mac[8];
- char ip[16];
- char mask[16];
- char broadcast[16];
-
-#ifdef HAS_LINUX_WE
- 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;
- gboolean is_wireless;
-#endif
-};
-
-#ifdef HAS_LINUX_WE
-const gchar *wi_operation_modes[] = { "Auto", "Ad-Hoc", "Managed", "Master", "Repeater", "Secondary", "Unknown" };
-
-void get_wireless_info(int fd, NetInfo *netinfo)
-{
- FILE *wrls;
- char wbuf[256];
- struct iwreq wi_req;
- 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 (strstr(buf1, ".")) {
- sscanf(buf1, "%d %d. %d %d %d %d %d %d %d %d",
- &(netinfo->wi_status),
- &(netinfo->wi_quality_level),
- &(netinfo->wi_signal_level),
- &(netinfo->wi_noise_level),
- &trash, &trash, &trash, &trash, &trash, &trash);
- } else {
- sscanf(buf1, "%d %d %d %d %d %d %d %d %d %d",
- &(netinfo->wi_status),
- &(netinfo->wi_quality_level),
- &(netinfo->wi_signal_level),
- &(netinfo->wi_noise_level),
- &trash, &trash, &trash, &trash, &trash,
- &trash);
- }
-
- break;
- }
- }
- fclose(wrls);
- }
-
- 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 ((r = ioctl(fd, SIOCGIWESSID, &wi_req) < 0)) {
- strcpy(netinfo->wi_essid, "");
- } else {
- netinfo->wi_essid[wi_req.u.essid.length] = '\0';
- }
-
- /* obtain bit rate */
- if ((r = ioctl(fd, SIOCGIWRATE, &wi_req) < 0)) {
- netinfo->wi_rate = 0;
- } else {
- netinfo->wi_rate = wi_req.u.bitrate.value;
- }
-
- /* obtain operation mode */
- if ((r = ioctl(fd, SIOCGIWMODE, &wi_req) < 0)) {
- netinfo->wi_mode = 0;
- } else {
- if (wi_req.u.mode >= 0 && wi_req.u.mode < 6) {
- netinfo->wi_mode = wi_req.u.mode;
- } else {
- netinfo->wi_mode = 6;
- }
- }
-
-#if WIRELESS_EXT >= 10
- /* obtain txpower */
- if ((r = 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 /* HAS_LINUX_WE */
-
-void get_net_info(char *if_name, NetInfo * netinfo)
-{
- struct ifreq ifr;
- int fd;
-
- fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
-
- /* IPv4 */
- ifr.ifr_addr.sa_family = AF_INET;
- strcpy(netinfo->name, if_name);
-
- /* MTU */
- strcpy(ifr.ifr_name, if_name);
- if (ioctl(fd, SIOCGIFMTU, &ifr) < 0) {
- netinfo->mtu = 0;
- } else {
- netinfo->mtu = ifr.ifr_mtu;
- }
-
- /* HW Address */
- strcpy(ifr.ifr_name, if_name);
- if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) {
- memset(netinfo->mac, 0, 8);
- } else {
- 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;
- } else {
- sprintf(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;
- } else {
- sprintf(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;
- } else {
- sprintf(netinfo->broadcast, "%s",
- inet_ntoa(((struct sockaddr_in *) &ifr.ifr_addr)->
- sin_addr));
- }
-
-#ifdef HAS_LINUX_WE
- get_wireless_info(fd, netinfo);
-#endif
-
- shutdown(fd, 0);
- close(fd);
-}
-
-static struct {
- char *type;
- 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" },
- { NULL, "Unknown", "network" },
-};
-
-static void net_get_iface_type(gchar * name, gchar ** type, gchar ** icon, NetInfo *ni)
-{
- int i;
-
-#ifdef HAS_LINUX_WE
- if (ni->is_wireless) {
- *type = "Wireless";
- *icon = "wireless";
-
- return;
- }
-#endif
-
- for (i = 0; netdev2type[i].type; i++) {
- if (g_str_has_prefix(name, netdev2type[i].type))
- break;
- }
-
- *type = netdev2type[i].label;
- *icon = netdev2type[i].icon;
-}
-
-static gboolean
-remove_net_devices(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, "NET");
-}
-
-static void scan_net_interfaces_24(void)
-{
- FILE *proc_net;
- NetInfo ni;
- gchar buffer[256];
- gchar *devid, *detailed;
- gdouble recv_bytes;
- gdouble recv_errors;
- gdouble recv_packets;
-
- gdouble trans_bytes;
- gdouble trans_errors;
- 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");
- }
-
- return;
- }
-
- if (network_interfaces) {
- g_free(network_interfaces);
- }
-
- if (network_icons) {
- g_free(network_icons);
- }
-
- network_interfaces = g_strdup("[Network Interfaces]\n");
- network_icons = g_strdup("");
-
- proc_net = fopen("/proc/net/dev", "r");
- if (!proc_net)
- 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);
-
-#ifdef HAS_LINUX_WE
- 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));
- } else {
- 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 / %d\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);
- }
-#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");
- }
-
- g_hash_table_insert(moreinfo, devid, detailed);
- }
- }
- fclose(proc_net);
-}
-
-void scan_net_interfaces(void)
-{
- /* FIXME: See if we're running Linux 2.6 and if /sys is mounted, then use
- that instead of /proc/net/dev */
-
- /* remove old devices from global device table */
- g_hash_table_foreach_remove(moreinfo, remove_net_devices, NULL);
-
- scan_net_interfaces_24();
-}
diff --git a/hardinfo2/modules/network/nfs.c b/hardinfo2/modules/network/nfs.c
deleted file mode 100644
index 63b2a2e6..00000000
--- a/hardinfo2/modules/network/nfs.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 <string.h>
-
-#include "hardinfo.h"
-#include "network.h"
-
-gchar *nfs_shares_list = NULL;
-
-void
-scan_nfs_shared_directories(void)
-{
- FILE *exports;
- gint count = 0;
- gchar buf[512];
-
- if (nfs_shares_list) {
- g_free(nfs_shares_list);
- }
-
- nfs_shares_list = g_strdup("");
-
- if ((exports = fopen("/etc/exports", "r"))) {
- while (fgets(buf, 512, exports)) {
- if (buf[0] != '/')
- continue;
-
- strend(buf, ' ');
- strend(buf, '\t');
-
- nfs_shares_list = h_strdup_cprintf("%s=\n",
- buf, nfs_shares_list);
- count++;
- }
-
- fclose(exports);
- }
-
- if (!count) {
- g_free(nfs_shares_list);
-
- nfs_shares_list = g_strdup("No NFS exports=\n");
- }
-}
-
diff --git a/hardinfo2/modules/network/samba.c b/hardinfo2/modules/network/samba.c
deleted file mode 100644
index 71ba6ab6..00000000
--- a/hardinfo2/modules/network/samba.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 <string.h>
-
-#include "hardinfo.h"
-#include "network.h"
-
-gchar *smb_shares_list = NULL;
-
-void scan_samba_from_string(gchar *str, gsize length);
-void scan_samba_usershares(void);
-
-void
-scan_samba(void)
-{
- gchar *str;
- gsize length;
-
- if (smb_shares_list) {
- g_free(smb_shares_list);
- smb_shares_list = g_strdup("");
- }
-
- if (g_file_get_contents("/etc/samba/smb.conf",
- &str, &length, NULL)) {
- shell_status_update("Scanning SAMBA shares...");
- scan_samba_from_string(str, length);
- g_free(str);
- }
-
- scan_samba_usershares();
-}
-
-void
-scan_samba_usershares(void)
-{
- FILE *usershare_list;
-
- if ((usershare_list = popen("net usershare list", "r"))) {
- char buffer[512];
-
- shell_status_update("Scanning SAMBA user shares...");
-
- while (fgets(buffer, 512, usershare_list)) {
- gchar *usershare, *cmdline;
- gsize length;
-
- cmdline = g_strdup_printf("net usershare info '%s'",
- strend(buffer, '\n'));
- if (g_spawn_command_line_sync(cmdline,
- &usershare, NULL,
- NULL, NULL)) {
- length = strlen(usershare);
- scan_samba_from_string(usershare, length);
- g_free(usershare);
- }
-
- g_free(cmdline);
-
- shell_status_pulse();
- }
-
- pclose(usershare_list);
- }
-}
-
-void
-scan_samba_from_string(gchar *str, gsize length)
-{
- GKeyFile *keyfile;
- GError *error = NULL;
- gchar **groups;
- gint i = 0;
-
- keyfile = g_key_file_new();
-
- gchar *_smbconf = str;
- for (; *_smbconf; _smbconf++)
- if (*_smbconf == ';') *_smbconf = '\0';
-
- if (!g_key_file_load_from_data(keyfile, str, length, 0, &error)) {
- smb_shares_list = g_strdup("Cannot parse smb.conf=\n");
- if (error)
- g_error_free(error);
- goto cleanup;
- }
-
- groups = g_key_file_get_groups(keyfile, NULL);
- while (groups[i]) {
- shell_status_pulse();
-
- if (g_key_file_has_key(keyfile, groups[i], "path", NULL)) {
- gchar *path = g_key_file_get_string(keyfile, groups[i], "path", NULL);
- smb_shares_list = h_strdup_cprintf("%s=%s\n",
- smb_shares_list,
- groups[i], path);
- g_free(path);
- }
-
- i++;
- }
-
- g_strfreev(groups);
-
- cleanup:
- g_key_file_free(keyfile);
-}
-
diff --git a/hardinfo2/pixmaps/about-modules.png b/hardinfo2/pixmaps/about-modules.png
deleted file mode 100644
index 98086442..00000000
--- a/hardinfo2/pixmaps/about-modules.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/audio.png b/hardinfo2/pixmaps/audio.png
deleted file mode 100644
index cc0d9ec5..00000000
--- a/hardinfo2/pixmaps/audio.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/battery.png b/hardinfo2/pixmaps/battery.png
deleted file mode 100644
index 172c2389..00000000
--- a/hardinfo2/pixmaps/battery.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/benchmark.png b/hardinfo2/pixmaps/benchmark.png
deleted file mode 100644
index b807f11d..00000000
--- a/hardinfo2/pixmaps/benchmark.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/blowfish.png b/hardinfo2/pixmaps/blowfish.png
deleted file mode 100644
index 54a9ba83..00000000
--- a/hardinfo2/pixmaps/blowfish.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/bluetooth.png b/hardinfo2/pixmaps/bluetooth.png
deleted file mode 100644
index 4621658b..00000000
--- a/hardinfo2/pixmaps/bluetooth.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/boot.png b/hardinfo2/pixmaps/boot.png
deleted file mode 100644
index 1151e48d..00000000
--- a/hardinfo2/pixmaps/boot.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/cdrom.png b/hardinfo2/pixmaps/cdrom.png
deleted file mode 100644
index 52a23974..00000000
--- a/hardinfo2/pixmaps/cdrom.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/close.png b/hardinfo2/pixmaps/close.png
deleted file mode 100644
index 7d702c5b..00000000
--- a/hardinfo2/pixmaps/close.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/compress.png b/hardinfo2/pixmaps/compress.png
deleted file mode 100644
index 1c4530ba..00000000
--- a/hardinfo2/pixmaps/compress.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/computer.png b/hardinfo2/pixmaps/computer.png
deleted file mode 100644
index b00cb150..00000000
--- a/hardinfo2/pixmaps/computer.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/cryptohash.png b/hardinfo2/pixmaps/cryptohash.png
deleted file mode 100644
index b62f29ed..00000000
--- a/hardinfo2/pixmaps/cryptohash.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/dev_removable.png b/hardinfo2/pixmaps/dev_removable.png
deleted file mode 100644
index d6c91e49..00000000
--- a/hardinfo2/pixmaps/dev_removable.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/devel.png b/hardinfo2/pixmaps/devel.png
deleted file mode 100644
index 8aeebd6e..00000000
--- a/hardinfo2/pixmaps/devel.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/devices.png b/hardinfo2/pixmaps/devices.png
deleted file mode 100644
index c21504c6..00000000
--- a/hardinfo2/pixmaps/devices.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/dialog-error.png b/hardinfo2/pixmaps/dialog-error.png
deleted file mode 100644
index 7d6aaf6f..00000000
--- a/hardinfo2/pixmaps/dialog-error.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/dialog-information.png b/hardinfo2/pixmaps/dialog-information.png
deleted file mode 100644
index 83b69935..00000000
--- a/hardinfo2/pixmaps/dialog-information.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/dialog-warning.png b/hardinfo2/pixmaps/dialog-warning.png
deleted file mode 100644
index d5c4be43..00000000
--- a/hardinfo2/pixmaps/dialog-warning.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/dns.png b/hardinfo2/pixmaps/dns.png
deleted file mode 100644
index 44dbb3fb..00000000
--- a/hardinfo2/pixmaps/dns.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/environment.png b/hardinfo2/pixmaps/environment.png
deleted file mode 100644
index 2f580752..00000000
--- a/hardinfo2/pixmaps/environment.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/face-grin.png b/hardinfo2/pixmaps/face-grin.png
deleted file mode 100644
index cc45e7cf..00000000
--- a/hardinfo2/pixmaps/face-grin.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/fft.png b/hardinfo2/pixmaps/fft.png
deleted file mode 100644
index ed16da14..00000000
--- a/hardinfo2/pixmaps/fft.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/hdd.png b/hardinfo2/pixmaps/hdd.png
deleted file mode 100644
index d0350343..00000000
--- a/hardinfo2/pixmaps/hdd.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/home.png b/hardinfo2/pixmaps/home.png
deleted file mode 100644
index 74a83d04..00000000
--- a/hardinfo2/pixmaps/home.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/inputdevices.png b/hardinfo2/pixmaps/inputdevices.png
deleted file mode 100644
index aea0f1d7..00000000
--- a/hardinfo2/pixmaps/inputdevices.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/internet.png b/hardinfo2/pixmaps/internet.png
deleted file mode 100644
index ca76ef6c..00000000
--- a/hardinfo2/pixmaps/internet.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/joystick.png b/hardinfo2/pixmaps/joystick.png
deleted file mode 100644
index 368b1793..00000000
--- a/hardinfo2/pixmaps/joystick.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/keyboard.png b/hardinfo2/pixmaps/keyboard.png
deleted file mode 100644
index 9d0eecf6..00000000
--- a/hardinfo2/pixmaps/keyboard.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/language.png b/hardinfo2/pixmaps/language.png
deleted file mode 100644
index 495a94bc..00000000
--- a/hardinfo2/pixmaps/language.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/logo.png b/hardinfo2/pixmaps/logo.png
deleted file mode 100644
index 9d0484a5..00000000
--- a/hardinfo2/pixmaps/logo.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/logo.xcf b/hardinfo2/pixmaps/logo.xcf
deleted file mode 100644
index e4295251..00000000
--- a/hardinfo2/pixmaps/logo.xcf
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/memory.png b/hardinfo2/pixmaps/memory.png
deleted file mode 100644
index 25ffba99..00000000
--- a/hardinfo2/pixmaps/memory.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/modem.png b/hardinfo2/pixmaps/modem.png
deleted file mode 100644
index 450e4039..00000000
--- a/hardinfo2/pixmaps/modem.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/module.png b/hardinfo2/pixmaps/module.png
deleted file mode 100644
index 7c389a20..00000000
--- a/hardinfo2/pixmaps/module.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/monitor.png b/hardinfo2/pixmaps/monitor.png
deleted file mode 100644
index fbe38d64..00000000
--- a/hardinfo2/pixmaps/monitor.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/mouse.png b/hardinfo2/pixmaps/mouse.png
deleted file mode 100644
index 8baa74dc..00000000
--- a/hardinfo2/pixmaps/mouse.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/nautilus.png b/hardinfo2/pixmaps/nautilus.png
deleted file mode 100644
index 2eac9171..00000000
--- a/hardinfo2/pixmaps/nautilus.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/network-connections.png b/hardinfo2/pixmaps/network-connections.png
deleted file mode 100644
index 0e9124a7..00000000
--- a/hardinfo2/pixmaps/network-connections.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/network-interface.png b/hardinfo2/pixmaps/network-interface.png
deleted file mode 100644
index 0a765eb4..00000000
--- a/hardinfo2/pixmaps/network-interface.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/network-statistics.png b/hardinfo2/pixmaps/network-statistics.png
deleted file mode 100644
index e9c6a8be..00000000
--- a/hardinfo2/pixmaps/network-statistics.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/network.png b/hardinfo2/pixmaps/network.png
deleted file mode 100644
index 5f95ba3e..00000000
--- a/hardinfo2/pixmaps/network.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/nqueens.png b/hardinfo2/pixmaps/nqueens.png
deleted file mode 100644
index e33e857d..00000000
--- a/hardinfo2/pixmaps/nqueens.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/os.png b/hardinfo2/pixmaps/os.png
deleted file mode 100644
index 2c07199b..00000000
--- a/hardinfo2/pixmaps/os.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/pcmcia.png b/hardinfo2/pixmaps/pcmcia.png
deleted file mode 100644
index 2baac660..00000000
--- a/hardinfo2/pixmaps/pcmcia.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/printer.png b/hardinfo2/pixmaps/printer.png
deleted file mode 100644
index 20861df9..00000000
--- a/hardinfo2/pixmaps/printer.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/processor.png b/hardinfo2/pixmaps/processor.png
deleted file mode 100644
index b5dfa01f..00000000
--- a/hardinfo2/pixmaps/processor.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/raytrace.png b/hardinfo2/pixmaps/raytrace.png
deleted file mode 100644
index 9340a293..00000000
--- a/hardinfo2/pixmaps/raytrace.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/report-large.png b/hardinfo2/pixmaps/report-large.png
deleted file mode 100644
index d2dcafba..00000000
--- a/hardinfo2/pixmaps/report-large.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/report.png b/hardinfo2/pixmaps/report.png
deleted file mode 100644
index 40d5fc8a..00000000
--- a/hardinfo2/pixmaps/report.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/resources.png b/hardinfo2/pixmaps/resources.png
deleted file mode 100644
index c23587bb..00000000
--- a/hardinfo2/pixmaps/resources.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/server-large.png b/hardinfo2/pixmaps/server-large.png
deleted file mode 100644
index 98799715..00000000
--- a/hardinfo2/pixmaps/server-large.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/server.png b/hardinfo2/pixmaps/server.png
deleted file mode 100644
index 3f7b69b7..00000000
--- a/hardinfo2/pixmaps/server.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/shares.png b/hardinfo2/pixmaps/shares.png
deleted file mode 100644
index a05befe5..00000000
--- a/hardinfo2/pixmaps/shares.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/summary.png b/hardinfo2/pixmaps/summary.png
deleted file mode 100644
index 8451f99e..00000000
--- a/hardinfo2/pixmaps/summary.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/syncmanager-small.png b/hardinfo2/pixmaps/syncmanager-small.png
deleted file mode 100644
index 2a522619..00000000
--- a/hardinfo2/pixmaps/syncmanager-small.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/syncmanager.png b/hardinfo2/pixmaps/syncmanager.png
deleted file mode 100644
index 46da6412..00000000
--- a/hardinfo2/pixmaps/syncmanager.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/therm.png b/hardinfo2/pixmaps/therm.png
deleted file mode 100644
index 8db7a2cc..00000000
--- a/hardinfo2/pixmaps/therm.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/usb.png b/hardinfo2/pixmaps/usb.png
deleted file mode 100644
index d35176a4..00000000
--- a/hardinfo2/pixmaps/usb.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/usbfldisk.png b/hardinfo2/pixmaps/usbfldisk.png
deleted file mode 100644
index c6a2d0c6..00000000
--- a/hardinfo2/pixmaps/usbfldisk.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/users.png b/hardinfo2/pixmaps/users.png
deleted file mode 100644
index bf3cabb1..00000000
--- a/hardinfo2/pixmaps/users.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/pixmaps/wireless.png b/hardinfo2/pixmaps/wireless.png
deleted file mode 100644
index c5a5bf92..00000000
--- a/hardinfo2/pixmaps/wireless.png
+++ /dev/null
Binary files differ
diff --git a/hardinfo2/remote/remote.c b/hardinfo2/remote/remote.c
deleted file mode 100644
index d266735d..00000000
--- a/hardinfo2/remote/remote.c
+++ /dev/null
@@ -1,1307 +0,0 @@
-/*
- * Remote Client
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 <stdio.h>
-#include <string.h>
-
-#include "config.h"
-
-#ifdef HAS_LIBSOUP
-
-#include "shell.h"
-#include "callbacks.h"
-#include "iconcache.h"
-#include "hardinfo.h"
-#include "xmlrpc-client.h"
-#include "ssh-conn.h"
-
-#define XMLRPC_SERVER_VERSION 1
-
-/*
- * TODO
- *
- * - Add hi_deinit() to modules (so they can free up their memory)
- * - Import / Export host list
- * - Detect machines on local network that runs SSH
- * - IP range scan
- * - mDNS
- * - Allow the user to add/remove/edit a machine
- * - Use ~/.ssh/known_hosts as a starting point?
- * - Different icons for different machines?
- * - Make sure SSH can do port forwarding
- * - Make sure the remote host has HardInfo installed
- * - Generate a random username/password to be passed to the XML-RPC server; use
- * that username/password on the client; this is just to make sure nobody on the
- * machine will be allowed to obtain information that might be sensitive. This
- * will be passed with base64, so it can be sniffed; this needs root access anyway,
- * so not really a problem.
- * - Determine if we're gonna use GIOChannels or create a communication thread
- * - Introduce a flag on the modules, stating their ability to be used locally/remotely
- * (Benchmarks can't be used remotely; Displays won't work remotely [unless we use
- * X forwarding, but that'll be local X11 info anyway]).
- */
-
-typedef struct _HostManager HostManager;
-typedef struct _HostDialog HostDialog;
-
-typedef enum {
- HOST_DIALOG_MODE_EDIT,
- HOST_DIALOG_MODE_CONNECT
-} HostDialogMode;
-
-struct _HostManager {
- GtkWidget *dialog;
- GtkWidget *btn_connect, *btn_cancel;
- GtkWidget *btn_add, *btn_edit, *btn_remove;
-
- GtkListStore *tree_store;
-
- gint selected_id;
- gchar *selected_name;
- GtkTreeIter *selected_iter;
-};
-
-struct _HostDialog {
- GtkWidget *dialog;
- GtkWidget *notebook;
-
- GtkWidget *txt_hostname, *txt_port;
- GtkWidget *txt_ssh_user, *txt_ssh_password;
-
- GtkWidget *cmb_type;
-
- GtkWidget *frm_options;
- GtkWidget *btn_accept, *btn_cancel;
-};
-
-static HostManager *host_manager_new(GtkWidget * parent);
-static void host_manager_destroy(HostManager * rd);
-static HostDialog *host_dialog_new(GtkWidget * parent,
- gchar * title, HostDialogMode mode);
-static void host_dialog_destroy(HostDialog * hd);
-
-
-static gchar *xmlrpc_server_uri = NULL;
-static SSHConn *ssh_conn = NULL;
-
-void remote_disconnect_all(gboolean ssh)
-{
- if (ssh && ssh_conn) {
- ssh_close(ssh_conn);
- ssh_conn = NULL;
- }
-
- if (xmlrpc_server_uri) {
- g_free(xmlrpc_server_uri);
- xmlrpc_server_uri = NULL;
- }
-}
-
-static void remote_connection_error(void)
-{
- GtkWidget *dialog;
- static gboolean showing_error = FALSE;
-
- if (showing_error || !xmlrpc_server_uri) {
- return;
- }
-
- showing_error = TRUE;
-
- dialog = gtk_message_dialog_new(NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_NONE,
- "Connection to %s was lost.", xmlrpc_server_uri);
-
- gtk_dialog_add_buttons(GTK_DIALOG(dialog),
- GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
-
- if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
- remote_disconnect_all(ssh_conn != NULL);
- cb_local_computer();
- }
-
- gtk_widget_destroy(dialog);
-
- showing_error = FALSE;
-}
-
-static gboolean remote_version_is_supported(void)
-{
- gint remote_ver;
- GtkWidget *dialog;
-
- shell_status_update("Obtaining remote server API version...");
- remote_ver =
- xmlrpc_get_integer(xmlrpc_server_uri,
- "server.getAPIVersion", NULL);
-
- switch (remote_ver) {
- case -1:
- dialog = gtk_message_dialog_new(NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_NONE,
- "Remote host didn't respond. Try again?");
-
- gtk_dialog_add_buttons(GTK_DIALOG(dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
- "Try again", GTK_RESPONSE_ACCEPT, NULL);
-
- if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
- gtk_widget_destroy(dialog);
- return remote_version_is_supported();
- }
-
- gtk_widget_destroy(dialog);
- break;
- case XMLRPC_SERVER_VERSION:
- return TRUE;
- default:
- dialog = gtk_message_dialog_new(NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "Remote Host has an unsupported "
- "API version (%d). Expected "
- "version is %d.",
- remote_ver, XMLRPC_SERVER_VERSION);
-
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- }
-
- return FALSE;
-}
-
-static gchar *remote_module_entry_func()
-{
- Shell *shell = shell_get_main_shell();
- gchar *ret;
-
- ret =
- xmlrpc_get_string(xmlrpc_server_uri,
- "module.entryFunction", "%s%i",
- shell->selected_module->name,
- shell->selected->number);
-
- if (!ret) {
- ret = g_strdup("");
- }
-
- return ret;
-}
-
-static void remote_module_entry_scan_func(gboolean reload)
-{
- Shell *shell = shell_get_main_shell();
-
- if (reload) {
- xmlrpc_get_string(xmlrpc_server_uri,
- "module.entryReload", "%s%i",
- shell->selected_module->name,
- shell->selected->number);
- } else {
- xmlrpc_get_string(xmlrpc_server_uri,
- "module.entryScan", "%s%i",
- shell->selected_module->name,
- shell->selected->number);
- }
-}
-
-static gchar *remote_module_entry_field_func(gchar * entry)
-{
- Shell *shell = shell_get_main_shell();
- gchar *ret;
-
- ret =
- xmlrpc_get_string(xmlrpc_server_uri,
- "module.entryGetField", "%s%i%s",
- shell->selected_module->name,
- shell->selected->number, entry);
-
- if (!ret) {
- remote_connection_error();
- }
-
- return ret;
-}
-
-static gchar *remote_module_entry_more_func(gchar * entry)
-{
- Shell *shell = shell_get_main_shell();
- gchar *ret;
-
- ret =
- xmlrpc_get_string(xmlrpc_server_uri,
- "module.entryGetMoreInfo", "%s%i%s",
- shell->selected_module->name,
- shell->selected->number, entry);
-
- if (!ret) {
- remote_connection_error();
- }
-
- return ret;
-}
-
-static gchar *remote_module_entry_note_func(gint entry)
-{
- Shell *shell = shell_get_main_shell();
- gchar *note;
-
- note =
- xmlrpc_get_string(xmlrpc_server_uri,
- "module.entryGetNote", "%s%i",
- shell->selected_module->name,
- shell->selected->number);
-
- if (note && *note == '\0') {
- g_free(note);
- return NULL;
- }
-
- return note;
-}
-
-static ModuleAbout *remote_module_get_about()
-{
- return NULL;
-}
-
-static gboolean load_module_list()
-{
- Shell *shell;
- GValueArray *modules;
- int i = 0;
-
- shell_status_update("Unloading local modules...");
- module_unload_all();
-
- shell_status_update("Obtaining remote server module list...");
- modules =
- xmlrpc_get_array(xmlrpc_server_uri, "module.getModuleList", NULL);
- if (!modules) {
- return FALSE;
- }
-
- shell = shell_get_main_shell();
-
- for (; i < modules->n_values; i++) {
- ShellModule *m;
- ShellModuleEntry *e;
- GValueArray *entries, *module;
- int j = 0;
-
- module = g_value_get_boxed(&modules->values[i]);
-
- m = g_new0(ShellModule, 1);
- m->name = g_strdup(g_value_get_string(&module->values[0]));
- m->icon =
- icon_cache_get_pixbuf(g_value_get_string(&module->values[1]));
- m->aboutfunc = (gpointer) remote_module_get_about;
-
- shell_status_pulse();
- entries = xmlrpc_get_array(xmlrpc_server_uri,
- "module.getEntryList", "%s", m->name);
- if (entries && entries->n_values > 0) {
- for (; j < entries->n_values; j++) {
- GValueArray *tuple =
- g_value_get_boxed(&entries->values[j]);
-
- e = g_new0(ShellModuleEntry, 1);
- e->name = g_strdup(g_value_get_string(&tuple->values[0]));
- e->icon =
- icon_cache_get_pixbuf(g_value_get_string
- (&tuple->values[1]));
- e->icon_file =
- g_strdup(g_value_get_string(&tuple->values[1]));
- e->number = j;
-
- e->func = remote_module_entry_func;
- e->scan_func = remote_module_entry_scan_func;
- e->fieldfunc = remote_module_entry_field_func;
- e->morefunc = remote_module_entry_more_func;
- e->notefunc = remote_module_entry_note_func;
-
- m->entries = g_slist_append(m->entries, e);
-
- shell_status_pulse();
- }
-
- g_value_array_free(entries);
-
- shell->tree->modules = g_slist_append(shell->tree->modules, m);
- } else {
- g_free(m->name);
- g_free(m);
- }
- }
-
- g_slist_foreach(shell->tree->modules, shell_add_modules_to_gui,
- shell->tree);
- gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->tree->view));
-
- g_value_array_free(modules);
-
- return TRUE;
-}
-
-static gboolean remote_connect_direct(gchar * hostname, gint port)
-{
- gboolean retval = FALSE;
-
- remote_disconnect_all(FALSE);
-
- xmlrpc_init();
- xmlrpc_server_uri =
- g_strdup_printf("http://%s:%d/xmlrpc", hostname, port);
-
- shell_view_set_enabled(FALSE);
-
- if (remote_version_is_supported()) {
- if (!load_module_list()) {
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new(NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "Cannot obtain module list from server.");
-
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- } else {
- retval = TRUE;
- }
- }
-
- shell_status_update("Done.");
- shell_view_set_enabled(TRUE);
-
- return retval;
-}
-
-static gboolean remote_connect_ssh(gchar * hostname,
- gint port,
- gchar * username, gchar * password)
-{
- GtkWidget *dialog;
- SSHConnResponse ssh_response;
- SoupURI *uri;
- gchar *struri;
- char buffer[32];
- gboolean error = FALSE;
-
- remote_disconnect_all(TRUE);
-
- shell_view_set_enabled(FALSE);
- shell_status_update("Establishing SSH tunnel...");
- struri = g_strdup_printf("ssh://%s:%s@%s:%d/?L4343:localhost:4242",
- username, password, hostname, port);
- uri = soup_uri_new(struri);
- ssh_response = ssh_new(uri, &ssh_conn, "hardinfo -x");
-
- if (ssh_response != SSH_CONN_OK) {
- error = TRUE;
- ssh_close(ssh_conn);
- } else {
- gint res;
- gint bytes_read;
-
- memset(buffer, 0, sizeof(buffer));
- res =
- ssh_read(ssh_conn->fd_read, buffer, sizeof(buffer),
- &bytes_read);
- if (bytes_read != 0 && res == 1) {
- if (strncmp(buffer, "XML-RPC server ready", 20) == 0) {
- DEBUG("%s", buffer);
-
- if (remote_connect_direct("127.0.0.1", 4343)) {
- DEBUG("connected! :)");
- goto out;
- }
-
- DEBUG("unknown error while trying to connect... wtf?");
- }
-
- /* TODO FIXME Perhaps the server is already running; try to fix */
- DEBUG("hardinfo already running there?");
- }
-
- error = TRUE;
- }
-
- out:
- if (error) {
- dialog = gtk_message_dialog_new_with_markup(NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "<b><big>Cannot establish tunnel.</big></b>\n"
- "<i>%s</i>\n\n"
- "Please verify that:\n"
- "\342\200\242 The hostname <b>%s</b> is correct;\n"
- "\342\200\242 There is a SSH server running on port <b>%d</b>;\n"
- "\342\200\242 Your username/password combination is correct.",
- ssh_response ==
- SSH_CONN_OK ? "" :
- ssh_conn_errors
- [ssh_response],
- hostname, port);
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
-
- ssh_close(ssh_conn);
- ssh_conn = NULL;
- }
-
- soup_uri_free(uri);
- g_free(struri);
- shell_view_set_enabled(TRUE);
- shell_status_update("Done.");
-
- return !error;
-}
-
-gboolean remote_connect_host(gchar * hostname)
-{
- Shell *shell = shell_get_main_shell();
- gboolean retval = FALSE;
-
- if (!g_key_file_has_group(shell->hosts, hostname)) {
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new(NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "Internal error.");
-
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- } else {
- const gint port =
- g_key_file_get_integer(shell->hosts, hostname, "port", NULL);
- gchar *type =
- g_key_file_get_string(shell->hosts, hostname, "type", NULL);
-
- if (g_str_equal(type, "ssh")) {
- gchar *username =
- g_key_file_get_string(shell->hosts, hostname, "username",
- NULL);
- gchar *password =
- g_key_file_get_string(shell->hosts, hostname, "password",
- NULL);
-
- retval =
- remote_connect_ssh(hostname, port, username, password);
-
- g_free(username);
- g_free(password);
- } else {
- retval = remote_connect_direct(hostname, port);
- }
-
- g_free(type);
- }
-
- return retval;
-}
-
-void connect_dialog_show(GtkWidget * parent)
-{
- HostDialog *he =
- host_dialog_new(parent, "Connect to", HOST_DIALOG_MODE_CONNECT);
-
- if (gtk_dialog_run(GTK_DIALOG(he->dialog)) == GTK_RESPONSE_ACCEPT) {
- gboolean connected;
- gchar *hostname =
- (gchar *) gtk_entry_get_text(GTK_ENTRY(he->txt_hostname));
- const gint selected_type =
- gtk_combo_box_get_active(GTK_COMBO_BOX(he->cmb_type));
- const gint port =
- (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(he->txt_port));
-
- gtk_widget_set_sensitive(he->dialog, FALSE);
-
- if (selected_type == 1) {
- gchar *username =
- (gchar *) gtk_entry_get_text(GTK_ENTRY(he->txt_ssh_user));
- gchar *password =
- (gchar *)
- gtk_entry_get_text(GTK_ENTRY(he->txt_ssh_password));
-
- connected =
- remote_connect_ssh(hostname, port, username, password);
- } else {
- connected = remote_connect_direct(hostname, port);
- }
-
- if (connected) {
- Shell *shell = shell_get_main_shell();
- gchar *tmp;
-
- tmp = g_strdup_printf("Remote: <b>%s</b>", hostname);
- shell_set_remote_label(shell, tmp);
-
- g_free(tmp);
- } else {
- cb_local_computer();
- }
- }
-
- host_dialog_destroy(he);
-}
-
-void host_manager_show(GtkWidget * parent)
-{
- HostManager *rd = host_manager_new(parent);
-
- gtk_dialog_run(GTK_DIALOG(rd->dialog));
-
- host_manager_destroy(rd);
-}
-
-static void populate_store(HostManager * rd, GtkListStore * store)
-{
- Shell *shell;
- GtkTreeIter iter;
- gchar **hosts;
- gint i;
- gsize no_groups;
-
- gtk_list_store_clear(store);
- shell = shell_get_main_shell();
-
- hosts = g_key_file_get_groups(shell->hosts, &no_groups);
- DEBUG("%d hosts found", no_groups);
- for (i = 0; i < no_groups; i++) {
- gchar *icon;
-
- DEBUG("host #%d: %s", i, hosts[i]);
-
- icon = g_key_file_get_string(shell->hosts, hosts[i], "icon", NULL);
-
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter,
- 0,
- icon_cache_get_pixbuf(icon ? icon :
- "server.png"), 1,
- g_strdup(hosts[i]), 2, GINT_TO_POINTER(i), -1);
-
- g_free(icon);
- }
-
- g_strfreev(hosts);
-}
-
-static GtkTreeModel *host_dialog_get_completion_model(void)
-{
- Shell *shell;
- GtkListStore *store;
- GtkTreeIter iter;
- gchar **groups;
- gint i = 0;
-
- shell = shell_get_main_shell();
-
- store = gtk_list_store_new(1, G_TYPE_STRING);
- for (groups = g_key_file_get_groups(shell->hosts, NULL); groups[i];
- i++) {
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter, 0, g_strdup(groups[i]), -1);
- }
- g_strfreev(groups);
-
- return GTK_TREE_MODEL(store);
-}
-
-static void host_combo_changed_cb(GtkComboBox * widget, gpointer user_data)
-{
- HostDialog *host_dlg = (HostDialog *) user_data;
- const gint default_ports[] = { 4242, 22 };
- gint index;
-
- index = gtk_combo_box_get_active(widget);
-
- gtk_notebook_set_current_page(GTK_NOTEBOOK(host_dlg->notebook), index);
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(host_dlg->txt_port),
- default_ports[index]);
-
- if (index == 0) {
- gtk_widget_hide(host_dlg->frm_options);
- } else {
- gtk_widget_show(host_dlg->frm_options);
- }
-}
-
-static void
-host_dialog_hostname_changed (GtkEditable *entry, gpointer user_data)
-{
- HostDialog *host_dlg = (HostDialog *)user_data;
- GRegex *regex_ip = NULL, *regex_host = NULL;
- gboolean match;
- const gchar *text = gtk_entry_get_text(GTK_ENTRY(entry));
-
- /*
- * Regexes from:
- * http://stackoverflow.com/questions/106179
- */
- const gchar *valid_ip_regex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|" \
- "25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}" \
- "|2[0-4][0-9]|25[0-5])$";
- const gchar *valid_hostname_regex = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9" \
- "\\-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Z" \
- "a-z][A-Za-z0-9\\-]*[A-Za-z0-9])$";
- if (regex_ip == NULL) {
- regex_ip = g_regex_new(valid_ip_regex, 0, 0, NULL);
- }
-
- if (regex_host == NULL) {
- regex_host = g_regex_new(valid_hostname_regex, 0, 0, NULL);
- }
-
- match = g_regex_match(regex_ip, text, 0, NULL);
- if (!match) {
- match = g_regex_match(regex_host, text, 0, NULL);
- }
-
- gtk_widget_set_sensitive(host_dlg->btn_accept, match);
-}
-
-static void host_dialog_destroy(HostDialog * rd)
-{
- gtk_widget_destroy(rd->dialog);
- g_free(rd);
-}
-
-static HostDialog *host_dialog_new(GtkWidget * parent,
- gchar * title, HostDialogMode mode)
-{
- HostDialog *host_dlg;
- GtkWidget *dialog;
- GtkWidget *dialog_vbox1;
- GtkWidget *vbox1;
- GtkWidget *frm_remote_host;
- GtkWidget *alignment1;
- GtkWidget *table1;
- GtkWidget *label2;
- GtkWidget *label3;
- GtkWidget *label4;
- GtkWidget *cmb_type;
- GtkWidget *txt_hostname;
- GtkWidget *alignment2;
- GtkWidget *hbox1;
- GtkObject *txt_port_adj;
- GtkWidget *txt_port;
- GtkWidget *label1;
- GtkWidget *frm_options;
- GtkWidget *alignment3;
- GtkWidget *notebook;
- GtkWidget *table2;
- GtkWidget *label8;
- GtkWidget *label9;
- GtkWidget *txt_ssh_user;
- GtkWidget *txt_ssh_password;
- GtkWidget *label10;
- GtkWidget *label5;
- GtkWidget *dialog_action_area1;
- GtkWidget *btn_cancel;
- GtkWidget *btn_save;
- GtkEntryCompletion *completion;
- GtkTreeModel *completion_model;
-
- dialog = gtk_dialog_new();
- gtk_window_set_title(GTK_WINDOW(dialog), title);
- gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent));
- gtk_window_set_position(GTK_WINDOW(dialog),
- GTK_WIN_POS_CENTER_ON_PARENT);
- gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
- gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
- gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE);
- gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), TRUE);
- gtk_window_set_type_hint(GTK_WINDOW(dialog),
- GDK_WINDOW_TYPE_HINT_DIALOG);
- gtk_window_set_gravity(GTK_WINDOW(dialog), GDK_GRAVITY_CENTER);
-
- dialog_vbox1 = GTK_DIALOG(dialog)->vbox;
- gtk_widget_show(dialog_vbox1);
-
- vbox1 = gtk_vbox_new(FALSE, 3);
- gtk_widget_show(vbox1);
- gtk_box_pack_start(GTK_BOX(dialog_vbox1), vbox1, TRUE, TRUE, 0);
- gtk_container_set_border_width(GTK_CONTAINER(vbox1), 5);
- gtk_box_set_spacing(GTK_BOX(vbox1), 10);
-
- frm_remote_host = gtk_frame_new(NULL);
- gtk_widget_show(frm_remote_host);
- gtk_box_pack_start(GTK_BOX(vbox1), frm_remote_host, FALSE, TRUE, 0);
- gtk_frame_set_shadow_type(GTK_FRAME(frm_remote_host), GTK_SHADOW_NONE);
-
- alignment1 = gtk_alignment_new(0.5, 0.5, 1, 1);
- gtk_widget_show(alignment1);
- gtk_container_add(GTK_CONTAINER(frm_remote_host), alignment1);
- gtk_alignment_set_padding(GTK_ALIGNMENT(alignment1), 0, 0, 12, 0);
-
- table1 = gtk_table_new(3, 2, FALSE);
- gtk_widget_show(table1);
- gtk_container_add(GTK_CONTAINER(alignment1), table1);
- gtk_table_set_row_spacings(GTK_TABLE(table1), 4);
- gtk_table_set_col_spacings(GTK_TABLE(table1), 4);
-
- label2 = gtk_label_new("Protocol:");
- gtk_widget_show(label2);
- gtk_table_attach(GTK_TABLE(table1), label2, 0, 1, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
-
- label3 = gtk_label_new("Host:");
- gtk_widget_show(label3);
- gtk_table_attach(GTK_TABLE(table1), label3, 0, 1, 1, 2,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
-
- label4 = gtk_label_new("Port:");
- gtk_widget_show(label4);
- gtk_table_attach(GTK_TABLE(table1), label4, 0, 1, 2, 3,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label4), 0, 0.5);
-
- cmb_type = gtk_combo_box_new_text();
- gtk_widget_show(cmb_type);
- gtk_table_attach(GTK_TABLE(table1), cmb_type, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions) (GTK_FILL), 0, 0);
- gtk_combo_box_append_text(GTK_COMBO_BOX(cmb_type),
- "Direct connection");
- gtk_combo_box_append_text(GTK_COMBO_BOX(cmb_type),
- "Remote tunnel over SSH");
-
- txt_hostname = gtk_entry_new();
- gtk_widget_show(txt_hostname);
- gtk_table_attach(GTK_TABLE(table1), txt_hostname, 1, 2, 1, 2,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (GTK_FILL), 0, 0);
-
- alignment2 = gtk_alignment_new(0.5, 0.5, 1, 1);
- gtk_widget_show(alignment2);
- gtk_table_attach(GTK_TABLE(table1), alignment2, 1, 2, 2, 3,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (GTK_FILL), 0, 0);
-
- hbox1 = gtk_hbox_new(FALSE, 0);
- gtk_widget_show(hbox1);
- gtk_container_add(GTK_CONTAINER(alignment2), hbox1);
-
- txt_port_adj = gtk_adjustment_new(4242, 1, 65535, 1, 10, 0);
- txt_port = gtk_spin_button_new(GTK_ADJUSTMENT(txt_port_adj), 1, 0);
- gtk_widget_show(txt_port);
- gtk_box_pack_start(GTK_BOX(hbox1), txt_port, FALSE, TRUE, 0);
-
- label1 = gtk_label_new("<b>Remote host</b>");
- gtk_widget_show(label1);
- gtk_frame_set_label_widget(GTK_FRAME(frm_remote_host), label1);
- gtk_label_set_use_markup(GTK_LABEL(label1), TRUE);
-
- frm_options = gtk_frame_new(NULL);
- gtk_widget_show(frm_options);
- gtk_box_pack_start(GTK_BOX(vbox1), frm_options, FALSE, TRUE, 0);
- gtk_frame_set_shadow_type(GTK_FRAME(frm_options), GTK_SHADOW_NONE);
-
- alignment3 = gtk_alignment_new(0.5, 0.5, 1, 1);
- gtk_widget_show(alignment3);
- gtk_container_add(GTK_CONTAINER(frm_options), alignment3);
- gtk_alignment_set_padding(GTK_ALIGNMENT(alignment3), 0, 0, 12, 0);
-
- notebook = gtk_notebook_new();
- gtk_widget_show(notebook);
- gtk_container_add(GTK_CONTAINER(alignment3), notebook);
- GTK_WIDGET_UNSET_FLAGS(notebook, GTK_CAN_FOCUS);
- gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), FALSE);
- gtk_notebook_set_show_border(GTK_NOTEBOOK(notebook), FALSE);
-
- label10 = gtk_label_new("");
- gtk_widget_show(label10);
- gtk_container_add(GTK_CONTAINER(notebook), label10);
- gtk_label_set_use_markup(GTK_LABEL(label10), TRUE);
-
- table2 = gtk_table_new(2, 2, FALSE);
- gtk_widget_show(table2);
- gtk_container_add(GTK_CONTAINER(notebook), table2);
- gtk_table_set_row_spacings(GTK_TABLE(table2), 4);
- gtk_table_set_col_spacings(GTK_TABLE(table2), 4);
-
- label8 = gtk_label_new("User:");
- gtk_widget_show(label8);
- gtk_table_attach(GTK_TABLE(table2), label8, 0, 1, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label8), 0, 0.5);
-
- label9 = gtk_label_new("Password:");
- gtk_widget_show(label9);
- gtk_table_attach(GTK_TABLE(table2), label9, 0, 1, 1, 2,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_misc_set_alignment(GTK_MISC(label9), 0, 0.5);
-
- txt_ssh_user = gtk_entry_new();
- gtk_widget_show(txt_ssh_user);
- gtk_table_attach(GTK_TABLE(table2), txt_ssh_user, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
-
- txt_ssh_password = gtk_entry_new();
- gtk_widget_show(txt_ssh_password);
- gtk_table_attach(GTK_TABLE(table2), txt_ssh_password, 1, 2, 1, 2,
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_entry_set_invisible_char(GTK_ENTRY(txt_ssh_password), 9679);
- gtk_entry_set_visibility(GTK_ENTRY(txt_ssh_password), FALSE);
-
- label5 = gtk_label_new("<b>Connection options</b>");
- gtk_widget_show(label5);
- gtk_frame_set_label_widget(GTK_FRAME(frm_options), label5);
- gtk_label_set_use_markup(GTK_LABEL(label5), TRUE);
-
- dialog_action_area1 = GTK_DIALOG(dialog)->action_area;
- gtk_widget_show(dialog_action_area1);
- gtk_button_box_set_layout(GTK_BUTTON_BOX(dialog_action_area1),
- GTK_BUTTONBOX_END);
-
- btn_cancel = gtk_button_new_from_stock("gtk-cancel");
- gtk_widget_show(btn_cancel);
- gtk_dialog_add_action_widget(GTK_DIALOG(dialog), btn_cancel,
- GTK_RESPONSE_CANCEL);
- GTK_WIDGET_SET_FLAGS(btn_cancel, GTK_CAN_DEFAULT);
-
- if (mode == HOST_DIALOG_MODE_EDIT) {
- btn_save = gtk_button_new_from_stock(GTK_STOCK_SAVE);
- } else if (mode == HOST_DIALOG_MODE_CONNECT) {
- btn_save = gtk_button_new_from_stock(GTK_STOCK_CONNECT);
- }
-
- gtk_widget_show(btn_save);
- gtk_dialog_add_action_widget(GTK_DIALOG(dialog), btn_save,
- GTK_RESPONSE_ACCEPT);
- GTK_WIDGET_SET_FLAGS(btn_save, GTK_CAN_DEFAULT);
-
- host_dlg = g_new0(HostDialog, 1);
- host_dlg->dialog = dialog;
- host_dlg->notebook = notebook;
- host_dlg->txt_hostname = txt_hostname;
- host_dlg->txt_port = txt_port;
- host_dlg->txt_ssh_user = txt_ssh_user;
- host_dlg->txt_ssh_password = txt_ssh_password;
- host_dlg->cmb_type = cmb_type;
- host_dlg->frm_options = frm_options;
- host_dlg->btn_accept = btn_save;
- host_dlg->btn_cancel = btn_cancel;
-
- completion = gtk_entry_completion_new();
- gtk_entry_set_completion(GTK_ENTRY(host_dlg->txt_hostname), completion);
- g_object_unref(completion);
-
- completion_model = host_dialog_get_completion_model();
- gtk_entry_completion_set_model(completion, completion_model);
- g_object_unref(completion_model);
-
- gtk_entry_completion_set_text_column(completion, 0);
-
- gtk_combo_box_set_active(GTK_COMBO_BOX(host_dlg->cmb_type), 0);
-
- g_signal_connect(G_OBJECT(txt_hostname), "changed",
- G_CALLBACK(host_dialog_hostname_changed), host_dlg);
- g_signal_connect(G_OBJECT(cmb_type), "changed",
- G_CALLBACK(host_combo_changed_cb), host_dlg);
-
- host_combo_changed_cb(GTK_COMBO_BOX(cmb_type), host_dlg);
- host_dialog_hostname_changed(GTK_EDITABLE(txt_hostname), host_dlg);
-
- gtk_entry_set_activates_default(GTK_ENTRY(txt_hostname), TRUE);
-
- return host_dlg;
-}
-
-static void host_manager_add(GtkWidget * button, gpointer data)
-{
- Shell *shell = shell_get_main_shell();
- HostManager *rd = (HostManager *) data;
- HostDialog *he =
- host_dialog_new(rd->dialog, "Add a host", HOST_DIALOG_MODE_EDIT);
-
- retry:
- if (gtk_dialog_run(GTK_DIALOG(he->dialog)) == GTK_RESPONSE_ACCEPT) {
- const gchar *hostname =
- gtk_entry_get_text(GTK_ENTRY(he->txt_hostname));
-
- if (g_key_file_has_group(shell->hosts, hostname)) {
- GtkWidget *dialog;
-
- dialog =
- gtk_message_dialog_new_with_markup(GTK_WINDOW(rd->dialog),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "Hostname <b>%s</b> already exists.",
- hostname);
-
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
-
- goto retry;
- } else {
- GtkTreeIter iter;
- const gchar *type[] = { "direct", "ssh" };
- const gint selected_type =
- gtk_combo_box_get_active(GTK_COMBO_BOX(he->cmb_type));
- const gint port =
- (int)
- gtk_spin_button_get_value(GTK_SPIN_BUTTON(he->txt_port));
-
- g_key_file_set_string(shell->hosts, hostname, "type",
- type[selected_type]);
- g_key_file_set_integer(shell->hosts, hostname, "port", port);
-
- if (selected_type == 1) {
- const gchar *username =
- gtk_entry_get_text(GTK_ENTRY(he->txt_ssh_user));
- const gchar *password =
- gtk_entry_get_text(GTK_ENTRY(he->txt_ssh_password));
-
- g_key_file_set_string(shell->hosts, hostname, "username",
- username);
- g_key_file_set_string(shell->hosts, hostname, "password",
- password);
- }
-
- gtk_list_store_append(rd->tree_store, &iter);
- gtk_list_store_set(rd->tree_store, &iter,
- 0, icon_cache_get_pixbuf("server.png"),
- 1, g_strdup(hostname), 2, 0, -1);
- }
- }
-
- host_dialog_destroy(he);
-}
-
-static void host_manager_edit(GtkWidget * button, gpointer data)
-{
- Shell *shell = shell_get_main_shell();
- GtkWidget *dialog;
- HostManager *rd = (HostManager *) data;
- HostDialog *he =
- host_dialog_new(rd->dialog, "Edit a host", HOST_DIALOG_MODE_EDIT);
- gchar *host_type;
- gchar *previous_hostname;
- gint host_port;
-
- host_type =
- g_key_file_get_string(shell->hosts, rd->selected_name, "type",
- NULL);
- if (!host_type || g_str_equal(host_type, "direct")) {
- gtk_combo_box_set_active(GTK_COMBO_BOX(he->cmb_type), 0);
- } else if (g_str_equal(host_type, "ssh")) {
- gchar *username, *password;
-
- gtk_combo_box_set_active(GTK_COMBO_BOX(he->cmb_type), 1);
-
- username =
- g_key_file_get_string(shell->hosts, rd->selected_name,
- "username", NULL);
- if (username) {
- gtk_entry_set_text(GTK_ENTRY(he->txt_ssh_user), username);
- g_free(username);
- }
-
- password =
- g_key_file_get_string(shell->hosts, rd->selected_name,
- "password", NULL);
- if (password) {
- gtk_entry_set_text(GTK_ENTRY(he->txt_ssh_password), password);
- g_free(password);
- }
- } else {
- dialog = gtk_message_dialog_new(GTK_WINDOW(rd->dialog),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "Host has invalid type(%s).",
- host_type);
-
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
-
- goto bad;
- }
-
- gtk_entry_set_text(GTK_ENTRY(he->txt_hostname), rd->selected_name);
- previous_hostname = rd->selected_name;
-
- host_port =
- g_key_file_get_integer(shell->hosts, rd->selected_name, "port",
- NULL);
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(he->txt_port),
- host_port ? host_port : 4242);
-
- if (gtk_dialog_run(GTK_DIALOG(he->dialog)) == GTK_RESPONSE_ACCEPT) {
- const gchar *type[] = { "direct", "ssh" };
- const gint selected_type =
- gtk_combo_box_get_active(GTK_COMBO_BOX(he->cmb_type));
- const gint port =
- (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(he->txt_port));
- const gchar *hostname =
- gtk_entry_get_text(GTK_ENTRY(he->txt_hostname));
-
- if (!g_str_equal(previous_hostname, he->txt_hostname)) {
- g_key_file_remove_group(shell->hosts, previous_hostname, NULL);
- gtk_list_store_set(rd->tree_store, rd->selected_iter,
- 1, g_strdup(hostname), -1);
- }
-
- g_key_file_set_string(shell->hosts, hostname, "type",
- type[selected_type]);
- g_key_file_set_integer(shell->hosts, hostname, "port", port);
-
- if (selected_type == 1) {
- const gchar *username =
- gtk_entry_get_text(GTK_ENTRY(he->txt_ssh_user));
- const gchar *password =
- gtk_entry_get_text(GTK_ENTRY(he->txt_ssh_password));
-
- g_key_file_set_string(shell->hosts, hostname, "username",
- username);
- g_key_file_set_string(shell->hosts, hostname, "password",
- password);
- }
- }
-
- bad:
- host_dialog_destroy(he);
- g_free(host_type);
-}
-
-static void host_manager_remove(GtkWidget * button, gpointer data)
-{
- Shell *shell = shell_get_main_shell();
- HostManager *rd = (HostManager *) data;
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(rd->dialog),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_NONE,
- "Remove the host <b>%s</b>?",
- rd->selected_name);
-
- gtk_dialog_add_buttons(GTK_DIALOG(dialog),
- GTK_STOCK_NO, GTK_RESPONSE_REJECT,
- GTK_STOCK_DELETE, GTK_RESPONSE_ACCEPT, NULL);
-
- if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
- g_key_file_remove_group(shell->hosts, rd->selected_name, NULL);
- gtk_list_store_remove(rd->tree_store, rd->selected_iter);
-
- gtk_widget_set_sensitive(rd->btn_edit, FALSE);
- gtk_widget_set_sensitive(rd->btn_remove, FALSE);
- }
-
- gtk_widget_destroy(dialog);
-}
-
-static void host_manager_tree_sel_changed(GtkTreeSelection * sel,
- gpointer data)
-{
- HostManager *rd = (HostManager *) data;
- GtkTreeModel *model;
- GtkTreeIter iter;
-
- if (gtk_tree_selection_get_selected(sel, &model, &iter)) {
- gchar *name;
- gint id;
-
- gtk_tree_model_get(model, &iter, 1, &name, 2, &id, -1);
-
- if (id != -1) {
- gtk_widget_set_sensitive(GTK_WIDGET(rd->btn_edit), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(rd->btn_remove), TRUE);
- } else {
- gtk_widget_set_sensitive(GTK_WIDGET(rd->btn_edit), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(rd->btn_remove), FALSE);
- }
-
- g_free(rd->selected_name);
-
- if (rd->selected_iter)
- gtk_tree_iter_free(rd->selected_iter);
-
- rd->selected_id = id;
- rd->selected_name = name;
- rd->selected_iter = gtk_tree_iter_copy(&iter);
- }
-}
-
-static void host_manager_destroy(HostManager * rd)
-{
- shell_save_hosts_file();
- shell_update_remote_menu();
- gtk_widget_destroy(rd->dialog);
-
- g_free(rd);
-}
-
-static HostManager *host_manager_new(GtkWidget * parent)
-{
- HostManager *rd;
- GtkWidget *dialog;
- GtkWidget *dialog_vbox;
- GtkWidget *scrolledwindow;
- GtkWidget *treeview;
- GtkWidget *vbuttonbox;
- GtkWidget *btn_add;
- GtkWidget *btn_edit;
- GtkWidget *dialog_action_area;
- GtkWidget *btn_cancel;
- GtkWidget *btn_remove;
- GtkWidget *hbox;
- GtkTreeSelection *sel;
- GtkTreeViewColumn *column;
- GtkCellRenderer *cr_text, *cr_pbuf;
- GtkListStore *store;
- GtkTreeModel *model;
-
- rd = g_new0(HostManager, 1);
-
- dialog = gtk_dialog_new();
- gtk_window_set_title(GTK_WINDOW(dialog), "Remote Host Manager");
- gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);
- gtk_window_set_default_size(GTK_WINDOW(dialog), 420, 260);
- gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent));
- gtk_window_set_position(GTK_WINDOW(dialog),
- GTK_WIN_POS_CENTER_ON_PARENT);
- gtk_window_set_type_hint(GTK_WINDOW(dialog),
- GDK_WINDOW_TYPE_HINT_DIALOG);
-
- dialog_vbox = GTK_DIALOG(dialog)->vbox;
- gtk_box_set_spacing(GTK_BOX(dialog_vbox), 5);
- gtk_container_set_border_width(GTK_CONTAINER(dialog_vbox), 4);
- gtk_widget_show(dialog_vbox);
-
- hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(dialog_vbox), hbox, TRUE, TRUE, 0);
- gtk_widget_show(hbox);
-
- scrolledwindow = gtk_scrolled_window_new(NULL, NULL);
- gtk_widget_show(scrolledwindow);
- gtk_box_pack_start(GTK_BOX(hbox), scrolledwindow, TRUE, TRUE, 0);
- gtk_widget_set_size_request(scrolledwindow, -1, 200);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW
- (scrolledwindow), GTK_SHADOW_IN);
-
- store =
- gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT);
- model = GTK_TREE_MODEL(store);
-
- treeview = gtk_tree_view_new_with_model(model);
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
- gtk_widget_show(treeview);
- gtk_container_add(GTK_CONTAINER(scrolledwindow), treeview);
- gtk_tree_view_set_reorderable(GTK_TREE_VIEW(treeview), TRUE);
-
- column = gtk_tree_view_column_new();
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
-
- cr_pbuf = gtk_cell_renderer_pixbuf_new();
- gtk_tree_view_column_pack_start(column, cr_pbuf, FALSE);
- gtk_tree_view_column_add_attribute(column, cr_pbuf, "pixbuf",
- TREE_COL_PBUF);
-
- cr_text = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, cr_text, TRUE);
- gtk_tree_view_column_add_attribute(column, cr_text, "markup",
- TREE_COL_NAME);
-
- vbuttonbox = gtk_vbutton_box_new();
- gtk_widget_show(vbuttonbox);
- gtk_box_pack_start(GTK_BOX(hbox), vbuttonbox, FALSE, TRUE, 0);
- gtk_box_set_spacing(GTK_BOX(vbuttonbox), 5);
- gtk_button_box_set_layout(GTK_BUTTON_BOX(vbuttonbox),
- GTK_BUTTONBOX_START);
-
- btn_add = gtk_button_new_with_mnemonic("_Add");
- gtk_widget_show(btn_add);
- gtk_container_add(GTK_CONTAINER(vbuttonbox), btn_add);
- GTK_WIDGET_SET_FLAGS(btn_add, GTK_CAN_DEFAULT);
- g_signal_connect(btn_add, "clicked", G_CALLBACK(host_manager_add), rd);
-
- btn_edit = gtk_button_new_with_mnemonic("_Edit");
- gtk_widget_show(btn_edit);
- gtk_container_add(GTK_CONTAINER(vbuttonbox), btn_edit);
- GTK_WIDGET_SET_FLAGS(btn_edit, GTK_CAN_DEFAULT);
- g_signal_connect(btn_edit, "clicked", G_CALLBACK(host_manager_edit),
- rd);
-
- btn_remove = gtk_button_new_with_mnemonic("_Remove");
- gtk_widget_show(btn_remove);
- gtk_container_add(GTK_CONTAINER(vbuttonbox), btn_remove);
- GTK_WIDGET_SET_FLAGS(btn_remove, GTK_CAN_DEFAULT);
- g_signal_connect(btn_remove, "clicked",
- G_CALLBACK(host_manager_remove), rd);
-
- dialog_action_area = GTK_DIALOG(dialog)->action_area;
- gtk_widget_show(dialog_action_area);
- gtk_button_box_set_layout(GTK_BUTTON_BOX(dialog_action_area),
- GTK_BUTTONBOX_END);
-
- btn_cancel = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
- gtk_widget_show(btn_cancel);
- gtk_dialog_add_action_widget(GTK_DIALOG(dialog), btn_cancel,
- GTK_RESPONSE_CANCEL);
- GTK_WIDGET_SET_FLAGS(btn_cancel, GTK_CAN_DEFAULT);
-
- gtk_tree_view_collapse_all(GTK_TREE_VIEW(treeview));
-
- sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
-
- g_signal_connect(G_OBJECT(sel), "changed",
- (GCallback) host_manager_tree_sel_changed, rd);
-
- rd->dialog = dialog;
- rd->btn_cancel = btn_cancel;
- rd->btn_add = btn_add;
- rd->btn_edit = btn_edit;
- rd->btn_remove = btn_remove;
- rd->tree_store = store;
-
- populate_store(rd, store);
- gtk_widget_set_sensitive(GTK_WIDGET(rd->btn_edit), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(rd->btn_remove), FALSE);
-
- return rd;
-}
-
-#endif /* HAS_LIBSOUP */
diff --git a/hardinfo2/remote/ssh-conn.c b/hardinfo2/remote/ssh-conn.c
deleted file mode 100644
index 7f099d35..00000000
--- a/hardinfo2/remote/ssh-conn.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- Remote Client
- HardInfo - Displays System Information
- Copyright (C) 2003-2009 Leandro A. F. Pereira <leandro@hardinfo.org>
-
- Based on ssh-method.c from GnomeVFS
- Copyright (C) 1999 Free Software Foundation
- Original author: Ian McKellar <yakk@yakk.net>
-
- ssh-conn.c and ssh-conn.h are free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- ssh-conn.c and ssh-con.h are 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with ssh-conn.c and ssh-conn.h; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-*/
-
-#include "config.h"
-#ifdef HAS_LIBSOUP
-#include <glib/gstdio.h>
-#include <glib.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-
-#include "ssh-conn.h"
-
-const char *ssh_conn_errors[] = {
- "OK",
- "No URI specified",
- "Unknown protocol",
- "Unknown error",
- "Cannot spawn SSH",
- "Bad parameters",
- "Permission denied (invalid credentials)",
- "Host key verification failed",
- "Connection refused",
- "Invalid username or password"
-};
-
-int ssh_write(SSHConn * conn,
- gconstpointer buffer, gint num_bytes, gint * bytes_written)
-{
- int written;
- int count = 0;
-
- do {
- written = write(conn->fd_write, buffer, (size_t) num_bytes);
- if (written == -1 && errno == EINTR) {
- count++;
- usleep(10);
- }
- } while (written == -1 && errno == EINTR && count < 5);
-
- if (written == -1) {
- return -1;
- }
-
- *bytes_written = written;
-
- return 1;
-}
-
-int ssh_read(gint fd, gpointer buffer, gint num_bytes, gint * bytes_read)
-{
- int retval;
- fd_set fds;
- struct timeval tv = { 5, 0 };
-
- FD_ZERO(&fds);
- FD_SET(fd, &fds);
-
- *bytes_read = 0;
-
- if ((retval = select(fd + 1, &fds, NULL, NULL, &tv)) < 0) {
- return retval;
- }
-
- if ((retval = read(fd, buffer, (size_t) num_bytes)) > 0) {
- *bytes_read = retval;
- return 1;
- }
-
- return retval;
-}
-
-void ssh_close(SSHConn * conn)
-{
- if (!conn) {
- return;
- }
-
- close(conn->fd_read);
- close(conn->fd_write);
- close(conn->fd_error);
-
- if (conn->uri) {
- soup_uri_free(conn->uri);
- }
-
- kill(conn->pid, SIGINT);
-
- if (conn->askpass_path) {
- DEBUG("unlinking %s", conn->askpass_path);
- g_remove(conn->askpass_path);
- g_free(conn->askpass_path);
- }
-
- g_free(conn);
-}
-
-static void ssh_conn_setup(gpointer user_data)
-{
- gchar *askpass_path = (gchar *) user_data;
- int fd;
-
- if ((fd = open("/dev/tty", O_RDWR)) != -1) {
- ioctl(fd, TIOCNOTTY, NULL);
- close(fd);
- }
-
- if (askpass_path) {
- g_setenv("DISPLAY", "none:0.", TRUE);
- g_setenv("SSH_ASKPASS", askpass_path, TRUE);
- } else {
- g_setenv("SSH_ASKPASS", "/bin/false", TRUE);
- }
-}
-
-SSHConnResponse ssh_new(SoupURI * uri,
- SSHConn ** conn_return, gchar * command)
-{
- int argc, res, bytes_read;
- char **argv, *askpass_path = NULL;
- GString *cmd_line;
- SSHConnResponse response;
- SSHConn *connection;
- gchar buffer[512];
-
- if (!conn_return) {
- return SSH_CONN_BAD_PARAMS;
- }
-
- if (!uri) {
- return SSH_CONN_NO_URI;
- }
-
- if (!g_str_equal(uri->scheme, "ssh")) {
- return SSH_CONN_UNKNOWN_PROTOCOL;
- }
-
- if (uri->password) {
- int tmp_askpass;
-
- askpass_path =
- g_build_filename(g_get_home_dir(), ".hardinfo",
- "ssh-askpass-XXXXXX", NULL);
- tmp_askpass = g_mkstemp(askpass_path);
- if (tmp_askpass > 0) {
- gchar *tmp;
-
- g_chmod(askpass_path, 0700);
-
- tmp = g_strdup_printf("#!/bin/sh\n"
- "echo '%s'\n"
- "rm -f \"$0\"", uri->password);
- write(tmp_askpass, tmp, strlen(tmp));
- close(tmp_askpass);
- g_free(tmp);
-
- DEBUG("using [%s] as ssh-askpass", askpass_path);
- }
- }
-
-
- cmd_line = g_string_new("ssh -x");
-
- if (uri->query && strlen(uri->query)) {
- GHashTable *query;
- GList *keys, *key;
-
- query = soup_form_decode(uri->query);
- keys = g_hash_table_get_keys(query);
-
- for (key = keys; key; key = key->next) {
- gchar *param;
-
- g_string_append_printf(cmd_line, " -%s", (gchar *) key->data);
-
- if ((param = (gchar *) g_hash_table_lookup(query, key->data))) {
- g_string_append_printf(cmd_line, "'%s'", param);
- }
- }
-
- g_list_free(keys);
- g_hash_table_destroy(query);
- }
-
- if (uri->user) {
- g_string_append_printf(cmd_line, " -l '%s'", uri->user);
- }
-
- if (uri->port) {
- g_string_append_printf(cmd_line, " -p %d", uri->port);
- }
-
- g_string_append_printf(cmd_line,
- " %s \"LC_ALL=C %s\"", uri->host, command);
-
- DEBUG("cmd_line = [%s]", cmd_line->str);
-
- if (!g_shell_parse_argv(cmd_line->str, &argc, &argv, NULL)) {
- response = SSH_CONN_BAD_PARAMS;
- goto end;
- }
-
- connection = g_new0(SSHConn, 1);
- connection->exit_status = -1;
-
- DEBUG("spawning SSH");
-
- if (!g_spawn_async_with_pipes(NULL, argv, NULL,
- G_SPAWN_SEARCH_PATH,
- ssh_conn_setup, askpass_path,
- &connection->pid,
- &connection->fd_write,
- &connection->fd_read,
- &connection->fd_error, NULL)) {
- response = SSH_CONN_CANNOT_SPAWN_SSH;
- goto end;
- }
-
- memset(buffer, 0, sizeof(buffer));
- res = ssh_read(connection->fd_error, &buffer, sizeof(buffer),
- &bytes_read);
- DEBUG("bytes read: %d, result = %d", bytes_read, res);
- if (bytes_read > 0 && res == 1) {
- DEBUG("Received (error channel): [%s]", buffer);
-
- if (strstr(buffer, "Permission denied")) {
- response = SSH_CONN_PERMISSION_DENIED;
- goto end;
- } else if (strstr(buffer, "Host key verification failed")) {
- response = SSH_CONN_HOST_KEY_CHECK_FAIL;
- goto end;
- } else if (strstr(buffer, "Connection refused")) {
- response = SSH_CONN_REFUSED;
- goto end;
- }
- }
-
- DEBUG("no error detected; ssh conn established");
-
- connection->uri = soup_uri_copy(uri);
- response = SSH_CONN_OK;
-
- end:
- g_strfreev(argv);
- g_string_free(cmd_line, TRUE);
-
- if (askpass_path) {
- if (connection) {
- connection->askpass_path = askpass_path;
- } else {
- g_free(askpass_path);
- }
- }
-
- if (response != SSH_CONN_OK) {
- if (connection->uri) {
- soup_uri_free(connection->uri);
- }
-
- g_free(connection);
-
- *conn_return = NULL;
- } else {
- *conn_return = connection;
- }
-
- DEBUG("response = %d (%s)", response, ssh_conn_errors[response]);
-
- return response;
-}
-
-#ifdef SSH_TEST
-int main(int argc, char **argv)
-{
- SSHConn *c;
- SSHConnResponse r;
- SoupURI *u;
- char buffer[256];
-
- if (argc < 2) {
- g_print("Usage: %s URI command\n", argv[0]);
- g_print("Example: %s ssh://user:password@host 'ls -la /'\n",
- argv[0]);
- return 1;
- }
-
- u = soup_uri_new(argv[1]);
- r = ssh_new(u, &c, argv[2]);
- g_print("Connection result: %s\n", ssh_conn_errors[r]);
-
- if (r == SSH_CONN_OK) {
- int bytes_read;
-
- while (ssh_read(c->fd_read, &buffer, sizeof(buffer),
- &bytes_read) > 0) {
- g_print("Bytes read: %d\n", bytes_read);
- g_print("Contents: %s", buffer);
- }
-
- g_print("Finished running remote command\n");
- }
-
- g_print("Closing SSH [ptr = %p]", c);
- ssh_close(c);
-
- return 0;
-}
-#endif /* SSH_TEST */
-#endif /* HAS_LIBSOUP */
diff --git a/hardinfo2/remote/xmlrpc-client.c b/hardinfo2/remote/xmlrpc-client.c
deleted file mode 100644
index d363729b..00000000
--- a/hardinfo2/remote/xmlrpc-client.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * XMLRPC Client
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 <string.h>
-#include "config.h"
-#include "xmlrpc-client.h"
-
-#ifdef HAS_LIBSOUP
-static GMainLoop *loop = NULL;
-static SoupSession *session = NULL;
-static gboolean lock = FALSE;
-
-void xmlrpc_init(void)
-{
- if (!loop) {
- loop = g_main_loop_new(FALSE, FALSE);
- }
-
- if (!session) {
- session = soup_session_async_new_with_options(SOUP_SESSION_TIMEOUT, 10, NULL);
- }
-}
-
-static void xmlrpc_response_get_integer(SoupSession *s,
- SoupMessage *m,
- gpointer user_data)
-{
- gint *response = user_data;
-
- *response = -1;
-
- if (SOUP_STATUS_IS_SUCCESSFUL(m->status_code)) {
- soup_xmlrpc_extract_method_response(m->response_body->data,
- m->response_body->length,
- NULL,
- G_TYPE_INT, response);
- }
-
- g_main_quit(loop);
- lock = FALSE;
-}
-
-gint xmlrpc_get_integer(gchar *addr,
- gchar *method,
- const gchar *param_types,
- ...)
-{
- gint integer;
- GValueArray *params;
- SoupMessage *msg;
- gchar *body;
-
- msg = soup_message_new("POST", addr);
-
- params = g_value_array_new(1);
-
- if (param_types && *param_types) {
- va_list ap;
-
- va_start(ap, param_types);
- while (*param_types) {
- switch (*param_types) {
- case '%':
- break;
- case 'i':
- soup_value_array_append(params, G_TYPE_INT, va_arg(ap, int));
- break;
- case 's':
- default:
- soup_value_array_append(params, G_TYPE_STRING, va_arg(ap, char *));
- break;
- }
-
- param_types++;
- }
-
- va_end(ap);
- }
-
- body = soup_xmlrpc_build_method_call(method, params->values, params->n_values);
- g_value_array_free(params);
-
- soup_message_set_request(msg, "text/xml",
- SOUP_MEMORY_TAKE, body, strlen(body));
-
- while (lock)
- g_main_iteration(FALSE);
-
- lock = TRUE;
- soup_session_queue_message(session, msg, xmlrpc_response_get_integer, &integer);
- g_main_run(loop);
-
- return integer;
-}
-
-static void xmlrpc_response_get_string(SoupSession *s,
- SoupMessage *m,
- gpointer user_data)
-{
- if (SOUP_STATUS_IS_SUCCESSFUL(m->status_code)) {
- soup_xmlrpc_extract_method_response(m->response_body->data,
- m->response_body->length,
- NULL,
- G_TYPE_STRING, user_data);
- }
-
- g_main_quit(loop);
- lock = FALSE;
-}
-
-gchar *xmlrpc_get_string(gchar *addr,
- gchar *method,
- const gchar *param_types,
- ...)
-{
- GValueArray *params;
- SoupMessage *msg;
- gchar *body, *string = NULL;
-
- msg = soup_message_new("POST", addr);
-
- params = g_value_array_new(1);
-
- if (param_types && *param_types) {
- va_list ap;
-
- va_start(ap, param_types);
- while (*param_types) {
- switch (*param_types) {
- case '%':
- break;
- case 'i':
- soup_value_array_append(params, G_TYPE_INT, va_arg(ap, int));
- break;
- case 's':
- default:
- soup_value_array_append(params, G_TYPE_STRING, va_arg(ap, char *));
- break;
- }
-
- param_types++;
- }
-
- va_end(ap);
- }
-
- body = soup_xmlrpc_build_method_call(method, params->values, params->n_values);
- g_value_array_free(params);
-
- soup_message_set_request(msg, "text/xml",
- SOUP_MEMORY_TAKE, body, strlen(body));
-
- while (lock)
- g_main_iteration(FALSE);
-
- lock = TRUE;
- soup_session_queue_message(session, msg, xmlrpc_response_get_string, &string);
- g_main_run(loop);
-
- return string;
-}
-
-static void xmlrpc_response_get_array(SoupSession *s,
- SoupMessage *m,
- gpointer user_data)
-{
- if (SOUP_STATUS_IS_SUCCESSFUL(m->status_code)) {
- soup_xmlrpc_extract_method_response(m->response_body->data,
- m->response_body->length,
- NULL,
- G_TYPE_VALUE_ARRAY, user_data);
- }
-
- g_main_quit(loop);
- lock = FALSE;
-}
-
-GValueArray *xmlrpc_get_array(gchar *addr,
- gchar *method,
- const gchar *param_types,
- ...)
-{
- GValueArray *params, *answer = NULL;
- SoupMessage *msg;
- gchar *body;
-
- msg = soup_message_new("POST", addr);
-
- params = g_value_array_new(1);
-
- if (param_types && *param_types) {
- va_list ap;
-
- va_start(ap, param_types);
- while (*param_types) {
- switch (*param_types) {
- case '%':
- break;
- case 'i':
- soup_value_array_append(params, G_TYPE_INT, va_arg(ap, int));
- break;
- case 's':
- default:
- soup_value_array_append(params, G_TYPE_STRING, va_arg(ap, char *));
- break;
- }
-
- param_types++;
- }
-
- va_end(ap);
- }
-
- body = soup_xmlrpc_build_method_call(method, params->values, params->n_values);
- g_value_array_free(params);
-
- soup_message_set_request(msg, "text/xml",
- SOUP_MEMORY_TAKE, body, strlen(body));
-
- while (lock)
- g_main_iteration(FALSE);
-
- lock = TRUE;
- soup_session_queue_message(session, msg, xmlrpc_response_get_array, &answer);
- g_main_run(loop);
-
- return answer;
-}
-
-#endif /* HAS_LIBSOUP */
-
diff --git a/hardinfo2/remote/xmlrpc-server.c b/hardinfo2/remote/xmlrpc-server.c
deleted file mode 100644
index e953cfd1..00000000
--- a/hardinfo2/remote/xmlrpc-server.c
+++ /dev/null
@@ -1,782 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This file is based off xmlrpc-server-test.c from libsoup test suite
- * Copyright (C) 2008 Red Hat, Inc.
- *
- * 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 "config.h"
-
-#include <glib.h>
-#ifdef HAS_LIBSOUP
-#include <stdio.h>
-#include <string.h>
-#include <libsoup/soup.h>
-
-#include "shell.h"
-#include "hardinfo.h"
-
-#define XMLRPC_SERVER_VERSION 1
-/* server namespace */
-static void method_get_api_version(SoupMessage * msg,
- GValueArray * params);
-static void method_shutdown_server(SoupMessage * msg,
- GValueArray * params);
-/* module namespace */
-static void method_get_module_list(SoupMessage * msg,
- GValueArray * params);
-static void method_get_entry_list(SoupMessage * msg, GValueArray * params);
-static void method_entry_reload(SoupMessage * msg, GValueArray * params);
-static void method_entry_scan(SoupMessage * msg, GValueArray * params);
-static void method_entry_get_field(SoupMessage * msg,
- GValueArray * params);
-static void method_entry_get_moreinfo(SoupMessage * msg,
- GValueArray * params);
-static void method_entry_get_note(SoupMessage * msg, GValueArray * params);
-static void method_entry_function(SoupMessage * msg, GValueArray * params);
-static void method_get_about_info(SoupMessage * msg, GValueArray * params);
-static void method_call_method(SoupMessage * msg, GValueArray * params);
-static void method_call_method_param(SoupMessage * msg,
- GValueArray * params);
-
-/* method handler table */
-static const struct {
- gchar *method_name;
- void *callback;
-} handler_table[] = {
- /* server namespace */
- { "server.getAPIVersion", method_get_api_version },
- { "server.shutdownServer", method_shutdown_server },
- /* module namespace */
- { "module.getModuleList", method_get_module_list },
- { "module.getEntryList", method_get_entry_list },
- { "module.entryReload", method_entry_reload },
- { "module.entryScan", method_entry_scan },
- { "module.entryFunction", method_entry_function },
- { "module.entryGetNote", method_entry_get_note },
- { "module.entryGetField", method_entry_get_field },
- { "module.entryGetMoreInfo", method_entry_get_moreinfo },
- { "module.getAboutInfo", method_get_about_info },
- { "module.callMethod", method_call_method },
- { "module.callMethodParam", method_call_method_param },
- { NULL }
-};
-
-static GHashTable *handlers = NULL;
-static GMainLoop *loop = NULL;
-
-typedef struct _MethodParameter MethodParameter;
-struct _MethodParameter {
- int param_type;
- void *variable;
-};
-
-static void
-args_error(SoupMessage * msg, GValueArray * params, int expected)
-{
- soup_xmlrpc_set_fault(msg,
- SOUP_XMLRPC_FAULT_SERVER_ERROR_INVALID_METHOD_PARAMETERS,
- "Wrong number of parameters: expected %d, got %d",
- expected, params->n_values);
-}
-
-static void
-type_error(SoupMessage * msg, GType expected, GValueArray * params,
- int bad_value)
-{
- soup_xmlrpc_set_fault(msg,
- SOUP_XMLRPC_FAULT_SERVER_ERROR_INVALID_METHOD_PARAMETERS,
- "Bad parameter #%d: expected %s, got %s",
- bad_value + 1, g_type_name(expected),
- g_type_name(G_VALUE_TYPE
- (&params->values[bad_value])));
-}
-
-static gboolean validate_parameters(SoupMessage *msg, GValueArray *params,
- MethodParameter *method_params, gint n_params)
-{
- int i;
-
- if (params->n_values != n_params) {
- args_error(msg, params, n_params);
- return FALSE;
- }
-
- for (i = 0; i < n_params; i++) {
- if (!soup_value_array_get_nth(params, i,
- method_params[i].param_type,
- method_params[i].variable)) {
- int j;
-
- type_error(msg, method_params[i].param_type, params, i);
-
- for (j = 0; j < i; j++) {
- if (method_params[j].param_type == G_TYPE_STRING) {
- g_free(method_params[j].variable);
- }
- }
-
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-static void method_get_module_list(SoupMessage * msg, GValueArray * params)
-{
- GValueArray *out;
- GSList *modules;
-
- out = soup_value_array_new();
-
- for (modules = modules_get_list(); modules; modules = modules->next) {
- ShellModule *module = (ShellModule *) modules->data;
- gchar *icon_file, *tmp;
- GValueArray *tuple;
-
- tuple = soup_value_array_new();
-
- tmp = g_path_get_basename(g_module_name(module->dll));
- if ((icon_file = g_strrstr(tmp, G_MODULE_SUFFIX))) {
- *icon_file = '\0';
- icon_file = g_strconcat(tmp, "png", NULL);
- } else {
- icon_file = "";
- }
-
- soup_value_array_append(tuple, G_TYPE_STRING, module->name);
- soup_value_array_append(tuple, G_TYPE_STRING, icon_file);
-
- soup_value_array_append(out, G_TYPE_VALUE_ARRAY, tuple);
-
- g_value_array_free(tuple);
- g_free(tmp);
- }
-
- soup_xmlrpc_set_response(msg, G_TYPE_VALUE_ARRAY, out);
- g_value_array_free(out);
-}
-
-static void method_get_entry_list(SoupMessage * msg, GValueArray * params)
-{
- ShellModule *module;
- ShellModuleEntry *module_entry;
- GSList *entry, *modules;
- GValueArray *out;
- gboolean found = FALSE;
- gchar *module_name;
- MethodParameter method_params[] = {
- { G_TYPE_STRING, &module_name }
- };
-
- if (!validate_parameters(msg, params, method_params, G_N_ELEMENTS(method_params))) {
- return;
- }
-
- for (modules = modules_get_list(); modules; modules = modules->next) {
- ShellModule *module = (ShellModule *) modules->data;
-
- if (!strncmp(module->name, module_name, strlen(module->name))) {
- found = TRUE;
- break;
- }
- }
-
- out = soup_value_array_new();
-
- if (found) {
- module = (ShellModule *) modules->data;
- for (entry = module->entries; entry; entry = entry->next) {
- GValueArray *tuple;
-
- module_entry = (ShellModuleEntry *) entry->data;
-
- if (module_entry->flags & MODULE_FLAG_NO_REMOTE) {
- /* do nothing if we're not supposed to */
- } else {
- tuple = soup_value_array_new();
-
- soup_value_array_append(tuple, G_TYPE_STRING, module_entry->name);
- soup_value_array_append(tuple, G_TYPE_STRING, module_entry->icon_file);
-
- soup_value_array_append(out, G_TYPE_VALUE_ARRAY, tuple);
- g_value_array_free(tuple);
- }
- }
- }
-
- soup_xmlrpc_set_response(msg, G_TYPE_VALUE_ARRAY, out);
- g_value_array_free(out);
-}
-
-static void method_entry_get_field(SoupMessage * msg, GValueArray * params)
-{
- ShellModule *module;
- GSList *modules;
- gchar *module_name, *field_name, *answer = NULL;
- gint entry_number;
- gboolean found = FALSE;
- MethodParameter method_params[] = {
- { G_TYPE_STRING, &module_name },
- { G_TYPE_INT, &entry_number },
- { G_TYPE_STRING, &field_name }
- };
-
- if (!validate_parameters(msg, params, method_params, G_N_ELEMENTS(method_params))) {
- return;
- }
-
- for (modules = modules_get_list(); modules; modules = modules->next) {
- module = (ShellModule *) modules->data;
-
- if (!strncmp(module->name, module_name, strlen(module->name))) {
- found = TRUE;
- break;
- }
- }
-
- if (found) {
- if (entry_number < g_slist_length(module->entries)) {
- GSList *entry_node = g_slist_nth(module->entries, entry_number);
- ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data;
-
- if (entry->flags & MODULE_FLAG_NO_REMOTE) {
- /* do nothing */
- } else {
- answer = module_entry_get_field(entry, field_name);
- }
- }
- }
-
- if (!answer) {
- answer = g_strdup("");
- }
-
- soup_xmlrpc_set_response(msg, G_TYPE_STRING, answer);
- g_free(answer);
-}
-
-static void method_entry_get_moreinfo(SoupMessage * msg,
- GValueArray * params)
-{
- ShellModule *module;
- GSList *modules;
- gchar *module_name, *field_name, *answer = NULL;
- gint entry_number;
- gboolean found = FALSE;
- MethodParameter method_params[] = {
- { G_TYPE_STRING, &module_name },
- { G_TYPE_INT, &entry_number },
- { G_TYPE_STRING, &field_name },
- };
-
- if (!validate_parameters(msg, params, method_params, G_N_ELEMENTS(method_params))) {
- return;
- }
-
- for (modules = modules_get_list(); modules; modules = modules->next) {
- module = (ShellModule *) modules->data;
-
- if (!strncmp(module->name, module_name, strlen(module->name))) {
- found = TRUE;
- break;
- }
- }
-
- if (found) {
- if (entry_number < g_slist_length(module->entries)) {
- GSList *entry_node = g_slist_nth(module->entries, entry_number);
- ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data;
-
- if (entry->flags & MODULE_FLAG_NO_REMOTE) {
- /* do nothing */
- } else {
- answer = module_entry_get_moreinfo(entry, field_name);
- }
- }
- }
-
- if (!answer) {
- answer = g_strdup("");
- }
-
- soup_xmlrpc_set_response(msg, G_TYPE_STRING, answer);
- g_free(answer);
-}
-
-static void method_entry_reload(SoupMessage * msg, GValueArray * params)
-{
- ShellModule *module;
- GSList *modules;
- gchar *module_name;
- gint entry_number;
- gboolean found = FALSE, answer = FALSE;
- MethodParameter method_params[] = {
- { G_TYPE_STRING, &module_name },
- { G_TYPE_INT, &entry_number },
- };
-
- if (!validate_parameters(msg, params, method_params, G_N_ELEMENTS(method_params))) {
- return;
- }
-
- for (modules = modules_get_list(); modules; modules = modules->next) {
- module = (ShellModule *) modules->data;
-
- if (!strncmp(module->name, module_name, strlen(module->name))) {
- found = TRUE;
- break;
- }
- }
-
- if (found) {
- if (entry_number < g_slist_length(module->entries)) {
- GSList *entry_node = g_slist_nth(module->entries, entry_number);
- ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data;
-
- if (entry->flags & MODULE_FLAG_NO_REMOTE) {
- /* do nothing */
- } else {
- module_entry_reload(entry);
- answer = TRUE;
- }
- }
- }
-
- soup_xmlrpc_set_response(msg, G_TYPE_BOOLEAN, answer);
-}
-
-static void method_entry_scan(SoupMessage * msg, GValueArray * params)
-{
- ShellModule *module;
- GSList *modules;
- gchar *module_name;
- gint entry_number;
- gboolean found = FALSE, answer = FALSE;
- MethodParameter method_params[] = {
- { G_TYPE_STRING, &module_name },
- { G_TYPE_INT, &entry_number },
- };
-
- if (!validate_parameters(msg, params, method_params, G_N_ELEMENTS(method_params))) {
- return;
- }
-
- for (modules = modules_get_list(); modules; modules = modules->next) {
- module = (ShellModule *) modules->data;
-
- if (!strncmp(module->name, module_name, strlen(module->name))) {
- found = TRUE;
- break;
- }
- }
-
- if (found) {
- if (entry_number < g_slist_length(module->entries)) {
- GSList *entry_node = g_slist_nth(module->entries, entry_number);
- ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data;
-
- if (entry->flags & MODULE_FLAG_NO_REMOTE) {
- /* do nothing */
- } else {
- module_entry_scan(entry);
- answer = TRUE;
- }
- }
- }
-
- soup_xmlrpc_set_response(msg, G_TYPE_BOOLEAN, answer);
-}
-
-static void method_entry_function(SoupMessage * msg, GValueArray * params)
-{
- ShellModule *module;
- GSList *modules;
- gchar *module_name, *answer = NULL;
- gboolean found = FALSE;
- gint entry_number;
- MethodParameter method_params[] = {
- { G_TYPE_STRING, &module_name },
- { G_TYPE_INT, &entry_number },
- };
-
- if (!validate_parameters(msg, params, method_params, G_N_ELEMENTS(method_params))) {
- return;
- }
-
- for (modules = modules_get_list(); modules; modules = modules->next) {
- module = (ShellModule *) modules->data;
-
- if (!strncmp(module->name, module_name, strlen(module->name))) {
- found = TRUE;
- break;
- }
- }
-
- if (found) {
- if (entry_number < g_slist_length(module->entries)) {
- GSList *entry_node = g_slist_nth(module->entries, entry_number);
- ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data;
-
- if (entry->flags & MODULE_FLAG_NO_REMOTE) {
- /* do nothing */
- } else {
- module_entry_scan(entry);
- answer = module_entry_function(entry);
- }
- }
- }
-
- if (!answer) {
- answer = g_strdup("");
- }
-
- soup_xmlrpc_set_response(msg, G_TYPE_STRING, answer);
- g_free(answer);
-}
-
-
-static void method_entry_get_note(SoupMessage * msg, GValueArray * params)
-{
- ShellModule *module;
- GSList *modules;
- gchar *module_name, *answer = NULL;
- gint entry_number;
- gboolean found = FALSE;
- MethodParameter method_params[] = {
- { G_TYPE_STRING, &module_name },
- { G_TYPE_INT, &entry_number },
- };
-
- if (!validate_parameters(msg, params, method_params, G_N_ELEMENTS(method_params))) {
- return;
- }
-
- for (modules = modules_get_list(); modules; modules = modules->next) {
- module = (ShellModule *) modules->data;
-
- if (!strncmp(module->name, module_name, strlen(module->name))) {
- found = TRUE;
- break;
- }
- }
-
- if (found) {
- if (entry_number < g_slist_length(module->entries)) {
- GSList *entry_node = g_slist_nth(module->entries, entry_number);
- ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data;
-
- if (entry->flags & MODULE_FLAG_NO_REMOTE) {
- /* do nothing */
- } else {
- answer = g_strdup((gchar *)module_entry_get_note(entry));
- }
- }
- }
-
- if (!answer) {
- answer = g_strdup("");
- }
-
- soup_xmlrpc_set_response(msg, G_TYPE_STRING, answer);
- g_free(answer);
-}
-
-static void method_get_about_info(SoupMessage * msg, GValueArray * params)
-{
- ShellModule *module;
- GSList *modules;
- gchar *module_name;
- gboolean found = FALSE;
- GValueArray *out;
- MethodParameter method_params[] = {
- { G_TYPE_STRING, &module_name },
- };
-
- if (!validate_parameters(msg, params, method_params, G_N_ELEMENTS(method_params))) {
- return;
- }
-
- for (modules = modules_get_list(); modules; modules = modules->next) {
- module = (ShellModule *) modules->data;
-
- if (!strncmp(module->name, module_name, strlen(module->name))) {
- found = TRUE;
- break;
- }
- }
-
- out = soup_value_array_new();
-
- if (found) {
- ModuleAbout *about = module_get_about(module);
-
- soup_value_array_append(out, G_TYPE_STRING, about->description);
- soup_value_array_append(out, G_TYPE_STRING, about->author);
- soup_value_array_append(out, G_TYPE_STRING, about->version);
- soup_value_array_append(out, G_TYPE_STRING, about->license);
- }
-
- soup_xmlrpc_set_response(msg, G_TYPE_VALUE_ARRAY, out);
- g_value_array_free(out);
-}
-
-static void method_call_method(SoupMessage * msg, GValueArray * params)
-{
- gchar *method_name, *answer = NULL;
- MethodParameter method_params[] = {
- { G_TYPE_STRING, &method_name },
- };
-
- if (!validate_parameters(msg, params, method_params, G_N_ELEMENTS(method_params))) {
- return;
- }
-
- if (!(answer = module_call_method(method_name))) {
- answer = g_strdup("");
- }
-
- soup_xmlrpc_set_response(msg, G_TYPE_STRING, answer);
- g_free(answer);
-}
-
-static void method_call_method_param(SoupMessage * msg,
- GValueArray * params)
-{
- gchar *method_name, *parameter, *answer = NULL;
- MethodParameter method_params[] = {
- { G_TYPE_STRING, &method_name },
- { G_TYPE_STRING, &parameter },
- };
-
- if (!validate_parameters(msg, params, method_params, G_N_ELEMENTS(method_params))) {
- return;
- }
-
- if (!(answer = module_call_method_param(method_name, parameter))) {
- answer = g_strdup("");
- }
-
- soup_xmlrpc_set_response(msg, G_TYPE_STRING, answer);
- g_free(answer);
-}
-
-static void method_get_api_version(SoupMessage * msg, GValueArray * params)
-{
- soup_xmlrpc_set_response(msg, G_TYPE_INT, XMLRPC_SERVER_VERSION);
-}
-
-static void method_shutdown_server(SoupMessage * msg, GValueArray * params)
-{
- soup_xmlrpc_set_response(msg, G_TYPE_BOOLEAN, TRUE);
-
- g_main_loop_quit(loop);
-}
-#endif /* HAS_LIBSOUP */
-
-void xmlrpc_server_init(void)
-{
-#ifdef HAS_LIBSOUP
- if (!loop) {
- DEBUG("creating main loop");
- loop = g_main_loop_new(NULL, FALSE);
- } else {
- DEBUG("using main loop instance %p", loop);
- }
-
- if (!handlers) {
- int i;
- handlers = g_hash_table_new(g_str_hash, g_str_equal);
-
- DEBUG("registering handlers");
-
- for (i = 0; handler_table[i].method_name; i++) {
- g_hash_table_insert(handlers,
- handler_table[i].method_name,
- handler_table[i].callback);
- }
- }
-#endif /* HAS_LIBSOUP */
-}
-
-#ifdef HAS_LIBSOUP
-static SoupServer *xmlrpc_server_new(void)
-{
- SoupServer *server;
-
- DEBUG("creating server");
- server = soup_server_new(SOUP_SERVER_SSL_CERT_FILE, NULL,
- SOUP_SERVER_SSL_KEY_FILE, NULL,
- SOUP_SERVER_ASYNC_CONTEXT, NULL,
- SOUP_SERVER_PORT, 4242, NULL);
- if (!server) {
- return NULL;
- }
-
- soup_server_run_async(server);
-
- return server;
-}
-
-static void xmlrpc_server_callback(SoupServer * server,
- SoupMessage * msg,
- const char *path,
- GHashTable * query,
- SoupClientContext * context,
- gpointer data)
-{
- if (msg->method == SOUP_METHOD_POST) {
- gchar *method_name;
- GValueArray *params;
- void (*callback) (SoupMessage * msg, GValueArray * params);
-
- DEBUG("POST %s", path);
-
- if (!soup_xmlrpc_parse_method_call(msg->request_body->data,
- msg->request_body->length,
- &method_name, &params)) {
- soup_message_set_status(msg, SOUP_STATUS_BAD_REQUEST);
- return;
- }
-
- DEBUG("method: %s", method_name);
-
- if ((callback = g_hash_table_lookup(handlers, method_name))) {
- soup_message_set_status(msg, SOUP_STATUS_OK);
-
- DEBUG("found callback: %p", callback);
- callback(msg, params);
- } else {
- DEBUG("callback not found");
- soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED);
- }
-
- g_value_array_free(params);
- g_free(method_name);
- } else {
- DEBUG("received request of unknown method");
- soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED);
- }
-}
-
-static void icon_server_callback(SoupServer * server,
- SoupMessage * msg,
- const char *path,
- GHashTable * query,
- SoupClientContext * context,
- gpointer data)
-{
- if (msg->method == SOUP_METHOD_GET) {
- path = g_strrstr(path, "/");
-
- DEBUG("GET %s", path);
-
- if (!path || !g_str_has_suffix(path, ".png")) {
- DEBUG("not an icon, invalid path, etc");
- soup_message_set_status(msg, SOUP_STATUS_FORBIDDEN);
- soup_message_set_response(msg,
- "text/plain",
- SOUP_MEMORY_STATIC,
- "500 :(", 6);
- } else {
- gchar *file, *icon;
- gsize size;
-
- file = g_build_filename(params.path_data,
- "pixmaps",
- path + 1,
- NULL);
-
- if (g_file_get_contents(file, &icon, &size, NULL)) {
- DEBUG("icon found");
- soup_message_set_status(msg, SOUP_STATUS_OK);
- soup_message_set_response(msg,
- "image/png",
- SOUP_MEMORY_TAKE,
- icon, size);
- } else {
- DEBUG("icon not found");
- soup_message_set_status(msg, SOUP_STATUS_NOT_FOUND);
- soup_message_set_response(msg,
- "text/plain",
- SOUP_MEMORY_STATIC,
- "404 :(", 6);
- }
-
- g_free(file);
- }
- } else {
- DEBUG("received request of unknown method");
- soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED);
- }
-}
-#endif /* HAS_LIBSOUP */
-
-void xmlrpc_server_start(GMainLoop *main_loop)
-{
-#ifdef HAS_LIBSOUP
- SoupServer *server;
-
- if (main_loop) {
- loop = main_loop;
- }
-
- if (!loop || !handlers) {
- DEBUG("initializing server");
- xmlrpc_server_init();
- }
-
- server = xmlrpc_server_new();
- if (!server) {
- if (main_loop) {
- g_warning("Cannot create XML-RPC server.");
- return;
- } else {
- g_error("Cannot create XML-RPC server. Aborting");
- }
- }
-
- DEBUG("adding soup handlers for /xmlrpc");
- soup_server_add_handler(server, "/xmlrpc", xmlrpc_server_callback,
- NULL, NULL);
- DEBUG("adding soup handlers for /icon/");
- soup_server_add_handler(server, "/icon/", icon_server_callback,
- NULL, NULL);
-
- DEBUG("starting server");
- g_print("XML-RPC server ready\n");
- g_main_loop_run(loop);
-
- DEBUG("shutting down server");
- g_main_loop_unref(loop);
- soup_server_quit(server);
- g_object_unref(server);
-#endif /* HAS_LIBSOUP */
-}
-
-#ifdef XMLRPC_SERVER_TEST
-int main(void)
-{
-#ifdef HAS_LIBSOUP
- g_type_init();
-
- xmlrpc_server_init();
- xmlrpc_server_start();
-#endif /* HAS_LIBSOUP */
-}
-#endif /* XMLRPC_SERVER_TEST */
diff --git a/hardinfo2/shell/callbacks.c b/hardinfo2/shell/callbacks.c
deleted file mode 100644
index 021560e2..00000000
--- a/hardinfo2/shell/callbacks.c
+++ /dev/null
@@ -1,430 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 <stdlib.h>
-#include <gtk/gtk.h>
-
-#include "hardinfo.h"
-#include "callbacks.h"
-#include "iconcache.h"
-
-#include "shell.h"
-#include "report.h"
-#include "remote.h"
-#include "syncmanager.h"
-#include "help-viewer.h"
-#include "xmlrpc-server.h"
-
-#include "config.h"
-
-void cb_sync_manager()
-{
- Shell *shell = shell_get_main_shell();
-
- sync_manager_show(shell->window);
-}
-
-void cb_connect_to()
-{
-#ifdef HAS_LIBSOUP
- Shell *shell = shell_get_main_shell();
-
- connect_dialog_show(shell->window);
-#endif /* HAS_LIBSOUP */
-}
-
-void cb_manage_hosts()
-{
-#ifdef HAS_LIBSOUP
- Shell *shell = shell_get_main_shell();
-
- host_manager_show(shell->window);
-#endif /* HAS_LIBSOUP */
-}
-
-void cb_connect_host(GtkAction * action)
-{
-#ifdef HAS_LIBSOUP
- Shell *shell = shell_get_main_shell();
- gchar *name;
-
- g_object_get(G_OBJECT(action), "name", &name, NULL);
-
- if (remote_connect_host(name)) {
- gchar *tmp;
-
- tmp = g_strdup_printf("Remote: <b>%s</b>", name);
- shell_set_remote_label(shell, tmp);
-
- g_free(tmp);
- } else {
- cb_local_computer();
- }
-
- g_free(name);
-#endif /* HAS_LIBSOUP */
-}
-
-static gboolean server_start_helper(gpointer server_loop)
-{
-#ifdef HAS_LIBSOUP
- GMainLoop *loop = (GMainLoop *)server_loop;
-
- xmlrpc_server_start(loop);
-
- return FALSE;
-#endif /* HAS_LIBSOUP */
-}
-
-void cb_act_as_server()
-{
-#ifdef HAS_LIBSOUP
- gboolean accepting;
- static GMainLoop *server_loop = NULL;
-
- accepting = shell_action_get_active("ActAsServerAction");
- if (accepting) {
- server_loop = g_main_loop_new(NULL, FALSE);
- g_idle_add(server_start_helper, server_loop);
- } else {
- g_main_loop_quit(server_loop);
- }
-#endif /* HAS_LIBSOUP */
-}
-
-void cb_local_computer()
-{
-#ifdef HAS_LIBSOUP
- Shell *shell = shell_get_main_shell();
-
- shell_status_update("Disconnecting...");
- remote_disconnect_all(TRUE);
-
- shell_status_update("Unloading modules...");
- module_unload_all();
-
- shell_status_update("Loading local modules...");
- shell->tree->modules = modules_load_all();
-
- g_slist_foreach(shell->tree->modules, shell_add_modules_to_gui, shell->tree);
- gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->tree->view));
-
- shell_view_set_enabled(TRUE);
- shell_status_update("Done.");
- shell_set_remote_label(shell, "");
-#endif /* HAS_LIBSOUP */
-}
-
-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://wiki.hardinfo.org");
-}
-
-void cb_open_online_docs()
-{
- Shell *shell;
-
- shell = shell_get_main_shell();
- if (shell->help_viewer) {
- help_viewer_open_page(shell->help_viewer, "index.hlp");
- } else {
- gchar *help_dir;
-
- help_dir = g_build_filename(params.path_data, "doc", NULL);
- shell->help_viewer = help_viewer_new(help_dir, "index.hlp");
- g_free(help_dir);
- }
-}
-
-void cb_open_online_docs_context()
-{
- Shell *shell;
-
- shell = shell_get_main_shell();
-
- if (shell->selected->flags & MODULE_FLAG_HAS_HELP) {
- gchar *temp;
-
- if (shell->selected_module->dll) {
- gchar *name_temp;
-
- name_temp = (gchar *)g_module_name(shell->selected_module->dll);
- name_temp = g_path_get_basename(name_temp);
- strend(name_temp, '.');
-
- temp = g_strdup_printf("context-help-%s-%d.hlp",
- name_temp,
- shell->selected->number);
-
- g_free(name_temp);
- } else {
- goto no_context_help;
- }
-
- if (shell->help_viewer) {
- help_viewer_open_page(shell->help_viewer, temp);
- } else {
- gchar *help_dir;
-
- help_dir = g_build_filename(params.path_data, "doc", NULL);
- shell->help_viewer = help_viewer_new(help_dir, temp);
- g_free(help_dir);
- }
-
- g_free(temp);
- } else {
- GtkWidget *dialog;
-
-no_context_help:
- dialog = gtk_message_dialog_new(GTK_WINDOW(shell->window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "No context help available.");
-
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- }
-}
-
-void cb_report_bug()
-{
- open_url("http://wiki.hardinfo.org/BugReports");
-}
-
-void cb_donate()
-{
- open_url("http://wiki.hardinfo.org/Donate");
-}
-
-void cb_refresh()
-{
- shell_do_reload();
-}
-
-void cb_copy_to_clipboard()
-{
- ShellModuleEntry *entry = shell_get_main_shell()->selected;
-
- if (entry) {
- gchar *data = module_entry_function(entry);
- GtkClipboard *clip =
- gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE));
- ReportContext *ctx = report_context_text_new(NULL);
-
- ctx->entry = entry;
-
- report_header(ctx);
- report_table(ctx, data);
- report_footer(ctx);
-
- gtk_clipboard_set_text(clip, ctx->output, -1);
-
- g_free(data);
- report_context_free(ctx);
- }
-}
-
-void cb_side_pane()
-{
- gboolean visible;
-
- visible = shell_action_get_active("SidePaneAction");
- shell_set_side_pane_visible(visible);
-}
-
-void cb_toolbar()
-{
- gboolean visible;
-
- visible = shell_action_get_active("ToolbarAction");
- shell_ui_manager_set_visible("/MainMenuBarAction", visible);
-}
-
-void cb_about_module(GtkAction * action)
-{
- Shell *shell = shell_get_main_shell();
- GSList *modules = shell->tree->modules;
- ModuleAbout *ma;
- gchar *name;
-
- g_object_get(G_OBJECT(action), "tooltip", &name, NULL);
-
- for (; modules; modules = modules->next) {
- ShellModule *sm = (ShellModule *) modules->data;
-
- if (!g_str_equal(sm->name, name))
- continue;
-
- if ((ma = module_get_about(sm))) {
- GtkWidget *about;
- gchar *text;
-
- about = gtk_about_dialog_new();
-
- text = g_strdup_printf("%s Module", sm->name);
- gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), text);
- g_free(text);
-
- gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about),
- ma->version);
-
- text = g_strdup_printf("Written by %s\nLicensed under %s",
- ma->author, ma->license);
- gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about), text);
- g_free(text);
-
- if (ma->description)
- gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about),
- ma->description);
-
- gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(about), sm->icon);
- gtk_dialog_run(GTK_DIALOG(about));
- gtk_widget_destroy(about);
- } else {
- g_warning
- ("No about information is associated with the %s module.",
- name);
- }
-
- break;
- }
-
- g_free(name);
-}
-
-void cb_about()
-{
- GtkWidget *about;
- 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
- };
- const gchar *artists[] = {
- "Jakub Szypulka",
- "Tango Project",
- "The GNOME Project",
- "VMWare, Inc. (USB icon from VMWare Workstation 6)",
- NULL
- };
-
- about = gtk_about_dialog_new();
- gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), "HardInfo");
- gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about), VERSION);
- gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about),
- "Copyright \302\251 2003-2009 "
- "Leandro A. F. Pereira");
- gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about),
- "System information and benchmark tool");
- gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(about),
- icon_cache_get_pixbuf("logo.png"));
-
- gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(about),
- "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\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");
-#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_dialog_run(GTK_DIALOG(about));
- gtk_widget_destroy(about);
-}
-
-void cb_generate_report()
-{
- Shell *shell = shell_get_main_shell();
- gboolean btn_refresh = shell_action_get_enabled("RefreshAction");
- gboolean btn_copy = shell_action_get_enabled("CopyAction");
-
- report_dialog_show(shell->tree->model, shell->window);
-
- shell_action_set_enabled("RefreshAction", btn_refresh);
- shell_action_set_enabled("CopyAction", btn_copy);
-}
-
-void cb_quit(void)
-{
- do {
- gtk_main_quit();
- } while (gtk_main_level() > 1);
-
- exit(0);
-}
diff --git a/hardinfo2/shell/iconcache.c b/hardinfo2/shell/iconcache.c
deleted file mode 100644
index 74b19b0c..00000000
--- a/hardinfo2/shell/iconcache.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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 <iconcache.h>
-#include <config.h>
-#include <hardinfo.h>
-
-static GHashTable *cache = NULL;
-
-void icon_cache_init(void)
-{
- if (!cache) {
- DEBUG("initializing icon cache");
- cache = g_hash_table_new(g_str_hash, g_str_equal);
- }
-}
-
-GdkPixbuf *icon_cache_get_pixbuf(const gchar * file)
-{
- GdkPixbuf *icon;
-
- if (!cache)
- icon_cache_init();
-
- icon = g_hash_table_lookup(cache, file);
-
- if (!icon) {
- gchar *path;
-
- path = g_build_filename(params.path_data, "pixmaps", file, NULL);
- icon = gdk_pixbuf_new_from_file(path, NULL);
- g_hash_table_insert(cache, g_strdup(file), icon);
-
- g_free(path);
- }
-
- if (icon) {
- g_object_ref(icon);
- }
-
- return icon;
-}
-
-GtkWidget *icon_cache_get_image(const gchar * file)
-{
- GdkPixbuf *icon;
-
- icon = icon_cache_get_pixbuf(file);
- return gtk_image_new_from_pixbuf(icon);
-}
-
-GdkPixbuf *icon_cache_get_pixbuf_at_size(const gchar * file, gint wid,
- gint hei)
-{
- GdkPixbuf *icon;
-
- if (!cache)
- icon_cache_init();
-
- icon = g_hash_table_lookup(cache, file);
-
- if (!icon) {
- gchar *path;
-
- path = g_build_filename(params.path_data, "pixmaps", file, NULL);
- icon = gdk_pixbuf_new_from_file_at_size(path, wid, hei, NULL);
- g_hash_table_insert(cache, g_strdup(file), icon);
-
- g_free(path);
- }
-
- if (icon) {
- g_object_ref(icon);
- }
-
- return icon;
-}
-
-GtkWidget *icon_cache_get_image_at_size(const gchar * file, gint wid,
- gint hei)
-{
- GdkPixbuf *icon;
-
- icon = icon_cache_get_pixbuf_at_size(file, wid, hei);
- return gtk_image_new_from_pixbuf(icon);
-}
diff --git a/hardinfo2/shell/loadgraph.c b/hardinfo2/shell/loadgraph.c
deleted file mode 100644
index c8503072..00000000
--- a/hardinfo2/shell/loadgraph.c
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Simple Load Graph
- * Version 0.1 - Wed, Jan 11 2006
- * - initial release
- * Version 0.1.1 - Fri, Jan 13 2006
- * - fixes autoscaling
- * - add color
- *
- * Copyright (C) 2006 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * The Simple Load Graph is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License, version 2.1, as published by the Free Software Foundation.
- *
- * The Simple Load Graph 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
- * Lesser General Public License for more details.
- *
- * 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.
- */
-
-#include "loadgraph.h"
-
-static void _draw(LoadGraph * lg);
-
-LoadGraph *load_graph_new(gint size)
-{
- LoadGraph *lg;
-
- lg = g_new0(LoadGraph, 1);
-
- size++;
-
- lg->suffix = g_strdup("");
- lg->area = gtk_drawing_area_new();
- lg->size = (size * 3) / 2;
- lg->data = g_new0(gint, lg->size);
-
- lg->scale = 1.0;
-
- lg->width = size * 6;
- lg->height = size * 2;
-
- lg->max_value = 1;
- lg->remax_count = 0;
-
- lg->layout = pango_layout_new(gtk_widget_get_pango_context(lg->area));
-
- gtk_widget_set_size_request(lg->area, lg->width, lg->height);
- gtk_widget_show(lg->area);
-
- return lg;
-}
-
-void load_graph_set_data_suffix(LoadGraph * lg, gchar * suffix)
-{
- g_free(lg->suffix);
- lg->suffix = g_strdup(suffix);
-}
-
-gchar *load_graph_get_data_suffix(LoadGraph * lg)
-{
- return lg->suffix;
-}
-
-GtkWidget *load_graph_get_framed(LoadGraph * lg)
-{
- GtkWidget *align, *frame;
-
- align = gtk_alignment_new(0.5, 0.5, 0, 0);
- gtk_widget_show(align);
-
- frame = gtk_frame_new(NULL);
- gtk_widget_show(frame);
- gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
-
- gtk_container_add(GTK_CONTAINER(align), frame);
- gtk_container_add(GTK_CONTAINER(frame), lg->area);
-
- return align;
-}
-
-void load_graph_clear(LoadGraph * lg)
-{
- gint i;
-
- for (i = 0; i < lg->size; i++)
- lg->data[i] = 0;
-
- lg->scale = 1.0;
- lg->max_value = 1;
- lg->remax_count = 0;
-
- _draw(lg);
-}
-
-void load_graph_set_color(LoadGraph * lg, LoadGraphColor color)
-{
- lg->color = color;
- gdk_rgb_gc_set_foreground(lg->trace, lg->color);
- gdk_rgb_gc_set_foreground(lg->fill, lg->color - 0x303030);
- gdk_rgb_gc_set_foreground(lg->grid, lg->color - 0xcdcdcd);
-}
-
-void load_graph_destroy(LoadGraph * lg)
-{
- g_free(lg->data);
- gtk_widget_destroy(lg->area);
- gdk_pixmap_unref(lg->buf);
- g_object_unref(lg->trace);
- g_object_unref(lg->grid);
- g_object_unref(lg->fill);
- g_object_unref(lg->layout);
- g_free(lg);
-}
-
-static gboolean _expose(GtkWidget * widget, GdkEventExpose * event,
- 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);
- return FALSE;
-}
-
-void load_graph_configure_expose(LoadGraph * lg)
-{
- /* creates the backing store pixmap */
- gtk_widget_realize(lg->area);
- lg->buf = gdk_pixmap_new(lg->area->window, lg->width, lg->height, -1);
-
- /* create the graphic contexts */
- lg->grid = gdk_gc_new(GDK_DRAWABLE(lg->buf));
- lg->trace = gdk_gc_new(GDK_DRAWABLE(lg->buf));
- lg->fill = gdk_gc_new(GDK_DRAWABLE(lg->buf));
-
- /* the default color is green */
- load_graph_set_color(lg, LG_COLOR_GREEN);
-
- /* init graphic contexts */
- gdk_gc_set_line_attributes(lg->grid,
- 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
-
- /* configures the expose event */
- g_signal_connect(G_OBJECT(lg->area), "expose-event",
- (GCallback) _expose, lg);
-}
-
-static void _draw_label_and_line(LoadGraph * lg, gint position, gint value)
-{
- gchar *tmp;
-
- /* draw lines */
- if (position > 0)
- gdk_draw_line(GDK_DRAWABLE(lg->buf), lg->grid, 0, position,
- lg->width, position);
- else
- position = -1 * position;
-
- /* draw label */
- tmp =
- 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);
- gdk_draw_layout(GDK_DRAWABLE(lg->buf), lg->trace, 2, position,
- lg->layout);
-
- g_free(tmp);
-}
-
-static void _draw(LoadGraph * lg)
-{
- GdkDrawable *draw = GDK_DRAWABLE(lg->buf);
- gint i, d;
-
- /* clears the drawing area */
- gdk_draw_rectangle(draw, lg->area->style->black_gc,
- 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[0].x = points[1].x = 0;
- points[0].y = points[i].y = lg->height;
- points[i].x = points[i - 1].x = lg->width;
-
- gdk_draw_polygon(draw, lg->fill, TRUE, points, lg->size + 1);
- gdk_draw_polygon(draw, lg->trace, FALSE, points, lg->size + 1);
-
- g_free(points);
-
- /* 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);
-
- /* horizontal bars and labels; 25%, 50% and 75% */
- _draw_label_and_line(lg, -1, lg->max_value);
- _draw_label_and_line(lg, lg->height / 4, 3 * (lg->max_value / 4));
- _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)
-{
- gint i;
-
- if (value < 0)
- return;
-
- /* shift-right our data */
- for (i = 0; i < lg->size; i++) {
- lg->data[i] = lg->data[i + 1];
- }
-
- /* insert the updated value */
- lg->data[i] = value;
-
- /* calculates the maximum value */
- if (lg->remax_count++ > 20) {
- /* 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];
- }
-
- 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);
- }
-
- /* recalculates the scale; always use 90% of it */
- lg->scale = 0.90 * ((gfloat) lg->height / (gfloat) lg->max_value);
-
- /* redraw */
- _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();
-
- return 0;
-}
-#endif
diff --git a/hardinfo2/shell/menu.c b/hardinfo2/shell/menu.c
deleted file mode 100644
index 6b96e271..00000000
--- a/hardinfo2/shell/menu.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * HardInfo
- * Copyright(C) 2003-2007 Leandro A. F. Pereira.
- *
- * menu.c is based on UI Manager tutorial by Ryan McDougall
- * Copyright(C) 2005 Ryan McDougall.
- *
- * 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 Library 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <gtk/gtk.h>
-#include <menu.h>
-#include <config.h>
-
-#include <stock.h>
-
-#include <callbacks.h>
-#include <hardinfo.h>
-
-#include "uidefs.h"
-
-static GtkActionEntry entries[] = {
- {"InformationMenuAction", NULL, "_Information"}, /* name, stock id, label */
- {"RemoteMenuAction", NULL, "_Remote"},
- {"ViewMenuAction", NULL, "_View"},
- {"HelpMenuAction", NULL, "_Help"},
- {"HelpMenuModulesAction", HI_STOCK_ABOUT_MODULES, "About _Modules"},
- {"MainMenuBarAction", NULL, ""},
-
- {"ReportAction", HI_STOCK_REPORT, /* name, stock id */
- "Generate _Report", "<control>R", /* label, accelerator */
- NULL, /* tooltip */
- G_CALLBACK(cb_generate_report)},
-
- {"SyncManagerAction", HI_STOCK_SYNC_MENU,
- "_Network Updater...", NULL,
- NULL,
- G_CALLBACK(cb_sync_manager)},
-
- {"OpenAction", GTK_STOCK_OPEN,
- "_Open...", NULL,
- NULL,
- G_CALLBACK(cb_sync_manager)},
-
- {"ConnectToAction", GTK_STOCK_CONNECT,
- "_Connect to...", NULL,
- NULL,
- G_CALLBACK(cb_connect_to)},
-
- {"ManageAction", NULL,
- "_Manage hosts...", NULL,
- NULL,
- G_CALLBACK(cb_manage_hosts)},
-
- {"LocalComputerAction", GTK_STOCK_HOME,
- "_Local computer", NULL,
- NULL,
- G_CALLBACK(cb_local_computer)},
-
- {"CopyAction", GTK_STOCK_COPY,
- "_Copy to Clipboard", "<control>C",
- "Copy to clipboard",
- G_CALLBACK(cb_copy_to_clipboard)},
-
- {"SaveGraphAction", GTK_STOCK_SAVE_AS,
- "_Save image as...", "<control>S",
- NULL,
- G_CALLBACK(cb_save_graphic)},
-
- {"RefreshAction", GTK_STOCK_REFRESH,
- "_Refresh", "F5",
- NULL,
- G_CALLBACK(cb_refresh)},
-
- {"OnlineDocsAction", GTK_STOCK_HELP,
- "Contents", "F1",
- NULL,
- G_CALLBACK(cb_open_online_docs)},
-
- {"ContextHelpAction", NULL,
- "Context help", "<Ctrl>F1",
- NULL,
- G_CALLBACK(cb_open_online_docs_context)},
-
- {"HomePageAction", HI_STOCK_INTERNET,
- "_Open HardInfo Web Site", NULL,
- NULL,
- G_CALLBACK(cb_open_web_page)},
-
- {"ReportBugAction", HI_STOCK_INTERNET,
- "_Report bug", NULL,
- NULL,
- G_CALLBACK(cb_report_bug)},
-
- {"DonateAction", HI_STOCK_DONATE,
- "_Donate to the project", NULL,
- NULL,
- G_CALLBACK(cb_donate)},
-
- {"AboutAction", GTK_STOCK_ABOUT,
- "_About HardInfo", NULL,
- "Displays program version information",
- G_CALLBACK(cb_about)},
-
- {"QuitAction", GTK_STOCK_QUIT,
- "_Quit", "<control>Q",
- NULL,
- G_CALLBACK(cb_quit)}
-};
-
-static GtkToggleActionEntry toggle_entries[] = {
- {"SidePaneAction", NULL,
- "_Side Pane", NULL,
- "Toggles side pane visibility",
- G_CALLBACK(cb_side_pane)},
- {"ToolbarAction", NULL,
- "_Toolbar", NULL,
- NULL,
- G_CALLBACK(cb_toolbar)},
- {"ActAsServerAction", NULL,
- "_Accept connections", NULL,
- NULL,
- G_CALLBACK(cb_act_as_server) }
-};
-
-/* Implement a handler for GtkUIManager's "add_widget" signal. The UI manager
- * will emit this signal whenever it needs you to place a new widget it has. */
-static void
-menu_add_widget(GtkUIManager * ui, GtkWidget * widget,
- GtkContainer * container)
-{
- gtk_box_pack_start(GTK_BOX(container), widget, FALSE, FALSE, 0);
- gtk_widget_show(widget);
-}
-
-void menu_init(Shell * shell)
-{
- GtkWidget *menu_box; /* Packing box for the menu and toolbars */
- GtkActionGroup *action_group; /* Packing group for our Actions */
- GtkUIManager *menu_manager; /* The magic widget! */
- GError *error; /* For reporting exceptions or errors */
- GtkAccelGroup *accel_group;
-
- /* Create our objects */
- menu_box = shell->vbox;
- action_group = gtk_action_group_new("HardInfo");
- menu_manager = gtk_ui_manager_new();
-
- shell->action_group = action_group;
- shell->ui_manager = menu_manager;
-
- /* Pack up our objects:
- * menu_box -> window
- * actions -> action_group
- * action_group -> menu_manager */
- 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;
- gtk_ui_manager_add_ui_from_string(menu_manager, uidefs_str, -1,
- &error);
-
- if (error) {
- g_error("Building menus failed: %s", error->message);
- g_error_free(error);
- return;
- }
-
- /* Enable menu accelerators */
- accel_group = gtk_ui_manager_get_accel_group(menu_manager);
- gtk_window_add_accel_group(GTK_WINDOW(shell->window), accel_group);
-
- /* Connect up important signals */
- /* This signal is necessary in order to place widgets from the UI manager
- * into the menu_box */
- g_signal_connect(menu_manager, "add_widget",
- G_CALLBACK(menu_add_widget), menu_box);
-
- /* Show the window and run the main loop, we're done! */
- gtk_widget_show(menu_box);
-
- gtk_toolbar_set_style(GTK_TOOLBAR
- (gtk_ui_manager_get_widget
- (shell->ui_manager, "/MainMenuBarAction")),
- GTK_TOOLBAR_BOTH_HORIZ);
-}
diff --git a/hardinfo2/shell/report.c b/hardinfo2/shell/report.c
deleted file mode 100644
index fb87ee23..00000000
--- a/hardinfo2/shell/report.c
+++ /dev/null
@@ -1,890 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 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 <report.h>
-#include <stdio.h>
-#include <string.h>
-#include <shell.h>
-#include <iconcache.h>
-#include <hardinfo.h>
-#include <config.h>
-
-static ReportDialog *report_dialog_new(GtkTreeModel * model,
- GtkWidget * parent);
-static void set_all_active(ReportDialog * rd, gboolean setting);
-
-static FileTypes file_types[] = {
- {"HTML (*.html)", "text/html", ".html", report_context_html_new},
- {"Plain Text (*.txt)", "text/plain", ".txt", report_context_text_new},
- {NULL, NULL, NULL, NULL}
-};
-
-void report_header(ReportContext * ctx)
-{
- ctx->header(ctx);
-}
-
-void report_footer(ReportContext * ctx)
-{
- ctx->footer(ctx);
-}
-
-void report_title(ReportContext * ctx, gchar * text)
-{
- ctx->title(ctx, text);
-}
-
-void report_subtitle(ReportContext * ctx, gchar * text)
-{
- ctx->subtitle(ctx, text);
-}
-
-void report_subsubtitle(ReportContext * ctx, gchar * text)
-{
- ctx->subsubtitle(ctx, text);
-}
-
-void report_key_value(ReportContext * ctx, gchar * key, gchar * value)
-{
- ctx->keyvalue(ctx, key, 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;
-
- /* Either the Progress column or the Value column is available at
- the same time. So we don't count them. */
-
- if (ctx->columns & REPORT_COL_EXTRA1)
- columns++;
-
- if (ctx->columns & REPORT_COL_EXTRA2)
- columns++;
-
- return columns;
-}
-
-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.
-
- so i don't forget how to encode the images inside the html files:
- http://en.wikipedia.org/wiki/Data:_URI_scheme */
-
- ctx->is_image_enabled = (g_key_file_get_boolean(keyfile,
- group,
- "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, '$') + 1;
-
- value = g_key_file_get_value(keyfile, group, key, NULL);
- if (g_str_equal(title, "Extra1")) {
- ctx->columns |= REPORT_COL_EXTRA1;
- } else if (g_str_equal(title, "Extra2")) {
- ctx->columns |= REPORT_COL_EXTRA2;
- } else if (g_str_equal(title, "Value")) {
- ctx->columns |= REPORT_COL_VALUE;
- } else if (g_str_equal(title, "TextValue")) {
- ctx->columns |= REPORT_COL_TEXTVALUE;
- } else if (g_str_equal(title, "Progress")) {
- ctx->columns |= REPORT_COL_PROGRESS;
- }
-
- g_hash_table_replace(ctx->column_titles, title, g_strdup(value));
-
- g_free(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);
- }
-
-}
-
-void report_table(ReportContext * ctx, gchar * text)
-{
- GKeyFile *key_file = g_key_file_new();
- gchar **groups;
- gint i;
-
- /* make only "Value" column visible ("Key" column is always visible) */
- ctx->columns = REPORT_COL_VALUE;
- ctx->show_column_headers = FALSE;
-
- /**/
- 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);
- break;
- }
- }
-
- for (i = 0; groups[i]; i++) {
- gchar *group, *tmpgroup;
- gchar **keys;
- gint j;
-
- if (groups[i][0] == '$') {
- continue;
- }
-
- group = groups[i];
-
- tmpgroup = g_strdup(group);
- strend(group, '#');
-
- report_subsubtitle(ctx, group);
-
-#if 0
- if (ctx->is_image_enabled) {
- report_embed_image(ctx, key_file, group);
- } else {
-#endif
- keys = g_key_file_get_keys(key_file, tmpgroup, NULL, NULL);
- for (j = 0; keys[j]; j++) {
- gchar *key = keys[j];
- gchar *value;
-
- value = g_key_file_get_value(key_file, tmpgroup, key, NULL);
-
- if (g_utf8_validate(key, -1, NULL) && g_utf8_validate(value, -1, NULL)) {
- strend(key, '#');
-
- if (g_str_equal(value, "...")) {
- g_free(value);
- if (!(value = ctx->entry->fieldfunc(key))) {
- value = g_strdup("...");
- }
- }
-
- if (*key == '$') {
- report_key_value(ctx, strchr(key + 1, '$') + 1,
- value);
- } else {
- report_key_value(ctx, key, value);
- }
-
- }
-
- g_free(value);
- }
-
- g_strfreev(keys);
-#if 0
- }
-#endif
- g_free(tmpgroup);
- }
-
- g_strfreev(groups);
- g_key_file_free(key_file);
-}
-
-static void report_html_header(ReportContext * ctx)
-{
- if (ctx->output)
- g_free(ctx->output);
-
- ctx->output =
- g_strdup_printf
- ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Final//EN\">\n"
- "<html><head>\n" "<title>HardInfo (%s) System Report</title>\n"
- "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"
- "<style>\n" " body { background: #fff }\n"
- " .title { font: bold 130%% serif; color: #0066FF; padding: 30px 0 10px 0 }\n"
- " .stitle { font: bold 100%% sans-serif; color: #0044DD; padding: 30px 0 10px 0 }\n"
- " .sstitle{ font: bold 80%% serif; color: #000000; background: #efefef }\n"
- " .field { font: 80%% sans-serif; color: #000000; padding: 2px; padding-left: 50px }\n"
- " .value { font: 80%% sans-serif; color: #505050 }\n"
- "</style>\n" "</head><body>\n",
- VERSION);
-}
-
-static void report_html_footer(ReportContext * ctx)
-{
- ctx->output = h_strconcat(ctx->output,
- "</table></html>", NULL);
-}
-
-static void report_html_title(ReportContext * ctx, gchar * text)
-{
- if (!ctx->first_table) {
- ctx->output = h_strdup_cprintf("</table>", ctx->output);
- }
-
- ctx->output = h_strdup_cprintf("<h1 class=\"title\">%s</h1>", ctx->output, text);
-}
-
-static void report_html_subtitle(ReportContext * ctx, gchar * text)
-{
- gint columns = report_get_visible_columns(ctx);
-
- if (!ctx->first_table) {
- ctx->output = h_strdup_cprintf("</table>", ctx->output);
- } else {
- ctx->first_table = FALSE;
- }
-
- ctx->output = h_strdup_cprintf("<table><tr><td colspan=\"%d\" class=\"stit"
- "le\">%s</td></tr>\n",
- ctx->output,
- columns,
- text);
-}
-
-static void report_html_subsubtitle(ReportContext * ctx, gchar * text)
-{
- gint columns = report_get_visible_columns(ctx);
-
- ctx->output = h_strdup_cprintf("<tr><td colspan=\"%d\" class=\"ssti"
- "tle\">%s</td></tr>\n",
- ctx->output,
- columns,
- text);
-}
-
-static void
-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",
- ctx->output,
- 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,
- values[i]);
- }
-
- ctx->output = h_strdup_cprintf("</tr>\n", ctx->output);
-
- g_strfreev(values);
- }
-}
-
-static void report_text_header(ReportContext * ctx)
-{
- if (ctx->output)
- g_free(ctx->output);
-
- ctx->output = g_strdup("");
-}
-
-static void report_text_footer(ReportContext * ctx)
-{
-}
-
-static void report_text_title(ReportContext * ctx, gchar * text)
-{
- gchar *str = (gchar *) ctx->output;
- int i = strlen(text);
-
- str = h_strdup_cprintf("\n%s\n", str, text);
- for (; i; i--)
- str = h_strconcat(str, "*", NULL);
-
- str = h_strconcat(str, "\n\n", NULL);
- ctx->output = str;
-}
-
-static void report_text_subtitle(ReportContext * ctx, gchar * text)
-{
- gchar *str = ctx->output;
- int i = strlen(text);
-
- str = h_strdup_cprintf("\n%s\n", str, text);
- for (; i; i--)
- str = h_strconcat(str, "-", NULL);
-
- str = h_strconcat(str, "\n\n", NULL);
- ctx->output = str;
-}
-
-static void report_text_subsubtitle(ReportContext * ctx, gchar * text)
-{
- ctx->output = h_strdup_cprintf("-%s-\n", ctx->output, text);
-}
-
-static void
-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);
- else
- 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,
- values[i]);
- }
-
- ctx->output = h_strdup_cprintf("\n", ctx->output);
-
- g_strfreev(values);
- }
-}
-
-static GSList *report_create_module_list_from_dialog(ReportDialog * rd)
-{
- ShellModule *module;
- GSList *modules = NULL;
- GtkTreeModel *model = rd->model;
- GtkTreeIter iter;
-
- gtk_tree_model_get_iter_first(model, &iter);
- do {
- gboolean selected;
- gchar *name;
-
- gtk_tree_model_get(model, &iter, TREE_COL_SEL, &selected, -1);
- if (!selected)
- continue;
-
- module = g_new0(ShellModule, 1);
-
- gtk_tree_model_get(model, &iter, TREE_COL_NAME, &name, -1);
- module->name = name;
- module->entries = NULL;
-
- if (gtk_tree_model_iter_has_child(model, &iter)) {
- ShellModuleEntry *entry;
-
- gint children = gtk_tree_model_iter_n_children(model, &iter);
- gint i;
-
- for (i = 0; i < children; i++) {
- GtkTreeIter child;
-
- gtk_tree_model_iter_nth_child(model, &child, &iter, i);
-
- gtk_tree_model_get(model, &child, TREE_COL_SEL, &selected,
- -1);
- if (!selected)
- continue;
-
- gtk_tree_model_get(model, &child, TREE_COL_MODULE_ENTRY, &entry,
- -1);
- module->entries = g_slist_append(module->entries, entry);
- }
- }
-
- modules = g_slist_append(modules, module);
- } while (gtk_tree_model_iter_next(rd->model, &iter));
-
- return modules;
-}
-
-static void
-report_create_inner_from_module_list(ReportContext * ctx, GSList * modules)
-{
- for (; modules; modules = modules->next) {
- ShellModule *module = (ShellModule *) modules->data;
- GSList *entries;
-
- if (!params.gui_running)
- fprintf(stderr, "\033[40;32m%s\033[0m\n", module->name);
-
- report_title(ctx, module->name);
-
- for (entries = module->entries; entries; entries = entries->next) {
- ShellModuleEntry *entry = (ShellModuleEntry *) entries->data;
-
- if (!params.gui_running)
- fprintf(stderr, "\033[2K\033[40;32;1m %s\033[0m\n",
- entry->name);
-
- ctx->entry = entry;
- report_subtitle(ctx, entry->name);
- module_entry_scan(entry);
- report_table(ctx, module_entry_function(entry));
- }
- }
-}
-
-void report_module_list_free(GSList * modules)
-{
- GSList *m;
-
- for (m = modules; m; m = m->next) {
- ShellModule *module = (ShellModule *) m->data;
-
- g_slist_free(module->entries);
- }
-
- g_slist_free(modules);
-}
-
-static gchar *report_get_filename(void)
-{
- GtkWidget *dialog;
- gchar *filename = NULL;
-
- dialog = gtk_file_chooser_dialog_new("Save File",
- NULL,
- GTK_FILE_CHOOSER_ACTION_SAVE,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- GTK_STOCK_SAVE,
- GTK_RESPONSE_ACCEPT, NULL);
-
- gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog),
- "hardinfo_report");
-
- file_chooser_add_filters(dialog, file_types);
- file_chooser_open_expander(dialog);
-
- if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
- gchar *ext = file_chooser_get_extension(dialog, file_types);
- filename = file_chooser_build_filename(dialog, ext);
- }
- gtk_widget_destroy(dialog);
- return filename;
-}
-
-ReportContext *report_context_html_new()
-{
- ReportContext *ctx;
-
- ctx = g_new0(ReportContext, 1);
- ctx->header = report_html_header;
- ctx->footer = report_html_footer;
- ctx->title = report_html_title;
- ctx->subtitle = report_html_subtitle;
- ctx->subsubtitle = report_html_subsubtitle;
- ctx->keyvalue = report_html_key_value;
-
- ctx->output = g_strdup("");
- ctx->format = REPORT_FORMAT_HTML;
-
- ctx->column_titles = g_hash_table_new(g_str_hash, g_str_equal);
- ctx->first_table = TRUE;
-
- return ctx;
-}
-
-ReportContext *report_context_text_new()
-{
- ReportContext *ctx;
-
- ctx = g_new0(ReportContext, 1);
- ctx->header = report_text_header;
- ctx->footer = report_text_footer;
- ctx->title = report_text_title;
- ctx->subtitle = report_text_subtitle;
- ctx->subsubtitle = report_text_subsubtitle;
- ctx->keyvalue = report_text_key_value;
-
- ctx->output = g_strdup("");
- ctx->format = REPORT_FORMAT_TEXT;
-
- ctx->column_titles = g_hash_table_new(g_str_hash, g_str_equal);
- ctx->first_table = TRUE;
-
- return ctx;
-}
-
-void report_context_free(ReportContext * ctx)
-{
- g_hash_table_destroy(ctx->column_titles);
- g_free(ctx->output);
- g_free(ctx);
-}
-
-void report_create_from_module_list(ReportContext * ctx, GSList * modules)
-{
- report_header(ctx);
-
- report_create_inner_from_module_list(ctx, modules);
- report_module_list_free(modules);
-
- report_footer(ctx);
-}
-
-gchar *report_create_from_module_list_format(GSList * modules,
- ReportFormat format)
-{
- ReportContext *(*create_context) ();
- ReportContext *ctx;
- gchar *retval;
-
- if (format >= N_REPORT_FORMAT)
- return NULL;
-
- create_context = file_types[format].data;
- if (!create_context)
- return NULL;
-
- ctx = create_context();
-
- report_create_from_module_list(ctx, modules);
- retval = g_strdup(ctx->output);
-
- report_context_free(ctx);
-
- return retval;
-}
-
-static gboolean report_generate(ReportDialog * rd)
-{
- GSList *modules;
- ReportContext *ctx;
- ReportContext *(*create_context) ();
- gchar *file;
- FILE *stream;
-
- if (!(file = report_get_filename()))
- return FALSE;
-
- if (!(stream = fopen(file, "w+"))) {
- g_free(file);
- return FALSE;
- }
-
- create_context = file_types_get_data_by_name(file_types, file);
-
- if (!create_context) {
- g_warning("Cannot create ReportContext. Programming bug?");
- g_free(file);
- return FALSE;
- }
-
- ctx = create_context();
- modules = report_create_module_list_from_dialog(rd);
-
- report_create_from_module_list(ctx, modules);
- fputs(ctx->output, stream);
- fclose(stream);
-
- if (ctx->format == REPORT_FORMAT_HTML) {
- GtkWidget *dialog;
- dialog = gtk_message_dialog_new(NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_NONE,
- "Open the report with your web browser?");
- gtk_dialog_add_buttons(GTK_DIALOG(dialog),
- GTK_STOCK_NO, GTK_RESPONSE_REJECT,
- GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
- 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);
- }
-
- gtk_widget_destroy(dialog);
- }
-
- report_context_free(ctx);
- g_free(file);
-
- return TRUE;
-}
-
-void report_dialog_show(GtkTreeModel * model, GtkWidget * parent)
-{
- gboolean success;
- ReportDialog *rd = report_dialog_new(model, parent);
-
- if (gtk_dialog_run(GTK_DIALOG(rd->dialog)) == GTK_RESPONSE_ACCEPT) {
- shell_status_update("Generating report...");
- gtk_widget_hide(rd->dialog);
- shell_view_set_enabled(FALSE);
- shell_status_set_enabled(TRUE);
-
- success = report_generate(rd);
-
- shell_status_set_enabled(FALSE);
-
- if (success)
- shell_status_update("Report saved.");
- else
- shell_status_update("Error while creating the report.");
- }
-
- set_all_active(rd, FALSE);
- gtk_widget_destroy(rd->dialog);
- g_free(rd);
-}
-
-static void
-set_children_active(GtkTreeModel * model, GtkTreeIter * iter,
- gboolean setting)
-{
- if (gtk_tree_model_iter_has_child(model, iter)) {
- gint children = gtk_tree_model_iter_n_children(model, iter);
-
- gtk_tree_store_set(GTK_TREE_STORE(model), iter, TREE_COL_SEL,
- setting, -1);
-
- for (children--; children >= 0; children--) {
- GtkTreeIter child;
-
- gtk_tree_model_iter_nth_child(model, &child, iter, children);
- gtk_tree_store_set(GTK_TREE_STORE(model), &child, TREE_COL_SEL,
- setting, -1);
- }
- }
-}
-
-static void set_all_active(ReportDialog * rd, gboolean setting)
-{
- GtkTreeIter iter;
- GtkTreeModel *model = rd->model;
-
- gtk_tree_model_get_iter_first(model, &iter);
-
- do {
- set_children_active(model, &iter, setting);
- } while (gtk_tree_model_iter_next(model, &iter));
-}
-
-static void report_dialog_sel_none(GtkWidget * widget, ReportDialog * rd)
-{
- set_all_active(rd, FALSE);
-}
-
-static void report_dialog_sel_all(GtkWidget * widget, ReportDialog * rd)
-{
- set_all_active(rd, TRUE);
-}
-
-static void
-report_dialog_sel_toggle(GtkCellRendererToggle * cellrenderertoggle,
- gchar * path_str, ReportDialog * rd)
-{
- GtkTreeModel *model = rd->model;
- GtkTreeIter iter;
- GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
- gboolean active;
-
- gtk_tree_model_get_iter(model, &iter, path);
- gtk_tree_model_get(model, &iter, TREE_COL_SEL, &active, -1);
-
- active = !active;
- gtk_tree_store_set(GTK_TREE_STORE(model), &iter, TREE_COL_SEL, active,
- -1);
- set_children_active(model, &iter, active);
-
- 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);
- }
- }
-
- gtk_tree_path_free(path);
-}
-
-static ReportDialog
- * report_dialog_new(GtkTreeModel * model, GtkWidget * parent)
-{
- ReportDialog *rd;
- GtkWidget *dialog;
- GtkWidget *dialog1_vbox;
- GtkWidget *scrolledwindow2;
- GtkWidget *treeview2;
- GtkWidget *vbuttonbox3;
- GtkWidget *button3;
- GtkWidget *button6;
- GtkWidget *dialog1_action_area;
- GtkWidget *button8;
- GtkWidget *button7;
- GtkWidget *label;
- GtkWidget *hbox;
-
- GtkTreeViewColumn *column;
- GtkCellRenderer *cr_text, *cr_pbuf, *cr_toggle;
-
- rd = g_new0(ReportDialog, 1);
-
- dialog = gtk_dialog_new();
- gtk_window_set_title(GTK_WINDOW(dialog), "Generate Report");
- gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);
- gtk_window_set_default_size(GTK_WINDOW(dialog), 420, 260);
- gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent));
- gtk_window_set_position(GTK_WINDOW(dialog),
- GTK_WIN_POS_CENTER_ON_PARENT);
- gtk_window_set_type_hint(GTK_WINDOW(dialog),
- GDK_WINDOW_TYPE_HINT_DIALOG);
-
- dialog1_vbox = GTK_DIALOG(dialog)->vbox;
- gtk_box_set_spacing(GTK_BOX(dialog1_vbox), 5);
- gtk_container_set_border_width(GTK_CONTAINER(dialog1_vbox), 4);
- gtk_widget_show(dialog1_vbox);
-
- hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(dialog1_vbox), hbox, FALSE, FALSE, 0);
-
- label = gtk_label_new("<big><b>Generate Report</b></big>\n"
- "Please choose the information that you wish "
- "to view in your report:");
- gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
- gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
- gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-
- 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);
-
- hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(dialog1_vbox), hbox, TRUE, TRUE, 0);
- gtk_widget_show(hbox);
-
- scrolledwindow2 = gtk_scrolled_window_new(NULL, NULL);
- gtk_widget_show(scrolledwindow2);
- gtk_box_pack_start(GTK_BOX(hbox), scrolledwindow2, TRUE, TRUE,
- 0);
- gtk_widget_set_size_request(scrolledwindow2, -1, 200);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow2),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW
- (scrolledwindow2), GTK_SHADOW_IN);
-
- treeview2 = gtk_tree_view_new_with_model(model);
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview2), FALSE);
- gtk_widget_show(treeview2);
- gtk_container_add(GTK_CONTAINER(scrolledwindow2), treeview2);
-
- column = gtk_tree_view_column_new();
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview2), column);
-
- cr_toggle = gtk_cell_renderer_toggle_new();
- gtk_tree_view_column_pack_start(column, cr_toggle, FALSE);
- g_signal_connect(cr_toggle, "toggled",
- G_CALLBACK(report_dialog_sel_toggle), rd);
- gtk_tree_view_column_add_attribute(column, cr_toggle, "active",
- TREE_COL_SEL);
-
- cr_pbuf = gtk_cell_renderer_pixbuf_new();
- gtk_tree_view_column_pack_start(column, cr_pbuf, FALSE);
- gtk_tree_view_column_add_attribute(column, cr_pbuf, "pixbuf",
- TREE_COL_PBUF);
-
- cr_text = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, cr_text, TRUE);
- gtk_tree_view_column_add_attribute(column, cr_text, "markup",
- TREE_COL_NAME);
-
- vbuttonbox3 = gtk_vbutton_box_new();
- gtk_widget_show(vbuttonbox3);
- gtk_box_pack_start(GTK_BOX(hbox), vbuttonbox3, FALSE, TRUE, 0);
- gtk_box_set_spacing(GTK_BOX(vbuttonbox3), 5);
- gtk_button_box_set_layout(GTK_BUTTON_BOX(vbuttonbox3),
- GTK_BUTTONBOX_START);
-
- button3 = gtk_button_new_with_mnemonic("Select _None");
- gtk_widget_show(button3);
- gtk_container_add(GTK_CONTAINER(vbuttonbox3), button3);
- GTK_WIDGET_SET_FLAGS(button3, GTK_CAN_DEFAULT);
- 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);
- GTK_WIDGET_SET_FLAGS(button6, GTK_CAN_DEFAULT);
- g_signal_connect(button6, "clicked", G_CALLBACK(report_dialog_sel_all),
- rd);
-
- dialog1_action_area = GTK_DIALOG(dialog)->action_area;
- 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);
- gtk_widget_show(button8);
- gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button8,
- GTK_RESPONSE_CANCEL);
- GTK_WIDGET_SET_FLAGS(button8, GTK_CAN_DEFAULT);
-
- button7 = gtk_button_new_with_mnemonic("_Generate");
- gtk_widget_show(button7);
- gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button7,
- GTK_RESPONSE_ACCEPT);
- GTK_WIDGET_SET_FLAGS(button7, GTK_CAN_DEFAULT);
-
- rd->dialog = dialog;
- rd->btn_cancel = button8;
- rd->btn_generate = button7;
- rd->btn_sel_all = button6;
- rd->btn_sel_none = button3;
- rd->treeview = treeview2;
- rd->model = model;
-
- gtk_tree_view_collapse_all(GTK_TREE_VIEW(treeview2));
- set_all_active(rd, TRUE);
-
- return rd;
-}
diff --git a/hardinfo2/shell/shell.c b/hardinfo2/shell/shell.c
deleted file mode 100644
index 1119c9cf..00000000
--- a/hardinfo2/shell/shell.c
+++ /dev/null
@@ -1,1961 +0,0 @@
-/*
- * 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 <stdlib.h>
-#include <string.h>
-
-#include <gtk/gtk.h>
-#include <glib/gstdio.h>
-
-#include "config.h"
-
-#include "hardinfo.h"
-
-#include "shell.h"
-#include "syncmanager.h"
-#include "iconcache.h"
-#include "menu.h"
-#include "stock.h"
-
-#include "callbacks.h"
-
-/*
- * Internal Prototypes ********************************************************
- */
-
-static void create_window();
-static ShellTree *tree_new(void);
-static ShellInfoTree *info_tree_new(gboolean extra);
-
-static void module_selected(gpointer data);
-static void module_selected_show_info(ShellModuleEntry * entry,
- gboolean reload);
-static void info_selected(GtkTreeSelection * ts, gpointer data);
-static void info_selected_show_extra(gchar * data);
-static gboolean reload_section(gpointer data);
-static gboolean rescan_section(gpointer data);
-static gboolean update_field(gpointer data);
-
-/*
- * Globals ********************************************************************
- */
-
-static Shell *shell = NULL;
-static GHashTable *update_tbl = NULL;
-static GSList *update_sfusrc = NULL;
-
-/*
- * Code :) ********************************************************************
- */
-
-void shell_set_remote_label(Shell *shell, gchar *label)
-{
- gchar *tmp;
-
- tmp = g_strdup_printf("<small>%s</small> ", label);
- gtk_label_set_markup(GTK_LABEL(shell->remote_label), tmp);
-
- g_free(tmp);
-}
-
-Shell *shell_get_main_shell(void)
-{
- return shell;
-}
-
-void shell_ui_manager_set_visible(const gchar * path, gboolean setting)
-{
- GtkWidget *widget;
-
- if (!params.gui_running)
- return;
-
- widget = gtk_ui_manager_get_widget(shell->ui_manager, path);
- if (!widget)
- return;
-
- if (setting)
- gtk_widget_show(widget);
- else
- gtk_widget_hide(widget);
-}
-
-void shell_clear_tree_models(Shell *shell)
-{
- gtk_tree_store_clear(GTK_TREE_STORE(shell->tree->model));
- gtk_tree_store_clear(GTK_TREE_STORE(shell->info->model));
- gtk_tree_store_clear(GTK_TREE_STORE(shell->moreinfo->model));
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info->view), FALSE);
-}
-
-void shell_clear_timeouts(Shell *shell)
-{
- h_hash_table_remove_all(update_tbl);
-}
-
-void shell_action_set_property(const gchar * action_name,
- const gchar * property, gboolean setting)
-{
- GtkAction *action;
-
- if (!params.gui_running)
- return;
-
- action = gtk_action_group_get_action(shell->action_group, action_name);
- if (action) {
- GValue value = { 0 };
-
- g_value_init(&value, G_TYPE_BOOLEAN);
- g_value_set_boolean(&value, setting);
-
- g_object_set_property(G_OBJECT(action), property, &value);
-
- g_value_unset(&value);
- }
-}
-
-void shell_action_set_label(const gchar * action_name, gchar * label)
-{
- if (params.gui_running && shell->action_group) {
- GtkAction *action;
-
- action =
- gtk_action_group_get_action(shell->action_group, action_name);
- if (action) {
- gtk_action_set_label(action, label);
- }
- }
-}
-
-void shell_action_set_enabled(const gchar * action_name, gboolean setting)
-{
- if (params.gui_running && shell->action_group) {
- GtkAction *action;
-
- action =
- gtk_action_group_get_action(shell->action_group, action_name);
- if (action) {
- gtk_action_set_sensitive(action, setting);
- }
- }
-}
-
-gboolean shell_action_get_enabled(const gchar * action_name)
-{
- GtkAction *action;
-
- if (!params.gui_running)
- return FALSE;
-
- action = gtk_action_group_get_action(shell->action_group, action_name);
- if (action) {
- return gtk_action_get_sensitive(action);
- }
-
- return FALSE;
-}
-
-void shell_set_side_pane_visible(gboolean setting)
-{
- if (!params.gui_running)
- return;
-
- if (setting)
- gtk_widget_show(shell->tree->scroll);
- else
- gtk_widget_hide(shell->tree->scroll);
-}
-
-gboolean shell_action_get_active(const gchar * action_name)
-{
- GtkAction *action;
- GSList *proxies;
-
- /* FIXME: Ugh. Are you sure there isn't any simpler way? O_o */
- if (!params.gui_running)
- return FALSE;
-
- action = gtk_action_group_get_action(shell->action_group, action_name);
- if (action) {
- proxies = gtk_action_get_proxies(action);
-
- for (; proxies; proxies = proxies->next) {
- GtkWidget *widget = (GtkWidget *) proxies->data;
-
- if (GTK_IS_CHECK_MENU_ITEM(widget)) {
- return
- gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM
- (widget));
- }
- }
- }
-
- return FALSE;
-}
-
-void shell_action_set_active(const gchar * action_name, gboolean setting)
-{
- GtkAction *action;
- GSList *proxies;
-
- /* FIXME: Ugh. Are you sure there isn't any simpler way? O_o */
- if (!params.gui_running)
- return;
-
- action = gtk_action_group_get_action(shell->action_group, action_name);
- if (action) {
- proxies = gtk_action_get_proxies(action);
-
- for (; proxies; proxies = proxies->next) {
- GtkWidget *widget = (GtkWidget *) proxies->data;
-
- if (GTK_IS_CHECK_MENU_ITEM(widget)) {
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget),
- setting);
- return;
- }
- }
- }
-}
-
-void shell_status_pulse(void)
-{
- if (params.gui_running) {
- if (shell->_pulses++ == 5) {
- /* we're pulsing for some time, disable the interface and change the cursor
- to a hourglass */
- shell_view_set_enabled(FALSE);
- }
-
- gtk_progress_bar_pulse(GTK_PROGRESS_BAR(shell->progress));
- while (gtk_events_pending())
- gtk_main_iteration();
- } else {
- static gint counter = 0;
-
- fprintf(stderr, "\033[2K\033[40;37;1m %c\033[0m\r",
- "|/-\\"[counter++ % 4]);
- }
-}
-
-void shell_status_set_percentage(gint percentage)
-{
- if (params.gui_running) {
- gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(shell->progress),
- (float) percentage / 100.0);
- while (gtk_events_pending())
- gtk_main_iteration();
- } else {
- if (percentage < 1 || percentage >= 100) {
- fprintf(stderr, "\033[2K");
- } else {
- gchar pbar[] = "----------";
-
- memset(pbar, '#', percentage / 10);
-
- fprintf(stderr, "\r\033[40;37;1m%3d%% \033[40;34;1m"
- "%s\033[0m\r", percentage, pbar);
- }
- }
-}
-
-void shell_view_set_enabled(gboolean setting)
-{
- if (!params.gui_running)
- return;
-
- if (setting) {
- shell->_pulses = 0;
- widget_set_cursor(shell->window, GDK_LEFT_PTR);
- } else {
- widget_set_cursor(shell->window, GDK_WATCH);
- }
-
- gtk_widget_set_sensitive(shell->hpaned, setting);
- shell_action_set_enabled("ViewMenuAction", setting);
- shell_action_set_enabled("RemoteMenuAction", setting);
- shell_action_set_enabled("ConnectToAction", setting);
- shell_action_set_enabled("RefreshAction", 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)
-{
- if (!params.gui_running)
- return;
-
- if (setting)
- gtk_widget_show(shell->progress);
- else {
- gtk_widget_hide(shell->progress);
- shell_view_set_enabled(TRUE);
-
- shell_status_update("Done.");
- }
-}
-
-void shell_do_reload(void)
-{
- if (!params.gui_running || !shell->selected)
- return;
-
- shell_action_set_enabled("RefreshAction", FALSE);
- shell_action_set_enabled("CopyAction", FALSE);
- shell_action_set_enabled("ReportAction", FALSE);
-
- shell_status_set_enabled(TRUE);
-
- module_entry_reload(shell->selected);
- module_selected(NULL);
-
- shell_action_set_enabled("RefreshAction", TRUE);
- shell_action_set_enabled("CopyAction", TRUE);
- shell_action_set_enabled("ReportAction", TRUE);
-}
-
-void shell_status_update(const gchar * message)
-{
- if (params.gui_running) {
- gtk_label_set_markup(GTK_LABEL(shell->status), message);
- gtk_progress_bar_pulse(GTK_PROGRESS_BAR(shell->progress));
- while (gtk_events_pending())
- gtk_main_iteration();
- } else {
- fprintf(stderr, "\033[2K\033[40;37;1m %s\033[0m\r", message);
- }
-}
-
-static void destroy_me(void)
-{
- cb_quit();
-}
-
-static void close_note(GtkWidget * widget, gpointer user_data)
-{
- gtk_widget_hide(shell->note->event_box);
-}
-
-static ShellNote *note_new(void)
-{
- ShellNote *note;
- GtkWidget *hbox, *icon, *button;
- GtkWidget *border_box;
- /* colors stolen from gtkinfobar.c */
- GdkColor info_default_border_color = { 0, 0xb800, 0xad00, 0x9d00 };
- GdkColor info_default_fill_color = { 0, 0xff00, 0xff00, 0xbf00 };
-
- note = g_new0(ShellNote, 1);
- 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);
-
- 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);
-
- icon = icon_cache_get_image("close.png");
- gtk_widget_show(icon);
- gtk_container_add(GTK_CONTAINER(button), icon);
- gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
- g_signal_connect(G_OBJECT(button), "clicked", (GCallback) close_note,
- NULL);
-
- hbox = gtk_hbox_new(FALSE, 3);
- icon = icon_cache_get_image("dialog-information.png");
-
- gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hbox), note->label, FALSE, FALSE, 0);
- gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
-
- gtk_container_set_border_width(GTK_CONTAINER(hbox), 2);
- gtk_container_add(GTK_CONTAINER(border_box), hbox);
- gtk_widget_show_all(hbox);
-
- return note;
-}
-
-void shell_set_title(Shell *shell, gchar *subtitle)
-{
- if (subtitle) {
- gchar *tmp;
-
- 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");
- }
-}
-
-static void create_window(void)
-{
- GtkWidget *vbox, *hbox;
-
- shell = g_new0(Shell, 1);
-
- shell->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_icon(GTK_WINDOW(shell->window),
- icon_cache_get_pixbuf("logo.png"));
- shell_set_title(shell, NULL);
- gtk_window_set_default_size(GTK_WINDOW(shell->window), 800, 600);
- g_signal_connect(G_OBJECT(shell->window), "destroy", destroy_me, NULL);
-
- vbox = gtk_vbox_new(FALSE, 0);
- gtk_widget_show(vbox);
- gtk_container_add(GTK_CONTAINER(shell->window), vbox);
- shell->vbox = vbox;
-
- menu_init(shell);
-
- hbox = gtk_hbox_new(FALSE, 5);
- gtk_widget_show(hbox);
- gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 3);
-
- shell->progress = gtk_progress_bar_new();
- gtk_widget_set_size_request(shell->progress, 80, 10);
- gtk_widget_hide(shell->progress);
- gtk_box_pack_end(GTK_BOX(hbox), shell->progress, FALSE, FALSE, 5);
-
- shell->remote_label = gtk_label_new("");
- gtk_label_set_use_markup(GTK_LABEL(shell->remote_label), TRUE);
-#ifdef HAS_LIBSOUP
- gtk_widget_show(shell->remote_label);
-#else
- gtk_widget_hide(shell->remote_label);
-#endif
- shell_set_remote_label(shell, "");
- gtk_box_pack_end(GTK_BOX(hbox), shell->remote_label, FALSE, FALSE, 0);
-
- shell->status = gtk_label_new("");
- gtk_misc_set_alignment(GTK_MISC(shell->status), 0.0, 0.5);
- gtk_widget_show(shell->status);
- gtk_box_pack_start(GTK_BOX(hbox), shell->status, FALSE, FALSE, 5);
-
- shell->hpaned = gtk_hpaned_new();
- 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);
-
- vbox = gtk_vbox_new(FALSE, 5);
- 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);
-
- shell->vpaned = gtk_vpaned_new();
- gtk_box_pack_start(GTK_BOX(vbox), shell->vpaned, TRUE, TRUE, 0);
- gtk_widget_show(shell->vpaned);
-
- shell->notebook = gtk_notebook_new();
- gtk_paned_add2(GTK_PANED(shell->vpaned), shell->notebook);
-
- gtk_widget_show(shell->window);
- while (gtk_events_pending())
- gtk_main_iteration();
-}
-
-static void view_menu_select_entry(gpointer data, gpointer data2)
-{
- GtkTreePath *path;
- GtkTreeIter *iter = (GtkTreeIter *) data2;
-
- path = gtk_tree_model_get_path(shell->tree->model, iter);
-
- gtk_tree_selection_select_path(shell->tree->selection, path);
- gtk_tree_view_set_cursor(GTK_TREE_VIEW(shell->tree->view), path, NULL,
- FALSE);
- gtk_tree_path_free(path);
-}
-
-static void add_module_to_menu(gchar * name, GdkPixbuf * pixbuf)
-{
- GtkAction *action;
- gchar *about_module = g_strdup_printf("AboutModule%s", name);
- gint merge_id;
-
- GtkActionEntry entries[] = {
- {
- name, /* name */
- name, /* stockid */
- name, /* label */
- NULL, /* accelerator */
- NULL, /* tooltip */
- NULL, /* callback */
- },
- {
- about_module,
- name,
- name,
- NULL,
- name,
- (GCallback) cb_about_module,
- },
- };
-
- stock_icon_register_pixbuf(pixbuf, name);
-
- if ((action = gtk_action_group_get_action(shell->action_group, name))) {
- gtk_action_group_remove_action(shell->action_group, action);
- }
-
- if ((action = gtk_action_group_get_action(shell->action_group, about_module))) {
- gtk_action_group_remove_action(shell->action_group, action);
- }
-
- gtk_action_group_add_actions(shell->action_group, entries, 2, NULL);
-
- merge_id = gtk_ui_manager_new_merge_id(shell->ui_manager);
- gtk_ui_manager_add_ui(shell->ui_manager,
- merge_id,
- "/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,
- "/menubar/HelpMenu/HelpMenuModules/LastSep",
- about_module, about_module, GTK_UI_MANAGER_AUTO,
- TRUE);
- shell->merge_ids = g_slist_prepend(shell->merge_ids, GINT_TO_POINTER(merge_id));
-}
-
-static GSList *remote_merge_ids = NULL;
-static void
-add_host_to_view_menu(gchar *hostname)
-{
- GtkAction *action;
- gint merge_id;
- GtkActionEntry entry = {
- hostname, /* name */
- HI_STOCK_SERVER, /* stockid */
- hostname, /* label */
- NULL, /* accelerator */
- NULL, /* tooltip */
- (GCallback) cb_connect_host, /* callback */
- };
-
- if ((action = gtk_action_group_get_action(shell->action_group, hostname))) {
- gtk_action_group_remove_action(shell->action_group, action);
- }
-
- gtk_action_group_add_actions(shell->action_group, &entry, 1, NULL /*data */);
-
- merge_id = gtk_ui_manager_new_merge_id(shell->ui_manager);
- gtk_ui_manager_add_ui(shell->ui_manager,
- merge_id,
- "/menubar/RemoteMenu/LocalComputer",
- hostname, hostname, GTK_UI_MANAGER_AUTO, FALSE);
- remote_merge_ids = g_slist_prepend(remote_merge_ids, GINT_TO_POINTER(merge_id));
-}
-
-void shell_update_remote_menu(void)
-{
- GSList *merge_id;
- gchar **hosts;
- gsize length;
- gint i;
-
- for (merge_id = remote_merge_ids; merge_id; merge_id = merge_id->next) {
- gint id = GPOINTER_TO_INT(merge_id->data);
-
- gtk_ui_manager_remove_ui(shell->ui_manager, id);
- }
-
- hosts = g_key_file_get_groups(shell->hosts, &length);
- for (i = length - 1; i >= 0; i--) {
- add_host_to_view_menu(g_strdup(hosts[i]));
- }
-
- g_strfreev(hosts);
-}
-
-static void
-add_module_entry_to_view_menu(gchar * module, gchar * name,
- GdkPixbuf * pixbuf, GtkTreeIter * iter)
-{
- GtkAction *action;
- gint merge_id;
- gchar *path;
- GtkActionEntry entry = {
- name, /* name */
- name, /* stockid */
- name, /* label */
- NULL, /* accelerator */
- NULL, /* tooltip */
- (GCallback) view_menu_select_entry, /* callback */
- };
-
- stock_icon_register_pixbuf(pixbuf, name);
-
- if ((action = gtk_action_group_get_action(shell->action_group, name))) {
- gtk_action_group_remove_action(shell->action_group, action);
- }
-
- gtk_action_group_add_actions(shell->action_group, &entry, 1, iter);
-
- merge_id = gtk_ui_manager_new_merge_id(shell->ui_manager);
- path = g_strdup_printf("/menubar/ViewMenu/%s", module);
- gtk_ui_manager_add_ui(shell->ui_manager,
- merge_id,
- path,
- name, name, GTK_UI_MANAGER_AUTO, FALSE);
- shell->merge_ids = g_slist_prepend(shell->merge_ids, GINT_TO_POINTER(merge_id));
- g_free(path);
-}
-
-void shell_add_modules_to_gui(gpointer _shell_module, gpointer _shell_tree)
-{
- ShellModule *module = (ShellModule *) _shell_module;
- ShellTree *shelltree = (ShellTree *) _shell_tree;
- GtkTreeStore *store = GTK_TREE_STORE(shelltree->model);
- GtkTreeIter parent;
-
- if (!module) {
- return;
- }
-
- gtk_tree_store_append(store, &parent, NULL);
- gtk_tree_store_set(store, &parent,
- TREE_COL_NAME, module->name,
- TREE_COL_MODULE, module,
- TREE_COL_MODULE_ENTRY, NULL,
- TREE_COL_SEL, FALSE,
- -1);
-
- if (module->icon) {
- gtk_tree_store_set(store, &parent, TREE_COL_PBUF, module->icon,
- -1);
- }
-
- add_module_to_menu(module->name, module->icon);
-
- if (module->entries) {
- ShellModuleEntry *entry;
- GSList *p;
-
- for (p = module->entries; p; p = g_slist_next(p)) {
- GtkTreeIter child;
- entry = (ShellModuleEntry *) p->data;
-
- gtk_tree_store_append(store, &child, &parent);
- gtk_tree_store_set(store, &child, TREE_COL_NAME, entry->name,
- TREE_COL_MODULE_ENTRY, entry,
- TREE_COL_SEL, FALSE, -1);
-
- if (entry->icon) {
- gtk_tree_store_set(store, &child, TREE_COL_PBUF,
- entry->icon, -1);
- }
-
- add_module_entry_to_view_menu(module->name, entry->name,
- entry->icon,
- gtk_tree_iter_copy(&child));
-
- shell_status_pulse();
- }
-
- }
-}
-
-static void __tree_iter_destroy(gpointer data)
-{
- gtk_tree_iter_free((GtkTreeIter *) data);
-}
-
-void shell_save_hosts_file(void)
-{
- gchar *path, *remote_conf;
- gsize length;
-
- DEBUG("saving hosts file");
-
- path = g_build_filename(g_get_home_dir(), ".hardinfo", "remote.conf", NULL);
-
- remote_conf = g_key_file_to_data(shell->hosts, &length, NULL);
- g_file_set_contents(path, remote_conf, length, NULL);
-
- g_chmod(path, 0600);
-
- g_free(remote_conf);
- g_free(path);
-}
-
-ShellSummary *summary_new(void)
-{
- ShellSummary *summary;
-
- summary = g_new0(ShellSummary, 1);
- summary->scroll = gtk_scrolled_window_new(NULL, NULL);
- summary->view = gtk_vbox_new(FALSE, 5);
- 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);
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(summary->scroll),
- summary->view);
- gtk_widget_show_all(summary->scroll);
-
- return summary;
-}
-
-void shell_init(GSList * modules)
-{
- if (shell) {
- g_error("Shell already created");
- return;
- }
-
- DEBUG("initializing shell");
-
- create_window();
-
- shell_action_set_property("ConnectToAction", "is-important", TRUE);
- shell_action_set_property("CopyAction", "is-important", TRUE);
- shell_action_set_property("RefreshAction", "is-important", TRUE);
- shell_action_set_property("ReportAction", "is-important", TRUE);
- shell_action_set_property("ReportBugAction", "is-important", TRUE);
-
- shell->tree = tree_new();
- shell->info = info_tree_new(FALSE);
- 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);
-
- gtk_paned_pack1(GTK_PANED(shell->hpaned), shell->tree->scroll,
- SHELL_PACK_RESIZE, SHELL_PACK_SHRINK);
- gtk_paned_pack1(GTK_PANED(shell->vpaned), shell->info->scroll,
- SHELL_PACK_RESIZE, SHELL_PACK_SHRINK);
-
- gtk_notebook_append_page(GTK_NOTEBOOK(shell->notebook),
- shell->moreinfo->scroll, NULL);
- gtk_notebook_append_page(GTK_NOTEBOOK(shell->notebook),
- load_graph_get_framed(shell->loadgraph),
- 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);
-
- shell_status_set_enabled(TRUE);
- shell_status_update("Loading modules...");
-
- shell->tree->modules = modules ? modules : modules_load_all();
-
- g_slist_foreach(shell->tree->modules, shell_add_modules_to_gui, shell->tree);
- gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->tree->view));
-
- gtk_widget_show_all(shell->hpaned);
-
- load_graph_configure_expose(shell->loadgraph);
- gtk_widget_hide(shell->notebook);
- gtk_widget_hide(shell->note->event_box);
-
- shell_status_update("Done.");
- shell_status_set_enabled(FALSE);
-
- shell_action_set_enabled("ContextHelpAction", FALSE);
- 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
- shell_action_set_enabled("SyncManagerAction", sync_manager_count_entries() > 0);
-
- {
- gchar *path;
-
- shell->hosts = g_key_file_new();
- path = g_build_filename(g_get_home_dir(), ".hardinfo", "remote.conf", NULL);
- g_key_file_load_from_file(shell->hosts, path, 0, NULL);
- g_free(path);
-
- g_atexit(shell_save_hosts_file);
-
- shell_update_remote_menu();
- }
-#endif
-}
-
-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);
-
- /*
- * this function is also used to feed the load graph when ViewType
- * is SHELL_VIEW_LOAD_GRAPH
- */
- 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));
- }
-
- gtk_tree_store_set(store, iter, INFO_TREE_COL_VALUE, value, -1);
-
- g_free(value);
- return TRUE;
- }
-
- if (update_sfusrc) {
- GSList *sfu;
-
- for (sfu = update_sfusrc; sfu; sfu = sfu->next) {
- g_free(sfu->data);
- }
-
- g_slist_free(update_sfusrc);
- update_sfusrc = NULL;
- }
-
- /* otherwise, cleanup and destroy the timeout */
- g_free(fu->field_name);
- g_free(fu);
-
- return FALSE;
-}
-
-#define RANGE_SET_VALUE(tree,scrollbar,value) \
- do { \
- GtkRange CONCAT(*range, __LINE__) = GTK_RANGE(GTK_SCROLLED_WINDOW(shell->tree->scroll)->scrollbar); \
- gtk_range_set_value(CONCAT(range, __LINE__), value); \
- gtk_adjustment_value_changed(GTK_ADJUSTMENT(gtk_range_get_adjustment(CONCAT(range, __LINE__)))); \
- } while (0)
-#define RANGE_GET_VALUE(tree,scrollbar) \
- gtk_range_get_value(GTK_RANGE \
- (GTK_SCROLLED_WINDOW(shell->tree->scroll)-> \
- scrollbar))
-
-static gboolean reload_section(gpointer data)
-{
- ShellModuleEntry *entry = (ShellModuleEntry *) data;
-
- /* 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 */
- pos_info_scroll = RANGE_GET_VALUE(info, vscrollbar);
- pos_more_scroll = RANGE_GET_VALUE(moreinfo, vscrollbar);
-
- /* avoid drawing the window while we reload */
- gdk_window_freeze_updates(shell->window->window);
-
- /* gets the current selected path */
- if (gtk_tree_selection_get_selected
- (shell->info->selection, &shell->info->model, &iter)) {
- path = gtk_tree_model_get_path(shell->info->model, &iter);
- }
-
- /* update the information, clear the treeview and populate it again */
- module_entry_reload(entry);
- info_selected_show_extra(NULL); /* clears the more info store */
- module_selected_show_info(entry, TRUE);
-
- /* if there was a selection, reselect it */
- if (path) {
- gtk_tree_selection_select_path(shell->info->selection, path);
- gtk_tree_view_set_cursor(GTK_TREE_VIEW(shell->info->view), path, NULL,
- FALSE);
- gtk_tree_path_free(path);
- } else {
- /* restore position */
- RANGE_SET_VALUE(info, vscrollbar, pos_info_scroll);
- RANGE_SET_VALUE(moreinfo, vscrollbar, pos_more_scroll);
- }
-
- /* make the window drawable again */
- gdk_window_thaw_updates(shell->window->window);
- }
-
- /* destroy the timeout: it'll be set up again */
- return FALSE;
-}
-
-static gboolean rescan_section(gpointer data)
-{
- ShellModuleEntry *entry = (ShellModuleEntry *) data;
-
- module_entry_reload(entry);
-
- return entry->selected;
-}
-
-gint
-info_tree_compare_val_func(GtkTreeModel * model,
- GtkTreeIter * a,
- GtkTreeIter * b, gpointer userdata)
-{
- gint ret = 0;
- gchar *col1, *col2;
-
- gtk_tree_model_get(model, a, INFO_TREE_COL_VALUE, &col1, -1);
- gtk_tree_model_get(model, b, INFO_TREE_COL_VALUE, &col2, -1);
-
- if (col1 == NULL || col2 == NULL) {
- if (col1 == NULL && col2 == NULL)
- return 0;
-
- ret = (col1 == NULL) ? -1 : 1;
- } else {
- ret = shell->_order_type ? (atof(col1) < atof(col2)) :
- (atof(col1) > atof(col2));
- }
-
- g_free(col1);
- g_free(col2);
-
- return ret;
-}
-
-static void set_view_type(ShellViewType viewtype, gboolean reload)
-{
- if (viewtype < SHELL_VIEW_NORMAL || viewtype >= SHELL_VIEW_N_VIEWS)
- viewtype = SHELL_VIEW_NORMAL;
-
- shell->normalize_percentage = TRUE;
- shell->view_type = viewtype;
-
- /* reset to the default model */
- gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view),
- shell->info->model);
-
- /* reset to the default view columns */
- if (!reload) {
- gtk_tree_view_column_set_visible(shell->info->col_extra1, FALSE);
- gtk_tree_view_column_set_visible(shell->info->col_extra2, FALSE);
- 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);
-
- switch (viewtype) {
- default:
- 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);
- }
- break;
- 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);
- 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_paned_set_position(GTK_PANED(shell->vpaned),
- shell->hpaned->allocation.height -
- shell->loadgraph->height - 16);
- 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);
- /* 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_widget_show(shell->notebook);
- gtk_widget_hide(shell->info->scroll);
- gtk_widget_hide(shell->moreinfo->scroll);
- }
-}
-
-static void
-group_handle_special(GKeyFile * key_file, ShellModuleEntry * entry,
- gchar * group, gchar ** keys, gboolean reload)
-{
- if (g_str_equal(group, "$ShellParam$")) {
- gboolean headers_visible = FALSE;
- gint i;
-
- for (i = 0; keys[i]; i++) {
- gchar *key = keys[i];
-
- if (g_str_has_prefix(key, "UpdateInterval")) {
- ShellFieldUpdate *fu = g_new0(ShellFieldUpdate, 1);
- ShellFieldUpdateSource *sfutbl;
- gint ms;
-
- ms = g_key_file_get_integer(key_file, group, key, NULL);
-
- fu->field_name = g_strdup(strchr(key, '$') + 1);
- fu->entry = entry;
-
- sfutbl = g_new0(ShellFieldUpdateSource, 1);
- sfutbl->source_id = g_timeout_add(ms, update_field, fu);
- sfutbl->sfu = fu;
-
- update_sfusrc = g_slist_prepend(update_sfusrc, sfutbl);
- } else if (g_str_equal(key, "NormalizePercentage")) {
- shell->normalize_percentage = g_key_file_get_boolean(key_file, group, key, NULL);
- } else if (g_str_equal(key, "LoadGraphSuffix")) {
- gchar *suffix =
- g_key_file_get_value(key_file, group, key, NULL);
- load_graph_set_data_suffix(shell->loadgraph, suffix);
- g_free(suffix);
- } else if (g_str_equal(key, "ReloadInterval")) {
- gint ms;
-
- ms = g_key_file_get_integer(key_file, group, key, NULL);
-
- g_timeout_add(ms, reload_section, entry);
- } else if (g_str_equal(key, "RescanInterval")) {
- gint ms;
-
- ms = g_key_file_get_integer(key_file, group, key, NULL);
-
- g_timeout_add(ms, rescan_section, entry);
- } else if (g_str_equal(key, "ShowColumnHeaders")) {
- headers_visible = g_key_file_get_boolean(key_file, group, key, NULL);
- } else if (g_str_has_prefix(key, "ColumnTitle")) {
- GtkTreeViewColumn *column = NULL;
- gchar *value, *title = strchr(key, '$') + 1;
-
- value = g_key_file_get_value(key_file, group, key, NULL);
-
- if (g_str_equal(title, "Extra1")) {
- column = shell->info->col_extra1;
- } else if (g_str_equal(title, "Extra2")) {
- column = shell->info->col_extra2;
- } else if (g_str_equal(title, "Value")) {
- column = shell->info->col_value;
- } else if (g_str_equal(title, "TextValue")) {
- column = shell->info->col_textvalue;
- } else if (g_str_equal(title, "Progress")) {
- column = shell->info->col_progress;
- }
-
- if (column) {
- gtk_tree_view_column_set_title(column, value);
- gtk_tree_view_column_set_visible(column, TRUE);
- }
-
- g_free(value);
- } else if (g_str_equal(key, "OrderType")) {
- shell->_order_type = g_key_file_get_integer(key_file,
- group,
- key, NULL);
- } else if (g_str_equal(key, "ViewType")) {
- set_view_type(g_key_file_get_integer(key_file, group,
- key, NULL), reload);
- } else if (g_str_has_prefix(key, "Icon")) {
- GtkTreeIter *iter = g_hash_table_lookup(update_tbl,
- strchr(key,
- '$') + 1);
-
- if (iter) {
- gchar *file =
- g_key_file_get_value(key_file, group, key, NULL);
- gtk_tree_store_set(GTK_TREE_STORE(shell->info->model),
- iter, INFO_TREE_COL_PBUF,
- icon_cache_get_pixbuf_at_size(file,
- 22,
- 22),
- -1);
- g_free(file);
- }
- } else if (g_str_equal(key, "Zebra")) {
- gtk_tree_view_set_rules_hint(GTK_TREE_VIEW
- (shell->info->view),
- g_key_file_get_boolean
- (key_file, group, key, NULL));
- }
- }
-
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info->view), headers_visible);
- } else {
- g_warning("Unknown parameter group: ``%s''", group);
- }
-}
-
-static void
-group_handle_normal(GKeyFile * key_file, ShellModuleEntry * entry,
- gchar * group, gchar ** keys, gsize ngroups)
-{
- GtkTreeIter parent;
- GtkTreeStore *store = GTK_TREE_STORE(shell->info->model);
- gchar *tmp = g_strdup(group);
- gint i;
-
- if (ngroups > 1) {
- gtk_tree_store_append(store, &parent, NULL);
-
- strend(tmp, '#');
- gtk_tree_store_set(store, &parent, INFO_TREE_COL_NAME, tmp, -1);
- g_free(tmp);
- }
-
- for (i = 0; keys[i]; i++) {
- gchar *key = keys[i];
- 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);
- }
-
- if ((key && value) && g_utf8_validate(key, -1, NULL) && g_utf8_validate(value, -1, NULL)) {
- if (ngroups == 1) {
- gtk_tree_store_append(store, &child, NULL);
- } else {
- gtk_tree_store_append(store, &child, &parent);
- }
-
- /* FIXME: use g_key_file_get_string_list? */
- if (strchr(value, '|')) {
- gchar **columns = g_strsplit(value, "|", 0);
-
- gtk_tree_store_set(store, &child, INFO_TREE_COL_VALUE, columns[0], -1);
- if (columns[1]) {
- gtk_tree_store_set(store, &child, INFO_TREE_COL_EXTRA1, columns[1], -1);
- if (columns[2]) {
- gtk_tree_store_set(store, &child, INFO_TREE_COL_EXTRA2, columns[2], -1);
- }
- }
-
- g_strfreev(columns);
- } else {
- gtk_tree_store_set(store, &child, INFO_TREE_COL_VALUE, value, -1);
- }
-
- strend(key, '#');
-
- if (*key == '$') {
- gchar **tmp;
-
- tmp = g_strsplit(++key, "$", 0);
-
- gtk_tree_store_set(store, &child, INFO_TREE_COL_NAME,
- tmp[1], INFO_TREE_COL_DATA, tmp[0], -1);
-
- g_strfreev(tmp);
- } else {
- gtk_tree_store_set(store, &child, INFO_TREE_COL_NAME, key,
- INFO_TREE_COL_DATA, NULL, -1);
- }
-
- g_hash_table_insert(update_tbl, g_strdup(key),
- gtk_tree_iter_copy(&child));
-
- }
-
- g_free(value);
- }
-}
-
-static void
-moreinfo_handle_normal(GKeyFile * key_file, gchar * group, gchar ** keys)
-{
- GtkTreeIter parent;
- GtkTreeStore *store = GTK_TREE_STORE(shell->moreinfo->model);
- gint i;
-
- gtk_tree_store_append(store, &parent, NULL);
- gtk_tree_store_set(store, &parent, INFO_TREE_COL_NAME, group, -1);
-
- for (i = 0; keys[i]; i++) {
- gchar *key = keys[i];
- GtkTreeIter child;
- gchar *value;
-
- value = g_key_file_get_value(key_file, group, key, NULL);
-
- if (g_utf8_validate(key, -1, NULL)
- && g_utf8_validate(value, -1, NULL)) {
- strend(key, '#');
-
- gtk_tree_store_append(store, &child, &parent);
- gtk_tree_store_set(store, &child, INFO_TREE_COL_VALUE,
- value, INFO_TREE_COL_NAME, key, -1);
- }
-
- g_free(value);
- }
-}
-
-static void update_progress()
-{
- GtkTreeModel *model = shell->info->model;
- GtkTreeStore *store = GTK_TREE_STORE(model);
- GtkTreeIter iter, fiter;
- gchar *tmp;
- gdouble maxv = 0, maxp = 0, cur, floatval;
-
- if (!gtk_tree_model_get_iter_first(model, &fiter)) {
- return;
- }
-
- /* finds the maximum value */
- if (shell->normalize_percentage) {
- iter = fiter;
- do {
- gtk_tree_model_get(model, &iter, INFO_TREE_COL_VALUE, &tmp, -1);
-
- cur = atof(tmp);
- maxv = MAX(maxv, cur);
-
- g_free(tmp);
- } while (gtk_tree_model_iter_next(model, &iter));
- } else {
- maxv = 100.0f;
- }
-
- /* calculates the relative percentage and finds the maximum percentage */
- if (shell->_order_type == SHELL_ORDER_ASCENDING) {
- iter = fiter;
- do {
- gtk_tree_model_get(model, &iter, INFO_TREE_COL_VALUE, &tmp, -1);
-
- cur = 100 - 100 * atof(tmp) / maxv;
- maxp = MAX(cur, maxp);
-
- g_free(tmp);
- } while (gtk_tree_model_iter_next(model, &iter));
-
- maxp = 100 - maxp;
- }
-
- /* fix the maximum relative percentage */
- iter = fiter;
- do {
- char *strval;
-
- gtk_tree_model_get(model, &iter, INFO_TREE_COL_VALUE, &tmp, -1);
- floatval = atof(tmp);
- strval = g_strdup(tmp);
- g_free(tmp);
-
- cur = 100 * floatval / maxv;
-
- if (shell->_order_type == SHELL_ORDER_ASCENDING)
- cur = 100 - cur + maxp;
-
- if (strchr(strval, ' ')) {
- tmp = g_strdup_printf("%.2f%s", floatval, strchr(strval, ' '));
- } else {
- tmp = g_strdup_printf("%.2f", floatval);
- }
-
- tmp = strreplacechr(tmp, ",", '.');
- gtk_tree_store_set(store, &iter, INFO_TREE_COL_PROGRESS, cur,
- INFO_TREE_COL_VALUE, tmp, -1);
- g_free(tmp);
- g_free(strval);
- } while (gtk_tree_model_iter_next(model, &iter));
-
- /* now sort everything up. that wasn't as hard as i thought :) */
- GtkTreeSortable *sortable = GTK_TREE_SORTABLE(shell->info->model);
-
- gtk_tree_sortable_set_sort_func(sortable, INFO_TREE_COL_VALUE,
- info_tree_compare_val_func, 0, NULL);
- gtk_tree_sortable_set_sort_column_id(sortable,
- INFO_TREE_COL_VALUE,
- GTK_SORT_DESCENDING);
- gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view),
- GTK_TREE_MODEL(sortable));
-}
-
-void shell_set_note_from_entry(ShellModuleEntry * entry)
-{
- if (entry->notefunc) {
- const gchar *note = module_entry_get_note(entry);
-
- if (note) {
- gtk_label_set_markup(GTK_LABEL(shell->note->label), note);
- gtk_widget_show(shell->note->event_box);
- } else {
- gtk_widget_hide(shell->note->event_box);
- }
- } else {
- gtk_widget_hide(shell->note->event_box);
- }
-}
-
-void shell_clear_field_updates(void)
-{
- if (update_sfusrc) {
- GSList *sfusrc;
-
- for (sfusrc = update_sfusrc; sfusrc; sfusrc = sfusrc->next) {
- ShellFieldUpdateSource *src =
- (ShellFieldUpdateSource *) sfusrc->data;
- g_source_remove(src->source_id);
- g_free(src->sfu->field_name);
- g_free(src->sfu);
- g_free(src);
- }
-
- g_slist_free(update_sfusrc);
- update_sfusrc = NULL;
- }
-}
-
-static void
-module_selected_show_info(ShellModuleEntry * entry, gboolean reload)
-{
- GKeyFile *key_file = g_key_file_new();
- GtkTreeStore *store;
- gchar *key_data, **groups;
- gboolean has_shell_param = FALSE;
- gint i;
- gsize ngroups;
-
- module_entry_scan(entry);
- key_data = module_entry_function(entry);
-
- /* */
- gdk_window_freeze_updates(shell->info->view->window);
-
- g_object_ref(shell->info->model);
- gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view), NULL);
-
- /* reset the view type to normal */
- set_view_type(SHELL_VIEW_NORMAL, reload);
-
- if (!reload) {
- /* recreate the iter hash table */
- h_hash_table_remove_all(update_tbl);
- }
-
- shell_clear_field_updates();
-
- store = GTK_TREE_STORE(shell->info->model);
-
- gtk_tree_store_clear(store);
-
- g_key_file_load_from_data(key_file, key_data, strlen(key_data), 0,
- NULL);
- groups = g_key_file_get_groups(key_file, &ngroups);
-
- for (i = 0; groups[i]; i++)
- if (groups[i][0] == '$')
- ngroups--;
-
- for (i = 0; groups[i]; i++) {
- gchar *group = groups[i];
- gchar **keys = g_key_file_get_keys(key_file, group, NULL, NULL);
-
- if (*group == '$') {
- group_handle_special(key_file, entry, group, keys, reload);
- has_shell_param = TRUE;
- } else {
- group_handle_normal(key_file, entry, group, keys, ngroups);
- }
-
- 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));
-
- gdk_window_thaw_updates(shell->info->view->window);
- shell_set_note_from_entry(entry);
-
- if (shell->view_type == SHELL_VIEW_PROGRESS || shell->view_type == SHELL_VIEW_PROGRESS_DUAL) {
- update_progress();
- }
-
-#if GTK_CHECK_VERSION(2,12,0)
- if (ngroups == 1) {
- gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(shell->info->view),
- FALSE);
- } else {
- gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(shell->info->view),
- TRUE);
- }
-#endif
-
- g_strfreev(groups);
- g_key_file_free(key_file);
- g_free(key_data);
-}
-
-static void info_selected_show_extra(gchar * data)
-{
- GtkTreeStore *store;
-
- store = GTK_TREE_STORE(shell->moreinfo->model);
- gtk_tree_store_clear(store);
-
- if (!shell->selected->morefunc)
- return;
-
- if (data) {
- GKeyFile *key_file = g_key_file_new();
- gchar *key_data = shell->selected->morefunc(data);
- gchar **groups;
- gint i;
-
- g_key_file_load_from_data(key_file, key_data, strlen(key_data), 0,
- NULL);
- groups = g_key_file_get_groups(key_file, NULL);
-
- for (i = 0; groups[i]; i++) {
- gchar *group = groups[i];
- gchar **keys =
- g_key_file_get_keys(key_file, group, NULL, NULL);
-
- moreinfo_handle_normal(key_file, group, keys);
- }
-
- gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->moreinfo->view));
-
- g_strfreev(groups);
- g_key_file_free(key_file);
- g_free(key_data);
- }
-}
-
-static gchar *shell_summary_clear_value(gchar *value)
-{
- GKeyFile *keyfile;
- gchar *return_value;
-
- keyfile = g_key_file_new();
- if (g_key_file_load_from_data(keyfile, 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 != '$')
- temp++;
- temp++;
-
- return_value = h_strdup_cprintf("%s\n", return_value, temp);
- } else {
- return_value = g_key_file_get_string(keyfile, groups[group],
- 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);
-}
-
-static void shell_summary_add_item(ShellSummary *summary,
- gchar *icon,
- gchar *name,
- gchar *value)
-{
- GtkWidget *frame;
- GtkWidget *frame_label_box;
- GtkWidget *frame_image;
- GtkWidget *frame_label;
- 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);
-
- frame_label_box = gtk_hbox_new(FALSE, 5);
- 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);
-
- alignment = gtk_alignment_new(0.5, 0.5, 1, 1);
- 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);
- gtk_container_add(GTK_CONTAINER(alignment), content);
-
- 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;
-
- gtk_widget_destroy(summary->header);
- summary->header = NULL;
-}
-static void shell_summary_create_header(ShellSummary *summary,
- gchar *title)
-{
- 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);
-}
-
-static void shell_show_summary(void)
-{
- GKeyFile *keyfile;
- gchar *summary;
-
- 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);
- method = g_key_file_get_string(keyfile, groups[group], "Method", NULL);
- if (method) {
- method_result = module_call_method(method);
- } 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);
-}
-
-static void module_selected(gpointer data)
-{
- ShellTree *shelltree = shell->tree;
- GtkTreeModel *model = GTK_TREE_MODEL(shelltree->model);
- GtkTreeIter iter, parent;
- ShellModuleEntry *entry;
- static ShellModuleEntry *current = NULL;
- static gboolean updating = FALSE;
-
- /* Gets the currently selected item on the left-side TreeView; if there is no
- selection, silently return */
- if (!gtk_tree_selection_get_selected(shelltree->selection, &model, &iter)) {
- return;
- }
-
- /* Mark the currently selected module as "unselected"; this is used to kill the
- update timeout. */
- if (current) {
- current->selected = FALSE;
- }
-
- if (updating) {
- return;
- } else {
- updating = TRUE;
- }
-
- 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 */
- gtk_tree_model_get(model, &iter, TREE_COL_MODULE_ENTRY, &entry, -1);
- if (entry && !entry->selected) {
- gchar *title;
-
- shell_status_set_enabled(TRUE);
- shell_status_update("Updating...");
-
- 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? */
- 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);
-
- title = g_strdup_printf("%s - %s", shell->selected_module->name, entry->name);
- shell_set_title(shell, title);
- g_free(title);
-
- if (entry->flags & MODULE_FLAG_HAS_HELP) {
- gchar *temp;
-
- shell_action_set_enabled("ContextHelpAction", TRUE);
-
- temp = g_strdup_printf("Help on %s \342\206\222 %s",
- shell->selected_module->name,
- entry->name);
- shell_action_set_label("ContextHelpAction", temp);
-
- g_free(temp);
- } else {
- shell_action_set_enabled("ContextHelpAction", FALSE);
- shell_action_set_label("ContextHelpAction", "Context help");
- }
-
- shell_action_set_enabled("RefreshAction", TRUE);
- shell_action_set_enabled("CopyAction", TRUE);
-
- shell_status_update("Done.");
- shell_status_set_enabled(FALSE);
- } else {
- shell_set_title(shell, NULL);
- shell_action_set_enabled("RefreshAction", FALSE);
- shell_action_set_enabled("CopyAction", FALSE);
-
- gtk_tree_store_clear(GTK_TREE_STORE(shell->info->model));
- set_view_type(SHELL_VIEW_NORMAL, FALSE);
-
- shell_action_set_enabled("ContextHelpAction", FALSE);
- shell_action_set_label("ContextHelpAction", "Context help");
-
- if (shell->selected_module->summaryfunc) {
- shell_show_summary();
- }
- }
-
- current = entry;
- updating = FALSE;
-}
-
-static void info_selected(GtkTreeSelection * ts, gpointer data)
-{
- ShellInfoTree *info = (ShellInfoTree *) data;
- GtkTreeModel *model = GTK_TREE_MODEL(info->model);
- GtkTreeIter parent;
- gchar *datacol;
-
- 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);
- return;
- }
-
- gtk_tree_model_get(model, &parent, INFO_TREE_COL_DATA, &datacol, -1);
- info_selected_show_extra(datacol);
- gtk_tree_view_columns_autosize(GTK_TREE_VIEW(shell->moreinfo->view));
-}
-
-static ShellInfoTree *info_tree_new(gboolean extra)
-{
- ShellInfoTree *info;
- GtkWidget *treeview, *scroll;
- GtkTreeModel *model;
- GtkTreeStore *store;
- GtkTreeViewColumn *column;
- GtkCellRenderer *cr_text, *cr_pbuf, *cr_progress;
- GtkTreeSelection *sel;
-
- info = g_new0(ShellInfoTree, 1);
-
- scroll = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW
- (scroll), GTK_SHADOW_IN);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_ALWAYS);
-
- store =
- gtk_tree_store_new(INFO_TREE_NCOL, G_TYPE_STRING, G_TYPE_STRING,
- G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_FLOAT,
- G_TYPE_STRING, G_TYPE_STRING);
- model = GTK_TREE_MODEL(store);
- treeview = gtk_tree_view_new_with_model(model);
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
- gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(treeview), TRUE);
-
- info->col_progress = column = gtk_tree_view_column_new();
- gtk_tree_view_column_set_visible(column, FALSE);
- gtk_tree_view_column_set_min_width(column, 240);
- gtk_tree_view_column_set_clickable(column, TRUE);
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
-
- cr_progress = gtk_cell_renderer_progress_new();
- gtk_tree_view_column_pack_start(column, cr_progress, TRUE);
- gtk_tree_view_column_add_attribute(column, cr_progress, "value",
- INFO_TREE_COL_PROGRESS);
- gtk_tree_view_column_add_attribute(column, cr_progress, "text",
- INFO_TREE_COL_VALUE);
- gtk_tree_view_column_set_visible(column, FALSE);
-
- info->col_textvalue = column = gtk_tree_view_column_new();
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
- gtk_tree_view_column_set_clickable(column, TRUE);
-
- cr_pbuf = gtk_cell_renderer_pixbuf_new();
- gtk_tree_view_column_pack_start(column, cr_pbuf, FALSE);
- gtk_tree_view_column_add_attribute(column, cr_pbuf, "pixbuf",
- INFO_TREE_COL_PBUF);
-
- cr_text = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, cr_text, TRUE);
- gtk_tree_view_column_add_attribute(column, cr_text, "markup",
- INFO_TREE_COL_NAME);
-
- info->col_extra1 = column = gtk_tree_view_column_new();
- gtk_tree_view_column_set_visible(column, FALSE);
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
- gtk_tree_view_column_set_clickable(column, TRUE);
-
- cr_text = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, cr_text, FALSE);
- gtk_tree_view_column_add_attribute(column, cr_text, "markup",
- INFO_TREE_COL_EXTRA1);
-
- info->col_extra2 = column = gtk_tree_view_column_new();
- gtk_tree_view_column_set_visible(column, FALSE);
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
- gtk_tree_view_column_set_clickable(column, TRUE);
-
- cr_text = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, cr_text, FALSE);
- gtk_tree_view_column_add_attribute(column, cr_text, "markup",
- INFO_TREE_COL_EXTRA2);
-
- info->col_value = column = gtk_tree_view_column_new();
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
- gtk_tree_view_column_set_clickable(column, TRUE);
-
- cr_text = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, cr_text, FALSE);
- gtk_tree_view_column_add_attribute(column, cr_text, "markup",
- INFO_TREE_COL_VALUE);
-
- sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
-
- if (!extra)
- g_signal_connect(G_OBJECT(sel), "changed",
- (GCallback) info_selected, info);
-
- gtk_container_add(GTK_CONTAINER(scroll), treeview);
-
- info->scroll = scroll;
- info->view = treeview;
- info->model = model;
- info->selection = sel;
-
- gtk_widget_show_all(scroll);
-
- return info;
-}
-
-static ShellTree *tree_new()
-{
- ShellTree *shelltree;
- GtkWidget *treeview, *scroll;
- GtkTreeModel *model;
- GtkTreeStore *store;
- GtkCellRenderer *cr_text, *cr_pbuf;
- GtkTreeViewColumn *column;
- GtkTreeSelection *sel;
-
- shelltree = g_new0(ShellTree, 1);
-
- scroll = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW
- (scroll), GTK_SHADOW_IN);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
- GTK_POLICY_NEVER,
- GTK_POLICY_AUTOMATIC);
-
- store = gtk_tree_store_new(TREE_NCOL, GDK_TYPE_PIXBUF, G_TYPE_STRING,
- G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_BOOLEAN);
- model = GTK_TREE_MODEL(store);
- treeview = gtk_tree_view_new_with_model(model);
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
-
- column = gtk_tree_view_column_new();
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
-
- cr_pbuf = gtk_cell_renderer_pixbuf_new();
- cr_text = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, cr_pbuf, FALSE);
- gtk_tree_view_column_pack_start(column, cr_text, TRUE);
-
- gtk_tree_view_column_add_attribute(column, cr_pbuf, "pixbuf",
- TREE_COL_PBUF);
- gtk_tree_view_column_add_attribute(column, cr_text, "markup",
- TREE_COL_NAME);
-
- sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
- g_signal_connect(G_OBJECT(sel), "changed", (GCallback) module_selected,
- NULL);
-
- gtk_container_add(GTK_CONTAINER(scroll), treeview);
-
- shelltree->scroll = scroll;
- shelltree->view = treeview;
- shelltree->model = model;
- shelltree->modules = NULL;
- shelltree->selection = sel;
-
- gtk_widget_show_all(scroll);
-
- return shelltree;
-}
diff --git a/hardinfo2/shell/stock.c b/hardinfo2/shell/stock.c
deleted file mode 100644
index ad1a0135..00000000
--- a/hardinfo2/shell/stock.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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 <config.h>
-#include <gtk/gtk.h>
-#include <stock.h>
-#include <iconcache.h>
-
-static struct {
- gchar *filename;
- gchar *stock_id;
-} stock_icons[] = {
- { "report.png", HI_STOCK_REPORT},
- { "internet.png", HI_STOCK_INTERNET},
- { "module.png", HI_STOCK_MODULE},
- { "about-modules.png", HI_STOCK_ABOUT_MODULES},
- { "syncmanager-small.png", HI_STOCK_SYNC_MENU},
- { "face-grin.png", HI_STOCK_DONATE},
- { "server.png", HI_STOCK_SERVER},
-};
-
-static GtkIconFactory *icon_factory;
-
-void stock_icon_register(gchar * filename, gchar * stock_id)
-{
- GtkIconSet *icon_set;
- GtkIconSource *icon_source;
-
- icon_set = gtk_icon_set_new();
- icon_source = gtk_icon_source_new();
-
- gtk_icon_source_set_pixbuf(icon_source,
- icon_cache_get_pixbuf(filename));
- gtk_icon_set_add_source(icon_set, icon_source);
- gtk_icon_source_free(icon_source);
-
- gtk_icon_factory_add(icon_factory, stock_id, icon_set);
-
- gtk_icon_set_unref(icon_set);
-}
-
-void stock_icon_register_pixbuf(GdkPixbuf * pixbuf, gchar * stock_id)
-{
- GtkIconSet *icon_set;
- GtkIconSource *icon_source;
-
- icon_set = gtk_icon_set_new();
- icon_source = gtk_icon_source_new();
-
- gtk_icon_source_set_pixbuf(icon_source, pixbuf);
- gtk_icon_set_add_source(icon_set, icon_source);
- gtk_icon_source_free(icon_source);
-
- gtk_icon_factory_add(icon_factory, stock_id, icon_set);
-
- gtk_icon_set_unref(icon_set);
-}
-
-void stock_icons_init(void)
-{
- gint i;
- guint n_stock_icons = G_N_ELEMENTS(stock_icons);
-
- DEBUG("initializing stock icons");
-
- icon_factory = gtk_icon_factory_new();
-
- for (i = 0; i < n_stock_icons; i++) {
- stock_icon_register(stock_icons[i].filename,
- stock_icons[i].stock_id);
- }
-
- gtk_icon_factory_add_default(icon_factory);
-
- g_object_unref(icon_factory);
-}
diff --git a/hardinfo2/shell/syncmanager.c b/hardinfo2/shell/syncmanager.c
deleted file mode 100644
index 496dc348..00000000
--- a/hardinfo2/shell/syncmanager.c
+++ /dev/null
@@ -1,758 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 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 "syncmanager.h"
-#include "iconcache.h"
-#include "hardinfo.h"
-#include "config.h"
-
-#ifdef HAS_LIBSOUP
-#include <libsoup/soup.h>
-
-#include <stdarg.h>
-#include <string.h>
-
-typedef struct _SyncDialog SyncDialog;
-typedef struct _SyncNetArea SyncNetArea;
-typedef struct _SyncNetAction SyncNetAction;
-
-struct _SyncNetArea {
- GtkWidget *vbox;
-};
-
-struct _SyncNetAction {
- gchar *name;
- gboolean(*do_action) (SyncDialog * sd, gpointer sna);
-
- SyncEntry *entry;
- GError *error;
-};
-
-struct _SyncDialog {
- GtkWidget *dialog;
- GtkWidget *label;
-
- GtkWidget *button_sync;
- GtkWidget *button_cancel;
- GtkWidget *button_close;
-
- GtkWidget *scroll_box;
-
- SyncNetArea *sna;
-
- gboolean flag_cancel:1;
-};
-
-static GSList *entries = NULL;
-static SoupSession *session = NULL;
-static GMainLoop *loop;
-static GQuark err_quark;
-
-#define XMLRPC_SERVER_URI "http://hardinfo.berlios.de/xmlrpc/"
-#define XMLRPC_SERVER_API_VERSION 1
-
-#define LABEL_SYNC_DEFAULT "<big><b>Synchronize with Central Database</b></big>\n" \
- "The following information may be synchronized " \
- "with the HardInfo central database."
-#define LABEL_SYNC_SYNCING "<big><b>Synchronizing</b></big>\n" \
- "This may take some time."
-
-static SyncDialog *sync_dialog_new(GtkWidget *parent);
-static void sync_dialog_destroy(SyncDialog * sd);
-static void sync_dialog_start_sync(SyncDialog * sd);
-
-static SyncNetArea *sync_dialog_netarea_new(void);
-static void sync_dialog_netarea_destroy(SyncNetArea * sna);
-static void sync_dialog_netarea_show(SyncDialog * sd);
-#if 0
-static void sync_dialog_netarea_hide(SyncDialog * sd);
-#endif
-static void sync_dialog_netarea_start_actions(SyncDialog * sd,
- SyncNetAction * sna, gint n);
-
-#define SNA_ERROR(code,message,...) if (!sna->error) { \
- sna->error = g_error_new(err_quark, code, message, \
- ##__VA_ARGS__); \
- }
-#endif /* HAS_LIBSOUP */
-
-
-gint sync_manager_count_entries(void)
-{
-#ifdef HAS_LIBSOUP
- return g_slist_length(entries);
-#else
- return 0;
-#endif
-}
-
-void sync_manager_add_entry(SyncEntry * entry)
-{
-#ifdef HAS_LIBSOUP
- DEBUG("registering syncmanager entry ''%s''", entry->fancy_name);
-
- entry->selected = TRUE;
- entries = g_slist_append(entries, entry);
-#else
- DEBUG("libsoup support is disabled.");
-#endif /* HAS_LIBSOUP */
-}
-
-void sync_manager_clear_entries(void)
-{
-#ifdef HAS_LIBSOUP
- DEBUG("clearing syncmanager entries");
-
- g_slist_free(entries);
- entries = NULL;
-#else
- DEBUG("libsoup support is disabled.");
-#endif /* HAS_LIBSOUP */
-}
-
-void sync_manager_show(GtkWidget *parent)
-{
-#ifndef HAS_LIBSOUP
- g_warning
- ("HardInfo was compiled without libsoup support. (Network Updater requires it.)");
-#else /* !HAS_LIBSOUP */
- SyncDialog *sd = sync_dialog_new(parent);
-
- err_quark = g_quark_from_static_string("syncmanager");
-
- if (gtk_dialog_run(GTK_DIALOG(sd->dialog)) == GTK_RESPONSE_ACCEPT) {
- shell_view_set_enabled(FALSE);
- shell_status_set_enabled(TRUE);
-
- sync_dialog_start_sync(sd);
-
- shell_status_set_enabled(FALSE);
- shell_view_set_enabled(TRUE);
- }
-
- sync_dialog_destroy(sd);
-#endif /* HAS_LIBSOUP */
-}
-
-#ifdef HAS_LIBSOUP
-static gint _soup_get_xmlrpc_value_int(SoupMessage * msg,
- SyncNetAction * sna)
-{
- gint int_value = -1;
-
- sna->error = NULL;
-
- if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) {
- SNA_ERROR(1, "%s (error #%d)", msg->reason_phrase,
- msg->status_code);
- goto bad;
- }
-
- if (!soup_xmlrpc_extract_method_response(msg->response_body->data,
- msg->response_body->length,
- NULL,
- G_TYPE_INT, &int_value)) {
- SNA_ERROR(2, "Could not parse XML-RPC response");
- }
-
- bad:
- return int_value;
-}
-
-static gchar *_soup_get_xmlrpc_value_string(SoupMessage * msg,
- SyncNetAction * sna)
-{
- gchar *string = NULL;
-
- sna->error = NULL;
-
- if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) {
- SNA_ERROR(1, "%s (error #%d)", msg->reason_phrase,
- msg->status_code);
- goto bad;
- }
-
- if (!soup_xmlrpc_extract_method_response(msg->response_body->data,
- msg->response_body->length,
- NULL,
- G_TYPE_STRING, &string)) {
- SNA_ERROR(2, "Could not parse XML-RPC response");
- }
-
- bad:
- return string;
-}
-
-static gboolean _soup_xmlrpc_call(gchar * method, SyncNetAction * sna,
- SoupSessionCallback callback)
-{
- SoupMessage *msg;
-
- sna->error = NULL;
-
- msg = soup_xmlrpc_request_new(XMLRPC_SERVER_URI, method,
- G_TYPE_INVALID);
- if (!msg)
- return FALSE;
-
- DEBUG("calling xmlrpc method %s", method);
-
- soup_session_queue_message(session, msg, callback, sna);
- g_main_run(loop);
-
- return TRUE;
-}
-
-static gboolean _soup_xmlrpc_call_with_parameters(gchar * method,
- SyncNetAction * sna,
- SoupSessionCallback
- callback, ...)
-{
- SoupMessage *msg;
- GValueArray *parameters;
- gchar *argument, *body;
- va_list ap;
-
- sna->error = NULL;
-
- msg = soup_message_new("POST", XMLRPC_SERVER_URI);
-
- DEBUG("calling xmlrpc method %s", method);
- if (!msg)
- return FALSE;
-
- parameters = g_value_array_new(1);
- va_start(ap, callback);
- while ((argument = va_arg(ap, gchar *))) {
- soup_value_array_append(parameters, G_TYPE_STRING, argument);
- DEBUG("with parameter: %s", argument);
- }
- va_end(ap);
-
- body = soup_xmlrpc_build_method_call(method, parameters->values,
- parameters->n_values);
- g_value_array_free(parameters);
- soup_message_set_request(msg, "text/xml",
- SOUP_MEMORY_TAKE, body, strlen (body));
-
- soup_session_queue_message(session, msg, callback, sna);
- g_main_run(loop);
-
- return TRUE;
-}
-
-static void _action_check_api_version_got_response(SoupSession * session,
- SoupMessage * msg,
- gpointer user_data)
-{
- SyncNetAction *sna = (SyncNetAction *) user_data;
- gint version = _soup_get_xmlrpc_value_int(msg, sna);
-
- if (version != XMLRPC_SERVER_API_VERSION) {
- SNA_ERROR(5, "Server says it supports API version %d, but "
- "this version of HardInfo only supports API "
- "version %d.", version, XMLRPC_SERVER_API_VERSION);
- }
-
- g_main_quit(loop);
-}
-
-static gboolean _action_check_api_version(SyncDialog * sd,
- gpointer user_data)
-{
- SyncNetAction *sna = (SyncNetAction *) user_data;
-
- if (!_soup_xmlrpc_call("server.getAPIVersion", sna,
- _action_check_api_version_got_response))
- return FALSE;
-
- return sna->error ? FALSE : TRUE;
-}
-
-static void _action_call_function_got_response(SoupSession * session,
- SoupMessage * msg,
- gpointer user_data)
-{
- SyncNetAction *sna = (SyncNetAction *) user_data;
- gchar *string;
-
- if ((string = _soup_get_xmlrpc_value_string(msg, sna)) &&
- sna->entry->save_to) {
- DEBUG("received string: %s\n", string);
- gchar *filename = g_build_filename(g_get_home_dir(), ".hardinfo",
- sna->entry->save_to, NULL);
-
- DEBUG("saving to %s", filename);
-
- g_file_set_contents(filename, string, -1, NULL);
- g_free(filename);
- }
-
- if (sna->entry->callback) {
- sna->entry->callback(sna->entry, string);
- }
-
- g_free(string);
- g_main_quit(loop);
-}
-
-static gboolean _action_call_function(SyncDialog * sd, gpointer user_data)
-{
- SyncNetAction *sna = (SyncNetAction *) user_data;
-
- if (sna->entry) {
- gchar *str_data = NULL;
-
- if (sna->entry->get_data)
- str_data = sna->entry->get_data();
-
- if (!_soup_xmlrpc_call_with_parameters("sync.callFunctionEx", sna,
- _action_call_function_got_response,
- VERSION, ARCH,
- sna->entry->name,
- str_data, NULL)) {
- if (str_data)
- g_free(str_data);
-
- return FALSE;
- }
-
- if (str_data)
- g_free(str_data);
- }
-
- return sna->error ? FALSE : TRUE;
-}
-
-static gboolean _cancel_sync(GtkWidget * widget, gpointer data)
-{
- SyncDialog *sd = (SyncDialog *) data;
-
- if (session) {
- soup_session_abort(session);
- }
-
- sd->flag_cancel = TRUE;
- g_main_quit(loop);
-
- gtk_widget_set_sensitive(widget, FALSE);
-
- return FALSE;
-}
-
-static SyncNetAction *sync_manager_get_selected_actions(gint * n)
-{
- gint i;
- GSList *entry;
- SyncNetAction *actions;
- SyncNetAction
- action_check_api = { "Contacting HardInfo Central Database", _action_check_api_version },
- action_clean_up = { "Cleaning up", NULL};
-
- actions = g_new0(SyncNetAction, 2 + g_slist_length(entries));
-
- for (entry = entries, i = 1; entry; entry = entry->next) {
- SyncEntry *e = (SyncEntry *) entry->data;
-
- if (e->selected) {
- SyncNetAction sna =
- { e->fancy_name, _action_call_function, e };
-
- actions[i++] = sna;
- }
- }
-
- actions[0] = action_check_api;
- actions[i++] = action_clean_up;
-
- *n = i;
- return actions;
-}
-
-static SoupURI *sync_manager_get_proxy(void)
-{
- const gchar *conf;
-
- if (!(conf = g_getenv("HTTP_PROXY"))) {
- if (!(conf = g_getenv("http_proxy"))) {
- return NULL;
- }
- }
-
- return soup_uri_new(conf);
-}
-
-static void sync_dialog_start_sync(SyncDialog * sd)
-{
- gint nactions;
- SyncNetAction *actions;
-
- if (!session) {
- SoupURI *proxy = sync_manager_get_proxy();
-
- session =
- soup_session_async_new_with_options(SOUP_SESSION_TIMEOUT, 10,
- SOUP_SESSION_PROXY_URI,
- proxy, NULL);
- /* Crashes if we unref the proxy? O_o */
- /*if (proxy)
- g_object_unref(proxy); */
- }
-
- loop = g_main_loop_new(NULL, TRUE);
-
- gtk_widget_hide(sd->button_sync);
- sync_dialog_netarea_show(sd);
- g_signal_connect(G_OBJECT(sd->button_cancel), "clicked",
- (GCallback) _cancel_sync, sd);
-
- actions = sync_manager_get_selected_actions(&nactions);
- sync_dialog_netarea_start_actions(sd, actions, nactions);
- g_free(actions);
-
- if (sd->flag_cancel) {
- gtk_widget_hide(sd->button_cancel);
- gtk_widget_show(sd->button_close);
-
- /* wait for the user to close the dialog */
- g_main_run(loop);
- }
-
- g_main_loop_unref(loop);
-}
-
-static void sync_dialog_netarea_start_actions(SyncDialog * sd,
- SyncNetAction sna[], gint n)
-{
- gint i;
- GtkWidget **labels;
- GtkWidget **status_labels;
- const gchar *done_str = "\342\234\223";
- const gchar *error_str = "\342\234\227";
- const gchar *curr_str = "\342\226\266";
- const gchar *empty_str = "\302\240\302\240";
-
- labels = g_new0(GtkWidget *, n);
- status_labels = g_new0(GtkWidget *, n);
-
- for (i = 0; i < n; i++) {
- GtkWidget *hbox;
-
- hbox = gtk_hbox_new(FALSE, 5);
-
- labels[i] = gtk_label_new(sna[i].name);
- status_labels[i] = gtk_label_new(empty_str);
-
- 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);
-
- gtk_box_pack_start(GTK_BOX(hbox), status_labels[i], FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hbox), labels[i], TRUE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(sd->sna->vbox), hbox, FALSE, FALSE, 3);
-
- gtk_widget_show_all(hbox);
- }
-
- while (gtk_events_pending())
- gtk_main_iteration();
-
- for (i = 0; i < n; i++) {
- gchar *markup;
-
- if (sd->flag_cancel) {
- markup =
- g_strdup_printf("<s>%s</s> <i>(canceled)</i>",
- sna[i].name);
- gtk_label_set_markup(GTK_LABEL(labels[i]), markup);
- g_free(markup);
-
- gtk_label_set_markup(GTK_LABEL(status_labels[i]), error_str);
- break;
- }
-
- markup = g_strdup_printf("<b>%s</b>", sna[i].name);
- gtk_label_set_markup(GTK_LABEL(labels[i]), markup);
- g_free(markup);
-
- gtk_label_set_markup(GTK_LABEL(status_labels[i]), curr_str);
-
- 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);
- gtk_label_set_markup(GTK_LABEL(labels[i]), markup);
- g_free(markup);
-
- sd->flag_cancel = TRUE;
-
- gtk_label_set_markup(GTK_LABEL(status_labels[i]), error_str);
- if (sna[i].error) {
- if (sna[i].error->code != 1) {
- /* the user has not cancelled something... */
- g_warning
- ("Failed while performing \"%s\". Please file a bug report "
- "if this problem persists. (Use the Help\342\206\222Report"
- " bug option.)\n\nDetails: %s", sna[i].name,
- sna[i].error->message);
- }
-
- g_error_free(sna[i].error);
- } else {
- g_warning
- ("Failed while performing \"%s\". Please file a bug report "
- "if this problem persists. (Use the Help\342\206\222Report"
- " bug option.)", sna[i].name);
- }
- break;
- }
-
- gtk_label_set_markup(GTK_LABEL(status_labels[i]), done_str);
- gtk_label_set_markup(GTK_LABEL(labels[i]), sna[i].name);
- }
-
- g_free(labels);
- g_free(status_labels);
-}
-
-static SyncNetArea *sync_dialog_netarea_new(void)
-{
- SyncNetArea *sna = g_new0(SyncNetArea, 1);
-
- sna->vbox = gtk_vbox_new(FALSE, 0);
-
- gtk_container_set_border_width(GTK_CONTAINER(sna->vbox), 10);
-
- gtk_widget_show_all(sna->vbox);
- gtk_widget_hide(sna->vbox);
-
- return sna;
-}
-
-static void sync_dialog_netarea_destroy(SyncNetArea * sna)
-{
- g_return_if_fail(sna != NULL);
-
- g_free(sna);
-}
-
-static void sync_dialog_netarea_show(SyncDialog * sd)
-{
- g_return_if_fail(sd && sd->sna);
-
- gtk_widget_hide(GTK_WIDGET(sd->scroll_box));
- gtk_widget_show(GTK_WIDGET(sd->sna->vbox));
-
- gtk_label_set_markup(GTK_LABEL(sd->label), LABEL_SYNC_SYNCING);
- gtk_window_set_default_size(GTK_WINDOW(sd->dialog), 0, 0);
- gtk_window_reshow_with_initial_size(GTK_WINDOW(sd->dialog));
-}
-
-#if 0
-static void sync_dialog_netarea_hide(SyncDialog * sd)
-{
- g_return_if_fail(sd && sd->sna);
-
- gtk_widget_show(GTK_WIDGET(sd->scroll_box));
- gtk_widget_hide(GTK_WIDGET(sd->sna->vbox));
-
- gtk_label_set_markup(GTK_LABEL(sd->label), LABEL_SYNC_DEFAULT);
- gtk_window_reshow_with_initial_size(GTK_WINDOW(sd->dialog));
-}
-#endif
-
-static void populate_store(GtkListStore * store)
-{
- GSList *entry;
- SyncEntry *e;
-
- gtk_list_store_clear(store);
-
- for (entry = entries; entry; entry = entry->next) {
- GtkTreeIter iter;
-
- e = (SyncEntry *) entry->data;
-
- e->selected = TRUE;
-
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter, 0, TRUE, 1, e->fancy_name, 2, e,
- -1);
- }
-}
-
-static void
-sel_toggle(GtkCellRendererToggle * cellrenderertoggle,
- gchar * path_str, GtkTreeModel * model)
-{
- GtkTreeIter iter;
- GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
- SyncEntry *se;
- gboolean active;
-
- gtk_tree_model_get_iter(model, &iter, path);
- gtk_tree_model_get(model, &iter, 0, &active, 2, &se, -1);
-
- se->selected = !active;
-
- gtk_list_store_set(GTK_LIST_STORE(model), &iter, 0, se->selected, -1);
- gtk_tree_path_free(path);
-}
-
-static void close_clicked(void)
-{
- g_main_quit(loop);
-}
-
-static SyncDialog *sync_dialog_new(GtkWidget *parent)
-{
- SyncDialog *sd;
- GtkWidget *dialog;
- GtkWidget *dialog1_vbox;
- GtkWidget *scrolledwindow2;
- GtkWidget *treeview2;
- GtkWidget *dialog1_action_area;
- GtkWidget *button8;
- GtkWidget *button7;
- GtkWidget *button6;
- GtkWidget *label;
- GtkWidget *hbox;
-
- GtkTreeViewColumn *column;
- GtkTreeModel *model;
- GtkListStore *store;
- GtkCellRenderer *cr_text, *cr_toggle;
-
- sd = g_new0(SyncDialog, 1);
- sd->sna = sync_dialog_netarea_new();
-
- dialog = gtk_dialog_new();
- gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent));
- gtk_window_set_title(GTK_WINDOW(dialog), "Network Updater");
- gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
- gtk_window_set_icon(GTK_WINDOW(dialog),
- icon_cache_get_pixbuf("syncmanager.png"));
- gtk_window_set_default_size(GTK_WINDOW(dialog), 420, 260);
- gtk_window_set_position(GTK_WINDOW(dialog),
- GTK_WIN_POS_CENTER_ON_PARENT);
- gtk_window_set_type_hint(GTK_WINDOW(dialog),
- GDK_WINDOW_TYPE_HINT_DIALOG);
-
- gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);
-
- dialog1_vbox = GTK_DIALOG(dialog)->vbox;
- gtk_box_set_spacing(GTK_BOX(dialog1_vbox), 5);
- gtk_container_set_border_width(GTK_CONTAINER(dialog1_vbox), 4);
- gtk_widget_show(dialog1_vbox);
-
- hbox = gtk_hbox_new(FALSE, 5);
- 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);
- gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-
- gtk_box_pack_start(GTK_BOX(hbox),
- icon_cache_get_image("syncmanager.png"),
- FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0);
- gtk_widget_show_all(hbox);
-
-
- gtk_box_pack_start(GTK_BOX(dialog1_vbox), sd->sna->vbox, TRUE, TRUE,
- 0);
-
- scrolledwindow2 = gtk_scrolled_window_new(NULL, NULL);
- gtk_widget_show(scrolledwindow2);
- gtk_box_pack_start(GTK_BOX(dialog1_vbox), scrolledwindow2, TRUE, TRUE,
- 0);
- gtk_widget_set_size_request(scrolledwindow2, -1, 200);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow2),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW
- (scrolledwindow2), GTK_SHADOW_IN);
-
- store =
- gtk_list_store_new(3, G_TYPE_BOOLEAN, G_TYPE_STRING,
- G_TYPE_POINTER);
- model = GTK_TREE_MODEL(store);
-
- treeview2 = gtk_tree_view_new_with_model(model);
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview2), FALSE);
- gtk_widget_show(treeview2);
- gtk_container_add(GTK_CONTAINER(scrolledwindow2), treeview2);
-
- column = gtk_tree_view_column_new();
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview2), column);
-
- cr_toggle = gtk_cell_renderer_toggle_new();
- gtk_tree_view_column_pack_start(column, cr_toggle, FALSE);
- g_signal_connect(cr_toggle, "toggled", G_CALLBACK(sel_toggle), model);
- gtk_tree_view_column_add_attribute(column, cr_toggle, "active", 0);
-
- cr_text = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, cr_text, TRUE);
- gtk_tree_view_column_add_attribute(column, cr_text, "markup", 1);
-
- populate_store(store);
-
- dialog1_action_area = GTK_DIALOG(dialog)->action_area;
- 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);
- gtk_widget_show(button8);
- gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button8,
- GTK_RESPONSE_CANCEL);
- GTK_WIDGET_SET_FLAGS(button8, GTK_CAN_DEFAULT);
-
- button7 = gtk_button_new_with_mnemonic("_Synchronize");
- gtk_widget_show(button7);
- gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button7,
- GTK_RESPONSE_ACCEPT);
- GTK_WIDGET_SET_FLAGS(button7, GTK_CAN_DEFAULT);
-
- 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);
- GTK_WIDGET_SET_FLAGS(button6, GTK_CAN_DEFAULT);
-
- sd->dialog = dialog;
- sd->button_sync = button7;
- sd->button_cancel = button8;
- sd->button_close = button6;
- sd->scroll_box = scrolledwindow2;
- sd->label = label;
-
- return sd;
-}
-
-static void sync_dialog_destroy(SyncDialog * sd)
-{
- gtk_widget_destroy(sd->dialog);
- sync_dialog_netarea_destroy(sd->sna);
- g_free(sd);
-}
-#endif /* HAS_LIBSOUP */
diff --git a/hardinfo2/util/binreloc.c b/hardinfo2/util/binreloc.c
deleted file mode 100644
index 1d1acfe6..00000000
--- a/hardinfo2/util/binreloc.c
+++ /dev/null
@@ -1,672 +0,0 @@
-/*
- * BinReloc - a library for creating relocatable executables
- * Written by: Hongli Lai <h.lai@chello.nl>
- * http://autopackage.org/
- *
- * This source code is public domain. You can relicense this code
- * under whatever license you want.
- *
- * See http://autopackage.org/docs/binreloc/ for
- * more information and how to use this.
- */
-
-#ifndef __BINRELOC_C__
-#define __BINRELOC_C__
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <string.h>
-#include "binreloc.h"
-#include "config.h"
-
-G_BEGIN_DECLS
-/** @internal
- * Find the canonical filename of the executable. Returns the filename
- * (which must be freed) or NULL on error. If the parameter 'error' is
- * not NULL, the error code will be stored there, if an error occured.
- */
-static char *_br_find_exe(GbrInitError * error)
-{
- char *path, *path2, *line, *result;
- size_t buf_size;
- ssize_t size;
- struct stat stat_buf;
- FILE *f;
-
- /* Read from /proc/self/exe (symlink) */
- if (sizeof(path) > SSIZE_MAX)
- buf_size = SSIZE_MAX - 1;
- else
- buf_size = PATH_MAX - 1;
- path = (char *) g_try_malloc(buf_size);
- if (path == NULL) {
- /* Cannot allocate memory. */
- if (error)
- *error = GBR_INIT_ERROR_NOMEM;
- return NULL;
- }
- path2 = (char *) g_try_malloc(buf_size);
- if (path2 == NULL) {
- /* Cannot allocate memory. */
- if (error)
- *error = GBR_INIT_ERROR_NOMEM;
- g_free(path);
- return NULL;
- }
-
- strncpy(path2, "/proc/self/exe", buf_size - 1);
-
- while (1) {
- int i;
-
- size = readlink(path2, path, buf_size - 1);
- if (size == -1) {
- /* Error. */
- g_free(path2);
- break;
- }
-
- /* readlink() success. */
- path[size] = '\0';
-
- /* Check whether the symlink's target is also a symlink.
- * We want to get the final target. */
- i = stat(path, &stat_buf);
- if (i == -1) {
- /* Error. */
- g_free(path2);
- break;
- }
-
- /* stat() success. */
- if (!S_ISLNK(stat_buf.st_mode)) {
- /* path is not a symlink. Done. */
- g_free(path2);
- return path;
- }
-
- /* path is a symlink. Continue loop and resolve this. */
- strncpy(path, path2, buf_size - 1);
- }
-
-
- /* readlink() or stat() failed; this can happen when the program is
- * running in Valgrind 2.2. Read from /proc/self/maps as fallback. */
-
- buf_size = PATH_MAX + 128;
- line = (char *) g_try_realloc(path, buf_size);
- if (line == NULL) {
- /* Cannot allocate memory. */
- g_free(path);
- if (error)
- *error = GBR_INIT_ERROR_NOMEM;
- return NULL;
- }
-
- f = fopen("/proc/self/maps", "r");
- if (f == NULL) {
- g_free(line);
- if (error)
- *error = GBR_INIT_ERROR_OPEN_MAPS;
- return NULL;
- }
-
- /* The first entry should be the executable name. */
- result = fgets(line, (int) buf_size, f);
- if (result == NULL) {
- fclose(f);
- g_free(line);
- if (error)
- *error = GBR_INIT_ERROR_READ_MAPS;
- return NULL;
- }
-
- /* Get rid of newline character. */
- buf_size = strlen(line);
- if (buf_size <= 0) {
- /* Huh? An empty string? */
- fclose(f);
- g_free(line);
- if (error)
- *error = GBR_INIT_ERROR_INVALID_MAPS;
- return NULL;
- }
- if (line[buf_size - 1] == 10)
- line[buf_size - 1] = 0;
-
- /* Extract the filename; it is always an absolute path. */
- path = strchr(line, '/');
-
- /* Sanity check. */
- if (strstr(line, " r-xp ") == NULL || path == NULL) {
- fclose(f);
- g_free(line);
- if (error)
- *error = GBR_INIT_ERROR_INVALID_MAPS;
- return NULL;
- }
-
- path = g_strdup(path);
- g_free(line);
- fclose(f);
- return path;
-}
-
-
-/** @internal
- * Find the canonical filename of the executable which owns symbol.
- * Returns a filename which must be freed, or NULL on error.
- */
-static char *_br_find_exe_for_symbol(const void *symbol,
- GbrInitError * error)
-{
-#define SIZE PATH_MAX + 100
- FILE *f;
- size_t address_string_len;
- char *address_string, line[SIZE], *found;
-
- if (symbol == NULL)
- return (char *) NULL;
-
- f = fopen("/proc/self/maps", "r");
- if (f == NULL)
- return (char *) NULL;
-
- address_string_len = 4;
- address_string = (char *) g_try_malloc(address_string_len);
- found = (char *) NULL;
-
- while (!feof(f)) {
- char *start_addr, *end_addr, *end_addr_end, *file;
- void *start_addr_p, *end_addr_p;
- size_t len;
-
- if (fgets(line, SIZE, f) == NULL)
- break;
-
- /* Sanity check. */
- if (strstr(line, " r-xp ") == NULL || strchr(line, '/') == NULL)
- continue;
-
- /* Parse line. */
- start_addr = line;
- end_addr = strchr(line, '-');
- file = strchr(line, '/');
-
- /* More sanity check. */
- if (!(file > end_addr && end_addr != NULL && end_addr[0] == '-'))
- continue;
-
- end_addr[0] = '\0';
- end_addr++;
- end_addr_end = strchr(end_addr, ' ');
- if (end_addr_end == NULL)
- continue;
-
- end_addr_end[0] = '\0';
- len = strlen(file);
- if (len == 0)
- continue;
- if (file[len - 1] == '\n')
- file[len - 1] = '\0';
-
- /* Get rid of "(deleted)" from the filename. */
- len = strlen(file);
- if (len > 10 && strcmp(file + len - 10, " (deleted)") == 0)
- file[len - 10] = '\0';
-
- /* I don't know whether this can happen but better safe than sorry. */
- len = strlen(start_addr);
- if (len != strlen(end_addr))
- continue;
-
-
- /* Transform the addresses into a string in the form of 0xdeadbeef,
- * then transform that into a pointer. */
- if (address_string_len < len + 3) {
- address_string_len = len + 3;
- address_string =
- (char *) g_try_realloc(address_string, address_string_len);
- }
-
- memcpy(address_string, "0x", 2);
- memcpy(address_string + 2, start_addr, len);
- address_string[2 + len] = '\0';
- sscanf(address_string, "%p", &start_addr_p);
-
- memcpy(address_string, "0x", 2);
- memcpy(address_string + 2, end_addr, len);
- address_string[2 + len] = '\0';
- sscanf(address_string, "%p", &end_addr_p);
-
-
- if (symbol >= start_addr_p && symbol < end_addr_p) {
- found = file;
- break;
- }
- }
-
- g_free(address_string);
- fclose(f);
-
- if (found == NULL)
- return (char *) NULL;
- else
- return g_strdup(found);
-}
-
-
-static gchar *exe = NULL;
-
-static void set_gerror(GError ** error, GbrInitError errcode);
-
-
-/** Initialize the BinReloc library (for applications).
- *
- * This function must be called before using any other BinReloc functions.
- * It attempts to locate the application's canonical filename.
- *
- * @note If you want to use BinReloc for a library, then you should call
- * gbr_init_lib() instead.
- *
- * @param error If BinReloc failed to initialize, then the error report will
- * be stored in this variable. Set to NULL if you don't want an
- * error report. See the #GbrInitError for a list of error
- * codes.
- *
- * @returns TRUE on success, FALSE if BinReloc failed to initialize.
- */
-gboolean gbr_init(GError ** error)
-{
- GbrInitError errcode = 0;
-
- /* Locate the application's filename. */
- exe = _br_find_exe(&errcode);
- if (exe != NULL)
- /* Success! */
- return TRUE;
- else {
- /* Failed :-( */
- set_gerror(error, errcode);
- return FALSE;
- }
-}
-
-
-/** Initialize the BinReloc library (for libraries).
- *
- * This function must be called before using any other BinReloc functions.
- * It attempts to locate the calling library's canonical filename.
- *
- * @note The BinReloc source code MUST be included in your library, or this
- * function won't work correctly.
- *
- * @returns TRUE on success, FALSE if a filename cannot be found.
- */
-gboolean gbr_init_lib(GError ** error)
-{
- GbrInitError errcode = 0;
-
- exe = _br_find_exe_for_symbol((const void *) "", &errcode);
- if (exe != NULL)
- /* Success! */
- return TRUE;
- else {
- /* Failed :-( */
- set_gerror(error, errcode);
- return exe != NULL;
- }
-}
-
-
-static void set_gerror(GError ** error, GbrInitError errcode)
-{
- gchar *error_message;
-
- if (error == NULL)
- return;
-
- switch (errcode) {
- case GBR_INIT_ERROR_NOMEM:
- error_message = "Cannot allocate memory.";
- break;
- case GBR_INIT_ERROR_OPEN_MAPS:
- error_message = "Unable to open /proc/self/maps for reading.";
- break;
- case GBR_INIT_ERROR_READ_MAPS:
- error_message = "Unable to read from /proc/self/maps.";
- break;
- case GBR_INIT_ERROR_INVALID_MAPS:
- error_message = "The file format of /proc/self/maps is invalid.";
- break;
- case GBR_INIT_ERROR_DISABLED:
- error_message = "Binary relocation support is disabled.";
- break;
- default:
- error_message = "Unknown error.";
- break;
- };
- g_set_error(error, g_quark_from_static_string("GBinReloc"),
- errcode, "%s", error_message);
-}
-
-
-/** Find the canonical filename of the current application.
- *
- * @param default_exe A default filename which will be used as fallback.
- * @returns A string containing the application's canonical filename,
- * which must be freed when no longer necessary. If BinReloc is
- * not initialized, or if the initialization function failed,
- * then a copy of default_exe will be returned. If default_exe
- * is NULL, then NULL will be returned.
- */
-gchar *gbr_find_exe(const gchar * default_exe)
-{
- if (exe == NULL) {
- /* BinReloc is not initialized. */
- if (default_exe != NULL)
- return g_strdup(default_exe);
- else
- return NULL;
- }
- return g_strdup(exe);
-}
-
-
-/** Locate the directory in which the current application is installed.
- *
- * The prefix is generated by the following pseudo-code evaluation:
- * \code
- * dirname(exename)
- * \endcode
- *
- * @param default_dir A default directory which will used as fallback.
- * @return A string containing the directory, which must be freed when no
- * longer necessary. If BinReloc is not initialized, or if the
- * initialization function failed, then a copy of default_dir
- * will be returned. If default_dir is NULL, then NULL will be
- * returned.
- */
-gchar *gbr_find_exe_dir(const gchar * default_dir)
-{
- if (exe == NULL) {
- /* BinReloc not initialized. */
- if (default_dir != NULL)
- return g_strdup(default_dir);
- else
- return NULL;
- }
-
- return g_path_get_dirname(exe);
-}
-
-
-/** Locate the prefix in which the current application is installed.
- *
- * The prefix is generated by the following pseudo-code evaluation:
- * \code
- * dirname(dirname(exename))
- * \endcode
- *
- * @param default_prefix A default prefix which will used as fallback.
- * @return A string containing the prefix, which must be freed when no
- * longer necessary. If BinReloc is not initialized, or if the
- * initialization function failed, then a copy of default_prefix
- * will be returned. If default_prefix is NULL, then NULL will be
- * returned.
- */
-gchar *gbr_find_prefix(const gchar * default_prefix)
-{
- gchar *dir1, *dir2;
-
- if (exe == NULL) {
- /* BinReloc not initialized. */
- if (default_prefix != NULL)
- return g_strdup(default_prefix);
- else
- return NULL;
- }
-
- dir1 = g_path_get_dirname(exe);
- dir2 = g_path_get_dirname(dir1);
- g_free(dir1);
- return dir2;
-}
-
-
-/** Locate the application's binary folder.
- *
- * The path is generated by the following pseudo-code evaluation:
- * \code
- * prefix + "/bin"
- * \endcode
- *
- * @param default_bin_dir A default path which will used as fallback.
- * @return A string containing the bin folder's path, which must be freed when
- * no longer necessary. If BinReloc is not initialized, or if the
- * initialization function failed, then a copy of default_bin_dir will
- * be returned. If default_bin_dir is NULL, then NULL will be returned.
- */
-gchar *gbr_find_bin_dir(const gchar * default_bin_dir)
-{
- gchar *prefix, *dir;
-
- prefix = gbr_find_prefix(NULL);
- if (prefix == NULL) {
- /* BinReloc not initialized. */
- if (default_bin_dir != NULL)
- return g_strdup(default_bin_dir);
- else
- return NULL;
- }
-
- dir = g_build_filename(prefix, "bin", NULL);
- g_free(prefix);
- return dir;
-}
-
-
-/** Locate the application's superuser binary folder.
- *
- * The path is generated by the following pseudo-code evaluation:
- * \code
- * prefix + "/sbin"
- * \endcode
- *
- * @param default_sbin_dir A default path which will used as fallback.
- * @return A string containing the sbin folder's path, which must be freed when
- * no longer necessary. If BinReloc is not initialized, or if the
- * initialization function failed, then a copy of default_sbin_dir will
- * be returned. If default_bin_dir is NULL, then NULL will be returned.
- */
-gchar *gbr_find_sbin_dir(const gchar * default_sbin_dir)
-{
- gchar *prefix, *dir;
-
- prefix = gbr_find_prefix(NULL);
- if (prefix == NULL) {
- /* BinReloc not initialized. */
- if (default_sbin_dir != NULL)
- return g_strdup(default_sbin_dir);
- else
- return NULL;
- }
-
- dir = g_build_filename(prefix, "sbin", NULL);
- g_free(prefix);
- return dir;
-}
-
-
-/** Locate the application's data folder.
- *
- * The path is generated by the following pseudo-code evaluation:
- * \code
- * prefix + "/share"
- * \endcode
- *
- * @param default_data_dir A default path which will used as fallback.
- * @return A string containing the data folder's path, which must be freed when
- * no longer necessary. If BinReloc is not initialized, or if the
- * initialization function failed, then a copy of default_data_dir
- * will be returned. If default_data_dir is NULL, then NULL will be
- * returned.
- */
-gchar *gbr_find_data_dir(const gchar * default_data_dir)
-{
- gchar *prefix, *dir;
-
- prefix = gbr_find_prefix(NULL);
- if (prefix == NULL) {
- /* BinReloc not initialized. */
- if (default_data_dir != NULL)
- return g_strdup(default_data_dir);
- else
- return NULL;
- }
-
- dir = g_build_filename(prefix, "share", NULL);
- g_free(prefix);
- return dir;
-}
-
-
-/** Locate the application's localization folder.
- *
- * The path is generated by the following pseudo-code evaluation:
- * \code
- * prefix + "/share/locale"
- * \endcode
- *
- * @param default_locale_dir A default path which will used as fallback.
- * @return A string containing the localization folder's path, which must be freed when
- * no longer necessary. If BinReloc is not initialized, or if the
- * initialization function failed, then a copy of default_locale_dir will be returned.
- * If default_locale_dir is NULL, then NULL will be returned.
- */
-gchar *gbr_find_locale_dir(const gchar * default_locale_dir)
-{
- gchar *data_dir, *dir;
-
- data_dir = gbr_find_data_dir(NULL);
- if (data_dir == NULL) {
- /* BinReloc not initialized. */
- if (default_locale_dir != NULL)
- return g_strdup(default_locale_dir);
- else
- return NULL;
- }
-
- dir = g_build_filename(data_dir, "locale", NULL);
- g_free(data_dir);
- return dir;
-}
-
-
-/** Locate the application's library folder.
- *
- * The path is generated by the following pseudo-code evaluation:
- * \code
- * prefix + "/lib"
- * \endcode
- *
- * @param default_lib_dir A default path which will used as fallback.
- * @return A string containing the library folder's path, which must be freed when
- * no longer necessary. If BinReloc is not initialized, or if the
- * initialization function failed, then a copy of default_lib_dir will be returned.
- * If default_lib_dir is NULL, then NULL will be returned.
- */
-gchar *gbr_find_lib_dir(const gchar * default_lib_dir)
-{
- gchar *prefix, *dir;
-
- prefix = gbr_find_prefix(NULL);
- if (prefix == NULL) {
- /* BinReloc not initialized. */
- if (default_lib_dir != NULL)
- return g_strdup(default_lib_dir);
- else
- return NULL;
- }
-
-#ifdef ARCH_x86_64
- dir = g_build_filename(prefix, "lib64", NULL);
-#else
- dir = g_build_filename(prefix, "lib", NULL);
-#endif
-
- g_free(prefix);
- return dir;
-}
-
-
-/** Locate the application's libexec folder.
- *
- * The path is generated by the following pseudo-code evaluation:
- * \code
- * prefix + "/libexec"
- * \endcode
- *
- * @param default_libexec_dir A default path which will used as fallback.
- * @return A string containing the libexec folder's path, which must be freed when
- * no longer necessary. If BinReloc is not initialized, or if the initialization
- * function failed, then a copy of default_libexec_dir will be returned.
- * If default_libexec_dir is NULL, then NULL will be returned.
- */
-gchar *gbr_find_libexec_dir(const gchar * default_libexec_dir)
-{
- gchar *prefix, *dir;
-
- prefix = gbr_find_prefix(NULL);
- if (prefix == NULL) {
- /* BinReloc not initialized. */
- if (default_libexec_dir != NULL)
- return g_strdup(default_libexec_dir);
- else
- return NULL;
- }
-
- dir = g_build_filename(prefix, "libexec", NULL);
- g_free(prefix);
- return dir;
-}
-
-
-/** Locate the application's configuration files folder.
- *
- * The path is generated by the following pseudo-code evaluation:
- * \code
- * prefix + "/etc"
- * \endcode
- *
- * @param default_etc_dir A default path which will used as fallback.
- * @return A string containing the etc folder's path, which must be freed when
- * no longer necessary. If BinReloc is not initialized, or if the initialization
- * function failed, then a copy of default_etc_dir will be returned.
- * If default_etc_dir is NULL, then NULL will be returned.
- */
-gchar *gbr_find_etc_dir(const gchar * default_etc_dir)
-{
- gchar *prefix, *dir;
-
- prefix = gbr_find_prefix(NULL);
- if (prefix == NULL) {
- /* BinReloc not initialized. */
- if (default_etc_dir != NULL)
- return g_strdup(default_etc_dir);
- else
- return NULL;
- }
-
- dir = g_build_filename(prefix, "etc", NULL);
- g_free(prefix);
- return dir;
-}
-
-
-G_END_DECLS
-#endif /* __BINRELOC_C__ */
diff --git a/hardinfo2/util/expr.c b/hardinfo2/util/expr.c
deleted file mode 100644
index 32e303d7..00000000
--- a/hardinfo2/util/expr.c
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * 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
- */
-/*
- * This is only used to compute sensor values, hence the only variable supported is '@'.
- * The '`' operator (ln(x)) is not available, nor multi-line formulas.
- */
-
-#include <glib.h>
-#include <string.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <math.h>
-
-#include "expr.h"
-#include "config.h"
-
-static MathToken *new_operator(gchar op)
-{
- MathToken *t = g_new0(MathToken, 1);
-
- t->val.op = op;
- t->type = TOKEN_OPERATOR; /* operator */
-
- return t;
-}
-
-static MathToken *new_variable(gchar var)
-{
- MathToken *t = g_new0(MathToken, 1);
-
- t->val.op = '@';
- t->type = TOKEN_VARIABLE; /* variable */
-
- return t;
-}
-
-static MathToken *new_value(gfloat value)
-{
- MathToken *t = g_new0(MathToken, 1);
-
- t->val.value = value;
- t->type = TOKEN_VALUE; /* value */
-
- return t;
-}
-
-static inline gint priority(char operation)
-{
- switch (operation) {
- case '^':
- return 3;
- case '*':
- case '/':
- return 2;
- case '+':
- case '-':
- return 1;
- case '(':
- return 0;
- }
-
- return 0;
-}
-
-GSList *math_infix_to_postfix(GSList * infix)
-{
- MathToken *stack[500];
- gint t_sp = 0;
-
- GSList *postfix = NULL, *p;
- MathToken *top;
-
- for (p = infix; p; p = p->next) {
- MathToken *t = (MathToken *) p->data;
-
- if (t->type == TOKEN_OPERATOR && t->val.op == '(') {
- stack[++t_sp] = t;
- } else if (t->type == TOKEN_OPERATOR && t->val.op == ')') {
- for (top = stack[t_sp]; t_sp != 0 && top->val.op != '(';
- top = stack[t_sp]) {
- postfix = g_slist_append(postfix, stack[t_sp--]);
- }
- t_sp--;
- } else if (t->type != TOKEN_OPERATOR) {
- postfix = g_slist_append(postfix, t);
- } else if (t_sp == 0) {
- stack[++t_sp] = t;
- } else {
- while (t_sp != 0
- && priority(t->val.op) <= priority(stack[t_sp]->val.op))
- postfix = g_slist_append(postfix, stack[t_sp--]);
- stack[++t_sp] = t;
- }
- }
-
- while (t_sp)
- postfix = g_slist_append(postfix, stack[t_sp--]);
-
- return postfix;
-}
-
-static inline gfloat __result(gfloat op1, gfloat op2, gchar operation)
-{
- switch (operation) {
- case '^':
- return powf(op1, op2);
- case '+':
- return op1 + op2;
- case '-':
- return op1 - op2;
- case '/':
- return op1 / op2;
- case '*':
- return op1 * op2;
- }
-
- return 0;
-}
-
-gfloat math_postfix_eval(GSList * postfix, gfloat at_value)
-{
- GSList *p;
- gfloat stack[500];
- gint sp = 0;
-
- memset(stack, 0, sizeof(gfloat) * 500);
-
- for (p = postfix; p; p = p->next) {
- MathToken *t = (MathToken *) p->data;
-
- if (t->type == TOKEN_VARIABLE) {
- stack[++sp] = at_value;
- } else if (t->type == TOKEN_VALUE) {
- stack[++sp] = t->val.value;
- } else {
- gfloat op1, op2;
-
- op2 = stack[sp--];
- op1 = stack[sp];
-
- stack[sp] = __result(op1, op2, t->val.op);
- }
- }
-
- return stack[sp];
-}
-
-GSList *math_string_to_infix(gchar * string)
-{
- GSList *infix = NULL;
- gchar *expr = string;
-
- for (; *expr; expr++) {
- if (strchr("+-/*^()", *expr)) {
- infix = g_slist_append(infix, new_operator(*expr));
- } else if (strchr("@", *expr)) {
- infix = g_slist_append(infix, new_variable(*expr));
- } else if (strchr("-.1234567890", *expr)) {
- gchar value[32], *v = value;
- gfloat floatval;
-
- do {
- *v++ = *expr++;
- } while (*expr && strchr("-.1234567890", *expr));
- expr--;
- *v = '\0';
-
- sscanf(value, "%f", &floatval);
-
- infix = g_slist_append(infix, new_value(floatval));
- } else if (!isspace(*expr)) {
- g_print("Invalid token: [%c][%d]\n", *expr, *expr);
- math_infix_free(infix, TRUE);
- return NULL;
- }
- }
-
- return infix;
-}
-
-void math_infix_free(GSList * infix, gboolean free_tokens)
-{
- GSList *p;
-
- if (!free_tokens)
- for (p = infix; p; p = g_slist_delete_link(p, p));
- else
- for (p = infix; p; p = g_slist_delete_link(p, p)) {
- MathToken *t = (MathToken *) p->data;
- g_free(t);
- }
-}
-
-GSList *math_string_to_postfix(gchar * string)
-{
- GSList *infix;
- GSList *postfix;
-
- infix = math_string_to_infix(string);
- if (!infix)
- return NULL;
-
- postfix = math_infix_to_postfix(infix);
- math_infix_free(infix, FALSE);
-
- return postfix;
-}
-
-gfloat math_string_eval(gchar * string, gfloat at_value)
-{
- GSList *postfix;
- gfloat val;
-
- postfix = math_string_to_postfix(string);
- val = math_postfix_eval(postfix, at_value);
- math_postfix_free(postfix, TRUE);
-
- return val;
-}
-
-#ifdef MATH_TEST
-int main(void)
-{
- GSList *postfix;
-
- gchar *expr = "0.9*(@+(5.2*0.923+3*(2.0)))";
-
- postfix = math_string_to_postfix(expr);
- g_print("%s = %f (must be 18.71964)\n", expr,
- math_postfix_eval(postfix, 10));
- math_postfix_free(postfix, TRUE);
-
- return 0;
-}
-#endif
diff --git a/hardinfo2/util/socket.c b/hardinfo2/util/socket.c
deleted file mode 100644
index 339df30e..00000000
--- a/hardinfo2/util/socket.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * 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 <stdio.h>
-#include <string.h>
-#include <arpa/inet.h>
-#include <errno.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <glib.h>
-
-#include "socket.h"
-
-Socket *sock_connect(gchar * host, gint port)
-{
- struct sockaddr_in server;
- Socket *s;
- int sock;
-
- sock = socket(AF_INET, SOCK_STREAM, 0);
- if (sock > 0) {
- memset(&server, 0, sizeof(server));
- server.sin_family = AF_INET;
- server.sin_addr.s_addr = inet_addr(host);
- server.sin_port = htons(port);
-
- if (connect(sock, (struct sockaddr *) (void *) &server, sizeof(server)) < 0) {
- goto cleanup;
- }
-
- s = g_new0(Socket, 1);
- s->sock = sock;
-
- return s;
- }
-
-cleanup:
- close(sock);
-
- return NULL;
-}
-
-/* From: http://www.erlenstar.demon.co.uk/unix/faq_3.html#SEC26 */
-static inline int __sock_is_ready(Socket * s, int mode)
-{
- int rc, fd = s->sock;
- fd_set fds;
- struct timeval tv;
-
- FD_ZERO(&fds);
- FD_SET(fd, &fds);
- tv.tv_sec = tv.tv_usec = 0;
-
- if (mode == 0) {
- /* read */
- rc = select(fd + 1, &fds, NULL, NULL, &tv);
- } else {
- /* write */
- rc = select(fd + 1, NULL, &fds, NULL, &tv);
- }
-
- if (rc < 0)
- return -1;
-
- return FD_ISSET(fd, &fds) ? 1 : 0;
-}
-
-int sock_ready_to_read(Socket * s)
-{
- return __sock_is_ready(s, 0);
-}
-
-int sock_ready_to_write(Socket * s)
-{
- return __sock_is_ready(s, 1);
-}
-
-int sock_read(Socket * s, gchar * buffer, gint size)
-{
- if (sock_ready_to_read(s)) {
- gint n;
-
- n = read(s->sock, buffer, size);
- if (n > 0) {
- buffer[n] = '\0';
- } else {
- return 0;
- }
-
- return n;
- }
-
- return 0;
-}
-
-int sock_write(Socket * s, gchar * str)
-{
- while (!sock_ready_to_write(s));
-
- return write(s->sock, str, strlen(str));
-}
-
-void sock_close(Socket * s)
-{
- shutdown(s->sock, 2);
- close(s->sock);
- g_free(s);
-}
diff --git a/hardinfo2/util/util.c b/hardinfo2/util/util.c
deleted file mode 100644
index fb995406..00000000
--- a/hardinfo2/util/util.c
+++ /dev/null
@@ -1,1292 +0,0 @@
-/*
- * 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
- */
-
-/*
- * Functions h_strdup_cprintf and h_strconcat are based on GLib version 2.4.6
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- */
-
-#include <config.h>
-
-#include <report.h>
-#include <string.h>
-#include <shell.h>
-#include <iconcache.h>
-#include <hardinfo.h>
-#include <gtk/gtk.h>
-
-#include <binreloc.h>
-
-#include <sys/stat.h>
-#include <sys/types.h>
-
-#define KiB 1024
-#define MiB 1048576
-#define GiB 1073741824
-
-static GSList *modules_list = NULL;
-
-void sync_manager_clear_entries(void);
-
-gchar *find_program(gchar *program_name)
-{
- int i;
- char *temp;
- static GHashTable *cache = NULL;
- const char *path[] = { "/bin", "/sbin",
- "/usr/bin", "/usr/sbin",
- "/usr/local/bin", "/usr/local/sbin",
- NULL };
-
- /* we don't need to call stat() every time: cache the results */
- if (!cache) {
- cache = g_hash_table_new(g_str_hash, g_str_equal);
- } else if ((temp = g_hash_table_lookup(cache, program_name))) {
- return g_strdup(temp);
- }
-
- for (i = 0; path[i]; i++) {
- temp = g_build_filename(path[i], program_name, NULL);
-
- if (g_file_test(temp, G_FILE_TEST_IS_EXECUTABLE)) {
- g_hash_table_insert(cache, program_name, g_strdup(temp));
- return temp;
- }
-
- g_free(temp);
- }
-
- /* our search has failed; use GLib's search (which uses $PATH env var) */
- if ((temp = g_find_program_in_path(program_name))) {
- g_hash_table_insert(cache, program_name, g_strdup(temp));
- return temp;
- }
-
- return NULL;
-}
-
-gchar *seconds_to_string(unsigned int seconds)
-{
- unsigned int hours, minutes, days;
-
- minutes = seconds / 60;
- hours = minutes / 60;
- minutes %= 60;
- days = hours / 24;
- hours %= 24;
-
-#define plural(x) ((x > 1) ? "s" : "")
-
- if (days < 1) {
- if (hours < 1) {
- return g_strdup_printf("%d minute%s", minutes,
- plural(minutes));
- } else {
- return g_strdup_printf("%d hour%s, %d minute%s",
- hours,
- plural(hours), minutes,
- plural(minutes));
- }
- }
-
- return g_strdup_printf("%d day%s, %d hour%s and %d minute%s",
- days, plural(days), hours,
- plural(hours), minutes, plural(minutes));
-}
-
-inline gchar *size_human_readable(gfloat size)
-{
- if (size < KiB)
- return g_strdup_printf("%.1f B", size);
- if (size < MiB)
- return g_strdup_printf("%.1f KiB", size / KiB);
- if (size < GiB)
- return g_strdup_printf("%.1f MiB", size / MiB);
-
- return g_strdup_printf("%.1f GiB", size / GiB);
-}
-
-inline char *strend(gchar * str, gchar chr)
-{
- if (!str)
- return NULL;
-
- char *p;
- if ((p = strchr(str, chr)))
- *p = 0;
-
- return str;
-}
-
-inline void remove_quotes(gchar * str)
-{
- if (!str)
- return;
-
- while (*str == '"')
- *(str++) = ' ';
-
- strend(str, '"');
-}
-
-inline void remove_linefeed(gchar * str)
-{
- strend(str, '\n');
-}
-
-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));
- gdk_cursor_unref(cursor);
- }
-
- while (gtk_events_pending())
- gtk_main_iteration();
-}
-
-static gboolean __nonblock_cb(gpointer data)
-{
- gtk_main_quit();
- return FALSE;
-}
-
-void nonblock_sleep(guint msec)
-{
- g_timeout_add(msec, (GSourceFunc) __nonblock_cb, NULL);
- gtk_main();
-}
-
-static void __expand_cb(GtkWidget * widget, gpointer data)
-{
- if (GTK_IS_EXPANDER(widget)) {
- gtk_expander_set_expanded(GTK_EXPANDER(widget), TRUE);
- } else if (GTK_IS_CONTAINER(widget)) {
- gtk_container_foreach(GTK_CONTAINER(widget),
- (GtkCallback) __expand_cb, NULL);
- }
-}
-
-void file_chooser_open_expander(GtkWidget * chooser)
-{
- gtk_container_foreach(GTK_CONTAINER(chooser),
- (GtkCallback) __expand_cb, NULL);
-}
-
-void file_chooser_add_filters(GtkWidget * chooser, FileTypes * filters)
-{
- GtkFileFilter *filter;
- gint i;
-
- for (i = 0; filters[i].name; i++) {
- filter = gtk_file_filter_new();
- gtk_file_filter_add_mime_type(filter, filters[i].mime_type);
- gtk_file_filter_set_name(filter, filters[i].name);
- gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), filter);
- }
-}
-
-gchar *file_chooser_get_extension(GtkWidget * chooser, FileTypes * filters)
-{
- GtkFileFilter *filter;
- const gchar *filter_name;
- gint i;
-
- filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(chooser));
- filter_name = gtk_file_filter_get_name(filter);
- for (i = 0; filters[i].name; i++) {
- if (g_str_equal(filter_name, filters[i].name)) {
- return filters[i].extension;
- }
- }
-
- return NULL;
-}
-
-gpointer file_types_get_data_by_name(FileTypes * filters, gchar * filename)
-{
- gint i;
-
- for (i = 0; filters[i].name; i++) {
- if (g_str_has_suffix(filename, filters[i].extension)) {
- return filters[i].data;
- }
- }
-
- return NULL;
-}
-
-gchar *file_chooser_build_filename(GtkWidget * chooser, gchar * extension)
-{
- gchar *filename =
- gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser));
- gchar *retval;
-
- if (g_str_has_suffix(filename, extension)) {
- return filename;
- }
-
- retval = g_strconcat(filename, extension, NULL);
- g_free(filename);
-
- return retval;
-}
-
-gboolean binreloc_init(gboolean try_hardcoded)
-{
- GError *error = NULL;
- gchar *tmp;
-
- DEBUG("initializing binreloc (hardcoded = %d)", try_hardcoded);
-
- /* If the runtime data directories we previously found, don't even try
- to find them again. */
- if (params.path_data && params.path_lib) {
- DEBUG("data and lib path already found.");
- return TRUE;
- }
-
- if (try_hardcoded || !gbr_init(&error)) {
- /* We were asked to try hardcoded paths or BinReloc failed to initialize. */
- params.path_data = g_strdup(PREFIX);
- params.path_lib = g_strdup(LIBPREFIX);
-
- if (error) {
- g_error_free(error);
- }
-
- DEBUG("%strying hardcoded paths.",
- try_hardcoded ? "" : "binreloc init failed. ");
- } else {
- /* If we were able to initialize BinReloc, build the default data
- and library paths. */
- DEBUG("done, trying to use binreloc paths.");
-
- tmp = gbr_find_data_dir(PREFIX);
- params.path_data = g_build_filename(tmp, "hardinfo", NULL);
- g_free(tmp);
-
- tmp = gbr_find_lib_dir(PREFIX);
- params.path_lib = g_build_filename(tmp, "hardinfo", NULL);
- g_free(tmp);
- }
-
- DEBUG("searching for runtime data on these locations:");
- DEBUG(" lib: %s", params.path_lib);
- DEBUG(" data: %s", params.path_data);
-
- /* Try to see if the uidefs.xml file isn't missing. This isn't the
- definitive test, but it should do okay for most situations. */
- tmp = g_build_filename(params.path_data, "benchmark.data", NULL);
- if (!g_file_test(tmp, G_FILE_TEST_EXISTS)) {
- DEBUG("runtime data not found");
-
- g_free(params.path_data);
- g_free(params.path_lib);
- g_free(tmp);
-
- params.path_data = params.path_lib = NULL;
-
- if (try_hardcoded) {
- /* We tried the hardcoded paths, but still was unable to find the
- runtime data. Give up. */
- DEBUG("giving up");
- return FALSE;
- } else {
- /* Even though BinReloc worked OK, the runtime data was not found.
- Try the hardcoded paths. */
- DEBUG("trying to find elsewhere");
- return binreloc_init(TRUE);
- }
- }
- g_free(tmp);
-
- DEBUG("runtime data found!");
- /* We found the runtime data; hope everything is fine */
- return TRUE;
-}
-
-static void
-log_handler(const gchar * log_domain,
- GLogLevelFlags log_level,
- const gchar * message, gpointer user_data)
-{
- if (!params.gui_running) {
- /* No GUI running: spit the message to the terminal */
- g_print("\n\n*** %s: %s\n\n",
- (log_level & G_LOG_FLAG_FATAL) ? "Error" : "Warning",
- message);
- } else {
- /* Hooray! We have a GUI running! */
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new_with_markup(NULL, GTK_DIALOG_MODAL,
- (log_level &
- G_LOG_FLAG_FATAL) ?
- GTK_MESSAGE_ERROR :
- GTK_MESSAGE_WARNING,
- GTK_BUTTONS_CLOSE,
- "<big><b>%s</b></big>\n\n%s",
- (log_level &
- G_LOG_FLAG_FATAL) ?
- "Fatal Error" :
- "Warning", message);
-
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- }
-}
-
-void parameters_init(int *argc, char ***argv, ProgramParameters * param)
-{
- static gboolean create_report = FALSE;
- static gboolean show_version = FALSE;
- static gboolean list_modules = FALSE;
- static gboolean autoload_deps = FALSE;
- static gboolean run_xmlrpc_server = FALSE;
- static gchar *report_format = NULL;
- static gchar *run_benchmark = NULL;
- static gchar **use_modules = NULL;
-
- static GOptionEntry options[] = {
- {
- .long_name = "generate-report",
- .short_name = 'r',
- .arg = G_OPTION_ARG_NONE,
- .arg_data = &create_report,
- .description = "creates a report and prints to standard output"},
- {
- .long_name = "report-format",
- .short_name = 'f',
- .arg = G_OPTION_ARG_STRING,
- .arg_data = &report_format,
- .description = "chooses a report format (text, html)"},
- {
- .long_name = "run-benchmark",
- .short_name = 'b',
- .arg = G_OPTION_ARG_STRING,
- .arg_data = &run_benchmark,
- .description = "run benchmark; requires benchmark.so to be loaded"},
- {
- .long_name = "list-modules",
- .short_name = 'l',
- .arg = G_OPTION_ARG_NONE,
- .arg_data = &list_modules,
- .description = "lists modules"},
- {
- .long_name = "load-module",
- .short_name = 'm',
- .arg = G_OPTION_ARG_STRING_ARRAY,
- .arg_data = &use_modules,
- .description = "specify module to load"},
- {
- .long_name = "autoload-deps",
- .short_name = 'a',
- .arg = G_OPTION_ARG_NONE,
- .arg_data = &autoload_deps,
- .description = "automatically load module dependencies"},
-#ifdef HAS_LIBSOUP
- {
- .long_name = "xmlrpc-server",
- .short_name = 'x',
- .arg = G_OPTION_ARG_NONE,
- .arg_data = &run_xmlrpc_server,
- .description = "run in XML-RPC server mode"},
-#endif /* HAS_LIBSOUP */
- {
- .long_name = "version",
- .short_name = 'v',
- .arg = G_OPTION_ARG_NONE,
- .arg_data = &show_version,
- .description = "shows program version and quit"},
- {NULL}
- };
- GOptionContext *ctx;
-
- ctx = g_option_context_new("- System Profiler and Benchmark tool");
- g_option_context_set_ignore_unknown_options(ctx, FALSE);
- g_option_context_set_help_enabled(ctx, TRUE);
-
- g_option_context_add_main_entries(ctx, options, *(argv)[0]);
- g_option_context_parse(ctx, argc, argv, NULL);
-
- g_option_context_free(ctx);
-
- if (*argc >= 2) {
- g_print("Unrecognized arguments.\n"
- "Try ``%s --help'' for more information.\n", *(argv)[0]);
- exit(1);
- }
-
- param->create_report = create_report;
- param->report_format = REPORT_FORMAT_TEXT;
- param->show_version = show_version;
- param->list_modules = list_modules;
- param->use_modules = use_modules;
- param->run_benchmark = run_benchmark;
- param->autoload_deps = autoload_deps;
- param->run_xmlrpc_server = run_xmlrpc_server;
- param->argv0 = *(argv)[0];
-
- if (report_format && g_str_equal(report_format, "html"))
- param->report_format = REPORT_FORMAT_HTML;
-
- gchar *confdir = g_build_filename(g_get_home_dir(), ".hardinfo", NULL);
- if (!g_file_test(confdir, G_FILE_TEST_EXISTS)) {
- mkdir(confdir, 0744);
- }
- g_free(confdir);
-}
-
-gboolean ui_init(int *argc, char ***argv)
-{
- DEBUG("initializing gtk+ UI");
-
- g_set_application_name("HardInfo");
- g_log_set_handler(NULL,
- G_LOG_LEVEL_WARNING | G_LOG_FLAG_FATAL |
- G_LOG_LEVEL_ERROR, log_handler, NULL);
-
- return gtk_init_check(argc, argv);
-}
-
-void open_url(gchar * url)
-{
- const gchar *browsers[] = {
- "xdg-open", "gnome-open", "kfmclient openURL",
- "sensible-browser", "firefox", "epiphany",
- "iceweasel", "seamonkey", "galeon", "mozilla",
- "opera", "konqueror", "netscape", "links -g",
- NULL
- };
- gint i = 0;
- gchar *browser = (gchar *)g_getenv("BROWSER");
-
- if (!browser || *browser == '\0') {
- browser = (gchar *)browsers[i++];
- }
-
- do {
- gchar *cmdline = g_strdup_printf("%s '%s'", browser, url);
-
- if (g_spawn_command_line_async(cmdline, NULL)) {
- g_free(cmdline);
- return;
- }
-
- g_free(cmdline);
-
- browser = (gchar *)browsers[i++];
- } while (browser);
-
- g_warning("Couldn't find a Web browser to open URL %s.", url);
-}
-
-/* Copyright: Jens Låås, SLU 2002 */
-gchar *strreplacechr(gchar * string, gchar * replace, gchar new_char)
-{
- gchar *s;
- for (s = string; *s; s++)
- if (strchr(replace, *s))
- *s = new_char;
-
- return string;
-}
-
-gchar *strreplace(gchar *string, gchar *replace, gchar *replacement)
-{
- gchar **tmp, *ret;
-
- tmp = g_strsplit(string, replace, 0);
- ret = g_strjoinv(replacement, tmp);
- g_strfreev(tmp);
-
- return ret;
-}
-
-static GHashTable *__module_methods = NULL;
-
-static void module_register_methods(ShellModule * module)
-{
- ShellModuleMethod *(*get_methods) (void);
- gchar *method_name;
-
- if (__module_methods == NULL) {
- __module_methods = g_hash_table_new(g_str_hash, g_str_equal);
- }
-
- if (g_module_symbol
- (module->dll, "hi_exported_methods", (gpointer) & get_methods)) {
- ShellModuleMethod *methods;
-
- for (methods = get_methods(); methods->name; methods++) {
- ShellModuleMethod method = *methods;
- gchar *name = g_path_get_basename(g_module_name(module->dll));
- gchar *simple_name = strreplace(name, "lib", "");
-
- strend(simple_name, '.');
-
- method_name = g_strdup_printf("%s::%s", simple_name, method.name);
- g_hash_table_insert(__module_methods, method_name,
- method.function);
- g_free(name);
- g_free(simple_name);
- }
- }
-
-}
-
-gchar *module_call_method(gchar * method)
-{
- gchar *(*function) (void);
-
- if (__module_methods == NULL) {
- return NULL;
- }
-
- function = g_hash_table_lookup(__module_methods, method);
- return function ? g_strdup(function()) : NULL;
-}
-
-/* FIXME: varargs? */
-gchar *module_call_method_param(gchar * method, gchar * parameter)
-{
- gchar *(*function) (gchar *param);
-
- if (__module_methods == NULL) {
- return NULL;
- }
-
- function = g_hash_table_lookup(__module_methods, method);
- return function ? g_strdup(function(parameter)) : NULL;
-}
-
-static gboolean remove_module_methods(gpointer key, gpointer value, gpointer data)
-{
- return g_str_has_prefix(key, data);
-}
-
-static void module_unload(ShellModule * module)
-{
- GSList *entry;
-
- if (module->dll) {
- gchar *name;
-
- if (module->deinit) {
- DEBUG("cleaning up module \"%s\"", module->name);
- module->deinit();
- } else {
- DEBUG("module \"%s\" does not need cleanup", module->name);
- }
-
- name = g_path_get_basename(g_module_name(module->dll));
- g_hash_table_foreach_remove(__module_methods, remove_module_methods, name);
-
- g_module_close(module->dll);
- g_free(name);
- }
-
- g_free(module->name);
- gdk_pixbuf_unref(module->icon);
-
- for (entry = module->entries; entry; entry = entry->next) {
- ShellModuleEntry *e = (ShellModuleEntry *)entry->data;
-
- g_source_remove_by_user_data(e);
- g_free(e);
- }
-
- g_slist_free(module->entries);
- g_free(module);
-}
-
-
-void module_unload_all(void)
-{
- Shell *shell;
- GSList *module, *merge_id;
-
- shell = shell_get_main_shell();
-
- sync_manager_clear_entries();
- shell_clear_timeouts(shell);
- shell_clear_tree_models(shell);
- shell_clear_field_updates();
- shell_set_title(shell, NULL);
-
- for (module = shell->tree->modules; module; module = module->next) {
- module_unload((ShellModule *)module->data);
- }
-
- for (merge_id = shell->merge_ids; merge_id; merge_id = merge_id->next) {
- gtk_ui_manager_remove_ui(shell->ui_manager,
- GPOINTER_TO_INT(merge_id->data));
- }
- g_slist_free(shell->tree->modules);
- g_slist_free(shell->merge_ids);
-
- shell->merge_ids = NULL;
- shell->tree->modules = NULL;
- shell->selected = NULL;
-}
-
-static ShellModule *module_load(gchar * filename)
-{
- ShellModule *module;
- gchar *tmp;
-
- module = g_new0(ShellModule, 1);
-
- if (params.gui_running) {
- gchar *tmpicon, *dot, *simple_name;
-
- tmpicon = g_strdup(filename);
- dot = g_strrstr(tmpicon, "." G_MODULE_SUFFIX);
-
- *dot = '\0';
-
- simple_name = strreplace(tmpicon, "lib", "");
-
- tmp = g_strdup_printf("%s.png", simple_name);
- module->icon = icon_cache_get_pixbuf(tmp);
-
- g_free(tmp);
- g_free(tmpicon);
- g_free(simple_name);
- }
-
- tmp = g_build_filename(params.path_lib, "modules", filename, NULL);
- module->dll = g_module_open(tmp, G_MODULE_BIND_LAZY);
- DEBUG("gmodule resource for ``%s'' is %p", tmp, module->dll);
- g_free(tmp);
-
- if (module->dll) {
- void (*init) (void);
- ModuleEntry *(*get_module_entries) (void);
- gint(*weight_func) (void);
- gchar *(*name_func) (void);
- ModuleEntry *entries;
- gint i = 0;
-
- if (!g_module_symbol(module->dll, "hi_module_get_entries", (gpointer) & get_module_entries) ||
- !g_module_symbol(module->dll, "hi_module_get_name", (gpointer) & name_func)) {
- DEBUG("cannot find needed symbols; is ``%s'' a real module?", filename);
- goto failed;
- }
-
- if (g_module_symbol(module->dll, "hi_module_init", (gpointer) & init)) {
- DEBUG("initializing module ``%s''", filename);
- init();
- }
-
- g_module_symbol(module->dll, "hi_module_get_weight",
- (gpointer) & weight_func);
-
- module->weight = weight_func ? weight_func() : 0;
- module->name = name_func();
-
- g_module_symbol(module->dll, "hi_module_get_about",
- (gpointer) & (module->aboutfunc));
- g_module_symbol(module->dll, "hi_module_deinit",
- (gpointer) & (module->deinit));
- g_module_symbol(module->dll, "hi_module_get_summary",
- (gpointer) & (module->summaryfunc));
-
- entries = get_module_entries();
- while (entries[i].name) {
- ShellModuleEntry *entry = g_new0(ShellModuleEntry, 1);
-
- if (params.gui_running) {
- entry->icon = icon_cache_get_pixbuf(entries[i].icon);
- }
- entry->icon_file = entries[i].icon;
-
- g_module_symbol(module->dll, "hi_more_info",
- (gpointer) & (entry->morefunc));
- g_module_symbol(module->dll, "hi_get_field",
- (gpointer) & (entry->fieldfunc));
- g_module_symbol(module->dll, "hi_note_func",
- (gpointer) & (entry->notefunc));
-
- entry->name = entries[i].name;
- entry->scan_func = entries[i].scan_callback;
- entry->func = entries[i].callback;
- entry->number = i;
- entry->flags = entries[i].flags;
-
- module->entries = g_slist_append(module->entries, entry);
-
- i++;
- }
-
- DEBUG("registering methods for module ``%s''", filename);
- module_register_methods(module);
- } else {
- DEBUG("cannot g_module_open(``%s''). permission problem?", filename);
- failed:
- DEBUG("loading module %s failed: %s", filename, g_module_error());
-
- g_free(module->name);
- g_free(module);
- module = NULL;
- }
-
- return module;
-}
-
-static gboolean module_in_module_list(gchar * module, gchar ** module_list)
-{
- int i = 0;
-
- if (!module_list)
- return TRUE;
-
- for (; module_list[i]; i++) {
- if (g_str_equal(module_list[i], module))
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gint module_cmp(gconstpointer m1, gconstpointer m2)
-{
- ShellModule *a = (ShellModule *) m1;
- ShellModule *b = (ShellModule *) m2;
-
- return a->weight - b->weight;
-}
-
-#if 0
-static void module_entry_free(gpointer data, gpointer user_data)
-{
- ShellModuleEntry *entry = (ShellModuleEntry *) data;
-
- if (entry) {
- g_free(entry->name);
- g_object_unref(entry->icon);
-
- g_free(entry);
- }
-}
-#endif
-
-ModuleAbout *module_get_about(ShellModule * module)
-{
- if (module->aboutfunc) {
- return module->aboutfunc();
- }
-
- return NULL;
-}
-
-static GSList *modules_check_deps(GSList * modules)
-{
- GSList *mm;
- ShellModule *module;
-
- for (mm = modules; mm; mm = mm->next) {
- gchar **(*get_deps) (void);
- gchar **deps;
- gint i;
-
- module = (ShellModule *) mm->data;
-
- if (g_module_symbol(module->dll, "hi_module_get_dependencies",
- (gpointer) & get_deps)) {
- for (i = 0, deps = get_deps(); deps[i]; i++) {
- GSList *l;
- ShellModule *m;
- gboolean found = FALSE;
-
- for (l = modules; l && !found; l = l->next) {
- m = (ShellModule *) l->data;
- gchar *name = g_path_get_basename(g_module_name(m->dll));
-
- found = g_str_equal(name, deps[i]);
- g_free(name);
- }
-
- if (!found) {
- if (params.autoload_deps) {
- ShellModule *mod = module_load(deps[i]);
-
- if (mod)
- modules = g_slist_append(modules, mod);
- modules = modules_check_deps(modules); /* re-check dependencies */
-
- break;
- }
-
- if (params.gui_running) {
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new(NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_NONE,
- "Module \"%s\" depends on module \"%s\", load it?",
- module->name,
- deps[i]);
- gtk_dialog_add_buttons(GTK_DIALOG(dialog),
- GTK_STOCK_NO,
- GTK_RESPONSE_REJECT,
- GTK_STOCK_OPEN,
- GTK_RESPONSE_ACCEPT, NULL);
-
- if (gtk_dialog_run(GTK_DIALOG(dialog)) ==
- GTK_RESPONSE_ACCEPT) {
- ShellModule *mod = module_load(deps[i]);
-
- if (mod)
- modules = g_slist_prepend(modules, mod);
- modules = modules_check_deps(modules); /* re-check dependencies */
- } else {
- g_error("HardInfo cannot run without loading the additional module.");
- exit(1);
- }
-
- gtk_widget_destroy(dialog);
- } else {
- g_error("Module \"%s\" depends on module \"%s\".",
- module->name, deps[i]);
- }
- }
- }
- }
- }
-
- return modules;
-}
-
-
-GSList *modules_get_list()
-{
- return modules_list;
-}
-
-static GSList *modules_load(gchar ** module_list)
-{
- GDir *dir;
- GSList *modules = NULL;
- ShellModule *module;
- gchar *filename;
-
- filename = g_build_filename(params.path_lib, "modules", NULL);
- dir = g_dir_open(filename, 0, NULL);
- g_free(filename);
-
- if (dir) {
- while ((filename = (gchar *) g_dir_read_name(dir))) {
- if (g_strrstr(filename, "." G_MODULE_SUFFIX) &&
- module_in_module_list(filename, module_list) &&
- ((module = module_load(filename)))) {
- modules = g_slist_prepend(modules, module);
- }
- }
-
- g_dir_close(dir);
- }
-
- modules = modules_check_deps(modules);
-
- if (g_slist_length(modules) == 0) {
- if (params.use_modules == NULL) {
- g_error
- ("No module could be loaded. Check permissions on \"%s\" and try again.",
- params.path_lib);
- } else {
- g_error
- ("No module could be loaded. Please use hardinfo -l to list all avai"
- "lable modules and try again with a valid module list.");
-
- }
- }
-
- modules_list = g_slist_sort(modules, module_cmp);
- return modules_list;
-}
-
-GSList *modules_load_selected(void)
-{
- return modules_load(params.use_modules);
-}
-
-GSList *modules_load_all(void)
-{
- return modules_load(NULL);
-}
-
-gint tree_view_get_visible_height(GtkTreeView * tv)
-{
- GtkTreePath *path;
- GdkRectangle rect;
- GtkTreeIter iter;
- GtkTreeModel *model = gtk_tree_view_get_model(tv);
- gint nrows = 1;
-
- path = gtk_tree_path_new_first();
- gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &rect);
-
- /* FIXME: isn't there any easier way to tell the number of rows? */
- gtk_tree_model_get_iter_first(model, &iter);
- do {
- nrows++;
- } while (gtk_tree_model_iter_next(model, &iter));
-
- gtk_tree_path_free(path);
-
- 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)
-{
- if (ptr) {
- g_free(ptr);
- }
-
- return FALSE;
-}
-
-#if RELEASE == 1
-gpointer idle_free(gpointer ptr)
-#else
-gpointer __idle_free(gpointer ptr, gchar * f, gint l)
-#endif
-{
- DEBUG("file: %s, line: %d, ptr %p", f, l, ptr);
-
- if (ptr) {
- g_timeout_add(10000, __idle_free_do, ptr);
- }
-
- return ptr;
-}
-
-void module_entry_scan_all_except(ModuleEntry * entries, gint except_entry)
-{
- ModuleEntry entry;
- gint i = 0;
- void (*scan_callback) (gboolean reload);
- gchar *text;
-
- shell_view_set_enabled(FALSE);
-
- for (entry = entries[0]; entry.name; entry = entries[++i]) {
- if (i == except_entry)
- continue;
-
- text = g_strdup_printf("Scanning: %s...", entry.name);
- shell_status_update(text);
- g_free(text);
-
- if ((scan_callback = entry.scan_callback)) {
- scan_callback(FALSE);
- }
- }
-
- shell_view_set_enabled(TRUE);
- shell_status_update("Done.");
-}
-
-void module_entry_scan_all(ModuleEntry * entries)
-{
- module_entry_scan_all_except(entries, -1);
-}
-
-void module_entry_reload(ShellModuleEntry * module_entry)
-{
-
- if (module_entry->scan_func) {
- module_entry->scan_func(TRUE);
- }
-}
-
-void module_entry_scan(ShellModuleEntry * module_entry)
-{
- if (module_entry->scan_func) {
- module_entry->scan_func(FALSE);
- }
-}
-
-gchar *module_entry_get_field(ShellModuleEntry * module_entry, gchar * field)
-{
- if (module_entry->fieldfunc) {
- return module_entry->fieldfunc(field);
- }
-
- return NULL;
-}
-
-gchar *module_entry_function(ShellModuleEntry * module_entry)
-{
- if (module_entry->func) {
- return module_entry->func();
- }
-
- return NULL;
-}
-
-gchar *module_entry_get_moreinfo(ShellModuleEntry * module_entry, gchar * field)
-{
- if (module_entry->morefunc) {
- return module_entry->morefunc(field);
- }
-
- return NULL;
-}
-
-const gchar *module_entry_get_note(ShellModuleEntry * module_entry)
-{
- if (module_entry->notefunc) {
- return module_entry->notefunc(module_entry->number);
- }
-
- return NULL;
-}
-
-gchar *h_strdup_cprintf(const gchar * format, gchar * source, ...)
-{
- gchar *buffer, *retn;
- va_list args;
-
- va_start(args, source);
- buffer = g_strdup_vprintf(format, args);
- va_end(args);
-
- if (source) {
- retn = g_strconcat(source, buffer, NULL);
- g_free(buffer);
- g_free(source);
- } else {
- retn = buffer;
- }
-
- return retn;
-}
-
-gchar *h_strconcat(gchar * string1, ...)
-{
- gsize l;
- va_list args;
- gchar *s;
- gchar *concat;
- gchar *ptr;
-
- if (!string1)
- return NULL;
-
- l = 1 + strlen(string1);
- va_start(args, string1);
- s = va_arg(args, gchar *);
- while (s) {
- l += strlen(s);
- s = va_arg(args, gchar *);
- }
- va_end(args);
-
- concat = g_new(gchar, l);
- ptr = concat;
-
- ptr = g_stpcpy(ptr, string1);
- va_start(args, string1);
- s = va_arg(args, gchar *);
- while (s) {
- ptr = g_stpcpy(ptr, s);
- s = va_arg(args, gchar *);
- }
- va_end(args);
-
- g_free(string1);
-
- return concat;
-}
-
-static gboolean h_hash_table_remove_all_true(gpointer key, gpointer data, gpointer user_data)
-{
- return TRUE;
-}
-
-void
-h_hash_table_remove_all(GHashTable *hash_table)
-{
- g_hash_table_foreach_remove(hash_table,
- h_hash_table_remove_all_true,
- NULL);
-}
-
-gfloat
-h_sysfs_read_float(gchar *endpoint, gchar *entry)
-{
- gchar *tmp, *buffer;
- gfloat return_value = 0.0f;
-
- tmp = g_build_filename(endpoint, entry, NULL);
- if (g_file_get_contents(tmp, &buffer, NULL, NULL))
- return_value = atof(buffer);
-
- g_free(tmp);
- g_free(buffer);
-
- return return_value;
-}
-
-gint
-h_sysfs_read_int(gchar *endpoint, gchar *entry)
-{
- gchar *tmp, *buffer;
- gint return_value = 0;
-
- tmp = g_build_filename(endpoint, entry, NULL);
- if (g_file_get_contents(tmp, &buffer, NULL, NULL))
- return_value = atoi(buffer);
-
- g_free(tmp);
- g_free(buffer);
-
- return return_value;
-}
-
-gchar *
-h_sysfs_read_string(gchar *endpoint, gchar *entry)
-{
- gchar *tmp, *return_value;
-
- tmp = g_build_filename(endpoint, entry, NULL);
- if (!g_file_get_contents(tmp, &return_value, NULL, NULL)) {
- g_free(return_value);
-
- return_value = NULL;
- } else {
- return_value = g_strstrip(return_value);
- }
-
- g_free(tmp);
-
- return return_value;
-}
-
diff --git a/hardinfo2/util/vendor.c b/hardinfo2/util/vendor.c
deleted file mode 100644
index 86dba97a..00000000
--- a/hardinfo2/util/vendor.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * List of vendors based on GtkSysInfo (c) Pissens Sebastien.
- *
- * 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 <gtk/gtk.h>
-
-#include "vendor.h"
-#include "syncmanager.h"
-#include "config.h"
-#include "hardinfo.h"
-
-static const Vendor vendors[] = {
- {"ATI", "ATI Technologies", "www.ati.com"},
- {"nVidia", "NVIDIA", "www.nvidia.com"},
- {"3Com", "3Com", "www.3com.com"},
- {"Intel", "Intel", "www.intel.com"},
- {"Cirrus Logic", "Cirrus Logic", "www.cirrus.com"},
- {"VIA Technologies", "VIA Technologies", "www.via.com.tw"},
- {"VIA", "VIA Technologies", "www.via.com.tw"},
- {"hp", "Hewlett-Packard", "www.hp.com"},
- {"NEC Corporation", "NEC Coporation", "www.nec.com"},
- {"MAXTOR", "MAXTOR", "www.maxtor.com"},
- {"SAMSUNG", "SAMSUNG", "www.samsung.com"},
- {"PIONEER", "PIONEER", "www.pioneer-eur.com"},
- {"PLEXTOR", "PLEXTOR", "www.plextor.be"},
- {"Realtek Semiconductor", "Realtek", "www.realtek.com.tw"},
- {"TOSHIBA", "TOSHIBA", "www.toshiba.com"},
- {"LITE-ON", "LITE-ON", "www.liteonit.com"},
- {"WDC", "Western Digital", "www.wdc.com"},
- {"HL-DT-ST", "LG Electronics", "www.lge.com"},
- {"ST", "SEAGATE", "www.seagate.com"},
- {"Lexmark", "Lexmark", "www.lexmark.com"},
- {"_NEC", "NEC Corporation", "www.nec.com"},
- {"Creative Labs", "Creative Labs", "www.creative.com"},
- {"Brooktree", "Conexant", "www.brooktree.com"},
- {"Atheros", "Atheros Communications", "www.atheros.com"},
- {"MATSHITA", "Panasonic", "www.panasonic.com"},
- {"Silicon Image", "Silicon Image", "www.siliconimage.com"},
- {"Silicon Integrated Image", "Silicon Image", "www.siliconimage.com"},
- {"KYE", "KYE Systems", "www.genius-kye.com"},
- {"Broadcom", "Broadcom", "www.broadcom.com"},
- {"Apple", "Apple", "www.apple.com"},
- {"IBM", "IBM", "www.ibm.com"},
- {"Dell", "Dell Computer", "www.dell.com"},
- {"Logitech", "Logitech International", "www.logitech.com"},
- {"FUJITSU", "Fujitsu", "www.fujitsu.com"},
- {"CDU", "Sony", "www.sony.com"},
- {"SanDisk", "SanDisk", "www.sandisk.com"},
- {"ExcelStor", "ExcelStor Technology", "www.excelstor.com"},
- {"D-Link", "D-Link", "www.dlink.com.tw"},
- {"Giga-byte", "Gigabyte Technology", "www.gigabyte.com.tw"},
- {"Gigabyte", "Gigabyte Technology", "www.gigabyte.com.tw"},
- {"C-Media", "C-Media Electronics", "www.cmedia.com.tw"},
- {"Avermedia", "AVerMedia Technologies", "www.aver.com"},
- {"Philips", "Philips", "www.philips.com"},
- {"RaLink", "Ralink Technology", "www.ralinktech.com"},
- {"Siemens", "Siemens AG", "www.siemens.com"},
- {"HP", "Hewlett-Packard", "www.hp.com"},
- {"Hewlett-Packard", "Hewlett-Packard", "www.hp.com"},
- {"TEAC", "TEAC America", "www.teac.com"},
- {"Microsoft", "Microsoft", "www.microsoft.com"},
- {"Memorex", "Memorex Products", "www.memorex.com"},
- {"eMPIA", "eMPIA Technology", "www.empiatech.com.tw"},
- {"Canon", "Canon", "www.canon.com"},
- {"A4Tech", "A4tech", "www.a4tech.com"},
- {"ALCOR", "Alcor", "www.alcor.org"},
- {"Vimicro", "Vimicro", "www.vimicro.com"},
- {"OTi", "Ours Technology", "www.oti.com.tw"},
- {"BENQ", "BenQ", "www.benq.com"},
- {"Acer", "Acer", "www.acer.com"},
- {"QUANTUM", "Quantum", "www.quantum.com"},
- {"Kingston", "Kingston", "www.kingston.com"},
- {"Chicony", "Chicony", "www.chicony.com.tw"},
- {"Genius", "Genius", "www.genius.ru"},
- /* BIOS manufacturers */
- {"American Megatrends", "American Megatrends", "www.ami.com"},
- {"Award", "Award Software International", "www.award-bios.com"},
- {"Phoenix", "Phoenix Technologies", "www.phoenix.com"},
-};
-
-static GSList *vendor_list = NULL;
-
-void vendor_init(void)
-{
- gint i;
- gchar *path;
- static SyncEntry se = {
- .fancy_name = "Update vendor list",
- .name = "RecvVendorList",
- .save_to = "vendor.conf",
- .get_data = NULL
- };
-
- 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);
-}
-
-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 id;
-}
-
-const gchar *vendor_get_url(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->url);
- }
- }
-
- return NULL;
-}