Annotation of 43BSD/contrib/notes/src/gtext.c, revision 1.1

1.1     ! root        1: #include "parms.h"
        !             2: #include "structs.h"
        !             3: 
        !             4: #ifdef RCSIDENT
        !             5: static char rcsid[] = "$Header: gtext.c,v 1.7 85/01/18 15:12:11 notes Rel $";
        !             6: #endif RCSIDENT
        !             7: 
        !             8: /*
        !             9:  *     get the text for a note/response
        !            10:  *
        !            11:  *     Calls unix editor with a unique file name 
        !            12:  *     Also makes sure the returned text is of 
        !            13:  *     appropriate size
        !            14:  *
        !            15:  *     Ray Essick 10/23/80
        !            16:  *     Modified : rbk  10/26/80
        !            17:  *     modified again: rbe 12 nov 81   fix to version 7 and general shtuff
        !            18:  *     modified a third time to add insert-text for user
        !            19:  *             Ray Essick      December 1981
        !            20:  */
        !            21: 
        !            22: long    gettext (io, where, preface, editflag)
        !            23: struct io_f *io;
        !            24: struct daddr_f *where;                                 /* where we left it */
        !            25: FILE * preface;                                                /* text included in buffer */
        !            26: int     editflag;                                      /* EDIT if want editor, else NOEDIT */
        !            27: {
        !            28:     FILE * scr, *fopen ();
        !            29:     register int    c;
        !            30:     long    count;
        !            31:     char    fn[20];                                    /* scratch file name */
        !            32: 
        !            33:     sprintf (fn, "/tmp/nf%d", getpid ());
        !            34:     x ((scr = fopen (fn, "w")) == NULL, "gettext: create scratch");
        !            35:     x (chmod (fn, 0666) < 0, "gettext: chmod tmp");
        !            36:     if (preface != NULL)
        !            37:     {
        !            38:        while ((c = getc (preface)) != EOF)
        !            39:            putc (c, scr);                              /* move included text */
        !            40:     }
        !            41:     fclose (scr);
        !            42:     fflush (stdout);                                   /* clean it out */
        !            43: 
        !            44:     if (editflag == EDIT)
        !            45:     {
        !            46: #ifndef        FASTFORK
        !            47:        {
        !            48:            char    cmd[CMDLEN];                        /* build editor call */
        !            49:            sprintf (cmd, "%s %s", hised, fn);
        !            50:            dounix (cmd, 1, 1);                         /* get the text */
        !            51:        }
        !            52: #else
        !            53:        dounix (1, 1, hised, fn, 0, 0, 0);              /* call his editor */
        !            54: #endif
        !            55:     }                                                  /* end of editflag test */
        !            56: 
        !            57:     if ((scr = fopen (fn, "r")) == NULL)               /* no text to read */
        !            58:     {
        !            59:        unlink (fn);                                    /* might just be protections */
        !            60:        return ((long) 0);
        !            61:     }
        !            62: 
        !            63:     count = pagein (io, scr, where);                   /* move text in */
        !            64:     fclose (scr);                                      /* close the scratch file and */
        !            65:     x (unlink (fn) < 0, "gettext: unlink");            /* unlink it */
        !            66:     return ((long) count);                             /* chars moved */
        !            67: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.