Date: Wed, 3 Sep 2008 13:30:26 GMT From: Rui Paulo <rpaulo@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 149113 for review Message-ID: <200809031330.m83DUQwV032146@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=149113 Change 149113 by rpaulo@rpaulo_phi on 2008/09/03 13:30:20 Add the 'col' command with the same purpose as the EFI shell command with the same name: change the text mode resolution. This allows the boot loader to switch to the native LCD resolution if the system supports it. (I can change the screen resolution to 1280x800 on my MacBook). While there, add my copyright. Keep the loader version in sync with loader MBR because loader.4th on i386 fails if the version is < 1.1. Affected files ... .. //depot/projects/efi/boot/i386/efi/main.c#3 edit .. //depot/projects/efi/boot/i386/efi/version#2 edit Differences ... ==== //depot/projects/efi/boot/i386/efi/main.c#3 (text+ko) ==== @@ -1,4 +1,5 @@ /*- + * Copyright (c) 2008 Rui Paulo * Copyright (c) 2006 Marcel Moolenaar * All rights reserved. * @@ -255,3 +256,52 @@ return CMD_OK; } + + +COMMAND_SET(col, "col", "change or display text modes", command_col); + +static int +command_col(int argc, char *argv[]) +{ + unsigned int cols, rows, mode; + int i, status; + char *cp; + char rowenv[8]; + SIMPLE_TEXT_OUTPUT_INTERFACE *conout; + + conout = ST->ConOut; + + if (argc > 1) { + mode = strtol(argv[1], &cp, 0); + if (cp[0] != '\0') { + printf("Invalid mode\n"); + return (CMD_ERROR); + } + status = conout->QueryMode(conout, mode, &cols, &rows); + if (EFI_ERROR(status)) { + printf("invalid mode %d\n", mode); + return (CMD_ERROR); + } + status = conout->SetMode(conout, mode); + if (EFI_ERROR(status)) { + printf("couldn't set mode %d\n", mode); + return (CMD_ERROR); + } + sprintf(rowenv, "%d", rows); + setenv("LINES", rowenv, 1); + + return (CMD_OK); + } + + for (i = 0; ; i++) { + status = conout->QueryMode(conout, i, &cols, &rows); + if (EFI_ERROR(status)) + break; + printf("Mode %d: %d columns, %d rows\n", i, cols, rows); + } + + if (i != 0) + printf("Choose the mode with \"col <mode number>\"\n"); + + return (CMD_OK); +} ==== //depot/projects/efi/boot/i386/efi/version#2 (text+ko) ==== @@ -3,4 +3,5 @@ NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this file is important. Make sure the current version number is on line 6. +1.1: Keep in sync with i386 version. 0.1: Initial i386 version. Derived from ia64.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809031330.m83DUQwV032146>