add
This commit is contained in:
parent
49a1496cbb
commit
c42a1d3d61
31 changed files with 4745 additions and 2 deletions
67
src/cmd/htmlroff/t18.c
Normal file
67
src/cmd/htmlroff/t18.c
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
#include "a.h"
|
||||
|
||||
/*
|
||||
* 18. Insertions from the standard input
|
||||
*/
|
||||
void
|
||||
r_rd(int argc, Rune **argv)
|
||||
{
|
||||
char *s;
|
||||
Rune *p;
|
||||
Fmt fmt;
|
||||
static int didstdin;
|
||||
static Biobuf bstdin;
|
||||
|
||||
/*
|
||||
* print prompt, then read until double newline,
|
||||
* then run the text just read as though it were
|
||||
* a macro body, using the remaining arguments.
|
||||
*/
|
||||
if(isatty(0)){
|
||||
if(argc > 1)
|
||||
fprint(2, "%S", argv[1]);
|
||||
else
|
||||
fprint(2, "%c", 7/*BEL*/);
|
||||
}
|
||||
|
||||
if(!didstdin){
|
||||
Binit(&bstdin, 0, OREAD);
|
||||
didstdin = 1;
|
||||
}
|
||||
runefmtstrinit(&fmt);
|
||||
while((s = Brdstr(&bstdin, '\n', 0)) != nil){
|
||||
if(s[0] == '\n'){
|
||||
free(s);
|
||||
break;
|
||||
}
|
||||
fmtprint(&fmt, "%s", s);
|
||||
free(s);
|
||||
}
|
||||
p = runefmtstrflush(&fmt);
|
||||
if(p == nil)
|
||||
warn("out of memory in %Crd", dot);
|
||||
ds(L(".rd"), p);
|
||||
argc--;
|
||||
argv++;
|
||||
argv[0] = L(".rd");
|
||||
runmacro('.', argc, argv);
|
||||
ds(L(".rd"), nil);
|
||||
}
|
||||
|
||||
/* terminate exactly as if input had ended */
|
||||
void
|
||||
r_ex(int argc, Rune **argv)
|
||||
{
|
||||
USED(argc);
|
||||
USED(argv);
|
||||
|
||||
while(popinput())
|
||||
;
|
||||
}
|
||||
|
||||
void
|
||||
t18init(void)
|
||||
{
|
||||
addreq(L("rd"), r_rd, -1);
|
||||
addreq(L("ex"), r_ex, 0);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue