*: fix fallout from -Wunused-parameter
[oweals/busybox.git] / libbb / getpty.c
1 /* vi: set sw=4 ts=4: */
2 /*
3  * Mini getpty implementation for busybox
4  * Bjorn Wesen, Axis Communications AB (bjornw@axis.com)
5  *
6  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
7  */
8
9 #include "libbb.h"
10
11 #define DEBUG 0
12
13 #define DEBUG 0
14
15 int getpty(char *line)
16 {
17         int p;
18 #if ENABLE_FEATURE_DEVPTS
19         p = open("/dev/ptmx", O_RDWR);
20         if (p > 0) {
21                 const char *name;
22                 grantpt(p);
23                 unlockpt(p);
24                 name = ptsname(p);
25                 if (!name) {
26                         bb_perror_msg("ptsname error (is /dev/pts mounted?)");
27                         return -1;
28                 }
29                 safe_strncpy(line, name, GETPTY_BUFSIZE);
30                 return p;
31         }
32 #else
33         struct stat stb;
34         int i;
35         int j;
36
37         strcpy(line, "/dev/ptyXX");
38
39         for (i = 0; i < 16; i++) {
40                 line[8] = "pqrstuvwxyzabcde"[i];
41                 line[9] = '0';
42                 if (stat(line, &stb) < 0) {
43                         continue;
44                 }
45                 for (j = 0; j < 16; j++) {
46                         line[9] = j < 10 ? j + '0' : j - 10 + 'a';
47                         if (DEBUG)
48                                 fprintf(stderr, "Trying to open device: %s\n", line);
49                         p = open(line, O_RDWR | O_NOCTTY);
50                         if (p >= 0) {
51                                 line[5] = 't';
52                                 return p;
53                         }
54                 }
55         }
56 #endif /* FEATURE_DEVPTS */
57         return -1;
58 }
59
60