Mercurial > hg > toybox
annotate toys/chvt.c @ 234:163498bf547b
Move NEWTOY() list from end of toylist.h to generated/newtoys.h.
author | Rob Landley <rob@landley.net> |
---|---|
date | Sat, 19 Jan 2008 17:43:27 -0600 |
parents | d4176f3f3835 |
children | e6273440c9c0 |
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 |
234
163498bf547b
Move NEWTOY() list from end of toylist.h to generated/newtoys.h.
Rob Landley <rob@landley.net>
parents:
233
diff
changeset
|
9 USE_CHVT(NEWTOY(chvt, "<1", TOYFLAG_USR|TOYFLAG_SBIN)) |
163498bf547b
Move NEWTOY() list from end of toylist.h to generated/newtoys.h.
Rob Landley <rob@landley.net>
parents:
233
diff
changeset
|
10 |
233
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
11 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
|
12 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
|
13 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
|
14 help |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
15 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
|
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 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
|
18 |
d4176f3f3835
Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
229
diff
changeset
|
19 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
|
20 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
|
21 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
|
22 */ |
229 | 23 |
24 #include "toys.h" | |
25 | |
26 #define VT_ACTIVATE 0x5606 | |
27 #define VT_WAITACTIVE 0x5607 | |
28 | |
29 /* note get_console_fb() will need to be moved into a seperate lib section */ | |
30 int get_console_fd() | |
31 { | |
32 int fd; | |
33 | |
34 fd = open("/dev/console", O_RDWR); | |
35 if (fd >= 0) | |
36 return fd; | |
37 | |
38 fd = open("/dev/vc/0", O_RDWR); | |
39 if (fd >= 0) | |
40 return fd; | |
41 | |
42 fd = open("/dev/tty", O_RDWR); | |
43 if (fd >= 0) | |
44 return fd; | |
45 | |
46 return -1; | |
47 } | |
48 | |
49 void chvt_main(void) | |
50 { | |
51 int vtnum,fd; | |
52 | |
53 | |
54 if(!*toys.optargs) | |
55 return; | |
56 | |
57 vtnum=atoi(*toys.optargs); | |
58 | |
59 fd=get_console_fd(); | |
60 if (fd < 0) | |
61 return; | |
62 | |
63 if (ioctl(fd,VT_ACTIVATE,vtnum)) | |
64 return; | |
65 | |
66 if (ioctl(fd,VT_WAITACTIVE,vtnum)) | |
67 return; | |
68 | |
69 } |