tMove opt_* into same file as main()/run() - st - [fork] customized build of st… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 69e32a61df15787c410a48eaa10a89240c36257d | |
parent ed132e11271d18a5d8aa163096bc6192c694bc47 | |
Author: Devin J. Pohly <[email protected]> | |
Date: Thu, 12 Oct 2017 22:25:49 -0500 | |
Move opt_* into same file as main()/run() | |
This commit is purely about reducing externs and LOC. If the main and | |
run functions ever move elsewhere (which will probably make sense | |
eventually), these should come along with them. | |
Signed-off-by: Devin J. Pohly <[email protected]> | |
Diffstat: | |
M st.c | 50 +++++++++++++----------------… | |
M st.h | 11 ++--------- | |
M x.c | 12 +++++++++++- | |
3 files changed, 33 insertions(+), 40 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -48,7 +48,6 @@ | |
/* macros */ | |
#define NUMMAXLEN(x) ((int)(sizeof(x) * 2.56 + 0.5) + 1) | |
-#define DEFAULT(a, b) (a) = (a) ? (a) : (b) | |
#define ISCONTROLC0(c) (BETWEEN(c, 0, 0x1f) || (c) == '\177') | |
#define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f)) | |
#define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c)) | |
t@@ -124,8 +123,8 @@ static void sendbreak(const Arg *); | |
/* config.h for applying patches and the configuration. */ | |
#include "config.h" | |
-static void execsh(void); | |
-static void stty(void); | |
+static void execsh(char **); | |
+static void stty(char **); | |
static void sigchld(int); | |
static void csidump(void); | |
t@@ -189,14 +188,6 @@ Term term; | |
Selection sel; | |
int cmdfd; | |
pid_t pid; | |
-char **opt_cmd = NULL; | |
-char *opt_class = NULL; | |
-char *opt_embed = NULL; | |
-char *opt_font = NULL; | |
-char *opt_io = NULL; | |
-char *opt_line = NULL; | |
-char *opt_name = NULL; | |
-char *opt_title = NULL; | |
int oldbutton = 3; /* button event on startup: 3 = release */ | |
static CSIEscape csiescseq; | |
t@@ -634,9 +625,9 @@ die(const char *errstr, ...) | |
} | |
void | |
-execsh(void) | |
+execsh(char **args) | |
{ | |
- char **args, *sh, *prog; | |
+ char *sh, *prog; | |
const struct passwd *pw; | |
errno = 0; | |
t@@ -650,13 +641,13 @@ execsh(void) | |
if ((sh = getenv("SHELL")) == NULL) | |
sh = (pw->pw_shell[0]) ? pw->pw_shell : shell; | |
- if (opt_cmd) | |
- prog = opt_cmd[0]; | |
+ if (args) | |
+ prog = args[0]; | |
else if (utmp) | |
prog = utmp; | |
else | |
prog = sh; | |
- args = (opt_cmd) ? opt_cmd : (char *[]) {prog, NULL}; | |
+ DEFAULT(args, ((char *[]) {prog, NULL})); | |
unsetenv("COLUMNS"); | |
unsetenv("LINES"); | |
t@@ -697,7 +688,7 @@ sigchld(int a) | |
void | |
-stty(void) | |
+stty(char **args) | |
{ | |
char cmd[_POSIX_ARG_MAX], **p, *q, *s; | |
size_t n, siz; | |
t@@ -707,7 +698,7 @@ stty(void) | |
memcpy(cmd, stty_args, n); | |
q = cmd + n; | |
siz = sizeof(cmd) - n; | |
- for (p = opt_cmd; p && (s = *p); ++p) { | |
+ for (p = args; p && (s = *p); ++p) { | |
if ((n = strlen(s)) > siz-1) | |
die("stty parameter length too long\n"); | |
*q++ = ' '; | |
t@@ -721,26 +712,26 @@ stty(void) | |
} | |
void | |
-ttynew(void) | |
+ttynew(char *line, char *out, char **args) | |
{ | |
int m, s; | |
struct winsize w = {term.row, term.col, 0, 0}; | |
- if (opt_io) { | |
+ if (out) { | |
term.mode |= MODE_PRINT; | |
- iofd = (!strcmp(opt_io, "-")) ? | |
- 1 : open(opt_io, O_WRONLY | O_CREAT, 0666); | |
+ iofd = (!strcmp(out, "-")) ? | |
+ 1 : open(out, O_WRONLY | O_CREAT, 0666); | |
if (iofd < 0) { | |
fprintf(stderr, "Error opening %s:%s\n", | |
- opt_io, strerror(errno)); | |
+ out, strerror(errno)); | |
} | |
} | |
- if (opt_line) { | |
- if ((cmdfd = open(opt_line, O_RDWR)) < 0) | |
+ if (line) { | |
+ if ((cmdfd = open(line, O_RDWR)) < 0) | |
die("open line failed: %s\n", strerror(errno)); | |
dup2(cmdfd, 0); | |
- stty(); | |
+ stty(args); | |
return; | |
} | |
t@@ -762,7 +753,7 @@ ttynew(void) | |
die("ioctl TIOCSCTTY failed: %s\n", strerror(errno)); | |
close(s); | |
close(m); | |
- execsh(); | |
+ execsh(args); | |
break; | |
default: | |
close(s); | |
t@@ -1942,8 +1933,7 @@ void | |
tprinter(char *s, size_t len) | |
{ | |
if (iofd != -1 && xwrite(iofd, s, len) < 0) { | |
- fprintf(stderr, "Error writing in %s:%s\n", | |
- opt_io, strerror(errno)); | |
+ perror("Error writing to output file"); | |
close(iofd); | |
iofd = -1; | |
} | |
t@@ -2532,7 +2522,7 @@ tresize(int col, int row) | |
void | |
resettitle(void) | |
{ | |
- xsettitle(opt_title ? opt_title : "st"); | |
+ xsettitle(NULL); | |
} | |
void | |
diff --git a/st.h b/st.h | |
t@@ -9,6 +9,7 @@ | |
#define LEN(a) (sizeof(a) / sizeof(a)[0]) | |
#define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b)) | |
#define DIVCEIL(n, d) (((n) + ((d) - 1)) / (d)) | |
+#define DEFAULT(a, b) (a) = (a) ? (a) : (b) | |
#define LIMIT(x, a, b) (x) = (x) < (a) ? (a) : (x) > (b) ? (b) … | |
#define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg… | |
(a).bg != (b).bg) | |
t@@ -194,7 +195,7 @@ void tnew(int, int); | |
void tresize(int, int); | |
void tsetdirt(int, int); | |
void tsetdirtattr(int); | |
-void ttynew(void); | |
+void ttynew(char *, char *, char **); | |
size_t ttyread(void); | |
void ttyresize(int, int); | |
void ttysend(char *, size_t); | |
t@@ -221,14 +222,6 @@ extern Term term; | |
extern Selection sel; | |
extern int cmdfd; | |
extern pid_t pid; | |
-extern char **opt_cmd; | |
-extern char *opt_class; | |
-extern char *opt_embed; | |
-extern char *opt_font; | |
-extern char *opt_io; | |
-extern char *opt_line; | |
-extern char *opt_name; | |
-extern char *opt_title; | |
extern int oldbutton; | |
/* config.h globals */ | |
diff --git a/x.c b/x.c | |
t@@ -179,6 +179,15 @@ static char *usedfont = NULL; | |
static double usedfontsize = 0; | |
static double defaultfontsize = 0; | |
+static char *opt_class = NULL; | |
+static char **opt_cmd = NULL; | |
+static char *opt_embed = NULL; | |
+static char *opt_font = NULL; | |
+static char *opt_io = NULL; | |
+static char *opt_line = NULL; | |
+static char *opt_name = NULL; | |
+static char *opt_title = NULL; | |
+ | |
void | |
zoom(const Arg *arg) | |
{ | |
t@@ -1473,6 +1482,7 @@ void | |
xsettitle(char *p) | |
{ | |
XTextProperty prop; | |
+ DEFAULT(p, "st"); | |
Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, | |
&prop); | |
t@@ -1757,7 +1767,7 @@ run(void) | |
} while (ev.type != MapNotify); | |
cresize(w, h); | |
- ttynew(); | |
+ ttynew(opt_line, opt_io, opt_cmd); | |
ttyresize(win.tw, win.th); | |
clock_gettime(CLOCK_MONOTONIC, &last); |