diff options
Diffstat (limited to 'hardinfo2')
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, "<none>")) { -	    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 Binary files differdeleted file mode 100644 index efb964db..00000000 --- a/hardinfo2/benchmark.data +++ /dev/null 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, ¶ms); - -    /* 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, """, "“", "”"); -                     g_free (temp); - -                     temp = data; -                     data = egg_markdown_to_text_line_formatter (temp, "'", "‘", "’"); -                     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><dwalsh@redhat.com></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><dwalsh@redhat.com></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, "<none>")) { -	    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 Binary files differdeleted file mode 100644 index 98086442..00000000 --- a/hardinfo2/pixmaps/about-modules.png +++ /dev/null diff --git a/hardinfo2/pixmaps/audio.png b/hardinfo2/pixmaps/audio.png Binary files differdeleted file mode 100644 index cc0d9ec5..00000000 --- a/hardinfo2/pixmaps/audio.png +++ /dev/null diff --git a/hardinfo2/pixmaps/battery.png b/hardinfo2/pixmaps/battery.png Binary files differdeleted file mode 100644 index 172c2389..00000000 --- a/hardinfo2/pixmaps/battery.png +++ /dev/null diff --git a/hardinfo2/pixmaps/benchmark.png b/hardinfo2/pixmaps/benchmark.png Binary files differdeleted file mode 100644 index b807f11d..00000000 --- a/hardinfo2/pixmaps/benchmark.png +++ /dev/null diff --git a/hardinfo2/pixmaps/blowfish.png b/hardinfo2/pixmaps/blowfish.png Binary files differdeleted file mode 100644 index 54a9ba83..00000000 --- a/hardinfo2/pixmaps/blowfish.png +++ /dev/null diff --git a/hardinfo2/pixmaps/bluetooth.png b/hardinfo2/pixmaps/bluetooth.png Binary files differdeleted file mode 100644 index 4621658b..00000000 --- a/hardinfo2/pixmaps/bluetooth.png +++ /dev/null diff --git a/hardinfo2/pixmaps/boot.png b/hardinfo2/pixmaps/boot.png Binary files differdeleted file mode 100644 index 1151e48d..00000000 --- a/hardinfo2/pixmaps/boot.png +++ /dev/null diff --git a/hardinfo2/pixmaps/cdrom.png b/hardinfo2/pixmaps/cdrom.png Binary files differdeleted file mode 100644 index 52a23974..00000000 --- a/hardinfo2/pixmaps/cdrom.png +++ /dev/null diff --git a/hardinfo2/pixmaps/close.png b/hardinfo2/pixmaps/close.png Binary files differdeleted file mode 100644 index 7d702c5b..00000000 --- a/hardinfo2/pixmaps/close.png +++ /dev/null diff --git a/hardinfo2/pixmaps/compress.png b/hardinfo2/pixmaps/compress.png Binary files differdeleted file mode 100644 index 1c4530ba..00000000 --- a/hardinfo2/pixmaps/compress.png +++ /dev/null diff --git a/hardinfo2/pixmaps/computer.png b/hardinfo2/pixmaps/computer.png Binary files differdeleted file mode 100644 index b00cb150..00000000 --- a/hardinfo2/pixmaps/computer.png +++ /dev/null diff --git a/hardinfo2/pixmaps/cryptohash.png b/hardinfo2/pixmaps/cryptohash.png Binary files differdeleted file mode 100644 index b62f29ed..00000000 --- a/hardinfo2/pixmaps/cryptohash.png +++ /dev/null diff --git a/hardinfo2/pixmaps/dev_removable.png b/hardinfo2/pixmaps/dev_removable.png Binary files differdeleted file mode 100644 index d6c91e49..00000000 --- a/hardinfo2/pixmaps/dev_removable.png +++ /dev/null diff --git a/hardinfo2/pixmaps/devel.png b/hardinfo2/pixmaps/devel.png Binary files differdeleted file mode 100644 index 8aeebd6e..00000000 --- a/hardinfo2/pixmaps/devel.png +++ /dev/null diff --git a/hardinfo2/pixmaps/devices.png b/hardinfo2/pixmaps/devices.png Binary files differdeleted file mode 100644 index c21504c6..00000000 --- a/hardinfo2/pixmaps/devices.png +++ /dev/null diff --git a/hardinfo2/pixmaps/dialog-error.png b/hardinfo2/pixmaps/dialog-error.png Binary files differdeleted file mode 100644 index 7d6aaf6f..00000000 --- a/hardinfo2/pixmaps/dialog-error.png +++ /dev/null diff --git a/hardinfo2/pixmaps/dialog-information.png b/hardinfo2/pixmaps/dialog-information.png Binary files differdeleted file mode 100644 index 83b69935..00000000 --- a/hardinfo2/pixmaps/dialog-information.png +++ /dev/null diff --git a/hardinfo2/pixmaps/dialog-warning.png b/hardinfo2/pixmaps/dialog-warning.png Binary files differdeleted file mode 100644 index d5c4be43..00000000 --- a/hardinfo2/pixmaps/dialog-warning.png +++ /dev/null diff --git a/hardinfo2/pixmaps/dns.png b/hardinfo2/pixmaps/dns.png Binary files differdeleted file mode 100644 index 44dbb3fb..00000000 --- a/hardinfo2/pixmaps/dns.png +++ /dev/null diff --git a/hardinfo2/pixmaps/environment.png b/hardinfo2/pixmaps/environment.png Binary files differdeleted file mode 100644 index 2f580752..00000000 --- a/hardinfo2/pixmaps/environment.png +++ /dev/null diff --git a/hardinfo2/pixmaps/face-grin.png b/hardinfo2/pixmaps/face-grin.png Binary files differdeleted file mode 100644 index cc45e7cf..00000000 --- a/hardinfo2/pixmaps/face-grin.png +++ /dev/null diff --git a/hardinfo2/pixmaps/fft.png b/hardinfo2/pixmaps/fft.png Binary files differdeleted file mode 100644 index ed16da14..00000000 --- a/hardinfo2/pixmaps/fft.png +++ /dev/null diff --git a/hardinfo2/pixmaps/hdd.png b/hardinfo2/pixmaps/hdd.png Binary files differdeleted file mode 100644 index d0350343..00000000 --- a/hardinfo2/pixmaps/hdd.png +++ /dev/null diff --git a/hardinfo2/pixmaps/home.png b/hardinfo2/pixmaps/home.png Binary files differdeleted file mode 100644 index 74a83d04..00000000 --- a/hardinfo2/pixmaps/home.png +++ /dev/null diff --git a/hardinfo2/pixmaps/inputdevices.png b/hardinfo2/pixmaps/inputdevices.png Binary files differdeleted file mode 100644 index aea0f1d7..00000000 --- a/hardinfo2/pixmaps/inputdevices.png +++ /dev/null diff --git a/hardinfo2/pixmaps/internet.png b/hardinfo2/pixmaps/internet.png Binary files differdeleted file mode 100644 index ca76ef6c..00000000 --- a/hardinfo2/pixmaps/internet.png +++ /dev/null diff --git a/hardinfo2/pixmaps/joystick.png b/hardinfo2/pixmaps/joystick.png Binary files differdeleted file mode 100644 index 368b1793..00000000 --- a/hardinfo2/pixmaps/joystick.png +++ /dev/null diff --git a/hardinfo2/pixmaps/keyboard.png b/hardinfo2/pixmaps/keyboard.png Binary files differdeleted file mode 100644 index 9d0eecf6..00000000 --- a/hardinfo2/pixmaps/keyboard.png +++ /dev/null diff --git a/hardinfo2/pixmaps/language.png b/hardinfo2/pixmaps/language.png Binary files differdeleted file mode 100644 index 495a94bc..00000000 --- a/hardinfo2/pixmaps/language.png +++ /dev/null diff --git a/hardinfo2/pixmaps/logo.png b/hardinfo2/pixmaps/logo.png Binary files differdeleted file mode 100644 index 9d0484a5..00000000 --- a/hardinfo2/pixmaps/logo.png +++ /dev/null diff --git a/hardinfo2/pixmaps/logo.xcf b/hardinfo2/pixmaps/logo.xcf Binary files differdeleted file mode 100644 index e4295251..00000000 --- a/hardinfo2/pixmaps/logo.xcf +++ /dev/null diff --git a/hardinfo2/pixmaps/memory.png b/hardinfo2/pixmaps/memory.png Binary files differdeleted file mode 100644 index 25ffba99..00000000 --- a/hardinfo2/pixmaps/memory.png +++ /dev/null diff --git a/hardinfo2/pixmaps/modem.png b/hardinfo2/pixmaps/modem.png Binary files differdeleted file mode 100644 index 450e4039..00000000 --- a/hardinfo2/pixmaps/modem.png +++ /dev/null diff --git a/hardinfo2/pixmaps/module.png b/hardinfo2/pixmaps/module.png Binary files differdeleted file mode 100644 index 7c389a20..00000000 --- a/hardinfo2/pixmaps/module.png +++ /dev/null diff --git a/hardinfo2/pixmaps/monitor.png b/hardinfo2/pixmaps/monitor.png Binary files differdeleted file mode 100644 index fbe38d64..00000000 --- a/hardinfo2/pixmaps/monitor.png +++ /dev/null diff --git a/hardinfo2/pixmaps/mouse.png b/hardinfo2/pixmaps/mouse.png Binary files differdeleted file mode 100644 index 8baa74dc..00000000 --- a/hardinfo2/pixmaps/mouse.png +++ /dev/null diff --git a/hardinfo2/pixmaps/nautilus.png b/hardinfo2/pixmaps/nautilus.png Binary files differdeleted file mode 100644 index 2eac9171..00000000 --- a/hardinfo2/pixmaps/nautilus.png +++ /dev/null diff --git a/hardinfo2/pixmaps/network-connections.png b/hardinfo2/pixmaps/network-connections.png Binary files differdeleted file mode 100644 index 0e9124a7..00000000 --- a/hardinfo2/pixmaps/network-connections.png +++ /dev/null diff --git a/hardinfo2/pixmaps/network-interface.png b/hardinfo2/pixmaps/network-interface.png Binary files differdeleted file mode 100644 index 0a765eb4..00000000 --- a/hardinfo2/pixmaps/network-interface.png +++ /dev/null diff --git a/hardinfo2/pixmaps/network-statistics.png b/hardinfo2/pixmaps/network-statistics.png Binary files differdeleted file mode 100644 index e9c6a8be..00000000 --- a/hardinfo2/pixmaps/network-statistics.png +++ /dev/null diff --git a/hardinfo2/pixmaps/network.png b/hardinfo2/pixmaps/network.png Binary files differdeleted file mode 100644 index 5f95ba3e..00000000 --- a/hardinfo2/pixmaps/network.png +++ /dev/null diff --git a/hardinfo2/pixmaps/nqueens.png b/hardinfo2/pixmaps/nqueens.png Binary files differdeleted file mode 100644 index e33e857d..00000000 --- a/hardinfo2/pixmaps/nqueens.png +++ /dev/null diff --git a/hardinfo2/pixmaps/os.png b/hardinfo2/pixmaps/os.png Binary files differdeleted file mode 100644 index 2c07199b..00000000 --- a/hardinfo2/pixmaps/os.png +++ /dev/null diff --git a/hardinfo2/pixmaps/pcmcia.png b/hardinfo2/pixmaps/pcmcia.png Binary files differdeleted file mode 100644 index 2baac660..00000000 --- a/hardinfo2/pixmaps/pcmcia.png +++ /dev/null diff --git a/hardinfo2/pixmaps/printer.png b/hardinfo2/pixmaps/printer.png Binary files differdeleted file mode 100644 index 20861df9..00000000 --- a/hardinfo2/pixmaps/printer.png +++ /dev/null diff --git a/hardinfo2/pixmaps/processor.png b/hardinfo2/pixmaps/processor.png Binary files differdeleted file mode 100644 index b5dfa01f..00000000 --- a/hardinfo2/pixmaps/processor.png +++ /dev/null diff --git a/hardinfo2/pixmaps/raytrace.png b/hardinfo2/pixmaps/raytrace.png Binary files differdeleted file mode 100644 index 9340a293..00000000 --- a/hardinfo2/pixmaps/raytrace.png +++ /dev/null diff --git a/hardinfo2/pixmaps/report-large.png b/hardinfo2/pixmaps/report-large.png Binary files differdeleted file mode 100644 index d2dcafba..00000000 --- a/hardinfo2/pixmaps/report-large.png +++ /dev/null diff --git a/hardinfo2/pixmaps/report.png b/hardinfo2/pixmaps/report.png Binary files differdeleted file mode 100644 index 40d5fc8a..00000000 --- a/hardinfo2/pixmaps/report.png +++ /dev/null diff --git a/hardinfo2/pixmaps/resources.png b/hardinfo2/pixmaps/resources.png Binary files differdeleted file mode 100644 index c23587bb..00000000 --- a/hardinfo2/pixmaps/resources.png +++ /dev/null diff --git a/hardinfo2/pixmaps/server-large.png b/hardinfo2/pixmaps/server-large.png Binary files differdeleted file mode 100644 index 98799715..00000000 --- a/hardinfo2/pixmaps/server-large.png +++ /dev/null diff --git a/hardinfo2/pixmaps/server.png b/hardinfo2/pixmaps/server.png Binary files differdeleted file mode 100644 index 3f7b69b7..00000000 --- a/hardinfo2/pixmaps/server.png +++ /dev/null diff --git a/hardinfo2/pixmaps/shares.png b/hardinfo2/pixmaps/shares.png Binary files differdeleted file mode 100644 index a05befe5..00000000 --- a/hardinfo2/pixmaps/shares.png +++ /dev/null diff --git a/hardinfo2/pixmaps/summary.png b/hardinfo2/pixmaps/summary.png Binary files differdeleted file mode 100644 index 8451f99e..00000000 --- a/hardinfo2/pixmaps/summary.png +++ /dev/null diff --git a/hardinfo2/pixmaps/syncmanager-small.png b/hardinfo2/pixmaps/syncmanager-small.png Binary files differdeleted file mode 100644 index 2a522619..00000000 --- a/hardinfo2/pixmaps/syncmanager-small.png +++ /dev/null diff --git a/hardinfo2/pixmaps/syncmanager.png b/hardinfo2/pixmaps/syncmanager.png Binary files differdeleted file mode 100644 index 46da6412..00000000 --- a/hardinfo2/pixmaps/syncmanager.png +++ /dev/null diff --git a/hardinfo2/pixmaps/therm.png b/hardinfo2/pixmaps/therm.png Binary files differdeleted file mode 100644 index 8db7a2cc..00000000 --- a/hardinfo2/pixmaps/therm.png +++ /dev/null diff --git a/hardinfo2/pixmaps/usb.png b/hardinfo2/pixmaps/usb.png Binary files differdeleted file mode 100644 index d35176a4..00000000 --- a/hardinfo2/pixmaps/usb.png +++ /dev/null diff --git a/hardinfo2/pixmaps/usbfldisk.png b/hardinfo2/pixmaps/usbfldisk.png Binary files differdeleted file mode 100644 index c6a2d0c6..00000000 --- a/hardinfo2/pixmaps/usbfldisk.png +++ /dev/null diff --git a/hardinfo2/pixmaps/users.png b/hardinfo2/pixmaps/users.png Binary files differdeleted file mode 100644 index bf3cabb1..00000000 --- a/hardinfo2/pixmaps/users.png +++ /dev/null diff --git a/hardinfo2/pixmaps/wireless.png b/hardinfo2/pixmaps/wireless.png Binary files differdeleted file mode 100644 index c5a5bf92..00000000 --- a/hardinfo2/pixmaps/wireless.png +++ /dev/null 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 -				      (¶ms->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, ¶meter }, -    }; -     -    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, ¶ms)) { -	    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; -}  | 
