summaryrefslogtreecommitdiff
path: root/Src/builtin.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/builtin.c')
-rw-r--r--Src/builtin.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/Src/builtin.c b/Src/builtin.c
index 3bd3b63cb..979075392 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -3488,7 +3488,8 @@ bin_print(char *name, char **args, Options ops, int func)
else if (OPT_HASARG(ops,'f'))
fmt = OPT_ARG(ops,'f');
if (fmt)
- fmt = getkeystring(fmt, &flen, OPT_ISSET(ops,'b') ? 2 : 0, &fmttrunc);
+ fmt = getkeystring(fmt, &flen, OPT_ISSET(ops,'b') ? GETKEYS_BINDKEY :
+ GETKEYS_PRINTF, &fmttrunc);
first = args;
@@ -3525,9 +3526,14 @@ bin_print(char *name, char **args, Options ops, int func)
(OPT_ISSET(ops,'R') || OPT_ISSET(ops,'r') || OPT_ISSET(ops,'E'))))
unmetafy(args[n], &len[n]);
else {
- args[n] = getkeystring(args[n], &len[n], OPT_ISSET(ops,'b') ? 2 :
- (func != BIN_ECHO && !OPT_ISSET(ops,'e')),
- &nnl);
+ int escape_how;
+ if (OPT_ISSET(ops,'b'))
+ escape_how = GETKEYS_BINDKEY;
+ else if (func != BIN_ECHO && !OPT_ISSET(ops,'e'))
+ escape_how = GETKEYS_PRINT;
+ else
+ escape_how = GETKEYS_ECHO;
+ args[n] = getkeystring(args[n], &len[n], escape_how, &nnl);
if (nnl) {
/* If there was a \c escape, make this the last arg. */
argc = n + 1;
@@ -3933,7 +3939,8 @@ bin_print(char *name, char **args, Options ops, int func)
int l;
if (*c == 'b') {
b = getkeystring(metafy(curarg, curlen, META_USEHEAP), &l,
- OPT_ISSET(ops,'b') ? 2 : 0, &nnl);
+ OPT_ISSET(ops,'b') ? GETKEYS_BINDKEY :
+ GETKEYS_PRINTF, &nnl);
} else {
b = curarg;
l = curlen;