Mercurial > hg > toybox
annotate toys/chvt.c @ 233:d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
toys/*.c. Move relevant info into comment at the top of each toys/*.c. Also
convert more of Makefile into a thin wrapper around shell scripts that actually
do the work. (Makefile is only still there for the user interface.)
author | Rob Landley <rob@landley.net> |
---|---|
date | Sat, 19 Jan 2008 17:08:39 -0600 |
parents | 87390c3700c1 |
children | 163498bf547b |
rev | line source |
---|---|
233
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
1 /* vi: set sw=4 ts=4: |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
2 * |
229 | 3 * chvt.c switch virtual terminals |
4 * | |
5 * Copyright (C) 2008 David Anders <danders@amltd.com> | |
6 * | |
233
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
7 * Not in SUSv3. |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
8 |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
9 config CHVT |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
10 bool "chvt" |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
11 default y |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
12 help |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
13 usage: chvt N |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
14 |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
15 Change to virtual terminal number N. (This only works in text mode.) |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
16 |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
17 Virtual terminals are the Linux VGA text mode displays, ordinarily |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
18 switched between via alt-F1, alt-F2, etc. Use ctrl-alt-F1 to switch |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
19 from X to a virtual terminal, and alt-F6 (or F7, or F8) to get back. |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
20 */ |
229 | 21 |
22 #include "toys.h" | |
23 | |
24 #define VT_ACTIVATE 0x5606 | |
25 #define VT_WAITACTIVE 0x5607 | |
26 | |
27 /* note get_console_fb() will need to be moved into a seperate lib section */ | |
28 int get_console_fd() | |
29 { | |
30 int fd; | |
31 | |
32 fd = open("/dev/console", O_RDWR); | |
33 if (fd >= 0) | |
34 return fd; | |
35 | |
36 fd = open("/dev/vc/0", O_RDWR); | |
37 if (fd >= 0) | |
38 return fd; | |
39 | |
40 fd = open("/dev/tty", O_RDWR); | |
41 if (fd >= 0) | |
42 return fd; | |
43 | |
44 return -1; | |
45 } | |
46 | |
47 void chvt_main(void) | |
48 { | |
49 int vtnum,fd; | |
50 | |
51 | |
52 if(!*toys.optargs) | |
53 return; | |
54 | |
55 vtnum=atoi(*toys.optargs); | |
56 | |
57 fd=get_console_fd(); | |
58 if (fd < 0) | |
59 return; | |
60 | |
61 if (ioctl(fd,VT_ACTIVATE,vtnum)) | |
62 return; | |
63 | |
64 if (ioctl(fd,VT_WAITACTIVE,vtnum)) | |
65 return; | |
66 | |
67 } |