Compare commits
	
		
			11 Commits
		
	
	
		
			LIBGTOP_2_
			...
			gnome-2-20
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					8ee9154eae | ||
| 
						 | 
					a33e785484 | ||
| 
						 | 
					40f849475b | ||
| 
						 | 
					049471110e | ||
| 
						 | 
					bf181d8913 | ||
| 
						 | 
					124a89990e | ||
| 
						 | 
					576c74d3eb | ||
| 
						 | 
					94e09c586a | ||
| 
						 | 
					bc663ee02f | ||
| 
						 | 
					fedebb7e22 | ||
| 
						 | 
					4e4818f5e7 | 
							
								
								
									
										21
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								NEWS
									
									
									
									
									
								
							@@ -1,20 +1,15 @@
 | 
			
		||||
14 January 2008: Overview of changes in 2.21.5
 | 
			
		||||
==============================================
 | 
			
		||||
05 Mars 2008: Overview of changes in 2.20.2
 | 
			
		||||
===========================================
 | 
			
		||||
* linux:
 | 
			
		||||
  - fixed smaps parsing on >= 2.6.24.x.
 | 
			
		||||
    backport of svn+ssh://svn.gnome.org/svn/libgtop/trunk@2713.
 | 
			
		||||
 | 
			
		||||
7 January 2008: Overview of changes in 2.20.1
 | 
			
		||||
=============================================
 | 
			
		||||
* freebsd:
 | 
			
		||||
  - fixed build on GNU/kfreebsd. Petr Salinger.
 | 
			
		||||
  - fixed procmem units. Kuang-che Wu.
 | 
			
		||||
 | 
			
		||||
28 October 2007: Overview of changes in 2.21.1
 | 
			
		||||
==============================================
 | 
			
		||||
* don't export _p/_s private symbols anymore. This is not an API/ABI breakage.
 | 
			
		||||
* darwin implementation by Benjamin Reed.
 | 
			
		||||
* linux:
 | 
			
		||||
  - splitted fsusage and mountlist implementations;
 | 
			
		||||
  - smarter mountlist(allfs = False);
 | 
			
		||||
  - fixed some compile warning on 64bit;
 | 
			
		||||
* solaris:
 | 
			
		||||
  - fixed netload build by Henry Zhang.
 | 
			
		||||
 | 
			
		||||
16 September 2007: Overview of changes in 2.20.0
 | 
			
		||||
================================================
 | 
			
		||||
* Updated translations.
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,8 @@ dnl Configure script for the Gnome library
 | 
			
		||||
dnl
 | 
			
		||||
 | 
			
		||||
m4_define([libgtop_major_version], [2])
 | 
			
		||||
m4_define([libgtop_minor_version], [21])
 | 
			
		||||
m4_define([libgtop_micro_version], [5])
 | 
			
		||||
m4_define([libgtop_minor_version], [20])
 | 
			
		||||
m4_define([libgtop_micro_version], [2])
 | 
			
		||||
m4_define([libgtop_version], [libgtop_major_version.libgtop_minor_version.libgtop_micro_version])
 | 
			
		||||
 | 
			
		||||
dnl  increment if the interface has additions, changes, removals.
 | 
			
		||||
@@ -12,7 +12,7 @@ m4_define([libgtop_current], [8])
 | 
			
		||||
 | 
			
		||||
dnl  increment any time the source changes; set to
 | 
			
		||||
dnl  0 if you increment CURRENT
 | 
			
		||||
m4_define([libgtop_revision], [1])
 | 
			
		||||
m4_define([libgtop_revision], [0])
 | 
			
		||||
 | 
			
		||||
dnl  increment if any interfaces have been added; set to 0
 | 
			
		||||
dnl  if any interfaces have been removed. removal has
 | 
			
		||||
@@ -380,7 +380,6 @@ sysdeps/freebsd/Makefile
 | 
			
		||||
sysdeps/solaris/Makefile
 | 
			
		||||
sysdeps/aix/Makefile
 | 
			
		||||
sysdeps/bsd/Makefile
 | 
			
		||||
sysdeps/darwin/Makefile
 | 
			
		||||
src/Makefile
 | 
			
		||||
src/daemon/Makefile
 | 
			
		||||
lib/Makefile
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								doc/reference/libgtop.types
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								doc/reference/libgtop.types
									
									
									
									
									
										Normal file
									
								
							@@ -36,7 +36,7 @@ int main()
 | 
			
		||||
  printf("%-20s %-10s %-10s %-10s %-10s\n",
 | 
			
		||||
	 "Filesystem", "Size", "Used", "Avail", "Use%");
 | 
			
		||||
 | 
			
		||||
  entries = glibtop_get_mountlist(&buf, TRUE);
 | 
			
		||||
  entries = glibtop_get_mountlist(&buf, FALSE);
 | 
			
		||||
 | 
			
		||||
  for(i = 0; i < buf.number; ++i)
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -108,10 +108,10 @@ main (int argc, char *argv [])
 | 
			
		||||
 | 
			
		||||
			if (sizeof (void*) == 8)
 | 
			
		||||
				format = "%016lx-%016lx %016lx - "
 | 
			
		||||
					 "%02x:%02x %08lu - %5.5s - %s\n";
 | 
			
		||||
					 "%02x:%02x %08lu - %4s - %s\n";
 | 
			
		||||
			else
 | 
			
		||||
				format = "%08lx-%08lx %08lx - "
 | 
			
		||||
					 "%02x:%02x %08lu - %5.5s - %s\n";
 | 
			
		||||
					 "%02x:%02x %08lu - %4s - %s\n";
 | 
			
		||||
 | 
			
		||||
			fprintf (stderr, format,
 | 
			
		||||
				 (unsigned long) maps [i].start,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,68 +1,130 @@
 | 
			
		||||
glibtop_call_l
 | 
			
		||||
glibtop_call_p
 | 
			
		||||
glibtop_close
 | 
			
		||||
glibtop_close_p
 | 
			
		||||
glibtop_close_r
 | 
			
		||||
glibtop_close_s
 | 
			
		||||
glibtop_get_cpu
 | 
			
		||||
glibtop_get_cpu_l
 | 
			
		||||
glibtop_get_cpu_p
 | 
			
		||||
glibtop_get_cpu_s
 | 
			
		||||
glibtop_get_fsusage
 | 
			
		||||
glibtop_get_fsusage_l
 | 
			
		||||
glibtop_get_fsusage_p
 | 
			
		||||
glibtop_get_fsusage_s
 | 
			
		||||
glibtop_get_loadavg
 | 
			
		||||
glibtop_get_loadavg_l
 | 
			
		||||
glibtop_get_loadavg_p
 | 
			
		||||
glibtop_get_loadavg_s
 | 
			
		||||
glibtop_get_mem
 | 
			
		||||
glibtop_get_mem_l
 | 
			
		||||
glibtop_get_mem_p
 | 
			
		||||
glibtop_get_mem_s
 | 
			
		||||
glibtop_get_mountlist
 | 
			
		||||
glibtop_get_mountlist_l
 | 
			
		||||
glibtop_get_mountlist_p
 | 
			
		||||
glibtop_get_mountlist_s
 | 
			
		||||
glibtop_get_msg_limits
 | 
			
		||||
glibtop_get_msg_limits_l
 | 
			
		||||
glibtop_get_msg_limits_p
 | 
			
		||||
glibtop_get_msg_limits_s
 | 
			
		||||
glibtop_get_netlist
 | 
			
		||||
glibtop_get_netlist_l
 | 
			
		||||
glibtop_get_netlist_p
 | 
			
		||||
glibtop_get_netlist_s
 | 
			
		||||
glibtop_get_netload
 | 
			
		||||
glibtop_get_netload_l
 | 
			
		||||
glibtop_get_netload_p
 | 
			
		||||
glibtop_get_netload_s
 | 
			
		||||
glibtop_get_parameter_l
 | 
			
		||||
glibtop_get_parameter_p
 | 
			
		||||
glibtop_get_ppp
 | 
			
		||||
glibtop_get_ppp_l
 | 
			
		||||
glibtop_get_ppp_p
 | 
			
		||||
glibtop_get_ppp_s
 | 
			
		||||
glibtop_get_proc_args
 | 
			
		||||
glibtop_get_proc_args_l
 | 
			
		||||
glibtop_get_proc_args_p
 | 
			
		||||
glibtop_get_proc_args_s
 | 
			
		||||
glibtop_get_proc_argv
 | 
			
		||||
glibtop_get_proc_argv_l
 | 
			
		||||
glibtop_get_proc_argv_p
 | 
			
		||||
glibtop_get_proc_kernel
 | 
			
		||||
glibtop_get_proc_kernel_l
 | 
			
		||||
glibtop_get_proc_kernel_p
 | 
			
		||||
glibtop_get_proc_kernel_s
 | 
			
		||||
glibtop_get_proclist
 | 
			
		||||
glibtop_get_proclist_l
 | 
			
		||||
glibtop_get_proclist_p
 | 
			
		||||
glibtop_get_proclist_s
 | 
			
		||||
glibtop_get_proc_map
 | 
			
		||||
glibtop_get_proc_map_l
 | 
			
		||||
glibtop_get_proc_map_p
 | 
			
		||||
glibtop_get_proc_map_s
 | 
			
		||||
glibtop_get_proc_mem
 | 
			
		||||
glibtop_get_proc_mem_l
 | 
			
		||||
glibtop_get_proc_mem_p
 | 
			
		||||
glibtop_get_proc_mem_s
 | 
			
		||||
glibtop_get_proc_open_files
 | 
			
		||||
glibtop_get_proc_open_files_l
 | 
			
		||||
glibtop_get_proc_open_files_p
 | 
			
		||||
glibtop_get_proc_open_files_s
 | 
			
		||||
glibtop_get_proc_segment
 | 
			
		||||
glibtop_get_proc_segment_l
 | 
			
		||||
glibtop_get_proc_segment_p
 | 
			
		||||
glibtop_get_proc_segment_s
 | 
			
		||||
glibtop_get_proc_signal
 | 
			
		||||
glibtop_get_proc_signal_l
 | 
			
		||||
glibtop_get_proc_signal_p
 | 
			
		||||
glibtop_get_proc_signal_s
 | 
			
		||||
glibtop_get_proc_state
 | 
			
		||||
glibtop_get_proc_state_l
 | 
			
		||||
glibtop_get_proc_state_p
 | 
			
		||||
glibtop_get_proc_state_s
 | 
			
		||||
glibtop_get_proc_time
 | 
			
		||||
glibtop_get_proc_time_l
 | 
			
		||||
glibtop_get_proc_time_p
 | 
			
		||||
glibtop_get_proc_time_s
 | 
			
		||||
glibtop_get_proc_uid
 | 
			
		||||
glibtop_get_proc_uid_l
 | 
			
		||||
glibtop_get_proc_uid_p
 | 
			
		||||
glibtop_get_proc_uid_s
 | 
			
		||||
glibtop_get_proc_wd
 | 
			
		||||
glibtop_get_proc_wd_l
 | 
			
		||||
glibtop_get_proc_wd_p
 | 
			
		||||
glibtop_get_proc_wd_s
 | 
			
		||||
glibtop_get_sem_limits
 | 
			
		||||
glibtop_get_sem_limits_l
 | 
			
		||||
glibtop_get_sem_limits_p
 | 
			
		||||
glibtop_get_sem_limits_s
 | 
			
		||||
glibtop_get_shm_limits
 | 
			
		||||
glibtop_get_shm_limits_l
 | 
			
		||||
glibtop_get_shm_limits_p
 | 
			
		||||
glibtop_get_shm_limits_s
 | 
			
		||||
glibtop_get_swap
 | 
			
		||||
glibtop_get_swap_l
 | 
			
		||||
glibtop_get_swap_p
 | 
			
		||||
glibtop_get_swap_s
 | 
			
		||||
glibtop_get_sysdeps
 | 
			
		||||
glibtop_get_sysdeps_r
 | 
			
		||||
glibtop_get_sysinfo
 | 
			
		||||
glibtop_get_sysinfo_p
 | 
			
		||||
glibtop_get_sysinfo_s
 | 
			
		||||
glibtop_get_uptime
 | 
			
		||||
glibtop_get_uptime_l
 | 
			
		||||
glibtop_get_uptime_p
 | 
			
		||||
glibtop_get_uptime_s
 | 
			
		||||
glibtop_global_server
 | 
			
		||||
glibtop_init
 | 
			
		||||
glibtop_init_p
 | 
			
		||||
glibtop_init_r
 | 
			
		||||
glibtop_init_s
 | 
			
		||||
glibtop_internet_addr
 | 
			
		||||
glibtop_make_connection
 | 
			
		||||
glibtop_open_l
 | 
			
		||||
glibtop_open_p
 | 
			
		||||
glibtop_open_s
 | 
			
		||||
glibtop_server_features
 | 
			
		||||
glibtop_set_parameter_l
 | 
			
		||||
glibtop_set_parameter_p
 | 
			
		||||
glibtop_sys_siglist
 | 
			
		||||
 
 | 
			
		||||
@@ -148,7 +148,7 @@ glibtop_open_l (glibtop *server, const char *program_name,
 | 
			
		||||
		if (nbytes != size)
 | 
			
		||||
			glibtop_error_r (server,
 | 
			
		||||
					 "Requested %u bytes but got %u.",
 | 
			
		||||
					 (unsigned)size, (unsigned)nbytes);
 | 
			
		||||
					 size, nbytes);
 | 
			
		||||
 | 
			
		||||
		glibtop_read_l (server, nbytes, buffer);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -66,8 +66,6 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
 | 
			
		||||
	  libgtop_use_machine_h=no
 | 
			
		||||
	  libgtop_have_sysinfo=yes
 | 
			
		||||
	  libgtop_need_server=no
 | 
			
		||||
	  libgtop_sysdeps_private_mountlist=yes
 | 
			
		||||
	  libgtop_sysdeps_private_fsusage=yes
 | 
			
		||||
	  ;;
 | 
			
		||||
	netbsd*|openbsd*|bsdi*)
 | 
			
		||||
	  libgtop_sysdeps_dir=bsd
 | 
			
		||||
@@ -94,13 +92,6 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
 | 
			
		||||
	  libgtop_have_sysinfo=yes
 | 
			
		||||
	  libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2'
 | 
			
		||||
	  ;;
 | 
			
		||||
	darwin*)
 | 
			
		||||
	  libgtop_sysdeps_dir=darwin
 | 
			
		||||
	  libgtop_use_machine_h=yes
 | 
			
		||||
	  libgtop_need_server=yes
 | 
			
		||||
	  libgtop_have_sysinfo=yes
 | 
			
		||||
	  libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2'
 | 
			
		||||
	  ;;
 | 
			
		||||
	*)
 | 
			
		||||
	  if test x$hacker_mode = xyes ; then
 | 
			
		||||
	    case "$host_os" in
 | 
			
		||||
@@ -320,7 +311,5 @@ main (void)
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	AM_CONDITIONAL(NEED_LIBGTOP, test x$libgtop_need_server = xyes)
 | 
			
		||||
	AM_CONDITIONAL(LIBGTOP_SYSDEPS_PRIVATE_MOUNTLIST, test x$libgtop_sysdeps_private_mountlist = xyes)
 | 
			
		||||
	AM_CONDITIONAL(LIBGTOP_SYSDEPS_PRIVATE_FSUSAGE, test x$libgtop_sysdeps_private_fsusage = xyes)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								po/ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								po/ChangeLog
									
									
									
									
									
								
							@@ -1,47 +1,18 @@
 | 
			
		||||
2008-01-12  Djihed Afifi <djihed@gmail.com> 
 | 
			
		||||
2008-02-20  Pawan Chitrakar <chautari@gmail.com>
 | 
			
		||||
 | 
			
		||||
	* ar.po: Updated Arabic Translation by Khaled Hosny.
 | 
			
		||||
 | 
			
		||||
2008-01-11  Inaki Larranaga Murgoitio  <dooteo@euskalgnu.org>
 | 
			
		||||
 | 
			
		||||
	* eu.po: Updated Basque translation.
 | 
			
		||||
 | 
			
		||||
2007-12-31  Yannig Marchegay <yannig@marchegay.org>
 | 
			
		||||
 | 
			
		||||
	* oc.po: Updated Occitan translation.
 | 
			
		||||
 | 
			
		||||
2007-12-28  Rahul Bhalerao <b.rahul.pm@gmail.com>
 | 
			
		||||
 | 
			
		||||
	* mr.po: Added Marathi translations from Sandeep Shedmake.
 | 
			
		||||
	* LINGUAS: Added an entry for Marathi(mr).
 | 
			
		||||
 | 
			
		||||
2007-11-28  Ignacio Casal Quinteiro   <nacho.resa@gmail.com>
 | 
			
		||||
 | 
			
		||||
	* gl.po: Updated Galician Translation.
 | 
			
		||||
 | 
			
		||||
2007-11-01  Kjartan Maraas  <kmaraas@gnome.org>
 | 
			
		||||
 | 
			
		||||
	* nb.po: Updated Norwegian bokmål translation.
 | 
			
		||||
 | 
			
		||||
2007-10-23  Djihed Afifi <djihed@gmail.com> 
 | 
			
		||||
 | 
			
		||||
	* ar.po: Updated Arabic Translation by Youssef Chahibi.
 | 
			
		||||
	* ne.po: Updated Nepali Translation.
 | 
			
		||||
 | 
			
		||||
2007-10-21  Djihed Afifi <djihed@gmail.com> 
 | 
			
		||||
 | 
			
		||||
	* ar.po: Updated Arabic Translation by Youssef Chahibi.
 | 
			
		||||
 | 
			
		||||
2007-10-18  Matej Urbančič  <mateju@svn.gnome.org>
 | 
			
		||||
 | 
			
		||||
	* sl.po: Updated Slovenian Translation.
 | 
			
		||||
 | 
			
		||||
2007-10-15  Yair Hershkovitz  <yairhr@gmail.com>
 | 
			
		||||
 | 
			
		||||
	* he.po: Updated Hebrew translation.
 | 
			
		||||
 | 
			
		||||
2007-10-02  Alessio Frusciante  <algol@firenze.linux.it>
 | 
			
		||||
2007-10-03  Luca Ferretti  <elle.uca@libero.it>
 | 
			
		||||
 | 
			
		||||
	* it.po: Updated Italian translation.
 | 
			
		||||
	* it.po: Updated Italian translation by Alessio Frusciante.
 | 
			
		||||
 | 
			
		||||
2007-09-18  Alexander Shopov  <ash@contact.bg>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,6 @@ mi
 | 
			
		||||
mk
 | 
			
		||||
ml
 | 
			
		||||
mn
 | 
			
		||||
mr
 | 
			
		||||
ms
 | 
			
		||||
nb
 | 
			
		||||
ne
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										71
									
								
								po/ar.po
									
									
									
									
									
								
							
							
						
						
									
										71
									
								
								po/ar.po
									
									
									
									
									
								
							@@ -5,57 +5,51 @@
 | 
			
		||||
# Arafat Medini <lumina@silverpen.de>, 2002,2003.
 | 
			
		||||
# Isam Bayazidi <bayazidi@arabeyes.org>, 2002.
 | 
			
		||||
# Abdulaziz Al-Arfaj <alarfaj0@yahoo.com>, 2004.
 | 
			
		||||
# Khaled Hosny <khaledhosny@eglug.org>, 2006, 2008.
 | 
			
		||||
# Khaled Hosny <khaledhosny@eglug.org>, 2006.
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop.HEAD.ar\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2007-08-26 14:20-0700\n"
 | 
			
		||||
"PO-Revision-Date: 2008-01-11 23:29+0200\n"
 | 
			
		||||
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
 | 
			
		||||
"Language-Team: Arabic <doc@eglug.org>\n"
 | 
			
		||||
"PO-Revision-Date: 2007-09-08 14:32-0000\n"
 | 
			
		||||
"Last-Translator: Youssef Chahibi <chahibi@gmail.com>\n"
 | 
			
		||||
"Language-Team: Arabic <support@arabeyes.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"X-Generator: KBabel 1.11.4\n"
 | 
			
		||||
"Plural-Forms:  nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n>=3 && n<=10 ? 3 : n>=11 && n<=99 ? 4 : 5;\n"
 | 
			
		||||
"Plural-Forms: Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : n>=3 && n<=10 ? 2 : 3\n"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read.c:51
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %d byte"
 | 
			
		||||
msgid_plural "read %d bytes"
 | 
			
		||||
msgstr[0] "قرأ صفر بايت"
 | 
			
		||||
msgstr[1] "قرأ بايت واحدة"
 | 
			
		||||
msgstr[2] "قرأ بايتين"
 | 
			
		||||
msgstr[3] "قرأ %d بايتات"
 | 
			
		||||
msgstr[4] "قرأ %d بايت"
 | 
			
		||||
msgstr[5] "قرأ %d بايت"
 | 
			
		||||
msgstr[0] "اقرأ بايت واحدة"
 | 
			
		||||
msgstr[1] "اقرأ بايتين"
 | 
			
		||||
msgstr[2] "اقرأ %d بايتات"
 | 
			
		||||
msgstr[3] "اقرأ %d بايت"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read_data.c:51
 | 
			
		||||
msgid "read data size"
 | 
			
		||||
msgstr "حجم البيانات المقروءة"
 | 
			
		||||
msgstr "اقرأ حجم البيانات"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read_data.c:70
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %lu byte of data"
 | 
			
		||||
msgid_plural "read %lu bytes of data"
 | 
			
		||||
msgstr[0] "قرأ صفر بايت من البيانات"
 | 
			
		||||
msgstr[1] "قرأ بايت واحدة من البيانات"
 | 
			
		||||
msgstr[2] "قرأ بايتين من البيانات"
 | 
			
		||||
msgstr[3] "قرأ %lu بايتات من البيانات"
 | 
			
		||||
msgstr[4] "قرأ %lu بايت من البيانات"
 | 
			
		||||
msgstr[5] "قرأ %lu بايت من البيانات"
 | 
			
		||||
msgstr[0] "اقرأ بايت واحدة "
 | 
			
		||||
msgstr[1] "اقرأ بايتين"
 | 
			
		||||
msgstr[2] "اقرأ %lu بايتات"
 | 
			
		||||
msgstr[3] "اقرأ %lu بايت"
 | 
			
		||||
 | 
			
		||||
#: ../lib/write.c:51
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "wrote %d byte"
 | 
			
		||||
msgid_plural "wrote %d bytes"
 | 
			
		||||
msgstr[0] "كتب صفر بايت"
 | 
			
		||||
msgstr[1] "كتب بايت واحدة"
 | 
			
		||||
msgstr[2] "كتب بايتين"
 | 
			
		||||
msgstr[3] "كتب %d بايتات"
 | 
			
		||||
msgstr[4] "كتب %d بايت"
 | 
			
		||||
msgstr[5] "كتب %d بايت"
 | 
			
		||||
msgstr[0] "كتابة بايت واحدة"
 | 
			
		||||
msgstr[1] "كتابة بايتين"
 | 
			
		||||
msgstr[2] "كتابة %d بايتات"
 | 
			
		||||
msgstr[3] "كتابة %d بايت"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:458
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
@@ -63,7 +57,7 @@ msgstr "فعّل التنقيح"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:460
 | 
			
		||||
msgid "Enable verbose output"
 | 
			
		||||
msgstr "فعّل الخرْج المسهِب"
 | 
			
		||||
msgstr "فعّل خرْج مسهِب"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:462
 | 
			
		||||
msgid "Don't fork into background"
 | 
			
		||||
@@ -81,7 +75,7 @@ msgstr "شغّل '%s --help' لرؤية قائمة كاملة لخيارات س
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:27
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:27
 | 
			
		||||
msgid "Hangup"
 | 
			
		||||
msgstr "علّق"
 | 
			
		||||
msgstr "علق"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:28
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:28
 | 
			
		||||
@@ -101,7 +95,7 @@ msgstr "توجيه ممنوع"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:31
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:31
 | 
			
		||||
msgid "Trace trap"
 | 
			
		||||
msgstr "تتبع الأثر"
 | 
			
		||||
msgstr "فخ رسم"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:32
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:32
 | 
			
		||||
@@ -126,7 +120,7 @@ msgstr "اقتل"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:36
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:36
 | 
			
		||||
msgid "Bus error"
 | 
			
		||||
msgstr "خطأ في ناقل"
 | 
			
		||||
msgstr "خطأ ناقل"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:37
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:37
 | 
			
		||||
@@ -136,7 +130,7 @@ msgstr "انتهاك اﻻنقسام"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:38
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:38
 | 
			
		||||
msgid "Bad argument to system call"
 | 
			
		||||
msgstr "معطى سيء لنداء النظام"
 | 
			
		||||
msgstr "متغيّر سيء لنداء النظام"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:39
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:39
 | 
			
		||||
@@ -166,7 +160,7 @@ msgstr "قف"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:44
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:44
 | 
			
		||||
msgid "Keyboard stop"
 | 
			
		||||
msgstr "إيقاف من لوحة المفاتيح"
 | 
			
		||||
msgstr "أوقف لوحة المفاتيح"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:45
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:45
 | 
			
		||||
@@ -191,7 +185,7 @@ msgstr "كتابة لـ tty في الخلفية"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:49
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:49
 | 
			
		||||
msgid "I/O now possible"
 | 
			
		||||
msgstr "الدخْل/الخرْج ممكن الآن"
 | 
			
		||||
msgstr "دخْل/خرْج ممكن الآن"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:50
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:50
 | 
			
		||||
@@ -211,7 +205,7 @@ msgstr "ساعة تنبيه تخيّلية"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:53
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:53
 | 
			
		||||
msgid "Profiling alarm clock"
 | 
			
		||||
msgstr "تشخيص ساعة التنبيه"
 | 
			
		||||
msgstr "كتابة لمحة عن ساعة التنبيه"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:54
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:54
 | 
			
		||||
@@ -226,10 +220,19 @@ msgstr "طلب معلومات"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:56
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:56
 | 
			
		||||
msgid "User defined signal 1"
 | 
			
		||||
msgstr "إشارة 1 معرفة من طرف المستخدم"
 | 
			
		||||
msgstr "اشارة 1 معرفة من طرف المستخدم"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:57
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:57
 | 
			
		||||
msgid "User defined signal 2"
 | 
			
		||||
msgstr "إشارة 2 معرفة من طرف المستخدم"
 | 
			
		||||
msgstr "اشارة 2 معرفة من طرف المستخدم"
 | 
			
		||||
 | 
			
		||||
#~ msgid "DEBUG"
 | 
			
		||||
#~ msgstr "DEBUG"
 | 
			
		||||
#~ msgid "VERBOSE"
 | 
			
		||||
#~ msgstr "VERBOSE"
 | 
			
		||||
#~ msgid "NO-DAEMON"
 | 
			
		||||
#~ msgstr "NO-DAEMON"
 | 
			
		||||
#~ msgid "INETD"
 | 
			
		||||
#~ msgstr "INETD"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								po/eu.po
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								po/eu.po
									
									
									
									
									
								
							@@ -1,18 +1,18 @@
 | 
			
		||||
# translation of libgtop.HEAD.po to Basque
 | 
			
		||||
# translation of eu.po to Basque
 | 
			
		||||
# This file is distributed under the same license as the PACKAGE package.
 | 
			
		||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
 | 
			
		||||
#
 | 
			
		||||
# Hizkuntza Politikarako Sailburuordetza <hizpol@ej-gv.es>, 2004.
 | 
			
		||||
# Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>, 2004, 2005, 2008.
 | 
			
		||||
# Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>, 2004, 2005.
 | 
			
		||||
# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2007.
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop.HEAD\n"
 | 
			
		||||
"Project-Id-Version: eu\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2008-01-11 16:41+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2008-01-10 23:26+0100\n"
 | 
			
		||||
"Last-Translator: Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>\n"
 | 
			
		||||
"Language-Team: Basque <itzulpena@euskalgnu.org>\n"
 | 
			
		||||
"POT-Creation-Date: 2007-08-05 13:55+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2007-08-05 13:56+0200\n"
 | 
			
		||||
"Last-Translator: Iñaki Larrañaga Murgoitio <dooteo@zundan.com>\n"
 | 
			
		||||
"Language-Team: Basque <eu@li.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
@@ -149,11 +149,11 @@ msgstr "Umearen egoera aldatu egin da"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
 | 
			
		||||
msgid "Background read from tty"
 | 
			
		||||
msgstr "Irakurri tty atzeko planoan"
 | 
			
		||||
msgstr "Irakurri tty atzeko planoan "
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
 | 
			
		||||
msgid "Background write to tty"
 | 
			
		||||
msgstr "Idatzi tty-en atzeko planoan"
 | 
			
		||||
msgstr "Idatzi tty-en atzeko planoan "
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
 | 
			
		||||
msgid "I/O now possible"
 | 
			
		||||
@@ -190,3 +190,4 @@ msgstr "Erabiltzaileak zehaztutako 1. seinalea"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
 | 
			
		||||
msgid "User defined signal 2"
 | 
			
		||||
msgstr "Erabiltzaileak zehaztutako 2. seinalea"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										120
									
								
								po/gl.po
									
									
									
									
									
								
							
							
						
						
									
										120
									
								
								po/gl.po
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
# translation of gl.po to Galego
 | 
			
		||||
# translation of libgtop.gnome-2-10.po to Galego
 | 
			
		||||
# Galician translation of libgtop.
 | 
			
		||||
# Copyright (C) 1999, 2000 Jesus Bravo Alvarez
 | 
			
		||||
#
 | 
			
		||||
@@ -9,193 +9,209 @@
 | 
			
		||||
#
 | 
			
		||||
# Se alguén me axuda coa revisión dalgunhas traduccións "pouco ortodoxas",
 | 
			
		||||
# agradeceríallo. ;-)
 | 
			
		||||
#
 | 
			
		||||
# Jesus Bravo Alvarez <jba@pobox.com>, 1999, 2000.
 | 
			
		||||
# Ignacio Casal Quinteiro <nacho.resa@gmail.com>, 2005.
 | 
			
		||||
# Ignacio Casal Quinteiro <icq@svn.gnome.org>, 2007.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: gl\n"
 | 
			
		||||
"Project-Id-Version: libgtop.gnome-2-10\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2007-11-28 15:25+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2007-11-28 15:25+0100\n"
 | 
			
		||||
"Last-Translator: Ignacio Casal Quinteiro <icq@svn.gnome.org>\n"
 | 
			
		||||
"Language-Team: Galego <proxecto@trasno.net>\n"
 | 
			
		||||
"POT-Creation-Date: 2006-12-04 15:52+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2005-06-13 17:22+0200\n"
 | 
			
		||||
"Last-Translator: Ignacio Casal Quinteiro <nacho.resa@gmail.com>\n"
 | 
			
		||||
"Language-Team: Galego\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"X-Generator: KBabel 1.11.4\n"
 | 
			
		||||
"X-Generator: KBabel 1.9.1\n"
 | 
			
		||||
"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read.c:51
 | 
			
		||||
#: ../lib/read.c:65
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %d byte"
 | 
			
		||||
msgid_plural "read %d bytes"
 | 
			
		||||
msgstr[0] "lido %d byte"
 | 
			
		||||
msgstr[1] "lidos %d bytes"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read_data.c:51
 | 
			
		||||
#: ../lib/read_data.c:53
 | 
			
		||||
msgid "read data size"
 | 
			
		||||
msgstr "tamaño dos datos lidos"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read_data.c:70
 | 
			
		||||
#: ../lib/read_data.c:72
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %lu byte of data"
 | 
			
		||||
msgid_plural "read %lu bytes of data"
 | 
			
		||||
msgstr[0] "lido %lu byte de datos"
 | 
			
		||||
msgstr[1] "lidos %lu bytes de datos"
 | 
			
		||||
 | 
			
		||||
#: ../lib/write.c:51
 | 
			
		||||
#: ../lib/write.c:53
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "wrote %d byte"
 | 
			
		||||
msgid_plural "wrote %d bytes"
 | 
			
		||||
msgstr[0] "escrito %d byte"
 | 
			
		||||
msgstr[1] "escritos %d bytes"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:458
 | 
			
		||||
#: ../src/daemon/gnuserv.c:460
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
msgstr "Activar depuración"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:460
 | 
			
		||||
msgid "DEBUG"
 | 
			
		||||
msgstr "DEPURACIÓN"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:462
 | 
			
		||||
msgid "Enable verbose output"
 | 
			
		||||
msgstr "Activar saída detallada"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:462
 | 
			
		||||
msgid "VERBOSE"
 | 
			
		||||
msgstr "DETALLADO"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:464
 | 
			
		||||
msgid "Don't fork into background"
 | 
			
		||||
msgstr "Non facer fork na tarefa de fondo"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:464
 | 
			
		||||
msgid "NO-DAEMON"
 | 
			
		||||
msgstr "NON-DAEMON"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:466
 | 
			
		||||
msgid "Invoked from inetd"
 | 
			
		||||
msgstr "Invocado desde inetd"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:498
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Run '%s --help' to see a full list of available command line options.\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Execute '%s --help' para ver unha lista completa das opcións de liña\n"
 | 
			
		||||
"de comandos dispoñibles.\n"
 | 
			
		||||
#: ../src/daemon/gnuserv.c:466
 | 
			
		||||
msgid "INETD"
 | 
			
		||||
msgstr "INETD"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
 | 
			
		||||
#: ../src/daemon/gnuserv.c:500
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Error on option %s: %s.\n"
 | 
			
		||||
"Run '%s --help' to see a full list of available command line options.\n"
 | 
			
		||||
msgstr "Produciuse un erro na opción %s: %s.\n"
 | 
			
		||||
       "Execute '%s --help' para ver unha lista completa das opcións de liña\n"
 | 
			
		||||
       "de comandos dispoñibles.\n"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
 | 
			
		||||
msgid "Hangup"
 | 
			
		||||
msgstr "Colgar"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
 | 
			
		||||
msgid "Interrupt"
 | 
			
		||||
msgstr "Interromper"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
 | 
			
		||||
msgid "Quit"
 | 
			
		||||
msgstr "Saír"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
 | 
			
		||||
msgid "Illegal instruction"
 | 
			
		||||
msgstr "Instrución ilegal"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
 | 
			
		||||
msgid "Trace trap"
 | 
			
		||||
msgstr "Captura do rastro"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
 | 
			
		||||
msgid "Abort"
 | 
			
		||||
msgstr "Interromper"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
 | 
			
		||||
msgid "EMT error"
 | 
			
		||||
msgstr "Erro EMT"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
 | 
			
		||||
msgid "Floating-point exception"
 | 
			
		||||
msgstr "Excepción da coma flotante"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
 | 
			
		||||
msgid "Kill"
 | 
			
		||||
msgstr "Matar"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
 | 
			
		||||
msgid "Bus error"
 | 
			
		||||
msgstr "Erro de bus"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
 | 
			
		||||
msgid "Segmentation violation"
 | 
			
		||||
msgstr "Erro de segmento"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
 | 
			
		||||
msgid "Bad argument to system call"
 | 
			
		||||
msgstr "Argumento incorrecto na chamada ao sistema"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
 | 
			
		||||
msgid "Broken pipe"
 | 
			
		||||
msgstr "Canalización danada"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
 | 
			
		||||
msgid "Alarm clock"
 | 
			
		||||
msgstr "Reloxo de alarma"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
 | 
			
		||||
msgid "Termination"
 | 
			
		||||
msgstr "Finalización"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
 | 
			
		||||
msgid "Urgent condition on socket"
 | 
			
		||||
msgstr "Condición urxente no conectador"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
 | 
			
		||||
msgid "Stop"
 | 
			
		||||
msgstr "Deter"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
 | 
			
		||||
msgid "Keyboard stop"
 | 
			
		||||
msgstr "Detención co teclado"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
 | 
			
		||||
msgid "Continue"
 | 
			
		||||
msgstr "Continuar"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
 | 
			
		||||
msgid "Child status has changed"
 | 
			
		||||
msgstr "O estado do fillo cambiou"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
 | 
			
		||||
msgid "Background read from tty"
 | 
			
		||||
msgstr "Lectura en segundo plano do tty"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
 | 
			
		||||
msgid "Background write to tty"
 | 
			
		||||
msgstr "Escritura en segundo plano ao tty"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
 | 
			
		||||
msgid "I/O now possible"
 | 
			
		||||
msgstr "A E/S é posible agora"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
 | 
			
		||||
msgid "CPU limit exceeded"
 | 
			
		||||
msgstr "Límite de CPU excedido"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
 | 
			
		||||
msgid "File size limit exceeded"
 | 
			
		||||
msgstr "Excedeuse o límite de tamaño do ficheiro"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
 | 
			
		||||
msgid "Virtual alarm clock"
 | 
			
		||||
msgstr "Reloxo de alarma virtual"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
 | 
			
		||||
msgid "Profiling alarm clock"
 | 
			
		||||
msgstr "Reloxo de alarma con perfil"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
 | 
			
		||||
msgid "Window size change"
 | 
			
		||||
msgstr "Cambio do tamaño da ventá"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
 | 
			
		||||
msgid "Information request"
 | 
			
		||||
msgstr "Petición de Información"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:58 ../sysdeps/sun4/siglist.c:58
 | 
			
		||||
msgid "User defined signal 1"
 | 
			
		||||
msgstr "Sinal 1 definido polo usuario"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:59 ../sysdeps/sun4/siglist.c:59
 | 
			
		||||
msgid "User defined signal 2"
 | 
			
		||||
msgstr "Sinal 2 definido polo usuario"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								po/it.po
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								po/it.po
									
									
									
									
									
								
							@@ -6,7 +6,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2007-10-02 23:18+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2007-10-03 14:34+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2007-10-02 23:18+0200\n"
 | 
			
		||||
"Last-Translator: Alessio Frusciante <algol@firenze.linux.it>\n"
 | 
			
		||||
"Language-Team: Italian <tp@lists.linux.it>\n"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										190
									
								
								po/mr.po
									
									
									
									
									
								
							
							
						
						
									
										190
									
								
								po/mr.po
									
									
									
									
									
								
							@@ -1,190 +0,0 @@
 | 
			
		||||
# translation of libgtop.HEAD.mr.po to marathi
 | 
			
		||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 | 
			
		||||
# This file is distributed under the same license as the PACKAGE package.
 | 
			
		||||
#
 | 
			
		||||
# sandeep shedmake <sandeep.shedmake@gmail.com>, 2007.
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop.HEAD.mr\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2007-12-11 03:56+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2007-12-12 10:37+0530\n"
 | 
			
		||||
"Last-Translator: sandeep shedmake <sandeep.shedmake@gmail.com>\n"
 | 
			
		||||
"Language-Team: marathi\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"X-Generator: KBabel 1.11.4\n"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read.c:51
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %d byte"
 | 
			
		||||
msgid_plural "read %d bytes"
 | 
			
		||||
msgstr[0] "%d बाइट वाचा"
 | 
			
		||||
msgstr[1] "%d बाइट वाचा"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read_data.c:51
 | 
			
		||||
msgid "read data size"
 | 
			
		||||
msgstr "माहिती आकार वाचा"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read_data.c:70
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %lu byte of data"
 | 
			
		||||
msgid_plural "read %lu bytes of data"
 | 
			
		||||
msgstr[0] "%lu बाइट माहिती वाचा"
 | 
			
		||||
msgstr[1] "%lu बाइट माहिती वाचा"
 | 
			
		||||
 | 
			
		||||
#: ../lib/write.c:51
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "wrote %d byte"
 | 
			
		||||
msgid_plural "wrote %d bytes"
 | 
			
		||||
msgstr[0] "%d बाइट लिहीले"
 | 
			
		||||
msgstr[1] "%d बाइट लिहीले"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:458
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
msgstr "निर्धारण कार्यान्वीत करा"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:460
 | 
			
		||||
msgid "Enable verbose output"
 | 
			
		||||
msgstr "प्रदान वाचताजोगी करा"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:462
 | 
			
		||||
msgid "Don't fork into background"
 | 
			
		||||
msgstr "पार्श्वभूमीत विभाजीत करू नका"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:464
 | 
			
		||||
msgid "Invoked from inetd"
 | 
			
		||||
msgstr "inetd पासून प्रेरीत"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:498
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Run '%s --help' to see a full list of available command line options.\n"
 | 
			
		||||
msgstr "उपलब्ध आदेश ओळ पर्याय दर्शविण्याकरीता '%s --help' चालवा.\n"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
 | 
			
		||||
msgid "Hangup"
 | 
			
		||||
msgstr "स्तब्ध"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
 | 
			
		||||
msgid "Interrupt"
 | 
			
		||||
msgstr "अडथळा"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
 | 
			
		||||
msgid "Quit"
 | 
			
		||||
msgstr "बाहेर पडा"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
 | 
			
		||||
msgid "Illegal instruction"
 | 
			
		||||
msgstr "अवैध सूचना"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
 | 
			
		||||
msgid "Trace trap"
 | 
			
		||||
msgstr "शोध जतन करा"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
 | 
			
		||||
msgid "Abort"
 | 
			
		||||
msgstr "वगळा"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
 | 
			
		||||
msgid "EMT error"
 | 
			
		||||
msgstr "EMT त्रुटी"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
 | 
			
		||||
msgid "Floating-point exception"
 | 
			
		||||
msgstr "संख्यात्मक अपवाद"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
 | 
			
		||||
msgid "Kill"
 | 
			
		||||
msgstr "नष्ट करा"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
 | 
			
		||||
msgid "Bus error"
 | 
			
		||||
msgstr "बस त्रुटी"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
 | 
			
		||||
msgid "Segmentation violation"
 | 
			
		||||
msgstr "अनैतिक विभागणी"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
 | 
			
		||||
msgid "Bad argument to system call"
 | 
			
		||||
msgstr "प्रणाली कार्यपध्दतीकरीता खराब बाब"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
 | 
			
		||||
msgid "Broken pipe"
 | 
			
		||||
msgstr "अवैध पाईप"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
 | 
			
		||||
msgid "Alarm clock"
 | 
			
		||||
msgstr "सूचनात्मक घड्याळ"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
 | 
			
		||||
msgid "Termination"
 | 
			
		||||
msgstr "वगळा"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
 | 
			
		||||
msgid "Urgent condition on socket"
 | 
			
		||||
msgstr "सॉकेटवरील तातडीची परिस्थिती"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
 | 
			
		||||
msgid "Stop"
 | 
			
		||||
msgstr "थांबा"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
 | 
			
		||||
msgid "Keyboard stop"
 | 
			
		||||
msgstr "कळफलक अकार्यान्वीत"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
 | 
			
		||||
msgid "Continue"
 | 
			
		||||
msgstr "पुढे जा"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
 | 
			
		||||
msgid "Child status has changed"
 | 
			
		||||
msgstr "उपकार्यांची स्थिती बदलली आहे"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
 | 
			
		||||
msgid "Background read from tty"
 | 
			
		||||
msgstr "tty पासून पृष्ठभाग वाचन"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
 | 
			
		||||
msgid "Background write to tty"
 | 
			
		||||
msgstr "tty कडे पृष्ठभाग लेखन"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
 | 
			
		||||
msgid "I/O now possible"
 | 
			
		||||
msgstr "I/O आता शक्य आहे"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
 | 
			
		||||
msgid "CPU limit exceeded"
 | 
			
		||||
msgstr "CPU मर्यादा वाढल्या गेले"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
 | 
			
		||||
msgid "File size limit exceeded"
 | 
			
		||||
msgstr "फाइल आकार मर्यादा पलीकडे"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
 | 
			
		||||
msgid "Virtual alarm clock"
 | 
			
		||||
msgstr "आभासी सूचनात्मक घड्याळ"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
 | 
			
		||||
msgid "Profiling alarm clock"
 | 
			
		||||
msgstr "सूचनात्मक घड्याळ संक्षिप्त चित्र बनवित आहे"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
 | 
			
		||||
msgid "Window size change"
 | 
			
		||||
msgstr "चौकट आकार बदलवा"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
 | 
			
		||||
msgid "Information request"
 | 
			
		||||
msgstr "माहितीकरीता विनंती"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
 | 
			
		||||
msgid "User defined signal 1"
 | 
			
		||||
msgstr "वापरकर्ता व्याख्यीत संकेत 1"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
 | 
			
		||||
msgid "User defined signal 2"
 | 
			
		||||
msgstr "वापरकर्ता व्याख्यीत संकेत 2"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										6
									
								
								po/nb.po
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								po/nb.po
									
									
									
									
									
								
							@@ -1,15 +1,15 @@
 | 
			
		||||
# Norwegian translation for Libgtop (bokmål dialect)
 | 
			
		||||
# Copyright (C) 1998-2004 Free Software Foundation, Inc.
 | 
			
		||||
# Kjartan Maraas <kmaraas@gnome.org>, 1998-2007.
 | 
			
		||||
# Kjartan Maraas <kmaraas@gnome.org>, 1998-2004.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop 2.21.x\n"
 | 
			
		||||
"Project-Id-Version: libgtop 2.5.1\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2007-06-23 11:52+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2007-06-23 11:52+0200\n"
 | 
			
		||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
 | 
			
		||||
"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n"
 | 
			
		||||
"Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8-bit\n"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										158
									
								
								po/ne.po
									
									
									
									
									
								
							
							
						
						
									
										158
									
								
								po/ne.po
									
									
									
									
									
								
							@@ -1,23 +1,21 @@
 | 
			
		||||
# translation of libgtop.HEAD.ne.po to Nepali
 | 
			
		||||
# translation of libgtop.gnome-2-10.ne.po to Nepali
 | 
			
		||||
# translation of libgtop.gnome-2-10.po to Nepali
 | 
			
		||||
# translation of libgtop.HEAD.po to Nepali
 | 
			
		||||
# translation of libgtop.gnome-2-20.ne.po to Nepali
 | 
			
		||||
# Nepali Translation Project.
 | 
			
		||||
# This file is distributed under the same license as the libgtop package.
 | 
			
		||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
 | 
			
		||||
#
 | 
			
		||||
# Pawan Chitrakar  <pawan@nplinux.org>, 2004.
 | 
			
		||||
# Jaydeep Bhusal <zaydeep@hotmail.com>, 2005.
 | 
			
		||||
# Bishnu Adhikari <bsn_adk@hotmail.com>, 2005.
 | 
			
		||||
# Shiva  Pokharel <pokharelshiva@hotmail.com>, 2005.
 | 
			
		||||
# Mahesh subedi <submanesh@hotmail.com>, 2006.
 | 
			
		||||
#
 | 
			
		||||
# Nabin Gautam <nabin@mpp.org.np>, 2007.
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop.HEAD.ne\n"
 | 
			
		||||
"Project-Id-Version: libgtop.gnome-2-20.ne\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2006-07-14 22:35+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2006-07-20 14:58+0545\n"
 | 
			
		||||
"Last-Translator: Mahesh subedi <submanesh@hotmail.com>\n"
 | 
			
		||||
"POT-Creation-Date: 2007-09-30 03:40+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2007-12-19 12:53+0545\n"
 | 
			
		||||
"Last-Translator: Nabin Gautam <nabin@mpp.org.np>\n"
 | 
			
		||||
"Language-Team: Nepali <info@mpp.org.np>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
@@ -25,196 +23,176 @@ msgstr ""
 | 
			
		||||
"X-Poedit-Language: Nepali\n"
 | 
			
		||||
"X-Poedit-Country: NEPAL\n"
 | 
			
		||||
"X-Poedit-SourceCharset: utf-8\n"
 | 
			
		||||
"X-Generator: KBabel 1.10.2\n"
 | 
			
		||||
"Plural-Forms: nplurals=2;plural=(n!=1)\n"
 | 
			
		||||
"X-Generator: KBabel 1.11.4\n"
 | 
			
		||||
"Plural-Forms: nplurals=2; plural=n !=1\n"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read.c:65
 | 
			
		||||
#: ../lib/read.c:51
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %d byte"
 | 
			
		||||
msgid_plural "read %d bytes"
 | 
			
		||||
msgstr[0] "%d बाइट पढ्नुहोस्"
 | 
			
		||||
msgstr[1] "%d बाइट्स पढ्नुहोस्"
 | 
			
		||||
msgstr[1] "%d बाइट पढ्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read_data.c:53
 | 
			
		||||
#: ../lib/read_data.c:51
 | 
			
		||||
msgid "read data size"
 | 
			
		||||
msgstr "डेटा साइज पढ्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read_data.c:72
 | 
			
		||||
#: ../lib/read_data.c:70
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %lu byte of data"
 | 
			
		||||
msgid_plural "read %lu bytes of data"
 | 
			
		||||
msgstr[0] "डेटाको %lu बाइट पढ्नुहोस्"
 | 
			
		||||
msgstr[1] "डेटाको %lu बाइट्स पढ्नुहोस्"
 | 
			
		||||
msgstr[1] "डेटाको %lu बाइट पढ्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../lib/write.c:53
 | 
			
		||||
#: ../lib/write.c:51
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "wrote %d byte"
 | 
			
		||||
msgid_plural "wrote %d bytes"
 | 
			
		||||
msgstr[0] "%d बाइट लेख्यो"
 | 
			
		||||
msgstr[1] "%d बाइट्स लेख्यो"
 | 
			
		||||
msgstr[1] "%d बाइट लेख्यो"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:460
 | 
			
		||||
#: ../src/daemon/gnuserv.c:458
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
msgstr "डिबग सक्षम पार्नुहोस्"
 | 
			
		||||
msgstr "डिबगिङ सक्षम पार्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:460
 | 
			
		||||
msgid "DEBUG"
 | 
			
		||||
msgstr "DEBUG"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:462
 | 
			
		||||
msgid "Enable verbose output"
 | 
			
		||||
msgstr "भर्बोज निर्गत सक्षम पार्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:462
 | 
			
		||||
msgid "VERBOSE"
 | 
			
		||||
msgstr "VERBOSE"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:464
 | 
			
		||||
msgid "Don't fork into background"
 | 
			
		||||
msgstr "पृष्ठभूमिमा फोर्क नगर्नुहोस्"
 | 
			
		||||
msgstr "पृष्ठभूमिमा बिभाजन नगर्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:464
 | 
			
		||||
msgid "NO-DAEMON"
 | 
			
		||||
msgstr "NO-DAEMON"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:466
 | 
			
		||||
msgid "Invoked from inetd"
 | 
			
		||||
msgstr "इनेट्डबाट आव्हान गरिएको"
 | 
			
		||||
msgstr "inetd बाट आह्वान गरिएको"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:466
 | 
			
		||||
msgid "INETD"
 | 
			
		||||
msgstr "INETD"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:500
 | 
			
		||||
#: ../src/daemon/gnuserv.c:498
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Error on option %s: %s.\n"
 | 
			
		||||
"Run '%s --help' to see a full list of available command line options.\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"%s: %s विकल्पमा त्रुटि।\n"
 | 
			
		||||
"उपलब्ध आदेश लाइन विकल्पहरूको एउटा पूर्ण सूची हेर्नका लागि '%s --मद्दत' चलाउनुहोस्।\n"
 | 
			
		||||
msgid "Run '%s --help' to see a full list of available command line options.\n"
 | 
			
		||||
msgstr "उपलब्ध आदेश लाइन विकल्पको पूरै सूची हेर्न  '%s --मद्दत' चलाउनुहोस् ।\n"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
 | 
			
		||||
msgid "Hangup"
 | 
			
		||||
msgstr "ह्याङ अप"
 | 
			
		||||
msgstr "ह्याङअप"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
 | 
			
		||||
msgid "Interrupt"
 | 
			
		||||
msgstr "रोकावट"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
 | 
			
		||||
msgid "Quit"
 | 
			
		||||
msgstr "अन्त्य गर्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
 | 
			
		||||
msgid "Illegal instruction"
 | 
			
		||||
msgstr "अवैध निर्देशन"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
 | 
			
		||||
msgid "Trace trap"
 | 
			
		||||
msgstr "पदचिन्ह ट्रयाप"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
 | 
			
		||||
msgid "Abort"
 | 
			
		||||
msgstr "परित्याग गर्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
 | 
			
		||||
msgid "EMT error"
 | 
			
		||||
msgstr "EMT त्रुटि"
 | 
			
		||||
msgstr "इएमटी (EMT) त्रुटि"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
 | 
			
		||||
msgid "Floating-point exception"
 | 
			
		||||
msgstr "उत्प्लावन बिन्दु अपवाद"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
 | 
			
		||||
msgid "Kill"
 | 
			
		||||
msgstr "नष्ट गर्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
 | 
			
		||||
msgid "Bus error"
 | 
			
		||||
msgstr "बस त्रुटि"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
 | 
			
		||||
msgid "Segmentation violation"
 | 
			
		||||
msgstr "खण्डीकरण खण्डन"
 | 
			
		||||
msgstr "खण्डीकरण बिखण्डन"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
 | 
			
		||||
msgid "Bad argument to system call"
 | 
			
		||||
msgstr "प्रणाली कलमा खराब तर्क"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
 | 
			
		||||
msgid "Broken pipe"
 | 
			
		||||
msgstr "विच्छेद पाइप"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
 | 
			
		||||
msgid "Alarm clock"
 | 
			
		||||
msgstr "सचेतक घडि"
 | 
			
		||||
msgstr "सचेतक घडी"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
 | 
			
		||||
msgid "Termination"
 | 
			
		||||
msgstr "समाप्ति"
 | 
			
		||||
msgstr "अन्त्य"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
 | 
			
		||||
msgid "Urgent condition on socket"
 | 
			
		||||
msgstr "सकेटमा आकस्मिक अवस्था"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
 | 
			
		||||
msgid "Stop"
 | 
			
		||||
msgstr "रोक्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
 | 
			
		||||
msgid "Keyboard stop"
 | 
			
		||||
msgstr "कुञ्जिपाटी बन्द"
 | 
			
		||||
msgstr "कुञ्जिपाटी बन्द गर्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
 | 
			
		||||
msgid "Continue"
 | 
			
		||||
msgstr "जारी राख्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
 | 
			
		||||
msgid "Child status has changed"
 | 
			
		||||
msgstr "चाइल्ड वस्तुस्थिति परिवर्तन गरिएको छ"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
 | 
			
		||||
msgid "Background read from tty"
 | 
			
		||||
msgstr "टिटिवाइ बाट पृष्ठभूमि पढ्नुहोस्"
 | 
			
		||||
msgstr "tty बाट पृष्ठभूमि पढ्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
 | 
			
		||||
msgid "Background write to tty"
 | 
			
		||||
msgstr "tty मा पृष्ठभूमि लेख्नुहोस्"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
 | 
			
		||||
msgid "I/O now possible"
 | 
			
		||||
msgstr "I/O अब सम्भव छ"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
 | 
			
		||||
msgid "Background write to tty"
 | 
			
		||||
msgstr "टिटिवाइ बाट पृष्ठभूमि लेख्नुहोस्"
 | 
			
		||||
msgid "CPU limit exceeded"
 | 
			
		||||
msgstr "सीपीयू (CPU) सीमा नाघ्यो"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
 | 
			
		||||
msgid "I/O now possible"
 | 
			
		||||
msgstr "I/O अब सम्भव"
 | 
			
		||||
msgid "File size limit exceeded"
 | 
			
		||||
msgstr "फाइल साइज सीमा नाघ्यो"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
 | 
			
		||||
msgid "CPU limit exceeded"
 | 
			
		||||
msgstr "CPU को सीमा नाघ्यो"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
 | 
			
		||||
msgid "File size limit exceeded"
 | 
			
		||||
msgstr "फाइल साइजको सीमा नाघ्यो"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
 | 
			
		||||
msgid "Virtual alarm clock"
 | 
			
		||||
msgstr "अवास्तविक सचेतक घडी"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
 | 
			
		||||
msgid "Profiling alarm clock"
 | 
			
		||||
msgstr "सचेतक घडीको प्रोफाइल हुँदैछ"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
 | 
			
		||||
msgid "Window size change"
 | 
			
		||||
msgstr "सञ्झ्याल साइज परिवर्तन"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
 | 
			
		||||
msgid "Information request"
 | 
			
		||||
msgstr "सूचना अनुरोध"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:58 ../sysdeps/sun4/siglist.c:58
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
 | 
			
		||||
msgid "User defined signal 1"
 | 
			
		||||
msgstr "प्रयोगकर्ता परिभषित सङ्केत १"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:59 ../sysdeps/sun4/siglist.c:59
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
 | 
			
		||||
msgid "User defined signal 2"
 | 
			
		||||
msgstr "प्रयोगकर्ता परिभषित सङ्केत २"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								po/oc.po
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								po/oc.po
									
									
									
									
									
								
							@@ -1,15 +1,16 @@
 | 
			
		||||
# Occitan translation of libgtop.
 | 
			
		||||
# Copyright (C) 1998-2004, 2007 Free Software Foundation, Inc.
 | 
			
		||||
# Copyright (C) 1998-2004 Free Software Foundation, Inc.
 | 
			
		||||
# This file is distributed under the GNU General Public License Version 2.
 | 
			
		||||
#
 | 
			
		||||
# Yannig Marchegay (Kokoyaya) <yannig@marchegay.org> - 2006-2007
 | 
			
		||||
# Yannig MARCHEGAY (yannig@marchegay.org) - 2006-2007
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: oc\n"
 | 
			
		||||
"Project-Id-Version: libgtop 2.9.91\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2007-12-27 13:30+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2007-11-20 14:32+0100\n"
 | 
			
		||||
"Last-Translator: Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>\n"
 | 
			
		||||
"POT-Creation-Date: 2007-08-21 12:14+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2007-08-21 00:51+0200\n"
 | 
			
		||||
"Last-Translator: Yannig MARCHEGAY (Kokoyaya) <yannig@marchegay.org>\n"
 | 
			
		||||
"Language-Team: Occitan (post 1500) <ubuntu-l10n-oci@lists.ubuntu.com>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
@@ -20,8 +21,8 @@ msgstr ""
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %d byte"
 | 
			
		||||
msgid_plural "read %d bytes"
 | 
			
		||||
msgstr[0] "a legit %d octet"
 | 
			
		||||
msgstr[1] "a legits %d octets"
 | 
			
		||||
msgstr[0] ""
 | 
			
		||||
msgstr[1] ""
 | 
			
		||||
 | 
			
		||||
#: ../lib/read_data.c:51
 | 
			
		||||
msgid "read data size"
 | 
			
		||||
@@ -38,8 +39,8 @@ msgstr[1] ""
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "wrote %d byte"
 | 
			
		||||
msgid_plural "wrote %d bytes"
 | 
			
		||||
msgstr[0] "a escrich %d octet"
 | 
			
		||||
msgstr[1] "a escriches %d octets"
 | 
			
		||||
msgstr[0] ""
 | 
			
		||||
msgstr[1] ""
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:458
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										57
									
								
								po/sl.po
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								po/sl.po
									
									
									
									
									
								
							@@ -1,29 +1,30 @@
 | 
			
		||||
# Slovenian translation of libgtop
 | 
			
		||||
# Copyright (C) 2000 Free Software Foundation, Inc.
 | 
			
		||||
# Andraz Tori <andraz.tori1@guest.arnes.si>, 2000.
 | 
			
		||||
# Matic Žgur <mr.zgur@gmail.com>, 2006.
 | 
			
		||||
# Matej Urbančič <matej.urban@gmail.com>, 2007.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: libgtop\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2007-05-14 03:41+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2007-10-18 16:10+0100\n"
 | 
			
		||||
"Last-Translator: Matej Urbančič <matej.urban@gmail.com>\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=libgtop&component=general\n"
 | 
			
		||||
"POT-Creation-Date: 2009-04-17 10:18+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2009-10-19 09:59+0100\n"
 | 
			
		||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
 | 
			
		||||
"Language-Team: Slovenian <sl@li.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
 | 
			
		||||
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3\n"
 | 
			
		||||
"X-Poedit-Language: Slovenian\n"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read.c:51
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %d byte"
 | 
			
		||||
msgid_plural "read %d bytes"
 | 
			
		||||
msgstr[0] "prebranih %d bajtov"
 | 
			
		||||
msgstr[1] "prebran %d bajt"
 | 
			
		||||
msgstr[2] "prebrana %d bajta"
 | 
			
		||||
msgstr[3] "prebrani %d bajti"
 | 
			
		||||
msgstr[0] "prebran %d bajt"
 | 
			
		||||
msgstr[1] "prebrana %d bajta"
 | 
			
		||||
msgstr[2] "prebrani %d bajti"
 | 
			
		||||
msgstr[3] "prebranih %d bajtov"
 | 
			
		||||
 | 
			
		||||
#: ../lib/read_data.c:51
 | 
			
		||||
msgid "read data size"
 | 
			
		||||
@@ -33,19 +34,19 @@ msgstr "prebrana velikost podatkov"
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "read %lu byte of data"
 | 
			
		||||
msgid_plural "read %lu bytes of data"
 | 
			
		||||
msgstr[0] "prebranih %lu bajtov podatkov"
 | 
			
		||||
msgstr[1] "prebran %lu bajt podatkov"
 | 
			
		||||
msgstr[2] "prebrana %lu bajta podatkov"
 | 
			
		||||
msgstr[3] "prebrani %lu bajti podatkov"
 | 
			
		||||
msgstr[0] "prebran %lu bajt podatkov"
 | 
			
		||||
msgstr[1] "prebrana %lu bajta podatkov"
 | 
			
		||||
msgstr[2] "prebrani %lu bajti podatkov"
 | 
			
		||||
msgstr[3] "prebranih %lu bajtov podatkov"
 | 
			
		||||
 | 
			
		||||
#: ../lib/write.c:51
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "wrote %d byte"
 | 
			
		||||
msgid_plural "wrote %d bytes"
 | 
			
		||||
msgstr[0] "zapisanih %d bajtov"
 | 
			
		||||
msgstr[1] "zapisan %d bajt"
 | 
			
		||||
msgstr[2] "zapisana %d bajta"
 | 
			
		||||
msgstr[3] "zapisani %d bajti"
 | 
			
		||||
msgstr[0] "zapisan %d bajt"
 | 
			
		||||
msgstr[1] "zapisana %d bajta"
 | 
			
		||||
msgstr[2] "zapisani %d bajti"
 | 
			
		||||
msgstr[3] "zapisanih %d bajtov"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:458
 | 
			
		||||
msgid "Enable debugging"
 | 
			
		||||
@@ -53,7 +54,7 @@ msgstr "Vključi razhroščevanje"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:460
 | 
			
		||||
msgid "Enable verbose output"
 | 
			
		||||
msgstr "Vključi podroben izpis"
 | 
			
		||||
msgstr "Vključi zgovoren izhod"
 | 
			
		||||
 | 
			
		||||
#: ../src/daemon/gnuserv.c:462
 | 
			
		||||
msgid "Don't fork into background"
 | 
			
		||||
@@ -66,7 +67,7 @@ msgstr "Poklican iz programa inetd"
 | 
			
		||||
#: ../src/daemon/gnuserv.c:498
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Run '%s --help' to see a full list of available command line options.\n"
 | 
			
		||||
msgstr "Z zastavico '%s --help' se izpiše popoln seznam možnosti ukaza.\n"
 | 
			
		||||
msgstr "Zaženite '%s --help', če želite videti popoln seznam možnosti ukazne vrstice.\n"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:27
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:27
 | 
			
		||||
@@ -86,7 +87,7 @@ msgstr "Izhod"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:30
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:30
 | 
			
		||||
msgid "Illegal instruction"
 | 
			
		||||
msgstr "Neveljaven ukaz"
 | 
			
		||||
msgstr "Neveljavn ukaz"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:31
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:31
 | 
			
		||||
@@ -121,12 +122,12 @@ msgstr "Napaka vodila"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:37
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:37
 | 
			
		||||
msgid "Segmentation violation"
 | 
			
		||||
msgstr "Segmentacijska napaka"
 | 
			
		||||
msgstr "Segmentacijska kršitev"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:38
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:38
 | 
			
		||||
msgid "Bad argument to system call"
 | 
			
		||||
msgstr "Nepravilen argument za sistemski klic"
 | 
			
		||||
msgstr "Slab argument sistemskemu klicu"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:39
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:39
 | 
			
		||||
@@ -156,7 +157,7 @@ msgstr "Ustavi"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:44
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:44
 | 
			
		||||
msgid "Keyboard stop"
 | 
			
		||||
msgstr "Zaustavitev tipkovnice"
 | 
			
		||||
msgstr "Ustavitev s tipkovnice"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:45
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:45
 | 
			
		||||
@@ -166,7 +167,7 @@ msgstr "Nadaljuj"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:46
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:46
 | 
			
		||||
msgid "Child status has changed"
 | 
			
		||||
msgstr "Stanje podrejenega procesa se je spremenilo"
 | 
			
		||||
msgstr "Stanje otroka se je spremenilo"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:47
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:47
 | 
			
		||||
@@ -181,7 +182,7 @@ msgstr "Pisanje na tty v ozadju"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:49
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:49
 | 
			
		||||
msgid "I/O now possible"
 | 
			
		||||
msgstr "V/I sedaj mogoč"
 | 
			
		||||
msgstr "V/I sedaj možen"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:50
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:50
 | 
			
		||||
@@ -216,12 +217,12 @@ msgstr "Zahteva po podatkih"
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:56
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:56
 | 
			
		||||
msgid "User defined signal 1"
 | 
			
		||||
msgstr "Uporabniško določen signal 1"
 | 
			
		||||
msgstr "Uporabniško definiran signal 1"
 | 
			
		||||
 | 
			
		||||
#: ../sysdeps/osf1/siglist.c:57
 | 
			
		||||
#: ../sysdeps/sun4/siglist.c:57
 | 
			
		||||
msgid "User defined signal 2"
 | 
			
		||||
msgstr "Uporabniško določen signal 2"
 | 
			
		||||
msgstr "Uporabniško definiran signal 2"
 | 
			
		||||
 | 
			
		||||
#~ msgid "DEBUG"
 | 
			
		||||
#~ msgstr "RAZHROŠČUJ"
 | 
			
		||||
 
 | 
			
		||||
@@ -2,4 +2,4 @@
 | 
			
		||||
SUBDIRS			= common @sysdeps_dir@
 | 
			
		||||
 | 
			
		||||
DIST_SUBDIRS		= bsd common linux osf1 \
 | 
			
		||||
			  stub stub_suid sun4 freebsd solaris aix darwin
 | 
			
		||||
			  stub stub_suid sun4 freebsd solaris aix
 | 
			
		||||
 
 | 
			
		||||
@@ -4,18 +4,11 @@ INCLUDES			= @INCLUDES@
 | 
			
		||||
noinst_LTLIBRARIES		= libgtop_common-2.0.la libgtop_suid_common-2.0.la
 | 
			
		||||
 | 
			
		||||
libgtop_common_2_0_la_SOURCES	= error.c gnuslib.c \
 | 
			
		||||
				  fsusage.c \
 | 
			
		||||
                                  mountlist.c \
 | 
			
		||||
                                  procargs.c \
 | 
			
		||||
				  default.c
 | 
			
		||||
 | 
			
		||||
if !LIBGTOP_SYSDEPS_PRIVATE_MOUNTLIST
 | 
			
		||||
	libgtop_common_2_0_la_SOURCES += mountlist.c
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if !LIBGTOP_SYSDEPS_PRIVATE_FSUSAGE
 | 
			
		||||
	libgtop_common_2_0_la_SOURCES += fsusage.c
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# libgtop_common_2_0_la_LDFLAGS	= $(LT_VERSION_INFO)
 | 
			
		||||
libgtop_common_2_0_la_LIBADD	= $(LIBGTOP_EXTRA_LIBS)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -554,7 +554,6 @@ static gboolean ignore_mount_entry(const struct mount_entry *me)
 | 
			
		||||
		"openpromfs",
 | 
			
		||||
		"proc",
 | 
			
		||||
		"procfs",
 | 
			
		||||
		"rpc_pipefs",
 | 
			
		||||
		"securityfs",
 | 
			
		||||
		"supermount",
 | 
			
		||||
		"sysfs",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
INCLUDES			= @INCLUDES@ @LIBGTOP_INCS@
 | 
			
		||||
 | 
			
		||||
noinst_LTLIBRARIES			= libgtop_sysdeps-2.0.la libgtop_sysdeps_suid-2.0.la
 | 
			
		||||
 | 
			
		||||
libgtop_sysdeps_2_0_la_SOURCES	= nosuid.c siglist.c sysinfo.c
 | 
			
		||||
 | 
			
		||||
libgtop_sysdeps_suid_2_0_la_SOURCES = open.c close.c \
 | 
			
		||||
cpu.c mem.c swap.c uptime.c loadavg.c shm_limits.c msg_limits.c \
 | 
			
		||||
sem_limits.c proclist.c procstate.c procuid.c proctime.c \
 | 
			
		||||
procmem.c procsignal.c prockernel.c procsegment.c procargs.c \
 | 
			
		||||
procmap.c netload.c ppp.c netlist.c procopenfiles.c procwd.c
 | 
			
		||||
 | 
			
		||||
libgtopinclude_HEADERS		= glibtop_server.h glibtop_machine.h
 | 
			
		||||
libgtopincludedir		= $(includedir)/libgtop-2.0
 | 
			
		||||
 | 
			
		||||
noinst_HEADERS			= glibtop_suid.h
 | 
			
		||||
@@ -1,27 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <glibtop/close.h>
 | 
			
		||||
 | 
			
		||||
/* Closes pipe to gtop server. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_close_p (glibtop *server)
 | 
			
		||||
{ }
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <glibtop/close.h>
 | 
			
		||||
 | 
			
		||||
/* Closes pipe to gtop server. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_close_p (glibtop *server)
 | 
			
		||||
{ }
 | 
			
		||||
@@ -1,91 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/cpu.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <mach/mach_init.h>
 | 
			
		||||
#include <mach/mach_host.h>
 | 
			
		||||
#include <mach/vm_map.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_cpu =
 | 
			
		||||
(1L << GLIBTOP_CPU_TOTAL)  + (1L << GLIBTOP_CPU_USER) +
 | 
			
		||||
(1L << GLIBTOP_CPU_NICE)   + (1L << GLIBTOP_CPU_SYS) +
 | 
			
		||||
(1L << GLIBTOP_CPU_IDLE)   + (1L << GLIBTOP_CPU_FREQUENCY) +
 | 
			
		||||
(1L << GLIBTOP_XCPU_TOTAL) + (1L << GLIBTOP_XCPU_USER) +
 | 
			
		||||
(1L << GLIBTOP_XCPU_NICE)  + (1L << GLIBTOP_XCPU_SYS) +
 | 
			
		||||
(1L << GLIBTOP_XCPU_IDLE);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_cpu_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.cpu = _glibtop_sysdeps_cpu;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides information about cpu usage. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_cpu_p (glibtop *server, glibtop_cpu *buf)
 | 
			
		||||
{
 | 
			
		||||
	processor_cpu_load_info_data_t *pinfo;
 | 
			
		||||
	mach_msg_type_number_t info_count;
 | 
			
		||||
	natural_t processor_count;
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_CPU), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_cpu));
 | 
			
		||||
 | 
			
		||||
	if (host_processor_info (mach_host_self (),
 | 
			
		||||
				 PROCESSOR_CPU_LOAD_INFO,
 | 
			
		||||
				 &processor_count,
 | 
			
		||||
				 (processor_info_array_t*)&pinfo,
 | 
			
		||||
				 &info_count)) {
 | 
			
		||||
		glibtop_warn_io_r (server, "host_processor_info (cpu)");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < server->ncpu; i++) {
 | 
			
		||||
		buf->xcpu_user [i] = pinfo[i].cpu_ticks [CPU_STATE_USER];
 | 
			
		||||
		buf->xcpu_sys  [i] = pinfo[i].cpu_ticks [CPU_STATE_SYSTEM];
 | 
			
		||||
		buf->xcpu_idle [i] = pinfo[i].cpu_ticks [CPU_STATE_IDLE];
 | 
			
		||||
		buf->xcpu_nice [i] = pinfo[i].cpu_ticks [CPU_STATE_NICE];
 | 
			
		||||
		buf->xcpu_total[i] = buf->xcpu_user [i] + buf->xcpu_sys  [i] +
 | 
			
		||||
				     buf->xcpu_idle [i] + buf->xcpu_nice [i];
 | 
			
		||||
 | 
			
		||||
		buf->user  += buf->xcpu_user [i];
 | 
			
		||||
		buf->sys   += buf->xcpu_sys  [i];
 | 
			
		||||
		buf->idle  += buf->xcpu_idle [i];
 | 
			
		||||
		buf->nice  += buf->xcpu_nice [i];
 | 
			
		||||
		buf->total += buf->xcpu_total[i];
 | 
			
		||||
	}
 | 
			
		||||
	vm_deallocate (mach_task_self (), (vm_address_t) pinfo, info_count);
 | 
			
		||||
 | 
			
		||||
	buf->frequency = 100;
 | 
			
		||||
	buf->flags = _glibtop_sysdeps_cpu;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __GLIBTOP_MACHINE_H__
 | 
			
		||||
#define __GLIBTOP_MACHINE_H__
 | 
			
		||||
 | 
			
		||||
G_BEGIN_DECLS
 | 
			
		||||
 | 
			
		||||
typedef struct _glibtop_machine		glibtop_machine;
 | 
			
		||||
 | 
			
		||||
struct _glibtop_machine
 | 
			
		||||
{
 | 
			
		||||
	uid_t uid, euid;		/* Real and effective user id */
 | 
			
		||||
	gid_t gid, egid;		/* Real and effective group id */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,50 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __GLIBTOP_SERVER_H__
 | 
			
		||||
#define __GLIBTOP_SERVER_H__
 | 
			
		||||
 | 
			
		||||
G_BEGIN_DECLS
 | 
			
		||||
 | 
			
		||||
#define GLIBTOP_SUID_CPU		(1 << GLIBTOP_SYSDEPS_CPU)
 | 
			
		||||
#define GLIBTOP_SUID_MEM		(1 << GLIBTOP_SYSDEPS_MEM)
 | 
			
		||||
#define GLIBTOP_SUID_SWAP		(1 << GLIBTOP_SYSDEPS_SWAP)
 | 
			
		||||
#define GLIBTOP_SUID_UPTIME		(1 << GLIBTOP_SYSDEPS_UPTIME)
 | 
			
		||||
#define GLIBTOP_SUID_LOADAVG		(1 << GLIBTOP_SYSDEPS_LOADAVG)
 | 
			
		||||
#define GLIBTOP_SUID_SHM_LIMITS		(1 << GLIBTOP_SYSDEPS_SHM_LIMITS)
 | 
			
		||||
#define GLIBTOP_SUID_MSG_LIMITS		(1 << GLIBTOP_SYSDEPS_MSG_LIMITS)
 | 
			
		||||
#define GLIBTOP_SUID_SEM_LIMITS		(1 << GLIBTOP_SYSDEPS_SEM_LIMITS)
 | 
			
		||||
#define GLIBTOP_SUID_PROCLIST		(1 << GLIBTOP_SYSDEPS_PROCLIST)
 | 
			
		||||
#define GLIBTOP_SUID_PROC_STATE		(1 << GLIBTOP_SYSDEPS_PROC_STATE)
 | 
			
		||||
#define GLIBTOP_SUID_PROC_UID		(1 << GLIBTOP_SYSDEPS_PROC_UID)
 | 
			
		||||
#define GLIBTOP_SUID_PROC_MEM		(1 << GLIBTOP_SYSDEPS_PROC_MEM)
 | 
			
		||||
#define GLIBTOP_SUID_PROC_TIME		(1 << GLIBTOP_SYSDEPS_PROC_TIME)
 | 
			
		||||
#define GLIBTOP_SUID_PROC_SIGNAL	(1 << GLIBTOP_SYSDEPS_PROC_SIGNAL)
 | 
			
		||||
#define GLIBTOP_SUID_PROC_KERNEL	(1 << GLIBTOP_SYSDEPS_PROC_KERNEL)
 | 
			
		||||
#define GLIBTOP_SUID_PROC_SEGMENT	(1 << GLIBTOP_SYSDEPS_PROC_SEGMENT)
 | 
			
		||||
#define GLIBTOP_SUID_PROC_ARGS		(1 << GLIBTOP_SYSDEPS_PROC_ARGS)
 | 
			
		||||
#define GLIBTOP_SUID_PROC_MAP		(1 << GLIBTOP_SYSDEPS_PROC_MAP)
 | 
			
		||||
#define GLIBTOP_SUID_NETLOAD		(1 << GLIBTOP_SYSDEPS_NETLOAD)
 | 
			
		||||
#define GLIBTOP_SUID_NETLIST		0
 | 
			
		||||
#define GLIBTOP_SUID_PPP		(1 << GLIBTOP_SYSDEPS_PPP)
 | 
			
		||||
#define GLIBTOP_SUID_PROC_WD		(1 << GLIBTOP_SYSDEPS_PROC_WD)
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,44 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __GLIBTOP_SUID_H__
 | 
			
		||||
#define __GLIBTOP_SUID_H__
 | 
			
		||||
 | 
			
		||||
G_BEGIN_DECLS
 | 
			
		||||
 | 
			
		||||
static inline void glibtop_suid_enter (glibtop *server) {
 | 
			
		||||
	setreuid (server->machine.uid, server->machine.euid);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static inline void glibtop_suid_leave (glibtop *server) {
 | 
			
		||||
	if (setreuid (server->machine.euid, server->machine.uid))
 | 
			
		||||
		_exit (1);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_init_p (glibtop *server, const unsigned long features,
 | 
			
		||||
		const unsigned flags);
 | 
			
		||||
void
 | 
			
		||||
glibtop_open_p (glibtop *server, const char *program_name,
 | 
			
		||||
		const unsigned long features,
 | 
			
		||||
		const unsigned flags);
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,65 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/loadavg.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_loadavg =
 | 
			
		||||
(1L << GLIBTOP_LOADAVG_LOADAVG);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_loadavg_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.loadavg = _glibtop_sysdeps_loadavg;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides load averange. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_loadavg_p (glibtop *server, glibtop_loadavg *buf)
 | 
			
		||||
{
 | 
			
		||||
	double ldavg[3];
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_LOADAVG), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_loadavg));
 | 
			
		||||
 | 
			
		||||
	if (getloadavg (ldavg, 3) != 3) {
 | 
			
		||||
		glibtop_warn_io_r (server, "getloadavg");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* fill in the struct */
 | 
			
		||||
	buf->flags = _glibtop_sysdeps_loadavg;
 | 
			
		||||
	for (i = 0; i < 3; i++) {
 | 
			
		||||
		buf->loadavg [i] = ldavg [i];
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,70 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/mem.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <mach/mach_init.h>
 | 
			
		||||
#include <mach/mach_host.h>
 | 
			
		||||
#include <mach/host_info.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_mem =
 | 
			
		||||
(1L << GLIBTOP_MEM_TOTAL) + (1L << GLIBTOP_MEM_USED) +
 | 
			
		||||
(1L << GLIBTOP_MEM_FREE);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_mem_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.mem = _glibtop_sysdeps_mem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides information about memory usage. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_mem_p (glibtop *server, glibtop_mem *buf)
 | 
			
		||||
{
 | 
			
		||||
	vm_statistics_data_t vm_info;
 | 
			
		||||
	mach_msg_type_number_t info_count;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_MEM), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_mem));
 | 
			
		||||
 | 
			
		||||
	info_count = HOST_VM_INFO_COUNT;
 | 
			
		||||
	if (host_statistics (mach_host_self (), HOST_VM_INFO,
 | 
			
		||||
			     (host_info_t)&vm_info, &info_count)) {
 | 
			
		||||
		glibtop_warn_io_r (server, "host_statistics (vm_statistics)");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	buf->total = (vm_info.active_count + vm_info.inactive_count +
 | 
			
		||||
		      vm_info.free_count + vm_info.wire_count) * vm_page_size;
 | 
			
		||||
	buf->free = vm_info.free_count   * vm_page_size;
 | 
			
		||||
	buf->used = buf->total - buf->free;
 | 
			
		||||
	buf->flags = _glibtop_sysdeps_mem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,47 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/msg_limits.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_msg_limits = 0;
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_msg_limits_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.msg_limits = _glibtop_sysdeps_msg_limits;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides information about sysv ipc limits. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf)
 | 
			
		||||
{
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_MSG_LIMITS), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_msg_limits));
 | 
			
		||||
}
 | 
			
		||||
@@ -1,66 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <glibtop/netlist.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
 | 
			
		||||
#include <net/if.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netlist = (1 << GLIBTOP_NETLIST_NUMBER);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_netlist_s (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.netlist = _glibtop_sysdeps_netlist;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
char**
 | 
			
		||||
glibtop_get_netlist_s (glibtop *server, glibtop_netlist *buf)
 | 
			
		||||
{
 | 
			
		||||
	struct if_nameindex *ifstart, *ifs;
 | 
			
		||||
	GPtrArray *devices;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_s (&server, GLIBTOP_SYSDEPS_NETLIST, 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_netlist));
 | 
			
		||||
 | 
			
		||||
	ifs = ifstart = if_nameindex();
 | 
			
		||||
 | 
			
		||||
	devices = g_ptr_array_new();
 | 
			
		||||
 | 
			
		||||
	while(ifs && ifs->if_name) {
 | 
			
		||||
		g_ptr_array_add(devices, g_strdup(ifs->if_name));
 | 
			
		||||
		buf->number++;
 | 
			
		||||
		ifs++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if_freenameindex(ifstart);
 | 
			
		||||
 | 
			
		||||
	buf->flags = _glibtop_sysdeps_netlist;
 | 
			
		||||
 | 
			
		||||
	g_ptr_array_add(devices, NULL);
 | 
			
		||||
 | 
			
		||||
	return (char **) g_ptr_array_free(devices, FALSE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,165 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/netload.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
#include <net/if.h>
 | 
			
		||||
#include <net/if_dl.h>
 | 
			
		||||
#include <net/route.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netload =
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_IF_FLAGS) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_MTU) +
 | 
			
		||||
/* (1L << GLIBTOP_NETLOAD_SUBNET) + */
 | 
			
		||||
/* (1L << GLIBTOP_NETLOAD_ADDRESS) + */
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PACKETS_IN) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PACKETS_OUT) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PACKETS_TOTAL) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_BYTES_IN) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_BYTES_OUT) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_BYTES_TOTAL) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_ERRORS_IN) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_ERRORS_OUT) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_ERRORS_TOTAL) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_COLLISIONS);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_netload_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.netload = _glibtop_sysdeps_netload;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides Network statistics. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_netload_p (glibtop *server, glibtop_netload *buf,
 | 
			
		||||
		       const char *interface)
 | 
			
		||||
{
 | 
			
		||||
	int mib[] = { CTL_NET, PF_ROUTE, 0, 0, NET_RT_IFLIST, 0 };
 | 
			
		||||
	size_t bufsize;
 | 
			
		||||
	char *rtbuf, *ptr, *eob;
 | 
			
		||||
	struct if_msghdr *ifm;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_NETLOAD), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_netload));
 | 
			
		||||
 | 
			
		||||
	if (sysctl (mib, 6, NULL, &bufsize, NULL, 0) < 0)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	rtbuf = (char*)g_malloc (bufsize);
 | 
			
		||||
	if (rtbuf == NULL)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (sysctl (mib, 6, rtbuf, &bufsize, NULL, 0) < 0) {
 | 
			
		||||
		g_free (rtbuf);
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	eob = rtbuf + bufsize;
 | 
			
		||||
	ptr = rtbuf;
 | 
			
		||||
	while (ptr < eob) {
 | 
			
		||||
		struct sockaddr_dl *sdl;
 | 
			
		||||
 | 
			
		||||
		ifm = (struct if_msghdr*) ptr;
 | 
			
		||||
 | 
			
		||||
		if (ifm->ifm_type != RTM_IFINFO)
 | 
			
		||||
			break;
 | 
			
		||||
		ptr += ifm->ifm_msglen;
 | 
			
		||||
 | 
			
		||||
		while (ptr < eob) {
 | 
			
		||||
			struct if_msghdr *nextifm = (struct if_msghdr*) ptr;
 | 
			
		||||
 | 
			
		||||
			if (nextifm->ifm_type != RTM_NEWADDR)
 | 
			
		||||
				break;
 | 
			
		||||
			ptr += nextifm->ifm_msglen;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		sdl = (struct sockaddr_dl*) (ifm + 1);
 | 
			
		||||
		if (sdl->sdl_family != AF_LINK)
 | 
			
		||||
			continue;
 | 
			
		||||
		if (strlen (interface) != sdl->sdl_nlen)
 | 
			
		||||
			continue;
 | 
			
		||||
		if (strcmp (interface, sdl->sdl_data) == 0)
 | 
			
		||||
			goto FOUND;
 | 
			
		||||
	}
 | 
			
		||||
	g_free (rtbuf);
 | 
			
		||||
	return;
 | 
			
		||||
 | 
			
		||||
FOUND:
 | 
			
		||||
	if (ifm->ifm_flags & IFF_UP)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_UP;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_BROADCAST)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_BROADCAST;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_DEBUG)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_DEBUG;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_LOOPBACK)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_LOOPBACK;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_POINTOPOINT)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_POINTOPOINT;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_RUNNING)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_RUNNING;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_NOARP)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_NOARP;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_NOARP)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_PROMISC;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_ALLMULTI)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_ALLMULTI;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_OACTIVE)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_OACTIVE;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_SIMPLEX)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_SIMPLEX;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_LINK0)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_LINK0;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_LINK1)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_LINK1;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_LINK2)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_LINK2;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_ALTPHYS)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_ALTPHYS;
 | 
			
		||||
	if (ifm->ifm_flags & IFF_MULTICAST)
 | 
			
		||||
		buf->if_flags |= GLIBTOP_IF_FLAGS_MULTICAST;
 | 
			
		||||
	buf->mtu		= ifm->ifm_data.ifi_mtu;
 | 
			
		||||
	buf->subnet		= 0; /* FIXME */
 | 
			
		||||
	buf->address		= 0; /* FIXME */
 | 
			
		||||
	buf->packets_in		= ifm->ifm_data.ifi_ipackets;
 | 
			
		||||
	buf->packets_out	= ifm->ifm_data.ifi_opackets;
 | 
			
		||||
	buf->packets_total	= buf->packets_in + buf->packets_out;
 | 
			
		||||
	buf->bytes_in		= ifm->ifm_data.ifi_ibytes;
 | 
			
		||||
	buf->bytes_out		= ifm->ifm_data.ifi_obytes;
 | 
			
		||||
	buf->bytes_total	= buf->bytes_in + buf->bytes_out;
 | 
			
		||||
	buf->errors_in		= ifm->ifm_data.ifi_ierrors;
 | 
			
		||||
	buf->errors_out		= ifm->ifm_data.ifi_oerrors;
 | 
			
		||||
	buf->errors_total	= buf->errors_in + buf->errors_out;
 | 
			
		||||
	buf->collisions		= ifm->ifm_data.ifi_collisions;
 | 
			
		||||
	buf->flags		= _glibtop_sysdeps_netload;
 | 
			
		||||
	g_free (buf);
 | 
			
		||||
}
 | 
			
		||||
@@ -1,55 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/cpu.h>
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
 | 
			
		||||
#include <mach/mach_host.h>
 | 
			
		||||
#include <mach/mach_init.h>
 | 
			
		||||
#include <mach/mach_interface.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_open_s (glibtop *server, const char *program_name,
 | 
			
		||||
		const unsigned long features, const unsigned flags)
 | 
			
		||||
{
 | 
			
		||||
	processor_cpu_load_info_data_t *pinfo;
 | 
			
		||||
	mach_msg_type_number_t info_count;   
 | 
			
		||||
	natural_t processor_count;
 | 
			
		||||
 | 
			
		||||
	if (host_processor_info (mach_host_self (),
 | 
			
		||||
		PROCESSOR_CPU_LOAD_INFO,
 | 
			
		||||
		&processor_count,
 | 
			
		||||
		(processor_info_array_t*)&pinfo,
 | 
			
		||||
		&info_count)) {
 | 
			
		||||
		glibtop_error_io_r (server, "host_processor_info");
 | 
			
		||||
	}
 | 
			
		||||
	server->ncpu = (processor_count <= GLIBTOP_NCPU) ?
 | 
			
		||||
		processor_count : GLIBTOP_NCPU;
 | 
			
		||||
	vm_deallocate (mach_task_self (), (vm_address_t) pinfo, info_count);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_close_s (glibtop *server)
 | 
			
		||||
{ }
 | 
			
		||||
@@ -1,98 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/cpu.h>
 | 
			
		||||
#include <glibtop/open.h>
 | 
			
		||||
 | 
			
		||||
#include <mach/mach_host.h>
 | 
			
		||||
#include <mach/mach_init.h>
 | 
			
		||||
#include <mach/mach_interface.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop/init_hooks.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
/* !!! THIS FUNCTION RUNS SUID ROOT - CHANGE WITH CAUTION !!! */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_init_p (glibtop *server, const unsigned long features,
 | 
			
		||||
		const unsigned flags)
 | 
			
		||||
{
 | 
			
		||||
	const _glibtop_init_func_t *init_fkt;
 | 
			
		||||
 | 
			
		||||
	if (server == NULL)
 | 
			
		||||
		glibtop_error_r (NULL, "glibtop_init_p (server == NULL)");
 | 
			
		||||
 | 
			
		||||
	/* Do the initialization, but only if not already initialized. */
 | 
			
		||||
 | 
			
		||||
	if ((server->flags & _GLIBTOP_INIT_STATE_INIT) == 0) {
 | 
			
		||||
		glibtop_open_p (server, "glibtop", features, flags);
 | 
			
		||||
 | 
			
		||||
		for (init_fkt = _glibtop_init_hook_p; *init_fkt; init_fkt++)
 | 
			
		||||
			(*init_fkt) (server);
 | 
			
		||||
 | 
			
		||||
		server->flags |= _GLIBTOP_INIT_STATE_INIT;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_open_p (glibtop *server, const char *program_name,
 | 
			
		||||
		const unsigned long features, const unsigned flags)
 | 
			
		||||
{
 | 
			
		||||
        processor_cpu_load_info_data_t *pinfo;
 | 
			
		||||
        mach_msg_type_number_t info_count;
 | 
			
		||||
        natural_t processor_count;
 | 
			
		||||
 | 
			
		||||
	/* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */
 | 
			
		||||
 | 
			
		||||
	server->name = program_name;
 | 
			
		||||
 | 
			
		||||
	server->machine.uid = getuid ();
 | 
			
		||||
	server->machine.euid = geteuid ();
 | 
			
		||||
	server->machine.gid = getgid ();
 | 
			
		||||
	server->machine.egid = getegid ();
 | 
			
		||||
 | 
			
		||||
	/* Drop priviledges. */	
 | 
			
		||||
 | 
			
		||||
	if (setreuid (server->machine.euid, server->machine.uid))
 | 
			
		||||
		_exit (1);
 | 
			
		||||
 | 
			
		||||
	if (setregid (server->machine.egid, server->machine.gid))
 | 
			
		||||
		_exit (1);
 | 
			
		||||
	
 | 
			
		||||
	/* !!! END OF SUID ROOT PART !!! */
 | 
			
		||||
 | 
			
		||||
	/* Our effective uid is now those of the user invoking the server,
 | 
			
		||||
	 * so we do no longer have any priviledges. */
 | 
			
		||||
 | 
			
		||||
	if (host_processor_info (mach_host_self (),
 | 
			
		||||
		PROCESSOR_CPU_LOAD_INFO,
 | 
			
		||||
		&processor_count,
 | 
			
		||||
		(processor_info_array_t*)&pinfo,
 | 
			
		||||
		&info_count)) {
 | 
			
		||||
		glibtop_error_io_r (server, "host_processor_info");
 | 
			
		||||
	}
 | 
			
		||||
	server->ncpu = (processor_count <= GLIBTOP_NCPU) ?
 | 
			
		||||
		processor_count : GLIBTOP_NCPU;
 | 
			
		||||
	vm_deallocate (mach_task_self (), (vm_address_t) pinfo, info_count);
 | 
			
		||||
}
 | 
			
		||||
@@ -1,47 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/ppp.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_ppp = 0;
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_ppp_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.ppp = _glibtop_sysdeps_ppp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides PPP/ISDN information. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_ppp_p (glibtop *server, glibtop_ppp *buf, unsigned short device)
 | 
			
		||||
{
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PPP), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_ppp));
 | 
			
		||||
}
 | 
			
		||||
@@ -1,130 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/procargs.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_args =
 | 
			
		||||
(1L << GLIBTOP_PROC_ARGS_SIZE);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proc_args_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_args = _glibtop_sysdeps_proc_args;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
char *
 | 
			
		||||
glibtop_get_proc_args_p (glibtop *server, glibtop_proc_args *buf,
 | 
			
		||||
			 pid_t pid, unsigned max_len)
 | 
			
		||||
{
 | 
			
		||||
	char argbuf[4096];
 | 
			
		||||
	char *start, *end, *str;
 | 
			
		||||
	size_t bufsize = 4096;
 | 
			
		||||
	int mib [3];
 | 
			
		||||
	unsigned length;
 | 
			
		||||
	char *args;
 | 
			
		||||
	int *ip;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_ARGS), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proc_args));
 | 
			
		||||
 | 
			
		||||
	mib [0] = CTL_KERN;
 | 
			
		||||
	mib [1] = KERN_PROCARGS;
 | 
			
		||||
	mib [2] = pid;
 | 
			
		||||
	
 | 
			
		||||
	/* !!! THE FOLLOWING CODE RUNS SUID ROOT - CHANGE WITH CAUTION !!! */
 | 
			
		||||
 | 
			
		||||
	glibtop_suid_enter (server);
 | 
			
		||||
	if (sysctl (mib, 3, argbuf, &bufsize, NULL, 0) < 0) {
 | 
			
		||||
		glibtop_suid_leave (server);
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
	glibtop_suid_leave (server);
 | 
			
		||||
 | 
			
		||||
	/* !!! END OF SUID ROOT PART !!! */
 | 
			
		||||
 | 
			
		||||
    	end = &argbuf[bufsize];
 | 
			
		||||
 | 
			
		||||
	ip = (int *)end - 2;
 | 
			
		||||
	while (*--ip) {
 | 
			
		||||
		if (ip == (int *)argbuf) {
 | 
			
		||||
			return NULL;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	start = (char *)(ip + 1);
 | 
			
		||||
	while (*--ip) {
 | 
			
		||||
		if (ip == (int *)argbuf) {
 | 
			
		||||
			return NULL;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	ip++;
 | 
			
		||||
 | 
			
		||||
        if ((ip[0] & 0xbfff0000) == 0xbfff0000) {
 | 
			
		||||
		ip += 2;
 | 
			
		||||
		start = (char*)(ip + (strlen ((char*)ip) + 3) / 4);
 | 
			
		||||
		while (!*start)
 | 
			
		||||
			start++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (str = start + strlen (start); str < end - 1; str++) {
 | 
			
		||||
		if (*str == '=') {
 | 
			
		||||
			while (*str != '\0' && str > start)
 | 
			
		||||
				str--;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	end = str;
 | 
			
		||||
 | 
			
		||||
	if (start[0] == '-' || start[0] == '?' || start[0] <= ' ') {
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	length = end - start;
 | 
			
		||||
	if (max_len != 0 && length > max_len)
 | 
			
		||||
		length = max_len;
 | 
			
		||||
	args = g_malloc(length + 1);
 | 
			
		||||
	if (args == NULL) {
 | 
			
		||||
		glibtop_warn_io_r (server, "malloc(procargs)");
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	memcpy (args, start, length);
 | 
			
		||||
	args [length] = '\0';
 | 
			
		||||
 | 
			
		||||
	buf->size = length;
 | 
			
		||||
	buf->flags = _glibtop_sysdeps_proc_args;
 | 
			
		||||
 | 
			
		||||
	return args;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,48 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/prockernel.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_kernel = 0;
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proc_kernel_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_kernel = _glibtop_sysdeps_proc_kernel;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_proc_kernel_p (glibtop *server, glibtop_proc_kernel *buf,
 | 
			
		||||
			   pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_KERNEL), 0);
 | 
			
		||||
	
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proc_kernel));
 | 
			
		||||
}
 | 
			
		||||
@@ -1,104 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/proclist.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/sysctl.h>  
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proclist =
 | 
			
		||||
(1L << GLIBTOP_PROCLIST_TOTAL) + (1L << GLIBTOP_PROCLIST_NUMBER) +
 | 
			
		||||
(1L << GLIBTOP_PROCLIST_SIZE);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proclist_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proclist = _glibtop_sysdeps_proclist;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pid_t *
 | 
			
		||||
glibtop_get_proclist_p (glibtop *server, glibtop_proclist *buf,
 | 
			
		||||
			int64_t which, int64_t arg)
 | 
			
		||||
{
 | 
			
		||||
	unsigned count, total, i;
 | 
			
		||||
	pid_t *pids_chain;
 | 
			
		||||
	int mib[4];
 | 
			
		||||
	struct kinfo_proc *kp;
 | 
			
		||||
	size_t length;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROCLIST), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proclist));
 | 
			
		||||
 | 
			
		||||
	mib [0] = CTL_KERN;
 | 
			
		||||
	mib [1] = KERN_PROC;
 | 
			
		||||
	mib [2] = (int)(which & GLIBTOP_KERN_PROC_MASK);
 | 
			
		||||
	mib [3] = (int)arg;
 | 
			
		||||
 | 
			
		||||
	if (sysctl (mib, 4, NULL, &length, NULL, 0) < 0) {
 | 
			
		||||
		glibtop_warn_io_r (server, "sysctl (proclist)");
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
	if ((kp = (struct kinfo_proc *) g_malloc(length)) == NULL) {
 | 
			
		||||
		glibtop_warn_io_r (server, "malloc (proclist)");
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
	if (sysctl (mib, 4, kp, &length, NULL, 0) < 0) {
 | 
			
		||||
		glibtop_warn_io_r (server, "sysctl (proclist)");
 | 
			
		||||
		g_free (kp);
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	count = length / sizeof (struct kinfo_proc);
 | 
			
		||||
	pids_chain = g_malloc(count * sizeof (unsigned));
 | 
			
		||||
	if (pids_chain ==  NULL) {
 | 
			
		||||
		glibtop_warn_io_r (server, "g_realloc (proclist)");
 | 
			
		||||
		g_free (kp);
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (total = 0, i = 0; i < count; i++) {
 | 
			
		||||
		if ((which & GLIBTOP_EXCLUDE_IDLE) &&
 | 
			
		||||
		    (kp [i].kp_proc.p_stat != SRUN))
 | 
			
		||||
			continue;
 | 
			
		||||
		if ((which & GLIBTOP_EXCLUDE_SYSTEM) &&
 | 
			
		||||
			 (kp [i].kp_eproc.e_pcred.p_ruid == 0))
 | 
			
		||||
			continue;
 | 
			
		||||
		pids_chain [total++] = (unsigned) kp [i].kp_proc.p_pid;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	g_free (kp);
 | 
			
		||||
 | 
			
		||||
	buf->number = total;
 | 
			
		||||
	buf->size = sizeof (unsigned);
 | 
			
		||||
	buf->total = total * sizeof (unsigned);
 | 
			
		||||
	buf->flags = _glibtop_sysdeps_proclist;
 | 
			
		||||
 | 
			
		||||
	return pids_chain;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,134 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/procmap.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <mach/mach_init.h>
 | 
			
		||||
#include <mach/mach_host.h>
 | 
			
		||||
#include <mach/vm_map.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_map =
 | 
			
		||||
(1L << GLIBTOP_PROC_MAP_TOTAL) + (1L << GLIBTOP_PROC_MAP_NUMBER) +
 | 
			
		||||
(1L << GLIBTOP_PROC_MAP_SIZE);
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_map_entry =
 | 
			
		||||
(1L << GLIBTOP_MAP_ENTRY_START) + (1L << GLIBTOP_MAP_ENTRY_END) +
 | 
			
		||||
(1L << GLIBTOP_MAP_ENTRY_OFFSET) + (1L << GLIBTOP_MAP_ENTRY_PERM);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proc_map_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_map = _glibtop_sysdeps_proc_map;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
glibtop_map_entry *
 | 
			
		||||
glibtop_get_proc_map_p (glibtop *server, glibtop_proc_map *buf,	pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
	glibtop_map_entry *maps;
 | 
			
		||||
	mach_port_t task;
 | 
			
		||||
	vm_address_t address;
 | 
			
		||||
	natural_t nesting_depth;
 | 
			
		||||
	int n;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_MAP), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proc_map));
 | 
			
		||||
 | 
			
		||||
	/* !!! THE FOLLOWING CODE RUNS SUID ROOT - CHANGE WITH CAUTION !!! */
 | 
			
		||||
 | 
			
		||||
	glibtop_suid_enter (server);
 | 
			
		||||
 | 
			
		||||
	if (task_for_pid (mach_task_self (), pid, &task) != KERN_SUCCESS) {
 | 
			
		||||
		glibtop_suid_leave (server);
 | 
			
		||||
		glibtop_warn_io_r (server, "task_for_pid (procmap)");
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	maps = NULL;
 | 
			
		||||
	n = 0;
 | 
			
		||||
	address = 0;
 | 
			
		||||
	nesting_depth = 0;
 | 
			
		||||
	while (1) {
 | 
			
		||||
		vm_region_submap_info_data_64_t info;
 | 
			
		||||
		mach_msg_type_number_t info_count;
 | 
			
		||||
		vm_size_t size;
 | 
			
		||||
 | 
			
		||||
		info_count = VM_REGION_SUBMAP_INFO_COUNT_64;
 | 
			
		||||
		if (vm_region_recurse_64 (task, &address, &size, &nesting_depth,
 | 
			
		||||
			(vm_region_recurse_info_64_t)&info, &info_count))
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		if (info.is_submap) {
 | 
			
		||||
			nesting_depth++;
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		maps = g_realloc (maps, (n + 1) * sizeof (glibtop_map_entry));
 | 
			
		||||
		if (!maps) {
 | 
			
		||||
			glibtop_suid_leave (server);
 | 
			
		||||
			return NULL;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		memset (maps + n, 0, sizeof (glibtop_map_entry));
 | 
			
		||||
 | 
			
		||||
		maps[n].start	= address;
 | 
			
		||||
		maps[n].end	= address + size - 1;
 | 
			
		||||
		maps[n].offset	= info.offset;
 | 
			
		||||
		if (info.protection & VM_PROT_READ)
 | 
			
		||||
			maps[n].perm |= GLIBTOP_MAP_PERM_READ;
 | 
			
		||||
		if (info.protection & VM_PROT_WRITE) 
 | 
			
		||||
			maps[n].perm |= GLIBTOP_MAP_PERM_WRITE;
 | 
			
		||||
		if (info.protection & VM_PROT_EXECUTE)      
 | 
			
		||||
			maps[n].perm |= GLIBTOP_MAP_PERM_EXECUTE;
 | 
			
		||||
		if (info.share_mode == SM_PRIVATE ||
 | 
			
		||||
		    info.share_mode == SM_PRIVATE_ALIASED)
 | 
			
		||||
			maps[n].perm |= GLIBTOP_MAP_PERM_PRIVATE;
 | 
			
		||||
		if (info.share_mode == SM_SHARED ||
 | 
			
		||||
		    info.share_mode == SM_TRUESHARED ||
 | 
			
		||||
		    info.share_mode == SM_SHARED_ALIASED)
 | 
			
		||||
			maps[n].perm |= GLIBTOP_MAP_PERM_SHARED;
 | 
			
		||||
 | 
			
		||||
		maps[n].flags	= _glibtop_sysdeps_proc_map_entry;
 | 
			
		||||
 | 
			
		||||
		address += size;
 | 
			
		||||
		n++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glibtop_suid_leave (server);
 | 
			
		||||
 | 
			
		||||
	/* !!! END OF SUID ROOT PART !!! */
 | 
			
		||||
 | 
			
		||||
	buf->number	= n;
 | 
			
		||||
	buf->size	= sizeof (glibtop_map_entry);
 | 
			
		||||
	buf->total	= n * sizeof (glibtop_map_entry);
 | 
			
		||||
	buf->flags	= _glibtop_sysdeps_proc_map;
 | 
			
		||||
 | 
			
		||||
	return maps;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,245 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/procmem.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <mach/mach_init.h>
 | 
			
		||||
#include <mach/mach_host.h>
 | 
			
		||||
#include <mach/mach_traps.h>
 | 
			
		||||
#include <mach/task.h>
 | 
			
		||||
#include <mach/vm_map.h>
 | 
			
		||||
#include <mach/shared_memory_server.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_mem =
 | 
			
		||||
(1L << GLIBTOP_PROC_MEM_SIZE)     + (1L << GLIBTOP_PROC_MEM_VSIZE) +
 | 
			
		||||
(1L << GLIBTOP_PROC_MEM_RESIDENT) + (1L << GLIBTOP_PROC_MEM_SHARE) +
 | 
			
		||||
(1L << GLIBTOP_PROC_MEM_RSS);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proc_mem_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_mem = _glibtop_sysdeps_proc_mem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define	SHARED_TABLE_SIZE	137
 | 
			
		||||
#define	TEXT_SEGMENT_START	(GLOBAL_SHARED_TEXT_SEGMENT)
 | 
			
		||||
#define TEXT_SEGMENT_END	(GLOBAL_SHARED_TEXT_SEGMENT + SHARED_TEXT_REGION_SIZE)
 | 
			
		||||
#define	DATA_SEGMENT_START	(GLOBAL_SHARED_DATA_SEGMENT)
 | 
			
		||||
#define DATA_SEGMENT_END	(GLOBAL_SHARED_DATA_SEGMENT + SHARED_DATA_REGION_SIZE)
 | 
			
		||||
 | 
			
		||||
struct shared_info {
 | 
			
		||||
	unsigned obj_id;
 | 
			
		||||
	unsigned share_mode;
 | 
			
		||||
	unsigned page_count;
 | 
			
		||||
	unsigned ref_count;
 | 
			
		||||
	unsigned task_ref_count;
 | 
			
		||||
	vm_size_t size;
 | 
			
		||||
	struct shared_info *next;
 | 
			
		||||
};
 | 
			
		||||
typedef struct shared_info shared_table[SHARED_TABLE_SIZE];
 | 
			
		||||
typedef struct shared_info shared_info;
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
shared_table_init (shared_table table)
 | 
			
		||||
{
 | 
			
		||||
	memset (table, 0, sizeof (shared_table));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
shared_table_free (glibtop *server, shared_table table)
 | 
			
		||||
{
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < SHARED_TABLE_SIZE; i++) {
 | 
			
		||||
		shared_info *info = table [i].next;
 | 
			
		||||
 | 
			
		||||
		while (info) {
 | 
			
		||||
			shared_info *next = info->next;
 | 
			
		||||
			g_free (info);
 | 
			
		||||
			info = next;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
shared_table_register (glibtop *server, shared_table table,
 | 
			
		||||
		       vm_region_top_info_data_t *top, vm_size_t size)
 | 
			
		||||
{
 | 
			
		||||
	shared_info *info, *last;
 | 
			
		||||
 | 
			
		||||
	info = last = &table [top->obj_id % SHARED_TABLE_SIZE];
 | 
			
		||||
	while (info) {
 | 
			
		||||
		if (info->obj_id == top->obj_id) {
 | 
			
		||||
			info->task_ref_count++;
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		last = info;
 | 
			
		||||
		info = info->next;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	info = g_malloc (sizeof (shared_info));
 | 
			
		||||
	if (info) {
 | 
			
		||||
		info->obj_id = top->obj_id;
 | 
			
		||||
		info->share_mode = top->share_mode;
 | 
			
		||||
		info->page_count = top->shared_pages_resident;
 | 
			
		||||
		info->ref_count = top->ref_count;
 | 
			
		||||
		info->task_ref_count = 1;
 | 
			
		||||
		info->size = size;
 | 
			
		||||
		info->next = NULL;
 | 
			
		||||
		last->next = info;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
 | 
			
		||||
			pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
	task_basic_info_data_t tinfo;
 | 
			
		||||
        mach_msg_type_number_t info_count;
 | 
			
		||||
	vm_size_t vsize, resident, private, vprivate, shared;
 | 
			
		||||
	kern_return_t retval;
 | 
			
		||||
	shared_table stable;
 | 
			
		||||
	vm_address_t address;
 | 
			
		||||
	mach_port_t task;
 | 
			
		||||
	int i, split;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_MEM), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proc_mem));
 | 
			
		||||
 | 
			
		||||
	address = 0;
 | 
			
		||||
	split = 0;
 | 
			
		||||
	vsize = resident = private = vprivate = shared = 0;
 | 
			
		||||
	shared_table_init (stable);
 | 
			
		||||
 | 
			
		||||
	/* !!! THE FOLLOWING CODE RUNS SUID ROOT - CHANGE WITH CAUTION !!! */
 | 
			
		||||
 | 
			
		||||
	glibtop_suid_enter (server);
 | 
			
		||||
	retval = task_for_pid (mach_task_self (), pid, &task);
 | 
			
		||||
	glibtop_suid_leave (server);
 | 
			
		||||
 | 
			
		||||
	/* !!! END OF SUID ROOT PART !!! */
 | 
			
		||||
 | 
			
		||||
	if (retval)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	info_count = TASK_BASIC_INFO_COUNT;
 | 
			
		||||
	if (task_info (task, TASK_BASIC_INFO, (task_info_t)&tinfo, &info_count)) {
 | 
			
		||||
		glibtop_warn_io_r (server, "task_info (procmem)");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	vsize = tinfo.virtual_size;
 | 
			
		||||
	resident = tinfo.resident_size;
 | 
			
		||||
 | 
			
		||||
	/* !!! THE FOLLOWING CODE RUNS SUID ROOT - CHANGE WITH CAUTION !!! */
 | 
			
		||||
 | 
			
		||||
	glibtop_suid_enter (server);
 | 
			
		||||
	while (1) {
 | 
			
		||||
		vm_region_basic_info_data_64_t basic;
 | 
			
		||||
		vm_region_top_info_data_t top;
 | 
			
		||||
		mach_port_t object_name;
 | 
			
		||||
		vm_size_t size;
 | 
			
		||||
 | 
			
		||||
		info_count = VM_REGION_BASIC_INFO_COUNT_64;
 | 
			
		||||
		if (vm_region_64 (task, &address, &size, VM_REGION_BASIC_INFO,
 | 
			
		||||
				  (vm_region_info_t)&basic,
 | 
			
		||||
				  &info_count, &object_name))
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		info_count = VM_REGION_TOP_INFO_COUNT;
 | 
			
		||||
		if (vm_region_64 (task, &address, &size, VM_REGION_TOP_INFO,
 | 
			
		||||
			       (vm_region_info_t)&top,
 | 
			
		||||
			       &info_count, &object_name))
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		if (address >= TEXT_SEGMENT_START && address < DATA_SEGMENT_END) {
 | 
			
		||||
			if (!split && top.share_mode == SM_EMPTY) {
 | 
			
		||||
				if (basic.reserved)
 | 
			
		||||
					split = 1;
 | 
			
		||||
			}
 | 
			
		||||
			if (top.share_mode != SM_PRIVATE) {
 | 
			
		||||
				address += size;
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch (top.share_mode) {
 | 
			
		||||
		case SM_COW:
 | 
			
		||||
			if (top.ref_count == 1) {
 | 
			
		||||
				private += top.private_pages_resident * vm_page_size;
 | 
			
		||||
				private += top.shared_pages_resident * vm_page_size;
 | 
			
		||||
				vprivate += size;
 | 
			
		||||
			} else {
 | 
			
		||||
				shared_table_register (server, stable, &top, size);
 | 
			
		||||
				vprivate += top.private_pages_resident * vm_page_size;
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
		case SM_PRIVATE:
 | 
			
		||||
			private += top.private_pages_resident * vm_page_size;
 | 
			
		||||
			vprivate += size;
 | 
			
		||||
			break;
 | 
			
		||||
		case SM_SHARED:
 | 
			
		||||
			shared_table_register (server, stable, &top, size);
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		address += size;
 | 
			
		||||
	}
 | 
			
		||||
	glibtop_suid_leave (server);
 | 
			
		||||
 | 
			
		||||
	/* !!! END OF SUID ROOT PART !!! */
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < SHARED_TABLE_SIZE; i++) {
 | 
			
		||||
		shared_info *sinfo = &stable[i];
 | 
			
		||||
 | 
			
		||||
		while (sinfo) {
 | 
			
		||||
			if (sinfo->share_mode == SM_SHARED &&
 | 
			
		||||
			    sinfo->ref_count == sinfo->task_ref_count) {
 | 
			
		||||
				private += sinfo->page_count * vm_page_size;
 | 
			
		||||
				vprivate += sinfo->size;
 | 
			
		||||
			} else {
 | 
			
		||||
				shared += sinfo->page_count * vm_page_size;
 | 
			
		||||
			}
 | 
			
		||||
			sinfo = sinfo->next;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	shared_table_free (server, stable);
 | 
			
		||||
 | 
			
		||||
	if (split)
 | 
			
		||||
		vsize -= DATA_SEGMENT_END - TEXT_SEGMENT_START;
 | 
			
		||||
 | 
			
		||||
	buf->size     = vprivate;
 | 
			
		||||
	buf->vsize    = vsize;
 | 
			
		||||
	buf->resident = resident;
 | 
			
		||||
	buf->share    = shared;
 | 
			
		||||
	buf->rss      = private;
 | 
			
		||||
	buf->flags    = _glibtop_sysdeps_proc_mem;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,43 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/procopenfiles.h>
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proc_open_files_s (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_open_files = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
glibtop_open_files_entry *
 | 
			
		||||
glibtop_get_proc_open_files_s (glibtop *server, glibtop_proc_open_files *buf,	pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
	glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_MAP, 0);
 | 
			
		||||
	
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proc_open_files));
 | 
			
		||||
	
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,48 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/procsegment.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_segment = 0;
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proc_segment_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_segment = _glibtop_sysdeps_proc_segment;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_proc_segment_p (glibtop *server, glibtop_proc_segment *buf,
 | 
			
		||||
			    pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_SEGMENT), 0);
 | 
			
		||||
	
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proc_segment));
 | 
			
		||||
}
 | 
			
		||||
@@ -1,76 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/procsignal.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_signal =
 | 
			
		||||
(1L << GLIBTOP_PROC_SIGNAL_SIGNAL) +
 | 
			
		||||
(1L << GLIBTOP_PROC_SIGNAL_BLOCKED) +
 | 
			
		||||
(1L << GLIBTOP_PROC_SIGNAL_SIGIGNORE) +
 | 
			
		||||
(1L << GLIBTOP_PROC_SIGNAL_SIGCATCH);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proc_signal_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_signal = _glibtop_sysdeps_proc_signal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_proc_signal_p (glibtop *server, glibtop_proc_signal *buf,
 | 
			
		||||
			   pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
	int mib[4];
 | 
			
		||||
	size_t length;
 | 
			
		||||
	struct kinfo_proc kinfo;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_SIGNAL), 0);
 | 
			
		||||
	
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proc_signal));
 | 
			
		||||
 | 
			
		||||
	mib [0] = CTL_KERN;
 | 
			
		||||
	mib [1] = KERN_PROC;      
 | 
			
		||||
	mib [2] = KERN_PROC_PID;
 | 
			
		||||
	mib [3] = pid;
 | 
			
		||||
 | 
			
		||||
	length = sizeof (struct kinfo_proc);
 | 
			
		||||
	if (sysctl (mib, 4, &kinfo, &length, NULL, 0) < 0) {
 | 
			
		||||
		glibtop_warn_io_r (server, "sysctl (procuid)");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	buf->signal[0]    = kinfo.kp_proc.p_siglist;
 | 
			
		||||
	buf->blocked[0]   = kinfo.kp_proc.p_sigmask;
 | 
			
		||||
	buf->sigignore[0] = kinfo.kp_proc.p_sigignore;
 | 
			
		||||
	buf->sigcatch[0]  = kinfo.kp_proc.p_sigcatch;
 | 
			
		||||
	buf->flags = _glibtop_sysdeps_proc_signal;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,94 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/procstate.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/sysctl.h>      
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_state =
 | 
			
		||||
(1L << GLIBTOP_PROC_STATE_CMD) + (1L << GLIBTOP_PROC_STATE_STATE) +
 | 
			
		||||
(1L << GLIBTOP_PROC_STATE_UID) + (1L << GLIBTOP_PROC_STATE_GID);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proc_state_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_state = _glibtop_sysdeps_proc_state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_proc_state_p (glibtop *server, glibtop_proc_state *buf,
 | 
			
		||||
			  pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
	int mib[4];
 | 
			
		||||
	size_t length;
 | 
			
		||||
	struct kinfo_proc kinfo;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_STATE), 0);
 | 
			
		||||
	
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proc_state));
 | 
			
		||||
 | 
			
		||||
	mib [0] = CTL_KERN;
 | 
			
		||||
	mib [1] = KERN_PROC;
 | 
			
		||||
	mib [2] = KERN_PROC_PID;
 | 
			
		||||
	mib [3] = pid;
 | 
			
		||||
 | 
			
		||||
	length = sizeof (struct kinfo_proc);
 | 
			
		||||
	if (sysctl (mib, 4, &kinfo, &length, NULL, 0) < 0) {
 | 
			
		||||
		glibtop_warn_io_r (server, "sysctl (procstat)");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	strncpy (buf->cmd, kinfo.kp_proc.p_comm, sizeof (buf->cmd) - 1);
 | 
			
		||||
	buf->cmd [sizeof (buf->cmd) - 1] = 0;
 | 
			
		||||
	buf->uid = kinfo.kp_eproc.e_pcred.p_svuid;
 | 
			
		||||
	buf->gid = kinfo.kp_eproc.e_pcred.p_svgid;
 | 
			
		||||
	switch (kinfo.kp_proc.p_stat) {
 | 
			
		||||
	case SIDL:
 | 
			
		||||
		buf->state = 0;
 | 
			
		||||
		break;
 | 
			
		||||
	case SRUN:
 | 
			
		||||
		buf->state = 'R';
 | 
			
		||||
		break;
 | 
			
		||||
	case SSLEEP:
 | 
			
		||||
		buf->state = 'S';
 | 
			
		||||
		break;
 | 
			
		||||
	case SSTOP:
 | 
			
		||||
		buf->state = 'T';
 | 
			
		||||
		break;
 | 
			
		||||
	case SZOMB:
 | 
			
		||||
		buf->state = 'Z';
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	buf->flags = _glibtop_sysdeps_proc_state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,118 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/proctime.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <mach/mach_init.h>
 | 
			
		||||
#include <mach/mach_host.h>
 | 
			
		||||
#include <mach/mach_port.h>
 | 
			
		||||
#include <mach/task.h>
 | 
			
		||||
#include <mach/vm_map.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_time =
 | 
			
		||||
(1L << GLIBTOP_PROC_TIME_UTIME) + (1L << GLIBTOP_PROC_TIME_STIME) +
 | 
			
		||||
(1L << GLIBTOP_PROC_TIME_FREQUENCY) + (1L << GLIBTOP_PROC_TIME_START_TIME);
 | 
			
		||||
 | 
			
		||||
#define tv2sec(tv) (((u_int64_t) tv.seconds * 1000000) + (u_int64_t) tv.microseconds)
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proc_time_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_time = _glibtop_sysdeps_proc_time;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_proc_time_p (glibtop *server, glibtop_proc_time *buf,
 | 
			
		||||
			 pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
	unsigned int count;
 | 
			
		||||
	task_basic_info_data_t ti;
 | 
			
		||||
	task_thread_times_info_data_t tti;
 | 
			
		||||
	task_port_t task;
 | 
			
		||||
	time_value_t utime = {0, 0}, stime = {0, 0};
 | 
			
		||||
	size_t length;
 | 
			
		||||
	struct kinfo_proc kinfo;
 | 
			
		||||
	int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, 0 };
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_TIME), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proc_time));
 | 
			
		||||
 | 
			
		||||
	mib[3] = pid;
 | 
			
		||||
	length = sizeof (kinfo);
 | 
			
		||||
	if (sysctl (mib, 4, &kinfo, &length, NULL, 0) < 0) {
 | 
			
		||||
		glibtop_suid_leave (server);
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* !!! THE FOLLOWING CODE RUNS SUID ROOT - CHANGE WITH CAUTION !!! */
 | 
			
		||||
 | 
			
		||||
	glibtop_suid_enter (server);
 | 
			
		||||
 | 
			
		||||
	if (task_for_pid (mach_task_self(), pid, &task) != KERN_SUCCESS) {
 | 
			
		||||
		glibtop_suid_leave (server);
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glibtop_suid_leave (server);
 | 
			
		||||
 | 
			
		||||
	/* !!! END OF SUID ROOT PART !!! */
 | 
			
		||||
 | 
			
		||||
	count = TASK_BASIC_INFO_COUNT;
 | 
			
		||||
	if (task_info(task, TASK_BASIC_INFO, (task_info_t)&ti, &count) != KERN_SUCCESS) {
 | 
			
		||||
		glibtop_warn_io_r (server, "task_info (proctime)");
 | 
			
		||||
		if (task != mach_task_self())
 | 
			
		||||
			mach_port_deallocate (mach_task_self(), task);
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	count = TASK_THREAD_TIMES_INFO_COUNT;
 | 
			
		||||
	if (task_info(task, TASK_THREAD_TIMES_INFO, (task_info_t)&tti, &count) != KERN_SUCCESS) {
 | 
			
		||||
		glibtop_warn_io_r (server, "task_info (proctime)");
 | 
			
		||||
		if (task != mach_task_self())
 | 
			
		||||
			mach_port_deallocate (mach_task_self(), task);
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	time_value_add (&utime, &ti.user_time);
 | 
			
		||||
	time_value_add (&stime, &ti.system_time);
 | 
			
		||||
	time_value_add (&utime, &tti.user_time);
 | 
			
		||||
	time_value_add (&stime, &tti.system_time);
 | 
			
		||||
 | 
			
		||||
	/* use the same frequency as cpu.c */
 | 
			
		||||
	buf->utime  = tv2sec (utime) / 10000;
 | 
			
		||||
	buf->stime  = tv2sec (stime) / 10000;
 | 
			
		||||
	buf->frequency = 1000000 / 10000;
 | 
			
		||||
	buf->start_time = kinfo.kp_proc.p_starttime.tv_sec;
 | 
			
		||||
 | 
			
		||||
	buf->flags  = _glibtop_sysdeps_proc_time;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,83 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/procuid.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_uid =
 | 
			
		||||
(1L << GLIBTOP_PROC_UID_UID) + (1L << GLIBTOP_PROC_UID_EUID) +
 | 
			
		||||
(1L << GLIBTOP_PROC_UID_GID) + (1L << GLIBTOP_PROC_UID_EGID) +
 | 
			
		||||
(1L << GLIBTOP_PROC_UID_PID) + (1L << GLIBTOP_PROC_UID_PPID) +
 | 
			
		||||
(1L << GLIBTOP_PROC_UID_PGRP) + (1L << GLIBTOP_PROC_UID_TTY) +
 | 
			
		||||
(1L << GLIBTOP_PROC_UID_TPGID);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proc_uid_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_uid = _glibtop_sysdeps_proc_uid;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_proc_uid_p (glibtop *server, glibtop_proc_uid *buf,
 | 
			
		||||
			pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
	int mib[4];
 | 
			
		||||
	size_t length;
 | 
			
		||||
	struct kinfo_proc kinfo;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_PROC_UID), 0);
 | 
			
		||||
	
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proc_uid));
 | 
			
		||||
 | 
			
		||||
	mib [0] = CTL_KERN;
 | 
			
		||||
	mib [1] = KERN_PROC;
 | 
			
		||||
	mib [2] = KERN_PROC_PID;
 | 
			
		||||
	mib [3] = pid;
 | 
			
		||||
 | 
			
		||||
	length = sizeof (struct kinfo_proc);
 | 
			
		||||
	if (sysctl (mib, 4, &kinfo, &length, NULL, 0) < 0) {
 | 
			
		||||
		glibtop_warn_io_r (server, "sysctl (procuid)");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	buf->uid      = kinfo.kp_eproc.e_pcred.p_ruid;
 | 
			
		||||
	buf->euid     = kinfo.kp_eproc.e_pcred.p_svuid;
 | 
			
		||||
	buf->gid      = kinfo.kp_eproc.e_pcred.p_rgid;
 | 
			
		||||
	buf->egid     = kinfo.kp_eproc.e_pcred.p_svgid;
 | 
			
		||||
	buf->ppid     = kinfo.kp_eproc.e_ppid;
 | 
			
		||||
	buf->pgrp     = kinfo.kp_eproc.e_pgid;
 | 
			
		||||
	buf->tpgid    = kinfo.kp_eproc.e_tpgid;
 | 
			
		||||
	buf->nice     = kinfo.kp_proc.p_nice;
 | 
			
		||||
	buf->priority = kinfo.kp_proc.p_priority;
 | 
			
		||||
 | 
			
		||||
	buf->flags    = _glibtop_sysdeps_proc_uid;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,50 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <glibtop/procwd.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <dirent.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_wd = 0;
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_proc_wd_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.proc_wd = _glibtop_sysdeps_proc_wd;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
char **
 | 
			
		||||
glibtop_get_proc_wd_p (glibtop *server, glibtop_proc_wd *buf,
 | 
			
		||||
			pid_t pid)
 | 
			
		||||
{
 | 
			
		||||
	glibtop_init_p (server, GLIBTOP_SYSDEPS_PROC_WD, 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_proc_wd));
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,47 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/sem_limits.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_sem_limits = 0;
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_sem_limits_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.sem_limits = _glibtop_sysdeps_sem_limits;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides information about sysv sem limits. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf)
 | 
			
		||||
{
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_SEM_LIMITS), 0);
 | 
			
		||||
	
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_sem_limits));
 | 
			
		||||
}
 | 
			
		||||
@@ -1,47 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/shm_limits.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_shm_limits = 0;
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_shm_limits_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.shm_limits = _glibtop_sysdeps_shm_limits;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides information about sysv ipc limits. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf)
 | 
			
		||||
{
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_SHM_LIMITS), 0);
 | 
			
		||||
	
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_shm_limits));
 | 
			
		||||
}
 | 
			
		||||
@@ -1,60 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/signal.h>
 | 
			
		||||
 | 
			
		||||
const glibtop_signame glibtop_sys_siglist [] =
 | 
			
		||||
{ {  1, "SIGHUP",    NULL },	/* hangup */
 | 
			
		||||
  {  2, "SIGINT",    NULL },	/* interrupt */
 | 
			
		||||
  {  3, "SIGQUIT",   NULL },	/* quit */
 | 
			
		||||
  {  4, "SIGILL",    NULL },	/* illegal instruction */
 | 
			
		||||
  {  5, "SIGTRAP",   NULL },	/* trace trap */
 | 
			
		||||
  {  6, "SIGTRAP",   NULL },	/* abort */
 | 
			
		||||
  {  7, "SIGEMT",    NULL },	/* EMT instruction */
 | 
			
		||||
  {  8, "SIGFPE",    NULL },	/* floating point exception */
 | 
			
		||||
  {  9, "SIGKILL",   NULL },	/* kill */
 | 
			
		||||
  { 10, "SIGBUS",    NULL },	/* bus error */
 | 
			
		||||
  { 11, "SIGSEGV",   NULL },	/* segmentation violation */
 | 
			
		||||
  { 12, "SIGSYS",    NULL },	/* bad argument to system call */
 | 
			
		||||
  { 13, "SIGPIPE",   NULL },	/* write on a pipe with no one to read it */
 | 
			
		||||
  { 14, "SIGALRM",   NULL },	/* alarm clock */
 | 
			
		||||
  { 15, "SIGTERM",   NULL },	/* software termination signal from kill */
 | 
			
		||||
  { 16, "SIGURG",    NULL },	/* urgent condition on IO channel */
 | 
			
		||||
  { 17, "SIGSTOP",   NULL },	/* sendable stop signal not from tty */
 | 
			
		||||
  { 18, "SIGTSTP",   NULL },	/* stop signal from tty */
 | 
			
		||||
  { 19, "SIGCONT",   NULL },	/* continue a stopped process */
 | 
			
		||||
  { 20, "SIGCHLD",   NULL },	/* to parent on child stop or exit */
 | 
			
		||||
  { 21, "SIGTTIN",   NULL },	/* to readers pgrp upon background tty read */
 | 
			
		||||
  { 22, "SIGTTOU",   NULL },	/* like TTIN for output */
 | 
			
		||||
  { 23, "SIGIO",     NULL },	/* input/output possible signal */
 | 
			
		||||
  { 24, "SIGXCPU",   NULL },	/* exceeded CPU time limit */
 | 
			
		||||
  { 25, "SIGXFSZ",   NULL },	/* exceeded file size limit */
 | 
			
		||||
  { 26, "SIGVTALRM", NULL },	/* virtual time alarm */
 | 
			
		||||
  { 27, "SIGPROF",   NULL },	/* profiling time alarm */
 | 
			
		||||
  { 28, "SIGWINCH",  NULL },	/* window size changes */
 | 
			
		||||
  { 29, "SIGWINFO",  NULL },	/* information request */
 | 
			
		||||
  { 30, "SIGUSR1",   NULL },	/* user defined signal 1 */
 | 
			
		||||
  { 31, "SIGUSR2",   NULL },	/* user defined signal 2 */
 | 
			
		||||
  {  0, NULL,        NULL }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -1,110 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/swap.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <mach/mach_host.h>
 | 
			
		||||
#include <mach/host_info.h>
 | 
			
		||||
#include <mach/mach_init.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/mount.h>
 | 
			
		||||
#include <dirent.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_swap =
 | 
			
		||||
(1L << GLIBTOP_SWAP_TOTAL) + (1L << GLIBTOP_SWAP_USED) +
 | 
			
		||||
(1L << GLIBTOP_SWAP_FREE) + (1L << GLIBTOP_SWAP_PAGEIN) +
 | 
			
		||||
(1L << GLIBTOP_SWAP_PAGEOUT);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_swap_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.swap = _glibtop_sysdeps_swap;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides information about swap usage. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_swap_p (glibtop *server, glibtop_swap *buf)
 | 
			
		||||
{
 | 
			
		||||
	vm_statistics_data_t vm_info;
 | 
			
		||||
	mach_msg_type_number_t info_count;
 | 
			
		||||
	DIR *dirp;
 | 
			
		||||
	struct dirent *dp;
 | 
			
		||||
	struct statfs sfs;
 | 
			
		||||
	u_int64_t total, used;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_SWAP), 0);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_swap));
 | 
			
		||||
 | 
			
		||||
	total = used = 0;
 | 
			
		||||
 | 
			
		||||
	dirp = opendir ("/private/var/vm");
 | 
			
		||||
	if (!dirp) {
 | 
			
		||||
		glibtop_warn_io_r (server, "opendir (swap)");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	while ((dp = readdir (dirp)) != NULL) {
 | 
			
		||||
		struct stat sb;
 | 
			
		||||
		char fname [MAXNAMLEN];
 | 
			
		||||
 | 
			
		||||
		if (strncmp (dp->d_name, "swapfile", 8))
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		strcpy (fname, "/private/var/vm/");
 | 
			
		||||
		strcat (fname, dp->d_name);
 | 
			
		||||
		if (stat (fname, &sb) < 0)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		used += sb.st_size;
 | 
			
		||||
	}
 | 
			
		||||
	closedir (dirp);
 | 
			
		||||
 | 
			
		||||
	if (statfs ("/private/var/vm", &sfs) < 0) {
 | 
			
		||||
		glibtop_warn_io_r (server, "statfs (swap)");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	total = (u_int64_t)sfs.f_bfree * sfs.f_bsize + used;
 | 
			
		||||
 | 
			
		||||
	info_count = HOST_VM_INFO_COUNT;
 | 
			
		||||
	if (host_statistics (mach_host_self (), HOST_VM_INFO,
 | 
			
		||||
			     (host_info_t) &vm_info, &info_count)) {
 | 
			
		||||
		glibtop_warn_io_r (server, "host_statistics (swap)");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	buf->total    = total;
 | 
			
		||||
	buf->used     = used;
 | 
			
		||||
	buf->free     = total - used;
 | 
			
		||||
	buf->pagein   = vm_info.pageins;
 | 
			
		||||
	buf->pageout  = vm_info.pageouts;
 | 
			
		||||
	buf->flags    = _glibtop_sysdeps_swap;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,90 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/cpu.h>
 | 
			
		||||
#include <glibtop/sysinfo.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_sysinfo =
 | 
			
		||||
(1L << GLIBTOP_SYSINFO_CPUINFO);
 | 
			
		||||
 | 
			
		||||
static glibtop_sysinfo sysinfo = { .flags = 0 };
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
init_sysinfo (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	char *model;
 | 
			
		||||
	guint64 ncpus = 1;
 | 
			
		||||
	int mhz = 0;
 | 
			
		||||
	size_t len;
 | 
			
		||||
 | 
			
		||||
	if (G_LIKELY (sysinfo.flags))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_s (&server, GLIBTOP_SYSDEPS_CPU, 0);
 | 
			
		||||
 | 
			
		||||
	len = sizeof (ncpus);
 | 
			
		||||
	sysctlbyname ("hw.ncpu", &ncpus, &len, NULL, 0);
 | 
			
		||||
	len = 0;
 | 
			
		||||
	sysctlbyname ("hw.model", NULL, &len, NULL, 0);
 | 
			
		||||
	model = g_malloc (len);
 | 
			
		||||
	sysctlbyname ("hw.model", model, &len, NULL, 0);
 | 
			
		||||
	len = sizeof (mhz);
 | 
			
		||||
	sysctlbyname ("hw.cpufrequency", &mhz, &len, NULL, 0);
 | 
			
		||||
	mhz = mhz / 1000000;
 | 
			
		||||
 | 
			
		||||
	for (sysinfo.ncpu = 0;
 | 
			
		||||
	     sysinfo.ncpu < GLIBTOP_NCPU && sysinfo.ncpu < ncpus;
 | 
			
		||||
	     sysinfo.ncpu++) {
 | 
			
		||||
		glibtop_entry * const cpuinfo = &sysinfo.cpuinfo[sysinfo.ncpu];
 | 
			
		||||
 | 
			
		||||
		cpuinfo->labels = g_ptr_array_new ();
 | 
			
		||||
 | 
			
		||||
		cpuinfo->values = g_hash_table_new_full(g_str_hash,
 | 
			
		||||
							g_str_equal,
 | 
			
		||||
							NULL, g_free);
 | 
			
		||||
 | 
			
		||||
		g_ptr_array_add (cpuinfo->labels, "processor");
 | 
			
		||||
		g_hash_table_insert (cpuinfo->values, "processor",
 | 
			
		||||
				     g_strdup_printf("%u", (guint)sysinfo.ncpu));
 | 
			
		||||
 | 
			
		||||
		g_ptr_array_add (cpuinfo->labels, "vendor_id");
 | 
			
		||||
		g_hash_table_insert (cpuinfo->values, "vendor_id",
 | 
			
		||||
				     g_strdup(model));
 | 
			
		||||
 | 
			
		||||
		g_ptr_array_add (cpuinfo->labels, "cpu MHz");
 | 
			
		||||
		g_hash_table_insert (cpuinfo->values, "cpu MHz",
 | 
			
		||||
				     g_strdup_printf("%d", mhz));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	g_free (model);
 | 
			
		||||
 | 
			
		||||
	sysinfo.flags = _glibtop_sysdeps_sysinfo;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const glibtop_sysinfo *
 | 
			
		||||
glibtop_get_sysinfo_s (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	init_sysinfo (server);
 | 
			
		||||
	return &sysinfo;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,66 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
   This file is part of LibGTop 2.0.
 | 
			
		||||
 | 
			
		||||
   LibGTop is 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.
 | 
			
		||||
 | 
			
		||||
   LibGTop is distributed in the hope that 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 LibGTop; see the file COPYING. If not, write to the
 | 
			
		||||
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
			
		||||
   Boston, MA 02111-1307, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/uptime.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop_suid.h>
 | 
			
		||||
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
#include <time.h>
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_uptime =
 | 
			
		||||
(1L << GLIBTOP_UPTIME_UPTIME);
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_uptime_p (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
	server->sysdeps.uptime = _glibtop_sysdeps_uptime;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides uptime and idle time. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_uptime_p (glibtop *server, glibtop_uptime *buf)
 | 
			
		||||
{
 | 
			
		||||
	int mib [] = { CTL_KERN, KERN_BOOTTIME };
 | 
			
		||||
	struct timeval boottime;
 | 
			
		||||
	size_t size = sizeof (boottime);
 | 
			
		||||
	time_t now;
 | 
			
		||||
 | 
			
		||||
	glibtop_init_p (server, (1 << GLIBTOP_SYSDEPS_UPTIME), 0);
 | 
			
		||||
	
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_uptime));
 | 
			
		||||
 | 
			
		||||
	/* copied from gkrellm port */
 | 
			
		||||
 | 
			
		||||
	if (sysctl (mib, 2, &boottime, &size, NULL, 0) == -1)
 | 
			
		||||
		return;
 | 
			
		||||
	time (&now);
 | 
			
		||||
 | 
			
		||||
	buf->uptime = now - boottime.tv_sec + 30;
 | 
			
		||||
	buf->flags = _glibtop_sysdeps_uptime;
 | 
			
		||||
}
 | 
			
		||||
@@ -8,7 +8,6 @@ libgtop_sysdeps_2_0_la_SOURCES	= open.c close.c cpu.c mem.c swap.c \
 | 
			
		||||
				  proctime.c procmem.c procsignal.c prockernel.c \
 | 
			
		||||
				  procsegment.c procargs.c procmap.c siglist.c \
 | 
			
		||||
				  sysinfo.c netload.c ppp.c glibtop_private.c \
 | 
			
		||||
				  mountlist.c \
 | 
			
		||||
				  fsusage.c netlist.c procopenfiles.c procwd.c
 | 
			
		||||
 | 
			
		||||
libgtop_sysdeps_2_0_la_LIBADD	=  @GLIB_LIBS@
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,6 @@
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/fsusage.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
 | 
			
		||||
#include "glibtop_private.h"
 | 
			
		||||
 | 
			
		||||
@@ -11,11 +10,15 @@
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include <linux/kdev_t.h>
 | 
			
		||||
#include <sys/statvfs.h>
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_linux_get_fsusage_read_write(glibtop *server,
 | 
			
		||||
				      glibtop_fsusage *buf,
 | 
			
		||||
				      const char *path);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Linux 2.6.x
 | 
			
		||||
@@ -124,8 +127,10 @@ static void linux_2_4_0(glibtop *server, glibtop_fsusage *buf, const char *path)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
get_fsusage_read_write(glibtop *server, glibtop_fsusage *buf, const char *path)
 | 
			
		||||
void
 | 
			
		||||
_glibtop_linux_get_fsusage_read_write(glibtop *server,
 | 
			
		||||
				      glibtop_fsusage *buf,
 | 
			
		||||
				      const char *path)
 | 
			
		||||
{
 | 
			
		||||
  if(server->os_version_code >= LINUX_VERSION_CODE(2, 6, 0))
 | 
			
		||||
    {
 | 
			
		||||
@@ -136,39 +141,3 @@ get_fsusage_read_write(glibtop *server, glibtop_fsusage *buf, const char *path)
 | 
			
		||||
      linux_2_4_0(server, buf, path);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* the following comes from sysdeps/common/mountlist.c if copyright matters...
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_fsusage =
 | 
			
		||||
(1L << GLIBTOP_FSUSAGE_BLOCKS) + (1L << GLIBTOP_FSUSAGE_BFREE)
 | 
			
		||||
+ (1L << GLIBTOP_FSUSAGE_BAVAIL) + (1L << GLIBTOP_FSUSAGE_FILES)
 | 
			
		||||
+ (1L << GLIBTOP_FSUSAGE_FFREE) + (1L << GLIBTOP_FSUSAGE_BLOCK_SIZE);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
glibtop_get_fsusage_s(glibtop *server, glibtop_fsusage *buf, const char *path)
 | 
			
		||||
{
 | 
			
		||||
  struct statvfs fsd;
 | 
			
		||||
 | 
			
		||||
  glibtop_init_r(&server, 0, 0);
 | 
			
		||||
  memset(buf, 0, sizeof(glibtop_fsusage));
 | 
			
		||||
 | 
			
		||||
  if (statvfs(path, &fsd) < 0) {
 | 
			
		||||
    glibtop_warn_r(server, "statvfs '%s' failed", path);
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  buf->blocks = fsd.f_blocks;
 | 
			
		||||
  buf->bfree  = fsd.f_bfree;
 | 
			
		||||
  buf->bavail = (fsd.f_bavail > fsd.f_bfree) ? 0 : fsd.f_bavail;
 | 
			
		||||
  buf->files  = fsd.f_files;
 | 
			
		||||
  buf->ffree  = fsd.f_ffree;
 | 
			
		||||
  buf->block_size = fsd.f_bsize;
 | 
			
		||||
  buf->flags = _glibtop_sysdeps_fsusage;
 | 
			
		||||
 | 
			
		||||
  /* setting additional flags is delegated */
 | 
			
		||||
  get_fsusage_read_write(server, buf, path);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,27 +17,31 @@
 | 
			
		||||
unsigned long long
 | 
			
		||||
get_scaled(const char *buffer, const char *key)
 | 
			
		||||
{
 | 
			
		||||
	const char    *ptr;
 | 
			
		||||
	const char    *ptr = buffer;;
 | 
			
		||||
	char	      *next;
 | 
			
		||||
	unsigned long long value = 0;
 | 
			
		||||
	unsigned long long value;
 | 
			
		||||
 | 
			
		||||
	if (G_LIKELY((ptr = strstr(buffer, key))))
 | 
			
		||||
	{
 | 
			
		||||
		ptr += strlen(key);
 | 
			
		||||
		value = strtoull(ptr, &next, 0);
 | 
			
		||||
 | 
			
		||||
		for ( ; *next; ++next) {
 | 
			
		||||
			if (*next == 'k') {
 | 
			
		||||
				value *= 1024;
 | 
			
		||||
				break;
 | 
			
		||||
			} else if (*next == 'M') {
 | 
			
		||||
				value *= 1024 * 1024;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
	if (key) {
 | 
			
		||||
		if (G_LIKELY((ptr = strstr(buffer, key))))
 | 
			
		||||
			ptr += strlen(key);
 | 
			
		||||
		else {
 | 
			
		||||
			g_warning("Could not read key '%s' in buffer '%s'",
 | 
			
		||||
				  key, buffer);
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
	} else
 | 
			
		||||
		g_warning("Could not read key '%s' in buffer '%s'",
 | 
			
		||||
			  key, buffer);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	value = strtoull(ptr, &next, 0);
 | 
			
		||||
 | 
			
		||||
	for ( ; *next; ++next) {
 | 
			
		||||
		if (*next == 'k') {
 | 
			
		||||
			value *= 1024;
 | 
			
		||||
			break;
 | 
			
		||||
		} else if (*next == 'M') {
 | 
			
		||||
			value *= 1024 * 1024;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return value;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,166 +0,0 @@
 | 
			
		||||
/* mountlist.c -- return a list of mounted filesystems
 | 
			
		||||
   Copyright (C) 1991, 1992 Free Software Foundation, Inc.
 | 
			
		||||
 | 
			
		||||
   This file is a fork of sysdeps/common/mountlist.c.
 | 
			
		||||
 | 
			
		||||
   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, or (at your option)
 | 
			
		||||
   any later version.
 | 
			
		||||
 | 
			
		||||
   This program is distributed in the hope that it will be useful,
 | 
			
		||||
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
   GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU General Public License
 | 
			
		||||
   along with this program; if not, write to the Free Software Foundation,
 | 
			
		||||
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Local Variables:
 | 
			
		||||
mode: C
 | 
			
		||||
c-file-style: "gnu"
 | 
			
		||||
End:
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <mntent.h>
 | 
			
		||||
 | 
			
		||||
#include <glibtop.h>
 | 
			
		||||
#include <glibtop/mountlist.h>
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* IgnoreList */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  GHashTable *table;
 | 
			
		||||
} IgnoreList;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static IgnoreList*
 | 
			
		||||
ignore_list_new(void)
 | 
			
		||||
{
 | 
			
		||||
  IgnoreList* ig;
 | 
			
		||||
  ig = g_new(IgnoreList, 1);
 | 
			
		||||
  ig->table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
 | 
			
		||||
  return ig;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
ignore_list_delete(IgnoreList* ig)
 | 
			
		||||
{
 | 
			
		||||
  if (ig) {
 | 
			
		||||
    g_hash_table_destroy(ig->table);
 | 
			
		||||
    g_free(ig);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
ignore_list_add(IgnoreList* ig, const char* fs)
 | 
			
		||||
{
 | 
			
		||||
  g_hash_table_insert(ig->table, g_strdup(fs), GINT_TO_POINTER(1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
ignore_list_has(IgnoreList* ig, const char* fs)
 | 
			
		||||
{
 | 
			
		||||
  gpointer data;
 | 
			
		||||
  data = g_hash_table_lookup(ig->table, fs);
 | 
			
		||||
  return data != NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* ~IgnoreList */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
ignore_fs(const char *fstype, IgnoreList** ig)
 | 
			
		||||
{
 | 
			
		||||
  if (!*ig) {
 | 
			
		||||
    FILE* fs;
 | 
			
		||||
    char line[128];
 | 
			
		||||
 | 
			
		||||
    *ig = ignore_list_new();
 | 
			
		||||
 | 
			
		||||
    if ((fs = fopen("/proc/filesystems", "r")) != NULL) {
 | 
			
		||||
      while (fgets(line, sizeof line, fs)) {
 | 
			
		||||
	if (!strncmp(line, "nodev", 5)) {
 | 
			
		||||
	  char *type;
 | 
			
		||||
	  type = g_strstrip(line + 5);
 | 
			
		||||
	  ignore_list_add(*ig, type);
 | 
			
		||||
	}
 | 
			
		||||
      }
 | 
			
		||||
      fclose(fs);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return ignore_list_has(*ig, fstype);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
glibtop_mountentry *
 | 
			
		||||
glibtop_get_mountlist_s(glibtop *server, glibtop_mountlist *buf, int all_fs)
 | 
			
		||||
{
 | 
			
		||||
  const struct mntent *mnt;
 | 
			
		||||
  FILE *fp;
 | 
			
		||||
  GArray* entries;
 | 
			
		||||
  IgnoreList* ig = NULL;
 | 
			
		||||
 | 
			
		||||
  glibtop_init_r(&server, 0, 0);
 | 
			
		||||
  memset(buf, 0, sizeof(glibtop_mountlist));
 | 
			
		||||
 | 
			
		||||
  /* wild guess, preallocate 8 entries
 | 
			
		||||
     on a desktop, almost everyone has / and a tmpfs for udev
 | 
			
		||||
     if all_fs, there are also proc, sys, fuse, binfmt, etc */
 | 
			
		||||
  entries = g_array_sized_new(FALSE, FALSE, sizeof(glibtop_mountentry), 8);
 | 
			
		||||
 | 
			
		||||
  if (!(fp = setmntent(MOUNTED, "r"))) {
 | 
			
		||||
      glibtop_warn_io_r(server, "Could not open %s", MOUNTED);
 | 
			
		||||
      goto out;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  while ((mnt = getmntent(fp)))
 | 
			
		||||
    {
 | 
			
		||||
      glibtop_mountentry *me;
 | 
			
		||||
      const char *devopt;
 | 
			
		||||
      gsize len;
 | 
			
		||||
 | 
			
		||||
      if (!all_fs && ignore_fs(mnt->mnt_type, &ig))
 | 
			
		||||
	continue;
 | 
			
		||||
 | 
			
		||||
      len = entries->len;
 | 
			
		||||
      g_array_set_size(entries, len + 1);
 | 
			
		||||
      me = &g_array_index(entries, glibtop_mountentry, len);
 | 
			
		||||
 | 
			
		||||
      g_strlcpy(me->devname, mnt->mnt_fsname, sizeof me->devname);
 | 
			
		||||
      g_strlcpy(me->mountdir, mnt->mnt_dir, sizeof me->mountdir);
 | 
			
		||||
      g_strlcpy(me->type, mnt->mnt_type, sizeof me->type);
 | 
			
		||||
      devopt = strstr(mnt->mnt_opts, "dev=");
 | 
			
		||||
      me->dev = (devopt ? strtoull(devopt + sizeof "dev=", NULL, 0) : (dev_t)-1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    endmntent(fp);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  out:
 | 
			
		||||
    ignore_list_delete(ig);
 | 
			
		||||
 | 
			
		||||
    buf->size = sizeof(glibtop_mountentry);
 | 
			
		||||
    buf->number = entries->len;
 | 
			
		||||
    buf->total = buf->number * buf->size;
 | 
			
		||||
    buf->flags = (1 << GLIBTOP_MOUNTLIST_SIZE)
 | 
			
		||||
    | (1 << GLIBTOP_MOUNTLIST_NUMBER)
 | 
			
		||||
    | (1 << GLIBTOP_MOUNTLIST_TOTAL);
 | 
			
		||||
 | 
			
		||||
  return (glibtop_mountentry*) g_array_free(entries, FALSE);
 | 
			
		||||
}
 | 
			
		||||
@@ -71,7 +71,7 @@ glibtop_get_proclist_s (glibtop *server, glibtop_proclist *buf,
 | 
			
		||||
	proc = opendir ("/proc");
 | 
			
		||||
	if (!proc) return NULL;
 | 
			
		||||
 | 
			
		||||
	if(fstat(dirfd(proc), &statb) != 0) return NULL;
 | 
			
		||||
	if(stat("/proc", &statb)) return NULL;
 | 
			
		||||
 | 
			
		||||
	pids = g_array_sized_new(FALSE, FALSE, sizeof(pid_t), statb.st_nlink);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@
 | 
			
		||||
#define SMAPS_FILE "/proc/%u/smaps"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define PROC_MAPS_FORMAT "%16" G_GINT64_MODIFIER "x-%16" G_GINT64_MODIFIER "x %4c %16" G_GINT64_MODIFIER "x %02hx:%02hx %" G_GINT64_MODIFIER "u%*[ ]%n"
 | 
			
		||||
#define PROC_MAPS_FORMAT "%16llx-%16llx %4c %16llx %02hx:%02hx %llu%*[ ]%n"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_proc_map =
 | 
			
		||||
@@ -66,49 +66,78 @@ _glibtop_init_proc_map_s (glibtop *server)
 | 
			
		||||
/* Provides detailed information about a process. */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
add_smaps(glibtop *server, FILE *smaps, glibtop_map_entry *entry)
 | 
			
		||||
 | 
			
		||||
struct smap_value {
 | 
			
		||||
	char name[16];
 | 
			
		||||
	size_t name_len;
 | 
			
		||||
	ptrdiff_t offset;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
compare(const void* a_key, const void* a_smap)
 | 
			
		||||
{
 | 
			
		||||
	const char* key = a_key;
 | 
			
		||||
	const struct smap_value* smap = a_smap;
 | 
			
		||||
	return strncmp(key, smap->name, smap->name_len);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
is_smap_value(const char* s)
 | 
			
		||||
{
 | 
			
		||||
	for ( ; *s; ++s) {
 | 
			
		||||
 | 
			
		||||
		if (isspace(*s))
 | 
			
		||||
			return FALSE;
 | 
			
		||||
 | 
			
		||||
		if (*s == ':')
 | 
			
		||||
			return TRUE;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  Returns whether line is a 'value' line
 | 
			
		||||
  and add if we know its meaning
 | 
			
		||||
*/
 | 
			
		||||
static gboolean
 | 
			
		||||
parse_smaps(glibtop_map_entry *entry, const char* line)
 | 
			
		||||
{
 | 
			
		||||
#define SMAP_OFFSET(MEMBER) offsetof(glibtop_map_entry, MEMBER)
 | 
			
		||||
#define STR_AND_LEN(X) (X), (sizeof X - 1)
 | 
			
		||||
 | 
			
		||||
	struct smap_value {
 | 
			
		||||
		char name[15];
 | 
			
		||||
		ptrdiff_t offset;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	/* keep sorted */
 | 
			
		||||
	const struct smap_value values[] = {
 | 
			
		||||
		{ "Size:",		SMAP_OFFSET(size) },
 | 
			
		||||
		{ "Rss:",		SMAP_OFFSET(rss) },
 | 
			
		||||
		{ "Shared_Clean:",	SMAP_OFFSET(shared_clean) },
 | 
			
		||||
		{ "Shared_Dirty:",	SMAP_OFFSET(shared_dirty) },
 | 
			
		||||
		{ "Private_Clean:",	SMAP_OFFSET(private_clean) },
 | 
			
		||||
		{ "Private_Dirty:",	SMAP_OFFSET(private_dirty) }
 | 
			
		||||
		{ STR_AND_LEN("Private_Clean:"),	SMAP_OFFSET(private_clean) },
 | 
			
		||||
		{ STR_AND_LEN("Private_Dirty:"),	SMAP_OFFSET(private_dirty) },
 | 
			
		||||
		{ STR_AND_LEN("Rss:"),			SMAP_OFFSET(rss) },
 | 
			
		||||
		{ STR_AND_LEN("Shared_Clean:"),		SMAP_OFFSET(shared_clean) },
 | 
			
		||||
		{ STR_AND_LEN("Shared_Dirty:"),		SMAP_OFFSET(shared_dirty) },
 | 
			
		||||
		{ STR_AND_LEN("Size:"),			SMAP_OFFSET(size) }
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	size_t i;
 | 
			
		||||
#undef STR_AND_LEN
 | 
			
		||||
#undef SMAP_OFFSET
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < G_N_ELEMENTS(values); ++i) {
 | 
			
		||||
		char line[80];
 | 
			
		||||
	struct smap_value* smap;
 | 
			
		||||
 | 
			
		||||
	smap = bsearch(line, values, G_N_ELEMENTS(values), sizeof values[0], compare);
 | 
			
		||||
 | 
			
		||||
	if (smap) {
 | 
			
		||||
		char *offset;
 | 
			
		||||
		guint64 *value;
 | 
			
		||||
 | 
			
		||||
		if (!fgets(line, sizeof line, smaps) || !g_str_has_prefix(line, values[i].name)) {
 | 
			
		||||
			glibtop_warn_io_r(server,
 | 
			
		||||
					  "Could not read smaps value %s",
 | 
			
		||||
					  values[i].name);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		offset = (void*) entry;
 | 
			
		||||
		offset += values[i].offset;
 | 
			
		||||
		offset += smap->offset;
 | 
			
		||||
		value = (void*) offset;
 | 
			
		||||
 | 
			
		||||
		*value = get_scaled(line, values[i].name);
 | 
			
		||||
		*value = get_scaled(line + smap->name_len, NULL);
 | 
			
		||||
		return TRUE;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	entry->flags |= _glibtop_sysdeps_map_entry_smaps;
 | 
			
		||||
 | 
			
		||||
#undef SMAP_OFFSET
 | 
			
		||||
	return is_smap_value(line);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -150,7 +179,7 @@ glibtop_get_proc_map_s (glibtop *server, glibtop_proc_map *buf,	pid_t pid)
 | 
			
		||||
 | 
			
		||||
	while(TRUE)
 | 
			
		||||
	{
 | 
			
		||||
		unsigned long perm = 0;
 | 
			
		||||
		unsigned long perm;
 | 
			
		||||
		guint len;
 | 
			
		||||
		int line_end;
 | 
			
		||||
 | 
			
		||||
@@ -164,6 +193,8 @@ glibtop_get_proc_map_s (glibtop *server, glibtop_proc_map *buf,	pid_t pid)
 | 
			
		||||
		if (getline(&line, &line_size, maps) == -1)
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
	new_entry_line:
 | 
			
		||||
 | 
			
		||||
		if (sscanf(line, PROC_MAPS_FORMAT,
 | 
			
		||||
			   &start, &end, flags, &offset,
 | 
			
		||||
			   &dev_major, &dev_minor, &inode, &line_end) != 7)
 | 
			
		||||
@@ -173,6 +204,7 @@ glibtop_get_proc_map_s (glibtop *server, glibtop_proc_map *buf,	pid_t pid)
 | 
			
		||||
		g_strstrip(filename);
 | 
			
		||||
 | 
			
		||||
		/* Compute access permissions. */
 | 
			
		||||
		perm = 0;
 | 
			
		||||
 | 
			
		||||
		if (flags [0] == 'r')
 | 
			
		||||
			perm |= GLIBTOP_MAP_PERM_READ;
 | 
			
		||||
@@ -205,11 +237,22 @@ glibtop_get_proc_map_s (glibtop *server, glibtop_proc_map *buf,	pid_t pid)
 | 
			
		||||
		entry->inode = inode;
 | 
			
		||||
		g_strlcpy(entry->filename, filename, sizeof entry->filename);
 | 
			
		||||
 | 
			
		||||
		if (has_smaps)
 | 
			
		||||
			add_smaps(server, maps, entry);
 | 
			
		||||
		if (has_smaps) {
 | 
			
		||||
			ssize_t ret;
 | 
			
		||||
			entry->flags |= _glibtop_sysdeps_map_entry_smaps;
 | 
			
		||||
 | 
			
		||||
			while ((ret = getline(&line, &line_size, maps)) != -1) {
 | 
			
		||||
				if (!parse_smaps(entry, line))
 | 
			
		||||
					goto new_entry_line;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (ret == -1)
 | 
			
		||||
				goto eof;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
eof:
 | 
			
		||||
 | 
			
		||||
	free(line);
 | 
			
		||||
	fclose (maps);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -79,9 +79,6 @@ glibtop_get_proc_wd_s(glibtop *server, glibtop_proc_wd *buf, pid_t pid)
 | 
			
		||||
	if ((task = opendir(path)) != NULL) {
 | 
			
		||||
		struct dirent *sub;
 | 
			
		||||
		while ((sub = readdir(task)) != NULL) {
 | 
			
		||||
			/* task dirs have numeric name */
 | 
			
		||||
			if (!isdigit(sub->d_name[0]))
 | 
			
		||||
				continue;
 | 
			
		||||
			g_snprintf(path, sizeof path, "/proc/%u/task/%s/cwd", pid, sub->d_name);
 | 
			
		||||
			if (safe_readlink(path, dir, sizeof dir) && !is_in(dirs, dir))
 | 
			
		||||
				g_ptr_array_add(dirs, g_strdup(dir));
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
/* Copyright (C) 2007 Henry Zhang
 | 
			
		||||
   This file is part of LibGTop 2.20.
 | 
			
		||||
/* Copyright (C) 1998-99 Martin Baulig
 | 
			
		||||
   This file is part of LibGTop 1.0.
 | 
			
		||||
 | 
			
		||||
   Contributed by Henry Zhang <hua.zhang@sun.com>, October 2007. 
 | 
			
		||||
   Contributed by Martin Baulig <martin@home-of-linux.org>, October 1998.
 | 
			
		||||
 | 
			
		||||
   LibGTop is free software; you can redistribute it and/or modify it
 | 
			
		||||
   under the terms of the GNU General Public License as published by
 | 
			
		||||
@@ -24,163 +24,14 @@
 | 
			
		||||
#include <glibtop/error.h>
 | 
			
		||||
#include <glibtop/netload.h>
 | 
			
		||||
 | 
			
		||||
#include "glibtop_private.h"
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <kstat.h>
 | 
			
		||||
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
#include <sys/ioctl.h>
 | 
			
		||||
#include <sys/sockio.h>
 | 
			
		||||
 | 
			
		||||
#include <net/if.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netload =
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_ERRORS_IN) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_ERRORS_OUT) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_COLLISIONS);
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netload_data =
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_ADDRESS) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_SUBNET) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_MTU);
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netload_bytes =
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_BYTES_IN) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_BYTES_OUT) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_BYTES_TOTAL);
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netload_packets =
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PACKETS_IN) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PACKETS_OUT) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PACKETS_TOTAL);
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netload_total =
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PACKETS_TOTAL) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_BYTES_TOTAL);
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netload_in =
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PACKETS_TOTAL) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_BYTES_TOTAL) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PACKETS_IN) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_BYTES_IN);
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netload_out =
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PACKETS_TOTAL) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_BYTES_TOTAL) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PACKETS_OUT) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_BYTES_OUT);
 | 
			
		||||
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netload_6 =
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_ADDRESS6) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_PREFIX6) +
 | 
			
		||||
(1L << GLIBTOP_NETLOAD_SCOPE6);
 | 
			
		||||
static const unsigned long _glibtop_sysdeps_netload = 0;
 | 
			
		||||
 | 
			
		||||
/* Init function. */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_glibtop_init_netload_s (glibtop *server)
 | 
			
		||||
{
 | 
			
		||||
        server->sysdeps.netload = _glibtop_sysdeps_netload |
 | 
			
		||||
	_glibtop_sysdeps_netload_bytes |
 | 
			
		||||
	_glibtop_sysdeps_netload_packets;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
solaris_stats(glibtop *server,
 | 
			
		||||
		glibtop_netload *buf,
 | 
			
		||||
		const char *interface)
 | 
			
		||||
{
 | 
			
		||||
	char	*name = interface;
 | 
			
		||||
	char	*module;
 | 
			
		||||
	char	*ptr;
 | 
			
		||||
    	kstat_ctl_t * const kctl = server->machine.kc;
 | 
			
		||||
	kstat_t			*ksp;
 | 
			
		||||
	kstat_named_t		*kdata;
 | 
			
		||||
	int have_bytes = 1;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 *  chop off the trailing interface
 | 
			
		||||
	 */
 | 
			
		||||
	module = strdup( name );
 | 
			
		||||
	ptr = module + strlen( module ) - 1;
 | 
			
		||||
	while( (ptr > module) && isdigit( (int) *ptr ) ) {
 | 
			
		||||
		*ptr = '\0';
 | 
			
		||||
		ptr--;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 *  get a kstat handle and update the user's kstat chain
 | 
			
		||||
	 */
 | 
			
		||||
	if( kctl == NULL ){
 | 
			
		||||
		glibtop_warn_io_r (server, "kstat_open ()");
 | 
			
		||||
		free( module );
 | 
			
		||||
		return( 0 );
 | 
			
		||||
	}
 | 
			
		||||
	while( kstat_chain_update( kctl ) != 0 )
 | 
			
		||||
		;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 *  traverse the kstat chain
 | 
			
		||||
	 *  to find the appropriate statistics
 | 
			
		||||
	 */
 | 
			
		||||
	if( (ksp = kstat_lookup( kctl,
 | 
			
		||||
			module, 0, name )) == NULL ) {
 | 
			
		||||
		free( module );
 | 
			
		||||
		return( 0 );
 | 
			
		||||
	}
 | 
			
		||||
	if( kstat_read( kctl, ksp, NULL ) == -1 ) {
 | 
			
		||||
		free( module );
 | 
			
		||||
		return( 0 );
 | 
			
		||||
	}
 | 
			
		||||
	free( module );
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 *  lookup & store the data
 | 
			
		||||
	 */
 | 
			
		||||
	kdata = (kstat_named_t *) kstat_data_lookup( ksp, "ipackets" );
 | 
			
		||||
	if( kdata != NULL ) {
 | 
			
		||||
		buf->packets_in= kdata->value.ul;
 | 
			
		||||
	}
 | 
			
		||||
	kdata = (kstat_named_t *) kstat_data_lookup( ksp, "opackets" );
 | 
			
		||||
	if( kdata != NULL ) {
 | 
			
		||||
		buf->packets_out = kdata->value.ul;
 | 
			
		||||
	}
 | 
			
		||||
	kdata = (kstat_named_t *) kstat_data_lookup( ksp, "rbytes" );
 | 
			
		||||
	if( kdata != NULL ) {
 | 
			
		||||
		buf->bytes_in =kdata->value.ul;
 | 
			
		||||
	}
 | 
			
		||||
	kdata = (kstat_named_t *) kstat_data_lookup( ksp, "obytes" );
 | 
			
		||||
	if( kdata != NULL ) {
 | 
			
		||||
		buf->bytes_out =kdata->value.ul;
 | 
			
		||||
	}
 | 
			
		||||
	kdata = (kstat_named_t *) kstat_data_lookup( ksp, "ierrors" );
 | 
			
		||||
	if( kdata != NULL ) {
 | 
			
		||||
		buf->errors_in = kdata->value.ul;
 | 
			
		||||
	}
 | 
			
		||||
	kdata = (kstat_named_t *) kstat_data_lookup( ksp, "oerrors" );
 | 
			
		||||
	if( kdata != NULL ) {
 | 
			
		||||
		buf->errors_out = kdata->value.ul;
 | 
			
		||||
	}
 | 
			
		||||
	kdata = (kstat_named_t *) kstat_data_lookup( ksp, "collisions" );
 | 
			
		||||
	if( kdata != NULL ) {
 | 
			
		||||
		buf->collisions = kdata->value.ul;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/* Compute total valules. */
 | 
			
		||||
 | 
			
		||||
	buf->bytes_total = buf->bytes_in + buf->bytes_out;
 | 
			
		||||
	buf->packets_total = buf->packets_in + buf->packets_out;
 | 
			
		||||
	buf->errors_total = buf->errors_in + buf->errors_out;
 | 
			
		||||
	/* And now the flags. */
 | 
			
		||||
	buf->flags |= _glibtop_sysdeps_netload;
 | 
			
		||||
	buf->flags |= _glibtop_sysdeps_netload_bytes;
 | 
			
		||||
	buf->flags |= _glibtop_sysdeps_netload_packets;
 | 
			
		||||
	    
 | 
			
		||||
	/* finished */
 | 
			
		||||
	server->sysdeps.netload = _glibtop_sysdeps_netload;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Provides network statistics. */
 | 
			
		||||
@@ -189,69 +40,5 @@ void
 | 
			
		||||
glibtop_get_netload_s (glibtop *server, glibtop_netload *buf,
 | 
			
		||||
		       const char *interface)
 | 
			
		||||
{
 | 
			
		||||
   int skfd;
 | 
			
		||||
    memset (buf, 0, sizeof (glibtop_netload));
 | 
			
		||||
 | 
			
		||||
    /* set flag */
 | 
			
		||||
    skfd = socket (PF_INET, SOCK_DGRAM, 0);
 | 
			
		||||
    if (skfd) {
 | 
			
		||||
	struct ifreq ifr;
 | 
			
		||||
 | 
			
		||||
	g_strlcpy (ifr.ifr_name, interface, sizeof ifr.ifr_name);
 | 
			
		||||
	if (ioctl (skfd, SIOCGIFFLAGS, &ifr) >= 0) {
 | 
			
		||||
	    const unsigned long long flags = ifr.ifr_flags;
 | 
			
		||||
 | 
			
		||||
	    buf->flags |= (1L << GLIBTOP_NETLOAD_IF_FLAGS);
 | 
			
		||||
 | 
			
		||||
	    if (flags & IFF_UP)
 | 
			
		||||
		buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_UP);
 | 
			
		||||
 | 
			
		||||
	    if (flags & IFF_BROADCAST)
 | 
			
		||||
		buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_BROADCAST);
 | 
			
		||||
 | 
			
		||||
	    if (flags & IFF_DEBUG)
 | 
			
		||||
		buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_DEBUG);
 | 
			
		||||
 | 
			
		||||
	    if (flags & IFF_LOOPBACK)
 | 
			
		||||
		buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_LOOPBACK);
 | 
			
		||||
 | 
			
		||||
	    if (flags & IFF_POINTOPOINT)
 | 
			
		||||
		buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_POINTOPOINT);
 | 
			
		||||
 | 
			
		||||
	    if (flags & IFF_RUNNING)
 | 
			
		||||
		buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_RUNNING);
 | 
			
		||||
 | 
			
		||||
	    if (flags & IFF_NOARP)
 | 
			
		||||
		buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_NOARP);
 | 
			
		||||
 | 
			
		||||
	    if (flags & IFF_PROMISC)
 | 
			
		||||
		buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_PROMISC);
 | 
			
		||||
 | 
			
		||||
	    if (flags & IFF_ALLMULTI)
 | 
			
		||||
		buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_ALLMULTI);
 | 
			
		||||
 | 
			
		||||
	    if (flags & IFF_MULTICAST)
 | 
			
		||||
		buf->if_flags |= (1L << GLIBTOP_IF_FLAGS_MULTICAST);
 | 
			
		||||
	    }
 | 
			
		||||
 | 
			
		||||
	g_strlcpy (ifr.ifr_name, interface, sizeof ifr.ifr_name);
 | 
			
		||||
	if (!ioctl (skfd, SIOCGIFADDR, &ifr)) {
 | 
			
		||||
	    buf->address = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr;
 | 
			
		||||
	    buf->flags |= (1L << GLIBTOP_NETLOAD_ADDRESS);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	g_strlcpy (ifr.ifr_name, interface, sizeof ifr.ifr_name);
 | 
			
		||||
	if (!ioctl (skfd, SIOCGIFNETMASK, &ifr)) {
 | 
			
		||||
	    buf->subnet = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr;
 | 
			
		||||
	    buf->flags |= (1L << GLIBTOP_NETLOAD_SUBNET);
 | 
			
		||||
	}
 | 
			
		||||
	close (skfd);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * Statistics
 | 
			
		||||
     */
 | 
			
		||||
     
 | 
			
		||||
    solaris_stats(server, buf, interface);
 | 
			
		||||
 | 
			
		||||
	memset (buf, 0, sizeof (glibtop_netload));
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user