Linux console tools development discussion
 help / color / mirror / Atom feed
From: Michael Schutte <michi@uiae.at>
To: kbd@lists.altlinux.org
Subject: [kbd] New vt_mode tool for kbd?
Date: Mon, 21 Mar 2011 22:42:36 +0100
Message-ID: <20110321214236.GA13370@graeme> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 858 bytes --]

Hi Alexey,

The console-setup package in Debian needs a way to check for the
text/graphics mode of the active VT (from a shell script).  This can be
done with “setfont -v -o /dev/null”, for example, but that isn’t very
elegant.  Julien Cristau has proposed a small utility (which I’m calling
“vt_mode” for now) to report this information in a canonical fashion.

I’ve adapted it to kbd; see attachment.  Do you think this code is
suitable for inclusion?  If so, I am going to integrate it into the
build system and write a short man page for it, so I can send you a
proper patch.  I’d like to hear your opinion!

All the best,
-- 
Michael Schutte                   | michi@{uiae.at,debian.org}
Innsbruck, Austria                | happily accepting encrypted mail
OpenPGP: 0x16fb 517b a866 c3f6 8f11 1485 f3e4 122f 1D8C 261A

[-- Attachment #1.2: vt_mode.c --]
[-- Type: text/x-csrc, Size: 1902 bytes --]

/*
 * vt_mode: report VT mode (text or graphics)
 *
 * Contributed by Julien Cristau <jcristau@debian.org> in
 *   http://bugs.debian.org/618573;
 * adapted to kbd by Michael Schutte <michi@debian.org>.
 */

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
#include <getopt.h>
#include "getfd.h"
#include "nls.h"
#include "version.h"

static void attr_noreturn
usage(int code) {
        fprintf(stderr, _("Usage: vt_mode [-C DEVICE]\n"));
        exit(code);
}

int
main(int argc, char *argv[]) {
        int fd, rc, mode, c;
        char *console = NULL;

        set_progname(argv[0]);
#ifndef __klibc__
        setlocale(LC_ALL, "");
        bindtextdomain(PACKAGE_NAME, LOCALEDIR);
        textdomain(PACKAGE_NAME);
#endif

        while ((c = getopt(argc, argv, "C:hV")) != EOF) {
                switch (c) {
                case 'C':
                        if (optarg == NULL || optarg[0] == '\0')
                                usage(1);
                        console = optarg;
                        break;
                case 'h':
                        usage(0);
                        break;
                case 'V':
                        print_version_and_exit();
                        break;
                default:
                        usage(1);
                }
        }

        fd = getfd(console);

        rc = ioctl(fd, KDGETMODE, &mode);
        if (rc < 0) {
                fprintf(stderr, _("%s: Error reading VT mode.\n"), progname);
                return 1;
        }

        switch (mode) {
        case KD_TEXT:
                printf("text\n");
                break;
        case KD_GRAPHICS:
                printf("graphics\n");
                break;
        default:
                printf("other (%d)\n", mode);
                break;
        }

        return 0;
}

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 490 bytes --]

             reply	other threads:[~2011-03-21 21:42 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-21 21:42 Michael Schutte [this message]
2011-03-21 22:13 ` Dmitry V. Levin
2011-03-21 22:25   ` Michael Schutte
2011-03-25 13:20 ` Alexey Gladkov
2011-03-26 17:33   ` Michael Schutte
2011-03-26 22:33   ` Dmitry V. Levin
2011-03-27  9:33     ` Alexey Gladkov
2011-03-28 10:55       ` Alexey Gladkov
2011-03-28 11:19       ` Dmitry V. Levin
2011-03-28 11:26         ` Alexey Gladkov
2011-03-28 21:07         ` Alexey Gladkov
2011-03-29 21:51           ` Dmitry V. Levin
2011-03-29 22:27             ` Alexey Gladkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110321214236.GA13370@graeme \
    --to=michi@uiae.at \
    --cc=kbd@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux console tools development discussion

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/kbd/0 kbd/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 kbd kbd/ http://lore.altlinux.org/kbd \
		kbd@lists.altlinux.org kbd@lists.altlinux.ru kbd@lists.altlinux.com
	public-inbox-index kbd

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.kbd


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git