Compare commits

..

53 Commits

Author SHA1 Message Date
Benoît Dejean
e3697c9a9e Released 2.22.1.
svn path=/trunk/; revision=2732
2008-04-04 18:27:42 +00:00
Benoît Dejean
91e2e5a1b7 Bumped version number.
svn path=/trunk/; revision=2731
2008-04-04 17:31:42 +00:00
Eskild Hustvedt
158280e297 Updated the Norwegian Nynorsk translation
svn path=/trunk/; revision=2730
2008-04-04 11:45:43 +00:00
Benoît Dejean
62c741074c Fixed dist for !linux.
Patch by Petr Salinger <Petr.Salinger@seznam.cz>.
Closes #525953.

svn path=/trunk/; revision=2729
2008-04-03 16:39:43 +00:00
Benoît Dejean
87a80ba430 Fixed warnings about proclist returning pid_t.
svn path=/trunk/; revision=2728
2008-04-03 16:29:55 +00:00
Simos Xenitellis
7bb5abb9a8 Updated Greek translation
svn path=/trunk/; revision=2727
2008-03-16 17:04:28 +00:00
Benoît Dejean
40485978ec Released 2.22.0
svn path=/trunk/; revision=2725
2008-03-10 19:04:34 +00:00
Gabor Kelemen
73c62a7bdb Translation updated
2008-03-09  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated


svn path=/trunk/; revision=2724
2008-03-09 21:03:49 +00:00
Yannig MARCHEGAY
e4d9c10a73 Updated Occitan translation
svn path=/trunk/; revision=2723
2008-03-08 09:52:17 +00:00
Marcel Telka
5d3f18e12c Updated Slovak translation.
2008-03-06  Marcel Telka  <marcel@telka.sk>

	* sk.po: Updated Slovak translation.

svn path=/trunk/; revision=2720
2008-03-06 21:13:15 +00:00
Benoît Dejean
d97b0c3419 Fixed flags.
svn path=/trunk/; revision=2719
2008-03-02 18:07:24 +00:00
Benoît Dejean
960d12822d Really set wchan.
svn path=/trunk/; revision=2718
2008-03-02 18:07:22 +00:00
Benoît Dejean
f79f25f5ce Bumped version to 2.21.93.
svn path=/trunk/; revision=2717
2008-03-02 18:04:06 +00:00
Changwoo Ryu
3bb78c22c4 Updated Korean translation
svn path=/trunk/; revision=2716
2008-02-26 10:14:36 +00:00
Benoît Dejean
4971103dc3 Released 2.21.92.
svn path=/trunk/; revision=2714
2008-02-25 19:31:05 +00:00
Benoît Dejean
35fab4d9aa Smarter smaps parsing.
See #518145.

svn path=/trunk/; revision=2713
2008-02-24 17:52:24 +00:00
Yannig MARCHEGAY
2078320e14 Updated Occitan translation
svn path=/trunk/; revision=2711
2008-02-19 21:42:33 +00:00
Chao-Hsiung Liao
46a29ac020 Updated Traditional Chinese translation(Hong Kong). Updated Traditional
2008-02-14  Chao-Hsiung Liao  <j_h_liau@yahoo.com.tw>

        * zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
        * zh_TW.po: Updated Traditional Chinese translation(Taiwan).



svn path=/trunk/; revision=2710
2008-02-14 12:14:40 +00:00
Pawan Chitrakar
d9c98b57c9 Updated Nepali Translation
svn path=/trunk/; revision=2709
2008-02-14 09:14:15 +00:00
Petr Kovář
9ce9de7942 cs.po: Updated Czech translation by Lucas Lommer.
svn path=/trunk/; revision=2708
2008-02-11 18:20:18 +00:00
Djihed Afifi
1409a8ef80 Updated Arabic Translation by Khaled Hosny.
svn path=/trunk/; revision=2707
2008-01-31 08:22:02 +00:00
Benoît Dejean
bff4a84864 Released 2.21.5
svn path=/trunk/; revision=2705
2008-01-14 18:32:57 +00:00
Djihed Afifi
77524a1ad2 Updated Arabic Translation by Khaled Hosny. . Also QA'ed by Khaled.
svn path=/trunk/; revision=2704
2008-01-12 01:07:16 +00:00
Inaki Larranaga Murgoitio
a171755aa6 Updated Basque translation.
2008-01-11  Inaki Larranaga Murgoitio  <dooteo@euskalgnu.org>

	* eu.po: Updated Basque translation.


svn path=/trunk/; revision=2703
2008-01-11 15:39:27 +00:00
Benoît Dejean
1d5f2cb395 Fixed build on GNU/kFreeBSD.
Patch by Petr Salinger <Petr.Salinger@seznam.cz>.
Closes #507430.

svn path=/trunk/; revision=2698
2008-01-05 13:45:31 +00:00
Benoît Dejean
86ace13645 Fixed unit of vsize and resident.
Patch by Kuang-che Wu <kcwu@csie.org>.
Closes #506889.

svn path=/trunk/; revision=2697
2008-01-05 13:45:17 +00:00
Yannig MARCHEGAY
57b1547333 Updated Occitan translation
svn path=/trunk/; revision=2694
2007-12-31 20:58:40 +00:00
Rahul Bhalerao
efee8728d1 Added Marathi Translations
svn path=/trunk/; revision=2693
2007-12-28 10:55:49 +00:00
Ignacio Casal Quinteiro
9ae5202a78 Updated Galician Translation.
svn path=/trunk/; revision=2692
2007-11-28 13:29:27 +00:00
Yannig MARCHEGAY
07322469b7 Updated Occitan translation
svn path=/trunk/; revision=2691
2007-11-20 20:04:46 +00:00
Kjartan Maraas
b797fcf578 Updated Norwegian bokmål translation.
2007-11-01  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Updated Norwegian bokmål translation.

svn path=/trunk/; revision=2690
2007-11-01 20:14:19 +00:00
Benoît Dejean
7725fdff77 Released 2.21.1.
svn path=/trunk/; revision=2688
2007-10-29 21:31:01 +00:00
Djihed Afifi
e5298ca598 Updated Arabic Translation by Youssef Chahibi.
svn path=/trunk/; revision=2687
2007-10-23 20:56:03 +00:00
Djihed Afifi
92d54e287a Updated Arabic Translation by Youssef Chahibi.
svn path=/trunk/; revision=2685
2007-10-21 16:45:11 +00:00
Matej Urbančič
2d9656e82a Updated Slovenian translation
svn path=/trunk/; revision=2684
2007-10-18 19:13:43 +00:00
Benoît Dejean
8674e92349 Implemented a linux-only fsusage sysdeps.
svn path=/trunk/; revision=2683
2007-10-17 20:53:53 +00:00
Benoît Dejean
f5bbc36a91 Little performance tuning to avoid too many array reallocation.
svn path=/trunk/; revision=2682
2007-10-17 20:52:50 +00:00
Benoît Dejean
b058565419 Displays all fs.
svn path=/trunk/; revision=2681
2007-10-17 20:51:40 +00:00
Yair Hershkovitz
2c6b951822 updated hebrew translation
svn path=/trunk/; revision=2680
2007-10-15 22:43:00 +00:00
Benoît Dejean
9b072525a6 Implemented a linux-only mountlist.
Smarter ignore list based on /proc/filesystems.

svn path=/trunk/; revision=2678
2007-10-15 17:52:34 +00:00
Benoît Dejean
e2e0e3a555 Don't export _s and _p symbols. These symbols were never meant to be
public (i know, i say it all the time ;). I've checked every
debian/sid package which depends on libgtop2-7 and it's OK.
This also fixes a symbol mess on darwin.

svn path=/trunk/; revision=2677
2007-10-15 17:49:29 +00:00
Benoît Dejean
f37f72781a Copy there to have a linux-only implementation.
svn path=/trunk/; revision=2676
2007-10-15 17:46:38 +00:00
Benoît Dejean
9618fe795f Fixed netload build.
Patch by Henry Zhang <hua.zhang@sun.com>.
Closes #346021.

svn path=/trunk/; revision=2675
2007-10-10 08:13:49 +00:00
Benoît Dejean
2e3231b051 Fixed libtool versioning.
gnome-2.20 is 8.0.1
trunk is now 8.1.1 i.e. revison 1 of 8.0.1.

svn path=/trunk/; revision=2674
2007-10-05 16:10:23 +00:00
Benoît Dejean
7fd14852db Use G_GINT64_MODIFIER to avoid warnings on LLP64.
svn path=/trunk/; revision=2673
2007-10-03 19:50:00 +00:00
Benoît Dejean
73728a78c7 Added rpc_pipefs to ignore list.
svn path=/trunk/; revision=2672
2007-10-03 19:49:13 +00:00
Benoît Dejean
3f55d507dd Fixed arguments type.
svn path=/trunk/; revision=2671
2007-10-03 19:29:28 +00:00
Alessio Frusciante
13cec7830f Updated Italian translation.
svn path=/trunk/; revision=2669
2007-10-02 21:18:59 +00:00
Benoît Dejean
665d65d164 Fixed printf format overflow.
svn path=/trunk/; revision=2668
2007-10-01 21:11:38 +00:00
Benoît Dejean
21adc6b0c5 Updated libtool version.
svn path=/trunk/; revision=2667
2007-09-28 17:40:06 +00:00
Benoît Dejean
3529a1b59f Added darwin port. Patch by Benjamin Reed <ranger@befunk.com>. Closes
Added darwin port.
Patch by Benjamin Reed <ranger@befunk.com>.
Closes #481068.

Bumped version number to 2.21.1.

svn path=/trunk/; revision=2666
2007-09-28 17:36:48 +00:00
Benoît Dejean
8a0a3632ac Use fstat instead of stat.
svn path=/trunk/; revision=2665
2007-09-28 17:32:59 +00:00
Benoît Dejean
e6f9e07a9e "." is not a tid.
svn path=/trunk/; revision=2664
2007-09-28 17:30:31 +00:00
74 changed files with 3780 additions and 729 deletions

30
NEWS
View File

@@ -1,15 +1,35 @@
05 Mars 2008: Overview of changes in 2.20.2
04 April 2008: Overview of changes in 2.22.1
============================================
* Fixed compilation/dist for !linux.
Closes #525953.
10 Mars 2008: Overview of changes in 2.22.0
===========================================
* linux:
- fixed smaps parsing on >= 2.6.24.x.
backport of svn+ssh://svn.gnome.org/svn/libgtop/trunk@2713.
- fixed proc_kernel.
7 January 2008: Overview of changes in 2.20.1
=============================================
25 February 2008: Overview of changes in 2.21.92
================================================
* linux:
- fixed smaps parsing on >= 2.6.24.x.
14 January 2008: Overview of changes in 2.21.5
==============================================
* 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.

View File

@@ -3,8 +3,8 @@ dnl Configure script for the Gnome library
dnl
m4_define([libgtop_major_version], [2])
m4_define([libgtop_minor_version], [20])
m4_define([libgtop_micro_version], [2])
m4_define([libgtop_minor_version], [22])
m4_define([libgtop_micro_version], [1])
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], [0])
m4_define([libgtop_revision], [1])
dnl increment if any interfaces have been added; set to 0
dnl if any interfaces have been removed. removal has
@@ -380,6 +380,7 @@ sysdeps/freebsd/Makefile
sysdeps/solaris/Makefile
sysdeps/aix/Makefile
sysdeps/bsd/Makefile
sysdeps/darwin/Makefile
src/Makefile
src/daemon/Makefile
lib/Makefile

View File

@@ -36,7 +36,7 @@ int main()
printf("%-20s %-10s %-10s %-10s %-10s\n",
"Filesystem", "Size", "Used", "Avail", "Use%");
entries = glibtop_get_mountlist(&buf, FALSE);
entries = glibtop_get_mountlist(&buf, TRUE);
for(i = 0; i < buf.number; ++i)
{

View File

@@ -47,9 +47,9 @@ main (int argc, char *argv [])
{
glibtop_union data;
glibtop_sysdeps sysdeps;
unsigned c, method, count, port, i, *ptr;
unsigned c, method, count, port, i;
char buffer [BUFSIZ];
pid_t pid, ppid;
pid_t pid, ppid, *ptr;
char *args;
count = PROFILE_COUNT;

View File

@@ -11,7 +11,7 @@
static void print_pids(guint64 which, guint64 arg)
{
unsigned *pids;
pid_t *pids;
unsigned i;
glibtop_proclist buf;

View File

@@ -108,10 +108,10 @@ main (int argc, char *argv [])
if (sizeof (void*) == 8)
format = "%016lx-%016lx %016lx - "
"%02x:%02x %08lu - %4s - %s\n";
"%02x:%02x %08lu - %5.5s - %s\n";
else
format = "%08lx-%08lx %08lx - "
"%02x:%02x %08lu - %4s - %s\n";
"%02x:%02x %08lu - %5.5s - %s\n";
fprintf (stderr, format,
(unsigned long) maps [i].start,

View File

@@ -239,7 +239,8 @@ main (int argc, char *argv [])
{
glibtop_proclist proclist;
glibtop_sysdeps sysdeps;
unsigned *ptr, pid, i;
unsigned i;
pid_t *ptr, pid;
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, GTOPLOCALEDIR);

View File

@@ -73,11 +73,11 @@ int
main (int argc, char *argv [])
{
glibtop_union data;
unsigned c, count, *ptr;
unsigned c, count;
struct rusage total_start, total_end;
struct rusage rusage_start, rusage_end;
struct timeval elapsed_utime, elapsed_stime;
pid_t pid;
pid_t pid, *ptr;
count = PROFILE_COUNT;

View File

@@ -1,130 +1,68 @@
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

View File

@@ -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.",
size, nbytes);
(unsigned)size, (unsigned)nbytes);
glibtop_read_l (server, nbytes, buffer);

View File

@@ -66,6 +66,8 @@ 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
@@ -92,6 +94,13 @@ 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
@@ -311,5 +320,7 @@ 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)
])

View File

@@ -1,18 +1,84 @@
2008-02-20 Pawan Chitrakar <chautari@gmail.com>
2008-04-04 Eskild Hustvedt <eskildh@gnome.org>
* nn.po: Updated Norwegian Nynorsk translation
2008-03-16 Simos Xenitellis <simos@gnome.org>
* el.po: Updated Greek translation.
2008-03-09 Gabor Kelemen <kelemeng@gnome.hu>
* hu.po: Translation updated
2008-03-06 Marcel Telka <marcel@telka.sk>
* sk.po: Updated Slovak translation.
2008-02-26 Changwoo Ryu <cwryu@debian.org>
* ko.po: Updated Korean translation.
2008-02-14 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
2008-02-14 Pawan Chitrakar <chautari@gmail.com>
* ne.po: Updated Nepali Translation.
2008-02-11 Petr Kovar <pknbe@volny.cz>
* cs.po: Updated Czech translation by Lucas Lommer.
2008-01-31 Djihed Afifi <djihed@gmail.com>
* ar.po: Updated Arabic Translation by Khaled Hosny.
2008-01-12 Djihed Afifi <djihed@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.
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-03 Luca Ferretti <elle.uca@libero.it>
2007-10-02 Alessio Frusciante <algol@firenze.linux.it>
* it.po: Updated Italian translation by Alessio Frusciante.
* it.po: Updated Italian translation.
2007-09-18 Alexander Shopov <ash@contact.bg>

View File

@@ -45,6 +45,7 @@ mi
mk
ml
mn
mr
ms
nb
ne

View File

@@ -5,51 +5,57 @@
# 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.
# Khaled Hosny <khaledhosny@eglug.org>, 2006, 2008.
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: 2007-09-08 14:32-0000\n"
"Last-Translator: Youssef Chahibi <chahibi@gmail.com>\n"
"Language-Team: Arabic <support@arabeyes.org>\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"
"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: Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : n>=3 && n<=10 ? 2 : 3\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"
#: ../lib/read.c:51
#, c-format
msgid "read %d byte"
msgid_plural "read %d bytes"
msgstr[0] "اقرأ بايت واحدة"
msgstr[1] "اقرأ بايتين"
msgstr[2] "اقرأ %d بايتات"
msgstr[3] "اقرأ %d بايت"
msgstr[0] "قرأ صفر بايت"
msgstr[1] "قرأ بايت واحدة"
msgstr[2] "قرأ بايتين"
msgstr[3] "قرأ %d بايتات"
msgstr[4] "قرأ %d بايت"
msgstr[5] "قرأ %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] "اقرأ %lu بايتات"
msgstr[3] "اقرأ %lu بايت"
msgstr[0] "قرأ صفر بايت من البيانات"
msgstr[1] "قرأ بايت واحدة من البيانات"
msgstr[2] "قرأ بايتين من البيانات"
msgstr[3] "قرأ %lu بايتات من البيانات"
msgstr[4] "قرأ %lu بايت من البيانات"
msgstr[5] "قرأ %lu بايت من البيانات"
#: ../lib/write.c:51
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
msgstr[0] "كتابة بايت واحدة"
msgstr[1] "كتابة بايتين"
msgstr[2] "كتابة %d بايتات"
msgstr[3] "كتابة %d بايت"
msgstr[0] "كتب صفر بايت"
msgstr[1] "كتب بايت واحدة"
msgstr[2] "كتب بايتين"
msgstr[3] "كتب %d بايتات"
msgstr[4] "كتب %d بايت"
msgstr[5] "كتب %d بايت"
#: ../src/daemon/gnuserv.c:458
msgid "Enable debugging"
@@ -57,7 +63,7 @@ msgstr "فعّل التنقيح"
#: ../src/daemon/gnuserv.c:460
msgid "Enable verbose output"
msgstr "فعّل خرْج مسهِب"
msgstr "فعّل الخرْج المسهِب"
#: ../src/daemon/gnuserv.c:462
msgid "Don't fork into background"
@@ -75,7 +81,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
@@ -95,7 +101,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
@@ -120,7 +126,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
@@ -130,7 +136,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
@@ -160,7 +166,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
@@ -185,7 +191,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
@@ -205,7 +211,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
@@ -220,19 +226,10 @@ 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 معرفة من طرف المستخدم"
#~ msgid "DEBUG"
#~ msgstr "DEBUG"
#~ msgid "VERBOSE"
#~ msgstr "VERBOSE"
#~ msgid "NO-DAEMON"
#~ msgstr "NO-DAEMON"
#~ msgid "INETD"
#~ msgstr "INETD"
msgstr "إشارة 2 معرفة من طرف المستخدم"

133
po/cs.po
View File

@@ -1,23 +1,24 @@
# Czech translation of libgtop
# Czech translation of libgtop.
# This file is distributed under the same license as the libgtop package.
# Copyright (C) 2004 Miloslav Trmac <mitr@volny.cz>
# Miloslav Trmac <mitr@volny.cz>, 2002, 2003, 2004
# Copyright (C) 2004 Miloslav Trmac <mitr@volny.cz>.
# Miloslav Trmac <mitr@volny.cz>, 2002, 2003, 2004.
# Lucas Lommer <llommer@svn.gnome.org>, 2008.
# Petr Kovar <pknbe@volny.cz>, 2008.
#
msgid ""
msgstr ""
"Project-Id-Version: libgtop VERSION\n"
"Project-Id-Version: libgtop\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-25 18:15+0200\n"
"PO-Revision-Date: 2005-01-02 15:10+0100\n"
"Last-Translator: Miloslav Trmac <mitr@volny.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"POT-Creation-Date: 2008-02-11 19:20+0100\n"
"PO-Revision-Date: 2008-02-11 19:17+0100\n"
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: lib/read.c:65
#: ../lib/read.c:51
#, c-format
msgid "read %d byte"
msgid_plural "read %d bytes"
@@ -25,11 +26,11 @@ msgstr[0] "přečten %d bajt"
msgstr[1] "přečteny %d bajty"
msgstr[2] "přečteno %d bajtů"
#: lib/read_data.c:53
#: ../lib/read_data.c:51
msgid "read data size"
msgstr "velikost přečtených dat"
#: 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"
@@ -37,7 +38,7 @@ msgstr[0] "přečten %lu bajt dat"
msgstr[1] "přečteny %lu bajty dat"
msgstr[2] "přečteno %lu bajtů dat"
#: lib/write.c:52
#: ../lib/write.c:51
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
@@ -45,167 +46,149 @@ msgstr[0] "zapsán %d bajt"
msgstr[1] "zapsány %d bajty"
msgstr[2] "zapsáno %d bajtů"
#: src/daemon/gnuserv.c:460
#: ../src/daemon/gnuserv.c:458
msgid "Enable debugging"
msgstr "Povolit ladění"
#: src/daemon/gnuserv.c:460
msgid "DEBUG"
msgstr "LADĚNÍ"
#: src/daemon/gnuserv.c:462
#: ../src/daemon/gnuserv.c:460
msgid "Enable verbose output"
msgstr "Povolit podrobný výstup"
#: src/daemon/gnuserv.c:462
msgid "VERBOSE"
msgstr "PODROBNĚ"
#: src/daemon/gnuserv.c:464
#: ../src/daemon/gnuserv.c:462
msgid "Don't fork into background"
msgstr "Neforkovat do pozadí"
msgstr "Nevětvit do pozadí"
#: src/daemon/gnuserv.c:464
msgid "NO-DAEMON"
msgstr "NE-DÉMON"
#: src/daemon/gnuserv.c:466
#: ../src/daemon/gnuserv.c:464
msgid "Invoked from inetd"
msgstr "Spuštěn z inetd"
msgstr "Spuštěno z 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"
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr ""
"Chyba v přepínači %s: %s.\n"
"Úplný seznam dostupných přepínačů zobrazíte spuštěním '%s --help'.\n"
"Spusťte prosím \"%s --help\", chcete-li zobrazit všechny dostupné přepínače "
"příkazové řádky.\n"
#: sysdeps/osf1/siglist.c:28 sysdeps/sun4/siglist.c:28
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
msgid "Hangup"
msgstr "Zavěšení"
#: sysdeps/osf1/siglist.c:29 sysdeps/sun4/siglist.c:29
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
msgid "Interrupt"
msgstr "Přerušení"
#: sysdeps/osf1/siglist.c:30 sysdeps/sun4/siglist.c:30
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
msgid "Quit"
msgstr "Konec"
msgstr "Ukončení"
#: sysdeps/osf1/siglist.c:31 sysdeps/sun4/siglist.c:31
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
msgid "Illegal instruction"
msgstr "Neplatná instrukce"
#: sysdeps/osf1/siglist.c:32 sysdeps/sun4/siglist.c:32
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
msgid "Trace trap"
msgstr "Trasovací zachycení"
#: sysdeps/osf1/siglist.c:33 sysdeps/sun4/siglist.c:33
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
msgid "Abort"
msgstr "Přerušení"
#: sysdeps/osf1/siglist.c:34 sysdeps/sun4/siglist.c:34
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
msgid "EMT error"
msgstr "Chyba EMT"
#: sysdeps/osf1/siglist.c:35 sysdeps/sun4/siglist.c:35
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
msgid "Floating-point exception"
msgstr "Výjimka v plovoucí řádové čárce"
#: sysdeps/osf1/siglist.c:36 sysdeps/sun4/siglist.c:36
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
msgid "Kill"
msgstr "Zabití"
#: sysdeps/osf1/siglist.c:37 sysdeps/sun4/siglist.c:37
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
msgid "Bus error"
msgstr "Chyba sběrnice"
#: sysdeps/osf1/siglist.c:38 sysdeps/sun4/siglist.c:38
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
msgid "Segmentation violation"
msgstr "Porušení segmentace"
#: sysdeps/osf1/siglist.c:39 sysdeps/sun4/siglist.c:39
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
msgid "Bad argument to system call"
msgstr "Špatný argument systémového volání"
#: sysdeps/osf1/siglist.c:40 sysdeps/sun4/siglist.c:40
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
msgid "Broken pipe"
msgstr "Přerušená roura"
#: sysdeps/osf1/siglist.c:41 sysdeps/sun4/siglist.c:41
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
msgid "Alarm clock"
msgstr "Alarm"
#: sysdeps/osf1/siglist.c:42 sysdeps/sun4/siglist.c:42
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
msgid "Termination"
msgstr "Přerušení"
#: sysdeps/osf1/siglist.c:43 sysdeps/sun4/siglist.c:43
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
msgid "Urgent condition on socket"
msgstr "Urgentní stav soketu"
msgstr "Urgentní stav socketu"
#: sysdeps/osf1/siglist.c:44 sysdeps/sun4/siglist.c:44
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
msgid "Stop"
msgstr "Zastavení"
#: sysdeps/osf1/siglist.c:45 sysdeps/sun4/siglist.c:45
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
msgid "Keyboard stop"
msgstr "Zastavení z klávesnice"
#: sysdeps/osf1/siglist.c:46 sysdeps/sun4/siglist.c:46
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
msgid "Continue"
msgstr "Pokračování"
#: sysdeps/osf1/siglist.c:47 sysdeps/sun4/siglist.c:47
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
msgid "Child status has changed"
msgstr "Stav potomka se změnil"
#: sysdeps/osf1/siglist.c:48 sysdeps/sun4/siglist.c:48
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
msgid "Background read from tty"
msgstr "Čtení tty z pozadí"
#: sysdeps/osf1/siglist.c:49 sysdeps/sun4/siglist.c:49
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
msgid "Background write to tty"
msgstr "Zápis na tty z pozadí"
#: sysdeps/osf1/siglist.c:50 sysdeps/sun4/siglist.c:50
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
msgid "I/O now possible"
msgstr "I/O je nyní možné"
#: sysdeps/osf1/siglist.c:51 sysdeps/sun4/siglist.c:51
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
msgid "CPU limit exceeded"
msgstr "Překročen limit CPU"
#: sysdeps/osf1/siglist.c:52 sysdeps/sun4/siglist.c:52
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
msgid "File size limit exceeded"
msgstr "Překročen limit velikosti souboru"
#: sysdeps/osf1/siglist.c:53 sysdeps/sun4/siglist.c:53
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
msgid "Virtual alarm clock"
msgstr "Virtuální alarm"
#: sysdeps/osf1/siglist.c:54 sysdeps/sun4/siglist.c:54
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
msgid "Profiling alarm clock"
msgstr "Profilovací alarm"
#: sysdeps/osf1/siglist.c:55 sysdeps/sun4/siglist.c:55
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
msgid "Window size change"
msgstr "Změna velikosti okna"
#: sysdeps/osf1/siglist.c:56 sysdeps/sun4/siglist.c:56
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
msgid "Information request"
msgstr "Požadavek na informaci"
#: sysdeps/osf1/siglist.c:57 sysdeps/sun4/siglist.c:57
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
msgid "User defined signal 1"
msgstr "Uživatelem definovaný signál 1"
#: sysdeps/osf1/siglist.c:58 sysdeps/sun4/siglist.c:58
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
msgid "User defined signal 2"
msgstr "Uživatelem definovaný signál 2"

115
po/el.po
View File

@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: el\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-25 18:15+0200\n"
"POT-Creation-Date: 2008-03-16 17:03+0000\n"
"PO-Revision-Date: 2005-02-18 13:40+0200\n"
"Last-Translator: Kostas Papadimas <pkst@gnome.org>\n"
"Language-Team: Greek <nls@tux.hellug.gr>\n"
@@ -29,195 +29,188 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: KBabel 1.3.1\n"
#: lib/read.c:65
#: ../lib/read.c:51
#, c-format
msgid "read %d byte"
msgid_plural "read %d bytes"
msgstr[0] "ανάγνωση %d byte"
msgstr[1] "ανάγνωση %d bytes"
#: 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 byte δεδομένων"
msgstr[1] "ανάγνωση %lu bytes δεδομένων"
#: lib/write.c:52
#: ../lib/write.c:51
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
msgstr[0] "εγγραφή %d byte"
msgstr[1] "εγγραφή %d bytes"
#: src/daemon/gnuserv.c:460
#: ../src/daemon/gnuserv.c:458
msgid "Enable debugging"
msgstr "Ενεργοποίηση εκσφαλμάτωσης"
#: src/daemon/gnuserv.c:460
msgid "DEBUG"
msgstr "ΕΚΣΦΑΛΜΑΤΩΣΗ"
#: src/daemon/gnuserv.c:462
#: ../src/daemon/gnuserv.c:460
msgid "Enable verbose output"
msgstr "Ενεργοποίηση περιφραστικής εξόδου"
#: src/daemon/gnuserv.c:462
msgid "VERBOSE"
msgstr "VERBOSE"
#: src/daemon/gnuserv.c:464
#: ../src/daemon/gnuserv.c:462
msgid "Don't fork into background"
msgstr "Να μη γίνει δικράνωση στο παρασκήνιο"
#: src/daemon/gnuserv.c:464
msgid "NO-DAEMON"
msgstr "ΧΩΡΊΣ-ΔΑΊΜΟΝΑ"
#: src/daemon/gnuserv.c:466
#: ../src/daemon/gnuserv.c:464
msgid "Invoked from inetd"
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"
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr ""
"Σφάλμα στην επιλογή %s: %s.\n"
"Εκτελέστε '%s --help' για να δείτε μια πλήρη λίστα των διαθέσιμων επιλογών "
"της γραμμής εντολών.\n"
#: sysdeps/osf1/siglist.c:28 sysdeps/sun4/siglist.c:28
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
msgid "Hangup"
msgstr "Αποτελμάτωση"
#: sysdeps/osf1/siglist.c:29 sysdeps/sun4/siglist.c:29
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
msgid "Interrupt"
msgstr "Διακοπή"
#: sysdeps/osf1/siglist.c:30 sysdeps/sun4/siglist.c:30
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
msgid "Quit"
msgstr "Έξοδος"
#: sysdeps/osf1/siglist.c:31 sysdeps/sun4/siglist.c:31
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
msgid "Illegal instruction"
msgstr "Ακατάλληλη εντολή"
#: sysdeps/osf1/siglist.c:32 sysdeps/sun4/siglist.c:32
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
msgid "Trace trap"
msgstr "Παγίδευση παρακολούθησης"
#: sysdeps/osf1/siglist.c:33 sysdeps/sun4/siglist.c:33
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
msgid "Abort"
msgstr "Αποβολή"
#: sysdeps/osf1/siglist.c:34 sysdeps/sun4/siglist.c:34
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
msgid "EMT error"
msgstr "Σφάλμα EMT"
#: sysdeps/osf1/siglist.c:35 sysdeps/sun4/siglist.c:35
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
msgid "Floating-point exception"
msgstr "Εξαίρεση κιν. υποδιαστολής"
#: sysdeps/osf1/siglist.c:36 sysdeps/sun4/siglist.c:36
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
msgid "Kill"
msgstr "Σκότωμα"
#: sysdeps/osf1/siglist.c:37 sysdeps/sun4/siglist.c:37
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
msgid "Bus error"
msgstr "Σφάλμα διαύλου"
#: sysdeps/osf1/siglist.c:38 sysdeps/sun4/siglist.c:38
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
msgid "Segmentation violation"
msgstr "Παραβίαση τμηματοποίησης"
#: sysdeps/osf1/siglist.c:39 sysdeps/sun4/siglist.c:39
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
msgid "Bad argument to system call"
msgstr "Ακατάλληλο όρισμα σε κλήση συστήματος"
#: sysdeps/osf1/siglist.c:40 sysdeps/sun4/siglist.c:40
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
msgid "Broken pipe"
msgstr "Διακοπείσα σωλήνωση"
#: sysdeps/osf1/siglist.c:41 sysdeps/sun4/siglist.c:41
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
msgid "Alarm clock"
msgstr "Ξυπνητήρι"
#: sysdeps/osf1/siglist.c:42 sysdeps/sun4/siglist.c:42
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
msgid "Termination"
msgstr "Τερματισμός"
#: sysdeps/osf1/siglist.c:43 sysdeps/sun4/siglist.c:43
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
msgid "Urgent condition on socket"
msgstr "Επείγουσα συνθήκη σε υποδοχέα"
#: sysdeps/osf1/siglist.c:44 sysdeps/sun4/siglist.c:44
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
msgid "Stop"
msgstr "Διακοπή"
#: sysdeps/osf1/siglist.c:45 sysdeps/sun4/siglist.c:45
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
msgid "Keyboard stop"
msgstr "Διακοπή πληκτρολογίου"
#: sysdeps/osf1/siglist.c:46 sysdeps/sun4/siglist.c:46
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
msgid "Continue"
msgstr "Συνέχεια"
#: sysdeps/osf1/siglist.c:47 sysdeps/sun4/siglist.c:47
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
msgid "Child status has changed"
msgstr "Η κατάσταση θυγατρικής διεργασίας έχει αλλάξει"
#: sysdeps/osf1/siglist.c:48 sysdeps/sun4/siglist.c:48
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
msgid "Background read from tty"
msgstr "Ανάγνωση παρασκηνίου από tty"
#: sysdeps/osf1/siglist.c:49 sysdeps/sun4/siglist.c:49
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
msgid "Background write to tty"
msgstr "Εγγραφή παρασκηνίου σε tty"
#: sysdeps/osf1/siglist.c:50 sysdeps/sun4/siglist.c:50
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
msgid "I/O now possible"
msgstr "Η Ε/Ε είναι τώρα δυνατή"
#: sysdeps/osf1/siglist.c:51 sysdeps/sun4/siglist.c:51
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
msgid "CPU limit exceeded"
msgstr "Το όριο ΚΜΕ έχει ξεπεραστεί"
#: sysdeps/osf1/siglist.c:52 sysdeps/sun4/siglist.c:52
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
msgid "File size limit exceeded"
msgstr "Το όριο μεγέθους αρχείου έχει ξεπεραστεί"
#: sysdeps/osf1/siglist.c:53 sysdeps/sun4/siglist.c:53
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
msgid "Virtual alarm clock"
msgstr "Ιδεατό ξυπνητήρι"
#: sysdeps/osf1/siglist.c:54 sysdeps/sun4/siglist.c:54
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
msgid "Profiling alarm clock"
msgstr "Έλεγχος απόδοσης ξυπνητηριού"
#: sysdeps/osf1/siglist.c:55 sysdeps/sun4/siglist.c:55
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
msgid "Window size change"
msgstr "Αλλαγή μεγέθους παραθύρου"
#: sysdeps/osf1/siglist.c:56 sysdeps/sun4/siglist.c:56
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
msgid "Information request"
msgstr "Αίτηση πληροφορίας"
# sysdeps/names/procsignal.c:49
#: sysdeps/osf1/siglist.c:57 sysdeps/sun4/siglist.c:57
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
msgid "User defined signal 1"
msgstr "Σήμα 1 οριζόμενο από το χρήστη"
# sysdeps/names/procsignal.c:49
#: sysdeps/osf1/siglist.c:58 sysdeps/sun4/siglist.c:58
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
msgid "User defined signal 2"
msgstr "Σήμα 2 οριζόμενο από το χρήστη"
#~ msgid "DEBUG"
#~ msgstr "ΕΚΣΦΑΛΜΑΤΩΣΗ"
#~ msgid "VERBOSE"
#~ msgstr "VERBOSE"
#~ msgid "NO-DAEMON"
#~ msgstr "ΧΩΡΊΣ-ΔΑΊΜΟΝΑ"
#~ msgid "INETD"
#~ msgstr "INETD"

View File

@@ -1,18 +1,18 @@
# translation of eu.po to Basque
# translation of libgtop.HEAD.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.
# Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>, 2004, 2005, 2008.
# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: eu\n"
"Project-Id-Version: libgtop.HEAD\n"
"Report-Msgid-Bugs-To: \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"
"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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -190,4 +190,3 @@ 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"

114
po/gl.po
View File

@@ -1,4 +1,4 @@
# translation of libgtop.gnome-2-10.po to Galego
# translation of gl.po to Galego
# Galician translation of libgtop.
# Copyright (C) 1999, 2000 Jesus Bravo Alvarez
#
@@ -9,209 +9,193 @@
#
# 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: libgtop.gnome-2-10\n"
"Project-Id-Version: gl\n"
"Report-Msgid-Bugs-To: \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"
"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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.9.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] "lido %d byte"
msgstr[1] "lidos %d bytes"
#: ../lib/read_data.c:53
#: ../lib/read_data.c:51
msgid "read data size"
msgstr "tamaño dos datos lidos"
#: ../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] "lido %lu byte de datos"
msgstr[1] "lidos %lu bytes de datos"
#: ../lib/write.c:53
#: ../lib/write.c:51
#, 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:460
#: ../src/daemon/gnuserv.c:458
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: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 "Produciuse un erro na opción %s: %s.\n"
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"
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
msgid "Hangup"
msgstr "Colgar"
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
msgid "Interrupt"
msgstr "Interromper"
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
msgid "Quit"
msgstr "Saír"
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
msgid "Illegal instruction"
msgstr "Instrución ilegal"
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
msgid "Trace trap"
msgstr "Captura do rastro"
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
msgid "Abort"
msgstr "Interromper"
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
msgid "EMT error"
msgstr "Erro 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 "Excepción da coma flotante"
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
msgid "Kill"
msgstr "Matar"
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
msgid "Bus error"
msgstr "Erro de bus"
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
msgid "Segmentation violation"
msgstr "Erro de segmento"
#: ../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 "Argumento incorrecto na chamada ao sistema"
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
msgid "Broken pipe"
msgstr "Canalización danada"
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
msgid "Alarm clock"
msgstr "Reloxo de alarma"
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
msgid "Termination"
msgstr "Finalización"
#: ../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 "Condición urxente no conectador"
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
msgid "Stop"
msgstr "Deter"
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
msgid "Keyboard stop"
msgstr "Detención co teclado"
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
msgid "Continue"
msgstr "Continuar"
#: ../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 "O estado do fillo cambiou"
#: ../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 "Lectura en segundo plano do tty"
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
msgid "Background write to tty"
msgstr "Escritura en segundo plano ao tty"
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
msgid "I/O now possible"
msgstr "A E/S é posible agora"
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
msgid "CPU limit exceeded"
msgstr "Límite de CPU excedido"
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
msgid "File size limit exceeded"
msgstr "Excedeuse o límite de tamaño do ficheiro"
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
msgid "Virtual alarm clock"
msgstr "Reloxo de alarma virtual"
#: ../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 "Reloxo de alarma con perfil"
#: ../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 "Cambio do tamaño da ventá"
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
msgid "Information request"
msgstr "Petición de Información"
#: ../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 "Sinal 1 definido polo usuario"
#: ../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 "Sinal 2 definido polo usuario"

View File

@@ -1,19 +1,19 @@
# Hungarian translation of libgtop.
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
# This file is distributed under the same license as the libgtop package.
#
# Robert Vanyi <robi@mora.u-szeged.hu>, 2000, 2001.
# Andras Timar <timar@gnome.hu>, 2002, 2003.
# Laszlo Dvornik <dvornik@gnome.hu>, 2004.
# Gabor Kelemen <kelemeng@gnome.hu>, 2004, 2005, 2007.
# Gabor Kelemen <kelemeng@gnome.hu>, 2004, 2005, 2007, 2008.
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-09-13 23:08+0200\n"
"POT-Creation-Date: 2007-09-13 23:10+0100\n"
"PO-Revision-Date: 2008-03-09 22:02+0100\n"
"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
"Language-Team: Hungarian <gnome@gnome.hu>\n"
"Language-Team: Hungarian <gnome@fsf.hu>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -64,7 +64,7 @@ msgstr "inetd-ből indítva"
#: ../src/daemon/gnuserv.c:498
#, c-format
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr "Futtassa a(z) \"%s --help\" parancsot a parancssori kapcsolók listájáért.\n"
msgstr "Futtassa a(z) %s --help parancsot a parancssori kapcsolók listájáért.\n"
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
msgid "Hangup"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libgtop\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-10-03 14:34+0200\n"
"POT-Creation-Date: 2007-10-02 23:18+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"

124
po/ko.po
View File

@@ -1,13 +1,13 @@
# libgtop ko.po
# Sung-Hyun Nam <namsh@lgic.co.kr>, 1998
# Changwoo Ryu <cwryu@debian.org>, 2002, 2004, 2005.
# Changwoo Ryu <cwryu@debian.org>, 2002, 2004, 2005, 2008.
#
msgid ""
msgstr ""
"Project-Id-Version: libgtop 2.9.92\n"
"Project-Id-Version: libgtop\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-25 18:15+0200\n"
"PO-Revision-Date: 2005-02-18 21:24+0900\n"
"POT-Creation-Date: 2008-02-26 19:13+0900\n"
"PO-Revision-Date: 2008-02-26 19:13+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: GNOME Korea <gnome-kr-hackers@lists.kldp.net>\n"
"MIME-Version: 1.0\n"
@@ -15,189 +15,181 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: lib/read.c:65
#: ../lib/read.c:51
#, c-format
msgid "read %d byte"
msgid_plural "read %d bytes"
msgstr[0] "%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바이트 읽음"
#: lib/write.c:52
#: ../lib/write.c:51
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
msgstr[0] "%d바이트 씀"
#: src/daemon/gnuserv.c:460
#: ../src/daemon/gnuserv.c:458
msgid "Enable debugging"
msgstr "디버깅 사용"
#: src/daemon/gnuserv.c:460
msgid "DEBUG"
msgstr "디버그"
#: src/daemon/gnuserv.c:462
#: ../src/daemon/gnuserv.c:460
msgid "Enable verbose output"
msgstr "많은 출력 사용"
#: src/daemon/gnuserv.c:462
msgid "VERBOSE"
msgstr "VERBOSE"
#: src/daemon/gnuserv.c:464
#: ../src/daemon/gnuserv.c:462
msgid "Don't fork into background"
msgstr "백그라운드로 실행 안 함"
#: src/daemon/gnuserv.c:464
msgid "NO-DAEMON"
msgstr "NO-DAEMON"
#: src/daemon/gnuserv.c:466
#: ../src/daemon/gnuserv.c:464
msgid "Invoked from inetd"
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 --help'라고 실행하십시오.\n"
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr "사용할 수 있는 명령행 옵션을 모두 보려면 '%s --help'라고 실행하십시오.\n"
#: sysdeps/osf1/siglist.c:28 sysdeps/sun4/siglist.c:28
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
msgid "Hangup"
msgstr "끊어짐"
#: sysdeps/osf1/siglist.c:29 sysdeps/sun4/siglist.c:29
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
msgid "Interrupt"
msgstr "인터럽트"
#: sysdeps/osf1/siglist.c:30 sysdeps/sun4/siglist.c:30
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
msgid "Quit"
msgstr "끝내기"
#: sysdeps/osf1/siglist.c:31 sysdeps/sun4/siglist.c:31
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
msgid "Illegal instruction"
msgstr "잘못된 기계명령"
#: sysdeps/osf1/siglist.c:32 sysdeps/sun4/siglist.c:32
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
msgid "Trace trap"
msgstr "추적 트랩"
#: sysdeps/osf1/siglist.c:33 sysdeps/sun4/siglist.c:33
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
msgid "Abort"
msgstr "중지"
#: sysdeps/osf1/siglist.c:34 sysdeps/sun4/siglist.c:34
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
msgid "EMT error"
msgstr "EMT 에러"
#: sysdeps/osf1/siglist.c:35 sysdeps/sun4/siglist.c:35
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
msgid "Floating-point exception"
msgstr "실수연산 예외"
#: sysdeps/osf1/siglist.c:36 sysdeps/sun4/siglist.c:36
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
msgid "Kill"
msgstr "죽임"
#: sysdeps/osf1/siglist.c:37 sysdeps/sun4/siglist.c:37
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
msgid "Bus error"
msgstr "버스 에러"
#: sysdeps/osf1/siglist.c:38 sysdeps/sun4/siglist.c:38
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
msgid "Segmentation violation"
msgstr "세그먼테이션 위반"
#: sysdeps/osf1/siglist.c:39 sysdeps/sun4/siglist.c:39
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
msgid "Bad argument to system call"
msgstr "시스템 콜에 잘못된 인자"
#: sysdeps/osf1/siglist.c:40 sysdeps/sun4/siglist.c:40
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
msgid "Broken pipe"
msgstr "깨진 파이프"
#: sysdeps/osf1/siglist.c:41 sysdeps/sun4/siglist.c:41
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
msgid "Alarm clock"
msgstr "알람 클럭"
#: sysdeps/osf1/siglist.c:42 sysdeps/sun4/siglist.c:42
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
msgid "Termination"
msgstr "Termination"
#: sysdeps/osf1/siglist.c:43 sysdeps/sun4/siglist.c:43
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
msgid "Urgent condition on socket"
msgstr "소켓에 위급한 조건"
#: sysdeps/osf1/siglist.c:44 sysdeps/sun4/siglist.c:44
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
msgid "Stop"
msgstr "중지"
#: sysdeps/osf1/siglist.c:45 sysdeps/sun4/siglist.c:45
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
msgid "Keyboard stop"
msgstr "키보드 중지"
#: sysdeps/osf1/siglist.c:46 sysdeps/sun4/siglist.c:46
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
msgid "Continue"
msgstr "계속"
#: sysdeps/osf1/siglist.c:47 sysdeps/sun4/siglist.c:47
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
msgid "Child status has changed"
msgstr "하위 프로세스 상태가 바뀌었습니다"
#: sysdeps/osf1/siglist.c:48 sysdeps/sun4/siglist.c:48
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
msgid "Background read from tty"
msgstr "tty에서 백그라운드 읽기"
#: sysdeps/osf1/siglist.c:49 sysdeps/sun4/siglist.c:49
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
msgid "Background write to tty"
msgstr "tty로 백그라운드 쓰기"
#: sysdeps/osf1/siglist.c:50 sysdeps/sun4/siglist.c:50
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
msgid "I/O now possible"
msgstr "I/O 이제 가능"
#: sysdeps/osf1/siglist.c:51 sysdeps/sun4/siglist.c:51
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
msgid "CPU limit exceeded"
msgstr "CPU 한계 초과"
#: sysdeps/osf1/siglist.c:52 sysdeps/sun4/siglist.c:52
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
msgid "File size limit exceeded"
msgstr "파일 크기 한계 초과"
#: sysdeps/osf1/siglist.c:53 sysdeps/sun4/siglist.c:53
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
msgid "Virtual alarm clock"
msgstr "가상 알람 클럭"
#: sysdeps/osf1/siglist.c:54 sysdeps/sun4/siglist.c:54
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
msgid "Profiling alarm clock"
msgstr "Profiling 알람 클럭"
#: sysdeps/osf1/siglist.c:55 sysdeps/sun4/siglist.c:55
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
msgid "Window size change"
msgstr "창 크기 바뀜"
#: sysdeps/osf1/siglist.c:56 sysdeps/sun4/siglist.c:56
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
msgid "Information request"
msgstr "정보 요청"
#: sysdeps/osf1/siglist.c:57 sysdeps/sun4/siglist.c:57
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
msgid "User defined signal 1"
msgstr "사용자 정의 신호 1"
#: sysdeps/osf1/siglist.c:58 sysdeps/sun4/siglist.c:58
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
msgid "User defined signal 2"
msgstr "사용자 정의 신호 2"
#~ msgid "DEBUG"
#~ msgstr "디버그"
#~ msgid "VERBOSE"
#~ msgstr "VERBOSE"
#~ msgid "NO-DAEMON"
#~ msgstr "NO-DAEMON"
#~ msgid "INETD"
#~ msgstr "INETD"

190
po/mr.po Normal file
View File

@@ -0,0 +1,190 @@
# 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"

View File

@@ -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-2004.
# Kjartan Maraas <kmaraas@gnome.org>, 1998-2007.
#
msgid ""
msgstr ""
"Project-Id-Version: libgtop 2.5.1\n"
"Project-Id-Version: libgtop 2.21.x\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 <i18n-nb@lister.ping.uio.no>\n"
"Language-Team: Norwegian Bokmål <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"

131
po/nn.po
View File

@@ -9,202 +9,195 @@ msgid ""
msgstr ""
"Project-Id-Version: nn\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-25 18:15+0200\n"
"PO-Revision-Date: 2004-03-23 12:02+0100\n"
"Last-Translator: Åsmund Skjæveland\n"
"Language-Team: Norwegian Nynorsk <i18n-nn@lister.ping.uio.no>\n"
"POT-Creation-Date: 2008-04-04 13:45+0200\n"
"PO-Revision-Date: 2008-04-04 13:45+0200\n"
"Last-Translator: Eskild Hustvedt <eskildh@gnome.org>\n"
"Language-Team: Norwegian Nynorsk <i18n-no@lister.ping.uio.no>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.3.1\n"
"X-Generator: VIM\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] "las %d byte"
msgstr[1] "las %d byte"
#: lib/read_data.c:53
#: ../lib/read_data.c:51
msgid "read data size"
msgstr "lesestorleik på data"
#: lib/read_data.c:72
#, fuzzy, c-format
#: ../lib/read_data.c:70
#, c-format
msgid "read %lu byte of data"
msgid_plural "read %lu bytes of data"
msgstr[0] "las %d byte"
msgstr[1] "las %d byte"
msgstr[0] "las %d byte data"
msgstr[1] "las %d byte data"
#: lib/write.c:52
#, fuzzy, c-format
#: ../lib/write.c:51
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
msgstr[0] "skriv %d byte"
msgstr[1] "skriv %d byte"
#: src/daemon/gnuserv.c:460
#: ../src/daemon/gnuserv.c:458
msgid "Enable debugging"
msgstr "Skru på feilsøking"
#: src/daemon/gnuserv.c:460
msgid "DEBUG"
msgstr "FEILSØK"
#: src/daemon/gnuserv.c:462
#: ../src/daemon/gnuserv.c:460
msgid "Enable verbose output"
msgstr "Skru på ordrike utdata"
#: src/daemon/gnuserv.c:462
msgid "VERBOSE"
msgstr "ORDRIK"
#: src/daemon/gnuserv.c:464
#: ../src/daemon/gnuserv.c:462
msgid "Don't fork into background"
msgstr "Ikkje fork av inn i bakgrunnen"
#: src/daemon/gnuserv.c:464
msgid "NO-DAEMON"
msgstr "UTAN-NISSE"
#: src/daemon/gnuserv.c:466
#: ../src/daemon/gnuserv.c:464
msgid "Invoked from inetd"
msgstr "Starta frå 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"
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr ""
"Feil på valet «%s»: %s.\n"
"Køyr «%s --help» for å sjå full liste over tilgjengelege kommandlinjeval.\n"
#: sysdeps/osf1/siglist.c:28 sysdeps/sun4/siglist.c:28
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
msgid "Hangup"
msgstr "Legg på"
#: sysdeps/osf1/siglist.c:29 sysdeps/sun4/siglist.c:29
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
msgid "Interrupt"
msgstr "Avbrot"
#: sysdeps/osf1/siglist.c:30 sysdeps/sun4/siglist.c:30
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
msgid "Quit"
msgstr "Avslutt"
#: sysdeps/osf1/siglist.c:31 sysdeps/sun4/siglist.c:31
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
msgid "Illegal instruction"
msgstr "Ulovleg instruksjon."
#: sysdeps/osf1/siglist.c:32 sysdeps/sun4/siglist.c:32
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
msgid "Trace trap"
msgstr "Sporingsfelle"
#: sysdeps/osf1/siglist.c:33 sysdeps/sun4/siglist.c:33
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
msgid "Abort"
msgstr "Avbryt"
#: sysdeps/osf1/siglist.c:34 sysdeps/sun4/siglist.c:34
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
msgid "EMT error"
msgstr "EMT-feil"
#: sysdeps/osf1/siglist.c:35 sysdeps/sun4/siglist.c:35
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
msgid "Floating-point exception"
msgstr "Flyttaluttrykk"
#: sysdeps/osf1/siglist.c:36 sysdeps/sun4/siglist.c:36
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
msgid "Kill"
msgstr "Drep"
#: sysdeps/osf1/siglist.c:37 sysdeps/sun4/siglist.c:37
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
msgid "Bus error"
msgstr "Bussfeil"
#: sysdeps/osf1/siglist.c:38 sysdeps/sun4/siglist.c:38
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
msgid "Segmentation violation"
msgstr "Segmenteringsovertramp"
#: sysdeps/osf1/siglist.c:39 sysdeps/sun4/siglist.c:39
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
msgid "Bad argument to system call"
msgstr "Ugyldig argument til systemkall"
#: sysdeps/osf1/siglist.c:40 sysdeps/sun4/siglist.c:40
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
msgid "Broken pipe"
msgstr "Brote røyr"
#: sysdeps/osf1/siglist.c:41 sysdeps/sun4/siglist.c:41
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
msgid "Alarm clock"
msgstr "Alarmklokke"
#: sysdeps/osf1/siglist.c:42 sysdeps/sun4/siglist.c:42
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
msgid "Termination"
msgstr "Avlustting"
#: sysdeps/osf1/siglist.c:43 sysdeps/sun4/siglist.c:43
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
msgid "Urgent condition on socket"
msgstr "Hastesituasjon på sokkelen"
#: sysdeps/osf1/siglist.c:44 sysdeps/sun4/siglist.c:44
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
msgid "Stop"
msgstr "Stopp"
#: sysdeps/osf1/siglist.c:45 sysdeps/sun4/siglist.c:45
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
msgid "Keyboard stop"
msgstr "Tastaturstopp"
#: sysdeps/osf1/siglist.c:46 sysdeps/sun4/siglist.c:46
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
msgid "Continue"
msgstr "Fortset"
#: sysdeps/osf1/siglist.c:47 sysdeps/sun4/siglist.c:47
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
msgid "Child status has changed"
msgstr "Status på born er endra"
#: sysdeps/osf1/siglist.c:48 sysdeps/sun4/siglist.c:48
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
msgid "Background read from tty"
msgstr "Les frå tty i bakgrunnen"
#: sysdeps/osf1/siglist.c:49 sysdeps/sun4/siglist.c:49
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
msgid "Background write to tty"
msgstr "Skriv til tty i bakgrunnen"
#: sysdeps/osf1/siglist.c:50 sysdeps/sun4/siglist.c:50
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
msgid "I/O now possible"
msgstr "I/O no mogleg"
#: sysdeps/osf1/siglist.c:51 sysdeps/sun4/siglist.c:51
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
msgid "CPU limit exceeded"
msgstr "CPU-grense passert"
#: sysdeps/osf1/siglist.c:52 sysdeps/sun4/siglist.c:52
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
msgid "File size limit exceeded"
msgstr "Filstorleikgrense passert"
#: sysdeps/osf1/siglist.c:53 sysdeps/sun4/siglist.c:53
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
msgid "Virtual alarm clock"
msgstr "Virtuel alarmklokke"
#: sysdeps/osf1/siglist.c:54 sysdeps/sun4/siglist.c:54
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
msgid "Profiling alarm clock"
msgstr "Profilerer alarmklokke"
#: sysdeps/osf1/siglist.c:55 sysdeps/sun4/siglist.c:55
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
msgid "Window size change"
msgstr "Endring i vindaugsstorleik"
#: sysdeps/osf1/siglist.c:56 sysdeps/sun4/siglist.c:56
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
msgid "Information request"
msgstr "Informasjonsførespurnad"
#: sysdeps/osf1/siglist.c:57 sysdeps/sun4/siglist.c:57
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
msgid "User defined signal 1"
msgstr "Eigendefinert 1"
#: sysdeps/osf1/siglist.c:58 sysdeps/sun4/siglist.c:58
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
msgid "User defined signal 2"
msgstr "Eigendefinert 2"
#~ msgid "DEBUG"
#~ msgstr "FEILSØK"
#~ msgid "VERBOSE"
#~ msgstr "ORDRIK"
#~ msgid "NO-DAEMON"
#~ msgstr "UTAN-NISSE"
#~ msgid "INETD"
#~ msgstr "INETD"

View File

@@ -1,16 +1,15 @@
# Occitan translation of libgtop.
# Copyright (C) 1998-2004 Free Software Foundation, Inc.
# Copyright (C) 1998-2004, 2007 Free Software Foundation, Inc.
# This file is distributed under the GNU General Public License Version 2.
#
# Yannig MARCHEGAY (yannig@marchegay.org) - 2006-2007
#
# Yannig Marchegay (Kokoyaya) <yannig@marchegay.org> - 2006-2007
msgid ""
msgstr ""
"Project-Id-Version: libgtop 2.9.91\n"
"Project-Id-Version: oc\n"
"Report-Msgid-Bugs-To: \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"
"POT-Creation-Date: 2008-03-07 10:22+0100\n"
"PO-Revision-Date: 2007-11-20 14:32+0100\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"
@@ -21,8 +20,8 @@ msgstr ""
#, c-format
msgid "read %d byte"
msgid_plural "read %d bytes"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "a legit %d octet"
msgstr[1] "a legits %d octets"
#: ../lib/read_data.c:51
msgid "read data size"
@@ -39,8 +38,8 @@ msgstr[1] ""
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "a escrich %d octet"
msgstr[1] "a escriches %d octets"
#: ../src/daemon/gnuserv.c:458
msgid "Enable debugging"

115
po/sk.po
View File

@@ -1,15 +1,13 @@
# libgtop sk.po
# Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
# Marcel Telka <marcel@telka.sk>, 2001, 2002, 2003, 2004.
#
# $Id$
# Copyright (C) 2001, 2002, 2003, 2004, 2008 Free Software Foundation, Inc.
# Marcel Telka <marcel@telka.sk>, 2001, 2002, 2003, 2004, 2008.
#
msgid ""
msgstr ""
"Project-Id-Version: libgtop\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-25 18:15+0200\n"
"PO-Revision-Date: 2004-12-29 10:21+0100\n"
"POT-Creation-Date: 2008-03-06 22:12+0100\n"
"PO-Revision-Date: 2008-03-06 22:12+0100\n"
"Last-Translator: Marcel Telka <Marcel@telka.sk>\n"
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
"MIME-Version: 1.0\n"
@@ -17,7 +15,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural= (n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
#: lib/read.c:65
#: ../lib/read.c:51
#, c-format
msgid "read %d byte"
msgid_plural "read %d bytes"
@@ -25,11 +23,11 @@ msgstr[0] "načítaných %d bajtov"
msgstr[1] "načítaný %d bajt"
msgstr[2] "načítané %d bajty"
#: lib/read_data.c:53
#: ../lib/read_data.c:51
msgid "read data size"
msgstr "veľkosť načítaných dát"
#: 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"
@@ -37,7 +35,7 @@ msgstr[0] "načítaných %lu bajtov dát"
msgstr[1] "načítaný %lu bajt dát"
msgstr[2] "načítané %lu bajty dát"
#: lib/write.c:52
#: ../lib/write.c:51
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
@@ -45,168 +43,149 @@ msgstr[0] "zapísaných %d bajtov"
msgstr[1] "zapísaný %d bajt"
msgstr[2] "zapísané %d bajty"
#: src/daemon/gnuserv.c:460
#: ../src/daemon/gnuserv.c:458
msgid "Enable debugging"
msgstr "Povoliť ladenie"
#: src/daemon/gnuserv.c:460
msgid "DEBUG"
msgstr "LADENIE"
#: src/daemon/gnuserv.c:462
#: ../src/daemon/gnuserv.c:460
msgid "Enable verbose output"
msgstr "Povoliť detailný výpis"
#: src/daemon/gnuserv.c:462
msgid "VERBOSE"
msgstr "DETAILNE"
#: src/daemon/gnuserv.c:464
#: ../src/daemon/gnuserv.c:462
msgid "Don't fork into background"
msgstr "Nerozvetvuj sa do pozadia"
#: src/daemon/gnuserv.c:464
msgid "NO-DAEMON"
msgstr "NO-DAEMON"
#: src/daemon/gnuserv.c:466
#: ../src/daemon/gnuserv.c:464
msgid "Invoked from inetd"
msgstr "Vyvolaný cez 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"
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr ""
"Chyba vo voľbe %s: %s.\n"
"Výpis všetkých dostupných volieb príkazového riadku získate spustením '%s --"
"help'.\n"
"Spustite '%s --help', aby ste videli úplný zoznam dostupných volieb "
"príkazového riadku.\n"
#: sysdeps/osf1/siglist.c:28 sysdeps/sun4/siglist.c:28
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
msgid "Hangup"
msgstr "Zavesenie"
#: sysdeps/osf1/siglist.c:29 sysdeps/sun4/siglist.c:29
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
msgid "Interrupt"
msgstr "Prerušenie"
#: sysdeps/osf1/siglist.c:30 sysdeps/sun4/siglist.c:30
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
msgid "Quit"
msgstr "Ukončiť"
#: sysdeps/osf1/siglist.c:31 sysdeps/sun4/siglist.c:31
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
msgid "Illegal instruction"
msgstr "Neplatná inštrukcia"
#: sysdeps/osf1/siglist.c:32 sysdeps/sun4/siglist.c:32
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
msgid "Trace trap"
msgstr "Ladiaci bod"
#: sysdeps/osf1/siglist.c:33 sysdeps/sun4/siglist.c:33
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
msgid "Abort"
msgstr "Prerušiť"
#: sysdeps/osf1/siglist.c:34 sysdeps/sun4/siglist.c:34
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
msgid "EMT error"
msgstr "Chyba EMT"
#: sysdeps/osf1/siglist.c:35 sysdeps/sun4/siglist.c:35
#: ../sysdeps/osf1/siglist.c:34 ../sysdeps/sun4/siglist.c:34
msgid "Floating-point exception"
msgstr "Výnimka pri práci s pohyblivou rádovou čiarkou"
#: sysdeps/osf1/siglist.c:36 sysdeps/sun4/siglist.c:36
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
msgid "Kill"
msgstr "Zabiť"
#: sysdeps/osf1/siglist.c:37 sysdeps/sun4/siglist.c:37
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
msgid "Bus error"
msgstr "Chyba na spoji"
#: sysdeps/osf1/siglist.c:38 sysdeps/sun4/siglist.c:38
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
msgid "Segmentation violation"
msgstr "Chyba segmentácie"
#: sysdeps/osf1/siglist.c:39 sysdeps/sun4/siglist.c:39
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
msgid "Bad argument to system call"
msgstr "Nesprávny argument v systémvom volaní"
#: sysdeps/osf1/siglist.c:40 sysdeps/sun4/siglist.c:40
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
msgid "Broken pipe"
msgstr "Prerušená rúra"
#: sysdeps/osf1/siglist.c:41 sysdeps/sun4/siglist.c:41
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
msgid "Alarm clock"
msgstr "Budík"
#: sysdeps/osf1/siglist.c:42 sysdeps/sun4/siglist.c:42
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
msgid "Termination"
msgstr "Ukončenie"
#: sysdeps/osf1/siglist.c:43 sysdeps/sun4/siglist.c:43
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
msgid "Urgent condition on socket"
msgstr "Naliehavá situácia na zásuvke"
#: sysdeps/osf1/siglist.c:44 sysdeps/sun4/siglist.c:44
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
msgid "Stop"
msgstr "Zastaviť"
#: sysdeps/osf1/siglist.c:45 sysdeps/sun4/siglist.c:45
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
msgid "Keyboard stop"
msgstr "Prerušenie klávesnice"
#: sysdeps/osf1/siglist.c:46 sysdeps/sun4/siglist.c:46
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
msgid "Continue"
msgstr "Pokračovanie"
#: sysdeps/osf1/siglist.c:47 sysdeps/sun4/siglist.c:47
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
msgid "Child status has changed"
msgstr "Stav potomka bol zmenený"
#: sysdeps/osf1/siglist.c:48 sysdeps/sun4/siglist.c:48
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
msgid "Background read from tty"
msgstr "Čítanie z tty na pozadí"
#: sysdeps/osf1/siglist.c:49 sysdeps/sun4/siglist.c:49
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
msgid "Background write to tty"
msgstr "Zápis do tty na pozadí"
#: sysdeps/osf1/siglist.c:50 sysdeps/sun4/siglist.c:50
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
msgid "I/O now possible"
msgstr "V/V je možné"
#: sysdeps/osf1/siglist.c:51 sysdeps/sun4/siglist.c:51
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
msgid "CPU limit exceeded"
msgstr "Prekročený limit procesora"
#: sysdeps/osf1/siglist.c:52 sysdeps/sun4/siglist.c:52
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
msgid "File size limit exceeded"
msgstr "Prekročený limit veľkosti súboru"
#: sysdeps/osf1/siglist.c:53 sysdeps/sun4/siglist.c:53
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
msgid "Virtual alarm clock"
msgstr "Virtuálny budík"
#: sysdeps/osf1/siglist.c:54 sysdeps/sun4/siglist.c:54
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
msgid "Profiling alarm clock"
msgstr "Nastavenie budíka"
#: sysdeps/osf1/siglist.c:55 sysdeps/sun4/siglist.c:55
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
msgid "Window size change"
msgstr "Zmena veľkosti okna"
#: sysdeps/osf1/siglist.c:56 sysdeps/sun4/siglist.c:56
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
msgid "Information request"
msgstr "Požiadavka na informáciu"
#: sysdeps/osf1/siglist.c:57 sysdeps/sun4/siglist.c:57
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
msgid "User defined signal 1"
msgstr "Používateľom definovaný signál 1"
#: sysdeps/osf1/siglist.c:58 sysdeps/sun4/siglist.c:58
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
msgid "User defined signal 2"
msgstr "Používateľom definovaný signál 2"

View File

@@ -1,30 +1,29 @@
# 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: 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"
"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"
"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 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
"X-Poedit-Language: Slovenian\n"
#: ../lib/read.c:51
#, c-format
msgid "read %d byte"
msgid_plural "read %d bytes"
msgstr[0] "prebran %d bajt"
msgstr[1] "prebrana %d bajta"
msgstr[2] "prebrani %d bajti"
msgstr[3] "prebranih %d bajtov"
msgstr[0] "prebranih %d bajtov"
msgstr[1] "prebran %d bajt"
msgstr[2] "prebrana %d bajta"
msgstr[3] "prebrani %d bajti"
#: ../lib/read_data.c:51
msgid "read data size"
@@ -34,19 +33,19 @@ msgstr "prebrana velikost podatkov"
#, c-format
msgid "read %lu byte of data"
msgid_plural "read %lu bytes of data"
msgstr[0] "prebran %lu bajt podatkov"
msgstr[1] "prebrana %lu bajta podatkov"
msgstr[2] "prebrani %lu bajti podatkov"
msgstr[3] "prebranih %lu bajtov podatkov"
msgstr[0] "prebranih %lu bajtov podatkov"
msgstr[1] "prebran %lu bajt podatkov"
msgstr[2] "prebrana %lu bajta podatkov"
msgstr[3] "prebrani %lu bajti podatkov"
#: ../lib/write.c:51
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
msgstr[0] "zapisan %d bajt"
msgstr[1] "zapisana %d bajta"
msgstr[2] "zapisani %d bajti"
msgstr[3] "zapisanih %d bajtov"
msgstr[0] "zapisanih %d bajtov"
msgstr[1] "zapisan %d bajt"
msgstr[2] "zapisana %d bajta"
msgstr[3] "zapisani %d bajti"
#: ../src/daemon/gnuserv.c:458
msgid "Enable debugging"
@@ -54,7 +53,7 @@ msgstr "Vključi razhroščevanje"
#: ../src/daemon/gnuserv.c:460
msgid "Enable verbose output"
msgstr "Vključi zgovoren izhod"
msgstr "Vključi podroben izpis"
#: ../src/daemon/gnuserv.c:462
msgid "Don't fork into background"
@@ -67,7 +66,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 "Zaženite '%s --help', če želite videti popoln seznam možnosti ukazne vrstice.\n"
msgstr "Z zastavico '%s --help' se izpiše popoln seznam možnosti ukaza.\n"
#: ../sysdeps/osf1/siglist.c:27
#: ../sysdeps/sun4/siglist.c:27
@@ -87,7 +86,7 @@ msgstr "Izhod"
#: ../sysdeps/osf1/siglist.c:30
#: ../sysdeps/sun4/siglist.c:30
msgid "Illegal instruction"
msgstr "Neveljavn ukaz"
msgstr "Neveljaven ukaz"
#: ../sysdeps/osf1/siglist.c:31
#: ../sysdeps/sun4/siglist.c:31
@@ -122,12 +121,12 @@ msgstr "Napaka vodila"
#: ../sysdeps/osf1/siglist.c:37
#: ../sysdeps/sun4/siglist.c:37
msgid "Segmentation violation"
msgstr "Segmentacijska kršitev"
msgstr "Segmentacijska napaka"
#: ../sysdeps/osf1/siglist.c:38
#: ../sysdeps/sun4/siglist.c:38
msgid "Bad argument to system call"
msgstr "Slab argument sistemskemu klicu"
msgstr "Nepravilen argument za sistemski klic"
#: ../sysdeps/osf1/siglist.c:39
#: ../sysdeps/sun4/siglist.c:39
@@ -157,7 +156,7 @@ msgstr "Ustavi"
#: ../sysdeps/osf1/siglist.c:44
#: ../sysdeps/sun4/siglist.c:44
msgid "Keyboard stop"
msgstr "Ustavitev s tipkovnice"
msgstr "Zaustavitev tipkovnice"
#: ../sysdeps/osf1/siglist.c:45
#: ../sysdeps/sun4/siglist.c:45
@@ -167,7 +166,7 @@ msgstr "Nadaljuj"
#: ../sysdeps/osf1/siglist.c:46
#: ../sysdeps/sun4/siglist.c:46
msgid "Child status has changed"
msgstr "Stanje otroka se je spremenilo"
msgstr "Stanje podrejenega procesa se je spremenilo"
#: ../sysdeps/osf1/siglist.c:47
#: ../sysdeps/sun4/siglist.c:47
@@ -182,7 +181,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 možen"
msgstr "V/I sedaj mogoč"
#: ../sysdeps/osf1/siglist.c:50
#: ../sysdeps/sun4/siglist.c:50
@@ -217,12 +216,12 @@ msgstr "Zahteva po podatkih"
#: ../sysdeps/osf1/siglist.c:56
#: ../sysdeps/sun4/siglist.c:56
msgid "User defined signal 1"
msgstr "Uporabniško definiran signal 1"
msgstr "Uporabniško določen signal 1"
#: ../sysdeps/osf1/siglist.c:57
#: ../sysdeps/sun4/siglist.c:57
msgid "User defined signal 2"
msgstr "Uporabniško definiran signal 2"
msgstr "Uporabniško določen signal 2"
#~ msgid "DEBUG"
#~ msgstr "RAZHROŠČUJ"

View File

@@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: libgtop 2.9.92\n"
"Project-Id-Version: libgtop 2.2.5\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-06-26 23:04+0800\n"
"PO-Revision-Date: 2006-06-26 23:06+0800\n"
"POT-Creation-Date: 2008-02-14 20:10+0800\n"
"PO-Revision-Date: 2008-02-14 20:12+0800\n"
"Last-Translator: Abel Cheung <abel@oaka.org>\n"
"Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
"MIME-Version: 1.0\n"
@@ -15,189 +15,181 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../lib/read.c:65
#: ../lib/read.c:51
#, c-format
msgid "read %d byte"
msgid_plural "read %d bytes"
msgstr[0] "讀入 %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 位元組的資料"
#: ../lib/write.c:53
#: ../lib/write.c:51
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
msgstr[0] "寫入 %d 位元組"
#: ../src/daemon/gnuserv.c:460
#: ../src/daemon/gnuserv.c:458
msgid "Enable debugging"
msgstr "啟用偵錯功能"
#: ../src/daemon/gnuserv.c:460
msgid "DEBUG"
msgstr "偵錯"
#: ../src/daemon/gnuserv.c:462
msgid "Enable verbose output"
msgstr "顯示詳細的輸出訊息"
#: ../src/daemon/gnuserv.c:462
msgid "VERBOSE"
msgstr "詳細訊息"
#: ../src/daemon/gnuserv.c:464
msgid "Don't fork into background"
msgstr "不要放置於背景執行"
#: ../src/daemon/gnuserv.c:464
msgid "NO-DAEMON"
msgstr "NO-DAEMON"
#: ../src/daemon/gnuserv.c:466
msgid "Invoked from inetd"
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 --help查看完整的指令列選項清單。\n"
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr "請執行‘%s --help查看完整的指令列選項清單。\n"
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
msgid "Hangup"
msgstr "掛斷 (Hangup)"
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
msgid "Interrupt"
msgstr "中斷 (Interrupt)"
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
msgid "Quit"
msgstr "退出 (Quit)"
#: ../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 "TRAP 硬件錯誤"
#: ../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 硬件錯誤"
#: ../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 "強行中止 (Kill)"
#: ../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 "記憶體區段錯誤"
#: ../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 "系統時鐘訊號"
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
msgid "Termination"
msgstr "強行中止 (Term)"
#: ../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 "socket 緊急情況"
#: ../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 "鍵盤停止"
#: ../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 "背景進程從 tty 讀入資料"
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
msgid "Background write to tty"
msgstr "背景進程向 tty 輸出資料"
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
msgid "I/O now possible"
msgstr "可重新進行輸入/輸出"
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
msgid "CPU limit exceeded"
msgstr "超過 CPU 限制"
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
msgid "File size limit exceeded"
msgstr "超過檔案大小限制"
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
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 "用戶自定訊號 1"
#: ../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 "用戶自定訊號 2"
#~ msgid "DEBUG"
#~ msgstr "偵錯"
#~ msgid "VERBOSE"
#~ msgstr "詳細訊息"
#~ msgid "NO-DAEMON"
#~ msgstr "NO-DAEMON"
#~ msgid "INETD"
#~ msgstr "INETD"

View File

@@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: libgtop 2.9.92\n"
"Project-Id-Version: libgtop 2.2.5\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-06-26 23:04+0800\n"
"PO-Revision-Date: 2006-06-26 23:04+0800\n"
"POT-Creation-Date: 2008-02-14 20:10+0800\n"
"PO-Revision-Date: 2008-02-14 23:04+0800\n"
"Last-Translator: Abel Cheung <abel@oaka.org>\n"
"Language-Team: Chinese (Taiwan) <community@linuxhall.org>\n"
"MIME-Version: 1.0\n"
@@ -15,189 +15,182 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../lib/read.c:65
#: ../lib/read.c:51
#, c-format
msgid "read %d byte"
msgid_plural "read %d bytes"
msgstr[0] "讀入 %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 位元組的資料"
#: ../lib/write.c:53
#: ../lib/write.c:51
#, c-format
msgid "wrote %d byte"
msgid_plural "wrote %d bytes"
msgstr[0] "寫入 %d 位元組"
#: ../src/daemon/gnuserv.c:460
#: ../src/daemon/gnuserv.c:458
msgid "Enable debugging"
msgstr "啟用偵錯功能"
#: ../src/daemon/gnuserv.c:460
msgid "DEBUG"
msgstr "偵錯"
#: ../src/daemon/gnuserv.c:462
msgid "Enable verbose output"
msgstr "顯示詳細的輸出訊息"
#: ../src/daemon/gnuserv.c:462
msgid "VERBOSE"
msgstr "詳細訊息"
#: ../src/daemon/gnuserv.c:464
msgid "Don't fork into background"
msgstr "不要放置於背景執行"
#: ../src/daemon/gnuserv.c:464
msgid "NO-DAEMON"
msgstr "NO-DAEMON"
#: ../src/daemon/gnuserv.c:466
msgid "Invoked from inetd"
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"
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr ""
"選項 %s 發生錯誤:%s。\n"
"請執行‘%s --help查看完整的指令列選項清單。\n"
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
msgid "Hangup"
msgstr "掛斷 (Hangup)"
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
msgid "Interrupt"
msgstr "中斷 (Interrupt)"
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
msgid "Quit"
msgstr "退出 (Quit)"
#: ../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 "TRAP 硬體錯誤"
#: ../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 硬體錯誤"
#: ../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 "強行中止 (Kill)"
#: ../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 "記憶體區段錯誤"
#: ../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 "系統時鐘訊號"
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
msgid "Termination"
msgstr "強行中止 (Term)"
#: ../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 "socket 緊急情況"
#: ../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 "鍵盤停止"
#: ../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 "背景進程從 tty 讀入資料"
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
msgid "Background write to tty"
msgstr "背景進程向 tty 輸出資料"
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
#: ../sysdeps/osf1/siglist.c:49 ../sysdeps/sun4/siglist.c:49
msgid "I/O now possible"
msgstr "可重新進行輸入/輸出"
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
msgid "CPU limit exceeded"
msgstr "超過 CPU 限制"
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
msgid "File size limit exceeded"
msgstr "超過檔案大小限制"
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
#: ../sysdeps/osf1/siglist.c:52 ../sysdeps/sun4/siglist.c:52
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 "用戶自定訊號 1"
#: ../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 "用戶自定訊號 2"
#~ msgid "DEBUG"
#~ msgstr "偵錯"
#~ msgid "VERBOSE"
#~ msgstr "詳細訊息"
#~ msgid "NO-DAEMON"
#~ msgstr "NO-DAEMON"
#~ msgid "INETD"
#~ msgstr "INETD"

View File

@@ -2,4 +2,4 @@
SUBDIRS = common @sysdeps_dir@
DIST_SUBDIRS = bsd common linux osf1 \
stub stub_suid sun4 freebsd solaris aix
stub stub_suid sun4 freebsd solaris aix darwin

View File

@@ -3,11 +3,18 @@ INCLUDES = @INCLUDES@
noinst_LTLIBRARIES = libgtop_common-2.0.la libgtop_suid_common-2.0.la
if !LIBGTOP_SYSDEPS_PRIVATE_MOUNTLIST
mountlist_src = mountlist.c
endif
if !LIBGTOP_SYSDEPS_PRIVATE_FSUSAGE
fsusage_src = fsusage.c
endif
libgtop_common_2_0_la_SOURCES = error.c gnuslib.c \
fsusage.c \
mountlist.c \
procargs.c \
default.c
default.c \
$(mountlist_src) $(fsusage_src)
# libgtop_common_2_0_la_LDFLAGS = $(LT_VERSION_INFO)
libgtop_common_2_0_la_LIBADD = $(LIBGTOP_EXTRA_LIBS)

View File

@@ -554,6 +554,7 @@ static gboolean ignore_mount_entry(const struct mount_entry *me)
"openpromfs",
"proc",
"procfs",
"rpc_pipefs",
"securityfs",
"supermount",
"sysfs",

View File

@@ -0,0 +1,16 @@
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

27
sysdeps/darwin/close.c Normal file
View File

@@ -0,0 +1,27 @@
/*
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)
{ }

View File

@@ -0,0 +1,26 @@
/*
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)
{ }

91
sysdeps/darwin/cpu.c Normal file
View File

@@ -0,0 +1,91 @@
/*
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;
}

View File

@@ -0,0 +1,35 @@
/*
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

View File

@@ -0,0 +1,50 @@
/*
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

View File

@@ -0,0 +1,44 @@
/*
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

65
sysdeps/darwin/loadavg.c Normal file
View File

@@ -0,0 +1,65 @@
/*
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];
}
}

70
sysdeps/darwin/mem.c Normal file
View File

@@ -0,0 +1,70 @@
/*
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;
}

View File

@@ -0,0 +1,47 @@
/*
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));
}

66
sysdeps/darwin/netlist.c Normal file
View File

@@ -0,0 +1,66 @@
/*
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);
}

165
sysdeps/darwin/netload.c Normal file
View File

@@ -0,0 +1,165 @@
/*
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);
}

55
sysdeps/darwin/nosuid.c Normal file
View File

@@ -0,0 +1,55 @@
/*
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)
{ }

98
sysdeps/darwin/open.c Normal file
View File

@@ -0,0 +1,98 @@
/*
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);
}

47
sysdeps/darwin/ppp.c Normal file
View File

@@ -0,0 +1,47 @@
/*
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));
}

130
sysdeps/darwin/procargs.c Normal file
View File

@@ -0,0 +1,130 @@
/*
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;
}

View File

@@ -0,0 +1,48 @@
/*
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));
}

104
sysdeps/darwin/proclist.c Normal file
View File

@@ -0,0 +1,104 @@
/*
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;
}

134
sysdeps/darwin/procmap.c Normal file
View File

@@ -0,0 +1,134 @@
/*
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;
}

245
sysdeps/darwin/procmem.c Normal file
View File

@@ -0,0 +1,245 @@
/*
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;
}

View File

@@ -0,0 +1,43 @@
/*
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;
}

View File

@@ -0,0 +1,48 @@
/*
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));
}

View File

@@ -0,0 +1,76 @@
/*
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;
}

View File

@@ -0,0 +1,94 @@
/*
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;
}

118
sysdeps/darwin/proctime.c Normal file
View File

@@ -0,0 +1,118 @@
/*
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;
}

83
sysdeps/darwin/procuid.c Normal file
View File

@@ -0,0 +1,83 @@
/*
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;
}

50
sysdeps/darwin/procwd.c Normal file
View File

@@ -0,0 +1,50 @@
/*
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;
}

View File

@@ -0,0 +1,47 @@
/*
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));
}

View File

@@ -0,0 +1,47 @@
/*
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));
}

60
sysdeps/darwin/siglist.c Normal file
View File

@@ -0,0 +1,60 @@
/*
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 }
};

110
sysdeps/darwin/swap.c Normal file
View File

@@ -0,0 +1,110 @@
/*
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;
}

90
sysdeps/darwin/sysinfo.c Normal file
View File

@@ -0,0 +1,90 @@
/*
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;
}

66
sysdeps/darwin/uptime.c Normal file
View File

@@ -0,0 +1,66 @@
/*
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;
}

View File

@@ -8,6 +8,7 @@ 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@

View File

@@ -1,6 +1,7 @@
#include <config.h>
#include <glibtop.h>
#include <glibtop/fsusage.h>
#include <glibtop/error.h>
#include "glibtop_private.h"
@@ -10,15 +11,11 @@
#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
@@ -127,10 +124,8 @@ static void linux_2_4_0(glibtop *server, glibtop_fsusage *buf, const char *path)
}
void
_glibtop_linux_get_fsusage_read_write(glibtop *server,
glibtop_fsusage *buf,
const char *path)
static void
get_fsusage_read_write(glibtop *server, glibtop_fsusage *buf, const char *path)
{
if(server->os_version_code >= LINUX_VERSION_CODE(2, 6, 0))
{
@@ -141,3 +136,39 @@ _glibtop_linux_get_fsusage_read_write(glibtop *server,
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);
}

166
sysdeps/linux/mountlist.c Normal file
View File

@@ -0,0 +1,166 @@
/* 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);
}

View File

@@ -30,7 +30,8 @@ static const unsigned long _glibtop_sysdeps_proc_kernel =
(1L << GLIBTOP_PROC_KERNEL_K_FLAGS) + (1L << GLIBTOP_PROC_KERNEL_MIN_FLT) +
(1L << GLIBTOP_PROC_KERNEL_MAJ_FLT) + (1L << GLIBTOP_PROC_KERNEL_CMIN_FLT) +
(1L << GLIBTOP_PROC_KERNEL_CMAJ_FLT) + (1L << GLIBTOP_PROC_KERNEL_KSTK_ESP) +
(1L << GLIBTOP_PROC_KERNEL_KSTK_EIP) + (1L << GLIBTOP_PROC_KERNEL_WCHAN);
(1L << GLIBTOP_PROC_KERNEL_KSTK_EIP) + (1L << GLIBTOP_PROC_KERNEL_NWCHAN) +
(1L << GLIBTOP_PROC_KERNEL_WCHAN);
/* Init function. */
@@ -72,5 +73,7 @@ glibtop_get_proc_kernel_s (glibtop *server, glibtop_proc_kernel *buf, pid_t pid)
buf->nwchan = strtoull (p, &p, 0);
proc_file_to_buffer(buf->wchan, sizeof buf->wchan, "/proc/%d/wchan", pid),
buf->flags = _glibtop_sysdeps_proc_kernel;
}

View File

@@ -71,7 +71,7 @@ glibtop_get_proclist_s (glibtop *server, glibtop_proclist *buf,
proc = opendir ("/proc");
if (!proc) return NULL;
if(stat("/proc", &statb)) return NULL;
if(fstat(dirfd(proc), &statb) != 0) return NULL;
pids = g_array_sized_new(FALSE, FALSE, sizeof(pid_t), statb.st_nlink);

View File

@@ -36,7 +36,7 @@
#define SMAPS_FILE "/proc/%u/smaps"
#define PROC_MAPS_FORMAT "%16llx-%16llx %4c %16llx %02hx:%02hx %llu%*[ ]%n"
#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"
static const unsigned long _glibtop_sysdeps_proc_map =

View File

@@ -79,6 +79,9 @@ 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));

View File

@@ -1,7 +1,7 @@
/* Copyright (C) 1998-99 Martin Baulig
This file is part of LibGTop 1.0.
/* Copyright (C) 2007 Henry Zhang
This file is part of LibGTop 2.20.
Contributed by Martin Baulig <martin@home-of-linux.org>, October 1998.
Contributed by Henry Zhang <hua.zhang@sun.com>, October 2007.
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,14 +24,163 @@
#include <glibtop/error.h>
#include <glibtop/netload.h>
static const unsigned long _glibtop_sysdeps_netload = 0;
#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);
/* Init function. */
void
_glibtop_init_netload_s (glibtop *server)
{
server->sysdeps.netload = _glibtop_sysdeps_netload;
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 */
}
/* Provides network statistics. */
@@ -40,5 +189,69 @@ 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);
}