Werner Almesberger <werner@almesberger.net>
Craig Small <csmall@small.dropbear.id.au>
+peekfd writtten by Trent Waddington <trent.waddington@gmail.com>
Changes in 22.4
===============
+2007-03-02 Craig Small
+ * Added peekfd
+
+2007-03-02 gettextize <bug-gnu-gettext@gnu.org>
+
+ * 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
-man_MANS = fuser.1 killall.1 pstree.1
+man_MANS = fuser.1 killall.1 peekfd.1 pstree.1
EXTRA_DIST = $(man_MANS)
+2007-03-02 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.16.1.
+
2004-04-30 gettextize <bug-gnu-gettext@gnu.org>
* Makefile.in.in: New file, from gettext-0.14.1.
src/killall.c
src/fuser.c
+src/peekfd.c
src/pstree.c
src/signals.c
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 <zinoviev@debian.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"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"
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] <pid> [<fd> ..]\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"
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 <guillem@debian.org>\n"
"Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
"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"
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] <pid> [<fd> ..]\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 ""
"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 <wcc@wolfgangs.com>\n"
"Language-Team: woolfy <woolfy@users.sourceforge.net>\n"
"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"
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] <pid> [<fd> ..]\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"
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 <hey_neken@mundurat.net>\n"
"Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
"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"
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] <pid> [<fd> ..]\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 ""
"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 <liw@iki.fi>\n"
"Language-Team: Finnish <fi@li.org>\n"
"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"
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] <pid> [<fd> ..]\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 ""
"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 <sorata@users.sourceforge.net>\n"
"Language-Team: French <fr@li.org>\n"
"\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"
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] <pid> [<fd> ..]\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"
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 <vmiklos@frugalware.org>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
"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"
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] <pid> [<fd> ..]\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"
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 <m.colombo@ed.ac.uk>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"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"
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] <pid> [<fd> ..]\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"
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 <gotom@debian.or.jp>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
"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"
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] <pid> [<fd> ..]\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"
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 <Trond.Endrestol@fagskolen.gjovik.no>\n"
"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
"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"
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] <pid> [<fd> ..]\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"
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 <benno@nietvergeten.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"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"
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] <pid> [<fd> ..]\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"
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 <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"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"
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] <pid> [<fd> ..]\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"
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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"\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"
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] <pid> [<fd> ..]\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"
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 <edesio+psmisc@ieee.org>\n"
"Language-Team: Portuguese <pt@li.org>\n"
"\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"
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] <pid> [<fd> ..]\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"
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 <lbuz@rolix.org>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
"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"
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] <pid> [<fd> ..]\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"
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 <evseev@altlinux.ru>\n"
"Language-Team: woolfy <woolfy@users.sourceforge.net>\n"
"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"
"\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"
" -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"
" -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"
"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"
" éÍÅÎÁ 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] <pid> [<fd> ..]\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"
" -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"
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 <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"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"
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] <pid> [<fd> ..]\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"
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 <clytie@riverland.net.au>\n"
"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
"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"
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] <pid> [<fd> ..]\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"
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
killall_LDADD = @SELINUX_LIB@
+peekfd_SOURCES = peekfd.c
+
pstree_SOURCES = pstree.c comm.h i18n.h
pstree_LDADD = @TERMCAP_LIB@ @SELINUX_LIB@
--- /dev/null
+/*
+ * peekfd.c - Intercept file descriptor read and writes
+ *
+ * Copyright (C) 2007 Trent Waddington <trent.waddington@gmail.com>
+ *
+ * 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 <config.h>
+#endif
+
+#include <unistd.h>
+#include <stdio.h>
+#include <sys/ptrace.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <linux/user.h>
+#include <stdlib.h>
+#include <getopt.h>
+#include <ctype.h>
+
+#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] <pid> [<fd> ..]\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;
+}