sh: Send normal output from bind builtin to stdout
PR: 233343 Submitted by: Yuichiro NAITO (original version)
This commit is contained in:
parent
467f20b505
commit
5e112e8ce8
@ -472,10 +472,31 @@ str_to_event(const char *str, int last)
|
|||||||
int
|
int
|
||||||
bindcmd(int argc, char **argv)
|
bindcmd(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
|
FILE *old;
|
||||||
|
FILE *out;
|
||||||
|
|
||||||
if (el == NULL)
|
if (el == NULL)
|
||||||
error("line editing is disabled");
|
error("line editing is disabled");
|
||||||
return (el_parse(el, argc, __DECONST(const char **, argv)));
|
|
||||||
|
INTOFF;
|
||||||
|
|
||||||
|
out = out1fp();
|
||||||
|
if (out == NULL)
|
||||||
|
error("Out of space");
|
||||||
|
|
||||||
|
el_get(el, EL_GETFP, 1, &old);
|
||||||
|
el_set(el, EL_SETFP, 1, out);
|
||||||
|
|
||||||
|
ret = el_parse(el, argc, __DECONST(const char **, argv));
|
||||||
|
|
||||||
|
el_set(el, EL_SETFP, 1, old);
|
||||||
|
|
||||||
|
fclose(out);
|
||||||
|
|
||||||
|
INTON;
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -340,6 +340,12 @@ doformat(struct output *dest, const char *f, va_list ap)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FILE *
|
||||||
|
out1fp(void)
|
||||||
|
{
|
||||||
|
return fwopen(out1, doformat_wr);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Version of write which resumes after a signal is caught.
|
* Version of write which resumes after a signal is caught.
|
||||||
*/
|
*/
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
struct output {
|
struct output {
|
||||||
char *nextc;
|
char *nextc;
|
||||||
@ -75,6 +76,7 @@ void out1fmt(const char *, ...) __printflike(1, 2);
|
|||||||
void out2fmt_flush(const char *, ...) __printflike(1, 2);
|
void out2fmt_flush(const char *, ...) __printflike(1, 2);
|
||||||
void fmtstr(char *, int, const char *, ...) __printflike(3, 4);
|
void fmtstr(char *, int, const char *, ...) __printflike(3, 4);
|
||||||
void doformat(struct output *, const char *, va_list) __printflike(2, 0);
|
void doformat(struct output *, const char *, va_list) __printflike(2, 0);
|
||||||
|
FILE *out1fp(void);
|
||||||
int xwrite(int, const char *, int);
|
int xwrite(int, const char *, int);
|
||||||
|
|
||||||
#define outc(c, file) ((file)->nextc == (file)->bufend ? (emptyoutbuf(file), *(file)->nextc++ = (c)) : (*(file)->nextc++ = (c)))
|
#define outc(c, file) ((file)->nextc == (file)->bufend ? (emptyoutbuf(file), *(file)->nextc++ = (c)) : (*(file)->nextc++ = (c)))
|
||||||
|
Loading…
Reference in New Issue
Block a user