Compare commits

...

4 Commits

Author SHA1 Message Date
hazen2215 df048950ed change the directory structure 2022-07-23 18:43:45 +00:00
Ashish Kumar Yadav eb96c5071f Now st-plumber also opens directories 2022-07-14 04:05:32 +05:30
Ashish Kumar Yadav d5e92fa6fc Upstream update cd0773cee9bad694dc9a6b1355a32bbe61abadff
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Sun May 1 18:38:40 2022 +0200

    Makefile: add manual path for OpenBSD
2022-05-03 15:57:40 +05:30
Ashish Kumar Yadav 492baaa71e Upstream update 8629d9a1da72cc18568a8f146307b0e939b77ebf
Author: NRK <nrk@disroot.org>
Date:   Fri Jan 7 23:21:04 2022 +0600

    code-golfing: cleanup osc color related code

    * adds missing function prototype
    * move xgetcolor() prototype to win.h (that's where all the other x.c
      func prototype seems to be declared at)
    * check for snprintf error/truncation
    * reduces code duplication for osc 10/11/12
    * unify osc_color_response() and osc4_color_response() into a single function

    the latter two was suggested by Quentin Rameau in his patch review on
    the hackers list.
2022-04-21 21:49:03 +05:30
18 changed files with 29 additions and 50 deletions

View File

View File

View File

View File

View File

View File

View File

@ -35,6 +35,7 @@ STLDFLAGS = $(LIBS) $(LDFLAGS)
#LIBS = -L$(X11LIB) -lm -lX11 -lutil -lXft \
# `$(PKG_CONFIG) --libs fontconfig` \
# `$(PKG_CONFIG) --libs freetype2`
#MANPREFIX = ${PREFIX}/man
# compiler and linker
#CC = c99

View File

@ -5,7 +5,7 @@ open() {
exec setsid -f xdg-open "$1"
}
[ -f "$1" ] && open "$1"
{ [ -f "$1" ] || [ -d "$1" ] ;} && open "$1"
url="$(echo "$1" | perl -M'Regexp::Common=URI' -ne 'if (/($RE{URI})/) {print $1; exit}')"
[ -n "$url" ] && open "$url"

View File

View File

@ -196,9 +196,8 @@ static void csidump(void);
static void csihandle(void);
static void csiparse(void);
static void csireset(void);
static void osc_color_response(int, int, int);
static int eschandle(uchar);
static void osc4_color_response(int);
static void osc_color_response(int, int);
static void strdump(void);
static void strhandle(void);
static void strparse(void);
@ -2200,35 +2199,27 @@ csireset(void)
}
void
osc4_color_response(int num)
osc_color_response(int num, int index, int is_osc4)
{
int n;
char buf[32];
unsigned char r, g, b;
if (xgetcolor(num, &r, &g, &b)) {
fprintf(stderr, "erresc: failed to fetch osc4 color %d\n", num);
if (xgetcolor(is_osc4 ? num : index, &r, &g, &b)) {
fprintf(stderr, "erresc: failed to fetch %s color %d\n",
is_osc4 ? "osc4" : "osc",
is_osc4 ? num : index);
return;
}
n = snprintf(buf, sizeof buf, "\033]4;%d;rgb:%02x%02x/%02x%02x/%02x%02x\007",
num, r, r, g, g, b, b);
ttywrite(buf, n, 1);
}
void
osc_color_response(int index, int num)
{
int n;
char buf[32];
unsigned char r, g, b;
if (xgetcolor(index, &r, &g, &b)) {
fprintf(stderr, "erresc: failed to fetch osc color %d\n", index);
return;
n = snprintf(buf, sizeof buf, "\033]%s%d;rgb:%02x%02x/%02x%02x/%02x%02x\007",
is_osc4 ? "4;" : "", num, r, r, g, g, b, b);
if (n < 0 || n >= sizeof(buf)) {
fprintf(stderr, "error: %s while printing %s response\n",
n < 0 ? "snprintf failed" : "truncation occurred",
is_osc4 ? "osc4" : "osc");
} else {
ttywrite(buf, n, 1);
}
n = snprintf(buf, sizeof buf, "\033]%d;rgb:%02x%02x/%02x%02x/%02x%02x\007",
num, r, r, g, g, b, b);
ttywrite(buf, n, 1);
}
void
@ -2236,6 +2227,11 @@ strhandle(void)
{
char *p = NULL, *dec;
int j, narg, par;
const struct { int idx; char *str; } osc_table[] = {
{ defaultfg, "foreground" },
{ defaultbg, "background" },
{ defaultcs, "cursor" }
};
term.esc &= ~(ESC_STR_END|ESC_STR);
strescseq.buf[strescseq.len] = '\0';
@ -2275,37 +2271,19 @@ strhandle(void)
}
return;
case 10:
if (narg < 2)
break;
p = STRESCARGJUST(1);
if (!strcmp(p, "?")) {
osc_color_response(defaultfg, 10);
} else if (xsetcolorname(defaultfg, p)) {
fprintf(stderr, "erresc: invalid foreground color : %s\n", p);
} else {
tfulldirt();
}
return;
case 11:
if (narg < 2)
break;
p = STRESCARGJUST(1);
if (!strcmp(p, "?")) {
osc_color_response(defaultbg, 11);
} else if (xsetcolorname(defaultbg, p)) {
fprintf(stderr, "erresc: invalid background color: %s\n", p);
} else {
tfulldirt();
}
return;
case 12:
if (narg < 2)
break;
p = STRESCARGJUST(1);
if ((j = par - 10) < 0 || j >= LEN(osc_table))
break; /* shouldn't be possible */
if (!strcmp(p, "?")) {
osc_color_response(defaultcs, 12);
} else if (xsetcolorname(defaultcs, p)) {
fprintf(stderr, "erresc: invalid cursor color: %s\n", p);
osc_color_response(par, osc_table[j].idx, 0);
} else if (xsetcolorname(osc_table[j].idx, p)) {
fprintf(stderr, "erresc: invalid %s color: %s\n",
osc_table[j].str, p);
} else {
tfulldirt();
}
@ -2318,7 +2296,7 @@ strhandle(void)
case 104: /* color reset */
j = (narg > 1) ? atoi(STRESCARGJUST(1)) : -1;
if (p && !strcmp(p, "?")) {
osc4_color_response(j);
osc_color_response(j, 0, 1);
} else if (xsetcolorname(j, p)) {
if (par == 104 && narg <= 1)
return; /* color reset without parameter */

View File

View File

View File

View File