#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
-#include <err.h>
+#include "c.h"
+#include "nls.h"
#include "proc/slab.h"
#include "proc/version.h"
static void __attribute__((__noreturn__)) usage(FILE *out)
{
- fprintf(out, "Usage: %s [options]\n\n", program_invocation_short_name);
- fprintf(out, "Options:\n");
- fprintf(out, " -d, --delay <secs> delay updates\n");
- fprintf(out, " -o, --once only display once, then exit\n");
- fprintf(out, " -s, --sort <char> specify sort criteria by character (see below)\n");
- fprintf(out, " -V, --version display version information and exit\n");
- fprintf(out, " -h, --help display this help and exit\n\n");
-
- fprintf(out, "The following are valid sort criteria:\n");
- fprintf(out, " a: sort by number of active objects\n");
- fprintf(out, " b: sort by objects per slab\n");
- fprintf(out, " c: sort by cache size\n");
- fprintf(out, " l: sort by number of slabs\n");
- fprintf(out, " v: sort by number of active slabs\n");
- fprintf(out, " n: sort by name\n");
- fprintf(out, " o: sort by number of objects (the default)\n");
- fprintf(out, " p: sort by pages per slab\n");
- fprintf(out, " s: sort by object size\n");
- fprintf(out, " u: sort by cache utilization\n\n");
+ fputs(USAGE_HEADER, out);
+ fprintf(out, " %s [options]\n", program_invocation_short_name);
+ fputs(USAGE_OPTIONS, out);
+ fprintf(out, _(" -d, --delay <secs> delay updates\n"));
+ fprintf(out, _(" -o, --once only display once, then exit\n"));
+ fprintf(out, _(" -s, --sort <char> specify sort criteria by character (see below)\n"));
+ fputs(USAGE_SEPARATOR, out);
+ fputs(USAGE_HELP, out);
+ fputs(USAGE_VERSION, out);
+
+ fprintf(out, _("\nThe following are valid sort criteria:\n"));
+ fprintf(out, _(" a: sort by number of active objects\n"));
+ fprintf(out, _(" b: sort by objects per slab\n"));
+ fprintf(out, _(" c: sort by cache size\n"));
+ fprintf(out, _(" l: sort by number of slabs\n"));
+ fprintf(out, _(" v: sort by number of active slabs\n"));
+ fprintf(out, _(" n: sort by name\n"));
+ fprintf(out, _(" o: sort by number of objects (the default)\n"));
+ fprintf(out, _(" p: sort by pages per slab\n"));
+ fprintf(out, _(" s: sort by object size\n"));
+ fprintf(out, _(" u: sort by cache utilization\n"));
+ fprintf(out, USAGE_MAN_TAIL("slabtop(1)"));
exit(out == stderr ? EXIT_FAILURE : EXIT_SUCCESS);
}
errno = 0;
delay = strtol(optarg, &end, 10);
if (errno || optarg == end || (end && *end))
- errx(EXIT_FAILURE, "illegal delay `%s'",
+ errx(EXIT_FAILURE, _("illegal delay `%s'"),
optarg);
if (delay < 0)
errx(EXIT_FAILURE,
- "delay can not have a "
- "negative value");
+ _("delay can not have a "
+ "negative value"));
break;
case 's':
sort_func = (int (*)(const struct slab_info*,
delay = 0;
break;
case 'V':
- display_version();
+ printf(PROCPS_NG_VERSION);
return EXIT_SUCCESS;
case 'h':
usage(stdout);
}
if (tcgetattr(STDIN_FILENO, &saved_tty) == -1)
- warn("tcgetattr");
+ warn(_("tcgetattr"));
old_rows = rows;
term_size(0);
}
move(0, 0);
- print_line( " Active / Total Objects (%% used) : %d / %d (%.1f%%)\n"
- " Active / Total Slabs (%% used) : %d / %d (%.1f%%)\n"
- " Active / Total Caches (%% used) : %d / %d (%.1f%%)\n"
- " Active / Total Size (%% used) : %.2fK / %.2fK (%.1f%%)\n"
- " Minimum / Average / Maximum Object : %.2fK / %.2fK / %.2fK\n\n",
- stats.nr_active_objs, stats.nr_objs, 100.0 * stats.nr_active_objs / stats.nr_objs,
- stats.nr_active_slabs, stats.nr_slabs, 100.0 * stats.nr_active_slabs / stats.nr_slabs,
- stats.nr_active_caches, stats.nr_caches, 100.0 * stats.nr_active_caches / stats.nr_caches,
- stats.active_size / 1024.0, stats.total_size / 1024.0, 100.0 * stats.active_size / stats.total_size,
- stats.min_obj_size / 1024.0, stats.avg_obj_size / 1024.0, stats.max_obj_size / 1024.0
- );
+ printw(" %-35s: %d / %d (%.1f%%)\n"
+ " %-35s: %d / %d (%.1f%%)\n"
+ " %-35s: %d / %d (%.1f%%)\n"
+ " %-35s: %.2fK / %.2fK (%.1f%%)\n"
+ " %-35s: %.2fK / %.2fK / %.2fK\n\n",
+ _("Active / Total Objects (% used)"),
+ stats.nr_active_objs, stats.nr_objs,
+ 100.0 * stats.nr_active_objs / stats.nr_objs,
+ _("Active / Total Slabs (% used)"),
+ stats.nr_active_caches, stats.nr_caches,
+ 100.0 * stats.nr_active_caches / stats.nr_caches,
+ _("Active / Total Caches (% used)"),
+ stats.nr_active_slabs, stats.nr_slabs,
+ 100.0 * stats.nr_active_slabs / stats.nr_slabs,
+ _("Active / Total Size (% used)"),
+ stats.active_size / 1024.0, stats.total_size / 1024.0,
+ 100.0 * stats.active_size / stats.total_size,
+ _("Minimum / Average / Maximum Object"),
+ stats.min_obj_size / 1024.0, stats.avg_obj_size / 1024.0,
+ stats.max_obj_size / 1024.0);
slab_list = slabsort(slab_list);
attron(A_REVERSE);
- print_line( "%6s %6s %4s %8s %6s %8s %10s %-23s\n",
- "OBJS", "ACTIVE", "USE", "OBJ SIZE", "SLABS",
- "OBJ/SLAB", "CACHE SIZE", "NAME");
+ print_line("%6s %6s %4s %8s %6s %8s %10s %-23s\n",
+ _("OBJS"), _("ACTIVE"), _("USE"), _("OBJ SIZE"),
+ _("SLABS"), _("OBJ/SLAB"), _("CACHE SIZE"),
+ _("NAME"));
attroff(A_REVERSE);
curr = slab_list;