2.9BSD/usr/contrib/notes/gtext.c

Compare this file to the similar file:
Show the results in this format:

static char *sccsid = "@(#)gtext.c	1.2 2/1/83";

#include "parms.h"
#include "structs.h"
/*
 *	get the text for a note/response
 *
 *	Calls unix editor with a unique file name 
 *	Also makes sure the returned text is of 
 *	appropriate size
 *
 *	Ray Essick 10/23/80
 *	Modified : rbk	10/26/80
 *	modified again:	rbe 12 nov 81	fix to version 7 and general shtuff
 *	modified a third time to add insert-text for user
 *		Ray Essick	December 1981
 */


gettext (io, where, preface)
struct io_f *io;
struct daddr_f *where;				/* where we left it */
FILE * preface;					/* text included in buffer */
{
    FILE * scr, *fopen ();
    int     c;
    char    cmd[CMDLEN];			/* build the editor call */
    char    fn[WDLEN];				/* scratch file name */
    extern char *myeditor;

    sprintf (fn, "/tmp/nf%d", getpid ());
    x ((scr = fopen (fn, "w")) == NULL, "gettext: create scratch");
    x (chmod (fn, 0666) < 0, "gettext: chmod tmp");
    if (preface != NULL) {
	while ((c = getc (preface)) != EOF) {
	    putc (c, scr);				/* move included text */
	}
    }
    fclose (scr);

    c = dounix (1, 1, myeditor, fn, 0, 0, 0);	/* call his editor */
    if (c != 0)
    	wfchar();
    x ((scr = fopen (fn, "r")) == NULL, "gettext: scratch file");

    c = pagein (io, scr, where);			/* move text in */
    fclose(scr);
    x (unlink (fn) < 0, "gettext: unlink");
    return(c);				/* return count of characters moved */
}