pipe input to vi (svi.c)
Amazing what a pair of fives can do . . .
brighton at pixar
Tue Sep 16 04:19:24 AEST 1986
/*
I wrote this late one night, to facilitate saving files from rn ( s | svi )
Bevare: Written under 4.2BSD, and has not been tested elsewhere.
Improvements welcome. Enjoy!
Bill Carson @ Pixar
415 499 3600
uucp: ...!{ucbvax,sun}!pixar!brighton
arpa: brighton%pixar.uucp at ucbvax.berkeley.edu
*/
/*% cc -o svi svi.c
*/
#include <stdio.h>
#include <sys/file.h>
char editor[99];
char file[1024];
char buf[10240];
char *getenv();
main()
{
int fd, tty_in, tty_out;
sprintf (file, "/tmp/svi.%d", getpid());
fd = open (file, O_CREAT|O_RDWR, 0644);
if (fd < 0) {
perror (file);
exit (1);
}
while (write(fd,buf,read(0,buf,1024)))
;
close (fd);
close (0); close(1);
tty_in = open ("/dev/tty", O_RDONLY);
if (tty_in < 0) {
perror ("tty_in");
exit (1);
}
tty_out = open ("/dev/tty", O_WRONLY);
if (tty_out < 0) {
perror ("tty_out");
exit (1);
}
strcpy (editor, getenv ("EDITOR"));
if (editor[0] == 0) {
strcpy (editor, getenv ("VISUAL"));
if (editor[0] == 0) {
/* fprintf (stderr, "svi: defaulting to vi\n"); */
strcpy (editor, "/usr/ucb/vi");
}
}
execl (editor, editor, file, 0); /* should never return */
fprintf (stderr, "execl() returned!\007\n");
}
More information about the Comp.sources.unix
mailing list