Compare commits

..

No commits in common. "master" and "sigar-1.6.3" have entirely different histories.

548 changed files with 12707 additions and 36116 deletions

43
.gitignore vendored
View File

@ -1,43 +0,0 @@
pkg
Makefile
Makefile.in
*.o
*.lo
*.la
.deps
.libs
aclocal.m4
autom4te.cache
compile
config.guess
config.log
config.status
config.sub
configure
depcomp
install-sh
libtool
ltmain.sh
missing
src/sigar_version_autoconf.c
examples/cpuinfo
examples/sigar_ps
debian/*.log
debian/stamp-*
debian/tmp
m4/
debian/python-sigar*
debian/python-module-stampdir
debian/*.debhelper
debian/*.substvars
debian/libsigar1/
debian/libsigar1-dev/
debian/libsigar-java-doc/
debian/libsigar-java/
debian/files
config.sub*
config.guess*
bindings/java/${dist}
bindings/python/build
TODO*
check*.rb

23
AUTHORS
View File

@ -1,23 +0,0 @@
Doug MacEachern <dougm at vmware.com>
Jan Kneschke <jan at kneschke.de>
Matthew Kent <mkent at magoazul.com>
Ryan Beasley <rbeasley at vmware.com>
Bjoern Martin <boris59 at boris59.de>
Kay Ropke <kroepke at classdump.local>
Ryan Morgan <rmorgan at hyperic.com>
Monty Taylor <mordred at inaugust.com>
Trevor Pounds <trevor.pounds at gmail.com>
Jon Travis <jtravis at hyperic.com>
Tony Ashburner <tashburner at emergency.qld.gov.au>
Ryan Bloom <rbloom at covalent.net>

View File

@ -1,35 +0,0 @@
PROJECT(sigar C)
cmake_minimum_required(VERSION 2.6)
INCLUDE(CheckIncludeFiles)
INCLUDE(CheckFunctionExists)
INCLUDE(CheckTypeSize)
INCLUDE(CTest)
INCLUDE(InstallRequiredSystemLibraries)
ENABLE_TESTING()
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
SET(CPACK_PACKAGE_VERSION_MINOR "6")
SET(CPACK_PACKAGE_VERSION_PATCH "2")
SET(CPACK_PACKAGE_VENDOR "Hyperic")
## SET(CPACK_*) before the INCLUDE(CPack)
INCLUDE(CPack)
IF(WIN32)
## make sure we only use the smallest set of
## headers on win32. Otherwise we get clashes
## between winsock2.h and winsock.h
ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN)
# force the correct version for the redist manifest
ADD_DEFINITIONS(-D_BIND_TO_CURRENT_MFC_VERSION=1 -D_BIND_TO_CURRENT_CRT_VERSION=1)
# turn off security warnings for system calls
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
ENDIF(WIN32)
ADD_SUBDIRECTORY(src build-src)
ADD_SUBDIRECTORY(tests build-tests)
ADD_SUBDIRECTORY(include build-include)

339
COPYING Normal file
View File

@ -0,0 +1,339 @@
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 Lesser 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) <year> <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) year 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 Lesser General
Public License instead of this License.

227
ChangeLog
View File

@ -1,230 +1,3 @@
2010-04-28 Doug MacEachern <dougm@hyperic.com>
* 1.6.4 release
* GPL v2 license -> Apache 2 license
* (SIGAR-188) implement mem actual free/used on Windows
2010-04-27 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-215) use swapctl SC_LIST for Solaris swap_get impl
2010-04-15 Doug MacEachern <dougm@hyperic.com>
* osf1 no longer supported
* netware no longer supported
* (SIGAR-201) JNIEnv->ExceptionCheck to avoid possible SEGV on OutOfMemoryError
2010-04-14 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-192) avoid possible stack corruption in Windows proc_env impl
* (SIGAR-213) check ENV.ANT_HOME/lib for junit in Main-Class
2010-04-09 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-214) properly adjust jni.javahome when JAVA_HOME is not set
2010-04-08 Doug MacEachern <dougm@hyperic.com>
* cpptasks patches moved to http://github.com/dougm/ant-contrib-cpptasks
* mv tools/PerfBrowser http://github.com/dougm/csharp-perfbrowser
* mv exp/ http://github.com/dougm/sigar-stuff
2010-04-07 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-213) remove junit.jar from distribution
* (SIGAR-188) implement mem actual free/used on HPUX
* (SIGAR-188) implement mem actual free/used on AIX
2010-04-05 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-188) implement mem actual free/used on OpenBSD and NetBSD
* (SIGAR-188) implement mem actual free/used on Solaris
2010-04-02 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-212) pass LANG_ENGLISH to FormatMessage in Windows sigar_strerror impl
2010-04-01 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-188) implement mem actual free/used on Windows
2010-04-01 Trevor Pounds <trevor.pounds@gmail.com>
* (SIGAR-202) Change CreateFile() access flags to prevent potential inode calculation
errors on Windows when tailing a file.
2010-04-01 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-207) append instance index in Pdh.getInstances()
2010-03-31 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-207) Add Pdh.getCounterType method
* (SIGAR-207) Add Pdh.getDescription method
* (SIGAR-210) recognize cifs as a network file system
2010-03-30 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-211) HPUX file_system_list needs to read /etc/mnttab instead of /etc/fstab
2010-02-09 Doug MacEachern <dougm@hyperic.com>
* add -i (inode format) support to df command
2010-02-05 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-205) Vista and higher changed wireless card type to IF_TYPE_IEEE80211
2010-01-18 Doug MacEachern <dougm@hyperic.com>
* rid dup in solaris route_list impl
2010-01-17 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-181) fill-in sigar_net_route_t.ifname on HPUX
2010-01-12 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-196) use pst_processor.psp_cpu_frequency to calculate cpu_info.mhz on HP-UX 11.31+
2010-01-04 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-194) sigar_file_system_t.dev_name on Windows should be the network path for remote drives
2009-12-23 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-193) Migrate from mach/shared_memory_server.h to mach/shared_region.h on Darwin
2009-11-09 Doug MacEachern <dougm@hyperic.com>
* only display event code in toString as the Event Viewer does
* 'N/A' for null user in EventLogRecord.toString
* include the same fields as Event Viewer in EventLogRecord.toString
* (SIGAR-191) fix EventLogRecord.computerName
* (SIGAR-190) add category to EventLogRecord
2009-11-05 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-189) ignore CP_WAIT time on HPUX
2009-11-03 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-187) implement proc_exe on AIX
* (SIGAR-188) implement mem actual free/used on MacOSX
2009-11-02 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-188) implement mem actual free/used on FreeBSD
2009-10-23 Doug MacEachern <dougm@hyperic.com>
* Pdh test adjustments for windows 2000
* (SIGAR-185) fix RegistryKey open on windows 2000
* (SIGAR-186) fix Win32.getFileVersion on windows 2000
2009-09-30 Doug MacEachern <dougm@hyperic.com>
* hpux pa 64-bit support
2009-09-17 Doug MacEachern <dougm@hyperic.com>
* 64-bit MacOSX 10.6 sdk does not support ppc64, switch from universal build to i386 only
2009-09-15 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-181) net_route.ifname impl for Win32
* (SIGAR-181) net_route.ifname impl for MacOSX and *BSD
* (SIGAR-182) use mib2_ip_t.ipRouteEntrySize to determine mib2_ipRouteEntry_t size
2009-09-08 Doug MacEachern <dougm@hyperic.com>
* fix MacOSX10.6.sdk build issues
2009-09-01 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-168) always fallback to wmi when peb fails for proc_args
2009-08-30 Doug MacEachern <dougm@hyperic.com>
* 6.1 == Windows 7
* 10.6 == Snow Leopard
2009-08-23 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-179) Increase buffer size in cpu_list query from 16 to 128
2009-08-11 Jan Kneschke <jan@kneschke.de>
* (SIGAR-137) sdl_data isn't 0-terminated
2009-08-05 Doug MacEachern <dougm@hyperic.com>
* try wmi if peb fails for proc_exe
* add wmi proc_args wrapper
2009-07-31 Doug MacEachern <dougm@hyperic.com>
* only exclude nfs/rpcv2.h on FreeBSD 8+
2009-07-30 Doug MacEachern <dougm@hyperic.com>
* net_route_list bandaid for FreeBSD 8.0
* sigar_proc_port_get does not compile on FreeBSD 8.0
* only need nfs/rpcv2.h on darwin
2009-07-18 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-164) return ENXIO instead of ENOENT in disk_usage win32 impl
* (SIGAR-164) return ENXIO instead of ENOENT in disk_usage linux impl
* (SIGAR-164) return ENXIO instead of ENOENT in disk_usage aix impl
* (SIGAR-164) return ENXIO instead of ESRCH in disk_usage darwin impl
2009-07-17 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-163) Recognize cvfs (StorNext) as local filesystem type
2009-07-16 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-162) plug possible memory leak in sigar_iodev_get util
2009-07-14 Doug MacEachern <dougm@hyperic.com>
* remove pdh.dll (only used on NT 4.0)
2009-07-13 Doug MacEachern <dougm@hyperic.com>
* (SIGAR-155) Plug memory leak sigar_proc_exe_get Darwin impl
* bump version to 1.6.4
2008-07-13 Doug MacEachern <dougm@hyperic.com> 2008-07-13 Doug MacEachern <dougm@hyperic.com>
* 1.6.3 release * 1.6.3 release

104
EXCEPTIONS Normal file
View File

@ -0,0 +1,104 @@
Hyperic FLOSS License Exception
The Hyperic Exception for Free/Libre and Open Source
Software-only Applications Using Hyperic SIGAR Libraries (the
"FLOSS Exception").
Version 0.1, September 6, 2008
Exception Intent
We want specified Free/Libre and Open Source Software (``FLOSS'')
applications to be able to use specified GPL-licensed Hyperic SIGAR
libraries (the ``Program'') despite the fact that not all FLOSS
licenses are compatible with version 2 of the GNU General Public
License (the ``GPL'').
Legal Terms and Conditions
As a special exception to the terms and conditions of version 2.0
of the GPL:
1. You are free to distribute a Derivative Work that is formed
entirely from the Program and one or more works (each, a
"FLOSS Work") licensed under one or more of the licenses
listed below in section 1, as long as:
a. You obey the GPL in all respects for the Program and the
Derivative Work, except for identifiable sections of the
Derivative Work which are not derived from the Program,
and which can reasonably be considered independent and
separate works in themselves,
b. all identifiable sections of the Derivative Work which
are not derived from the Program, and which can
reasonably be considered independent and separate works
in themselves,
i. are distributed subject to one of the FLOSS licenses
listed below, and
ii. the object code or executable form of those sections
are accompanied by the complete corresponding
machine-readable source code for those sections on
the same medium and under the same FLOSS license as
the corresponding object code or executable forms of
those sections, and
c. any works which are aggregated with the Program or with a
Derivative Work on a volume of a storage or distribution
medium in accordance with the GPL, can reasonably be
considered independent and separate works in themselves
which are not derivatives of either the Program, a
Derivative Work or a FLOSS Work.
If the above conditions are not met, then the Program may only
be copied, modified, distributed or used under the terms and
conditions of the GPL or another valid licensing option from
Hyperic, Inc.
2. FLOSS License List
License name Version(s)/Copyright Date
Apache Software License 1.0/1.1/2.0
Artistic license From Perl 5.8.0
BSD license "July 22 1999"
Eclipse Public License 1.0
Mozilla Public License (MPL) 1.0/1.1
Open Software License 2.0
PHP License 3.0
Python Software Foundation License 2.1.1
Due to the many variants of some of the above licenses, we
require that any version follow the 2003 version of the Free
Software Foundation's Free Software Definition
(http://www.gnu.org/philosophy/free-sw.html) or version 1.9 of
the Open Source Definition by the Open Source Initiative
(http://www.opensource.org/docs/definition.php).
3. Definitions
a. Terms used, but not defined, herein shall have the
meaning provided in the GPL.
b. Derivative Work means a derivative work under copyright
law.
4. Applicability: This FLOSS Exception applies to all Programs
that contain a notice placed by Hyperic, Inc. saying that the
Program may be distributed under the terms of this FLOSS
Exception. If you create or distribute a work which is a
Derivative Work of both the Program and any other work
licensed under the GPL, then this FLOSS Exception is not
available for that work; thus, you must remove the FLOSS
Exception notice from that work and comply with the GPL in all
respects, including by retaining all GPL notices. You may
choose to redistribute a copy of the Program exclusively under
the terms of the GPL by removing the FLOSS Exception notice
from that copy of the Program, provided that the copy has
never been modified by you or any third party.
Appendix A. Qualified Libraries and Packages
The following is a non-exhaustive list of libraries and packages
which are covered by the FLOSS License Exception. Please note that
this appendix is provided merely as an additional service to
specific FLOSS projects wishing to simplify licensing information
for their users. Compliance with one of the licenses noted under
the "FLOSS license list" section remains a prerequisite.
Package Name Qualifying License and Version
Apache Portable Runtime (APR) Apache Software License 2.0

201
LICENSE
View File

@ -1,201 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

39
LICENSES Normal file
View File

@ -0,0 +1,39 @@
Hyperic SIGAR includes some third-party open source components
in its distribution. The list below identifies the community or
organization and links to their appropriate license terms.
The Hyperic team would like to thank all the communities
of the projects listed below for their contributions.
---------------------------------------------------------------------
The following components are included without modification:
- log4j -
Information: http://logging.apache.org/
License: http://www.apache.org/licenses/LICENSE-2.0
- junit -
Information: http://www.junit.org/index.htm
License: http://www.opensource.org/licenses/cpl.php
The following components are included with modification:
- cpptasks -
Information: http://ant-contrib.sourceforge.net/
License: http://ant-contrib.sourceforge.net/LICENSE.txt
- (portions of) APR -
Information: http://apr.apache.org/
License: http://www.apache.org/licenses/LICENSE-2.0
- solaris get_mib2 -
Information: ftp://vic.cc.purdue.edu/pub/tools/unix/solaris/get_mib2/
License: within src/os/solaris/get_mib2.[ch]
- getline by Chris Thewalt -
Information: http://tinyurl.com/r438r
License: within src/sigar_getline.c
- PrintfFormat.java -
Information: http://java.sun.com/developer/technicalArticles/Programming/sprintf/PrintfFormat.java
License: within bindings/java/src/org/hyperic/sigar/util/PrintfFormat.java

View File

@ -1,5 +0,0 @@
SUBDIRS = include src bindings examples tests
EXTRA_DIST=\
CMakeLists.txt \
winbuild.bat

117
NOTICE
View File

@ -1,117 +0,0 @@
Copyright (c) 2004-2011 VMware, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
ADDITIONAL LICENSE INFORMATION:
Hyperic SIGAR includes some third-party open source components
in its distribution. The list below identifies the community or
organization and links to their appropriate license terms.
The Hyperic team would like to thank all the communities
of the projects listed below for their contributions.
----------------------------------------------------------
Components under the Apache License 2.0:
----------------------------------------------------------
The following components are included without modification:
- log4j -
Information: http://logging.apache.org/
License: http://www.apache.org/licenses/LICENSE-2.0
The following components are included with modification:
- cpptasks -
Information: http://ant-contrib.sourceforge.net/
License: http://www.apache.org/licenses/LICENSE-2.0
- (portions of) APR -
Information: http://apr.apache.org/
License: http://www.apache.org/licenses/LICENSE-2.0
----------------------------------------------------------
Components under BSD/MIT Style Licenses:
----------------------------------------------------------
The following components are included with modification:
- solaris get_mib2 -
Information: ftp://vic.cc.purdue.edu/pub/tools/unix/solaris/get_mib2/
License: within src/os/solaris/get_mib2.[ch]
Copyright 1995 Purdue Research Foundation, West Lafayette, Indiana
47907. All rights reserved.
Written by Victor A. Abell <abe@cc.purdue.edu>
This software is not subject to any license of the American Telephone
and Telegraph Company or the Regents of the University of California.
Permission is granted to anyone to use this software for any purpose on
any computer system, and to alter it and redistribute it freely, subject
to the following restrictions:
1. Neither Victor A Abell nor Purdue University are responsible for
any consequences of the use of this software.
2. The origin of this software must not be misrepresented, either by
explicit claim or by omission. Credit to Victor A. Abell and Purdue
University must appear in documentation and sources.
3. Altered versions must be plainly marked as such, and must not be
misrepresented as being the original software.
4. This notice may not be removed or altered.
- getline by Chris Thewalt -
Information: http://tinyurl.com/r438r
License: within src/sigar_getline.c
Copyright (C) 1991, 1992 by Chris Thewalt (thewalt@ce.berkeley.edu)
Permission to use, copy, modify, and distribute this software
for any purpose and without fee is hereby granted, provided
that the above copyright notices appear in all copies and that both the
copyright notice and this permission notice appear in supporting
documentation. This software is provided "as is" without express or
implied warranty.
- PrintfFormat.java -
Information: http://java.sun.com/developer/technicalArticles/Programming/sprintf/PrintfFormat.java
License: within bindings/java/src/org/hyperic/sigar/util/PrintfFormat.java
(c) 2000 Sun Microsystems, Inc.
ALL RIGHTS RESERVED
License Grant-
Permission to use, copy, modify, and distribute this Software and its
documentation for NON-COMMERCIAL or COMMERCIAL purposes and without fee is
hereby granted.
This Software is provided "AS IS". All express warranties, including any
implied warranty of merchantability, satisfactory quality, fitness for a
particular purpose, or non-infringement, are disclaimed, except to the extent
that such disclaimers are held to be legally invalid.
You acknowledge that Software is not designed, licensed or intended for use in
the design, construction, operation or maintenance of any nuclear facility
("High Risk Activities"). Sun disclaims any express or implied warranty of
fitness for such uses.
Please refer to the file http://www.sun.com/policies/trademarks/ for further
important trademark information and to
http://java.sun.com/nav/business/index.html for further important licensing
information for the Java Technology.

2
README Normal file
View File

@ -0,0 +1,2 @@
Visit the SIGAR Wiki for documentation, bugs, support, etc.:
http://sigar.hyperic.com/

View File

@ -1,42 +0,0 @@
# System Information Gatherer And Reporter.
Fork of hyperic/sigar with some fixes. Support only ruby binding. Part of [Eye gem](https://github.com/kostya/eye).
## Fixed:
### [2.0.11] 10-09-2024
* Fixing build issue on newer linux and also issues with newer Ruby [#16](https://github.com/kostya/sigar/pull/16)([commit](https://github.com/kostya/sigar/pull/16/commits/8b887b2380c4aadea82402904d9c1131bbb9c521))
### [2.0.10] 31-10-2021
* Fix compilation on MacOS 11.3.1 [#11](https://github.com/kostya/sigar/issues/11)([commit](https://github.com/kostya/sigar/commit/49a9aeeff54e97ac6f41d464c30ff6c8adf4bcf4))
### [2.0.9] 28-06-2021
* Fix compilation on FreeBSD 13 [#10](https://github.com/kostya/sigar/issues/10)([commit](https://github.com/kostya/sigar/commit/b78b558fb756a75dc7d6cbf704423be3c7098ae5))
### [2.0.8] 02-10-2020
* Fix compilation on MacOS [#8](https://github.com/kostya/sigar/issues/8)([commit](https://github.com/kostya/sigar/pull/9/commits/ad39547629fa328e115f7d7bc3c7c358247d1961))
### [2.0.6] 18-01-2019
* Fix compilation on FreeBSD 12 [#6](https://github.com/kostya/sigar/issues/6)([commit](https://github.com/kostya/sigar/commit/2bb67fa1bf6f6f0ddc2626cf028bcc0e4a8cb377))
### [2.0.5] 02-12-2018
* Fix compilation with musl libc [#4](https://github.com/kostya/sigar/pull/4)([commit](https://github.com/kostya/sigar/pull/4/commits/cd07923dd2ed34aca353dfd182f2f85c13853fd9))
### [2.0.4] 10-06-2018
* fix compilation with glibc 2.26, major/minor functions [#2](https://github.com/kostya/sigar/issues/2)([commit](https://github.com/kostya/sigar/commit/a2c67588d0f686e0007dadcaf0e4bbb35c0e1e83))
### [2.0.2] 30-05-2018
* Remove obsolete rpc usage (fix compilation fail with glibc 2.27) [#213](https://github.com/kostya/eye/issues/213)([commit](https://github.com/kostya/sigar/commit/a971b9e8e1443fdf236c5ffa199c1994c05fcd4b))
### [2.0.1] 10-04-2018
* FreeBSD: don't use v_cache_min/max [#68](https://github.com/hyperic/sigar/pull/68)([commit](https://github.com/kostya/sigar/commit/800076db97bcacb1ba90805d740b4f9a5a1d3cca))
### [2.0.0] 22-01-2018
* sigfaulted logger, [#28](https://github.com/hyperic/sigar/pull/28)([commit](https://github.com/kostya/sigar/commit/c2a1af))
* bug undefined symbol: sigar_skip_token, [#60](https://github.com/hyperic/sigar/pull/60)([commit](https://github.com/kostya/sigar/commit/dfe8fe))
* bug detection boot_time on linux (now it works like gnu ps, and fix some issues with process start_time) ([commit](https://github.com/kostya/sigar/commit/660259))
## Installation:
$ gem install kostya-sigar

102
Rakefile
View File

@ -1,102 +0,0 @@
require 'rubygems'
require 'rubygems/package_task'
require 'rake/testtask'
#so we can: ssh host rake -f $hudson_workspace/sigar/Rakefile
Dir.chdir(File.dirname(__FILE__))
props = {}
File.open("version.properties").each { |line|
next if line =~ /^#/
line.chomp!
line.strip!
next if line.empty?
key,val = line.split('=')
props[key] = val
}
GEM = props['project.name']
MAKE = (/mswin/ =~ RUBY_PLATFORM) ? 'nmake' : 'make'
spec = Gem::Specification.new do |s|
s.name = GEM
s.version = props['version.major'] + '.' + props['version.minor'] + '.' + props['version.maint']
s.summary = props['project.summary']
s.description = s.summary
s.author = props['project.author']
s.email = props['project.email']
s.homepage = props['project.homepage']
s.platform = Gem::Platform::RUBY
s.extensions = 'bindings/ruby/extconf.rb'
s.files =
%w(LICENSE NOTICE README.md Rakefile version.properties) +
%w(bindings/SigarWrapper.pm bindings/SigarBuild.pm) +
`git ls-files -- bindings/ruby/*.*`.split("\n") +
Dir.glob("include/*.h") +
Dir.glob("src/**/*.[ch]") +
Dir.glob("src/**/*.in")
end
Gem::PackageTask.new(spec) do |pkg|
pkg.gem_spec = spec
end
task :default => :test
def in_ext()
ext = 'bindings/ruby'
Dir.chdir(ext) if File.directory? ext
end
desc 'Build sigar extension'
task :build do
in_ext()
unless File.exist? "Makefile"
unless system("ruby extconf.rb")
STDERR.puts "Failed to configure"
next
end
end
unless system(MAKE)
STDERR.puts 'Failed to ' + MAKE
next
end
end
Rake::TestTask.new do |t|
t.pattern = 'test/*_test.rb'
t.libs << "."
end
task :test => [:build] do
in_ext()
end
desc 'Clean sigar extension'
task :clean do
in_ext()
system(MAKE + ' clean') if File.exist? "Makefile"
end
desc 'Dist Clean sigar extension'
task :distclean do
in_ext()
system(MAKE + ' distclean') if File.exist? "Makefile"
end
desc 'Run sigar examples (test)'
task :examples => [:build] do
in_ext()
Dir["examples/*.rb"].each do |file|
cmd = "ruby -I. #{file}"
print cmd + "\n"
system(cmd)
end
end
desc "create a gemspec file"
task :make_spec do
File.open("#{GEM}.gemspec", "w") do |file|
file.puts spec.to_ruby
end
end

View File

@ -1,61 +0,0 @@
#!/bin/sh
set -x
rm -f INSTALL NEWS \
&& rm -f -r m4 \
&& rm -f aclocal.m4 \
&& rm -f -r autom4te.cache \
&& rm -f compile \
&& rm -f config.guess \
&& rm -f config.log \
&& rm -f config.status \
&& rm -f config.sub \
&& rm -f configure \
&& rm -f depcomp \
&& rm -f src/config.h \
&& rm -f src/config.h.in \
&& rm -f install-sh \
&& rm -f -r libltdl \
&& rm -f libtool \
&& rm -f ltmain.sh \
&& rm -f Makefile \
&& rm -f Makefile.in \
&& rm -f missing \
&& rm -f src/*.la \
&& rm -f src/*.lo \
&& rm -f src/*.o \
&& rm -f src/sigar_version_autoconf.c \
&& rm -f -r src/.libs \
&& rm -f -r src/.deps \
&& rm -f src/os/Makefile \
&& rm -f src/os/Makefile.in \
&& rm -f src/os/*/Makefile \
&& rm -f src/os/*/Makefile.in \
&& rm -f src/os/*/*.la \
&& rm -f src/os/*/*.lo \
&& rm -f src/os/*/*.o \
&& rm -f -r src/os/*/.libs \
&& rm -f -r src/os/*/.deps \
&& rm -f src/Makefile \
&& rm -f src/Makefile.in \
&& rm -f src/stamp-h1 \
&& rm -f src/stamp-h1.in \
&& rm -f bindings/Makefile \
&& rm -f bindings/Makefile.in \
&& rm -f bindings/lua/Makefile \
&& rm -f bindings/*/Makefile.in \
&& rm -f -r bindings/*/.deps \
&& rm -f include/Makefile \
&& rm -f include/Makefile.in \
&& rm -f -r tests/.deps \
&& rm -f tests/Makefile \
&& rm -f tests/Makefile.in \
&& rm -f examples/Makefile \
&& rm -f examples/Makefile.in \
&& rm -f examples/*.o \
&& rm -f -r examples/.libs \
&& rm -f -r examples/.deps \
&& perl -le 's/\.c$// && unlink && print "rm $_" for <examples/*.c>'

View File

@ -1,96 +0,0 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
# LIBTOOLIZE=${LIBTOOLIZE:-libtoolize}
LIBTOOLIZE_FLAGS="--copy --force"
# ACLOCAL=${ACLOCAL:-aclocal}
# AUTOHEADER=${AUTOHEADER:-autoheader}
# AUTOMAKE=${AUTOMAKE:-automake}
AUTOMAKE_FLAGS="--add-missing --copy"
# AUTOCONF=${AUTOCONF:-autoconf}
ARGV0=$0
ARGS="$@"
run() {
echo "$ARGV0: running \`$@' $ARGS"
$@ $ARGS
}
## jump out if one of the programs returns 'false'
set -e
## on macosx glibtoolize, others have libtool
if test x$LIBTOOLIZE = x; then
if test \! "x`which glibtoolize 2> /dev/null | grep -v '^no'`" = x; then
LIBTOOLIZE=glibtoolize
elif test \! "x`which libtoolize-1.5 2> /dev/null | grep -v '^no'`" = x; then
LIBTOOLIZE=libtoolize-1.5
elif test \! "x`which libtoolize 2> /dev/null | grep -v '^no'`" = x; then
LIBTOOLIZE=libtoolize
else
echo "libtoolize 1.5.x wasn't found, exiting"; exit 0
fi
fi
## suse has aclocal and aclocal-1.9
if test x$ACLOCAL = x; then
if test \! "x`which aclocal-1.9 2> /dev/null | grep -v '^no'`" = x; then
ACLOCAL=aclocal-1.9
elif test \! "x`which aclocal19 2> /dev/null | grep -v '^no'`" = x; then
ACLOCAL=aclocal19
elif test \! "x`which aclocal 2> /dev/null | grep -v '^no'`" = x; then
ACLOCAL=aclocal
else
echo "automake 1.9.x (aclocal) wasn't found, exiting"; exit 0
fi
fi
if test x$AUTOMAKE = x; then
if test \! "x`which automake-1.9 2> /dev/null | grep -v '^no'`" = x; then
AUTOMAKE=automake-1.9
elif test \! "x`which automake19 2> /dev/null | grep -v '^no'`" = x; then
AUTOMAKE=automake19
elif test \! "x`which automake 2> /dev/null | grep -v '^no'`" = x; then
AUTOMAKE=automake
else
echo "automake 1.9.x wasn't found, exiting"; exit 0
fi
fi
## macosx has autoconf-2.59 and autoconf-2.60
if test x$AUTOCONF = x; then
if test \! "x`which autoconf-2.59 2> /dev/null | grep -v '^no'`" = x; then
AUTOCONF=autoconf-2.59
elif test \! "x`which autoconf259 2> /dev/null | grep -v '^no'`" = x; then
AUTOCONF=autoconf259
elif test \! "x`which autoconf 2> /dev/null | grep -v '^no'`" = x; then
AUTOCONF=autoconf
else
echo "autoconf 2.59+ wasn't found, exiting"; exit 0
fi
fi
if test x$AUTOHEADER = x; then
if test \! "x`which autoheader-2.59 2> /dev/null | grep -v '^no'`" = x; then
AUTOHEADER=autoheader-2.59
elif test \! "x`which autoheader259 2> /dev/null | grep -v '^no'`" = x; then
AUTOHEADER=autoheader259
elif test \! "x`which autoheader 2> /dev/null | grep -v '^no'`" = x; then
AUTOHEADER=autoheader
else
echo "autoconf 2.59+ (autoheader) wasn't found, exiting"; exit 0
fi
fi
run $LIBTOOLIZE $LIBTOOLIZE_FLAGS
run $ACLOCAL $ACLOCAL_FLAGS
# we don't need autoheader as we don't have a config.h
# run $AUTOHEADER
run $AUTOMAKE $AUTOMAKE_FLAGS
run $AUTOCONF
test "$ARGS" = "" && echo "Now type './configure --enable-maintainer-mode ...' and 'make' to compile."

View File

@ -1 +0,0 @@
SUBDIRS=lua

View File

@ -1,301 +0,0 @@
#
# Copyright (c) 2009 Hyperic, Inc.
# Copyright (c) 2009 SpringSource, Inc.
# Copyright (c) 2009 VMware, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
package SigarBuild;
use strict;
use Config;
use Exporter;
use File::Basename qw(basename);
use File::Copy qw(copy);
use File::Spec ();
use POSIX ();
use vars qw(@ISA @EXPORT);
@ISA = qw(Exporter);
@EXPORT = qw(cppflags ldflags libs os src inline_src version_file resource_file);
sub archname {
my $os = lc $^O;
my $vers = $Config{osvers};
my $arch = $Config{archname};
if ($os =~ /win32/) {
return 'x86-winnt';
}
elsif ($os =~ /linux/) {
if ($arch =~ /_64/) {
return 'amd64-linux';
}
else {
return 'x86-linux';
}
}
elsif ($os =~ /hpux/) {
if ($vers =~ /11\./) {
return 'pa-hpux-11';
}
}
elsif ($os =~ /aix/) {
return 'ppc-aix-5';
}
elsif ($os =~ /solaris/) {
if ($arch =~ /sun4/) {
return 'sparc-solaris';
}
elsif ($arch =~ /.86/) {
return 'x86-solaris';
}
}
elsif ($os =~ /darwin/) {
return 'universal-macosx';
}
elsif ($os =~ /freebsd/) {
if ($arch =~ /.86/) {
if($vers =~ /6\../ ) {
return 'x86-freebsd-6';
}
}
elsif ($arch =~ /amd64/) {
if ($vers =~ /6\../ ) {
return 'amd64-freebsd-6';
}
}
}
return '';
}
sub flags {
my $os = lc $^O;
my $is_win32 = 0;
my (@cppflags, @ldflags, @libs);
if ($os =~ /(win32)/) {
$os = $1;
$is_win32 = 1;
@cppflags = ('-DWIN32', '-D_CRT_SECURE_NO_DEPRECATE');
@libs = qw(kernel32 user32 advapi32 ws2_32 netapi32 shell32 pdh version comsupp wbemuuid);
}
elsif ($os =~ /(linux)/) {
$os = $1;
}
elsif ($os =~ /(hpux)/) {
$os = $1;
@libs = qw(nsl nm);
}
elsif ($os =~ /(aix)/) {
$os = $1;
@libs = qw(odm cfg perfstat);
}
elsif ($os =~ /(solaris)/) {
$os = $1;
@libs = qw(nsl socket kstat);
}
elsif ($os =~ /(darwin)/) {
$os = $1;
@cppflags = ('-DDARWIN');
@ldflags = ('-framework CoreServices', '-framework IOKit');
if (-e "/usr/local/libproc.h") {
push @cppflags, '-DDARWIN_HAS_LIBPROC_H';
}
}
elsif ($os =~ /bsd/) {
$os = 'darwin';
@libs = qw(kvm);
}
push @cppflags,
'-I../../include',
"-I../../src/os/$os";
unless ($is_win32) {
push @cppflags, '-U_FILE_OFFSET_BITS';
}
my(@src) = (<../../src/*.c>, <../../src/os/$os/*.c>, <../../src/os/$os/*.cpp>);
return {
is_win32 => $is_win32,
os => $os,
libs => \@libs,
cppflags => \@cppflags,
ldflags => \@ldflags,
src => \@src,
};
}
#perl -Mlib=.. -MSigarBuild -e cppflags
sub cppflags {
print join ' ', @{ flags()->{cppflags} };
}
sub ldflags {
print join ' ', @{ flags()->{ldflags} };
}
sub libs {
print join ' ', @{ flags()->{libs} };
}
sub os {
print flags()->{os};
}
sub src {
print join ' ', @{ flags()->{src} };
}
sub inline_src {
my $stdout = @_ ? 0 : 1;
my $flags = shift || flags();
my $src = $flags->{src};
my $dir = $flags->{build_dir} || $ARGV[0];
my(@files);
#unlink symlinks incase of nfs shared dir...
for my $file (grep { -l } <*.c>) {
unlink $file;
}
for my $file (@$src) {
my $cf = basename $file;
#sigar.c -> libsigar.c else
#sigar.o and perl Sigar.o clash on case insensitive filesystems
$cf = 'libsigar.c' if $cf eq 'sigar.c';
if ($dir) {
$cf = join '/', $dir, $cf;
$file = File::Spec->rel2abs($file);
}
push @files, $cf;
if ($flags->{is_win32}) {
copy($file, $cf);
}
else {
symlink($file, $cf) unless -e $cf;
}
}
if ($stdout) {
print join ' ', @files;
}
else {
return @files;
}
}
sub scm_revision {
my $rev;
$rev = `git rev-parse --short HEAD`;
if ($rev) {
chomp $rev;
}
else {
$rev = "exported";
}
return $rev;
}
sub build_date {
return POSIX::strftime("%m/%d/%Y %I:%M %p", localtime);
}
sub find_file {
my $file = shift;
for my $dir (qw(../.. .. .)) {
my $pfile = "$dir/$file";
return $pfile if -e $pfile;
}
return $file;
}
sub version_properties {
my $props = {};
my $file = $_[0] || find_file('version.properties');
open my $fh, $file or die "open $file: $!";
while (<$fh>) {
chomp;
my($key,$val) = split '=';
next unless $key and defined $val;
$props->{$key} = $val;
}
close $fh;
$props->{'scm.revision'} = scm_revision();
$props->{'build.date'} = build_date();
$props->{'version'} =
join '.', map $props->{"version.$_"}, qw(major minor maint);
$props->{'version.build'} = $ENV{BUILD_NUMBER} || '0';
$props->{'version.string'} =
join '.', $props->{'version'}, $props->{'version.build'};
return $props;
}
sub resource_file {
my(@args) = @_ ? @_ : @ARGV;
version_file(find_file("src/os/win32/sigar.rc.in"), "sigar.rc", @args);
}
sub version_file {
local $_;
my($source, $dest, %filters);
my(@args) = @_ ? @_ : @ARGV;
for (@args) {
if (/=/) {
my($key,$val) = split '=', $_, 2;
$filters{$key} = $val;
}
else {
if ($source) {
$dest = $_;
}
else {
$source = $_;
}
}
}
unless ($source) {
$dest = 'sigar_version.c';
$source = find_file("src/$dest.in");
}
my $props = version_properties();
while (my($key,$val) = each %$props) {
$key = uc $key;
$key =~ s/\./_/;
$filters{$key} = $val;
}
my $re = join '|', keys %filters;
open my $in, $source or die "open $source: $!";
my $out;
if ($dest) {
open $out, '>', $dest or die "open $dest: $!";
}
else {
$out = \*STDOUT;
}
while (<$in>) {
s/\@\@($re)\@\@/$filters{$1}/go;
print $out $_;
}
close $in;
close $out if $dest;
}
1;
__END__

View File

@ -1,25 +1,8 @@
#
# Copyright (c) 2007-2009 Hyperic, Inc.
# Copyright (c) 2009 SpringSource, Inc.
# Copyright (c) 2009-2010 VMware, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#extension source generator for all bindings #extension source generator for all bindings
package SigarWrapper; package SigarWrapper;
use strict; use strict;
use Config;
use Cwd; use Cwd;
use Exporter; use Exporter;
use File::Path; use File::Path;
@ -29,6 +12,57 @@ use vars qw(@ISA @EXPORT);
@ISA = qw(Exporter); @ISA = qw(Exporter);
@EXPORT = qw(generate); @EXPORT = qw(generate);
sub archname {
my $os = lc $^O;
my $vers = $Config{osvers};
my $arch = $Config{archname};
if ($os =~ /win32/) {
return 'x86-winnt';
}
elsif ($os =~ /linux/) {
if ($arch =~ /_64/) {
return 'amd64-linux';
}
else {
return 'x86-linux';
}
}
elsif ($os =~ /hpux/) {
if ($vers =~ /11\./) {
return 'pa-hpux-11';
}
}
elsif ($os =~ /aix/) {
return 'ppc-aix-5';
}
elsif ($os =~ /solaris/) {
if ($arch =~ /sun4/) {
return 'sparc-solaris';
}
elsif ($arch =~ /.86/) {
return 'x86-solaris';
}
}
elsif ($os =~ /darwin/) {
return 'universal-macosx';
}
elsif ($os =~ /freebsd/) {
if($arch =~ /.86/) {
if($vers =~ /6\../ ) {
return 'x86-freebsd-6';
}
}
elsif( $arch =~ /amd64/) {
if($vers =~ /6\../ ) {
return 'amd64-freebsd-6';
}
}
}
return '';
}
my %platforms = ( my %platforms = (
A => "AIX", A => "AIX",
D => "Darwin", D => "Darwin",
@ -43,11 +77,10 @@ my %has_name_arg = map { $_, 1 } qw(FileSystemUsage DiskUsage
FileAttrs DirStat DirUsage FileAttrs DirStat DirUsage
NetInterfaceConfig NetInterfaceStat); NetInterfaceConfig NetInterfaceStat);
my %proc_no_arg = map { $_, 1 } qw(stat); my %proc_no_arg = map { $_, 1 } qw(stat);
my %get_not_impl = map { $_, 1 } qw(net_address net_route net_connection net_stat cpu_perc my %get_not_impl = map { $_, 1 } qw(net_address net_route net_connection net_stat cpu_perc
arp who cpu_info file_system); #list funcs only who cpu_info file_system); #list funcs only
sub supported_platforms { sub supported_platforms {
my $p = shift; my $p = shift;
@ -481,44 +514,34 @@ use vars qw(%classes %cmds);
{ {
name => 'vendor', type => 'String', name => 'vendor', type => 'String',
desc => 'CPU vendor id', desc => 'CPU vendor id',
plat => '*' plat => 'AFLHSW'
}, },
{ {
name => 'model', type => 'String', name => 'model', type => 'String',
desc => 'CPU model', desc => 'CPU model',
plat => '*' plat => 'AFLHSW'
}, },
{ {
name => 'mhz', type => 'Int', name => 'mhz', type => 'Int',
desc => 'Current CPU speed', desc => 'CPU speed',
plat => '*' plat => 'AFHLSW'
},
{
name => 'mhz_max', type => 'Int',
desc => 'Maximum CPU speed',
plat => 'DL'
},
{
name => 'mhz_min', type => 'Int',
desc => 'Maximum CPU speed',
plat => 'DL'
}, },
{ {
name => 'cache_size', type => 'Long', name => 'cache_size', type => 'Long',
desc => 'CPU cache size', desc => 'CPU cache size',
plat => 'ADL' plat => 'AL'
}, },
{ {
name => 'total_cores', type => 'Int', name => 'total_cores', type => 'Int',
desc => 'Total CPU cores (logical)', desc => 'Total CPU cores (logical)',
}, },
{ {
name => 'total_sockets', type => 'Int', name => 'total_sockets', type => 'Int',
desc => 'Total CPU sockets (physical)', desc => 'Total CPU sockets (physical)',
}, },
{ {
name => 'cores_per_socket', type => 'Int', name => 'cores_per_socket', type => 'Int',
desc => 'Number of CPU cores per CPU socket', desc => 'Number of CPU cores per CPU socket',
}, },
], ],
Uptime => [ Uptime => [
@ -528,7 +551,6 @@ use vars qw(%classes %cmds);
plat => '*' plat => '*'
}, },
], ],
ProcMem => [ ProcMem => [
{ {
name => 'size', type => 'Long', name => 'size', type => 'Long',
@ -629,51 +651,6 @@ use vars qw(%classes %cmds);
plat => '*' plat => '*'
}, },
], ],
ProcDiskIO => [
{
name => 'bytes_read', type => 'Long',
desc => 'Bytes Read',
plat => 'LW'
},
{
name => 'bytes_written', type => 'Long',
desc => 'Bytes Written',
plat => 'LW'
},
{
name => 'bytes_total', type => 'Long',
desc => 'Bytes Total',
plat => 'LWAHS'
}
],
ProcCumulativeDiskIO => [
{
name => 'bytes_read', type => 'Long',
desc => 'Bytes Read from Start',
plat => 'LW'
},
{
name => 'bytes_written', type => 'Long',
desc => 'Bytes Written from Start',
plat => 'LW'
},
{
name => 'bytes_total', type => 'Long',
desc => 'Bytes Total from Start',
plat => 'LWAHS'
}
],
DumpPidCache => [
{
name => 'dummy', type => 'Long',
desc => 'Dummy',
plat => 'LWAHS'
}
],
ProcState => [ ProcState => [
{ {
name => 'state', type => 'Char', name => 'state', type => 'Char',
@ -1010,11 +987,6 @@ use vars qw(%classes %cmds);
desc => '', desc => '',
plat => '' plat => ''
}, },
{
name => 'default_gateway_interface', type => 'String',
desc => '',
plat => ''
},
{ {
name => 'host_name', type => 'String', name => 'host_name', type => 'String',
desc => '', desc => '',
@ -1119,18 +1091,6 @@ use vars qw(%classes %cmds);
desc => '', desc => '',
plat => '*' plat => '*'
}, },
{
name => 'address6', type => 'NetAddress',
desc => '',
},
{
name => 'prefix6_length', type => 'Int',
desc => '',
},
{
name => 'scope6', type => 'Int',
desc => '',
},
{ {
name => 'destination', type => 'NetAddress', name => 'destination', type => 'NetAddress',
desc => '', desc => '',
@ -1161,11 +1121,6 @@ use vars qw(%classes %cmds);
desc => '', desc => '',
plat => 'DFL' plat => 'DFL'
}, },
{
name => 'tx_queue_len', type => 'Int',
desc => '',
plat => 'L'
},
], ],
NetInterfaceStat => [ NetInterfaceStat => [
{ {
@ -1466,33 +1421,6 @@ use vars qw(%classes %cmds);
plat => '*' plat => '*'
}, },
], ],
Arp => [
{
name => 'ifname', type => 'String',
desc => '',
plat => '*'
},
{
name => 'hwaddr', type => 'NetAddress',
desc => '',
plat => '*'
},
{
name => 'type', type => 'String',
desc => '',
plat => '*'
},
{
name => 'address', type => 'NetAddress',
desc => '',
plat => '*'
},
{
name => 'flags', type => 'Long',
desc => '',
plat => '*'
},
],
Who => [ Who => [
{ {
name => 'user', type => 'String', name => 'user', type => 'String',
@ -1697,13 +1625,6 @@ $comment
EOF EOF
} }
sub erl_warning_comment {
my $self = shift;
my $comment = $self->warning_comment;
$comment =~ s/^/% /mg;
"$comment\n";
}
sub generate { sub generate {
my($lang, $dir) = @_ ? @_ : @ARGV; my($lang, $dir) = @_ ? @_ : @ARGV;
@ -1768,9 +1689,7 @@ sub uptodate {
return 1; return 1;
} }
my(%warning_comment) = my(%warning_comment) = map { $_ => \&c_warning_comment } qw(c h java);
((map { $_ => \&c_warning_comment } qw(c h java)),
(map { $_ => \&erl_warning_comment } qw(erl hrl)));
sub create { sub create {
my($self, $file) = @_; my($self, $file) = @_;
@ -2172,8 +2091,8 @@ EOF
my $member = $field->{member} || $name; my $member = $field->{member} || $name;
my $desc = $field->{desc} || $name; my $desc = $field->{desc} || $name;
(my $jname = $name) =~ s/_(\w)/\u$1/g; (my $jname = $name) =~ s/_(\w)/\u$1/g;
my $getter = "get\u$jname"; my $getter = "get\u$jname";
$jname = jname($jname); $jname = jname($jname);
my $sig = qq("$field_types{$type}"); my $sig = qq("$field_types{$type}");
my $set = "JENV->Set${type}Field"; my $set = "JENV->Set${type}Field";
my $get = "JENV->Get${type}Field"; my $get = "JENV->Get${type}Field";
@ -2431,7 +2350,7 @@ sub generate_class {
if ($func->{num_args} == 1) { if ($func->{num_args} == 1) {
my $arg_type; my $arg_type;
if ($func->{is_proc}) { if ($func->{is_proc}) {
$arg_type = 'OBJ2PID'; $arg_type = 'NUM2UINT';
} }
else { else {
$arg_type = 'StringValuePtr'; $arg_type = 'StringValuePtr';
@ -2445,9 +2364,8 @@ static VALUE $ruby_class;
static VALUE rb_sigar_$cname($proto) static VALUE rb_sigar_$cname($proto)
{ {
SIGAR_GET;
int status; int status;
sigar_t *sigar = rb_sigar_get(obj);
$func->{sigar_type} *RETVAL = malloc(sizeof(*RETVAL)); $func->{sigar_type} *RETVAL = malloc(sizeof(*RETVAL));
if ((status = $func->{sigar_function}($args, RETVAL)) != SIGAR_OK) { if ((status = $func->{sigar_function}($args, RETVAL)) != SIGAR_OK) {
@ -2859,164 +2777,36 @@ sub finish {
$self->SUPER::finish; $self->SUPER::finish;
} }
package SigarWrapper::Erlang; #XXX not currently supporting netware
package SigarWrapper::Netware;
use vars qw(@ISA); use vars qw(@ISA);
@ISA = qw(SigarWrapper); @ISA = qw(SigarWrapper);
my %field_types = (
Long => "esigar_encode_ulonglong",
Double => "esigar_encode_double",
Int => "esigar_encode_long",
Char => "esigar_encode_char",
String => "esigar_encode_string",
NetAddress => "esigar_encode_netaddr",
);
my $c_file = 'priv/gen/sigar_drv_gen.c';
my $h_file = 'priv/gen/sigar.hrl';
my $g_file = 'priv/gen/sigar_gen.hrl';
sub sources {
return $c_file;
}
sub start { sub start {
my $self = shift; my $self = shift;
$self->SUPER::start; $self->SUPER::start;
$self->{cfh} = $self->create($c_file); $self->{dfh} = $self->create('javasigar_generated.def');
$self->{hfh} = $self->create($h_file);
$self->{gfh} = $self->create($g_file);
} }
sub generate_class {
my($self, $func) = @_;
my $cfh = $self->{cfh};
my $cname = $func->{cname};
my $parse_args = "";
my $vars = "";
my $args = 'sigar';
if ($func->{num_args} == 1) {
if ($func->{is_proc}) {
$parse_args = 'pid = esigar_pid_get(sigar, bytes);';
$vars = "long $func->{arg};\n";
}
else {
$parse_args .= 'name = bytes;';
$vars = "char *$func->{arg};\n";
}
$args .= ", $func->{arg}";
}
my $encoder = "esigar_encode_$cname";
my $n = scalar @{ $func->{fields} };
print $cfh <<EOF;
static void $encoder(ei_x_buff *x,
$func->{sigar_type} *$cname)
{
ei_x_encode_list_header(x, $n);
EOF
for my $field (@{ $func->{fields} }) {
my $name = $field->{name};
my $type = $field_types{ $field->{type} };
print $cfh qq{ $type(x, "$name", $cname->$name);\n};
}
print $cfh " ei_x_encode_empty_list(x);\n}\n\n";
print $cfh <<EOF if $func->{has_get};
static int e$func->{sigar_function}(ErlDrvPort port, sigar_t *sigar, char *bytes)
{
int status;
ei_x_buff x;
$func->{sigar_type} $cname;
$vars
$parse_args
ESIGAR_NEW(&x);
if ((status = $func->{sigar_function}($args, &$cname)) == SIGAR_OK) {
ESIGAR_OK(&x);
$encoder(&x, &$cname);
ESIGAR_SEND(port, &x);
}
else {
ESIGAR_ERROR(&x, sigar, status);
}
return status;
}
EOF
}
my(@nongens) =
qw{net_interface_list net_route_list net_connection_list
file_system_list cpu_info_list arp_list who_list
loadavg};
sub finish { sub finish {
my $self = shift; my $self = shift;
my $fh = $self->{dfh};
my $mappings = $self->get_mappings; for my $func (@{ $self->{nativefunc} }) {
my $cfh = $self->{cfh}; #$fh->println($nativefunc) if $impl;
my $hfh = $self->{hfh};
my $gfh = $self->{gfh};
my $ncmd = 1;
for my $ngen (@nongens) {
my $cmd = uc $ngen;
print $cfh "#define ESIGAR_$cmd $ncmd\n";
print $hfh "-define($cmd, $ncmd).\n";
$ncmd++;
} }
my $jsigar = "../../src/jni/javasigar.c";
for my $func (@$mappings) { my(%alias) = (x => 'Sigar');
next unless $func->{has_get}; open JSIGAR, $jsigar or die "open $jsigar: $!";
my $name = $func->{cname}; while (<JSIGAR>) {
my $cmd = uc $name; next unless /SIGAR_JNI([a-z]?)\(([A-Za-z_]+)\)/;
my $nargs = 1 + $func->{num_args}; my $class = "";
print $cfh "#define ESIGAR_$cmd $ncmd\n"; if ($1) {
print $hfh "-define($cmd, $ncmd).\n"; $class = $alias{$1} . "_";
print $hfh "-export([$name/$nargs]).\n";
$ncmd++;
}
print $cfh <<EOF;
static int esigar_dispatch(ErlDrvPort port, sigar_t *sigar, int cmd, char *bytes) {
switch (cmd) {
EOF
for my $func (@$mappings) {
next unless $func->{has_get};
my $name = $func->{cname};
my $cmd = uc $name;
my $arg = "";
if ($func->{num_args}) {
$arg = ", Arg";
} }
$fh->println("Java_org_hyperic_sigar_$class$2");
print $gfh <<EOF;
$name({sigar, S}$arg) ->
do_command(S, ?$cmd$arg).
EOF
print $cfh <<EOF
case ESIGAR_$cmd:
return e$func->{sigar_function}(port, sigar, bytes);
EOF
} }
print $cfh <<EOF; close JSIGAR;
default:
esigar_notimpl(port, sigar, cmd);
return SIGAR_ENOTIMPL;
}
}
EOF
$self->SUPER::finish; $self->SUPER::finish;
} }

View File

@ -1,19 +1,3 @@
/*
* Copyright (c) 2004 Hyperic, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System; using System;
using Hyperic.Sigar; using Hyperic.Sigar;

View File

@ -1,19 +1,3 @@
/*
* Copyright (c) 2004-2005 Hyperic, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System; using System;
using Hyperic.Sigar; using Hyperic.Sigar;

View File

@ -1,19 +1,3 @@
/*
* Copyright (c) 2004 Hyperic, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System; using System;
using Hyperic.Sigar; using Hyperic.Sigar;

View File

@ -1,19 +1,3 @@
/*
* Copyright (c) 2004-2005 Hyperic, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System; using System;
using Hyperic.Sigar; using Hyperic.Sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2004-2006 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
using System; using System;

View File

@ -1,12 +0,0 @@
all:
perl -Mlib=.. -MSigarWrapper -e generate Erlang .
cd src && make
cd c_src && make
shell:
make all
erl -pa ebin
clean:
cd src && make clean
cd c_src && make clean

View File

@ -1,40 +0,0 @@
## SIGAR driver for Erlang
If you're not already familar with sigar, have a look at the [SIGAR Wiki](http://sigar.hyperic.com).
Also helpful: **../../include/sigar.h**, **../*/examples** and
**../java/src/org/hyperic/sigar/cmd/** to get an idea of what you can do.
### Building
The other bindings/* inline the libsigar sources by default, haven't done that yet for erl.
So, you'll need a libsigar to link against, one of:
Ant build:
cd ../java ; ant
ln -s sigar-bin/lib/libsigar-amd64-linux.so sigar-lib/lib/libsigar.so
Or, download release binary created by the ant build:
curl -o priv/libsigar.so http://svn.hyperic.org/projects/sigar_bin/dist/SIGAR_1_6_2/lib/libsigar-amd64-linux.so
Or, top-level autotools build (WIP):
cd ../.. ; ./autogen.sh && ./configure && make install
Once you have a libsigar in place, just run **make** and have a look at the **examples/**.
Note that the majority of the driver code is generated by **../SigarWrapper.pm** and output to **priv/gen**.
### ToDo/Help Wanted
* Fill out the **examples/** - currently weaksauce in part due to me having just a few hours w/ Erlang
* Build system - doubt the current will work anywhere cept Linux
* EUnit
* Other stuff Erlangers know that I don't

View File

@ -1,16 +0,0 @@
GCC = gcc
OTP_ROOT = $(shell ./check_otp -root)
EI_ROOT = $(shell ./check_otp -ei)
EI_LIB = $(EI_ROOT)/lib
EI_INC = $(EI_ROOT)/include
SIGAR_LIB = ../../java/sigar-bin/lib
LDFLAGS = -shared -L${EI_LIB} -lei -lpthread -L${SIGAR_LIB} -L../priv -lsigar
SRCS = sigar_drv.c
OUTPUT = ../priv/sigar_drv.so
CFLAGS = -Wall -fPIC -I../../../include -I${OTP_ROOT}/usr/include -I${EI_INC} -o ${OUTPUT}
all:
${GCC} ${SRCS} ${LDFLAGS} ${CFLAGS}
clean:
rm -rf ${OUTPUT} ../priv/gen/*.c ../priv/gen/*.hrl

View File

@ -1,17 +0,0 @@
#!/bin/bash
#copied from jungerl
if [ "$1" == "-root" -o "$1" == "" ]; then
erl -noinput -eval 'io:format("~s~n", [code:root_dir()]), halt(0).'
fi
if [ "$1" == "-ei" -o "$1" == "" ]; then
erl -noinput -eval \
'case code:lib_dir("erl_interface") of
{error, bad_name} ->
io:format("not found~n", []),
halt(1);
LibDir ->
io:format("~s~n", [LibDir]),
halt(0)
end.'
fi

View File

@ -1,439 +0,0 @@
/*
* Copyright (c) 2009 SpringSource, Inc.
* Copyright (c) 2010 VMware, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <erl_driver.h>
#include <ei.h>
#include <ctype.h>
#include <string.h>
#include "sigar.h"
#include "sigar_fileinfo.h"
#include "sigar_format.h"
#include "sigar_ptql.h"
typedef struct {
ErlDrvPort port;
sigar_t *sigar;
} sigar_drv_t;
static ErlDrvData start(ErlDrvPort port, char *cmd) {
sigar_drv_t *sd = (sigar_drv_t *)driver_alloc(sizeof(*sd));
int status;
status = sigar_open(&sd->sigar);
if (status != SIGAR_OK) {
sd->sigar = NULL;
driver_failure_posix(port, status);
}
sd->port = port;
return (ErlDrvData)sd;
}
static void stop(ErlDrvData handle) {
sigar_drv_t *driver_data = (sigar_drv_t *)handle;
if (driver_data->sigar) {
sigar_close(driver_data->sigar);
}
}
#ifdef SIGAR_64BIT
#define str2pid(value) strtoull(value, NULL, 10)
#else
#define str2pid(value) strtoul(value, NULL, 10)
#endif
static sigar_pid_t esigar_pid_get(sigar_t *sigar, char *pid)
{
if (isdigit(*pid)) {
return str2pid(pid);
}
else if ((*pid == '$') && (*(pid + 1) == '$')) {
return sigar_pid_get(sigar);
}
else {
/* XXX cache queries */
sigar_ptql_query_t *query;
sigar_ptql_error_t error;
int status =
sigar_ptql_query_create(&query, (char *)pid, &error);
if (status == SIGAR_OK) {
sigar_pid_t qpid;
status = sigar_ptql_query_find_process(sigar, query, &qpid);
sigar_ptql_query_destroy(query);
if (status == SIGAR_OK) {
return qpid;
}
}
}
return 0;
}
static void esigar_to_strlist(ei_x_buff *x,
char **data, unsigned long number)
{
unsigned long i;
ei_x_encode_list_header(x, number);
for (i=0; i<number; i++) {
ei_x_encode_string(x, data[i]);
}
ei_x_encode_empty_list(x);
}
typedef void (*esigar_encoder_func_t)(ei_x_buff *x, void *data);
static void esigar_to_list(ei_x_buff *x,
char *data, unsigned long number, int size,
esigar_encoder_func_t encoder)
{
unsigned long i;
ei_x_encode_list_header(x, number);
for (i=0; i<number; i++, data += size) {
encoder(x, data);
}
ei_x_encode_empty_list(x);
}
#define ESIGAR_NEW(x) \
ei_x_new_with_version(x)
#define ESIGAR_OK(x) \
ei_x_encode_tuple_header(x, 2); \
ei_x_encode_atom(x, "ok")
#define ESIGAR_ERROR(x, sigar, status) \
ei_x_encode_tuple_header(x, 2); \
ei_x_encode_atom(x, "error"); \
ei_x_encode_string(x, sigar_strerror(sigar, status))
#define ESIGAR_SEND(p, x) \
driver_output(port, (x)->buff, (x)->index); \
ei_x_free(x)
#define esigar_encode_long(x, k, v) \
ei_x_encode_tuple_header(x, 2); \
ei_x_encode_atom(x, k); \
ei_x_encode_long(x, v)
#define esigar_encode_ulonglong(x, k, v) \
ei_x_encode_tuple_header(x, 2); \
ei_x_encode_atom(x, k); \
ei_x_encode_ulonglong(x, v)
#define esigar_encode_char(x, k, v) \
ei_x_encode_tuple_header(x, 2); \
ei_x_encode_atom(x, k); \
ei_x_encode_char(x, v)
#define esigar_encode_string(x, k, v) \
ei_x_encode_tuple_header(x, 2); \
ei_x_encode_atom(x, k); \
ei_x_encode_string(x, v)
#define esigar_encode_double(x, k, v) \
ei_x_encode_tuple_header(x, 2); \
ei_x_encode_atom(x, k); \
ei_x_encode_double(x, v)
static void esigar_encode_net_address(ei_x_buff *x, const char *key,
sigar_net_address_t *address)
{
char buf[SIGAR_INET6_ADDRSTRLEN];
sigar_net_address_to_string(NULL, address, buf);
esigar_encode_string(x, key, buf);
}
#define esigar_encode_netaddr(x, k, v) \
esigar_encode_net_address(x, k, &v)
static void esigar_notimpl(ErlDrvPort port, sigar_t *sigar, int cmd)
{
ei_x_buff x;
ESIGAR_NEW(&x);
ESIGAR_ERROR(&x, sigar, SIGAR_ENOTIMPL);
ESIGAR_SEND(port, &x);
}
#include "../priv/gen/sigar_drv_gen.c"
static void esigar_loadavg_get(ErlDrvPort port, sigar_t *sigar)
{
int status;
ei_x_buff x;
sigar_loadavg_t loadavg;
ESIGAR_NEW(&x);
if ((status = sigar_loadavg_get(sigar, &loadavg)) == SIGAR_OK) {
ESIGAR_OK(&x);
ei_x_encode_list_header(&x, 3);
ei_x_encode_double(&x, loadavg.loadavg[0]);
ei_x_encode_double(&x, loadavg.loadavg[1]);
ei_x_encode_double(&x, loadavg.loadavg[2]);
ei_x_encode_empty_list(&x);
}
else {
ESIGAR_ERROR(&x, sigar, status);
}
ESIGAR_SEND(port, &x);
}
static void esigar_net_connection_list_get(ErlDrvPort port, sigar_t *sigar,
unsigned int flags)
{
int status;
ei_x_buff x;
sigar_net_connection_list_t list;
ei_x_new_with_version(&x);
if ((status = sigar_net_connection_list_get(sigar, &list, flags) == SIGAR_OK)) {
ESIGAR_OK(&x);
esigar_to_list(&x,
(char *)&list.data[0], list.number,
sizeof(*list.data),
(esigar_encoder_func_t)esigar_encode_net_connection);
sigar_net_connection_list_destroy(sigar, &list);
}
else {
ESIGAR_ERROR(&x, sigar, status);
}
ESIGAR_SEND(port, &x);
}
static void esigar_net_interface_list_get(ErlDrvPort port, sigar_t *sigar)
{
int status;
ei_x_buff x;
sigar_net_interface_list_t list;
ei_x_new_with_version(&x);
if ((status = sigar_net_interface_list_get(sigar, &list) == SIGAR_OK)) {
ESIGAR_OK(&x);
esigar_to_strlist(&x, list.data, list.number);
sigar_net_interface_list_destroy(sigar, &list);
}
else {
ESIGAR_ERROR(&x, sigar, status);
}
ESIGAR_SEND(port, &x);
}
static void esigar_file_system_list_get(ErlDrvPort port, sigar_t *sigar)
{
int status;
ei_x_buff x;
sigar_file_system_list_t list;
ei_x_new_with_version(&x);
if ((status = sigar_file_system_list_get(sigar, &list) == SIGAR_OK)) {
ESIGAR_OK(&x);
esigar_to_list(&x,
(char *)&list.data[0], list.number,
sizeof(*list.data),
(esigar_encoder_func_t)esigar_encode_file_system);
sigar_file_system_list_destroy(sigar, &list);
}
else {
ESIGAR_ERROR(&x, sigar, status);
}
ESIGAR_SEND(port, &x);
}
static void esigar_net_route_list_get(ErlDrvPort port, sigar_t *sigar)
{
int status;
ei_x_buff x;
sigar_net_route_list_t list;
ei_x_new_with_version(&x);
if ((status = sigar_net_route_list_get(sigar, &list) == SIGAR_OK)) {
ESIGAR_OK(&x);
esigar_to_list(&x,
(char *)&list.data[0], list.number,
sizeof(*list.data),
(esigar_encoder_func_t)esigar_encode_net_route);
sigar_net_route_list_destroy(sigar, &list);
}
else {
ESIGAR_ERROR(&x, sigar, status);
}
ESIGAR_SEND(port, &x);
}
static void esigar_cpu_info_list_get(ErlDrvPort port, sigar_t *sigar)
{
int status;
ei_x_buff x;
sigar_cpu_info_list_t list;
ei_x_new_with_version(&x);
if ((status = sigar_cpu_info_list_get(sigar, &list) == SIGAR_OK)) {
ESIGAR_OK(&x);
esigar_to_list(&x,
(char *)&list.data[0], list.number,
sizeof(*list.data),
(esigar_encoder_func_t)esigar_encode_cpu_info);
sigar_cpu_info_list_destroy(sigar, &list);
}
else {
ESIGAR_ERROR(&x, sigar, status);
}
ESIGAR_SEND(port, &x);
}
static void esigar_arp_list_get(ErlDrvPort port, sigar_t *sigar)
{
int status;
ei_x_buff x;
sigar_arp_list_t list;
ei_x_new_with_version(&x);
if ((status = sigar_arp_list_get(sigar, &list) == SIGAR_OK)) {
ESIGAR_OK(&x);
esigar_to_list(&x,
(char *)&list.data[0], list.number,
sizeof(*list.data),
(esigar_encoder_func_t)esigar_encode_arp);
sigar_arp_list_destroy(sigar, &list);
}
else {
ESIGAR_ERROR(&x, sigar, status);
}
ESIGAR_SEND(port, &x);
}
static void esigar_who_list_get(ErlDrvPort port, sigar_t *sigar)
{
int status;
ei_x_buff x;
sigar_who_list_t list;
ei_x_new_with_version(&x);
if ((status = sigar_who_list_get(sigar, &list) == SIGAR_OK)) {
ESIGAR_OK(&x);
esigar_to_list(&x,
(char *)&list.data[0], list.number,
sizeof(*list.data),
(esigar_encoder_func_t)esigar_encode_who);
sigar_who_list_destroy(sigar, &list);
}
else {
ESIGAR_ERROR(&x, sigar, status);
}
ESIGAR_SEND(port, &x);
}
static void outputv(ErlDrvData handle, ErlIOVec *ev) {
sigar_drv_t *sd = (sigar_drv_t *)handle;
sigar_t *sigar = sd->sigar;
ErlDrvPort port = sd->port;
ErlDrvBinary *data = ev->binv[1];
int cmd = data->orig_bytes[0];
switch(cmd) {
case ESIGAR_NET_CONNECTION_LIST:
esigar_net_connection_list_get(port, sigar,
data->orig_bytes[1]);
break;
case ESIGAR_NET_INTERFACE_LIST:
esigar_net_interface_list_get(port, sigar);
break;
case ESIGAR_NET_ROUTE_LIST:
esigar_net_route_list_get(port, sigar);
break;
case ESIGAR_FILE_SYSTEM_LIST:
esigar_file_system_list_get(port, sigar);
break;
case ESIGAR_CPU_INFO_LIST:
esigar_cpu_info_list_get(port, sigar);
break;
case ESIGAR_ARP_LIST:
esigar_arp_list_get(port, sigar);
break;
case ESIGAR_WHO_LIST:
esigar_who_list_get(port, sigar);
break;
case ESIGAR_LOADAVG:
esigar_loadavg_get(port, sigar);
break;
default:
esigar_dispatch(port, sigar, cmd, &data->orig_bytes[1]);
break;
}
}
static ErlDrvEntry sigar_driver_entry = {
NULL, /* init */
start, /* startup */
stop, /* shutdown */
NULL, /* output */
NULL, /* ready_input */
NULL, /* ready_output */
"sigar_drv", /* name of the driver */
NULL, /* finish */
NULL, /* handle */
NULL, /* control */
NULL, /* timeout */
outputv, /* outputv */
NULL, /* ready_async */
NULL, /* flush */
NULL, /* call */
NULL, /* event */
ERL_DRV_EXTENDED_MARKER, /* ERL_DRV_EXTENDED_MARKER */
ERL_DRV_EXTENDED_MAJOR_VERSION, /* ERL_DRV_EXTENDED_MAJOR_VERSION */
ERL_DRV_EXTENDED_MAJOR_VERSION, /* ERL_DRV_EXTENDED_MINOR_VERSION */
ERL_DRV_FLAG_USE_PORT_LOCKING /* ERL_DRV_FLAGs */
};
DRIVER_INIT(sigar_driver) {
return &sigar_driver_entry;
}

View File

@ -1 +0,0 @@
*.beam

View File

@ -1,32 +0,0 @@
#!/usr/bin/env escript
%%! -pz ebin
%
% Copyright (c) 2010 VMware, Inc.
%
% Licensed under the Apache License, Version 2.0 (the "License");
% you may not use this file except in compliance with the License.
% You may obtain a copy of the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS,
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
% See the License for the specific language governing permissions and
% limitations under the License.
%
-include(sigar).
main(_) ->
{ok, S} = sigar:start(),
{ok, List} = sigar:arp_list(S),
lists:map(
fun(Arp) ->
lists:map(
fun(K) ->
io:format("~s\t", [sigar:get_value(K, Arp)]) end,
[address, hwaddr, type, ifname]),
io:format("~n")
end, List),
sigar:stop(S).

View File

@ -1,29 +0,0 @@
#!/usr/bin/env escript
%
% Copyright (c) 2009 SpringSource, Inc.
%
% Licensed under the Apache License, Version 2.0 (the "License");
% you may not use this file except in compliance with the License.
% You may obtain a copy of the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS,
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
% See the License for the specific language governing permissions and
% limitations under the License.
%
-include(sigar).
main(_) ->
{ok, S} = sigar:start(),
{ok, FsList} = sigar:file_system_list(S),
lists:map(
fun(Fs) ->
io:format("~s ~n", [sigar:get_value(dir_name, Fs)]) end,
FsList),
sigar:stop(S).

View File

@ -1,40 +0,0 @@
#!/usr/bin/env escript
%
% Copyright (c) 2009 SpringSource, Inc.
%
% Licensed under the Apache License, Version 2.0 (the "License");
% you may not use this file except in compliance with the License.
% You may obtain a copy of the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS,
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
% See the License for the specific language governing permissions and
% limitations under the License.
%
-include(sigar).
main(_) ->
{ok, S} = sigar:start(),
{ok, Mem} = sigar:mem(S),
io:format("\tTotal\tUsed\tFree~n"),
io:format("Mem: "),
lists:map(
fun(K) ->
io:format("~w\t", [sigar:get_value(K, Mem)/1024]) end,
[total, used, free]),
io:format("~n"),
{ok, Swap} = sigar:swap(S),
io:format("Swap: "),
lists:map(
fun(K) ->
io:format("~w\t", [sigar:get_value(K, Swap)/1024]) end,
[total, used, free]),
io:format("~n"),
io:format("RAM: ~wMB~n", [sigar:get_value(ram, Mem)]),
sigar:stop(S).

View File

@ -1,30 +0,0 @@
#!/usr/bin/env escript
%
% Copyright (c) 2009 SpringSource, Inc.
%
% Licensed under the Apache License, Version 2.0 (the "License");
% you may not use this file except in compliance with the License.
% You may obtain a copy of the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS,
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
% See the License for the specific language governing permissions and
% limitations under the License.
%
-include(sigar).
main(_) ->
{ok, S} = sigar:start(),
{ok, Names} = sigar:net_interface_list(S),
lists:map(
fun(K) ->
{ok, Ifconfig} = sigar:net_interface_config(S, K),
io:format("~s ~s~n", [K, sigar:get_value(address, Ifconfig)]) end,
Names),
sigar:stop(S).

View File

@ -1,31 +0,0 @@
#!/usr/bin/env escript
%
% Copyright (c) 2009 SpringSource, Inc.
%
% Licensed under the Apache License, Version 2.0 (the "License");
% you may not use this file except in compliance with the License.
% You may obtain a copy of the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS,
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
% See the License for the specific language governing permissions and
% limitations under the License.
%
-include(sigar).
main(_) ->
{ok, S} = sigar:start(),
{ok, Mem} = sigar:proc_mem(S, "$$"),
io:format("Size\tResident~n"),
lists:map(
fun(K) ->
io:format("~w\t", [sigar:get_value(K, Mem)/1024]) end,
[size, resident]),
io:format("~n"),
sigar:stop(S).

View File

@ -1,34 +0,0 @@
#!/usr/bin/env escript
%
% Copyright (c) 2009 SpringSource, Inc.
%
% Licensed under the Apache License, Version 2.0 (the "License");
% you may not use this file except in compliance with the License.
% You may obtain a copy of the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS,
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
% See the License for the specific language governing permissions and
% limitations under the License.
%
-include(sigar).
main(_) ->
{ok, S} = sigar:start(),
case sigar:loadavg(S) of
{ok, Avg} ->
lists:map(
fun(A) ->
io:format("~w% ", [A]) end,
Avg);
{error, Err} ->
Err
end,
io:format("~n"),
sigar:stop(S).

View File

@ -1,31 +0,0 @@
#!/usr/bin/env escript
%
% Copyright (c) 2009 SpringSource, Inc.
%
% Licensed under the Apache License, Version 2.0 (the "License");
% you may not use this file except in compliance with the License.
% You may obtain a copy of the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS,
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
% See the License for the specific language governing permissions and
% limitations under the License.
%
-include(sigar).
main(_) ->
{ok, S} = sigar:start(),
{ok, List} = sigar:who_list(S),
lists:map(
fun(Who) ->
lists:map(
fun(K) ->
io:format("~s\t", [sigar:get_value(K, Who)]) end,
[user, device, host]),
io:format("~n")
end, List),
sigar:stop(S).

View File

@ -1 +0,0 @@
*.so

View File

@ -1,2 +0,0 @@
*.c
*.hrl

View File

@ -1,11 +0,0 @@
ERLC=erlc
EBIN=../ebin
INCLUDE=../include
EFLAGS=-I ${INCLUDE} -o ${EBIN}
SRCS=`ls *.erl`
all:
${ERLC} ${EFLAGS} ${SRCS}
clean:
rm -rf ${EBIN}/*.beam

View File

@ -1,108 +0,0 @@
%
% Copyright (c) 2009 SpringSource, Inc.
% Copyright (c) 2010 VMware, Inc.
%
% Licensed under the Apache License, Version 2.0 (the "License");
% you may not use this file except in compliance with the License.
% You may obtain a copy of the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS,
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
% See the License for the specific language governing permissions and
% limitations under the License.
%
-module(sigar).
% generated by SigarWrapper.pm
-include("../priv/gen/sigar.hrl").
-export([start/0, stop/1, get_value/2]).
% handrolled wrappers
-export([loadavg/1,
net_connection_list/2,
net_interface_list/1,
net_route_list/1,
file_system_list/1,
cpu_info_list/1,
arp_list/1,
who_list/1]).
-define(NETCONN_CLIENT, 0x01).
-define(NETCONN_SERVER, 0x02).
-define(SIGAR_NETCONN_TCP, 0x10).
-define(SIGAR_NETCONN_UDP, 0x20).
-define(SIGAR_NETCONN_RAW, 0x40).
-define(SIGAR_NETCONN_UNIX, 0x80).
start() ->
case load_driver() of
ok ->
S = open_port({spawn, 'sigar_drv'}, [binary]),
{ok, {sigar, S}};
{error, Err} ->
Msg = erl_ddll:format_error(Err),
{error, Msg}
end.
% handrolled wrappers
loadavg({sigar, S}) ->
do_command(S, ?LOADAVG).
net_connection_list({sigar, S}, F) ->
do_command(S, ?NET_CONNECTION_LIST, F).
net_interface_list({sigar, S}) ->
do_command(S, ?NET_INTERFACE_LIST).
net_route_list({sigar, S}) ->
do_command(S, ?NET_ROUTE_LIST).
file_system_list({sigar, S}) ->
do_command(S, ?FILE_SYSTEM_LIST).
cpu_info_list({sigar, S}) ->
do_command(S, ?CPU_INFO_LIST).
arp_list({sigar, S}) ->
do_command(S, ?ARP_LIST).
who_list({sigar, S}) ->
do_command(S, ?WHO_LIST).
% generated by SigarWrapper.pm
-include("../priv/gen/sigar_gen.hrl").
% XXX must be a better way
get_value(Key, List) ->
case lists:keysearch(Key,1,List) of
false ->
1;
{ value, {Key, N} } ->
N
end.
stop({sigar, S}) ->
unlink(S),
port_close(S).
load_driver() ->
Dir = filename:join([filename:dirname(code:which(sigar)), "..", "priv"]),
erl_ddll:load(Dir, "sigar_drv").
do_command(S, C) ->
port_command(S, [C]),
receive
{S, {data, Bin}} -> binary_to_term(Bin)
end.
do_command(S, C, A) ->
port_command(S, [C, A]),
receive
{S, {data, Bin}} -> binary_to_term(Bin)
end.

View File

@ -3,10 +3,11 @@
<classpathentry kind="src" path="build/src"/> <classpathentry kind="src" path="build/src"/>
<classpathentry kind="src" path="hyperic_jni/src"/> <classpathentry kind="src" path="hyperic_jni/src"/>
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry kind="var" path="ANT_HOME/lib/ant.jar"/> <classpathentry kind="lib" path="lib/junit.jar"/>
<classpathentry kind="var" path="ANT_HOME/lib/junit.jar"/>
<classpathentry kind="lib" path="hyperic_jni/lib/cpptasks.jar"/> <classpathentry kind="lib" path="hyperic_jni/lib/cpptasks.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/log4j.jar"/> <classpathentry kind="lib" path="lib/log4j.jar"/>
<classpathentry kind="lib" path="lib/mx4j-jmx.jar"/>
<classpathentry kind="lib" path="lib/ant.jar"/>
<classpathentry kind="output" path="build/classes"/> <classpathentry kind="output" path="build/classes"/>
</classpath> </classpath>

View File

@ -4,7 +4,7 @@
<project name="Sigar" default="build" basedir="."> <project name="Sigar" default="build" basedir=".">
<property file="../../version.properties"/> <property file="version.properties"/>
<property name="sigar.version" <property name="sigar.version"
value="${version.major}.${version.minor}.${version.maint}"/> value="${version.major}.${version.minor}.${version.maint}"/>
@ -14,7 +14,6 @@
<property name="jni.define.name" value="SIGAR"/> <property name="jni.define.name" value="SIGAR"/>
<property name="sigar-bin" location="sigar-bin"/> <property name="sigar-bin" location="sigar-bin"/>
<property name="sigar-bin-dir" location="${sigar-bin}"/> <property name="sigar-bin-dir" location="${sigar-bin}"/>
<property name="jni.git" location="../../.git"/>
<property name="jni.bin" location="${sigar-bin}"/> <property name="jni.bin" location="${sigar-bin}"/>
<property name="jni.source.dir" location="../.."/> <property name="jni.source.dir" location="../.."/>
<property name="jni.src.java" value="hyperic_jni/src"/> <property name="jni.src.java" value="hyperic_jni/src"/>
@ -56,7 +55,6 @@
<path id="alljars"> <path id="alljars">
<path refid="libjars"/> <path refid="libjars"/>
<fileset dir="${sigar-bin}/lib" includes="${sigar.jar}"/> <fileset dir="${sigar-bin}/lib" includes="${sigar.jar}"/>
<fileset dir="${ant.library.dir}" includes="junit*.jar"/>
</path> </path>
<target name="javadoc_check"> <target name="javadoc_check">
@ -85,26 +83,21 @@
doctitle="Sigar"> doctitle="Sigar">
<group title="Sigar" packages="org.hyperic.sigar" /> <group title="Sigar" packages="org.hyperic.sigar" />
<classpath refid="libjars"/> <classpath refid="libjars"/>
<classpath><path path="${ant.library.dir}/ant.jar"/></classpath> <classpath><path path="${env.ANT_HOME}/lib/ant.jar"/></classpath>
<bottom>Copyright &#169; ${copyright.year} <![CDATA[<a target="_top" href="http://www.hyperic.com/">Hyperic</a>]]>. All Rights Reserved.</bottom> <bottom>Copyright &#169; ${copyright.year} <![CDATA[<a target="_top" href="http://www.hyperic.com/">Hyperic</a>]]>. All Rights Reserved.</bottom>
</javadoc> </javadoc>
</target> </target>
<target name="compile"> <target name="compile">
<mkdir dir="${build}/classes"/> <mkdir dir="${build}/classes"/>
<available classname="junit.framework.TestCase" property="junit.present">
<classpath refid="alljars"/>
</available>
<javac destdir="${build}/classes" <javac destdir="${build}/classes"
source="1.4" target="1.4" source="1.4" target="1.4"
sourcepath=""
debug="true" debug="true"
classpathref="libjars"> classpathref="libjars">
<src path="${src}"/> <src path="${src}"/>
<src path="${build}/src"/> <src path="${build}/src"/>
<src path="${jni.src.java}"/> <src path="${jni.src.java}"/>
<include name="**/*.java"/> <include name="**/*.java"/>
<exclude name="**/test/*.java" unless="junit.present"/>
</javac> </javac>
</target> </target>
@ -123,7 +116,7 @@
<replace file="${version.tofile}"> <replace file="${version.tofile}">
<replacefilter token="@@BUILD_DATE@@" value="${BUILD_DATE}"/> <replacefilter token="@@BUILD_DATE@@" value="${BUILD_DATE}"/>
<replacefilter token="@@VERSION_STRING@@" value="${sigar.version}.${version.build}"/> <replacefilter token="@@VERSION_STRING@@" value="${sigar.version}.${version.build}"/>
<replacefilter token="@@SCM_REVISION@@" value="${jni.scmrev}"/> <replacefilter token="@@SCM_REVISION@@" value="${sigar.scmrev}"/>
<replacefilter token="@@ARCHNAME@@" value="${jni.libarch}"/> <replacefilter token="@@ARCHNAME@@" value="${jni.libarch}"/>
<replacefilter token="@@ARCHLIB@@" value="${jni.libname.full}"/> <replacefilter token="@@ARCHLIB@@" value="${jni.libname.full}"/>
<replacefilter token="@@BINNAME@@" value="${jni.project.archname}"/> <replacefilter token="@@BINNAME@@" value="${jni.project.archname}"/>
@ -135,16 +128,63 @@
</replace> </replace>
</target> </target>
<target name="sigar-version"> <target name="check-svn">
<condition property="svn.available">
<and>
<available file=".svn" type="dir"/>
<available file="svn" type="file">
<filepath>
<pathelement path="${env.PATH}"/>
</filepath>
</available>
</and>
</condition>
</target>
<target name="svn-revision" if="svn.available">
<exec executable="svnversion" dir="."
outputproperty="sigar.scmrev"
failifexecutionfails="false">
<arg value="."/>
</exec>
<echo message="SIGAR svn revision #${sigar.scmrev}"/>
</target>
<target name="check-git">
<condition property="git.available">
<and>
<available file="../../.git" type="dir"/>
<available file="git" type="file">
<filepath>
<pathelement path="${env.PATH}"/>
</filepath>
</available>
</and>
</condition>
</target>
<target name="git-revision" if="git.available">
<exec executable="git" dir="."
outputproperty="sigar.scmrev"
failifexecutionfails="false">
<arg value="rev-parse"/>
<arg value="--short"/>
<arg value="HEAD"/>
</exec>
<echo message="SIGAR git revision #${sigar.scmrev}"/>
</target>
<target name="sigar-version" depends="check-svn,svn-revision,check-git,git-revision">
<tstamp> <tstamp>
<format property="BUILD_DATE" pattern="MM/dd/yyyy hh:mm aa"/> <format property="BUILD_DATE" pattern="MM/dd/yyyy hh:mm aa"/>
</tstamp> </tstamp>
<echo message="SIGAR git revision ${jni.scmrev}"/> <!-- in the case of release source builds -->
<property name="sigar.scmrev" value="exported"/>
<antcall target="version-file"> <antcall target="version-file">
<param name="version.file" <param name="version.file"
value="src/org/hyperic/sigar/Version.java"/> value="src/org/hyperic/sigar/SigarVersion.java"/>
</antcall> </antcall>
<antcall target="version-file"> <antcall target="version-file">
@ -156,6 +196,15 @@
value="${build}/src/sigar_version.c"/> value="${build}/src/sigar_version.c"/>
</antcall> </antcall>
<antcall target="version-file">
<param name="version.file.srcdir"
value="../.."/>
<param name="version.file"
value="src/os/netware/sigar.def"/>
<param name="version.tofile"
value="${build}/src/sigar.def"/>
</antcall>
<antcall target="version-file"> <antcall target="version-file">
<param name="version.file.srcdir" <param name="version.file.srcdir"
value="../.."/> value="../.."/>
@ -210,7 +259,6 @@
<include name="src/*.c"/> <include name="src/*.c"/>
<exclude name="src/sigar_main.c"/> <exclude name="src/sigar_main.c"/>
<include name="src/os/${jni.src}/*.c"/> <include name="src/os/${jni.src}/*.c"/>
<include name="src/os/${jni.src}/*.cpp"/>
<include name="bindings/java/src/jni/*.c"/> <include name="bindings/java/src/jni/*.c"/>
<include name="bindings/java/src/${win32.jni}/*.cpp"/> <include name="bindings/java/src/${win32.jni}/*.cpp"/>
<include name="bindings/java/src/${win32.jni}/*.c"/> <include name="bindings/java/src/${win32.jni}/*.c"/>
@ -242,6 +290,12 @@
<condition property="jni.libset.libs" value="odm,cfg,perfstat,pthreads"> <condition property="jni.libset.libs" value="odm,cfg,perfstat,pthreads">
<isset property="aix"/> <isset property="aix"/>
</condition> </condition>
<copy toDir="${sigar-bin}/lib">
<fileset dir="lib">
<include name="pdh.dll"/>
</fileset>
</copy>
</target> </target>
<target name="copy-includes"> <target name="copy-includes">
@ -346,11 +400,9 @@
<arg value="version"/> <arg value="version"/>
</java> </java>
<property name="junit.mx" value="-Dcom.sun.management.jmxremote"/>
<junit printsummary="yes" fork="yes" <junit printsummary="yes" fork="yes"
haltonfailure="yes" showoutput="true"> haltonfailure="yes" showoutput="true">
<jvmarg line="${junit.args} ${junit.mx}"/> <jvmarg line="${junit.args}"/>
<classpath refid="alljars"/> <classpath refid="alljars"/>
<formatter type="xml"/> <formatter type="xml"/>
@ -410,6 +462,7 @@
<include name="lib/*.lib"/> <include name="lib/*.lib"/>
</fileset> </fileset>
<fileset dir="."> <fileset dir=".">
<include name="lib/junit.jar"/>
<include name="lib/log4j.jar"/> <include name="lib/log4j.jar"/>
</fileset> </fileset>
</copy> </copy>
@ -478,10 +531,10 @@
<target name="dist-common" depends="javadoc,dist-bindings"> <target name="dist-common" depends="javadoc,dist-bindings">
<copy toDir="${dist}" overwrite="true"> <copy toDir="${dist}" overwrite="true">
<fileset dir="../.."> <fileset dir="../..">
<include name="AUTHORS"/>
<include name="README"/> <include name="README"/>
<include name="LICENSE"/> <include name="COPYING"/>
<include name="NOTICE"/> <include name="LICENSES"/>
<include name="EXCEPTIONS"/>
<include name="ChangeLog"/> <include name="ChangeLog"/>
</fileset> </fileset>
</copy> </copy>
@ -499,7 +552,6 @@
<copy toDir="${dist.src}"> <copy toDir="${dist.src}">
<fileset dir="../.."> <fileset dir="../..">
<include name="version.properties"/>
<include name="include/*.h"/> <include name="include/*.h"/>
<include name="src/**/*.h"/> <include name="src/**/*.h"/>
<include name="src/**/*.c"/> <include name="src/**/*.c"/>
@ -508,10 +560,10 @@
<include name="bindings/java/**/*.java"/> <include name="bindings/java/**/*.java"/>
<include name="bindings/java/**/*.java.in"/> <include name="bindings/java/**/*.java.in"/>
<include name="bindings/java/**/*.c"/> <include name="bindings/java/**/*.c"/>
<include name="bindings/java/**/*.cpp"/>
<include name="bindings/java/**/*.h"/> <include name="bindings/java/**/*.h"/>
<include name="bindings/java/**/*.pl"/> <include name="bindings/java/**/*.pl"/>
<include name="bindings/java/**/build.xml"/> <include name="bindings/java/**/build.xml"/>
<include name="bindings/java/version.properties"/>
<include name="bindings/java/.classpath"/> <include name="bindings/java/.classpath"/>
<include name="bindings/java/.project"/> <include name="bindings/java/.project"/>
<include name="bindings/java/.sigar_shellrc"/> <include name="bindings/java/.sigar_shellrc"/>

View File

@ -1,19 +1,3 @@
/*
* Copyright (c) 2006 Hyperic, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.hyperic.sigar.*; import org.hyperic.sigar.*;
/* /*

View File

@ -1,19 +1,3 @@
/*
* Copyright (c) 2006 Hyperic, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import org.hyperic.sigar.win32.Service; import org.hyperic.sigar.win32.Service;

View File

@ -1,21 +1,19 @@
<!-- <!--
Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
This file is part of SIGAR.
Copyright (c) 2009 Hyperic, Inc. SIGAR is free software; you can redistribute it and/or modify
Copyright (c) 2009 SpringSource, Inc. it under the terms version 2 of the GNU General Public License as
Copyright (c) 2009-2010 VMware, Inc. published by the Free Software Foundation. This program is distributed
in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
Licensed under the Apache License, Version 2.0 (the "License"); even the implied warranty of MERCHANTABILITY or FITNESS FOR A
you may not use this file except in compliance with the License. PARTICULAR PURPOSE. See the GNU General Public License for more
You may obtain a copy of the License at details.
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
You 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.
--> -->
<property environment="env"/> <property environment="env"/>
@ -27,6 +25,8 @@
<property name="jni.src.java" value="src"/> <property name="jni.src.java" value="src"/>
<property name="jni.libprefix" value="java"/> <property name="jni.libprefix" value="java"/>
<property name="jni.libversion" value=""/> <property name="jni.libversion" value=""/>
<property name="uni.sdk.version" value="4u"/>
<property name="osx.min" value="-mmacosx-version-min=10.3"/>
<property name="cpptasks.jar" location="lib/cpptasks.jar"/> <property name="cpptasks.jar" location="lib/cpptasks.jar"/>
@ -56,6 +56,15 @@
<condition property="jni.javahome" value="${env.JAVA_HOME}"> <condition property="jni.javahome" value="${env.JAVA_HOME}">
<isset property="env.JAVA_HOME"/> <isset property="env.JAVA_HOME"/>
</condition> </condition>
<condition property="jni.javahome" value="${java.home}">
<not>
<isset property="jni.javahome"/>
</not>
</condition>
<echo>java.home=${jni.javahome}</echo>
<checksum file="${jni.javahome}/include/jni.h" property="jni.md5"/>
<condition property="linux"> <condition property="linux">
<equals arg1="${os.name}" arg2="Linux"/> <equals arg1="${os.name}" arg2="Linux"/>
@ -173,10 +182,6 @@
<libarch/> <libarch/>
<echo>java.home=${jni.javahome}</echo>
<checksum file="${jni.javahome}/include/jni.h" property="jni.md5"/>
<property name="jni.project.archname" <property name="jni.project.archname"
value="${project.name}-${jni.libarch}"/> value="${project.name}-${jni.libarch}"/>
@ -190,6 +195,11 @@
<property name="jni.objdir" value="${build}/obj/${jni.libarch}"/> <property name="jni.objdir" value="${build}/obj/${jni.libarch}"/>
<condition property="uni.sdk"
value="/Developer/SDKs/MacOSX10.${uni.sdk.version}.sdk">
<istrue value="${darwin}"/>
</condition>
<condition property="jni.cc" value="uni-cc"> <condition property="jni.cc" value="uni-cc">
<isset property="darwin"/> <isset property="darwin"/>
</condition> </condition>
@ -272,7 +282,6 @@
<!-- HPUX --> <!-- HPUX -->
<compiler name="hp" if="hpux"> <compiler name="hp" if="hpux">
<compilerarg value="+Z"/> <compilerarg value="+Z"/>
<compilerarg value="+DD64" if="jni.arch64"/>
<defineset> <defineset>
<define name="${jni.define.name}_HPUX"/> <define name="${jni.define.name}_HPUX"/>
@ -354,7 +363,9 @@
<compilerarg value="${uni.sdk}"/> <compilerarg value="${uni.sdk}"/>
<compilerarg value="-arch"/> <compilerarg value="-arch"/>
<compilerarg value="${uni.arch}"/> <compilerarg value="${uni.arch}"/>
<compilerarg value="-mmacosx-version-min=${osx.min}"/> <compilerarg value="${osx.min}"/>
<sysincludepath location="/Developer/Headers/FlatCarbon"/>
<defineset> <defineset>
<define name="DARWIN"/> <define name="DARWIN"/>
@ -367,7 +378,7 @@
<linkerarg value="-Wl,-syslibroot,${uni.sdk}"/> <linkerarg value="-Wl,-syslibroot,${uni.sdk}"/>
<linkerarg value="-arch"/> <linkerarg value="-arch"/>
<linkerarg value="${uni.arch}"/> <linkerarg value="${uni.arch}"/>
<linkerarg value="-mmacosx-version-min=${osx.min}"/> <linkerarg value="${osx.min}"/>
<!-- for Gestalt() --> <!-- for Gestalt() -->
<linkerarg value="-framework"/> <linkerarg value="-framework"/>

View File

@ -1 +0,0 @@
cpptasks.jar from http://github.com/dougm/ant-contrib-cpptasks

View File

@ -0,0 +1,22 @@
cpptasks.pat - provides support for HP cc and AIX xlc_r
the classes listed below are copy-n-pastes from existing cpptasks
classes, simply changed program names, flags, etc. the HP classes
were submitted as a patch to ant-contrib-developers on 10/09/2002,
to which there was no response, so have not bothered to submit the aix
patch.
SubsystemEnum patch is for the osf1 javac (aka tru64).
was throwing IllegalAccessError. why clone a final String[] anyhow??
CUtil patch is for jdk 1.3 (StringBuffer.indexOf is 1.4+)
GccLinker patch adds -arch to known flags for building universal binaries
added | derived from
--------------------------
HPCompiler | aCCCompiler
HPLinker | aCCLinker
XlcCompiler | VisualAgeCCompiler
XlcLinker | VisualAgeLinker
cpptasks.pat applies to:
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ant-contrib \
co -D"2006/04/28 15:00:00" cpptasks

View File

@ -0,0 +1,696 @@
Index: src/net/sf/antcontrib/cpptasks/CUtil.java
===================================================================
RCS file: /cvsroot/ant-contrib/cpptasks/src/net/sf/antcontrib/cpptasks/CUtil.java,v
retrieving revision 1.28
diff -u -r1.28 CUtil.java
--- src/net/sf/antcontrib/cpptasks/CUtil.java 17 Mar 2006 16:38:12 -0000 1.28
+++ src/net/sf/antcontrib/cpptasks/CUtil.java 29 Apr 2006 02:35:28 -0000
@@ -438,19 +438,19 @@
StringBuffer buf = new StringBuffer (attrValue);
int quotePos;
- for (quotePos = -1; (quotePos = buf.indexOf("\"", quotePos + 1)) >= 0;) {
+ for (quotePos = -1; (quotePos = buf.toString().indexOf("\"", quotePos + 1)) >= 0;) {
buf.deleteCharAt(quotePos);
buf.insert (quotePos, "&quot;");
quotePos += 5;
}
- for (quotePos = -1; (quotePos = buf.indexOf("<", quotePos + 1)) >= 0;) {
+ for (quotePos = -1; (quotePos = buf.toString().indexOf("<", quotePos + 1)) >= 0;) {
buf.deleteCharAt(quotePos);
buf.insert (quotePos, "&lt;");
quotePos += 3;
}
- for (quotePos = -1; (quotePos = buf.indexOf(">", quotePos + 1)) >= 0;) {
+ for (quotePos = -1; (quotePos = buf.toString().indexOf(">", quotePos + 1)) >= 0;) {
buf.deleteCharAt(quotePos);
buf.insert (quotePos, "&gt;");
quotePos += 3;
Index: src/net/sf/antcontrib/cpptasks/CompilerEnum.java
===================================================================
RCS file: /cvsroot/ant-contrib/cpptasks/src/net/sf/antcontrib/cpptasks/CompilerEnum.java,v
retrieving revision 1.18
diff -u -r1.18 CompilerEnum.java
--- src/net/sf/antcontrib/cpptasks/CompilerEnum.java 8 Jul 2004 22:30:53 -0000 1.18
+++ src/net/sf/antcontrib/cpptasks/CompilerEnum.java 29 Apr 2006 02:35:28 -0000
@@ -25,7 +25,9 @@
import net.sf.antcontrib.cpptasks.devstudio.DevStudioResourceCompiler;
import net.sf.antcontrib.cpptasks.gcc.GccCCompiler;
import net.sf.antcontrib.cpptasks.hp.aCCCompiler;
+import net.sf.antcontrib.cpptasks.hp.HPCompiler;
import net.sf.antcontrib.cpptasks.ibm.VisualAgeCCompiler;
+import net.sf.antcontrib.cpptasks.ibm.XlcCompiler;
import net.sf.antcontrib.cpptasks.intel.IntelLinux32CCompiler;
import net.sf.antcontrib.cpptasks.intel.IntelLinux64CCompiler;
import net.sf.antcontrib.cpptasks.intel.IntelWin32CCompiler;
@@ -205,6 +207,8 @@
new ProcessorEnumValue("armcpp", ADSCCompiler.getArmCpp()),
new ProcessorEnumValue("tcc", ADSCCompiler.getThumbCC()),
new ProcessorEnumValue("tcpp", ADSCCompiler.getThumbCpp()),
+ new ProcessorEnumValue("hp", HPCompiler.getInstance()),
+ new ProcessorEnumValue("xlc_r", XlcCompiler.getInstance()),
// GCC Cross Compilers
new ProcessorEnumValue(
"sparc-sun-solaris2-gcc",
Index: src/net/sf/antcontrib/cpptasks/LinkerEnum.java
===================================================================
RCS file: /cvsroot/ant-contrib/cpptasks/src/net/sf/antcontrib/cpptasks/LinkerEnum.java,v
retrieving revision 1.16
diff -u -r1.16 LinkerEnum.java
--- src/net/sf/antcontrib/cpptasks/LinkerEnum.java 8 Jul 2004 22:30:53 -0000 1.16
+++ src/net/sf/antcontrib/cpptasks/LinkerEnum.java 29 Apr 2006 02:35:28 -0000
@@ -25,7 +25,9 @@
import net.sf.antcontrib.cpptasks.gcc.GppLinker;
import net.sf.antcontrib.cpptasks.gcc.LdLinker;
import net.sf.antcontrib.cpptasks.hp.aCCLinker;
+import net.sf.antcontrib.cpptasks.hp.HPLinker;
import net.sf.antcontrib.cpptasks.ibm.VisualAgeLinker;
+import net.sf.antcontrib.cpptasks.ibm.XlcLinker;
import net.sf.antcontrib.cpptasks.intel.IntelLinux32Linker;
import net.sf.antcontrib.cpptasks.intel.IntelLinux64Linker;
import net.sf.antcontrib.cpptasks.intel.IntelWin32Linker;
@@ -72,6 +74,8 @@
new ProcessorEnumValue("armcpp", ADSLinker.getInstance()),
new ProcessorEnumValue("tcc", ADSLinker.getInstance()),
new ProcessorEnumValue("tcpp", ADSLinker.getInstance()),
+ new ProcessorEnumValue("hp", HPLinker.getInstance()),
+ new ProcessorEnumValue("xlc_r", XlcLinker.getInstance()),
// gcc cross compilers
new ProcessorEnumValue(
"sparc-sun-solaris2-gcc",
Index: src/net/sf/antcontrib/cpptasks/SubsystemEnum.java
===================================================================
RCS file: /cvsroot/ant-contrib/cpptasks/src/net/sf/antcontrib/cpptasks/SubsystemEnum.java,v
retrieving revision 1.7
diff -u -r1.7 SubsystemEnum.java
--- src/net/sf/antcontrib/cpptasks/SubsystemEnum.java 28 Feb 2004 20:04:02 -0000 1.7
+++ src/net/sf/antcontrib/cpptasks/SubsystemEnum.java 29 Apr 2006 02:35:28 -0000
@@ -29,6 +29,6 @@
setValue("gui");
}
public String[] getValues() {
- return (String[]) values.clone();
+ return values;
}
}
Index: src/net/sf/antcontrib/cpptasks/gcc/GccLinker.java
===================================================================
RCS file:
/cvsroot/ant-contrib/cpptasks/src/net/sf/antcontrib/cpptasks/gcc/GccLinker.java,v
retrieving revision 1.32
diff -u -r1.32 GccLinker.java
--- src/net/sf/antcontrib/cpptasks/gcc/GccLinker.java 28 Feb 2004
20:01:15 -0000 1.32
+++ src/net/sf/antcontrib/cpptasks/gcc/GccLinker.java 29 Apr 2006
17:27:50 -0000
@@ -35,7 +35,7 @@
private static String[] linkerOptions = new String[]{"-bundle",
"-dynamiclib", "-nostartfiles", "-nostdlib", "-prebind",
"-s",
"-static", "-shared", "-symbolic", "-Xlinker",
- "--export-all-symbols", "-static-libgcc",};
+ "--export-all-symbols", "-static-libgcc", "-arch"};
private static final GccLinker dllLinker = new GccLinker("gcc",
objFiles,
discardFiles, "lib", ".so", false, new GccLinker("gcc",
objFiles,
discardFiles, "lib", ".so", true, null));
--- /dev/null 2006-04-28 19:36:02.000000000 -0700
+++ src/net/sf/antcontrib/cpptasks/hp/HPCompiler.java 2006-04-28 17:08:22.000000000 -0700
@@ -0,0 +1,161 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Ant-Contrib project. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Ant", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package net.sf.antcontrib.cpptasks.hp;
+
+import java.io.File;
+import java.util.Vector;
+
+import net.sf.antcontrib.cpptasks.CUtil;
+import net.sf.antcontrib.cpptasks.compiler.LinkType;
+import net.sf.antcontrib.cpptasks.compiler.Linker;
+import net.sf.antcontrib.cpptasks.gcc.GccCompatibleCCompiler;
+import org.apache.tools.ant.types.Environment;
+
+/**
+ * Adapter for the HP compiler
+ *
+ * @author Curt Arnold
+ */
+public final class HPCompiler extends GccCompatibleCCompiler {
+
+ private String identifier;
+ private File[] includePath;
+ private static final HPCompiler instance =
+ new HPCompiler("cc", false, null);
+
+ /**
+ * Private constructor. Use GccCCompiler.getInstance() to get
+ * singleton instance of this class.
+ */
+ private HPCompiler(
+ String command,
+ boolean newEnvironment,
+ Environment env) {
+ super(command, "-help", false, null, newEnvironment, env);
+ }
+
+ public int getMaximumCommandLength() {
+ return Integer.MAX_VALUE;
+ }
+
+ /**
+ * Gets singleton instance of this class
+ */
+ public static HPCompiler getInstance() {
+ return instance;
+ }
+
+ public File[] getEnvironmentIncludePath() {
+ if (includePath == null) {
+ File ccLoc = CUtil.getExecutableLocation("cc");
+ if (ccLoc != null) {
+ File compilerIncludeDir =
+ new File(new File(ccLoc, "../include").getAbsolutePath());
+ if (compilerIncludeDir.exists()) {
+ includePath = new File[2];
+ includePath[0] = compilerIncludeDir;
+ }
+ }
+ if (includePath == null) {
+ includePath = new File[1];
+ }
+ includePath[includePath.length - 1] = new File("/usr/include");
+ }
+ return includePath;
+ }
+
+ public void addImpliedArgs(
+ Vector args,
+ boolean debug,
+ boolean multithreaded,
+ boolean exceptions,
+ LinkType linkType) {
+ args.addElement("-c");
+ if (debug) {
+ args.addElement("-g");
+ }
+ /*
+ if (multithreaded) {
+ args.addElement("-mt");
+ }
+ */
+ if (linkType.isSharedLibrary()) {
+ args.addElement("+z");
+ }
+ }
+
+ public void addWarningSwitch(Vector args, int level) {
+ switch (level) {
+ case 0 :
+ args.addElement("-w");
+ break;
+
+ case 1 :
+ case 2 :
+ args.addElement("+w");
+ break;
+ /*
+ case 3:
+ case 4:
+ case 5:
+ args.addElement("+w2");
+ break;
+ */
+ }
+ }
+
+ public Linker getLinker(LinkType linkType) {
+ return HPLinker.getInstance().getLinker(linkType);
+ }
+}
--- /dev/null 2006-04-28 19:36:02.000000000 -0700
+++ src/net/sf/antcontrib/cpptasks/hp/HPLinker.java 2006-04-28 17:08:22.000000000 -0700
@@ -0,0 +1,153 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Ant-Contrib project. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Ant", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package net.sf.antcontrib.cpptasks.hp;
+
+import java.io.File;
+import java.util.Vector;
+
+import net.sf.antcontrib.cpptasks.CUtil;
+import net.sf.antcontrib.cpptasks.compiler.LinkType;
+import net.sf.antcontrib.cpptasks.compiler.Linker;
+import net.sf.antcontrib.cpptasks.gcc.AbstractLdLinker;
+
+/**
+ * Adapter for HP linker
+ *
+ * @author Curt Arnold
+ */
+public final class HPLinker extends AbstractLdLinker
+{
+ private static final String[] objFiles = new String[]
+ { ".o", ".a", ".lib", ".dll", ".so", ".sl" };
+ private static final String[] discardFiles = new String[0];
+
+ private static final HPLinker instance =
+ new HPLinker("ld", objFiles, discardFiles, "", "");
+ private static final HPLinker dllLinker =
+ new HPLinker("ld", objFiles, discardFiles, "lib", ".sl");
+ private static final HPLinker arLinker =
+ new HPLinker("ld", objFiles, discardFiles, "", ".a");
+
+ private File[] libDirs;
+
+ private HPLinker(String command, String[] extensions,
+ String[] ignoredExtensions, String outputPrefix,
+ String outputSuffix) {
+ super(command, "-help", extensions, ignoredExtensions,
+ outputPrefix, outputSuffix,false,null);
+ }
+
+ public static HPLinker getInstance() {
+ return instance;
+ }
+
+ /**
+ * Returns library path.
+ *
+ */
+ public File[] getLibraryPath() {
+ if(libDirs == null) {
+ File CCloc = CUtil.getExecutableLocation("ld");
+ if(CCloc != null) {
+ File compilerLib = new File(
+ new File(CCloc, "../lib").getAbsolutePath());
+ if (compilerLib.exists()) {
+ libDirs = new File[2];
+ libDirs[0] = compilerLib;
+ }
+ }
+ if (libDirs == null) {
+ libDirs = new File[1];
+ }
+ }
+ libDirs[libDirs.length-1] = new File("/usr/lib");
+ return libDirs;
+ }
+
+ public void addImpliedArgs(boolean debug, LinkType linkType, Vector args) {
+/* if(linkType.isStaticRuntime()) {
+ args.addElement("-static");
+ }
+*/
+ if(linkType.isSharedLibrary()) {
+ args.addElement("-b");
+ }
+/*
+ if (linkType.isStaticLibrary()) {
+ args.addElement("-Wl,-noshared");
+ }
+*/
+ }
+
+
+ public Linker getLinker(LinkType type) {
+ if(type.isStaticLibrary()) {
+ return arLinker;
+ }
+ if(type.isSharedLibrary()) {
+ return dllLinker;
+ }
+ return instance;
+ }
+
+ public void addIncremental(boolean incremental, Vector args) {
+ /*
+ if (incremental) {
+ args.addElement("-xidlon");
+ } else {
+ args.addElement("-xidloff");
+ }
+ */
+ }
+}
--- /dev/null 2006-04-28 19:36:02.000000000 -0700
+++ src/net/sf/antcontrib/cpptasks/ibm/XlcCompiler.java 2006-04-28 17:08:22.000000000 -0700
@@ -0,0 +1,138 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Ant-Contrib project. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Ant-Contrib project (http://sourceforge.net/projects/ant-contrib)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "Ant-Contrib"
+ * must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Ant-Contrib"
+ * nor may "Ant-Contrib" appear in their names without prior written
+ * permission of the Ant-Contrib project.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE ANT-CONTRIB PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ */
+package net.sf.antcontrib.cpptasks.ibm;
+
+import java.io.File;
+import java.util.Vector;
+
+import net.sf.antcontrib.cpptasks.compiler.LinkType;
+import net.sf.antcontrib.cpptasks.compiler.Linker;
+import net.sf.antcontrib.cpptasks.gcc.GccCompatibleCCompiler;
+import org.apache.tools.ant.types.Environment;
+
+
+/**
+ * Adapter for the IBM(r) Visual Age(tm) C++ compiler for AIX(tm)
+ *
+ * @author Curt Arnold
+ */
+public final class XlcCompiler extends GccCompatibleCCompiler {
+ private String identifier;
+ private File[] includePath;
+ private static final XlcCompiler instance =
+ new XlcCompiler("xlc_r", false, null);
+
+ /**
+ * Private constructor. Use getInstance() to get
+ * singleton instance of this class.
+ */
+ private XlcCompiler(String command, boolean newEnvironment, Environment env) {
+ super(command, "-help", false, null, newEnvironment, env);
+ }
+
+ public int getMaximumCommandLength() {
+ return Integer.MAX_VALUE;
+ }
+
+ /**
+ * Gets singleton instance of this class
+ */
+ public static XlcCompiler getInstance() {
+ return instance;
+ }
+
+ public void addImpliedArgs(
+ Vector args,
+ boolean debug,
+ boolean multithreaded,
+ boolean exceptions,
+ LinkType linkType) {
+ args.addElement("-c");
+ if (debug) {
+ args.addElement("-g");
+ }
+ if (linkType.isSharedLibrary()) {
+ args.addElement("-fpic");
+ args.addElement("-qmkshrobj");
+
+ }
+ }
+
+ public void addWarningSwitch(Vector args, int level) {
+ switch (level) {
+ case 0 :
+ args.addElement("-w");
+ break;
+
+ case 1 :
+ args.addElement("-qflag=s:s");
+ break;
+
+ case 2 :
+ args.addElement("-qflag=e:e");
+ break;
+
+ case 3 :
+ args.addElement("-qflag=w:w");
+ break;
+
+ case 4 :
+ args.addElement("-qflag=i:i");
+ break;
+
+ case 5 :
+ args.addElement("-qhalt=w:w");
+ break;
+ }
+ }
+
+ public Linker getLinker(LinkType linkType) {
+ return VisualAgeLinker.getInstance().getLinker(linkType);
+ }
+}
--- /dev/null 2006-04-28 19:36:02.000000000 -0700
+++ src/net/sf/antcontrib/cpptasks/ibm/XlcLinker.java 2006-04-28 17:08:22.000000000 -0700
@@ -0,0 +1,112 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Ant-Contrib project. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Ant-Contrib project (http://sourceforge.net/projects/ant-contrib)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "Ant-Contrib"
+ * must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Ant-Contrib"
+ * nor may "Ant-Contrib" appear in their names without prior written
+ * permission of the Ant-Contrib project.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE ANT-CONTRIB PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ */
+package net.sf.antcontrib.cpptasks.ibm;
+
+import java.util.Vector;
+
+import net.sf.antcontrib.cpptasks.compiler.LinkType;
+import net.sf.antcontrib.cpptasks.compiler.Linker;
+import net.sf.antcontrib.cpptasks.gcc.AbstractLdLinker;
+import net.sf.antcontrib.cpptasks.gcc.GccLibrarian;
+
+/**
+ * Adapter for IBM(r) Visual Age(tm) Linker for AIX(tm)
+ *
+ * @author Curt Arnold
+ */
+public final class XlcLinker extends AbstractLdLinker
+{
+ private static final String[] objFiles = new String[]
+ { ".o", ".a", ".lib",".dll", ".so", ".sl"};
+ private static final String[] discardFiles = new String[]
+ { };
+
+ private static final XlcLinker instance =
+ new XlcLinker("ld", objFiles, discardFiles, "", "");
+ private static final XlcLinker dllLinker =
+ new XlcLinker("ld", objFiles, discardFiles, "lib", ".so");
+
+ private XlcLinker(String command, String[] extensions,
+ String[] ignoredExtensions, String outputPrefix,
+ String outputSuffix) {
+ //
+ // just guessing that -? might display something useful
+ //
+ super(command, "-?", extensions, ignoredExtensions,
+ outputPrefix, outputSuffix,false,null);
+ }
+
+ public static XlcLinker getInstance() {
+ return instance;
+ }
+
+ public void addImpliedArgs(boolean debug, LinkType linkType, Vector args) {
+ if(debug) {
+ //args.addElement("-g");
+ }
+ if(linkType.isSharedLibrary()) {
+ args.addElement("-bdynamic");
+ args.addElement("-G");
+ args.addElement("-bnoentry");
+ args.addElement("-bexpall");
+ args.addElement("-lc_r");
+ }
+ }
+
+
+ public Linker getLinker(LinkType type) {
+ if(type.isStaticLibrary()) {
+ return GccLibrarian.getInstance();
+ }
+ if(type.isSharedLibrary()) {
+ return dllLinker;
+ }
+ return instance;
+ }
+}

View File

@ -1,23 +1,24 @@
/* /*
* Copyright (c) 2009 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.jni; package org.hyperic.jni;
import java.io.File; import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.net.URL; import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
@ -316,16 +317,7 @@ public class ArchLoader {
if ((file != null) && if ((file != null) &&
((file = file.getParentFile()) != null)) ((file = file.getParentFile()) != null))
{ {
String dir; String dir = URLDecoder.decode(file.toString());
try {
// Passing UTF-8 according to the recommendation in the URLDecoder.decode JavaDoc.
dir = URLDecoder.decode(file.toString(), "UTF-8");
} catch (UnsupportedEncodingException e) {
String msg = "Unsupported encoding in file name: " + file.toString();
ArchLoaderException archLoaderException = new ArchLoaderException(msg);
archLoaderException.initCause(e);
throw archLoaderException;
}
if (findNativeLibrary(dir, libName)) { if (findNativeLibrary(dir, libName)) {
return dir; return dir;
} }

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2009 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.jni; package org.hyperic.jni;

View File

@ -1,18 +1,19 @@
/* /*
* Copyright (c) 2009 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* Copyright (c) 2009 SpringSource, Inc. * This file is part of SIGAR.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * SIGAR is free software; you can redistribute it and/or modify
* you may not use this file except in compliance with the License. * it under the terms version 2 of the GNU General Public License as
* You may obtain a copy of the License at * published by the Free Software Foundation. This program is distributed
* * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* http://www.apache.org/licenses/LICENSE-2.0 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* * PARTICULAR PURPOSE. See the GNU General Public License for more
* Unless required by applicable law or agreed to in writing, software * details.
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * You should have received a copy of the GNU General Public License
* See the License for the specific language governing permissions and * along with this program; if not, write to the Free Software
* limitations under the License. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.jni; package org.hyperic.jni;
@ -66,9 +67,6 @@ public class ArchName {
} }
else { else {
arch = "pa"; arch = "pa";
if (is64()) {
arch += "64";
}
} }
if (version.indexOf("11") > -1) { if (version.indexOf("11") > -1) {
return arch + "-hpux-11"; return arch + "-hpux-11";

View File

@ -1,30 +1,23 @@
/* /*
* Copyright (c) 2009 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* Copyright (c) 2009 SpringSource, Inc. * This file is part of SIGAR.
* Copyright (c) 2009-2010 VMware, Inc. *
* * SIGAR is free software; you can redistribute it and/or modify
* Licensed under the Apache License, Version 2.0 (the "License"); * it under the terms version 2 of the GNU General Public License as
* you may not use this file except in compliance with the License. * published by the Free Software Foundation. This program is distributed
* You may obtain a copy of the License at * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* http://www.apache.org/licenses/LICENSE-2.0 * PARTICULAR PURPOSE. See the GNU General Public License for more
* * details.
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, * You should have received a copy of the GNU General Public License
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * along with this program; if not, write to the Free Software
* See the License for the specific language governing permissions and * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* limitations under the License. * USA.
*/ */
package org.hyperic.jni; package org.hyperic.jni;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import java.io.Reader;
import java.util.Arrays;
import org.apache.tools.ant.Task; import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildException;
@ -32,7 +25,6 @@ public class ArchNameTask extends Task {
public void execute() throws BuildException { public void execute() throws BuildException {
String osArch = System.getProperty("os.arch"); String osArch = System.getProperty("os.arch");
String osVers = System.getProperty("os.version");
if (getProject().getProperty("jni.dmalloc") != null) { if (getProject().getProperty("jni.dmalloc") != null) {
ArchName.useDmalloc = true; ArchName.useDmalloc = true;
@ -86,127 +78,5 @@ public class ArchNameTask extends Task {
getProject().setProperty("jni.gccm", "-m31"); getProject().setProperty("jni.gccm", "-m31");
} }
} }
if (ArchLoader.IS_DARWIN) {
//default to most recent SDK
//MacOSX10.3.9.sdk, MacOSX10.4u.sdk, MacOSX10.5.sdk,etc.
String sdkRoot = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs";
if (new File(sdkRoot).exists() == false) {
sdkRoot = "/Developer/SDKs";
}
File[] sdks =
new File(sdkRoot).listFiles(new FileFilter() {
public boolean accept(File file) {
String name = file.getName();
return
name.startsWith("MacOSX10.") &&
name.endsWith(".sdk");
}
});
if (sdks != null) {
Arrays.sort(sdks);
String prop = "uni.sdk";
String sdk = getProject().getProperty(prop);
String defaultMin = "10.3";
if (sdk == null) {
int ix = sdks.length-1;
sdk = sdks[ix].getPath();
if ((sdk.indexOf("10.6") != -1) && (ix > 0)) {
sdk = sdks[ix-1].getPath(); //downgrade due to 64-bit ppc issues XXX
defaultMin = "10.5";
}
getProject().setProperty(prop, sdk);
}
String version = osVers.substring(0, 4);
int minorVers = Integer.parseInt(osVers.substring(3,4));
boolean usingLatestSDK = (sdk.indexOf(version) != -1);
System.out.println("Using SDK=" + sdk);
if ((minorVers >= 6) && ArchName.is64() && usingLatestSDK) {
//64-bit 10.6 sdk does not support ppc64
//switch from universal build to i386 only
getProject().setProperty("jni.cc", "jni-cc");
getProject().setProperty("uni.arch", "i386");
System.out.println("Note: SDK version does not support ppc64");
}
prop = "osx.min";
String min = getProject().getProperty(prop);
if (min == null) {
min = defaultMin;
getProject().setProperty(prop, min);
}
System.out.println("Using -mmacosx-version-min=" + min);
}
}
getProject().setProperty("jni.scmrev", getSourceRevision());
//jni.javahome required to find include/jni.h
String home = getProject().getProperty("jni.javahome");
if (home == null) {
home = System.getProperty("java.home");
}
File dir = new File(home);
if (!new File(dir, "include").exists()) {
dir = dir.getParentFile(); //was /jre
}
getProject().setProperty("jni.javahome", dir.getPath());
}
//XXX source rev stuff should be in another task
private String readLine(String filename) {
Reader reader = null;
try {
reader = new FileReader(filename);
return new BufferedReader(reader).readLine();
} catch (Exception e) {
} finally {
if (reader != null) {
try { reader.close(); } catch (Exception e) {}
}
}
return null;
}
private String getSourceRevision() {
final String exported = "exported";
String sha1 = getGitSourceRevision();
if (sha1 == null) {
return exported;
}
else {
return sha1;
}
}
//same as: git rev-parse --short HEAD
//same as: (cd .git && cat HEAD | awk '{print $2}' | xargs cat | cut -b 1-7)
private String getGitSourceRevision() {
String git = getProject().getProperty("jni.git");
if (git == null) {
git = ".git";
}
if (new File(git).exists()) {
String head = readLine(git + "/HEAD");
if (head != null) {
String sha1;
final String refp = "ref: ";
if (head.startsWith(refp)) {
//branch
String ref = head.substring(refp.length()).trim();
sha1 = readLine(git + "/" + ref);
}
else {
//git checkout -f origin/branch-name (no branch)
sha1 = head;
}
return sha1.substring(0, 7);
}
}
return null;
} }
} }

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2009 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.jni; package org.hyperic.jni;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2009 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.jni; package org.hyperic.jni;

BIN
bindings/java/lib/ant.jar Normal file

Binary file not shown.

BIN
bindings/java/lib/junit.jar Normal file

Binary file not shown.

Binary file not shown.

BIN
bindings/java/lib/pdh.dll Executable file

Binary file not shown.

View File

@ -1,19 +1,19 @@
/* /*
* Copyright (c) 2004-2008 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* Copyright (c) 2009 SpringSource, Inc. * This file is part of SIGAR.
* Copyright (c) 2010 VMware, Inc. *
* * SIGAR is free software; you can redistribute it and/or modify
* Licensed under the Apache License, Version 2.0 (the "License"); * it under the terms version 2 of the GNU General Public License as
* you may not use this file except in compliance with the License. * published by the Free Software Foundation. This program is distributed
* You may obtain a copy of the License at * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* http://www.apache.org/licenses/LICENSE-2.0 * PARTICULAR PURPOSE. See the GNU General Public License for more
* * details.
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, * You should have received a copy of the GNU General Public License
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * along with this program; if not, write to the Free Software
* See the License for the specific language governing permissions and * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* limitations under the License. * USA.
*/ */
#include <jni.h> #include <jni.h>
@ -249,7 +249,7 @@ int jsigar_list_init(JNIEnv *env, jsigar_list_t *obj)
obj->obj = JENV->NewObject(env, listclass, listid); obj->obj = JENV->NewObject(env, listclass, listid);
obj->id = addid; obj->id = addid;
return JENV->ExceptionCheck(env) ? !SIGAR_OK : SIGAR_OK; return SIGAR_OK;
} }
int jsigar_list_add(void *data, char *value, int len) int jsigar_list_add(void *data, char *value, int len)
@ -260,7 +260,7 @@ int jsigar_list_add(void *data, char *value, int len)
JENV->CallBooleanMethod(env, obj->obj, obj->id, JENV->CallBooleanMethod(env, obj->obj, obj->id,
JENV->NewStringUTF(env, value)); JENV->NewStringUTF(env, value));
return JENV->ExceptionCheck(env) ? !SIGAR_OK : SIGAR_OK; return SIGAR_OK;
} }
JNIEXPORT jstring SIGAR_JNIx(formatSize) JNIEXPORT jstring SIGAR_JNIx(formatSize)
@ -398,6 +398,9 @@ static jstring jnet_address_to_string(JNIEnv *env, sigar_t *sigar, sigar_net_add
#include "javasigar_generated.c" #include "javasigar_generated.c"
#define SIGAR_ALLOC_OBJECT(name) \
JENV->AllocObject(env, SIGAR_FIND_CLASS(name))
enum { enum {
FS_FIELD_DIRNAME, FS_FIELD_DIRNAME,
FS_FIELD_DEVNAME, FS_FIELD_DEVNAME,
@ -445,7 +448,6 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getFileSystemListNative)
JENV->GetFieldID(env, cls, "type", "I"); JENV->GetFieldID(env, cls, "type", "I");
fsarray = JENV->NewObjectArray(env, fslist.number, cls, 0); fsarray = JENV->NewObjectArray(env, fslist.number, cls, 0);
SIGAR_CHEX;
for (i=0; i<fslist.number; i++) { for (i=0; i<fslist.number; i++) {
sigar_file_system_t *fs = &(fslist.data)[i]; sigar_file_system_t *fs = &(fslist.data)[i];
@ -470,7 +472,6 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getFileSystemListNative)
#endif #endif
fsobj = JENV->AllocObject(env, obj_cls); fsobj = JENV->AllocObject(env, obj_cls);
SIGAR_CHEX;
JENV->SetStringField(env, fsobj, JENV->SetStringField(env, fsobj,
ids[FS_FIELD_DIRNAME], ids[FS_FIELD_DIRNAME],
@ -497,7 +498,6 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getFileSystemListNative)
fs->type); fs->type);
JENV->SetObjectArrayElement(env, fsarray, i, fsobj); JENV->SetObjectArrayElement(env, fsarray, i, fsobj);
SIGAR_CHEX;
} }
sigar_file_system_list_destroy(sigar, &fslist); sigar_file_system_list_destroy(sigar, &fslist);
@ -562,15 +562,12 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getCpuInfoList)
JAVA_SIGAR_INIT_FIELDS_CPUINFO(cls); JAVA_SIGAR_INIT_FIELDS_CPUINFO(cls);
cpuarray = JENV->NewObjectArray(env, cpu_infos.number, cls, 0); cpuarray = JENV->NewObjectArray(env, cpu_infos.number, cls, 0);
SIGAR_CHEX;
for (i=0; i<cpu_infos.number; i++) { for (i=0; i<cpu_infos.number; i++) {
jobject info_obj = JENV->AllocObject(env, cls); jobject info_obj = JENV->AllocObject(env, cls);
SIGAR_CHEX;
JAVA_SIGAR_SET_FIELDS_CPUINFO(cls, info_obj, JAVA_SIGAR_SET_FIELDS_CPUINFO(cls, info_obj,
cpu_infos.data[i]); cpu_infos.data[i]);
JENV->SetObjectArrayElement(env, cpuarray, i, info_obj); JENV->SetObjectArrayElement(env, cpuarray, i, info_obj);
SIGAR_CHEX;
} }
sigar_cpu_info_list_destroy(sigar, &cpu_infos); sigar_cpu_info_list_destroy(sigar, &cpu_infos);
@ -596,15 +593,12 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getCpuListNative)
JAVA_SIGAR_INIT_FIELDS_CPU(cls); JAVA_SIGAR_INIT_FIELDS_CPU(cls);
cpuarray = JENV->NewObjectArray(env, cpulist.number, cls, 0); cpuarray = JENV->NewObjectArray(env, cpulist.number, cls, 0);
SIGAR_CHEX;
for (i=0; i<cpulist.number; i++) { for (i=0; i<cpulist.number; i++) {
jobject info_obj = JENV->AllocObject(env, cls); jobject info_obj = JENV->AllocObject(env, cls);
SIGAR_CHEX;
JAVA_SIGAR_SET_FIELDS_CPU(cls, info_obj, JAVA_SIGAR_SET_FIELDS_CPU(cls, info_obj,
cpulist.data[i]); cpulist.data[i]);
JENV->SetObjectArrayElement(env, cpuarray, i, info_obj); JENV->SetObjectArrayElement(env, cpuarray, i, info_obj);
SIGAR_CHEX;
} }
sigar_cpu_list_destroy(sigar, &cpulist); sigar_cpu_list_destroy(sigar, &cpulist);
@ -641,7 +635,6 @@ JNIEXPORT jlongArray SIGAR_JNIx(getProcList)
} }
procarray = JENV->NewLongArray(env, proclist.number); procarray = JENV->NewLongArray(env, proclist.number);
SIGAR_CHEX;
if (sizeof(jlong) == sizeof(sigar_pid_t)) { if (sizeof(jlong) == sizeof(sigar_pid_t)) {
pids = (jlong *)proclist.data; pids = (jlong *)proclist.data;
@ -683,12 +676,10 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getProcArgs)
} }
argsarray = JENV->NewObjectArray(env, procargs.number, stringclass, 0); argsarray = JENV->NewObjectArray(env, procargs.number, stringclass, 0);
SIGAR_CHEX;
for (i=0; i<procargs.number; i++) { for (i=0; i<procargs.number; i++) {
jstring s = JENV->NewStringUTF(env, procargs.data[i]); jstring s = JENV->NewStringUTF(env, procargs.data[i]);
JENV->SetObjectArrayElement(env, argsarray, i, s); JENV->SetObjectArrayElement(env, argsarray, i, s);
SIGAR_CHEX;
} }
sigar_proc_args_destroy(sigar, &procargs); sigar_proc_args_destroy(sigar, &procargs);
@ -713,7 +704,7 @@ static int jni_env_getall(void *data,
JENV->NewStringUTF(env, key), JENV->NewStringUTF(env, key),
JENV->NewStringUTF(env, val)); JENV->NewStringUTF(env, val));
return JENV->ExceptionCheck(env) ? !SIGAR_OK : SIGAR_OK; return SIGAR_OK;
} }
#define MAP_PUT_SIG \ #define MAP_PUT_SIG \
@ -737,7 +728,6 @@ JNIEXPORT jobject SIGAR_JNI(ProcEnv_getAll)
dSIGAR(NULL); dSIGAR(NULL);
hashmap = JENV->NewObject(env, mapclass, mapid); hashmap = JENV->NewObject(env, mapclass, mapid);
SIGAR_CHEX;
put.env = env; put.env = env;
put.id = putid; put.id = putid;
@ -819,9 +809,7 @@ JNIEXPORT jobject SIGAR_JNIx(getProcModulesNative)
dSIGAR(NULL); dSIGAR(NULL);
if (jsigar_list_init(env, &obj) != SIGAR_OK) { jsigar_list_init(env, &obj);
return NULL; /* Exception thrown */
}
procmods.module_getter = jsigar_list_add; procmods.module_getter = jsigar_list_add;
procmods.data = &obj; procmods.data = &obj;
@ -849,7 +837,6 @@ JNIEXPORT jdoubleArray SIGAR_JNIx(getLoadAverage)
} }
avgarray = JENV->NewDoubleArray(env, 3); avgarray = JENV->NewDoubleArray(env, 3);
SIGAR_CHEX;
JENV->SetDoubleArrayRegion(env, avgarray, 0, JENV->SetDoubleArrayRegion(env, avgarray, 0,
3, loadavg.loadavg); 3, loadavg.loadavg);
@ -875,14 +862,11 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getNetRouteList)
JAVA_SIGAR_INIT_FIELDS_NETROUTE(cls); JAVA_SIGAR_INIT_FIELDS_NETROUTE(cls);
routearray = JENV->NewObjectArray(env, routelist.number, cls, 0); routearray = JENV->NewObjectArray(env, routelist.number, cls, 0);
SIGAR_CHEX;
for (i=0; i<routelist.number; i++) { for (i=0; i<routelist.number; i++) {
jobject obj = JENV->AllocObject(env, cls); jobject obj = JENV->AllocObject(env, cls);
SIGAR_CHEX;
JAVA_SIGAR_SET_FIELDS_NETROUTE(cls, obj, routelist.data[i]); JAVA_SIGAR_SET_FIELDS_NETROUTE(cls, obj, routelist.data[i]);
JENV->SetObjectArrayElement(env, routearray, i, obj); JENV->SetObjectArrayElement(env, routearray, i, obj);
SIGAR_CHEX;
} }
sigar_net_route_list_destroy(sigar, &routelist); sigar_net_route_list_destroy(sigar, &routelist);
@ -898,13 +882,6 @@ JNIEXPORT jstring SIGAR_JNI(NetFlags_getIfFlagsString)
return JENV->NewStringUTF(env, buf); return JENV->NewStringUTF(env, buf);
} }
JNIEXPORT jstring SIGAR_JNI(NetFlags_getScopeString)
(JNIEnv *env, jclass cls, jint scope)
{
const char *buf = sigar_net_scope_to_string(scope);
return JENV->NewStringUTF(env, buf);
}
JNIEXPORT jobjectArray SIGAR_JNIx(getNetConnectionList) JNIEXPORT jobjectArray SIGAR_JNIx(getNetConnectionList)
(JNIEnv *env, jobject sigar_obj, jint flags) (JNIEnv *env, jobject sigar_obj, jint flags)
{ {
@ -925,14 +902,11 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getNetConnectionList)
JAVA_SIGAR_INIT_FIELDS_NETCONNECTION(cls); JAVA_SIGAR_INIT_FIELDS_NETCONNECTION(cls);
connarray = JENV->NewObjectArray(env, connlist.number, cls, 0); connarray = JENV->NewObjectArray(env, connlist.number, cls, 0);
SIGAR_CHEX;
for (i=0; i<connlist.number; i++) { for (i=0; i<connlist.number; i++) {
jobject obj = JENV->AllocObject(env, cls); jobject obj = JENV->AllocObject(env, cls);
SIGAR_CHEX;
JAVA_SIGAR_SET_FIELDS_NETCONNECTION(cls, obj, connlist.data[i]); JAVA_SIGAR_SET_FIELDS_NETCONNECTION(cls, obj, connlist.data[i]);
JENV->SetObjectArrayElement(env, connarray, i, obj); JENV->SetObjectArrayElement(env, connarray, i, obj);
SIGAR_CHEX;
} }
sigar_net_connection_list_destroy(sigar, &connlist); sigar_net_connection_list_destroy(sigar, &connlist);
@ -1009,10 +983,6 @@ JNIEXPORT void SIGAR_JNI(NetStat_stat)
} }
states = JENV->NewIntArray(env, SIGAR_TCP_UNKNOWN); states = JENV->NewIntArray(env, SIGAR_TCP_UNKNOWN);
if (JENV->ExceptionCheck(env)) {
return;
}
JENV->SetIntArrayRegion(env, states, 0, JENV->SetIntArrayRegion(env, states, 0,
SIGAR_TCP_UNKNOWN, SIGAR_TCP_UNKNOWN,
tcp_states); tcp_states);
@ -1068,37 +1038,6 @@ JNIEXPORT jstring SIGAR_JNI(NetConnection_getStateString)
sigar_net_connection_state_get(state)); sigar_net_connection_state_get(state));
} }
JNIEXPORT jobjectArray SIGAR_JNIx(getArpList)
(JNIEnv *env, jobject sigar_obj)
{
int status;
unsigned int i;
sigar_arp_list_t arplist;
jobjectArray arparray;
jclass cls = SIGAR_FIND_CLASS("Arp");
dSIGAR(NULL);
if ((status = sigar_arp_list_get(sigar, &arplist)) != SIGAR_OK) {
sigar_throw_error(env, jsigar, status);
return NULL;
}
JAVA_SIGAR_INIT_FIELDS_ARP(cls);
arparray = JENV->NewObjectArray(env, arplist.number, cls, 0);
for (i=0; i<arplist.number; i++) {
jobject info_obj = JENV->AllocObject(env, cls);
JAVA_SIGAR_SET_FIELDS_ARP(cls, info_obj,
arplist.data[i]);
JENV->SetObjectArrayElement(env, arparray, i, info_obj);
}
sigar_arp_list_destroy(sigar, &arplist);
return arparray;
}
JNIEXPORT jobjectArray SIGAR_JNIx(getWhoList) JNIEXPORT jobjectArray SIGAR_JNIx(getWhoList)
(JNIEnv *env, jobject sigar_obj) (JNIEnv *env, jobject sigar_obj)
{ {
@ -1117,15 +1056,12 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getWhoList)
JAVA_SIGAR_INIT_FIELDS_WHO(cls); JAVA_SIGAR_INIT_FIELDS_WHO(cls);
whoarray = JENV->NewObjectArray(env, wholist.number, cls, 0); whoarray = JENV->NewObjectArray(env, wholist.number, cls, 0);
SIGAR_CHEX;
for (i=0; i<wholist.number; i++) { for (i=0; i<wholist.number; i++) {
jobject info_obj = JENV->AllocObject(env, cls); jobject info_obj = JENV->AllocObject(env, cls);
SIGAR_CHEX;
JAVA_SIGAR_SET_FIELDS_WHO(cls, info_obj, JAVA_SIGAR_SET_FIELDS_WHO(cls, info_obj,
wholist.data[i]); wholist.data[i]);
JENV->SetObjectArrayElement(env, whoarray, i, info_obj); JENV->SetObjectArrayElement(env, whoarray, i, info_obj);
SIGAR_CHEX;
} }
sigar_who_list_destroy(sigar, &wholist); sigar_who_list_destroy(sigar, &wholist);
@ -1222,12 +1158,10 @@ JNIEXPORT jobjectArray SIGAR_JNIx(getNetInterfaceList)
} }
ifarray = JENV->NewObjectArray(env, iflist.number, stringclass, 0); ifarray = JENV->NewObjectArray(env, iflist.number, stringclass, 0);
SIGAR_CHEX;
for (i=0; i<iflist.number; i++) { for (i=0; i<iflist.number; i++) {
jstring s = JENV->NewStringUTF(env, iflist.data[i]); jstring s = JENV->NewStringUTF(env, iflist.data[i]);
JENV->SetObjectArrayElement(env, ifarray, i, s); JENV->SetObjectArrayElement(env, ifarray, i, s);
SIGAR_CHEX;
} }
sigar_net_interface_list_destroy(sigar, &iflist); sigar_net_interface_list_destroy(sigar, &iflist);
@ -1421,7 +1355,6 @@ JNIEXPORT jlongArray SIGAR_JNI(ptql_SigarProcessQuery_find)
} }
procarray = JENV->NewLongArray(env, proclist.number); procarray = JENV->NewLongArray(env, proclist.number);
SIGAR_CHEX;
if (sizeof(jlong) == sizeof(sigar_pid_t)) { if (sizeof(jlong) == sizeof(sigar_pid_t)) {
pids = (jlong *)proclist.data; pids = (jlong *)proclist.data;
@ -1533,7 +1466,7 @@ static int jsigar_getline_completer(char *buffer, int offset, int *pos)
JENV->CallObjectMethod(env, jsigar_completer.obj, JENV->CallObjectMethod(env, jsigar_completer.obj,
jsigar_completer.id, jbuffer); jsigar_completer.id, jbuffer);
if (JENV->ExceptionCheck(env)) { if (JENV->ExceptionOccurred(env)) {
JENV->ExceptionDescribe(env); JENV->ExceptionDescribe(env);
return 0; return 0;
} }
@ -1614,7 +1547,7 @@ static void jsigar_log_impl(sigar_t *sigar, void *data,
log_methods[level], log_methods[level],
"(Ljava/lang/Object;)V"); "(Ljava/lang/Object;)V");
if (JENV->ExceptionCheck(env)) { if (JENV->ExceptionOccurred(env)) {
JENV->ExceptionDescribe(env); JENV->ExceptionDescribe(env);
return; return;
} }

View File

@ -1,18 +1,19 @@
/* /*
* Copyright (c) 2004, 2006, 2008 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* Copyright (c) 2010 VMware, Inc. * This file is part of SIGAR.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * SIGAR is free software; you can redistribute it and/or modify
* you may not use this file except in compliance with the License. * it under the terms version 2 of the GNU General Public License as
* You may obtain a copy of the License at * published by the Free Software Foundation. This program is distributed
* * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* http://www.apache.org/licenses/LICENSE-2.0 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* * PARTICULAR PURPOSE. See the GNU General Public License for more
* Unless required by applicable law or agreed to in writing, software * details.
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * You should have received a copy of the GNU General Public License
* See the License for the specific language governing permissions and * along with this program; if not, write to the Free Software
* limitations under the License. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
#include <jni.h> #include <jni.h>
@ -32,9 +33,6 @@
#define SIGAR_CLASS_SIG(name) \ #define SIGAR_CLASS_SIG(name) \
"L" SIGAR_PACKAGE name ";" "L" SIGAR_PACKAGE name ";"
/* CHeck EXception */
#define SIGAR_CHEX if (JENV->ExceptionCheck(env)) return NULL
typedef struct { typedef struct {
JNIEnv *env; JNIEnv *env;
jobject obj; jobject obj;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the 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 <jni.h> #include <jni.h>

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the 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 "vmcontrol_wrapper.h" #include "vmcontrol_wrapper.h"

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the 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 VMCONTROL_WRAPPER_H #ifndef VMCONTROL_WRAPPER_H

View File

@ -1,18 +1,19 @@
/* /*
* Copyright (c) 2004-2007, 2009 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* Copyright (c) 2009-2010 VMware, Inc. * This file is part of SIGAR.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * SIGAR is free software; you can redistribute it and/or modify
* you may not use this file except in compliance with the License. * it under the terms version 2 of the GNU General Public License as
* You may obtain a copy of the License at * published by the Free Software Foundation. This program is distributed
* * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* http://www.apache.org/licenses/LICENSE-2.0 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* * PARTICULAR PURPOSE. See the GNU General Public License for more
* Unless required by applicable law or agreed to in writing, software * details.
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * You should have received a copy of the GNU General Public License
* See the License for the specific language governing permissions and * along with this program; if not, write to the Free Software
* limitations under the License. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
#ifdef WIN32 #ifdef WIN32
@ -68,7 +69,7 @@ static HANDLE win32_get_pointer(JNIEnv *env, jobject obj)
return h; return h;
} }
static int get_messagefile_dll(LPWSTR app, LPWSTR source, LPWSTR entry, LPWSTR dllfile) static int get_messagefile_dll(LPWSTR app, LPWSTR source, LPWSTR dllfile)
{ {
HKEY hk; HKEY hk;
WCHAR buf[MAX_MSG_LENGTH]; WCHAR buf[MAX_MSG_LENGTH];
@ -86,7 +87,7 @@ static int get_messagefile_dll(LPWSTR app, LPWSTR source, LPWSTR entry, LPWSTR d
return rc; return rc;
} }
rc = RegQueryValueEx(hk, entry, NULL, &type, rc = RegQueryValueEx(hk, L"EventMessageFile", NULL, &type,
(LPBYTE)buf, &data); (LPBYTE)buf, &data);
if (rc) { if (rc) {
RegCloseKey(hk); RegCloseKey(hk);
@ -101,9 +102,7 @@ static int get_messagefile_dll(LPWSTR app, LPWSTR source, LPWSTR entry, LPWSTR d
return ERROR_SUCCESS; return ERROR_SUCCESS;
} }
static int get_formatted_message(EVENTLOGRECORD *pevlr, static int get_formatted_message(EVENTLOGRECORD *pevlr, LPWSTR dllfile,
DWORD id,
LPWSTR dllfile,
LPWSTR msg) LPWSTR msg)
{ {
LPVOID msgbuf = NULL; LPVOID msgbuf = NULL;
@ -122,12 +121,10 @@ static int get_formatted_message(EVENTLOGRECORD *pevlr,
} }
memset(insert_strs, '\0', sizeof(insert_strs)); memset(insert_strs, '\0', sizeof(insert_strs));
if (pevlr) { ptr = (LPWSTR)((LPBYTE)pevlr + pevlr->StringOffset);
ptr = (LPWSTR)((LPBYTE)pevlr + pevlr->StringOffset); for (i = 0; i < pevlr->NumStrings && i < max; i++) {
for (i = 0; i < pevlr->NumStrings && i < max; i++) { insert_strs[i] = ptr;
insert_strs[i] = ptr; ptr += wcslen(ptr) + 1;
ptr += wcslen(ptr) + 1;
}
} }
ptr = wcstok(msgdll, FILESEP); ptr = wcstok(msgdll, FILESEP);
@ -139,7 +136,7 @@ static int get_formatted_message(EVENTLOGRECORD *pevlr,
if (hlib) { if (hlib) {
FormatMessage(flags, FormatMessage(flags,
hlib, hlib,
id, pevlr->EventID,
MAKELANGID(LANG_NEUTRAL, SUBLANG_ENGLISH_US), MAKELANGID(LANG_NEUTRAL, SUBLANG_ENGLISH_US),
(LPWSTR) &msgbuf, (LPWSTR) &msgbuf,
sizeof(msgbuf), //min bytes w/ FORMAT_MESSAGE_ALLOCATE_BUFFER sizeof(msgbuf), //min bytes w/ FORMAT_MESSAGE_ALLOCATE_BUFFER
@ -164,29 +161,6 @@ static int get_formatted_message(EVENTLOGRECORD *pevlr,
} }
} }
static int get_formatted_event_message(EVENTLOGRECORD *pevlr, LPWSTR name, LPWSTR source, LPWSTR msg)
{
WCHAR dllfile[MAX_MSG_LENGTH];
if (get_messagefile_dll(name, source, L"EventMessageFile", dllfile) != ERROR_SUCCESS) {
return !ERROR_SUCCESS;
}
return get_formatted_message(pevlr, pevlr->EventID, dllfile, msg);
}
static int get_formatted_event_category(EVENTLOGRECORD *pevlr, LPWSTR name, LPWSTR source, LPWSTR msg)
{
WCHAR dllfile[MAX_MSG_LENGTH];
if (get_messagefile_dll(name, source, L"CategoryMessageFile", dllfile) != ERROR_SUCCESS) {
return !ERROR_SUCCESS;
}
return get_formatted_message(NULL, pevlr->EventCategory, dllfile, msg);
}
JNIEXPORT void SIGAR_JNI(win32_EventLog_openlog) JNIEXPORT void SIGAR_JNI(win32_EventLog_openlog)
(JNIEnv *env, jobject obj, jstring lpSourceName) (JNIEnv *env, jobject obj, jstring lpSourceName)
{ {
@ -255,6 +229,7 @@ JNIEXPORT jobject SIGAR_JNI(win32_EventLog_readlog)
{ {
EVENTLOGRECORD *pevlr; EVENTLOGRECORD *pevlr;
BYTE buffer[8192]; BYTE buffer[8192];
WCHAR dllfile[MAX_MSG_LENGTH];
WCHAR msg[MAX_MSG_LENGTH]; WCHAR msg[MAX_MSG_LENGTH];
DWORD dwRead, dwNeeded; DWORD dwRead, dwNeeded;
LPWSTR source, machineName; LPWSTR source, machineName;
@ -264,7 +239,6 @@ JNIEXPORT jobject SIGAR_JNI(win32_EventLog_readlog)
jfieldID id; jfieldID id;
jstring value; jstring value;
LPWSTR name; LPWSTR name;
BOOL has_category = FALSE; /* 1.6.x compat */
h = win32_get_pointer(env, obj); h = win32_get_pointer(env, obj);
@ -293,7 +267,6 @@ JNIEXPORT jobject SIGAR_JNI(win32_EventLog_readlog)
} }
obj = JENV->AllocObject(env, cls); obj = JENV->AllocObject(env, cls);
SIGAR_CHEX;
id = JENV->GetFieldID(env, cls, "recordNumber", "J"); id = JENV->GetFieldID(env, cls, "recordNumber", "J");
JENV->SetLongField(env, obj, id, pevlr->RecordNumber); JENV->SetLongField(env, obj, id, pevlr->RecordNumber);
@ -310,18 +283,6 @@ JNIEXPORT jobject SIGAR_JNI(win32_EventLog_readlog)
id = JENV->GetFieldID(env, cls, "eventType", "S"); id = JENV->GetFieldID(env, cls, "eventType", "S");
JENV->SetShortField(env, obj, id, pevlr->EventType); JENV->SetShortField(env, obj, id, pevlr->EventType);
if (!JENV->ExceptionCheck(env)) { /* careful not to clear any existing exception */
id = JENV->GetFieldID(env, cls, "category", "S");
if (JENV->ExceptionCheck(env)) {
/* older version of sigar.jar being used with sigar.dll */
JENV->ExceptionClear(env);
}
else {
has_category = TRUE;
JENV->SetShortField(env, obj, id, pevlr->EventCategory);
}
}
/* Extract string data from the end of the structure. Lame. */ /* Extract string data from the end of the structure. Lame. */
source = (LPWSTR)((LPBYTE)pevlr + sizeof(EVENTLOGRECORD)); source = (LPWSTR)((LPBYTE)pevlr + sizeof(EVENTLOGRECORD));
@ -331,7 +292,8 @@ JNIEXPORT jobject SIGAR_JNI(win32_EventLog_readlog)
/* Get the formatted message */ /* Get the formatted message */
if ((pevlr->NumStrings > 0) && if ((pevlr->NumStrings > 0) &&
(get_formatted_event_message(pevlr, name, source, msg) == ERROR_SUCCESS)) (get_messagefile_dll(name, source, dllfile) == ERROR_SUCCESS) &&
(get_formatted_message(pevlr, dllfile, msg) == ERROR_SUCCESS))
{ {
UNICODE_SetStringField("message", msg); UNICODE_SetStringField("message", msg);
} }
@ -339,19 +301,11 @@ JNIEXPORT jobject SIGAR_JNI(win32_EventLog_readlog)
LPWSTR tmp = (LPWSTR)((LPBYTE)pevlr + pevlr->StringOffset); LPWSTR tmp = (LPWSTR)((LPBYTE)pevlr + pevlr->StringOffset);
UNICODE_SetStringField("message", tmp); UNICODE_SetStringField("message", tmp);
} }
/* Get the formatted category */
if (has_category &&
(get_formatted_event_category(pevlr, name, source, msg) == ERROR_SUCCESS))
{
UNICODE_SetStringField("categoryString", msg);
}
JENV->ReleaseStringChars(env, jname, name); JENV->ReleaseStringChars(env, jname, name);
/* Increment up to the machine name. */ /* Increment up to the machine name. */
machineName = (LPWSTR)((LPBYTE)pevlr + sizeof(EVENTLOGRECORD) + machineName = (LPWSTR)((LPBYTE)pevlr + sizeof(EVENTLOGRECORD) +
(wcslen(source) + 1) * sizeof(WCHAR)); wcslen(source) + 1);
UNICODE_SetStringField("computerName", machineName); UNICODE_SetStringField("computerName", machineName);
/* Get user id info */ /* Get user id info */

View File

@ -1,20 +1,3 @@
/*
* Copyright (c) 2004-2006, 2008 Hyperic, Inc.
* Copyright (c) 2010 VMware, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if defined(WIN32) && !defined(SIGAR_NO_ATL) #if defined(WIN32) && !defined(SIGAR_NO_ATL)
#define UNICODE #define UNICODE
#define _UNICODE #define _UNICODE
@ -286,10 +269,7 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_MetaBase_MetaBaseGetMultiStringValue)
NewObjectArray(count, NewObjectArray(count,
env->FindClass("java/lang/String"), env->FindClass("java/lang/String"),
env->NewString((const jchar *)"", 1)); env->NewString((const jchar *)"", 1));
if (env->ExceptionCheck()) {
return NULL;
}
// Walk the return instance list, creating an array // Walk the return instance list, creating an array
for (szThisInstance = (TCHAR *)MyRecord.pbMDData, i = 0; for (szThisInstance = (TCHAR *)MyRecord.pbMDData, i = 0;
*szThisInstance != 0; *szThisInstance != 0;
@ -298,9 +278,6 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_MetaBase_MetaBaseGetMultiStringValue)
env->SetObjectArrayElement(ret,i,env->NewString( env->SetObjectArrayElement(ret,i,env->NewString(
(const jchar *)(LPCTSTR)szThisInstance, (const jchar *)(LPCTSTR)szThisInstance,
lstrlen(szThisInstance))); lstrlen(szThisInstance)));
if (env->ExceptionCheck()) {
return NULL;
}
} }
return ret; return ret;
} }

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
#ifdef WIN32 #ifdef WIN32

View File

@ -1,18 +1,19 @@
/* /*
* Copyright (c) 2004-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* Copyright (c) 2010 VMware, Inc. * This file is part of SIGAR.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * SIGAR is free software; you can redistribute it and/or modify
* you may not use this file except in compliance with the License. * it under the terms version 2 of the GNU General Public License as
* You may obtain a copy of the License at * published by the Free Software Foundation. This program is distributed
* * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* http://www.apache.org/licenses/LICENSE-2.0 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* * PARTICULAR PURPOSE. See the GNU General Public License for more
* Unless required by applicable law or agreed to in writing, software * details.
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * You should have received a copy of the GNU General Public License
* See the License for the specific language governing permissions and * along with this program; if not, write to the Free Software
* limitations under the License. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
#ifdef WIN32 #ifdef WIN32
@ -221,55 +222,6 @@ JNIEXPORT jdouble SIGAR_JNI(win32_Pdh_pdhGetValue)
} }
} }
JNIEXPORT jstring SIGAR_JNI(win32_Pdh_pdhGetDescription)
(JNIEnv *env, jclass cur, jlong counter)
{
HCOUNTER h_counter = (HCOUNTER)counter;
PDH_COUNTER_INFO *info = NULL;
jstring retval = NULL;
DWORD size = 0;
PDH_STATUS status;
status = PdhGetCounterInfo(h_counter, TRUE, &size, NULL);
if (status != PDH_MORE_DATA) {
win32_throw_exception(env, get_error_message(status));
return NULL;
}
info = malloc(size);
status = PdhGetCounterInfo(h_counter, 1, &size, info);
if (status == ERROR_SUCCESS) {
if (info->szExplainText) {
retval = JENV->NewString(env, info->szExplainText,
lstrlen(info->szExplainText));
}
}
else {
win32_throw_exception(env, get_error_message(status));
}
free(info);
return retval;
}
JNIEXPORT jlong SIGAR_JNI(win32_Pdh_pdhGetCounterType)
(JNIEnv *env, jclass cur, jlong counter)
{
HCOUNTER h_counter = (HCOUNTER)counter;
PDH_COUNTER_INFO info;
DWORD size = sizeof(info);
PDH_STATUS status;
status = PdhGetCounterInfo(h_counter, FALSE, &size, &info);
if (status != ERROR_SUCCESS) {
win32_throw_exception(env, get_error_message(status));
return -1;
}
return info.dwType;
}
JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetInstances) JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetInstances)
(JNIEnv *env, jclass cur, jstring cp) (JNIEnv *env, jclass cur, jstring cp)
{ {
@ -318,10 +270,6 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetInstances)
JENV->FindClass(env, JENV->FindClass(env,
"java/lang/String"), "java/lang/String"),
JENV->NewStringUTF(env, "")); JENV->NewStringUTF(env, ""));
if (JENV->ExceptionCheck(env)) {
free(instance_list_buf);
return NULL;
}
/* Walk the return instance list, creating an array */ /* Walk the return instance list, creating an array */
for (cur_object = instance_list_buf, i = 0; for (cur_object = instance_list_buf, i = 0;
@ -332,10 +280,6 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetInstances)
jstring s = jstring s =
JENV->NewString(env, (const jchar *)cur_object, len); JENV->NewString(env, (const jchar *)cur_object, len);
JENV->SetObjectArrayElement(env, array, i, s); JENV->SetObjectArrayElement(env, array, i, s);
if (JENV->ExceptionCheck(env)) {
free(instance_list_buf);
return NULL;
}
cur_object += len + 1; cur_object += len + 1;
} }
} else { } else {
@ -398,10 +342,6 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetKeys)
JENV->FindClass(env, JENV->FindClass(env,
"java/lang/String"), "java/lang/String"),
JENV->NewStringUTF(env, "")); JENV->NewStringUTF(env, ""));
if (JENV->ExceptionCheck(env)) {
free(instance_list_buf);
return NULL;
}
/* Walk the return instance list, creating an array */ /* Walk the return instance list, creating an array */
for (cur_object = instance_list_buf, i = 0; for (cur_object = instance_list_buf, i = 0;
@ -412,10 +352,6 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetKeys)
jstring s = jstring s =
JENV->NewString(env, (const jchar *)cur_object, len); JENV->NewString(env, (const jchar *)cur_object, len);
JENV->SetObjectArrayElement(env, array, i, s); JENV->SetObjectArrayElement(env, array, i, s);
if (JENV->ExceptionCheck(env)) {
free(instance_list_buf);
return NULL;
}
cur_object += len + 1; cur_object += len + 1;
} }
} else { } else {
@ -474,10 +410,6 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetObjects)
JENV->FindClass(env, JENV->FindClass(env,
"java/lang/String"), "java/lang/String"),
JENV->NewStringUTF(env, "")); JENV->NewStringUTF(env, ""));
if (JENV->ExceptionCheck(env)) {
free(list_buf);
return NULL;
}
for (cur_object = list_buf, i = 0; for (cur_object = list_buf, i = 0;
*cur_object != 0; *cur_object != 0;
@ -487,10 +419,6 @@ JNIEXPORT jobjectArray SIGAR_JNI(win32_Pdh_pdhGetObjects)
jstring s = jstring s =
JENV->NewString(env, (const jchar *)cur_object, len); JENV->NewString(env, (const jchar *)cur_object, len);
JENV->SetObjectArrayElement(env, array, i, s); JENV->SetObjectArrayElement(env, array, i, s);
if (JENV->ExceptionCheck(env)) {
free(list_buf);
return NULL;
}
cur_object += len + 1; cur_object += len + 1;
} }

23
bindings/java/src/jni/win32/registrykey.cpp Executable file → Normal file
View File

@ -1,20 +1,3 @@
/*
* Copyright (c) 2004, 2007-2008 Hyperic, Inc.
* Copyright (c) 2009-2010 VMware, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifdef WIN32 #ifdef WIN32
#define UNICODE #define UNICODE
#define _UNICODE #define _UNICODE
@ -132,7 +115,6 @@ JNIEXPORT jint SIGAR_JNI(win32_RegistryKey_RegLoadKey)
#endif #endif
static DWORD RegOpenOpts[] = { static DWORD RegOpenOpts[] = {
0,
KEY_WOW64_32KEY, KEY_WOW64_32KEY,
KEY_WOW64_64KEY KEY_WOW64_64KEY
}; };
@ -348,10 +330,7 @@ JNIEXPORT void SIGAR_JNI(win32_RegistryKey_RegQueryMultiStringValue)
env->NewString((const jchar *)ptr, len); env->NewString((const jchar *)ptr, len);
env->CallBooleanMethod(obj, id, jval); env->CallBooleanMethod(obj, id, jval);
if (env->ExceptionCheck()) {
HeapFree(GetProcessHeap(), 0, value);
return;
}
ptr += len + 1; ptr += len + 1;
} }
} }

View File

@ -1,20 +1,3 @@
/*
* Copyright (c) 2004-2005, 2008 Hyperic, Inc.
* Copyright (c) 2010 VMware, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifdef WIN32 #ifdef WIN32
#define UNICODE #define UNICODE
#define _UNICODE #define _UNICODE
@ -306,9 +289,6 @@ static int to_array(JNIEnv *env, LPTSTR str, jobjectArray array)
jstring jstr = jstring jstr =
env->NewString((const jchar *)ptr, slen); env->NewString((const jchar *)ptr, slen);
env->SetObjectArrayElement(array, i, jstr); env->SetObjectArrayElement(array, i, jstr);
if (env->ExceptionCheck()) {
return -1;
}
} }
offset += slen + 1; offset += slen + 1;
ptr = &str[offset]; ptr = &str[offset];
@ -353,19 +333,11 @@ JNIEXPORT jboolean SIGAR_JNI(win32_Service_QueryServiceConfig)
int i; int i;
jobjectArray jargv = jobjectArray jargv =
env->NewObjectArray(argc, stringclass, 0); env->NewObjectArray(argc, stringclass, 0);
if (env->ExceptionCheck()) {
LocalFree(argv);
return JNI_FALSE;
}
for (i=0; i<argc; i++) { for (i=0; i<argc; i++) {
jstring jstr = jstring jstr =
env->NewString((const jchar *)argv[i], lstrlen(argv[i])); env->NewString((const jchar *)argv[i], lstrlen(argv[i]));
env->SetObjectArrayElement(jargv, i, jstr); env->SetObjectArrayElement(jargv, i, jstr);
if (env->ExceptionCheck()) {
LocalFree(argv);
return JNI_FALSE;
}
} }
id = env->GetFieldID(cls, "argv", ASTRING_SIG); id = env->GetFieldID(cls, "argv", ASTRING_SIG);
@ -380,22 +352,11 @@ JNIEXPORT jboolean SIGAR_JNI(win32_Service_QueryServiceConfig)
if (config->lpDependencies) { if (config->lpDependencies) {
/* first pass just get num for NewObjectArray */ /* first pass just get num for NewObjectArray */
jobjectArray dependencies;
int num = to_array(env, config->lpDependencies, NULL); int num = to_array(env, config->lpDependencies, NULL);
jobjectArray dependencies =
if (num < 0) { env->NewObjectArray(num, stringclass, 0);
return JNI_FALSE; /* Exception thrown */
}
dependencies = env->NewObjectArray(num, stringclass, 0);
if (env->ExceptionCheck()) {
return JNI_FALSE;
}
to_array(env, config->lpDependencies, dependencies); to_array(env, config->lpDependencies, dependencies);
if (num < 0) {
return JNI_FALSE; /* Exception thrown */
}
id = env->GetFieldID(cls, "dependencies", ASTRING_SIG); id = env->GetFieldID(cls, "dependencies", ASTRING_SIG);

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2004-2006, 2008 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
#ifdef WIN32 #ifdef WIN32

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2004-2006 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the 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 WIN32_BINDINGS_H #ifndef WIN32_BINDINGS_H

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2008 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;
@ -292,58 +294,74 @@ public class FileInfo extends FileAttrs implements java.io.Serializable {
} }
public String diff(FileInfo info) { public String diff(FileInfo info) {
ArrayList changes = new ArrayList(); ArrayList changes = new ArrayList();
if (this.getMtime() != info.getMtime()) { if (this.getMtime() != info.getMtime()) {
changes.add(new Diff("Mtime", formatDate(info.getMtime()), changes.add(new Diff("Mtime",
formatDate(this.getMtime()))); formatDate(info.getMtime()),
} else if (this.getCtime() != info.getCtime()) { formatDate(this.getMtime())));
changes.add(new Diff("Ctime", formatDate(info.getCtime()),
formatDate(this.getCtime())));
}
if (this.getPermissions() != info.getPermissions()) {
changes.add(new Diff("Perms", info.getPermissionsString(), this
.getPermissionsString()));
}
if (this.getType() != info.getType()) {
changes.add(new Diff("Type", info.getTypeString(), this
.getTypeString()));
}
if (this.getUid() != info.getUid()) {
changes.add(new Diff("Uid", info.getUid(), this.getUid()));
}
if (this.getGid() != info.getGid()) {
changes.add(new Diff("Gid", info.getGid(), this.getGid()));
}
if (this.getSize() != info.getSize()) {
changes.add(new Diff("Size", info.getSize(), this.getSize()));
}
if (!OperatingSystem.IS_WIN32) {
if (this.getInode() != info.getInode()) {
changes.add(new Diff("Inode", info.getInode(), this.getInode()));
}
if (this.getDevice() != info.getDevice()) {
changes.add(new Diff("Device", info.getDevice(), this
.getDevice()));
}
if (this.getNlink() != info.getNlink()) {
changes.add(new Diff("Nlink", info.getNlink(), this.getNlink()));
}
} }
else if (this.getCtime() != info.getCtime()) {
/* if changes were not detected then return empty String */ changes.add(new Diff("Ctime",
if (changes.isEmpty()){ formatDate(info.getCtime()),
formatDate(this.getCtime())));
}
else {
//no point in checking the rest if all times are the same.
//or should we include atime in the diff?
return ""; return "";
} }
if (this.getPermissions() != info.getPermissions()) {
changes.add(new Diff("Perms",
info.getPermissionsString(),
this.getPermissionsString()));
}
if (this.getType() != info.getType()) {
changes.add(new Diff("Type",
info.getTypeString(),
this.getTypeString()));
}
if (this.getUid() != info.getUid()) {
changes.add(new Diff("Uid",
info.getUid(),
this.getUid()));
}
if (this.getGid() != info.getGid()) {
changes.add(new Diff("Gid",
info.getGid(),
this.getGid()));
}
if (this.getSize() != info.getSize()) {
changes.add(new Diff("Size",
info.getSize(),
this.getSize()));
}
if (!OperatingSystem.IS_WIN32) {
if (this.getInode() != info.getInode()) {
changes.add(new Diff("Inode",
info.getInode(),
this.getInode()));
}
if (this.getDevice() != info.getDevice()) {
changes.add(new Diff("Device",
info.getDevice(),
this.getDevice()));
}
if (this.getNlink() != info.getNlink()) {
changes.add(new Diff("Nlink",
info.getNlink(),
this.getNlink()));
}
}
StringBuffer sb = format(changes); StringBuffer sb = format(changes);
if (this.dirStatEnabled) { if (this.dirStatEnabled) {
sb.append(diff(info.stat)); sb.append(diff(info.stat));
@ -373,9 +391,7 @@ public class FileInfo extends FileAttrs implements java.io.Serializable {
stat(); stat();
boolean isModified = isModified(this.oldInfo); return this.mtime != oldInfo.mtime;
return isModified;
} }
public boolean changed() public boolean changed()
@ -441,49 +457,4 @@ public class FileInfo extends FileAttrs implements java.io.Serializable {
return fetchInfo(sigar, name, false); return fetchInfo(sigar, name, false);
} }
private boolean isModified(FileInfo info){
/* Check modified time */
if (this.getMtime() != info.getMtime()) {
return true;
} else if (this.getCtime() != info.getCtime()) {
return true;
}
if (this.getPermissions() != info.getPermissions()) {
return true;
}
if (this.getType() != info.getType()) {
return true;
}
if (this.getUid() != info.getUid()) {
return true;
}
if (this.getGid() != info.getGid()) {
return true;
}
if (this.getSize() != info.getSize()) {
return true;
}
if (!OperatingSystem.IS_WIN32) {
if (this.getInode() != info.getInode()) {
return true;
}
if (this.getDevice() != info.getDevice()) {
return true;
}
if (this.getNlink() != info.getNlink()) {
return true;
}
}
return false;
}
} }

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2007, 2009 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;
@ -23,8 +25,6 @@ import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.Set; import java.util.Set;
import org.apache.log4j.Logger;
public abstract class FileWatcher { public abstract class FileWatcher {
private Sigar sigar; private Sigar sigar;
@ -33,9 +33,6 @@ public abstract class FileWatcher {
private Set files = private Set files =
Collections.synchronizedSet(new HashSet()); Collections.synchronizedSet(new HashSet());
private static final Logger log =
SigarLog.getLogger(FileWatcher.class.getName());
public abstract void onChange(FileInfo info); public abstract void onChange(FileInfo info);
public void onNotFound(FileInfo info) { public void onNotFound(FileInfo info) {
@ -71,22 +68,14 @@ public abstract class FileWatcher {
public void add(File[] files) public void add(File[] files)
throws SigarException { throws SigarException {
for (int i=0; i<files.length; i++) { for (int i=0; i<files.length; i++) {
try { add(files[i]);
add(files[i]);
} catch (SigarFileNotFoundException e) {
log.error("Cannot add file: " + files[i].getAbsolutePath(), e);
}
} }
} }
public void add(String[] files) public void add(String[] files)
throws SigarException { throws SigarException {
for (int i=0; i<files.length; i++) { for (int i=0; i<files.length; i++) {
try { add(files[i]);
add(files[i]);
} catch (SigarFileNotFoundException e) {
log.error("Cannot add file: " + files[i], e);
}
} }
} }

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,18 +1,19 @@
/* /*
* Copyright (c) 2009 SpringSource, Inc. * Copyright (C) [2004-2009], Hyperic, Inc.
* Copyright (c) 2010 VMware, Inc. * This file is part of SIGAR.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * SIGAR is free software; you can redistribute it and/or modify
* you may not use this file except in compliance with the License. * it under the terms version 2 of the GNU General Public License as
* You may obtain a copy of the License at * published by the Free Software Foundation. This program is distributed
* * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* http://www.apache.org/licenses/LICENSE-2.0 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* * PARTICULAR PURPOSE. See the GNU General Public License for more
* Unless required by applicable law or agreed to in writing, software * details.
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * You should have received a copy of the GNU General Public License
* See the License for the specific language governing permissions and * along with this program; if not, write to the Free Software
* limitations under the License. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;
@ -35,7 +36,7 @@ public class Humidor {
private Object LOCK = new Object(); private Object LOCK = new Object();
private InvocationHandler _handler; private InvocationHandler _handler;
private SigarProxy _sigar; private SigarProxy _sigar;
private Sigar _impl, _inst; private Sigar _impl;
private Humidor() {} private Humidor() {}
@ -68,7 +69,7 @@ public class Humidor {
synchronized(LOCK) { synchronized(LOCK) {
if (_sigar == null) { if (_sigar == null) {
if (_impl == null) { if (_impl == null) {
_inst = _impl = new Sigar(); _impl = new Sigar();
} }
_handler = new MyHandler(_impl); _handler = new MyHandler(_impl);
_sigar = (SigarProxy) _sigar = (SigarProxy)
@ -83,13 +84,4 @@ public class Humidor {
public static Humidor getInstance() { public static Humidor getInstance() {
return INSTANCE; return INSTANCE;
} }
//close the Sigar instance if getSigar() created it
public void close() {
if (_inst != null) {
_inst.close();
_impl = _inst = null;
}
_sigar = null;
}
} }

View File

@ -1,52 +0,0 @@
/*
* Copyright (c) 2009 Hyperic, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hyperic.sigar;
import java.util.HashMap;
import java.util.Map;
/**
* Object wrapper of double[] Sigar.getLoadAverage() for use in bean patterns (JMX).
*/
public class LoadAverage {
private double[] average;
public LoadAverage(double[] average) {
this.average = average;
}
public double getOneMinute() {
return this.average[0];
}
public double getFiveMinute() {
return this.average[1];
}
public double getFifteenMinute() {
return this.average[2];
}
public Map toMap() {
Map map = new HashMap();
map.put("OneMinute", new Double(getOneMinute()));
map.put("FiveMinute", new Double(getFiveMinute()));
map.put("FifteenMinute", new Double(getFifteenMinute()));
return map;
}
}

View File

@ -1,21 +1,26 @@
/* /*
* Copyright (c) 2006-2008 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;
import java.util.HashMap;
import java.util.Map;
import org.hyperic.sigar.ptql.ProcessFinder; import org.hyperic.sigar.ptql.ProcessFinder;
/** /**
@ -25,33 +30,64 @@ public class MultiProcCpu extends ProcCpu {
private long pid; private long pid;
private int nproc = 0; private int nproc = 0;
private static Map ptable = new HashMap();
static synchronized MultiProcCpu get(Sigar sigar, String query) static synchronized MultiProcCpu get(Sigar sigar, String query)
throws SigarException { throws SigarException {
MultiProcCpu cpu = new MultiProcCpu(); MultiProcCpu cpu;
cpu.pid = query.hashCode(); //for equals()
cpu = (MultiProcCpu)ptable.get(query);
if (cpu == null) {
cpu = new MultiProcCpu();
cpu.pid = query.hashCode(); //for equals()
ptable.put(query, cpu);
}
long timeNow = System.currentTimeMillis();
double diff = timeNow - cpu.lastTime;
if (diff == 0) {
return cpu; //we were just called within < 1 second ago.
}
cpu.lastTime = timeNow;
long otime = cpu.total;
cpu.total = 0; cpu.total = 0;
cpu.user = 0; cpu.user = 0;
cpu.sys = 0; cpu.sys = 0;
cpu.percent = 0.0D; cpu.nproc = 0;
long[] pids = ProcessFinder.find(sigar, query); long[] pids = ProcessFinder.find(sigar, query);
cpu.nproc = pids.length; cpu.nproc = pids.length;
for (int i=0; i<pids.length; i++) { for (int i=0; i<pids.length; i++) {
ProcTime time;
try { try {
ProcCpu procCpu = sigar.getProcCpu(pids[i]); time = sigar.getProcTime(pids[i]);
cpu.total += procCpu.getTotal();
cpu.user += procCpu.getUser();
cpu.sys += procCpu.getSys();
cpu.percent += procCpu.getPercent();
} catch (SigarException e) { } catch (SigarException e) {
//process may have gone away or EPERM //process may have gone away or EPERM
continue; continue;
} }
cpu.total += time.total;
cpu.user += time.user;
cpu.sys += time.sys;
}
if (otime == 0) {
//XXX could/should pause first time called.
return cpu;
}
cpu.percent = ((cpu.total - otime) / diff);
if (cpu.percent < 0.0) {
//counter wrapped
cpu.percent = (0.0 - cpu.percent);
}
if (cpu.percent >= 1.0) {
cpu.percent = 0.99;
} }
return cpu; return cpu;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2008 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,19 +1,19 @@
/* /*
* Copyright (c) 2006-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* Copyright (c) 2009 SpringSource, Inc. * This file is part of SIGAR.
* Copyright (c) 2009 VMware, Inc. *
* * SIGAR is free software; you can redistribute it and/or modify
* Licensed under the Apache License, Version 2.0 (the "License"); * it under the terms version 2 of the GNU General Public License as
* you may not use this file except in compliance with the License. * published by the Free Software Foundation. This program is distributed
* You may obtain a copy of the License at * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* http://www.apache.org/licenses/LICENSE-2.0 * PARTICULAR PURPOSE. See the GNU General Public License for more
* * details.
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, * You should have received a copy of the GNU General Public License
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * along with this program; if not, write to the Free Software
* See the License for the specific language governing permissions and * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* limitations under the License. * USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;
@ -97,16 +97,6 @@ public class NetFlags {
public final static int IFF_SLAVE = 0x1000; public final static int IFF_SLAVE = 0x1000;
/**
* Master of a load balancer
*/
public static final int IFF_MASTER = 0x2000;
/**
* Dialup device with changing addresses
*/
public static final int IFF_DYNAMIC = 0x4000;
public static final int RTF_UP = 0x1; public static final int RTF_UP = 0x1;
public static final int RTF_GATEWAY = 0x2; public static final int RTF_GATEWAY = 0x2;
@ -167,13 +157,6 @@ public class NetFlags {
*/ */
public static native String getIfFlagsString(long flags); public static native String getIfFlagsString(long flags);
/**
* @param network interface ipv6 address scope.
* @return String representation of ipv6 address scope.
* @see org.hyperic.sigar.NetInterfaceConfig#getScope6
*/
public static native String getScopeString(int scope);
public static boolean isAnyAddress(String address) { public static boolean isAnyAddress(String address) {
return return
(address == null) || (address == null) ||

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2008 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006, 2008 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;
@ -31,7 +33,7 @@ public class ProcUtil {
for (int i=0; i<len; i++) { for (int i=0; i<len; i++) {
char c = name.charAt(i); char c = name.charAt(i);
if (!((c == '.') || Character.isJavaIdentifierPart(c))) { if (!((c == '.') || Character.isLetter(c))) {
return false; return false;
} }
} }

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,18 +1,19 @@
/* /*
* Copyright (c) 2006-2009 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* Copyright (c) 2010 VMware, Inc. * This file is part of SIGAR.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * SIGAR is free software; you can redistribute it and/or modify
* you may not use this file except in compliance with the License. * it under the terms version 2 of the GNU General Public License as
* You may obtain a copy of the License at * published by the Free Software Foundation. This program is distributed
* * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* http://www.apache.org/licenses/LICENSE-2.0 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* * PARTICULAR PURPOSE. See the GNU General Public License for more
* Unless required by applicable law or agreed to in writing, software * details.
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * You should have received a copy of the GNU General Public License
* See the License for the specific language governing permissions and * along with this program; if not, write to the Free Software
* limitations under the License. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;
@ -42,14 +43,12 @@ public class Sigar implements SigarProxy {
private static String loadError = null; private static String loadError = null;
public static final long FIELD_NOTIMPL = -1; public static final long FIELD_NOTIMPL = -1;
public static final int PID_PROC_CPU_CACHE = 1;
public static final int PID_PROC_IO_CACHE = 2;
/** /**
* The Sigar java version. * The Sigar java version.
*/ */
public static final String VERSION_STRING = public static final String VERSION_STRING =
Version.VERSION_STRING; SigarVersion.VERSION_STRING;
/** /**
* The Sigar native version. * The Sigar native version.
@ -60,7 +59,7 @@ public class Sigar implements SigarProxy {
* The scm (svn) revision from which sigar.jar was built. * The scm (svn) revision from which sigar.jar was built.
*/ */
public static final String SCM_REVISION = public static final String SCM_REVISION =
Version.SCM_REVISION; SigarVersion.SCM_REVISION;
/** /**
* The scm (svn) revision from which the sigar native binary was built. * The scm (svn) revision from which the sigar native binary was built.
@ -71,7 +70,7 @@ public class Sigar implements SigarProxy {
* The date on which sigar.jar was built. * The date on which sigar.jar was built.
*/ */
public static final String BUILD_DATE = public static final String BUILD_DATE =
Version.BUILD_DATE; SigarVersion.BUILD_DATE;
/** /**
* The date on which the sigar native binary was built. * The date on which the sigar native binary was built.
@ -157,19 +156,15 @@ public class Sigar implements SigarProxy {
} }
private static void loadLibrary() throws SigarException { private static void loadLibrary() throws SigarException {
if (SigarLoader.IS_WIN32 && try {
System.getProperty("os.version").equals("4.0")) if (SigarLoader.IS_WIN32 &&
{ System.getProperty("os.version").equals("4.0"))
try { {
//NT 4.0 only
String lib = String lib =
loader.findJarPath("pdh.dll") + loader.findJarPath("pdh.dll") +
File.separator + "pdh.dll"; File.separator + "pdh.dll";
loader.systemLoad(lib); loader.systemLoad(lib);
} catch (Exception e) {} }
}
try {
loader.load(); loader.load();
} catch (ArchNotSupportedException e) { } catch (ArchNotSupportedException e) {
throw new SigarException(e.getMessage()); throw new SigarException(e.getMessage());
@ -380,7 +375,7 @@ public class Sigar implements SigarProxy {
CpuPerc[] perc = CpuPerc[] perc =
new CpuPerc[curLen < oldLen ? curLen : oldLen]; new CpuPerc[curLen < oldLen ? curLen : oldLen];
for (int i=0; i<perc.length; i++) { for (int i=0; i<curLen; i++) {
perc[i] = perc[i] =
CpuPerc.fetch(this, oldCpuList[i], CpuPerc.fetch(this, oldCpuList[i],
this.lastCpuList[i]); this.lastCpuList[i]);
@ -442,7 +437,7 @@ public class Sigar implements SigarProxy {
return this.processFinder.findSingleProcess(pid); return this.processFinder.findSingleProcess(pid);
} }
} }
/** /**
* Get process memory info. * Get process memory info.
* @param pid The process id. * @param pid The process id.
@ -640,57 +635,6 @@ public class Sigar implements SigarProxy {
Integer.parseInt(port)); Integer.parseInt(port));
} }
/**
* Get process disk IO info.
* @param pid THe process id.
* @exception SigarException on failure.
*/
public ProcDiskIO getProcDiskIO(long pid) throws SigarException {
try {
return ProcDiskIO.fetch(this, pid);
} catch (UnsatisfiedLinkError linkErrorException) {
// We want to handle exceptions gracefully even if the linked
// shared library is older and isn't compiled with the ProcDiskIO APIs.
// The downside of this is that we throw SigarNotImplemented exception
// also when the shared library can't be loaded.
SigarException sigarException = new SigarNotImplementedException();
sigarException.initCause(linkErrorException);
throw sigarException;
}
}
public ProcDiskIO getProcDiskIO(String pid) throws SigarException {
return getProcDiskIO(convertPid(pid));
}
/**
* Get process cumulative disk IO info.
* @param pid THe process id.
* @exception SigarException on failure.
*/
public ProcCumulativeDiskIO getProcCumulativeDiskIO(long pid) throws SigarException {
try {
return ProcCumulativeDiskIO.fetch(this, pid);
} catch (UnsatisfiedLinkError linkErrorException) {
// We want to handle exceptions gracefully even if the linked
// shared library is older and isn't compiled with the ProcDiskIO APIs.
// The downside of this is that we throw SigarNotImplemented exception
// also when the shared library can't be loaded.
SigarException sigarException = new SigarNotImplementedException();
sigarException.initCause(linkErrorException);
throw sigarException;
}
}
public ProcCumulativeDiskIO getProcCumulativeDiskIO(String pid) throws SigarException {
return getProcCumulativeDiskIO(convertPid(pid));
}
public DumpPidCache dumpPidCache() throws SigarException {
return DumpPidCache.fetch(this);
}
/** /**
* Get the cumulative cpu time for the calling thread. * Get the cumulative cpu time for the calling thread.
*/ */
@ -860,9 +804,6 @@ public class Sigar implements SigarProxy {
return netstat; return netstat;
} }
public native Arp[] getArpList()
throws SigarException;
public native Who[] getWhoList() public native Who[] getWhoList()
throws SigarException; throws SigarException;
@ -1014,10 +955,6 @@ public class Sigar implements SigarProxy {
*/ */
public native String getFQDN() throws SigarException; public native String getFQDN() throws SigarException;
public SigarVersion getSigarVersion() {
return new SigarVersion();
}
/** /**
* Enabling logging in the native Sigar code. * Enabling logging in the native Sigar code.
* This method will hook log4j into the Sigar * This method will hook log4j into the Sigar

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2007 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006, 2008 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;
@ -94,7 +96,7 @@ public class SigarInvoker {
this.sigarProxy = proxy; this.sigarProxy = proxy;
} }
public void setType(String val) { protected void setType(String val) {
String alias = (String)compatTypes.get(val); String alias = (String)compatTypes.get(val);
if (alias != null) { if (alias != null) {
val = alias; val = alias;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006-2008 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;

View File

@ -1,17 +1,19 @@
/* /*
* Copyright (c) 2006 Hyperic, Inc. * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
* * This file is part of SIGAR.
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. * SIGAR is free software; you can redistribute it and/or modify
* You may obtain a copy of the License at * it under the terms version 2 of the GNU General Public License as
* * published by the Free Software Foundation. This program is distributed
* http://www.apache.org/licenses/LICENSE-2.0 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* Unless required by applicable law or agreed to in writing, software * PARTICULAR PURPOSE. See the GNU General Public License for more
* distributed under the License is distributed on an "AS IS" BASIS, * details.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and * You should have received a copy of the GNU General Public License
* limitations under the License. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/ */
package org.hyperic.sigar; package org.hyperic.sigar;
@ -29,8 +31,6 @@ public class SigarLog {
private static final int LOG_INFO = 3; private static final int LOG_INFO = 3;
private static final int LOG_DEBUG = 4; private static final int LOG_DEBUG = 4;
private static final boolean enableLogFallbackConf = ! Boolean.getBoolean("sigar.noLog4jDefaultConfig");
private static native void setLogger(Sigar sigar, Logger log); private static native void setLogger(Sigar sigar, Logger log);
public static native void setLevel(Sigar sigar, int level); public static native void setLevel(Sigar sigar, int level);
@ -48,7 +48,7 @@ public class SigarLog {
public static Logger getLogger(String name) { public static Logger getLogger(String name) {
Logger log = Logger.getLogger(name); Logger log = Logger.getLogger(name);
if (enableLogFallbackConf && !isLogConfigured()) { if (!isLogConfigured()) {
BasicConfigurator.configure(); BasicConfigurator.configure();
} }
return log; return log;

Some files were not shown because too many files have changed in this diff Show More