From: Craig Small Date: Wed, 28 Dec 2005 05:18:51 +0000 (+0000) Subject: s flag works and grep fixed in makefile X-Git-Tag: v22.11~92 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=eec4cb905849090f5682a6e00f8b3618c6b85e49;p=psmisc s flag works and grep fixed in makefile --- diff --git a/ChangeLog b/ChangeLog index e648500..f59803e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12 @@ +Changes in 22.1 +=============== +2005-12-16 Craig Small + * fuser -s flag works Debian #344901 + * fix grep lines in Makefile for i386 arches Debian #344172 Changes in 21.9 =============== -2005-12-16 Craig Small +2005-12-16 Craig Small * Fixed install-exec-hook so only symlink pstree.x11 if file does not exist already. * Updated Vietnamese PO file diff --git a/configure.in b/configure.in index af61c34..2f24124 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([psmisc],[21.9cvs]) +AC_INIT([psmisc],[22.1]) AC_PREREQ(2.59) AC_CONFIG_SRCDIR([src/comm.h]) AC_CONFIG_HEADER([config.h]) diff --git a/po/vi.po b/po/vi.po index a3b56fa..2241254 100644 --- a/po/vi.po +++ b/po/vi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: psmisc 21.7-pre1\n" "Report-Msgid-Bugs-To: csmall@small.dropbear.id.au\n" -"POT-Creation-Date: 2005-10-07 17:24+1000\n" +"POT-Creation-Date: 2005-12-16 22:32+1100\n" "PO-Revision-Date: 2005-11-13 13:36+1030\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" @@ -70,8 +70,11 @@ msgstr "" #: src/killall.c:493 #, c-format -msgid "Usage: killall [-Z CONTEXT] [-u USER] [ -eIgiqrvw ] [ -SIGNAL ] NAME...\n" -msgstr "Cách sử dụng: killall [-Z NGỮ_CẢNH] [-u NGƯỜI_DÙNG] [ -eIgiqrvw ] [ -TÍN_HIỆU ] TÊN...\n" +msgid "" +"Usage: killall [-Z CONTEXT] [-u USER] [ -eIgiqrvw ] [ -SIGNAL ] NAME...\n" +msgstr "" +"Cách sử dụng: killall [-Z NGỮ_CẢNH] [-u NGƯỜI_DÙNG] [ -eIgiqrvw ] [ -" +"TÍN_HIỆU ] TÊN...\n" #: src/killall.c:496 #, c-format @@ -125,7 +128,7 @@ msgstr "" "\tchỉ nhữngt iến trình có _ngữ cảnh_ này\n" "\t(phải đi trước các đối số khác)\n" -#: src/killall.c:536 src/fuser.c:108 src/pstree.c:774 +#: src/killall.c:536 src/fuser.c:111 src/pstree.c:780 #, c-format msgid "" "Copyright (C) 1993-2005 Werner Almesberger and Craig Small\n" @@ -134,7 +137,7 @@ msgstr "" "Bản quyền © 1993-2005 Werner Almesberger và Craig Small\n" "\n" -#: src/killall.c:538 src/fuser.c:110 src/pstree.c:776 +#: src/killall.c:538 src/fuser.c:113 src/pstree.c:782 #, c-format msgid "" "PSmisc comes with ABSOLUTELY NO WARRANTY.\n" @@ -157,13 +160,13 @@ msgstr "Không tìm thấy người dùng %s\n" msgid "Maximum number of names is %d\n" msgstr "Số tốí đa tên là %d\n" -#: src/killall.c:702 src/pstree.c:704 +#: src/killall.c:702 src/pstree.c:710 #, c-format msgid "%s is empty (not mounted ?)\n" msgstr "%s trống (chưa đươc lắp ?)\n" -#: src/fuser.c:79 -#, c-format +#: src/fuser.c:80 +#, fuzzy, c-format msgid "" "Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...\n" " [ - ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...\n" @@ -171,7 +174,7 @@ msgid "" " fuser -V\n" "Show which processes use the named files, sockets, or filesystems.\n" "\n" -" -a display unused files too\n" +" -a display unused files too\n" " -c mounted FS\n" " -f silently ignored (for POSIX compatibility)\n" " -i ask before killing (ignored without -k)\n" @@ -191,25 +194,30 @@ msgid "" " udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]\n" "\n" msgstr "" -"Cách sử dụnguser [ -a | -s | -c ] [ -n SPAMIỀN_TÊN -SIGNTÍN_HIỆUkimuv ] NAME..TÊN [ - ] [ -n SPACE MIỀN_TÊNIGNAL TÍN_HIỆUuv ] NAME...\n" +"Cách sử dụnguser [ -a | -s | -c ] [ -n SPAMIỀN_TÊN -SIGNTÍN_HIỆUkimuv ] " +"NAME..TÊN [ - ] [ -n SPACE MIỀN_TÊNIGNAL TÍN_HIỆUuv ] NAME...\n" "TÊN fuser -l\n" " \t(g\t sách) fuser \n" "\tn\n" " \t(\tn) Hiện t\n" "\n" -" tiến trình nàocó dùng những tậ tin, ổ cắm hay hệ thống tập tin được nhập.h bày nhữ\n" +" tiến trình nàocó dùng những tậ tin, ổ cắm hay hệ thống tập tin được nhập." +"h bày nhữ\n" "\n" " -a\tcũng hiện các tập tin không dùng\n" " -c\thệ thống (FS) được lắp\n" "bỏ qua âm thầm (để tương thcách ch với POSIX)\n" -" -k _buộc -i\t\txin trước khi buộc kết thức (được bỏ qua khi không có tùy chọn -k)\n" +" -k _buộc -i\t\txin trước khi buộc kết thức (được bỏ qua khi " +"không có tùy chọn -k)\n" "ến trình truy cập tập tin ấy\n" -" -i đ đangang xianh sách_ tđóghi danh sách các tên tín hiện còn rảnh\n" +" -i đ đangang xianh sách_ tđóghi danh sách các tên tín hiện còn " +"rảnh\n" "các n (FS) được còn rảnhiện các tiến trình đang dùng hệ thống được nhập\n" "ệ thống MIỀN_TÊN\ttìm kiếm trong miền tên này (tập tin, udp hay tcp)\n" "s\tthao tácâm thầmL (không xuất chi tiết)\n" "L\n" -" TÍN_HIỆUhông xut chi ti này) trìnTÍN_HIỆU của cá _người xu\thiện các ID của _người dùng_ (UID)\n" +" TÍN_HIỆUhông xut chi ti này) trìnTÍN_HIỆU của cá _người xu\thiện các ID " +"của _người dùng_ (UID)\n" "n _p (UID)hiên bản_\n" " -4 tìm -V\thiện thông tin _phiên bản_\n" " ổ cắm loại IP6\n" @@ -219,75 +227,82 @@ msgstr "" "\n" "\t(cổng địa phương, máy từ xa, cổng từ xa)\n" -#: src/fuser.c:106 +#: src/fuser.c:109 #, c-format msgid "fuser (PSmisc) %s\n" msgstr "fuser (PSmisc) %s\n" -#: src/fuser.c:133 +#: src/fuser.c:136 #, c-format msgid "Cannot open /proc directory: %s\n" msgstr "Không thể mở thư mục « /proc »: %s\n" -#: src/fuser.c:267 +#: src/fuser.c:272 #, c-format msgid "Cannot allocate memory for matched proc: %s\n" msgstr "Không thể cấp phát bộ nhớ cho tiến trình được khớp: %s\n" -#: src/fuser.c:300 +#: src/fuser.c:305 #, c-format msgid "Cannot stat mount point %s: %s\n" msgstr "Không thể lấy các thông tin về điểm lắp %s: %s\n" -#: src/fuser.c:315 src/fuser.c:332 +#: src/fuser.c:322 src/fuser.c:354 #, c-format msgid "Cannot stat %s: %s\n" msgstr "Không thể lấy các thông tin về %s: %s\n" -#: src/fuser.c:421 +#: src/fuser.c:453 #, c-format msgid "Cannot resolve local port %s: %s\n" msgstr "Không tìm thấy tên cổng địa phương %s: %s\n" -#: src/fuser.c:435 -#, c-format -msgid "Uknown local port AF %d\n" +#: src/fuser.c:469 +#, fuzzy, c-format +msgid "Unknown local port AF %d\n" msgstr "Không biết cổng địa phương AF %d\n" -#: src/fuser.c:484 src/fuser.c:534 -#, c-format -msgid "Cannot open protocol file: %s" +#: src/fuser.c:522 +#, fuzzy, c-format +msgid "Cannot open protocol file \"%s\": %s" msgstr "Không thể mở tập tin giao thức: %s" -#: src/fuser.c:657 +#: src/fuser.c:574 +#, fuzzy, c-format +msgid "Cannot open protocol file \"%s\": %s\n" +msgstr "Không thể mở tập tin giao thức: %s" + +#: src/fuser.c:694 msgid "Namespace option requires an argument." msgstr "Tùy chọn miền tên cần đến một đối số." -#: src/fuser.c:666 +#: src/fuser.c:703 msgid "Invalid namespace name" msgstr "Tên miền tên không hợp lệ" -#: src/fuser.c:718 +#: src/fuser.c:755 msgid "You can only use files with mountpoint option" msgstr "Bạn có thể sử dụng chỉ tập tin với tùy chọn điểm lắp" -#: src/fuser.c:738 +#: src/fuser.c:784 msgid "No process specification given" msgstr "Chưa nhập đặc tả tiến trình" -#: src/fuser.c:743 +#: src/fuser.c:789 msgid "You cannot use the mounted and mountpoint flags together" -msgstr "Không cho phép bạn sử dụng cả hai cờ « được lắp » và « điểm lắp » với nhau" +msgstr "" +"Không cho phép bạn sử dụng cả hai cờ « được lắp » và « điểm lắp » với nhau" -#: src/fuser.c:750 +#: src/fuser.c:796 msgid "all option cannot be used with silent option." msgstr "không cho phép bạn sử dụng chọn « tất cả » với tùy chọn « âm thầm »." -#: src/fuser.c:753 -msgid "You cannot search for only IPv4 and only IPv6 sockets a the same time" +#: src/fuser.c:800 +#, fuzzy +msgid "You cannot search for only IPv4 and only IPv6 sockets at the same time" msgstr "Không cho phép bạn tìm kiếm chỉ ổ cắm loại IPv4 và chỉ ổ cắm đồng thời" -#: src/fuser.c:783 +#: src/fuser.c:839 #, c-format msgid "" "\n" @@ -296,21 +311,26 @@ msgstr "" "\n" "%*s NGƯỜI_DÙNG LỆNH TRUY CẬP PID\n" -#: src/fuser.c:807 src/fuser.c:832 +#: src/fuser.c:864 src/fuser.c:889 msgid "(unknown)" msgstr "(không biết)" -#: src/fuser.c:892 +#: src/fuser.c:950 #, c-format msgid "Cannot stat file %s: %s\n" msgstr "Không thể lấy các thông tin về tập tin %s: %s\n" -#: src/fuser.c:983 +#: src/fuser.c:1044 +#, fuzzy, c-format +msgid "Cannot open /proc/net/unix: %s\n" +msgstr "Không thể mở thư mục « /proc »: %s\n" + +#: src/fuser.c:1079 #, c-format msgid "Cannot open /etc/mtab: %s\n" msgstr "Không thể mở : %s\n" -#: src/fuser.c:1044 +#: src/fuser.c:1140 #, c-format msgid "Kill process %d ? (y/N) " msgstr "Có buốc kết thức tiến trình %d không? (y/N) (có/không) " @@ -320,8 +340,8 @@ msgstr "Có buốc kết thức tiến trình %d không? (y/N) (có/không) " msgid "MAX_DEPTH not big enough.\n" msgstr "MAX_DEPTH (độ sâu tối đa) chưa đủ.\n" -#: src/pstree.c:744 -#, c-format +#: 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" @@ -338,8 +358,11 @@ msgid "" " -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 "" -"Cách sử dụng: pstree [ -a ] [ -c ] [ -h | -H PID ] [ -l ] [ -n ] [ -p ] [ -u ]\n" +"Cách sử dụng: pstree [ -a ] [ -c ] [ -h | -H PID ] [ -l ] [ -n ] [ -p ] [ -" +"u ]\n" " [ -A | -G | -U ] [ PID | NGƯỜI_DÙNG]\n" " pstree -V\n" "\t(phiên bản)\n" @@ -354,18 +377,17 @@ msgstr "" "G sử dụng ký tự các ẽ đưcác ng ờVT100\n" " -l không chặt cụt _đường dài_\n" " -n sắp xếp dữ liệu xuất bằng PID\n" -" -p hiển thị cện cc PệI; ngụ ý đtùy chọn n -u hiển ện các việc chuyển tiếpc chuyển tiếp _uid_\n" +" -p hiển thị cện cc PệI; ngụ ý đtùy chọn n -u hiển ện các việc " +"chuyển tiếpc chuyển tiếp _uid_\n" -#: src/pstree.c:760 +#: src/pstree.c:768 #, c-format msgid " -Z show SELinux security contexts\n" msgstr " -Z hiện các ngữ cảnh bảo mật loại SELinux\n" -#: src/pstree.c:763 -#, c-format +#: src/pstree.c:771 +#, fuzzy, c-format msgid "" -" -U use UTF-8 (Unicode) line drawing characters\n" -" -V display version information\n" " PID start at this PID; default is 1 (init)\n" " USER show only trees rooted at processes of this user\n" "\n" @@ -377,32 +399,32 @@ msgstr "" "\tcó rễtại tiến trình của người dùng này\n" " cây có rễ tạitiến trình của người dùng ấnày\n" -#: src/pstree.c:772 +#: src/pstree.c:778 #, c-format msgid "pstree (PSmisc) %s\n" msgstr "pstree (PSmisc) %s\n" -#: src/pstree.c:865 +#: src/pstree.c:871 #, c-format msgid "TERM is not set\n" msgstr "Chưa lặp TERM\n" -#: src/pstree.c:870 +#: src/pstree.c:876 #, c-format msgid "Can't get terminal capabilities\n" msgstr "Không thể gọi khả năng thiết bị cuối\n" -#: src/pstree.c:914 +#: src/pstree.c:920 #, c-format msgid "No such user name: %s\n" msgstr "Không có tên người dùng như vậy: %s\n" -#: src/pstree.c:930 +#: src/pstree.c:936 #, c-format msgid "No processes found.\n" msgstr "Không tìm thấy tiến trình.\n" -#: src/pstree.c:935 +#: src/pstree.c:941 #, c-format msgid "Press return to close\n" msgstr "Hãy bấm phím để đóng\n" diff --git a/src/Makefile.am b/src/Makefile.am index 32ddfa7..ddccec9 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -24,8 +24,7 @@ CLEANFILES = signames.h signames.h: signames.c Makefile @CPP@ -dM $< |\ tr -s '\t ' ' ' | sort -n -k 3 | sed \ - 's:#define SIG\([A-Z]\+[0-9]*\) \([0-9]\+\) *\(\|/\*.*\)$$:{\ -\2,"\1" },:p;d' | \ + 's:#define SIG\([A-Z]\+[0-9]*\) \([0-9]\+\) *\(\|/\*.*\)$$:{\ \2,"\1" },:p;d' | \ grep -v '[0-9][0-9][0-9]' >signames.h || \ { rm -f signames.h; exit 1; } grep '^{ 1,"HUP" },$$' signames.h >/dev/null || \ diff --git a/src/fuser.c b/src/fuser.c index d88a436..6e14793 100644 --- a/src/fuser.c +++ b/src/fuser.c @@ -833,76 +833,78 @@ static int print_matches(struct names *names_head, const opt_type opts, const in struct passwd *pwent = NULL; int have_match = 0; - for (nptr = names_head; nptr != NULL ; nptr = nptr->next) { - if (nptr->matched_procs != NULL || opts & OPT_ALLFILES) { - if (head == 0 && opts & OPT_VERBOSE) { - fprintf(stderr, _("\n%*s USER PID ACCESS COMMAND\n"), - NAME_FIELD, ""); - head = 1; - } - - fprintf(stderr, "%s:", nptr->filename); - len = strlen(nptr->filename) + 1; - } - - first = 1; - for (pptr = nptr->matched_procs; pptr != NULL ; pptr = pptr->next) { - have_match = 1; - if (opts & (OPT_VERBOSE|OPT_USER)) { - if (pwent == NULL || pwent->pw_uid != pptr->uid) - pwent = getpwuid(pptr->uid); - } - if (len > NAME_FIELD && (opts & OPT_VERBOSE)) { - putc('\n', stderr); - len=0; - } - if ((opts & OPT_VERBOSE) || first) - while (len++ < NAME_FIELD) - putc(' ', stderr); - if (opts & OPT_VERBOSE) { - if (pwent == NULL) - fprintf(stderr, " %-8s ", _("(unknown)")); - else - fprintf(stderr, " %-8s ", pwent->pw_name); - } - printf("%6d", pptr->pid); - fflush(stdout); - if (opts & OPT_VERBOSE) { - fprintf(stderr, " %c%c%c%c%c ", - pptr->access & ACCESS_FILE ? (pptr->access & ACCESS_FILEWR ? 'F' : 'f' ) : '.', - pptr->access & ACCESS_ROOT ? 'r' : '.', - pptr->access & ACCESS_CWD ? 'c' : '.', - pptr->access & ACCESS_EXE ? 'e' : '.', - (pptr->access & ACCESS_MMAP) && !(pptr->access & ACCESS_EXE) ? 'm' : '.'); - } else { - if (pptr->access & ACCESS_ROOT) - putc('r', stderr); - if (pptr->access & ACCESS_CWD) - putc('c', stderr); - if (pptr->access & ACCESS_EXE) - putc('e', stderr); - else if (pptr->access & ACCESS_MMAP) - putc('m', stderr); - } - if (opts & OPT_USER) { - if (pwent == NULL) - fprintf(stderr, " %-8s ", _("(unknown)")); - else - fprintf(stderr, "(%s)", pwent->pw_name); - } - if (opts & OPT_VERBOSE) { - if (pptr->command == NULL) - fprintf(stderr, "???\n"); - else - fprintf(stderr, "%s\n", pptr->command); - } - len = 0; - first = 0; - } - if (nptr->matched_procs != NULL || opts & OPT_ALLFILES) - putc('\n', stderr); + for (nptr = names_head; nptr != NULL ; nptr = nptr->next) { + if (! (opts & OPT_SILENT)) { /* We're not silent */ + if (nptr->matched_procs != NULL || opts & OPT_ALLFILES) { + if (head == 0 && opts & OPT_VERBOSE) { + fprintf(stderr, _("\n%*s USER PID ACCESS COMMAND\n"), + NAME_FIELD, ""); + head = 1; + } + + fprintf(stderr, "%s:", nptr->filename); + len = strlen(nptr->filename) + 1; + } + + first = 1; + for (pptr = nptr->matched_procs; pptr != NULL ; pptr = pptr->next) { + have_match = 1; + if (opts & (OPT_VERBOSE|OPT_USER)) { + if (pwent == NULL || pwent->pw_uid != pptr->uid) + pwent = getpwuid(pptr->uid); + } + if (len > NAME_FIELD && (opts & OPT_VERBOSE)) { + putc('\n', stderr); + len=0; + } + if ((opts & OPT_VERBOSE) || first) + while (len++ < NAME_FIELD) + putc(' ', stderr); + if (opts & OPT_VERBOSE) { + if (pwent == NULL) + fprintf(stderr, " %-8s ", _("(unknown)")); + else + fprintf(stderr, " %-8s ", pwent->pw_name); + } + printf("%6d", pptr->pid); + fflush(stdout); + if (opts & OPT_VERBOSE) { + fprintf(stderr, " %c%c%c%c%c ", + pptr->access & ACCESS_FILE ? (pptr->access & ACCESS_FILEWR ? 'F' : 'f' ) : '.', + pptr->access & ACCESS_ROOT ? 'r' : '.', + pptr->access & ACCESS_CWD ? 'c' : '.', + pptr->access & ACCESS_EXE ? 'e' : '.', + (pptr->access & ACCESS_MMAP) && !(pptr->access & ACCESS_EXE) ? 'm' : '.'); + } else { + if (pptr->access & ACCESS_ROOT) + putc('r', stderr); + if (pptr->access & ACCESS_CWD) + putc('c', stderr); + if (pptr->access & ACCESS_EXE) + putc('e', stderr); + else if (pptr->access & ACCESS_MMAP) + putc('m', stderr); + } + if (opts & OPT_USER) { + if (pwent == NULL) + fprintf(stderr, " %-8s ", _("(unknown)")); + else + fprintf(stderr, "(%s)", pwent->pw_name); + } + if (opts & OPT_VERBOSE) { + if (pptr->command == NULL) + fprintf(stderr, "???\n"); + else + fprintf(stderr, "%s\n", pptr->command); + } + len = 0; + first = 0; + } + if (nptr->matched_procs != NULL || opts & OPT_ALLFILES) + putc('\n', stderr); + } /* be silent */ if (opts & OPT_KILL) - kill_matched_proc(nptr->matched_procs, opts, sig_number); + kill_matched_proc(nptr->matched_procs, opts, sig_number); } /* next name */ return !have_match;