From: Craig Small Date: Thu, 1 Mar 2007 22:55:59 +0000 (+0000) Subject: Added peekfd and updated the autotools X-Git-Tag: v22.11~71 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a667f717916c319dfbc58ca6dae0f484162fb230;p=psmisc Added peekfd and updated the autotools --- diff --git a/AUTHORS b/AUTHORS index 9d5eaf4..83220ec 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,2 +1,3 @@ Werner Almesberger Craig Small +peekfd writtten by Trent Waddington diff --git a/ChangeLog b/ChangeLog index 1031a74..587762b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,20 @@ Changes in 22.4 =============== +2007-03-02 Craig Small + * Added peekfd + +2007-03-02 gettextize + + * m4/gettext.m4: Upgrade to gettext-0.16.1. + * m4/iconv.m4: Upgrade to gettext-0.16.1. + * m4/lib-ld.m4: Upgrade to gettext-0.16.1. + * m4/lib-link.m4: Upgrade to gettext-0.16.1. + * m4/lib-prefix.m4: Upgrade to gettext-0.16.1. + * m4/nls.m4: Upgrade to gettext-0.16.1. + * m4/po.m4: Upgrade to gettext-0.16.1. + * m4/progtest.m4: Upgrade to gettext-0.16.1. + * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.16.1. + 2006-09-28 Craig Small * fuser tcp works on 64bit, after actually reading the submitted patch and applying it, thankyou nigel_ding, SF# 1551731 diff --git a/doc/Makefile.am b/doc/Makefile.am index cf09cf3..1185f82 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,4 +1,4 @@ -man_MANS = fuser.1 killall.1 pstree.1 +man_MANS = fuser.1 killall.1 peekfd.1 pstree.1 EXTRA_DIST = $(man_MANS) diff --git a/po/ChangeLog b/po/ChangeLog index 3bcf0d6..215f1e7 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,7 @@ +2007-03-02 gettextize + + * Makefile.in.in: Upgrade to gettext-0.16.1. + 2004-04-30 gettextize * Makefile.in.in: New file, from gettext-0.14.1. diff --git a/po/POTFILES.in b/po/POTFILES.in index efefcc6..c437b71 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,4 +1,5 @@ src/killall.c src/fuser.c +src/peekfd.c src/pstree.c src/signals.c diff --git a/po/bg.po b/po/bg.po index 880198b..acb7d19 100644 --- a/po/bg.po +++ b/po/bg.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 22.2pre1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2006-03-07 11:49+0200\n" "Last-Translator: Anton Zinoviev \n" "Language-Team: Bulgarian \n" @@ -140,7 +140,7 @@ msgstr "" "Copyright © 1993-2005 Werner Almesberger и Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -343,6 +343,37 @@ msgstr "Не може да се отвори мрежово гнездо.\n" msgid "Cannot find socket's device number.\n" msgstr "Не може да бъде намерен номерът на устройството на гнездото.\n" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (PSmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/ca.po b/po/ca.po index 7ab8876..79e65fb 100644 --- a/po/ca.po +++ b/po/ca.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 21.6cvs\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2004-12-08 12:46+0100\n" "Last-Translator: Guillem Jover \n" "Language-Team: Catalan \n" @@ -132,7 +132,7 @@ msgstr "" "Copyright (C) 1993-2002 Werner Almesberger i Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -332,6 +332,37 @@ msgstr "" msgid "Cannot find socket's device number.\n" msgstr "no s'ha pogut trobar el nombre de dispositiu del sòcol" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (psmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, fuzzy, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/de.po b/po/de.po index 5dc667d..db1b11e 100644 --- a/po/de.po +++ b/po/de.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 20.1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2004-11-02 13:36-0500\n" "Last-Translator: Wolfgang Schorer \n" "Language-Team: woolfy \n" @@ -105,7 +105,7 @@ msgstr "" "Copyright (C) 1993-2002 Werner Almesberger und Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -301,6 +301,37 @@ msgstr "" msgid "Cannot find socket's device number.\n" msgstr "Kann die Gerätenummer der Sockets nicht finden" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "fuser (psmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/eu.po b/po/eu.po index dcd3bbd..0041a40 100644 --- a/po/eu.po +++ b/po/eu.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 21.6pre1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2005-02-23 14:55+0100\n" "Last-Translator: Mikel Olasagasti \n" "Language-Team: Basque \n" @@ -135,7 +135,7 @@ msgstr "" "Copyright (C) 1993-2002 Werner Almesberger eta Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -337,6 +337,37 @@ msgstr "" msgid "Cannot find socket's device number.\n" msgstr "ezin da socket gailu zenbakia aurkitu" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (psmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, fuzzy, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/fi.po b/po/fi.po index 7b4bb6f..4d7f9fd 100644 --- a/po/fi.po +++ b/po/fi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 21.5\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2004-10-29 15:14+0300\n" "Last-Translator: Lars Wirzenius \n" "Language-Team: Finnish \n" @@ -106,7 +106,7 @@ msgstr "" "Copyright (C) 1993-2002 Werner Almesberger and Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, fuzzy, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -307,6 +307,37 @@ msgstr "" msgid "Cannot find socket's device number.\n" msgstr "pistokkeen laitenumeroa ei löydy" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (psmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, fuzzy, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/fr.po b/po/fr.po index 0e9132f..90a9e9a 100644 --- a/po/fr.po +++ b/po/fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 20.1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2002-04-12 21:33+1000\n" "Last-Translator: Marc Léger \n" "Language-Team: French \n" @@ -102,7 +102,7 @@ msgid "" "\n" msgstr "" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, fuzzy, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -301,6 +301,37 @@ msgstr "" msgid "Cannot find socket's device number.\n" msgstr "ne peut pas trouver le numéro du périphérique des sockets" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "fuser (psmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/hu.po b/po/hu.po index 16d7024..4e8f776 100644 --- a/po/hu.po +++ b/po/hu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 22.2\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2006-08-05 02:34+0200\n" "Last-Translator: Miklos Vajna \n" "Language-Team: Hungarian \n" @@ -135,7 +135,7 @@ msgstr "" "Copyright (C) 1993-2005 Werner Almesberger és Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -336,6 +336,37 @@ msgstr "Nem siker msgid "Cannot find socket's device number.\n" msgstr "Nem sikerült megtalálni a socket eszközszámát.\n" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (PSmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/it.po b/po/it.po index e26ba26..333ee54 100644 --- a/po/it.po +++ b/po/it.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 22.2pre1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2006-03-13 14:16+0000\n" "Last-Translator: Marco Colombo \n" "Language-Team: Italian \n" @@ -134,7 +134,7 @@ msgstr "" "Copyright (C) 1993-2005 Werner Almesberger e Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -338,6 +338,37 @@ msgstr "Impossibile aprire un socket di rete.\n" msgid "Cannot find socket's device number.\n" msgstr "Impossibile trovare il numero di dispositivo del socket.\n" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (PSmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/ja.po b/po/ja.po index 9080c5d..98272f2 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 22.2pre1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2006-03-20 10:31+0900\n" "Last-Translator: GOTO Masanori \n" "Language-Team: Japanese \n" @@ -132,7 +132,7 @@ msgstr "" "Copyright (C) 1993-2005 Werner Almesberger and Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -336,6 +336,37 @@ msgstr " msgid "Cannot find socket's device number.\n" msgstr "¥½¥±¥Ã¥È¤Î¥Ç¥Ð¥¤¥¹Èֹ椬¸«¤Ä¤«¤ê¤Þ¤»¤ó.\n" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (PSmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/nb.po b/po/nb.po index f9cfed7..21e2b5f 100644 --- a/po/nb.po +++ b/po/nb.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 22.2pre1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2006-03-07 12:01+0100\n" "Last-Translator: Trond Endrestøl \n" "Language-Team: Norwegian Bokmaal \n" @@ -146,7 +146,7 @@ msgstr "" "Copyright (C) 1993-2005 Werner Almesberger og Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -351,6 +351,37 @@ msgstr "Kan ikke msgid "Cannot find socket's device number.\n" msgstr "Kan ikke finne socketens enhetsnummer.\n" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (psmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/nl.po b/po/nl.po index 2918d21..6543c58 100644 --- a/po/nl.po +++ b/po/nl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 22.2pre1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2006-03-06 21:12+0100\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" @@ -133,7 +133,7 @@ msgstr "" "Copyright (C) 1993-2005 Werner Almesberger and Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -334,6 +334,37 @@ msgstr "Kan netwerk-socket niet openen.\n" msgid "Cannot find socket's device number.\n" msgstr "Kan apparaatnummer van socket niet vinden.\n" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (PSmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/pl.po b/po/pl.po index 234e5b7..402404a 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 22.2pre1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2006-03-06 18:01+0100\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" @@ -136,7 +136,7 @@ msgstr "" "Copyright (C) 1993-2005 Werner Almesberger i Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -337,6 +337,37 @@ msgstr "Nie mo msgid "Cannot find socket's device number.\n" msgstr "Nie mo¿na odnale¼æ numeru urz±dzenia gniazda.\n" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (PSmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/psmisc.pot b/po/psmisc.pot index 5aedef8..fa079d8 100644 --- a/po/psmisc.pot +++ b/po/psmisc.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -104,7 +104,7 @@ msgid "" "\n" msgstr "" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -272,6 +272,37 @@ msgstr "" msgid "Cannot find socket's device number.\n" msgstr "" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/pt.po b/po/pt.po index 4062f25..078cabd 100644 --- a/po/pt.po +++ b/po/pt.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 1.0\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2001-10-28 22:14-0200\n" "Last-Translator: Edesio Costa e Silva \n" "Language-Team: Portuguese \n" @@ -102,7 +102,7 @@ msgid "" "\n" msgstr "" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, fuzzy, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -303,6 +303,37 @@ msgstr "" msgid "Cannot find socket's device number.\n" msgstr "não pode achar o número de dispositivo do socket" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "fuser (psmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/ro.po b/po/ro.po index 477f927..03453e6 100644 --- a/po/ro.po +++ b/po/ro.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc-21.6pre1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2005-02-24 12:00-0500\n" "Last-Translator: Laurentiu Buzdugan \n" "Language-Team: Romanian \n" @@ -135,7 +135,7 @@ msgstr "" "Copyright (C) 1993-2002 Werner Almesberger ºi Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -335,6 +335,37 @@ msgstr "" msgid "Cannot find socket's device number.\n" msgstr "nu pot gãsi numerele dispozitivelor socket-urilor" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (psmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, fuzzy, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/ru.po b/po/ru.po index e21943f..685ce88 100644 --- a/po/ru.po +++ b/po/ru.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 20.6\n" -"Report-Msgid-Bugs-To: evseev@altlinux.ru\n" -"POT-Creation-Date: 2005-03-15 02:53+0300\n" +"Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2005-03-15 02:53+0300\n" "Last-Translator: Ilya Evseev \n" "Language-Team: woolfy \n" @@ -14,35 +14,40 @@ msgstr "" "Content-Type: text/plain; charset=KOI8-R\n" "Content-Transfer-Encoding: 8-bit\n" -#: src/killall.c:53 +#: src/killall.c:73 #, c-format msgid "Kill %s(%s%d) ? (y/N) " msgstr "%s(%s%d) ÚÁ×ÅÒÛÉÔØ? (y/N) " -#: src/killall.c:245 +#: src/killall.c:116 +#, c-format +msgid "Cannot get UID from process status\n" +msgstr "" + +#: src/killall.c:142 src/killall.c:664 +#, c-format +msgid "Bad regular expression: %s\n" +msgstr "" + +#: src/killall.c:338 #, c-format msgid "skipping partial match %s(%d)\n" msgstr "ÉÇÎÏÒÉÒÕÀ ÎÅÐÏÌÎÏÅ ÓÏ×ÐÁÄÅÎÉÅ %s(%d)\n" -#: src/killall.c:339 +#: src/killall.c:427 #, c-format msgid "Killed %s(%s%d) with signal %d\n" msgstr "%s(%s%d) ÚÁ×ÅÒۣΠÓÉÇÎÁÌÏÍ %d\n" -#: src/killall.c:351 src/fuser.c:494 src/pstree.c:673 -#, c-format -msgid "%s is empty (not mounted ?)\n" -msgstr "%s ÐÕÓÔ (ÎÅ ÓÍÏÎÔÉÒÏ×ÁÎ ?)\n" - -#: src/killall.c:357 +#: src/killall.c:441 #, c-format msgid "%s: no process killed\n" msgstr "%s: ÎÅ ÚÁ×ÅÒۣΠÎÉ ÏÄÉÎ ÐÒÏÃÅÓÓ\n" -#: src/killall.c:388 -#, c-format +#: src/killall.c:479 +#, fuzzy, c-format msgid "" -"usage: pidof [ -eg ] name ...\n" +"Usage: pidof [ -eg ] NAME...\n" " pidof -V\n" "\n" " -e require exact match for very long names;\n" @@ -56,25 +61,28 @@ msgstr "" "\n" " -e ÔÒÅÂÏ×ÁÔØ ÐÏÌÎÏÇÏ ÓÏ×ÐÁÄÅÎÉÑ ÄÌÑ ÏÞÅÎØ ÄÌÉÎÎÙÈ ÉÍ£Î;\n" " ÉÇÎÏÒÉÒÏ×ÁÔØ, ÅÓÌÉ ËÏÍÁÎÄÎÁÑ ÓÔÒÏËÁ ÎÅÄÏÓÔÕÐÎÁ\n" -" -g ÐÏËÁÚÙ×ÁÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÇÒÕÐÐÙ ÐÒÏÃÅÓÓÁ ×ÍÅÓÔÏ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ÐÒÏÃÅÓÓÁ\n" +" -g ÐÏËÁÚÙ×ÁÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÇÒÕÐÐÙ ÐÒÏÃÅÓÓÁ ×ÍÅÓÔÏ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ " +"ÐÒÏÃÅÓÓÁ\n" " -V ÐÏËÁÚÁÔØ ×ÅÒÓÉÀ ÐÒÏÇÒÁÍÍÙ\n" "\n" -#: src/killall.c:402 -#, c-format -msgid "usage: killall [-s sid] [-c context] [ -egiqvw ] [ -signal ] name ...\n" -msgstr "óÉÎÔÁËÓÉÓ: killall [-s sid] [-c context] [ -egiqvw ] [ -signal ] name ...\n" +#: src/killall.c:493 +#, fuzzy, c-format +msgid "" +"Usage: killall [-Z CONTEXT] [-u USER] [ -eIgiqrvw ] [ -SIGNAL ] NAME...\n" +msgstr "" +"óÉÎÔÁËÓÉÓ: killall [-s sid] [-c context] [ -egiqvw ] [ -signal ] name ...\n" -#: src/killall.c:405 -#, c-format -msgid "usage: killall [ OPTIONS ] [ -- ] name ...\n" +#: src/killall.c:496 +#, fuzzy, c-format +msgid "Usage: killall [OPTION]... [--] NAME...\n" msgstr "óÉÎÔÁËÓÉÓ: killall [ OPTIONS ] [ -- ] name ...\n" -#: src/killall.c:408 -#, c-format +#: src/killall.c:499 +#, fuzzy, c-format msgid "" " killall -l, --list\n" -" killall -V --version\n" +" killall -V, --version\n" "\n" " -e,--exact require exact match for very long names\n" " -I,--ignore-case case insensitive process name match\n" @@ -82,18 +90,20 @@ msgid "" " -i,--interactive ask for confirmation before killing\n" " -l,--list list all known signal names\n" " -q,--quiet don't print complaints\n" -" -s,--signal send signal instead of SIGTERM\n" +" -r,--regexp interpret NAME as an extended regular expression\n" +" -s,--signal SIGNAL send this signal instead of SIGTERM\n" +" -u,--user USER kill only process(es) running as USER\n" " -v,--verbose report if the signal was successfully sent\n" " -V,--version display version information\n" " -w,--wait wait for processes to die\n" -"\n" msgstr "" " killall -l, --list\n" " killall -V --version\n" "\n" " -e,--exact ÔÒÅÂÏ×ÁÔØ ÐÏÌÎÏÇÏ ÓÏ×ÐÁÄÅÎÉÑ ÄÌÑ ÏÞÅÎØ ÄÌÉÎÎÙÈ ÉÍ£Î\n" " -I,--ignore-case ÉÇÎÏÒÉÒÏ×ÁÔØ ÒÅÇÉÓÔÒ ÓÉÍ×ÏÌÏ× × ÉÍÅÎÁÈ ÐÒÏÃÅÓÓÏ×\n" -" -g,--process-group ÚÁ×ÅÒÛÁÔØ ÇÒÕÐÐÕ ÐÒÏÃÅÓÓÁ × ÄÏÐÏÌÎÅÎÉÅ Ë ÓÁÍÏÍÕ ÐÒÏÃÅÓÓÕ\n" +" -g,--process-group ÚÁ×ÅÒÛÁÔØ ÇÒÕÐÐÕ ÐÒÏÃÅÓÓÁ × ÄÏÐÏÌÎÅÎÉÅ Ë ÓÁÍÏÍÕ " +"ÐÒÏÃÅÓÓÕ\n" " -i,--interactive ÚÁÐÒÁÛÉ×ÁÔØ ÐÏÄÔ×ÅÒÖÄÅÎÉÅ ÐÅÒÅÄ ÚÁ×ÅÒÛÅÎÉÅÍ ÐÒÏÃÅÓÓÏ×\n" " -l,--list ×Ù×ÅÓÔÉ ÓÐÉÓÏË ÄÏÐÕÓÔÉÍÙÈ ÉͣΠÓÉÇÎÁÌÏ×\n" " -q,--quiet ÏÔËÌÀÞÉÔØ ÌÉÛÎÉÅ ÓÏÏÂÝÅÎÉÑ\n" @@ -103,29 +113,26 @@ msgstr "" " -w,--wait ÏÖÉÄÁÔØ ÚÁ×ÅÒÛÅÎÉÑ ÐÒÏÃÅÓÓÏ×\n" "\n" - -#: src/killall.c:422 -#, c-format +#: src/killall.c:515 +#, fuzzy, c-format msgid "" -" -d,--sid kill only process(es) having sid\n" -" -c,--context kill only process(es) having scontext\n" -" (-s, -c are mutually exclusive and must precede other arguments)\n" -"\n" +" -Z,--context REGEXP kill only process(es) having context\n" +" (must precede other arguments)\n" msgstr "" " -d,--sid ÚÁ×ÅÒÛÁÔØ ÔÏÌØËÏ ÐÒÏÃÅÓÓÙ(Ù) Ó ÕËÁÚÁÎÎÙÍ SID\n" " -c,--context ÚÁ×ÅÒÛÁÔØ ÔÏÌØËÏ ÐÒÏÃÅÓÓÙ(Ù) Ó ÕËÁÚÁÎÎÙÍ SCONTEXT\n" " (-s, -c ×ÚÁÉÍÎÏ ÉÓËÌÀÞÁÀÔ ÄÒÕÇ ÄÒÕÇÁ É ÄÏÌÖÎÙ ÂÙÔØ ÐÅÒ×ÙÍ ÁÒÇÕÍÅÎÔÏÍ)\n" "\n" -#: src/killall.c:444 src/fuser.c:989 src/pstree.c:743 +#: src/killall.c:536 src/fuser.c:117 src/pstree.c:780 #, c-format msgid "" -"Copyright (C) 1993-2002 Werner Almesberger and Craig Small\n" +"Copyright (C) 1993-2005 Werner Almesberger and Craig Small\n" "\n" msgstr "" -#: src/killall.c:446 src/fuser.c:991 src/pstree.c:745 -#, fuzzy, c-format +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 +#, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" "This is free software, and you are welcome to redistribute it under\n" @@ -133,97 +140,41 @@ msgid "" "For more information about these matters, see the files named COPYING.\n" msgstr "" -#: src/killall.c:563 +#: src/killall.c:638 #, c-format -msgid "%s: SID (%s) must be numeric\n" -msgstr "%s: SID (%s) ÄÏÌÖÅÎ ÂÙÔØ ÞÉÓÌÏ×ÙÍ\n" +msgid "Cannot find user %s\n" +msgstr "" -#: src/killall.c:614 +#: src/killall.c:697 #, c-format msgid "Maximum number of names is %d\n" msgstr "ëÏÌÉÞÅÓÔ×Ï ÉͣΠÎÅ ÍÏÖÅÔ ÐÒÅ×ÙÛÁÔØ %d\n" -#: src/fuser.c:243 -#, c-format -msgid "-4 flag used but proc file %s is not readable\n" -msgstr "ÕËÁÚÁÎ ÆÌÁÇ -4, ÎÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ proc-ÆÁÊÌ %s ÎÅÄÏÓÔÕÐÅÎ\n" - -#: src/fuser.c:252 -#, c-format -msgid "-6 flag used but proc file %s is not readable\n" -msgstr "ÕËÁÚÁÎ ÆÌÁÇ -6, ÎÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ proc-ÆÁÊÌ %s ÎÅÄÏÓÔÕÐÅÎ\n" - -#: src/fuser.c:592 -#, c-format -msgid "Kill process %d ? (y/N) " -msgstr "úÁ×ÅÒÛÉÔØ ÐÒÏÃÅÓÓ %d ? (y/N) " - -#: src/fuser.c:626 -#, c-format -msgid "kill %d" -msgstr "úÁ×ÅÒÛÅÎÉÅ ÐÒÏÃÅÓÓÁ %d" - -#: src/fuser.c:630 src/fuser.c:634 -#, c-format -msgid "No automatic removal. Please use umount %s\n" -msgstr "á×ÔÏÍÁÔÉÞÅÓËÏÅ ÏÔËÌÀÞÅÎÉÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ. éÓÐÏÌØÚÕÊÔÅ umount %s\n" - -#: src/fuser.c:638 -#, c-format -msgid "No automatic removal. Please use swapoff %s\n" -msgstr "á×ÔÏÍÁÔÉÞÅÓËÏÅ ÏÔËÌÀÞÅÎÉÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ. éÓÐÏÌØÚÕÊÔÅ swapoff %s\n" - -#: src/fuser.c:661 -#, c-format -msgid "" -"\n" -"%*s USER PID ACCESS COMMAND\n" -msgstr "" - -#: src/fuser.c:752 -#, c-format -msgid "Internal error (type %d)\n" -msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ (ÔÉÐ %d)\n" - -#: src/fuser.c:790 -#, c-format -msgid "kernel mount " -msgstr "Kernel mount " - -#: src/fuser.c:793 +#: src/killall.c:702 src/pstree.c:710 #, c-format -msgid "kernel loop " -msgstr "Kernel loop " - -#: src/fuser.c:796 -#, c-format -msgid "kernel swap " -msgstr "Kernel swap " - -#: src/fuser.c:952 -#, c-format -msgid "can't find sockets' device number" -msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ÓÏËÅÔÁ" +msgid "%s is empty (not mounted ?)\n" +msgstr "%s ÐÕÓÔ (ÎÅ ÓÍÏÎÔÉÒÏ×ÁÎ ?)\n" -#: src/fuser.c:961 -#, c-format +#: src/fuser.c:86 +#, fuzzy, c-format msgid "" -"usage: fuser [ -a | -s | -c ] [ -n space ] [ -signal ] [ -kimuv ] name ...\n" -" [ - ] [ -n space ] [ -signal ] [ -kimuv ] name ...\n" +"Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...\n" +" [ - ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...\n" " fuser -l\n" " fuser -V\n" +"Show which processes use the named files, sockets, or filesystems.\n" "\n" " -a display unused files too\n" " -c mounted FS\n" " -f silently ignored (for POSIX compatibility)\n" -" -k kill processes accessing that file\n" " -i ask before killing (ignored without -k)\n" -" -l list signal names\n" -" -m mounted FS\n" -" -n space search in the specified name space (file, udp, or tcp)\n" +" -k kill processes accessing the named file\n" +" -l list available signal names\n" +" -m show all processes using the named filesystems\n" +" -n SPACE search in this name space (file, udp, or tcp)\n" " -s silent operation\n" -" -signal send signal instead of SIGKILL\n" -" -u display user ids\n" +" -SIGNAL send this signal instead of SIGKILL\n" +" -u display user IDs\n" " -v verbose output\n" " -V display version information\n" " -4 search IPv4 sockets only\n" @@ -257,43 +208,176 @@ msgstr "" " éÍÅÎÁ udp/tcp: [ÌÏËÁÌØÎÙÊ_ÐÏÒÔ][,[ÕÄÁÌ£ÎÎÙÊ_ÈÏÓÔ][,[ÕÄÁÌ£ÎÎÙÊ_ÐÏÒÔ]]]\n" "\n" -#: src/fuser.c:987 -#, c-format -msgid "fuser (psmisc) %s\n" +#: src/fuser.c:115 +#, fuzzy, c-format +msgid "fuser (PSmisc) %s\n" msgstr "fuser (psmisc) %s\n" -#: src/fuser.c:1173 +#: src/fuser.c:142 +#, c-format +msgid "Cannot open /proc directory: %s\n" +msgstr "" + +#: src/fuser.c:278 #, c-format -msgid "ignoring -m in name space \"%s\"\n" -msgstr "-m ÂÕÄÅÔ ÉÇÎÏÒÉÒÏ×ÁÎ × ÐÒÏÓÔÒÁÎÓÔ×Å ÉͣΠ\"%s\"\n" +msgid "Cannot allocate memory for matched proc: %s\n" +msgstr "" + +#: src/fuser.c:311 +#, c-format +msgid "Cannot stat mount point %s: %s\n" +msgstr "" + +#: src/fuser.c:328 src/fuser.c:347 src/fuser.c:370 +#, c-format +msgid "Cannot stat %s: %s\n" +msgstr "" + +#: src/fuser.c:469 +#, c-format +msgid "Cannot resolve local port %s: %s\n" +msgstr "" + +#: src/fuser.c:485 +#, c-format +msgid "Unknown local port AF %d\n" +msgstr "" + +#: src/fuser.c:538 src/fuser.c:590 +#, c-format +msgid "Cannot open protocol file \"%s\": %s\n" +msgstr "" + +#: src/fuser.c:711 +msgid "Namespace option requires an argument." +msgstr "" + +#: src/fuser.c:720 +msgid "Invalid namespace name" +msgstr "" + +#: src/fuser.c:776 +msgid "You can only use files with mountpoint option" +msgstr "" + +#: src/fuser.c:805 +msgid "No process specification given" +msgstr "" + +#: src/fuser.c:810 +msgid "You cannot use the mounted and mountpoint flags together" +msgstr "" + +#: src/fuser.c:817 +msgid "all option cannot be used with silent option." +msgstr "" + +#: src/fuser.c:821 +msgid "You cannot search for only IPv4 and only IPv6 sockets at the same time" +msgstr "" + +#: src/fuser.c:866 +#, c-format +msgid "" +"\n" +"%*s USER PID ACCESS COMMAND\n" +msgstr "" + +#: src/fuser.c:891 src/fuser.c:916 +msgid "(unknown)" +msgstr "" + +#: src/fuser.c:978 +#, c-format +msgid "Cannot stat file %s: %s\n" +msgstr "" + +#: src/fuser.c:1072 +#, c-format +msgid "Cannot open /proc/net/unix: %s\n" +msgstr "" + +#: src/fuser.c:1108 +#, c-format +msgid "Cannot open /etc/mtab: %s\n" +msgstr "" + +#: src/fuser.c:1157 +#, c-format +msgid "Kill process %d ? (y/N) " +msgstr "úÁ×ÅÒÛÉÔØ ÐÒÏÃÅÓÓ %d ? (y/N) " #: src/fuser.c:1181 #, c-format -msgid "%s/%s: invalid specification\n" -msgstr "%s/%s: ÎÅËÏÒÒÅËÔÎÙÊ ÆÏÒÍÁÔ\n" +msgid "Could not kill process %d: %s\n" +msgstr "" -#: src/pstree.c:377 +#: src/fuser.c:1196 #, c-format -msgid "MAX_DEPTH not big enough.\n" -msgstr "MAX_DEPTH ÄÏÌÖÅÎ ÂÙÔØ ÓÄÅÌÁÎ ÂÏÌØÛÅ.\n" +msgid "Cannot open a network socket.\n" +msgstr "" -#: src/pstree.c:713 +#: src/fuser.c:1200 +#, fuzzy, c-format +msgid "Cannot find socket's device number.\n" +msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ÓÏËÅÔÁ" + +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "fuser (psmisc) %s\n" + +#: src/peekfd.c:59 #, c-format msgid "" -"usage: pstree [ -a ] [ -c ] [ -h | -H pid ] [ -l ] [ -n ] [ -p ] [ -u ]\n" -" [ -A | -G | -U ] [ pid | user]\n" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + +#: src/pstree.c:374 +#, fuzzy, c-format +msgid "Internal error: MAX_DEPTH not big enough.\n" +msgstr "MAX_DEPTH ÄÏÌÖÅÎ ÂÙÔØ ÓÄÅÌÁÎ ÂÏÌØÛÅ.\n" + +#: src/pstree.c:750 +#, fuzzy, c-format +msgid "" +"Usage: pstree [ -a ] [ -c ] [ -h | -H PID ] [ -l ] [ -n ] [ -p ] [ -u ]\n" +" [ -A | -G | -U ] [ PID | USER ]\n" " pstree -V\n" +"Display a tree of processes.\n" "\n" " -a show command line arguments\n" " -A use ASCII line drawing characters\n" " -c don't compact identical subtrees\n" " -h highlight current process and its ancestors\n" -" -H pid highlight process \"pid\" and its ancestors\n" +" -H PID highlight this process and its ancestors\n" " -G use VT100 line drawing characters\n" " -l don't truncate long lines\n" " -n sort output by PID\n" " -p show PIDs; implies -c\n" " -u show uid transitions\n" +" -U use UTF-8 (Unicode) line drawing characters\n" +" -V display version information\n" msgstr "" "óÉÎÔÁËÓÉÓ: pstree [ -a ] [ -c ] [ -h | -H pid ] [ -l ] [ -n ] [ -p ] [ -u ]\n" " [ -A | -G | -U ] [ pid | user]\n" @@ -304,72 +388,116 @@ msgstr "" " -c ÎÅ ÓÖÉÍÁÔØ ÏÄÉÎÁËÏ×ÙÅ ÐÏÄÄÅÒÅרÑ\n" " -h ×ÙÄÅÌÑÔØ Ã×ÅÔÏÍ ÔÅËÕÝÉÊ ÐÒÏÃÅÓÓ É ÅÇÏ ÐÒÅÄËÏ×\n" " -H pid ×ÙÄÅÌÑÔØ Ã×ÅÔÏÍ ÐÒÏÃÅÓÓ \"pid\" É ÅÇÏ ÐÒÅÄËÏ×\n" -" -G ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÒÉÓÏ×ÁÎÉÑ ÌÉÎÉÊ ÕÐÒÁ×ÌÑÀÝÉÅ ÓÉÍ×ÏÌÙ ÔÅÒÍÉÎÁÌÁ VT100\n" +" -G ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÒÉÓÏ×ÁÎÉÑ ÌÉÎÉÊ ÕÐÒÁ×ÌÑÀÝÉÅ ÓÉÍ×ÏÌÙ ÔÅÒÍÉÎÁÌÁ " +"VT100\n" " -l ÎÅ ÏÂÒÅÚÁÔØ ÄÌÉÎÎÙÅ ÓÔÒÏËÉ\n" " -n ÓÏÒÔÉÒÏ×ÁÔØ ×Ù×ÏÄ ÐÏ ÐÏÌÀ PID\n" " -p ÐÏËÁÚÙ×ÁÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒÙ ÐÒÏÃÅÓÓÏ× (PIDs); ×ËÌÀÞÁÅÔ -c\n" -" -u ÐÏËÁÚÙ×ÁÔØ ÐÅÒÅÈÏÄÙ ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ (uid transitions)\n" +" -u ÐÏËÁÚÙ×ÁÔØ ÐÅÒÅÈÏÄÙ ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ (uid " +"transitions)\n" -#: src/pstree.c:728 -#, c-format -msgid "" -" -s show Flask SIDs\n" -" -x show Flask security contexts\n" +#: src/pstree.c:768 +#, fuzzy, c-format +msgid " -Z show SELinux security contexts\n" msgstr "" " -s ÐÏËÁÚÁÔØ Flask SIDs\n" " -x ÐÏËÁÚÁÔØ Flask security contexts\n" -#: src/pstree.c:732 +#: src/pstree.c:771 #, c-format msgid "" -" -U use UTF-8 (Unicode) line drawing characters\n" -" -V display version information\n" -" pid start at pid, default 1 (init)\n" -" user show only trees rooted at processes of that user\n" +" PID start at this PID; default is 1 (init)\n" +" USER show only trees rooted at processes of this user\n" "\n" msgstr "" -" -U ÉÓÐÏÌØÚÏ×ÁÔØ ËÏÄÉÒÏ×ËÕ UTF-8 (Unicode) ÄÌÑ ÒÉÓÏ×ÁÎÉÑ ÌÉÎÉÊ\n" -" -V ÐÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ\n" -" pid ÉÄÅÎÔÉÆÉËÁÔÏÒ ËÏÒÎÅ×ÏÇÏ ÐÒÏÃÅÓÓÁ, ÐÏ ÕÍÏÌÞÁÎÉÀ 1 (init)\n" -" user ÐÏËÁÚÙ×ÁÔØ ÔÏÌØËÏ ÄÅÒÅ×ØÑ Ó ËÏÒÎÅ×ÙÍÉ ÐÒÏÃÅÓÓÁÍÉ,\n" -" ÐÒÉÎÁÄÌÅÖÁÝÉÍÉ ÄÁÎÎÏÍÕ ÐÏÌØÚÏ×ÁÔÅÌÀ\n" -"\n" -#: src/pstree.c:741 +#: src/pstree.c:778 #, fuzzy, c-format -msgid "pstree (psmisc) %s\n" +msgid "pstree (PSmisc) %s\n" msgstr "fuser (psmisc) %s\n" -#: src/pstree.c:835 +#: src/pstree.c:871 #, c-format msgid "TERM is not set\n" msgstr "ðÅÒÅÍÅÎÎÁÑ ÏËÒÕÖÅÎÉÑ TERM ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ\n" -#: src/pstree.c:840 +#: src/pstree.c:876 #, c-format msgid "Can't get terminal capabilities\n" msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÈÁÒÁËÔÅÒÉÓÔÉËÉ ÔÅÒÍÉÎÁÌÁ\n" -#: src/pstree.c:884 +#: src/pstree.c:920 #, c-format msgid "No such user name: %s\n" msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÉÑ ÐÏÌØÚÏ×ÁÔÅÌÑ: %s\n" -#: src/pstree.c:900 +#: src/pstree.c:936 #, c-format msgid "No processes found.\n" msgstr "îÅ ÎÁÊÄÅÎÏ ÎÉ ÏÄÎÏÇÏ ÐÒÏÃÅÓÓÁ.\n" -#: src/pstree.c:905 +#: src/pstree.c:941 #, c-format msgid "Press return to close\n" msgstr "îÁÖÍÉÔÅ Enter ÄÌÑ ×ÙÈÏÄÁ\n" -#: src/signals.c:65 +#: src/signals.c:84 #, c-format msgid "%s: unknown signal; %s -l lists signals.\n" msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÇÎÁÌ; %s -l ×Ù×ÏÄÉÔ ÓÐÉÓÏË ÄÏÓÔÕÐÎÙÈ ÓÉÇÎÁÌÏ×.\n" +#~ msgid "%s: SID (%s) must be numeric\n" +#~ msgstr "%s: SID (%s) ÄÏÌÖÅÎ ÂÙÔØ ÞÉÓÌÏ×ÙÍ\n" + +#~ msgid "-4 flag used but proc file %s is not readable\n" +#~ msgstr "ÕËÁÚÁÎ ÆÌÁÇ -4, ÎÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ proc-ÆÁÊÌ %s ÎÅÄÏÓÔÕÐÅÎ\n" + +#~ msgid "-6 flag used but proc file %s is not readable\n" +#~ msgstr "ÕËÁÚÁÎ ÆÌÁÇ -6, ÎÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ proc-ÆÁÊÌ %s ÎÅÄÏÓÔÕÐÅÎ\n" + +#~ msgid "kill %d" +#~ msgstr "úÁ×ÅÒÛÅÎÉÅ ÐÒÏÃÅÓÓÁ %d" + +#~ msgid "No automatic removal. Please use umount %s\n" +#~ msgstr "" +#~ "á×ÔÏÍÁÔÉÞÅÓËÏÅ ÏÔËÌÀÞÅÎÉÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ. éÓÐÏÌØÚÕÊÔÅ umount %s\n" + +#~ msgid "No automatic removal. Please use swapoff %s\n" +#~ msgstr "" +#~ "á×ÔÏÍÁÔÉÞÅÓËÏÅ ÏÔËÌÀÞÅÎÉÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ. éÓÐÏÌØÚÕÊÔÅ swapoff %s\n" + +#~ msgid "Internal error (type %d)\n" +#~ msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ (ÔÉÐ %d)\n" + +#~ msgid "kernel mount " +#~ msgstr "Kernel mount " + +#~ msgid "kernel loop " +#~ msgstr "Kernel loop " + +#~ msgid "kernel swap " +#~ msgstr "Kernel swap " + +#~ msgid "ignoring -m in name space \"%s\"\n" +#~ msgstr "-m ÂÕÄÅÔ ÉÇÎÏÒÉÒÏ×ÁÎ × ÐÒÏÓÔÒÁÎÓÔ×Å ÉͣΠ\"%s\"\n" + +#~ msgid "%s/%s: invalid specification\n" +#~ msgstr "%s/%s: ÎÅËÏÒÒÅËÔÎÙÊ ÆÏÒÍÁÔ\n" + +#~ msgid "" +#~ " -U use UTF-8 (Unicode) line drawing characters\n" +#~ " -V display version information\n" +#~ " pid start at pid, default 1 (init)\n" +#~ " user show only trees rooted at processes of that user\n" +#~ "\n" +#~ msgstr "" +#~ " -U ÉÓÐÏÌØÚÏ×ÁÔØ ËÏÄÉÒÏ×ËÕ UTF-8 (Unicode) ÄÌÑ ÒÉÓÏ×ÁÎÉÑ ÌÉÎÉÊ\n" +#~ " -V ÐÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ\n" +#~ " pid ÉÄÅÎÔÉÆÉËÁÔÏÒ ËÏÒÎÅ×ÏÇÏ ÐÒÏÃÅÓÓÁ, ÐÏ ÕÍÏÌÞÁÎÉÀ 1 (init)\n" +#~ " user ÐÏËÁÚÙ×ÁÔØ ÔÏÌØËÏ ÄÅÒÅ×ØÑ Ó ËÏÒÎÅ×ÙÍÉ ÐÒÏÃÅÓÓÁÍÉ,\n" +#~ " ÐÒÉÎÁÄÌÅÖÁÝÉÍÉ ÄÁÎÎÏÍÕ ÐÏÌØÚÏ×ÁÔÅÌÀ\n" +#~ "\n" + #~ msgid "No process references; use -v for the complete list\n" #~ msgstr "" #~ "Keine Prozess Referenzen; verwenden Sie -v fuer die komplette Liste\n" diff --git a/po/sv.po b/po/sv.po index 939758d..0f5b1af 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 22.2pre1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2006-05-04 00:08+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -132,7 +132,7 @@ msgstr "" "Copyright 1993-2005 Werner Almesberger och Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -335,6 +335,37 @@ msgstr "Kan inte msgid "Cannot find socket's device number.\n" msgstr "Kunde inte hitta uttagets enhetsnummer.\n" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (PSmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/po/vi.po b/po/vi.po index 455e877..e1fa9cd 100644 --- a/po/vi.po +++ b/po/vi.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc-22.2pre1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2006-08-09 21:28+1000\n" +"POT-Creation-Date: 2007-03-02 09:44+1100\n" "PO-Revision-Date: 2006-03-08 19:06+1030\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" @@ -137,7 +137,7 @@ msgstr "" "Bản quyền © 1993-2005 Werner Almesberger và Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:119 src/pstree.c:782 +#: src/killall.c:538 src/fuser.c:119 src/peekfd.c:61 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -340,6 +340,37 @@ msgstr "Không thể mở một ổ cắm mạng.\n" msgid "Cannot find socket's device number.\n" msgstr "Không tìm thấy số hiệu thiết bị ổ cắm.\n" +#: src/peekfd.c:49 +#, c-format +msgid "error attaching to pid %i\n" +msgstr "" + +#: src/peekfd.c:57 +#, fuzzy, c-format +msgid "peekfd (PSmisc) %s\n" +msgstr "pstree (PSmisc) %s\n" + +#: src/peekfd.c:59 +#, c-format +msgid "" +"Copyright (C) 2007 Trent Waddington\n" +"\n" +msgstr "" + +#: src/peekfd.c:69 +#, c-format +msgid "" +"Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" +" -8 output 8 bit clean streams.\n" +" -n don't display read/write from fd headers.\n" +" -c peek at any new child processes too.\n" +" -d remove duplicate read/writes from the output.\n" +" -V prints version info.\n" +" -h prints this help.\n" +"\n" +" Press CTRL-C to end output.\n" +msgstr "" + #: src/pstree.c:374 #, c-format msgid "Internal error: MAX_DEPTH not big enough.\n" diff --git a/src/Makefile.am b/src/Makefile.am index b95ee1f..138aeab 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,7 @@ AM_CFLAGS = -Wall -DLOCALEDIR=\"/usr/share/locale\" -bin_PROGRAMS = fuser killall pstree oldfuser +bin_PROGRAMS = fuser killall pstree oldfuser peekfd oldfuser_SOURCES = oldfuser.c comm.h signals.c signals.h loop.h i18n.h @@ -11,6 +11,8 @@ killall_SOURCES = killall.c comm.h signals.c signals.h i18n.h killall_LDADD = @SELINUX_LIB@ +peekfd_SOURCES = peekfd.c + pstree_SOURCES = pstree.c comm.h i18n.h pstree_LDADD = @TERMCAP_LIB@ @SELINUX_LIB@ diff --git a/src/peekfd.c b/src/peekfd.c new file mode 100644 index 0000000..e78f0e6 --- /dev/null +++ b/src/peekfd.c @@ -0,0 +1,207 @@ +/* + * peekfd.c - Intercept file descriptor read and writes + * + * Copyright (C) 2007 Trent Waddington + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "i18n.h" + +#define MAX_ATTACHED_PIDS 1024 +int num_attached_pids = 0; +pid_t attached_pids[MAX_ATTACHED_PIDS]; + +void detach(void) { + int i; + for (i = 0; i < num_attached_pids; i++) + ptrace(PTRACE_DETACH, attached_pids[i], 0, 0); +} + +void attach(pid_t pid) { + attached_pids[0] = pid; + if (ptrace(PTRACE_ATTACH, pid, 0, 0) == -1) { + fprintf(stderr, _("error attaching to pid %i\n"), pid); + return; + } + num_attached_pids++; +} + +void print_version() +{ + fprintf(stderr, _("peekfd (PSmisc) %s\n"), VERSION); + fprintf(stderr, _( + "Copyright (C) 2007 Trent Waddington\n\n")); + fprintf(stderr, _( + "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" + "This is free software, and you are welcome to redistribute it under\n" + "the terms of the GNU General Public License.\n" + "For more information about these matters, see the files named COPYING.\n")); +} + +void usage() { + fprintf(stderr, _( + "Usage: peekfd [-8] [-n] [-c] [-d] [-V] [-h] [ ..]\n" + " -8 output 8 bit clean streams.\n" + " -n don't display read/write from fd headers.\n" + " -c peek at any new child processes too.\n" + " -d remove duplicate read/writes from the output.\n" + " -V prints version info.\n" + " -h prints this help.\n" + "\n" + " Press CTRL-C to end output.\n")); +} + +int bufdiff(int pid, unsigned char *lastbuf, unsigned int addr, unsigned int len) { + int i; + for (i = 0; i < len; i++) + if (lastbuf[i] != (ptrace(PTRACE_PEEKTEXT, pid, addr + i, 0) & 0xff)) + return 1; + return 0; +} + +int main(int argc, char **argv) +{ + if (argc < 2) { + usage(); + return 1; + } + + int eight_bit_clean = 0; + int no_headers = 0; + int follow_forks = 0; + int remove_duplicates = 0; + + int opt; + while ((opt = getopt(argc, argv, "8ncdvh")) != -1) { + switch(opt) { + case '8': + eight_bit_clean = 1; + break; + case 'n': + no_headers = 1; + break; + case 'c': + follow_forks = 1; + break; + case 'd': + remove_duplicates = 1; + break; + case 'V': + print_version(); + return 1; + case 'h': + usage(); + return 1; + } + } + + int numfds = argc - optind - 1; + int *fds = malloc(sizeof(int) * numfds); + int i; + for (i = 0; i < numfds; i++) + fds[i] = atoi(argv[optind + 1 + i]); + + attach(atoi(argv[optind])); + if (num_attached_pids == 0) + return 1; + + atexit(detach); + + ptrace(PTRACE_SYSCALL, attached_pids[0], 0, 0); + + /*int count = 0;*/ + int lastfd = numfds > 0 ? fds[0] : 0; + int lastdir = 3; + unsigned char *lastbuf = NULL; + int last_buf_size=-1; + + for(;;) { + int status; + int pid = wait(&status); + if (WIFSTOPPED(status)) { + struct user_regs_struct regs; + ptrace(PTRACE_GETREGS, pid, 0, ®s); + + /*unsigned int b = ptrace(PTRACE_PEEKTEXT, pid, regs.eip, 0);*/ + + if (follow_forks && (regs.orig_eax == 2 || regs.orig_eax == 120)) { + if (regs.eax > 0) + attach(regs.eax); + } + if ((regs.orig_eax == 3 || regs.orig_eax == 4) && (regs.edx == regs.eax)) { + for (i = 0; i < numfds; i++) + if (fds[i] == regs.ebx) + break; + if (i != numfds || numfds == 0) { + if (regs.ebx != lastfd || regs.orig_eax != lastdir) { + lastfd = regs.ebx; + lastdir = regs.orig_eax; + if (!no_headers) + printf("\n%sing fd %i:\n", regs.orig_eax == 3 ? "read" : "writ", lastfd); + } + if (!remove_duplicates || lastbuf == NULL + || last_buf_size != regs.edx || + bufdiff(pid, lastbuf, regs.ecx, regs.edx)) { + + if (remove_duplicates) { + if (lastbuf) + free(lastbuf); + lastbuf = malloc(regs.edx); + last_buf_size = regs.edx; + } + + for (i = 0; i < regs.edx; i++) { + unsigned int a = ptrace(PTRACE_PEEKTEXT, pid, regs.ecx + i, 0); + if (remove_duplicates) + lastbuf[i] = a & 0xff; + + if (eight_bit_clean) + putchar(a & 0xff); + else { + if (isprint(a & 0xff) || (a & 0xff) == '\n') + printf("%c", a & 0xff); + else if ((a & 0xff) == 0x0d) + printf("\n"); + else if ((a & 0xff) == 0x7f) + printf("\b"); + else if (a & 0xff) + printf(" [%02x] ", a & 0xff); + } + } + } + fflush(stdout); + } + } + + ptrace(PTRACE_SYSCALL, pid, 0, 0); + } + } + + return 0; +}