add option (-U, --no-unicode) to disable unicode at runtime

This commit is contained in:
Christian Hesse
2020-09-01 10:09:00 +02:00
parent f5b3e8d2a3
commit db5adbeae0
4 changed files with 27 additions and 15 deletions

31
htop.c
View File

@ -43,6 +43,7 @@ static void printHelpFlag() {
"-s --sort-key=COLUMN Sort by COLUMN (try --sort-key=help for a list)\n"
"-t --tree Show the tree view by default\n"
"-u --user[=USERNAME] Show only processes for a given user (or $USER)\n"
"-U --no-unicode Do not use unicode but plain ASCII\n"
"-p --pid=PID,[,PID,PID...] Show only the given PIDs\n"
"-v --version Print version info\n"
"\n"
@ -63,6 +64,7 @@ typedef struct CommandLineSettings_ {
bool useColors;
bool enableMouse;
bool treeView;
bool allowUnicode;
} CommandLineSettings;
static CommandLineSettings parseArguments(int argc, char** argv) {
@ -75,26 +77,28 @@ static CommandLineSettings parseArguments(int argc, char** argv) {
.useColors = true,
.enableMouse = true,
.treeView = false,
.allowUnicode = true,
};
static struct option long_opts[] =
{
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'v'},
{"delay", required_argument, 0, 'd'},
{"sort-key", required_argument, 0, 's'},
{"user", optional_argument, 0, 'u'},
{"no-color", no_argument, 0, 'C'},
{"no-colour",no_argument, 0, 'C'},
{"no-mouse", no_argument, 0, 'm'},
{"tree", no_argument, 0, 't'},
{"pid", required_argument, 0, 'p'},
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'v'},
{"delay", required_argument, 0, 'd'},
{"sort-key", required_argument, 0, 's'},
{"user", optional_argument, 0, 'u'},
{"no-color", no_argument, 0, 'C'},
{"no-colour", no_argument, 0, 'C'},
{"no-mouse", no_argument, 0, 'm'},
{"no-unicode", no_argument, 0, 'U'},
{"tree", no_argument, 0, 't'},
{"pid", required_argument, 0, 'p'},
{0,0,0,0}
};
int opt, opti=0;
/* Parse arguments */
while ((opt = getopt_long(argc, argv, "hvmCs:td:u::p:", long_opts, &opti))) {
while ((opt = getopt_long(argc, argv, "hvmCs:td:u:Up:", long_opts, &opti))) {
if (opt == EOF) break;
switch (opt) {
case 'h':
@ -148,6 +152,9 @@ static CommandLineSettings parseArguments(int argc, char** argv) {
case 'm':
flags.enableMouse = false;
break;
case 'U':
flags.allowUnicode = false;
break;
case 't':
flags.treeView = true;
break;
@ -226,7 +233,7 @@ int main(int argc, char** argv) {
if (flags.treeView)
settings->treeView = true;
CRT_init(settings->delay, settings->colorScheme);
CRT_init(settings->delay, settings->colorScheme, flags.allowUnicode);
MainPanel* panel = MainPanel_new();
ProcessList_setPanel(pl, (Panel*) panel);