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 <clytie@riverland.net.au>\n"
"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
#: 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
"\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"
"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"
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"
" 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"
" 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"
"\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"
"\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ở </etc/mtab>: %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) "
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"
" -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"
"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"
"\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 <Return> để đóng\n"
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;