From 8e20db058dd2c1bdb376961e7a0c18343ebd1f3b Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 16 Oct 2002 16:00:38 +0000 Subject: [PATCH] A few more command-line options. git-svn-id: svn://svn.tartarus.org/sgt/putty@2086 cda61777-01e9-0310-a592-d414129be87e --- unix/pterm.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 70 insertions(+), 6 deletions(-) diff --git a/unix/pterm.c b/unix/pterm.c index 1262782a..5af9ba1a 100644 --- a/unix/pterm.c +++ b/unix/pterm.c @@ -11,6 +11,8 @@ #include #include #include +#include +#include #include #include @@ -1602,10 +1604,16 @@ int do_cmdline(int argc, char **argv, int do_everything) if (!do_everything) continue; \ } while (0) + /* + * TODO: + * + * finish -geometry + */ + char *val; while (--argc > 0) { char *p = *++argv; - if (!strcmp(p, "-fn")) { + if (!strcmp(p, "-fn") || !strcmp(p, "-font")) { EXPECTS_ARG; SECOND_PASS_ONLY; strncpy(cfg.font, val, sizeof(cfg.font)); @@ -1617,6 +1625,54 @@ int do_cmdline(int argc, char **argv, int do_everything) strncpy(cfg.boldfont, val, sizeof(cfg.boldfont)); cfg.boldfont[sizeof(cfg.boldfont)-1] = '\0'; + } else if (!strcmp(p, "-geometry")) { + int flags, x, y, w, h; + EXPECTS_ARG; + SECOND_PASS_ONLY; + + flags = XParseGeometry(val, &x, &y, &w, &h); + if (flags & WidthValue) + cfg.width = w; + if (flags & HeightValue) + cfg.height = h; + + /* + * Apparently setting the initial window position is + * difficult in GTK 1.2. Not entirely sure why this + * should be. 2.0 has gtk_window_parse_geometry(), + * which would help... For the moment, though, I can't + * be bothered with this. + */ + + } else if (!strcmp(p, "-sl")) { + EXPECTS_ARG; + SECOND_PASS_ONLY; + cfg.savelines = atoi(val); + + } else if (!strcmp(p, "-fg") || !strcmp(p, "-bg") || + !strcmp(p, "-bfg") || !strcmp(p, "-bbg") || + !strcmp(p, "-cfg") || !strcmp(p, "-cbg")) { + GdkColor col; + + EXPECTS_ARG; + SECOND_PASS_ONLY; + if (!gdk_color_parse(val, &col)) { + err = 1; + fprintf(stderr, "pterm: unable to parse colour \"%s\"\n", val); + } else { + int index; + index = (!strcmp(p, "-fg") ? 0 : + !strcmp(p, "-bg") ? 2 : + !strcmp(p, "-bfg") ? 1 : + !strcmp(p, "-bbg") ? 3 : + !strcmp(p, "-cfg") ? 4 : + !strcmp(p, "-cbg") ? 5 : -1); + assert(index != -1); + cfg.colours[index][0] = col.red / 256; + cfg.colours[index][1] = col.green / 256; + cfg.colours[index][2] = col.blue / 256; + } + } else if (!strcmp(p, "-e")) { /* This option swallows all further arguments. */ if (!do_everything) @@ -1646,23 +1702,31 @@ int do_cmdline(int argc, char **argv, int do_everything) cfg.logfilename[sizeof(cfg.logfilename)-1] = '\0'; cfg.logtype = LGTYP_DEBUG; - } else if (!strcmp(p, "-hide")) { + } else if (!strcmp(p, "-ut-") || !strcmp(p, "+ut")) { SECOND_PASS_ONLY; - cfg.hide_mouseptr = 1; + cfg.stamp_utmp = 0; - } else if (!strcmp(p, "-ut-")) { + } else if (!strcmp(p, "-ut")) { SECOND_PASS_ONLY; cfg.stamp_utmp = 0; - } else if (!strcmp(p, "-ls-")) { + } else if (!strcmp(p, "-ls-") || !strcmp(p, "+ls")) { SECOND_PASS_ONLY; cfg.login_shell = 0; + } else if (!strcmp(p, "-ls")) { + SECOND_PASS_ONLY; + cfg.login_shell = 1; + } else if (!strcmp(p, "-nethack")) { SECOND_PASS_ONLY; cfg.nethack_keypad = 1; - } else if (!strcmp(p, "-sb-")) { + } else if (!strcmp(p, "-sb-") || !strcmp(p, "+sb")) { + SECOND_PASS_ONLY; + cfg.scrollbar = 0; + + } else if (!strcmp(p, "-sb")) { SECOND_PASS_ONLY; cfg.scrollbar = 0; -- 2.11.0