annotate toys/chvt.c @ 229:87390c3700c1

Add chvt from David Anders.
author Rob Landley <rob@landley.net>
date Sun, 06 Jan 2008 16:01:11 -0600
parents
children d4176f3f3835
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
229
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
1 /* vi: set sw=4 ts=4: */
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
2 /*
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
3 * chvt.c switch virtual terminals
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
4 *
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
5 * Copyright (C) 2008 David Anders <danders@amltd.com>
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
6 *
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
7 */
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
8
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
9 #include "toys.h"
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
10
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
11 #define VT_ACTIVATE 0x5606
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
12 #define VT_WAITACTIVE 0x5607
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
13
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
14 /* note get_console_fb() will need to be moved into a seperate lib section */
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
15 int get_console_fd()
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
16 {
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
17 int fd;
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
18
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
19 fd = open("/dev/console", O_RDWR);
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
20 if (fd >= 0)
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
21 return fd;
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
22
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
23 fd = open("/dev/vc/0", O_RDWR);
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
24 if (fd >= 0)
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
25 return fd;
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
26
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
27 fd = open("/dev/tty", O_RDWR);
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
28 if (fd >= 0)
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
29 return fd;
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
30
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
31 return -1;
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
32 }
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
33
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
34 void chvt_main(void)
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
35 {
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
36 int vtnum,fd;
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
37
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
38
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
39 if(!*toys.optargs)
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
40 return;
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
41
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
42 vtnum=atoi(*toys.optargs);
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
43
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
44 fd=get_console_fd();
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
45 if (fd < 0)
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
46 return;
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
47
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
48 if (ioctl(fd,VT_ACTIVATE,vtnum))
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
49 return;
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
50
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
51 if (ioctl(fd,VT_WAITACTIVE,vtnum))
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
52 return;
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
53
87390c3700c1 Add chvt from David Anders.
Rob Landley <rob@landley.net>
parents:
diff changeset
54 }