Compare commits
1 Commits
LIBGTOP_2_
...
linux_daem
Author | SHA1 | Date | |
---|---|---|---|
|
6c95195787 |
8
NEWS
8
NEWS
@@ -1,11 +1,3 @@
|
||||
9 July 2007: Overview of changes in 2.19.5
|
||||
==========================================
|
||||
* linux:
|
||||
- fixed proc_map for >= 2.6.22
|
||||
* freebsd:
|
||||
- implemented procwd and procopenfiles
|
||||
Joe Marcus Clarke
|
||||
|
||||
18 June 2007: Overview of changes in 2.19.4
|
||||
===========================================
|
||||
* solaris:
|
||||
|
@@ -4,7 +4,7 @@ dnl
|
||||
|
||||
m4_define([libgtop_major_version], [2])
|
||||
m4_define([libgtop_minor_version], [19])
|
||||
m4_define([libgtop_micro_version], [5])
|
||||
m4_define([libgtop_micro_version], [4])
|
||||
m4_define([libgtop_version], [libgtop_major_version.libgtop_minor_version.libgtop_micro_version])
|
||||
|
||||
dnl increment if the interface has additions, changes, removals.
|
||||
|
@@ -63,9 +63,9 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
libgtop_sysdeps_dir=linux
|
||||
libgtop_use_machine_h=no
|
||||
libgtop_use_machine_h=yes
|
||||
libgtop_have_sysinfo=yes
|
||||
libgtop_need_server=no
|
||||
libgtop_need_server=yes
|
||||
;;
|
||||
netbsd*|openbsd*|bsdi*)
|
||||
libgtop_sysdeps_dir=bsd
|
||||
|
12
po/ChangeLog
12
po/ChangeLog
@@ -1,15 +1,3 @@
|
||||
2007-07-09 I. Felix <ifelix@svn.gnome.org>
|
||||
|
||||
* ta.po: Tamil Translation updated by Tirumurthi Vasudevan
|
||||
|
||||
2007-07-07 Takeshi AIHANA <takeshi.aihana@gmail.com>
|
||||
|
||||
* ja.po: Updated Japanese translation.
|
||||
|
||||
2007-06-27 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2007-06-23 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
164
po/ja.po
164
po/ja.po
@@ -1,192 +1,208 @@
|
||||
# libgtop ja.po.
|
||||
# Copyright (C) 1998,2000,2002-2007 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1998,2000,2002-2005 Free Software Foundation, Inc.
|
||||
# Eiichiro ITANI <emu@ceres.dti.ne.jp>, 1998
|
||||
# Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>, 2000, 2002.
|
||||
# Yukihiro Nakai <nakai@gnome.gr.jp>, 2000.
|
||||
# KAMAGASAKO Masatoshi <emerald@gnome.gr.jp>, 2003.
|
||||
# Takeshi AIHANA <takeshi.aihana@gmail.com>, 2004-2007.
|
||||
# Takeshi AIHANA <aihana@gnome.gr.jp>, 2004,2005.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: libgtop trunk\n"
|
||||
"Project-Id-Version: libgtop HEAD\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2007-07-08 01:03+0900\n"
|
||||
"PO-Revision-Date: 2007-07-08 01:03+0900\n"
|
||||
"Last-Translator: Takeshi AIHANA <takeshi.aihana@gmail.com>\n"
|
||||
"POT-Creation-Date: 2006-10-30 01:37+0900\n"
|
||||
"PO-Revision-Date: 2006-10-30 01:38+0900\n"
|
||||
"Last-Translator: Satoru SATOH <ss@gnome.gr.jp>\n"
|
||||
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\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"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: ../lib/read.c:51
|
||||
#: ../lib/read.c:65
|
||||
#, c-format
|
||||
msgid "read %d byte"
|
||||
msgid_plural "read %d bytes"
|
||||
msgstr[0] " %dバイト読み込み"
|
||||
msgstr[1] " %dバイト読み込み"
|
||||
msgstr[0] "%d バイト読み込み"
|
||||
|
||||
#: ../lib/read_data.c:51
|
||||
#: ../lib/read_data.c:53
|
||||
msgid "read data size"
|
||||
msgstr "データの読み込みサイズ"
|
||||
|
||||
#: ../lib/read_data.c:70
|
||||
#: ../lib/read_data.c:72
|
||||
#, c-format
|
||||
msgid "read %lu byte of data"
|
||||
msgid_plural "read %lu bytes of data"
|
||||
msgstr[0] " %luバイトデータの読み込み"
|
||||
msgstr[1] " %luバイトデータの読み込み"
|
||||
msgstr[0] "%lu バイトデータの読み込み"
|
||||
|
||||
#: ../lib/write.c:51
|
||||
#: ../lib/write.c:53
|
||||
#, c-format
|
||||
msgid "wrote %d byte"
|
||||
msgid_plural "wrote %d bytes"
|
||||
msgstr[0] " %dバイトの書き込み"
|
||||
msgstr[1] " %dバイトの書き込み"
|
||||
msgstr[0] "%d バイトの書き込み"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:458
|
||||
#: ../src/daemon/gnuserv.c:460
|
||||
msgid "Enable debugging"
|
||||
msgstr "デバッグを有効にする"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:460
|
||||
msgid "DEBUG"
|
||||
msgstr "DEBUG"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:462
|
||||
msgid "Enable verbose output"
|
||||
msgstr "詳細な出力にする"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:462
|
||||
msgid "VERBOSE"
|
||||
msgstr "VERBOSE"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:464
|
||||
msgid "Don't fork into background"
|
||||
msgstr "子プロセスをバックグラウンドに回さない"
|
||||
|
||||
#: ../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:498
|
||||
#, c-format
|
||||
msgid "Run '%s --help' to see a full list of available command line options.\n"
|
||||
msgstr ""
|
||||
"利用可能なコマンド・ラインのオプション一覧を表示する場合は '%s --help' を実行"
|
||||
"して下さい\n"
|
||||
#: ../src/daemon/gnuserv.c:466
|
||||
msgid "INETD"
|
||||
msgstr "INETD"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:27 ../sysdeps/sun4/siglist.c:27
|
||||
#: ../src/daemon/gnuserv.c:500
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error on option %s: %s.\n"
|
||||
"Run '%s --help' to see a full list of available command line options.\n"
|
||||
msgstr ""
|
||||
"オプション%sでエラー: %s\n"
|
||||
"コマンドラインオプションに使えるもの一覧を見るには'%s --help'を実行してくださ"
|
||||
"い。\n"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
|
||||
msgid "Hangup"
|
||||
msgstr "ハングアップ"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:28 ../sysdeps/sun4/siglist.c:28
|
||||
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
|
||||
msgid "Interrupt"
|
||||
msgstr "インタラプト"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:29 ../sysdeps/sun4/siglist.c:29
|
||||
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
|
||||
msgid "Quit"
|
||||
msgstr "終了"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:30 ../sysdeps/sun4/siglist.c:30
|
||||
#: ../sysdeps/osf1/siglist.c:32 ../sysdeps/sun4/siglist.c:32
|
||||
msgid "Illegal instruction"
|
||||
msgstr "不正なインストラクション"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:31 ../sysdeps/sun4/siglist.c:31
|
||||
#: ../sysdeps/osf1/siglist.c:33 ../sysdeps/sun4/siglist.c:33
|
||||
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 "Abort"
|
||||
msgstr "終了"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
|
||||
msgid "EMT error"
|
||||
msgstr "EMTエラー"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
|
||||
msgid "Floating-point exception"
|
||||
msgstr "浮動小数点例外"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:35 ../sysdeps/sun4/siglist.c:35
|
||||
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
|
||||
msgid "Kill"
|
||||
msgstr "強制終了"
|
||||
msgstr "kill"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:36 ../sysdeps/sun4/siglist.c:36
|
||||
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
|
||||
msgid "Bus error"
|
||||
msgstr "バスエラー"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:37 ../sysdeps/sun4/siglist.c:37
|
||||
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
|
||||
msgid "Segmentation violation"
|
||||
msgstr "セグメンテーションバイオレーション"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:38 ../sysdeps/sun4/siglist.c:38
|
||||
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
|
||||
msgid "Bad argument to system call"
|
||||
msgstr "システムコールの引数が誤っています"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:39 ../sysdeps/sun4/siglist.c:39
|
||||
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
|
||||
msgid "Broken pipe"
|
||||
msgstr "パイプ破壊"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:40 ../sysdeps/sun4/siglist.c:40
|
||||
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
|
||||
msgid "Alarm clock"
|
||||
msgstr "アラームクロック"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:41 ../sysdeps/sun4/siglist.c:41
|
||||
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
|
||||
msgid "Termination"
|
||||
msgstr "ターミネーション"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:42 ../sysdeps/sun4/siglist.c:42
|
||||
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
|
||||
msgid "Urgent condition on socket"
|
||||
msgstr "ソケットの緊急状態"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:43 ../sysdeps/sun4/siglist.c:43
|
||||
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
|
||||
msgid "Stop"
|
||||
msgstr "ストップ"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:44 ../sysdeps/sun4/siglist.c:44
|
||||
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
|
||||
msgid "Keyboard stop"
|
||||
msgstr "キーボード停止"
|
||||
msgstr "キーボードストップ"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:45 ../sysdeps/sun4/siglist.c:45
|
||||
#: ../sysdeps/osf1/siglist.c:47 ../sysdeps/sun4/siglist.c:47
|
||||
msgid "Continue"
|
||||
msgstr "コンティニュー"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:46 ../sysdeps/sun4/siglist.c:46
|
||||
#: ../sysdeps/osf1/siglist.c:48 ../sysdeps/sun4/siglist.c:48
|
||||
msgid "Child status has changed"
|
||||
msgstr "子プロセス状態が変更された"
|
||||
|
||||
#: ../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 "Background read from tty"
|
||||
msgstr "ttyからのバックグラウンド読み込み"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:50 ../sysdeps/sun4/siglist.c:50
|
||||
msgid "Background write to tty"
|
||||
msgstr "ttyへのバックグラウンド書き込み"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:51 ../sysdeps/sun4/siglist.c:51
|
||||
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 "CPU limit exceeded"
|
||||
msgstr "CPU限界を越えた"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
|
||||
msgid "File size limit exceeded"
|
||||
msgstr "ファイルサイズ限界を越えた"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
|
||||
msgid "Virtual alarm clock"
|
||||
msgstr "仮想アラームクロック"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:53 ../sysdeps/sun4/siglist.c:53
|
||||
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
|
||||
msgid "Profiling alarm clock"
|
||||
msgstr "アラームクロックのプロファイル"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:54 ../sysdeps/sun4/siglist.c:54
|
||||
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
|
||||
msgid "Window size change"
|
||||
msgstr "ウィンドウサイズの変更"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:55 ../sysdeps/sun4/siglist.c:55
|
||||
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
|
||||
msgid "Information request"
|
||||
msgstr "情報リクエスト"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:56 ../sysdeps/sun4/siglist.c:56
|
||||
#: ../sysdeps/osf1/siglist.c:58 ../sysdeps/sun4/siglist.c:58
|
||||
msgid "User defined signal 1"
|
||||
msgstr "ユーザ定義シグナル1"
|
||||
msgstr "ユーザ定義シグナル 1"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:57 ../sysdeps/sun4/siglist.c:57
|
||||
#: ../sysdeps/osf1/siglist.c:59 ../sysdeps/sun4/siglist.c:59
|
||||
msgid "User defined signal 2"
|
||||
msgstr "ユーザ定義シグナル2"
|
||||
msgstr "ユーザ定義シグナル 2"
|
||||
|
154
po/ta.po
154
po/ta.po
@@ -9,223 +9,205 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ta\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2007-05-14 03:41+0100\n"
|
||||
"PO-Revision-Date: 2007-07-08 17:29+0530\n"
|
||||
"Last-Translator: Dr.T.Vasudevan <agnihot3@gmail.com>\n"
|
||||
"POT-Creation-Date: 2005-09-25 18:15+0200\n"
|
||||
"PO-Revision-Date: 2007-04-27 11:03+0530\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: <en@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"0500\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
"Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"\n"
|
||||
|
||||
#: ../lib/read.c:51
|
||||
#: lib/read.c:65
|
||||
#, c-format
|
||||
msgid "read %d byte"
|
||||
msgid_plural "read %d bytes"
|
||||
msgstr[0] "%d பைட்கள் படி"
|
||||
msgstr[1] "%d பைட்கள் படி"
|
||||
|
||||
#: ../lib/read_data.c:51
|
||||
#: lib/read_data.c:53
|
||||
msgid "read data size"
|
||||
msgstr "படித்த தகவல் அளவு"
|
||||
|
||||
#: ../lib/read_data.c:70
|
||||
#: lib/read_data.c:72
|
||||
#, c-format
|
||||
msgid "read %lu byte of data"
|
||||
msgid_plural "read %lu bytes of data"
|
||||
msgstr[0] "தரவின் %lu பைட்டை வாசிக்கவும்"
|
||||
msgstr[1] "தரவின் %lu பைட்டுக்களை வாசிக்கவும்"
|
||||
|
||||
#: ../lib/write.c:51
|
||||
#: lib/write.c:52
|
||||
#, c-format
|
||||
msgid "wrote %d byte"
|
||||
msgid_plural "wrote %d bytes"
|
||||
msgstr[0] "எழுதிய %d பைட்"
|
||||
msgstr[1] "எழுதிய %d பைட்டுகள்"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:458
|
||||
#: src/daemon/gnuserv.c:460
|
||||
msgid "Enable debugging"
|
||||
msgstr "பிழை திருத்தலை செயல்படுத்து"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:460
|
||||
#: src/daemon/gnuserv.c:460
|
||||
msgid "DEBUG"
|
||||
msgstr "DEBUG(டீபக்)"
|
||||
|
||||
#: src/daemon/gnuserv.c:462
|
||||
msgid "Enable verbose output"
|
||||
msgstr "வெர்போஸ் விளைவை செயல்படுத்து"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:462
|
||||
#: src/daemon/gnuserv.c:462
|
||||
msgid "VERBOSE"
|
||||
msgstr "VERBOSE(வெற்போஸ்)"
|
||||
|
||||
#: src/daemon/gnuserv.c:464
|
||||
msgid "Don't fork into background"
|
||||
msgstr "பின்னனியை பிளக்காதே"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:464
|
||||
#: 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:498
|
||||
#, c-format
|
||||
msgid "Run '%s --help' to see a full list of available command line options.\n"
|
||||
msgstr "Rus '%s--help' இயக்கி கட்டளைவரி தேர்வுகளை காணவும்.\n"
|
||||
#: src/daemon/gnuserv.c:466
|
||||
msgid "INETD"
|
||||
msgstr "INETD(இனிட்டி)"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:27
|
||||
#: ../sysdeps/sun4/siglist.c:27
|
||||
#: src/daemon/gnuserv.c:500
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error on option %s: %s.\n"
|
||||
"Run '%s --help' to see a full list of available command line options.\n"
|
||||
msgstr ""
|
||||
"தேர்வில் பிழை %s: %s.\n"
|
||||
"Rus '%s--help' இயக்கி கட்டளைவரி தேர்வுகளை பெற்றுக்கொள்ளவும் \n"
|
||||
|
||||
#: sysdeps/osf1/siglist.c:28 sysdeps/sun4/siglist.c:28
|
||||
msgid "Hangup"
|
||||
msgstr "தொங்கியது"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:28
|
||||
#: ../sysdeps/sun4/siglist.c:28
|
||||
#: sysdeps/osf1/siglist.c:29 sysdeps/sun4/siglist.c:29
|
||||
msgid "Interrupt"
|
||||
msgstr "தடை"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:29
|
||||
#: ../sysdeps/sun4/siglist.c:29
|
||||
#: sysdeps/osf1/siglist.c:30 sysdeps/sun4/siglist.c:30
|
||||
msgid "Quit"
|
||||
msgstr "வெளிச்செல்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:30
|
||||
#: ../sysdeps/sun4/siglist.c:30
|
||||
#: sysdeps/osf1/siglist.c:31 sysdeps/sun4/siglist.c:31
|
||||
msgid "Illegal instruction"
|
||||
msgstr "தவறான செய்தி"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:31
|
||||
#: ../sysdeps/sun4/siglist.c:31
|
||||
#: sysdeps/osf1/siglist.c:32 sysdeps/sun4/siglist.c:32
|
||||
msgid "Trace trap"
|
||||
msgstr "தடம் காண்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:32
|
||||
#: ../sysdeps/sun4/siglist.c:32
|
||||
#: sysdeps/osf1/siglist.c:33 sysdeps/sun4/siglist.c:33
|
||||
msgid "Abort"
|
||||
msgstr "தடைசெய்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:33
|
||||
#: ../sysdeps/sun4/siglist.c:33
|
||||
#: sysdeps/osf1/siglist.c:34 sysdeps/sun4/siglist.c:34
|
||||
msgid "EMT error"
|
||||
msgstr "EMT பிழை"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:34
|
||||
#: ../sysdeps/sun4/siglist.c:34
|
||||
#: sysdeps/osf1/siglist.c:35 sysdeps/sun4/siglist.c:35
|
||||
msgid "Floating-point exception"
|
||||
msgstr "பின்ன பிழை"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:35
|
||||
#: ../sysdeps/sun4/siglist.c:35
|
||||
#: sysdeps/osf1/siglist.c:36 sysdeps/sun4/siglist.c:36
|
||||
msgid "Kill"
|
||||
msgstr "கொலை செய்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:36
|
||||
#: ../sysdeps/sun4/siglist.c:36
|
||||
#: sysdeps/osf1/siglist.c:37 sysdeps/sun4/siglist.c:37
|
||||
msgid "Bus error"
|
||||
msgstr "பஸ் பிழை"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:37
|
||||
#: ../sysdeps/sun4/siglist.c:37
|
||||
#: sysdeps/osf1/siglist.c:38 sysdeps/sun4/siglist.c:38
|
||||
msgid "Segmentation violation"
|
||||
msgstr "செக்மன்டேஷன் மீறல்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:38
|
||||
#: ../sysdeps/sun4/siglist.c:38
|
||||
#: sysdeps/osf1/siglist.c:39 sysdeps/sun4/siglist.c:39
|
||||
msgid "Bad argument to system call"
|
||||
msgstr "கணினி அழைப்புக்கு மோசமான அளவுரு"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:39
|
||||
#: ../sysdeps/sun4/siglist.c:39
|
||||
#: sysdeps/osf1/siglist.c:40 sysdeps/sun4/siglist.c:40
|
||||
msgid "Broken pipe"
|
||||
msgstr "உடைந்த பாதை"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:40
|
||||
#: ../sysdeps/sun4/siglist.c:40
|
||||
#: sysdeps/osf1/siglist.c:41 sysdeps/sun4/siglist.c:41
|
||||
msgid "Alarm clock"
|
||||
msgstr "அல்லாரம் கடிகாரம்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:41
|
||||
#: ../sysdeps/sun4/siglist.c:41
|
||||
#: sysdeps/osf1/siglist.c:42 sysdeps/sun4/siglist.c:42
|
||||
msgid "Termination"
|
||||
msgstr "முடிவு"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:42
|
||||
#: ../sysdeps/sun4/siglist.c:42
|
||||
#: sysdeps/osf1/siglist.c:43 sysdeps/sun4/siglist.c:43
|
||||
msgid "Urgent condition on socket"
|
||||
msgstr "சாக்கெட்டின் அவசர நிலை"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:43
|
||||
#: ../sysdeps/sun4/siglist.c:43
|
||||
#: sysdeps/osf1/siglist.c:44 sysdeps/sun4/siglist.c:44
|
||||
msgid "Stop"
|
||||
msgstr "நிறுத்து"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:44
|
||||
#: ../sysdeps/sun4/siglist.c:44
|
||||
#: sysdeps/osf1/siglist.c:45 sysdeps/sun4/siglist.c:45
|
||||
msgid "Keyboard stop"
|
||||
msgstr "விசைப்பலகை நிறுத்தம்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:45
|
||||
#: ../sysdeps/sun4/siglist.c:45
|
||||
#: sysdeps/osf1/siglist.c:46 sysdeps/sun4/siglist.c:46
|
||||
msgid "Continue"
|
||||
msgstr "தொடரவும்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:46
|
||||
#: ../sysdeps/sun4/siglist.c:46
|
||||
#: sysdeps/osf1/siglist.c:47 sysdeps/sun4/siglist.c:47
|
||||
msgid "Child status has changed"
|
||||
msgstr "சேய்நிலை மாற்றப்பட்டது"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:47
|
||||
#: ../sysdeps/sun4/siglist.c:47
|
||||
#: sysdeps/osf1/siglist.c:48 sysdeps/sun4/siglist.c:48
|
||||
msgid "Background read from tty"
|
||||
msgstr "tty யின் பின்னியில் படி"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:48
|
||||
#: ../sysdeps/sun4/siglist.c:48
|
||||
#: sysdeps/osf1/siglist.c:49 sysdeps/sun4/siglist.c:49
|
||||
msgid "Background write to tty"
|
||||
msgstr "tty யின் பின்னியில் எழுது"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:49
|
||||
#: ../sysdeps/sun4/siglist.c:49
|
||||
#: sysdeps/osf1/siglist.c:50 sysdeps/sun4/siglist.c:50
|
||||
msgid "I/O now possible"
|
||||
msgstr "I/O இப்போது முடியும்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:50
|
||||
#: ../sysdeps/sun4/siglist.c:50
|
||||
#: sysdeps/osf1/siglist.c:51 sysdeps/sun4/siglist.c:51
|
||||
msgid "CPU limit exceeded"
|
||||
msgstr "CPU எல்லை கடந்தது"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:51
|
||||
#: ../sysdeps/sun4/siglist.c:51
|
||||
#: sysdeps/osf1/siglist.c:52 sysdeps/sun4/siglist.c:52
|
||||
msgid "File size limit exceeded"
|
||||
msgstr "முழு அளவு எல்லை கடந்தது"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:52
|
||||
#: ../sysdeps/sun4/siglist.c:52
|
||||
#: sysdeps/osf1/siglist.c:53 sysdeps/sun4/siglist.c:53
|
||||
msgid "Virtual alarm clock"
|
||||
msgstr "மெய்நிகர் எச்சரிக்கை கடிகாரம்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:53
|
||||
#: ../sysdeps/sun4/siglist.c:53
|
||||
#: sysdeps/osf1/siglist.c:54 sysdeps/sun4/siglist.c:54
|
||||
msgid "Profiling alarm clock"
|
||||
msgstr "எச்சரிக்கை கடிகாத்தின் விவரம்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:54
|
||||
#: ../sysdeps/sun4/siglist.c:54
|
||||
#: sysdeps/osf1/siglist.c:55 sysdeps/sun4/siglist.c:55
|
||||
msgid "Window size change"
|
||||
msgstr "சாளர அளவு மாற்றம்"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:55
|
||||
#: ../sysdeps/sun4/siglist.c:55
|
||||
#: sysdeps/osf1/siglist.c:56 sysdeps/sun4/siglist.c:56
|
||||
msgid "Information request"
|
||||
msgstr "தகவல் கோரிக்கை"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:56
|
||||
#: ../sysdeps/sun4/siglist.c:56
|
||||
#: sysdeps/osf1/siglist.c:57 sysdeps/sun4/siglist.c:57
|
||||
msgid "User defined signal 1"
|
||||
msgstr "பயனீட்டாளர் குறித்த சங்கேதம் 1"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:57
|
||||
#: ../sysdeps/sun4/siglist.c:57
|
||||
#: sysdeps/osf1/siglist.c:58 sysdeps/sun4/siglist.c:58
|
||||
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(இனிட்டி)"
|
||||
|
||||
|
191
po/vi.po
191
po/vi.po
@@ -1,228 +1,205 @@
|
||||
# Vietnamese translation for libgtop.
|
||||
# Copyright © 2007 Gnome i18n Project for Vietnamese.
|
||||
# Nguyễn Thái Ngọc Duy <pclouds@gmx.net>, 2002.
|
||||
# Clytie Siddall <clytie@riverland.net.au>, 2005-2007.
|
||||
# Copyright © 2005 Gnome i18n Project for Vietnamese.
|
||||
# pclouds <pclouds@gmx.net>, 2002.
|
||||
# Clytie Siddall <clytie@riverland.net.au>, 2005.
|
||||
#
|
||||
msgid ""
|
||||
""
|
||||
msgstr "Project-Id-Version: libgtop GNOME 2.20\n"
|
||||
msgstr ""
|
||||
"Project-Id-Version: libgtop GNOME 2.10\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2007-05-14 03:41+0100\n"
|
||||
"PO-Revision-Date: 2007-06-27 17:37+09300\n"
|
||||
"POT-Creation-Date: 2005-09-25 18:15+0200\n"
|
||||
"PO-Revision-Date: 2005-07-01 18:03+0930\n"
|
||||
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
|
||||
"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: LocFactoryEditor 1.6.4a5\n"
|
||||
"Plural-Forms: nplurals=1; plural=0\n"
|
||||
"X-Generator: LocFactoryEditor 1.2.2\n"
|
||||
|
||||
#: ../lib/read.c:51
|
||||
#: lib/read.c:65
|
||||
#, c-format
|
||||
msgid "read %d byte"
|
||||
msgid_plural "read %d bytes"
|
||||
msgstr[0] "đã đọc %d byte"
|
||||
|
||||
#: ../lib/read_data.c:51
|
||||
#: lib/read_data.c:53
|
||||
msgid "read data size"
|
||||
msgstr "đã đọc kích cỡ dữ liệu"
|
||||
msgstr "đã đọc kích thước dữ liệu"
|
||||
|
||||
#: ../lib/read_data.c:70
|
||||
#: lib/read_data.c:72
|
||||
#, c-format
|
||||
msgid "read %lu byte of data"
|
||||
msgid_plural "read %lu bytes of data"
|
||||
msgstr[0] "đã đọc %lu byte dữ liệu"
|
||||
|
||||
#: ../lib/write.c:51
|
||||
#: lib/write.c:52
|
||||
#, c-format
|
||||
msgid "wrote %d byte"
|
||||
msgid_plural "wrote %d bytes"
|
||||
msgstr[0] "đã ghi %d byte"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:458
|
||||
#: src/daemon/gnuserv.c:460
|
||||
msgid "Enable debugging"
|
||||
msgstr "Bật khả năng gỡ lỗi"
|
||||
msgstr "Bật gỡ lỗi"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:460
|
||||
#: src/daemon/gnuserv.c:460
|
||||
msgid "DEBUG"
|
||||
msgstr "GỠ LỖI"
|
||||
|
||||
#: src/daemon/gnuserv.c:462
|
||||
msgid "Enable verbose output"
|
||||
msgstr "Bật khả năng xuất chi tiết"
|
||||
msgstr "Bật xuất chi tiết"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:462
|
||||
#: src/daemon/gnuserv.c:462
|
||||
msgid "VERBOSE"
|
||||
msgstr "CHI TIẾT"
|
||||
|
||||
#: src/daemon/gnuserv.c:464
|
||||
msgid "Don't fork into background"
|
||||
msgstr "Không tạo tiến trình con vào nền"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:464
|
||||
#: src/daemon/gnuserv.c:464
|
||||
msgid "NO-DAEMON"
|
||||
msgstr "KHÔNG TRÌNH NỀN"
|
||||
|
||||
#: src/daemon/gnuserv.c:466
|
||||
msgid "Invoked from inetd"
|
||||
msgstr "Được gọi từ inetd"
|
||||
|
||||
#: ../src/daemon/gnuserv.c:498
|
||||
#, c-format
|
||||
msgid "Run '%s --help' to see a full list of available command line options.\n"
|
||||
msgstr "Chạy lệnh « %s --help » để xem danh sách các tùy chọn dòng lệnh sẵn sàng.\n"
|
||||
#: src/daemon/gnuserv.c:466
|
||||
msgid "INETD"
|
||||
msgstr "INETD"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:27
|
||||
#: ../sysdeps/sun4/siglist.c:27
|
||||
#: src/daemon/gnuserv.c:500
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error on option %s: %s.\n"
|
||||
"Run '%s --help' to see a full list of available command line options.\n"
|
||||
msgstr ""
|
||||
"Lỗi tùy chọn %s: %s.\n"
|
||||
"Chạy «%s --help» để xem danh sách toàn bộ các tùy chọn có thể.\n"
|
||||
|
||||
#: sysdeps/osf1/siglist.c:28 sysdeps/sun4/siglist.c:28
|
||||
msgid "Hangup"
|
||||
msgstr "Treo máy"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:28
|
||||
#: ../sysdeps/sun4/siglist.c:28
|
||||
#: sysdeps/osf1/siglist.c:29 sysdeps/sun4/siglist.c:29
|
||||
msgid "Interrupt"
|
||||
msgstr "Ngắt"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:29
|
||||
#: ../sysdeps/sun4/siglist.c:29
|
||||
#: sysdeps/osf1/siglist.c:30 sysdeps/sun4/siglist.c:30
|
||||
msgid "Quit"
|
||||
msgstr "Thoát"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:30
|
||||
#: ../sysdeps/sun4/siglist.c:30
|
||||
#: sysdeps/osf1/siglist.c:31 sysdeps/sun4/siglist.c:31
|
||||
msgid "Illegal instruction"
|
||||
msgstr "Lệnh bị cấm"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:31
|
||||
#: ../sysdeps/sun4/siglist.c:31
|
||||
#: sysdeps/osf1/siglist.c:32 sysdeps/sun4/siglist.c:32
|
||||
msgid "Trace trap"
|
||||
msgstr "Bẫy theo vết"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:32
|
||||
#: ../sysdeps/sun4/siglist.c:32
|
||||
#: sysdeps/osf1/siglist.c:33 sysdeps/sun4/siglist.c:33
|
||||
msgid "Abort"
|
||||
msgstr "Hủy"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:33
|
||||
#: ../sysdeps/sun4/siglist.c:33
|
||||
#: sysdeps/osf1/siglist.c:34 sysdeps/sun4/siglist.c:34
|
||||
msgid "EMT error"
|
||||
msgstr "Lỗi EMT"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:34
|
||||
#: ../sysdeps/sun4/siglist.c:34
|
||||
#: sysdeps/osf1/siglist.c:35 sysdeps/sun4/siglist.c:35
|
||||
msgid "Floating-point exception"
|
||||
msgstr "Ngoại lệ điểm phù động"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:35
|
||||
#: ../sysdeps/sun4/siglist.c:35
|
||||
#: sysdeps/osf1/siglist.c:36 sysdeps/sun4/siglist.c:36
|
||||
msgid "Kill"
|
||||
msgstr "Buộc chấm dứt"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:36
|
||||
#: ../sysdeps/sun4/siglist.c:36
|
||||
#: sysdeps/osf1/siglist.c:37 sysdeps/sun4/siglist.c:37
|
||||
msgid "Bus error"
|
||||
msgstr "Lỗi mạch"
|
||||
msgstr "Lỗi Bus"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:37
|
||||
#: ../sysdeps/sun4/siglist.c:37
|
||||
#: sysdeps/osf1/siglist.c:38 sysdeps/sun4/siglist.c:38
|
||||
msgid "Segmentation violation"
|
||||
msgstr "Vi phạm phân đoạn"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:38
|
||||
#: ../sysdeps/sun4/siglist.c:38
|
||||
#: sysdeps/osf1/siglist.c:39 sysdeps/sun4/siglist.c:39
|
||||
msgid "Bad argument to system call"
|
||||
msgstr "Đối số sai với cuộc gọi hệ thống"
|
||||
msgstr "Đối số sai với lời gọi hệ thống"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:39
|
||||
#: ../sysdeps/sun4/siglist.c:39
|
||||
#: sysdeps/osf1/siglist.c:40 sysdeps/sun4/siglist.c:40
|
||||
msgid "Broken pipe"
|
||||
msgstr "Ống dẫn bị ngắt"
|
||||
msgstr "Ống dẫn bị gãy"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:40
|
||||
#: ../sysdeps/sun4/siglist.c:40
|
||||
#: sysdeps/osf1/siglist.c:41 sysdeps/sun4/siglist.c:41
|
||||
msgid "Alarm clock"
|
||||
msgstr "Đồng hồ báo động"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:41
|
||||
#: ../sysdeps/sun4/siglist.c:41
|
||||
#: sysdeps/osf1/siglist.c:42 sysdeps/sun4/siglist.c:42
|
||||
msgid "Termination"
|
||||
msgstr "Kết thúc"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:42
|
||||
#: ../sysdeps/sun4/siglist.c:42
|
||||
#: sysdeps/osf1/siglist.c:43 sysdeps/sun4/siglist.c:43
|
||||
msgid "Urgent condition on socket"
|
||||
msgstr "Hoàn cảnh khẩn trên ổ cắm"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:43
|
||||
#: ../sysdeps/sun4/siglist.c:43
|
||||
#: sysdeps/osf1/siglist.c:44 sysdeps/sun4/siglist.c:44
|
||||
msgid "Stop"
|
||||
msgstr "Dừng"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:44
|
||||
#: ../sysdeps/sun4/siglist.c:44
|
||||
#: sysdeps/osf1/siglist.c:45 sysdeps/sun4/siglist.c:45
|
||||
msgid "Keyboard stop"
|
||||
msgstr "Dừng bàn phím"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:45
|
||||
#: ../sysdeps/sun4/siglist.c:45
|
||||
#: sysdeps/osf1/siglist.c:46 sysdeps/sun4/siglist.c:46
|
||||
msgid "Continue"
|
||||
msgstr "Tiếp tục"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:46
|
||||
#: ../sysdeps/sun4/siglist.c:46
|
||||
#: sysdeps/osf1/siglist.c:47 sysdeps/sun4/siglist.c:47
|
||||
msgid "Child status has changed"
|
||||
msgstr "Trạng thái tiến trình con đã thay đổi"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:47
|
||||
#: ../sysdeps/sun4/siglist.c:47
|
||||
#: sysdeps/osf1/siglist.c:48 sysdeps/sun4/siglist.c:48
|
||||
msgid "Background read from tty"
|
||||
msgstr "Đọc từ tty (chế độ nền)"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:48
|
||||
#: ../sysdeps/sun4/siglist.c:48
|
||||
#: sysdeps/osf1/siglist.c:49 sysdeps/sun4/siglist.c:49
|
||||
msgid "Background write to tty"
|
||||
msgstr "Ghi vào tty (chế độ nền)"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:49
|
||||
#: ../sysdeps/sun4/siglist.c:49
|
||||
#: sysdeps/osf1/siglist.c:50 sysdeps/sun4/siglist.c:50
|
||||
msgid "I/O now possible"
|
||||
msgstr "giờ có thể dùng Vào/Ra"
|
||||
msgstr "mới có thể dùng gõ/xuất"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:50
|
||||
#: ../sysdeps/sun4/siglist.c:50
|
||||
#: sysdeps/osf1/siglist.c:51 sysdeps/sun4/siglist.c:51
|
||||
msgid "CPU limit exceeded"
|
||||
msgstr "Vượt quá giới hạn CPU"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:51
|
||||
#: ../sysdeps/sun4/siglist.c:51
|
||||
#: sysdeps/osf1/siglist.c:52 sysdeps/sun4/siglist.c:52
|
||||
msgid "File size limit exceeded"
|
||||
msgstr "Vượt quá giới hạn kích cỡ tập tin"
|
||||
msgstr "Vượt quá giới hạn kích thước tập tin"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:52
|
||||
#: ../sysdeps/sun4/siglist.c:52
|
||||
#: sysdeps/osf1/siglist.c:53 sysdeps/sun4/siglist.c:53
|
||||
msgid "Virtual alarm clock"
|
||||
msgstr "Đồng hồ báo động ảo"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:53
|
||||
#: ../sysdeps/sun4/siglist.c:53
|
||||
#: sysdeps/osf1/siglist.c:54 sysdeps/sun4/siglist.c:54
|
||||
msgid "Profiling alarm clock"
|
||||
msgstr "Đồng hồ bảo động đo hiệu suất"
|
||||
msgstr "Lấy thông tin về đồng hồ bảo động"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:54
|
||||
#: ../sysdeps/sun4/siglist.c:54
|
||||
#: sysdeps/osf1/siglist.c:55 sysdeps/sun4/siglist.c:55
|
||||
msgid "Window size change"
|
||||
msgstr "Thay đổi kích cỡ cửa sổ"
|
||||
msgstr "Thay đổi kích thước cửa sổ"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:55
|
||||
#: ../sysdeps/sun4/siglist.c:55
|
||||
#: sysdeps/osf1/siglist.c:56 sysdeps/sun4/siglist.c:56
|
||||
msgid "Information request"
|
||||
msgstr "Yêu cầu thông tin"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:56
|
||||
#: ../sysdeps/sun4/siglist.c:56
|
||||
#: sysdeps/osf1/siglist.c:57 sysdeps/sun4/siglist.c:57
|
||||
msgid "User defined signal 1"
|
||||
msgstr "Tín hiệu do người dùng xác định 1"
|
||||
msgstr "Tín hiệu do người dùng định nghĩa 1"
|
||||
|
||||
#: ../sysdeps/osf1/siglist.c:57
|
||||
#: ../sysdeps/sun4/siglist.c:57
|
||||
#: sysdeps/osf1/siglist.c:58 sysdeps/sun4/siglist.c:58
|
||||
msgid "User defined signal 2"
|
||||
msgstr "Tín hiệu do người dùng xác định 2"
|
||||
|
||||
#~ msgid "DEBUG"
|
||||
#~ msgstr "GỠ LỖI"
|
||||
|
||||
#~ msgid "VERBOSE"
|
||||
#~ msgstr "CHI TIẾT"
|
||||
|
||||
#~ msgid "NO-DAEMON"
|
||||
#~ msgstr "KHÔNG TRÌNH NỀN"
|
||||
|
||||
#~ msgid "INETD"
|
||||
#~ msgstr "INETD"
|
||||
msgstr "Tín hiệu do người dùng định nghĩa 2"
|
||||
|
@@ -1,11 +1,3 @@
|
||||
2007-07-01 Benoît Dejean <benoit@placenet.org>
|
||||
|
||||
Fixe some problems as well as implements procwd and procopenfiles
|
||||
for FreeBSD using a wrapper around lsof. This same backend should
|
||||
also work on kFreeBSD.
|
||||
|
||||
Patch by Joe Marcus Clarke <marcus@freebsd.org>
|
||||
|
||||
2007-02-18 Benoît Dejean <benoit@placenet.org>
|
||||
|
||||
* AUTHORS:
|
||||
|
@@ -5,9 +5,7 @@ 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 shm_limits.c \
|
||||
cpu.c msg_limits.c sem_limits.c loadavg.c \
|
||||
uptime.c netlist.c fsusage.c mem.c \
|
||||
procopenfiles.c procwd.c \
|
||||
glibtop_private.c
|
||||
uptime.c netlist.c fsusage.c mem.c
|
||||
|
||||
libgtop_sysdeps_2_0_la_LDFLAGS = $(LT_VERSION_INFO)
|
||||
|
||||
@@ -16,11 +14,11 @@ libgtop_sysdeps_suid_2_0_la_SOURCES = open.c close.c swap.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
|
||||
procmap.c netload.c ppp.c procopenfiles.c
|
||||
|
||||
libgtop_sysdeps_suid_2_0_la_LDFLAGS = $(LT_VERSION_INFO)
|
||||
|
||||
libgtopinclude_HEADERS = glibtop_server.h glibtop_machine.h \
|
||||
glibtop_suid.h glibtop_private.h
|
||||
glibtop_suid.h
|
||||
|
||||
libgtopincludedir = $(includedir)/libgtop-2.0
|
||||
|
@@ -1,54 +0,0 @@
|
||||
#include <config.h>
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/error.h>
|
||||
|
||||
#include "glibtop_private.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <glib.h>
|
||||
#include <errno.h>
|
||||
|
||||
char *
|
||||
execute_lsof(pid_t pid) {
|
||||
char *output = NULL;
|
||||
char *lsof;
|
||||
char *command;
|
||||
int exit_status;
|
||||
|
||||
lsof = g_find_program_in_path("lsof");
|
||||
if (lsof == NULL)
|
||||
return NULL;
|
||||
|
||||
command = g_strdup_printf("%s -n -P -Fftn -p %d", lsof, pid);
|
||||
g_free(lsof);
|
||||
|
||||
if (g_spawn_command_line_sync (command, &output, NULL, &exit_status, NULL)) {
|
||||
if (exit_status != 0) {
|
||||
g_warning("Could not execute \"%s\" (%i)", command,
|
||||
exit_status);
|
||||
output = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
g_free(command);
|
||||
return output;
|
||||
}
|
||||
|
||||
/* Ported from linux/glibtop_private.c */
|
||||
gboolean
|
||||
safe_readlink(const char *path, char *buf, int bufsiz)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = readlink(path, buf, bufsiz - 1);
|
||||
|
||||
if (ret == -1) {
|
||||
g_warning("Could not read link %s : %s", path, strerror(errno));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
buf[ret] = '\0';
|
||||
return TRUE;
|
||||
}
|
@@ -1,40 +0,0 @@
|
||||
/* Copyright (C) 2007 Joe Marcus Clarke
|
||||
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 __FREEBSD__GLIBTOP_PRIVATE_H__
|
||||
#define __FREEBSD__GLIBTOP_PRIVATE_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/error.h>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
char *execute_lsof(pid_t pid);
|
||||
gboolean safe_readlink(const char *path, char *buf, int bufsiz);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __FREEBSD__GLIBTOP_PRIVATE_H__ */
|
@@ -45,7 +45,6 @@ G_BEGIN_DECLS
|
||||
#define GLIBTOP_SUID_MSG_LIMITS 0
|
||||
#define GLIBTOP_SUID_SEM_LIMITS 0
|
||||
#define GLIBTOP_SUID_NETLIST 0
|
||||
#define GLIBTOP_SUID_PROC_WD 0
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -40,7 +40,7 @@ static const unsigned long _glibtop_sysdeps_proclist =
|
||||
* buf->flags is only set if the call succeeded, in this case pids_chain,
|
||||
* a list of the pids of all currently running processes is returned,
|
||||
* buf->number is the number of elements of this list and buf->size is
|
||||
* the size of one single element (sizeof (pid_t)). The total size is
|
||||
* the size of one single element (sizeof (unsigned)). The total size is
|
||||
* stored in buf->total.
|
||||
*
|
||||
* The calling function has to free the memory to which a pointer is returned.
|
||||
@@ -61,7 +61,7 @@ _glibtop_init_proclist_p (glibtop *server)
|
||||
server->sysdeps.proclist = _glibtop_sysdeps_proclist;
|
||||
}
|
||||
|
||||
pid_t *
|
||||
unsigned *
|
||||
glibtop_get_proclist_p (glibtop *server, glibtop_proclist *buf,
|
||||
gint64 which, gint64 arg)
|
||||
{
|
||||
@@ -90,18 +90,18 @@ glibtop_get_proclist_p (glibtop *server, glibtop_proclist *buf,
|
||||
|
||||
len /= sizeof (struct kinfo_proc);
|
||||
|
||||
pids = g_array_sized_new (FALSE, FALSE, sizeof (pid_t), len);
|
||||
pids = g_array_sized_new (FALSE, FALSE, sizeof (unsigned), len);
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
pid_t pid;
|
||||
unsigned pid;
|
||||
|
||||
pid = (pid_t) pinfo[i].ki_pid;
|
||||
pid = (unsigned) pinfo[i].ki_pid;
|
||||
|
||||
switch (which & GLIBTOP_KERN_PROC_MASK) {
|
||||
case GLIBTOP_KERN_PROC_ALL:
|
||||
break;
|
||||
case GLIBTOP_KERN_PROC_PID:
|
||||
if ((pid_t) arg != pid)
|
||||
if ((unsigned) arg != pid)
|
||||
continue;
|
||||
break;
|
||||
case GLIBTOP_KERN_PROC_UID:
|
||||
@@ -144,9 +144,9 @@ glibtop_get_proclist_p (glibtop *server, glibtop_proclist *buf,
|
||||
g_free (pinfo);
|
||||
|
||||
buf->flags = _glibtop_sysdeps_proclist;
|
||||
buf->size = sizeof (pid_t);
|
||||
buf->size = sizeof (unsigned);
|
||||
buf->number = pids->len;
|
||||
buf->total = buf->number * buf->size;
|
||||
|
||||
return (pid_t *) g_array_free (pids, FALSE);
|
||||
return (unsigned *) g_array_free (pids, FALSE);
|
||||
}
|
||||
|
@@ -1,6 +1,5 @@
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
Copyright (C) 2004 Nicol<6F>s Lichtmaier
|
||||
Copyright (C) 2007 Joe Marcus Clarke
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Modified by Nicol<6F>s Lichtmaier to give a process open files.
|
||||
@@ -27,11 +26,8 @@
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/error.h>
|
||||
#include <glibtop/procopenfiles.h>
|
||||
#include <sys/types.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "glibtop_private.h"
|
||||
#include <glibtop_suid.h>
|
||||
|
||||
static const unsigned long _glibtop_sysdeps_proc_open_files =
|
||||
(1L << GLIBTOP_PROC_OPEN_FILES_NUMBER)|
|
||||
@@ -46,139 +42,10 @@ _glibtop_init_proc_open_files_s (glibtop *server)
|
||||
server->sysdeps.proc_open_files = _glibtop_sysdeps_proc_open_files;
|
||||
}
|
||||
|
||||
static GArray *
|
||||
parse_output(const char *output) {
|
||||
GArray *entries;
|
||||
char **lines;
|
||||
char *ftype = NULL;
|
||||
char *fname = NULL;
|
||||
guint i;
|
||||
guint len;
|
||||
int fd = -1;
|
||||
|
||||
entries = g_array_new(FALSE, FALSE, sizeof(glibtop_open_files_entry));
|
||||
|
||||
lines = g_strsplit(output, "\n", 0);
|
||||
len = g_strv_length(lines);
|
||||
|
||||
for (i = 0; i < len && lines[i]; i++) {
|
||||
glibtop_open_files_entry entry = {0};
|
||||
|
||||
if (strlen(lines[i]) < 2)
|
||||
continue;
|
||||
|
||||
if (!g_str_has_prefix(lines[i], "f") &&
|
||||
!g_str_has_prefix(lines[i], "t") &&
|
||||
!g_str_has_prefix(lines[i], "n"))
|
||||
continue;
|
||||
|
||||
if (g_str_has_prefix(lines[i], "f")) {
|
||||
if (!g_ascii_isdigit(*(lines[i] + 1)))
|
||||
i += 2;
|
||||
else
|
||||
fd = atoi(lines[i] + 1);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (g_str_has_prefix(lines[i], "t")) {
|
||||
ftype = lines[i];
|
||||
ftype++;
|
||||
continue;
|
||||
} else {
|
||||
fname = lines[i];
|
||||
fname++;
|
||||
}
|
||||
|
||||
if (ftype == NULL || fname == NULL)
|
||||
continue;
|
||||
|
||||
if (!strcmp(ftype, "unix")) {
|
||||
entry.type = GLIBTOP_FILE_TYPE_LOCALSOCKET;
|
||||
g_strlcpy(entry.info.localsock.name, fname,
|
||||
sizeof(entry.info.localsock.name));
|
||||
} else if (!strcmp(ftype, "PIPE")) {
|
||||
entry.type = GLIBTOP_FILE_TYPE_PIPE;
|
||||
} else if (!strcmp(ftype, "VREG") ||
|
||||
!strcmp(ftype, "GDIR") ||
|
||||
!strcmp(ftype, "GREG") ||
|
||||
!strcmp(ftype, "VCHR") ||
|
||||
!strcmp(ftype, "VBLK") ||
|
||||
!strcmp(ftype, "DIR") ||
|
||||
!strcmp(ftype, "LINK") ||
|
||||
!strcmp(ftype, "REG") ||
|
||||
!strcmp(ftype, "VDIR")) {
|
||||
entry.type = GLIBTOP_FILE_TYPE_FILE;
|
||||
g_strlcpy(entry.info.file.name, fname,
|
||||
sizeof(entry.info.file.name));
|
||||
} else if (!strcmp(ftype, "IPv4")) {
|
||||
char **hosts;
|
||||
char **remote_host;
|
||||
|
||||
if (!strstr(fname, "->")) {
|
||||
remote_host = g_strsplit(fname, ":", 0);
|
||||
} else {
|
||||
hosts = g_strsplit(fname, "->", 0);
|
||||
if (g_strv_length(hosts) < 2) {
|
||||
g_strfreev(hosts);
|
||||
continue;
|
||||
}
|
||||
|
||||
remote_host = g_strsplit(hosts[1], ":", 0);
|
||||
g_strfreev(hosts);
|
||||
}
|
||||
|
||||
if (g_strv_length(remote_host) < 2) {
|
||||
g_strfreev(remote_host);
|
||||
continue;
|
||||
}
|
||||
|
||||
entry.type = GLIBTOP_FILE_TYPE_INETSOCKET;
|
||||
if (!strcmp(remote_host[0], "*"))
|
||||
g_strlcpy(entry.info.sock.dest_host, "0.0.0.0",
|
||||
sizeof(entry.info.sock.dest_host));
|
||||
else
|
||||
g_strlcpy(entry.info.sock.dest_host,
|
||||
remote_host[0],
|
||||
sizeof(entry.info.sock.dest_host));
|
||||
entry.info.sock.dest_port = atoi(remote_host[1]);
|
||||
|
||||
g_strfreev(remote_host);
|
||||
} else
|
||||
continue;
|
||||
|
||||
entry.fd = fd;
|
||||
|
||||
fd = -1;
|
||||
ftype = NULL;
|
||||
fname = NULL;
|
||||
|
||||
g_array_append_val(entries, entry);
|
||||
}
|
||||
|
||||
g_strfreev(lines);
|
||||
|
||||
return entries;
|
||||
}
|
||||
|
||||
/* XXX Unimplemented on FreeBSD */
|
||||
glibtop_open_files_entry *
|
||||
glibtop_get_proc_open_files_s (glibtop *server, glibtop_proc_open_files *buf, pid_t pid)
|
||||
{
|
||||
char *output;
|
||||
GArray *entries;
|
||||
|
||||
memset(buf, 0, sizeof (glibtop_proc_open_files));
|
||||
|
||||
output = execute_lsof(pid);
|
||||
if (output == NULL) return NULL;
|
||||
|
||||
entries = parse_output(output);
|
||||
|
||||
g_free(output);
|
||||
|
||||
buf->flags = _glibtop_sysdeps_proc_open_files;
|
||||
buf->number = entries->len;
|
||||
buf->size = sizeof(glibtop_open_files_entry);
|
||||
buf->total = buf->number * buf->size;
|
||||
|
||||
return (glibtop_open_files_entry*)g_array_free(entries, FALSE);
|
||||
return NULL;
|
||||
}
|
||||
|
@@ -1,121 +0,0 @@
|
||||
/* Copyright (C) 2007 Joe Marcus Clarke
|
||||
This file is part of LibGTop 2.
|
||||
|
||||
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_private.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
#include <string.h>
|
||||
|
||||
static const unsigned long _glibtop_sysdeps_proc_wd =
|
||||
(1 << GLIBTOP_PROC_WD_EXE) |
|
||||
(1 << GLIBTOP_PROC_WD_ROOT) |
|
||||
(1 << GLIBTOP_PROC_WD_NUMBER);
|
||||
|
||||
void
|
||||
_glibtop_init_proc_wd_s(glibtop *server)
|
||||
{
|
||||
server->sysdeps.proc_wd = _glibtop_sysdeps_proc_wd;
|
||||
}
|
||||
|
||||
static GPtrArray *
|
||||
parse_output(const char *output, glibtop_proc_wd *buf)
|
||||
{
|
||||
GPtrArray *dirs;
|
||||
char **lines;
|
||||
gboolean nextwd = FALSE;
|
||||
gboolean nextrtd = FALSE;
|
||||
gboolean havertd = FALSE;
|
||||
guint i;
|
||||
guint len;
|
||||
|
||||
dirs = g_ptr_array_sized_new(1);
|
||||
|
||||
lines = g_strsplit(output, "\n", 0);
|
||||
len = g_strv_length(lines);
|
||||
|
||||
for (i = 0; i < len && lines[i]; i++) {
|
||||
if (strlen(lines[i]) < 2)
|
||||
continue;
|
||||
|
||||
if (!strcmp(lines[i], "fcwd")) {
|
||||
nextwd = TRUE;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!strcmp(lines[i], "frtd")) {
|
||||
nextrtd = TRUE;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!g_str_has_prefix(lines[i], "n"))
|
||||
continue;
|
||||
|
||||
if (nextwd) {
|
||||
g_ptr_array_add(dirs, g_strdup(lines[i] + 1));
|
||||
nextwd = FALSE;
|
||||
}
|
||||
|
||||
if (nextrtd && !havertd) {
|
||||
g_strlcpy(buf->root, lines[i] + 1,
|
||||
sizeof(buf->root));
|
||||
buf->flags |= (1 << GLIBTOP_PROC_WD_ROOT);
|
||||
nextrtd = FALSE;
|
||||
havertd = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
g_strfreev(lines);
|
||||
|
||||
return dirs;
|
||||
}
|
||||
|
||||
char**
|
||||
glibtop_get_proc_wd_s(glibtop *server, glibtop_proc_wd *buf, pid_t pid)
|
||||
{
|
||||
char path[MAXPATHLEN];
|
||||
char *output;
|
||||
|
||||
memset (buf, 0, sizeof (glibtop_proc_wd));
|
||||
|
||||
g_snprintf(path, sizeof(path), "/proc/%u/file", pid);
|
||||
if (safe_readlink(path, buf->exe, sizeof(buf->exe)))
|
||||
buf->flags |= (1 << GLIBTOP_PROC_WD_EXE);
|
||||
|
||||
output = execute_lsof(pid);
|
||||
if (output != NULL) {
|
||||
GPtrArray *dirs;
|
||||
|
||||
dirs = parse_output(output, buf);
|
||||
g_free(output);
|
||||
|
||||
buf->number = dirs->len;
|
||||
buf->flags |= (1 << GLIBTOP_PROC_WD_NUMBER);
|
||||
|
||||
g_ptr_array_add(dirs, NULL);
|
||||
|
||||
return (char **)g_ptr_array_free(dirs, FALSE);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
@@ -1,6 +1,6 @@
|
||||
INCLUDES = @INCLUDES@
|
||||
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la
|
||||
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la libgtop_sysdeps_suid-2.0.la
|
||||
|
||||
libgtop_sysdeps_2_0_la_SOURCES = open.c close.c cpu.c mem.c swap.c \
|
||||
uptime.c loadavg.c shm_limits.c msg_limits.c \
|
||||
@@ -18,3 +18,7 @@ libgtopinclude_HEADERS = glibtop_server.h glibtop_machine.h
|
||||
libgtopincludedir = $(includedir)/libgtop-2.0
|
||||
|
||||
noinst_HEADERS = glibtop_private.h
|
||||
|
||||
|
||||
libgtop_sysdeps_suid_2_0_la_SOURCES = suid.c
|
||||
libgtop_sysdeps_suid_2_0_la_LDFLAGS = $(LT_VERSION_INFO)
|
||||
|
94
sysdeps/linux/suid.c
Normal file
94
sysdeps/linux/suid.c
Normal file
@@ -0,0 +1,94 @@
|
||||
|
||||
/* Copyright (C) 1998 Joshua Sled
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Joshua Sled <jsled@xcf.berkeley.edu>, July 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
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/open.h>
|
||||
#include <glibtop/init_hooks.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_SYSDEPS) == 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_SYSDEPS;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
glibtop_open_p (glibtop *server, const char *program_name,
|
||||
const unsigned long features,
|
||||
const unsigned flags)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "DEBUG (%d): glibtop_open_p ()\n", getpid ());
|
||||
#endif
|
||||
#if 0
|
||||
/* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */
|
||||
|
||||
server->machine.uid = getuid ();
|
||||
server->machine.euid = geteuid ();
|
||||
server->machine.gid = getgid ();
|
||||
server->machine.egid = getegid ();
|
||||
|
||||
server->os_version_code = __FreeBSD_version;
|
||||
|
||||
/* Setup machine-specific data */
|
||||
server->machine.kd = kvm_open (NULL, NULL, NULL, O_RDONLY, "kvm_open");
|
||||
|
||||
if (server->machine.kd == NULL)
|
||||
glibtop_error_io_r (server, "kvm_open");
|
||||
|
||||
/* Drop priviledges. */
|
||||
|
||||
if (setreuid (server->machine.euid, server->machine.uid))
|
||||
_exit (1);
|
||||
|
||||
if (setregid (server->machine.egid, server->machine.gid))
|
||||
_exit (1);
|
||||
#endif
|
||||
/* !!! 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. */
|
||||
|
||||
/* NOTE: On FreeBSD, we do not need to be suid root, we just need to
|
||||
* be sgid kmem.
|
||||
*
|
||||
* The server will only use setegid() to get back it's priviledges,
|
||||
* so it will fail if it is suid root and not sgid kmem. */
|
||||
}
|
Reference in New Issue
Block a user