summaryrefslogtreecommitdiff
path: root/Src/prompt.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/prompt.c')
-rw-r--r--Src/prompt.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/Src/prompt.c b/Src/prompt.c
index be067ee7e..ee77c8bc8 100644
--- a/Src/prompt.c
+++ b/Src/prompt.c
@@ -395,11 +395,11 @@ putpromptchar(int doprint, int endchar, unsigned int *txtchangep)
test = 1;
break;
case 'v':
- if (arrlen(psvar) >= arg)
+ if (arrlen_ge(psvar, arg))
test = 1;
break;
case 'V':
- if (arrlen(psvar) >= arg) {
+ if (arrlen_ge(psvar, arg)) {
if (*psvar[(arg ? arg : 1) - 1])
test = 1;
}
@@ -491,8 +491,10 @@ putpromptchar(int doprint, int endchar, unsigned int *txtchangep)
if (!arg)
arg++;
queue_signals();
- if (!(hostnam = getsparam("HOST")))
+ if (!(hostnam = getsparam("HOST"))) {
+ unqueue_signals();
break;
+ }
if (arg < 0) {
for (ss = hostnam + strlen(hostnam); ss > hostnam; ss--)
if (ss[-1] == '.' && !++arg)
@@ -523,8 +525,6 @@ putpromptchar(int doprint, int endchar, unsigned int *txtchangep)
break;
case 'b':
txtchangeset(txtchangep, TXTNOBOLDFACE, TXTBOLDFACE);
- txtchangeset(txtchangep, TXTNOSTANDOUT, TXTSTANDOUT);
- txtchangeset(txtchangep, TXTNOUNDERLINE, TXTUNDERLINE);
txtunset(TXTBOLDFACE);
tsetcap(TCALLATTRSOFF, TSC_PROMPT|TSC_DIRTY);
break;
@@ -542,7 +542,8 @@ putpromptchar(int doprint, int endchar, unsigned int *txtchangep)
arg = parsecolorchar(arg, 1);
if (arg >= 0 && !(arg & TXTNOFGCOLOUR)) {
txtchangeset(txtchangep, arg & TXT_ATTR_FG_ON_MASK,
- TXTNOFGCOLOUR);
+ TXTNOFGCOLOUR | TXT_ATTR_FG_COL_MASK);
+ txtunset(TXT_ATTR_FG_COL_MASK);
txtset(arg & TXT_ATTR_FG_ON_MASK);
set_colour_attribute(arg, COL_SEQ_FG, TSC_PROMPT);
break;
@@ -557,7 +558,8 @@ putpromptchar(int doprint, int endchar, unsigned int *txtchangep)
arg = parsecolorchar(arg, 0);
if (arg >= 0 && !(arg & TXTNOBGCOLOUR)) {
txtchangeset(txtchangep, arg & TXT_ATTR_BG_ON_MASK,
- TXTNOBGCOLOUR);
+ TXTNOBGCOLOUR | TXT_ATTR_BG_COL_MASK);
+ txtunset(TXT_ATTR_BG_COL_MASK);
txtset(arg & TXT_ATTR_BG_ON_MASK);
set_colour_attribute(arg, COL_SEQ_BG, TSC_PROMPT);
break;
@@ -736,7 +738,7 @@ putpromptchar(int doprint, int endchar, unsigned int *txtchangep)
arg = 1;
else if (arg < 0)
arg += arrlen(psvar) + 1;
- if (arg > 0 && arrlen(psvar) >= arg)
+ if (arg > 0 && arrlen_ge(psvar, arg))
stradd(psvar[arg - 1]);
break;
case 'E':
@@ -1041,6 +1043,10 @@ tsetcap(int cap, int flags)
tsetcap(TCSTANDOUTBEG, flags);
if (txtisset(TXTUNDERLINE))
tsetcap(TCUNDERLINEBEG, flags);
+ if (txtisset(TXTFGCOLOUR))
+ set_colour_attribute(txtattrmask, COL_SEQ_FG, TSC_PROMPT);
+ if (txtisset(TXTBGCOLOUR))
+ set_colour_attribute(txtattrmask, COL_SEQ_BG, TSC_PROMPT);
}
}
}
@@ -1831,7 +1837,7 @@ struct colour_sequences {
char *end; /* Escape sequence terminator */
char *def; /* Code to reset default colour */
};
-struct colour_sequences fg_bg_sequences[2];
+static struct colour_sequences fg_bg_sequences[2];
/*
* We need a buffer for colour sequence composition. It may