treunite pty.c with std.c - st - [fork] customized build of st, the simple term… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 082d8bb82bc478bdd0b1470232ba52976a0c035d | |
parent 6c6b65ea6ec775cc02c25b8cf69cce32971f9fe8 | |
Author: Matthias-Christian Ott <[email protected]> | |
Date: Mon, 21 Jul 2008 10:34:02 +0200 | |
reunite pty.c with std.c | |
Diffstat: | |
D pty.c | 42 -----------------------------… | |
M std.c | 40 +++++++++++++++++++++++++++++… | |
2 files changed, 38 insertions(+), 44 deletions(-) | |
--- | |
diff --git a/pty.c b/pty.c | |
t@@ -1,42 +0,0 @@ | |
-/* See LICENSE file for copyright and license details. */ | |
-#include <sys/types.h> | |
-#include <sys/stat.h> | |
-#include <fcntl.h> | |
-#include <stdlib.h> | |
-#if !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) | |
-#include <pty.h> | |
-#endif | |
- | |
-extern int ptm, pts; | |
- | |
-void | |
-getpty(void) { | |
- char *ptsdev; | |
- | |
-#if defined(_GNU_SOURCE) | |
- ptm = getpt(); | |
-#elif _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 | |
- ptm = posix_openpt(O_RDWR); | |
-#else | |
- ptm = open("/dev/ptmx", O_RDWR); | |
- if(ptm == -1) | |
- if(openpty(&ptm, &pts, NULL, NULL, NULL) == -1) | |
- err(EXIT_FAILURE, "cannot open pty"); | |
-#endif | |
-#if defined(_XOPEN_SOURCE) | |
- if(ptm != -1) { | |
- if(grantpt(ptm) == -1) | |
- err(EXIT_FAILURE, "cannot grant access to pty"); | |
- if(unlockpt(ptm) == -1) | |
- err(EXIT_FAILURE, "cannot unlock pty"); | |
- ptsdev = ptsname(ptm); | |
- if(!ptsdev) | |
- err(EXIT_FAILURE, "slave pty name undefined"); | |
- pts = open(ptsdev, O_RDWR); | |
- if(pts == -1) | |
- err(EXIT_FAILURE, "cannot open slave pty"); | |
- } | |
- else | |
- err(EXIT_FAILURE, "cannot open pty"); | |
-#endif | |
-} | |
diff --git a/std.c b/std.c | |
t@@ -3,6 +3,10 @@ | |
#include <sys/wait.h> | |
#include <ctype.h> | |
#include <err.h> | |
+#include <fcntl.h> | |
+#if !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) | |
+#include <pty.h> | |
+#endif | |
#include <signal.h> | |
#include <stdarg.h> | |
#include <stdio.h> | |
t@@ -17,7 +21,7 @@ | |
static void buffer(char c); | |
static void cmd(const char *cmdstr, ...); | |
static int getch(); | |
-void getpty(void); | |
+static void getpty(void); | |
static void movea(int x, int y); | |
static void mover(int x, int y); | |
static void parseesc(void); | |
t@@ -41,7 +45,7 @@ typedef struct { | |
static int cols = 80, lines = 25; | |
static int cx = 0, cy = 0; | |
static int c; | |
-int ptm, pts; | |
+static int ptm, pts; | |
static _Bool bold, digit, qmark; | |
static pid_t pid; | |
static RingBuffer buf; | |
t@@ -208,6 +212,38 @@ scroll(int l) { | |
} | |
void | |
+getpty(void) { | |
+ char *ptsdev; | |
+ | |
+#if defined(_GNU_SOURCE) | |
+ ptm = getpt(); | |
+#elif _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 | |
+ ptm = posix_openpt(O_RDWR); | |
+#else | |
+ ptm = open("/dev/ptmx", O_RDWR); | |
+ if(ptm == -1) | |
+ if(openpty(&ptm, &pts, NULL, NULL, NULL) == -1) | |
+ err(EXIT_FAILURE, "cannot open pty"); | |
+#endif | |
+#if defined(_XOPEN_SOURCE) | |
+ if(ptm != -1) { | |
+ if(grantpt(ptm) == -1) | |
+ err(EXIT_FAILURE, "cannot grant access to pty"); | |
+ if(unlockpt(ptm) == -1) | |
+ err(EXIT_FAILURE, "cannot unlock pty"); | |
+ ptsdev = ptsname(ptm); | |
+ if(!ptsdev) | |
+ err(EXIT_FAILURE, "slave pty name undefined"); | |
+ pts = open(ptsdev, O_RDWR); | |
+ if(pts == -1) | |
+ err(EXIT_FAILURE, "cannot open slave pty"); | |
+ } | |
+ else | |
+ err(EXIT_FAILURE, "cannot open pty"); | |
+#endif | |
+} | |
+ | |
+void | |
shell(void) { | |
static char *shell = NULL; | |