[hackers] [st] Move opt_* into same file as main()/run() || Devin J. Pohly
commit 69e32a61df15787c410a48eaa10a89240c36257d
Author: Devin J. Pohly <djpohly_AT_gmail.com>
AuthorDate: Thu Oct 12 22:25:49 2017 -0500
Commit: Devin J. Pohly <djpohly_AT_gmail.com>
CommitDate: Sun Feb 25 21:53:24 2018 -0600
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 <djpohly_AT_gmail.com>
diff --git a/st.c b/st.c
index 1a8fa1f..58f7941 100644
--- a/st.c
+++ b/st.c
_AT_@ -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))
_AT_@ -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);
_AT_@ -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;
_AT_@ -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;
_AT_@ -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");
_AT_@ -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;
_AT_@ -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++ = ' ';
_AT_@ -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;
}
_AT_@ -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);
_AT_@ -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;
}
_AT_@ -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
index c255b7c..09473c2 100644
--- a/st.h
+++ b/st.h
_AT_@ -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) : (x)
#define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || \
(a).bg != (b).bg)
_AT_@ -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);
_AT_@ -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
index 371a467..e267961 100644
--- a/x.c
+++ b/x.c
_AT_@ -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)
{
_AT_@ -1473,6 +1482,7 @@ void
xsettitle(char *p)
{
XTextProperty prop;
+ DEFAULT(p, "st");
Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle,
&prop);
_AT_@ -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);
Received on Fri Mar 09 2018 - 15:37:36 CET
This archive was generated by hypermail 2.3.0
: Fri Mar 09 2018 - 15:49:09 CET