#if !BAR_DWMBLOCKS_PATCH
static const char statusexport[] = "export BUTTON=-;";
static int statuscmdn;
static int lastbutton;
#endif // BAR_DWMBLOCKS_PATCH

int
click_statuscmd(Bar *bar, Arg *arg, BarArg *a)
{
	return click_statuscmd_text(arg, a->x, rawstext);
}

#if BAR_EXTRASTATUS_PATCH
int
click_statuscmd_es(Bar *bar, Arg *arg, BarArg *a)
{
	return click_statuscmd_text(arg, a->x, rawestext);
}
#endif // BAR_EXTRASTATUS_PATCH

int
click_statuscmd_text(Arg *arg, int rel_x, char *text)
{
	int i = -1;
	int x = 0;
	char ch;
	#if BAR_DWMBLOCKS_PATCH
	dwmblockssig = -1;
	#else
	statuscmdn = 0;
	#endif // BAR_DWMBLOCKS_PATCH
	while (text[++i]) {
		if ((unsigned char)text[i] < ' ') {
			ch = text[i];
			text[i] = '\0';
			#if BAR_STATUS2D_PATCH && !BAR_BAR_STATUSCOLORS_PATCH
			x += status2dtextlength(text);
			#else
			x += TEXTWM(text) - lrpad;
			#endif // BAR_STATUS2D_PATCH
			text[i] = ch;
			text += i+1;
			i = -1;
			#if BAR_DWMBLOCKS_PATCH
			if (x >= rel_x && dwmblockssig != -1)
				break;
			dwmblockssig = ch;
			#else
			if (x >= rel_x)
				break;
			if (ch <= LENGTH(statuscmds))
				statuscmdn = ch - 1;
			#endif // BAR_DWMBLOCKS_PATCH
		}
	}
	#if BAR_DWMBLOCKS_PATCH
	if (dwmblockssig == -1)
		dwmblockssig = 0;
	#endif // BAR_DWMBLOCKS_PATCH
	return ClkStatusText;
}

void
copyvalidchars(char *text, char *rawtext)
{
	int i = -1, j = 0;

	while (rawtext[++i]) {
		if ((unsigned char)rawtext[i] >= ' ') {
			text[j++] = rawtext[i];
		}
	}
	text[j] = '\0';
}