#include <X11/cursorfont.h>
#include <X11/Xft/Xft.h>
-char *argv0;
-
#define Glyph Glyph_
#define Font Font_
-#include "win.h"
#include "st.h"
+#include "win.h"
#if defined(__linux)
#include <pty.h>
#define ISDELIM(u) (utf8strchr(worddelimiters, u) != NULL)
/* constants */
-#define ISO14755CMD "dmenu -w %lu -p codepoint: </dev/null"
+#define ISO14755CMD "dmenu -w \"$WINDOWID\" -p codepoint: </dev/null"
enum cursor_movement {
CURSOR_SAVE,
static void clippaste(const Arg *);
static void numlock(const Arg *);
static void selpaste(const Arg *);
-static void zoom(const Arg *);
-static void zoomabs(const Arg *);
-static void zoomreset(const Arg *);
static void printsel(const Arg *);
static void printscreen(const Arg *) ;
static void iso14755(const Arg *);
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
+char
+base64dec_getc(const char **src)
+{
+ while (**src && !isprint(**src)) (*src)++;
+ return *((*src)++);
+}
+
char *
base64dec(const char *src)
{
char *result, *dst;
if (in_len % 4)
- return NULL;
+ in_len += 4 - (in_len % 4);
result = dst = xmalloc(in_len / 4 * 3 + 1);
while (*src) {
- int a = base64_digits[(unsigned char) *src++];
- int b = base64_digits[(unsigned char) *src++];
- int c = base64_digits[(unsigned char) *src++];
- int d = base64_digits[(unsigned char) *src++];
+ int a = base64_digits[(unsigned char) base64dec_getc(&src)];
+ int b = base64_digits[(unsigned char) base64dec_getc(&src)];
+ int c = base64_digits[(unsigned char) base64dec_getc(&src)];
+ int d = base64_digits[(unsigned char) base64dec_getc(&src)];
*dst++ = (a << 2) | ((b & 0x30) >> 4);
if (c == -1)
setenv("SHELL", sh, 1);
setenv("HOME", pw->pw_dir, 1);
setenv("TERM", termname, 1);
- xsetenv();
signal(SIGCHLD, SIG_DFL);
signal(SIGHUP, SIG_DFL);
void
iso14755(const Arg *arg)
{
- unsigned long id = xwinid();
- char cmd[sizeof(ISO14755CMD) + NUMMAXLEN(id)];
FILE *p;
char *us, *e, codepoint[9], uc[UTF_SIZ];
unsigned long utf32;
- snprintf(cmd, sizeof(cmd), ISO14755CMD, id);
- if (!(p = popen(cmd, "r")))
+ if (!(p = popen(ISO14755CMD, "r")))
return;
us = fgets(codepoint, sizeof(codepoint), p);
/* backwards compatibility to xterm */
strhandle();
} else {
- if (!(win.state & WIN_FOCUSED))
- xseturgency(1);
- if (bellvolume)
- xbell(bellvolume);
+ xbell();
}
break;
case '\033': /* ESC */
term.c = c;
}
-void
-zoom(const Arg *arg)
-{
- Arg larg;
-
- larg.f = usedfontsize + arg->f;
- zoomabs(&larg);
-}
-
-void
-zoomabs(const Arg *arg)
-{
- xunloadfonts();
- xloadfonts(usedfont, arg->f);
- cresize(0, 0);
- ttyresize();
- redraw();
- xhints();
-}
-
-void
-zoomreset(const Arg *arg)
-{
- Arg larg;
-
- if (defaultfontsize > 0) {
- larg.f = defaultfontsize;
- zoomabs(&larg);
- }
-}
-
void
resettitle(void)
{
tresize(col, row);
xresize(col, row);
}
-
-void
-usage(void)
-{
- die("usage: %s [-aiv] [-c class] [-f font] [-g geometry]"
- " [-n name] [-o file]\n"
- " [-T title] [-t title] [-w windowid]"
- " [[-e] command [args ...]]\n"
- " %s [-aiv] [-c class] [-f font] [-g geometry]"
- " [-n name] [-o file]\n"
- " [-T title] [-t title] [-w windowid] -l line"
- " [stty_args ...]\n", argv0, argv0);
-}