# 2.11BSD#431 - /usr/src/new/notes/src/gtext.c

##### Functions

    gettext           X

       1: #include "parms.h"
       2: #include "structs.h"
       3: #include <sys/types.h>
       4: #include <sys/stat.h>
       5:
       6: #ifdef  RCSIDENT
       7: static char rcsid[] = "$Header: gtext.c,v 1.8 87/07/01 13:47:24 paul Exp $";
       8: #endif	RCSIDENT
       9:
      10: /*
      11:  *	get the text for a note/response
      12:  *
      13:  *	Calls unix editor with a unique file name
      14:  *	Also makes sure the returned text is of
      15:  *	appropriate size
      16:  *
      17:  *	Ray Essick 10/23/80
      18:  *	Modified : rbk	10/26/80
      19:  *	modified again:	rbe 12 nov 81	fix to version 7 and general shtuff
      20:  *	modified a third time to add insert-text for user
      21:  *		Ray Essick	December 1981
      22:  *	modified to add non-portable way of appending a signature file.
      23:  *		Rich $alz	July, 1985
      24:  *	did signatures the "right" way (better, at least) - LOCAL flag
      25:  *		Rich $alz	August, 1985
      26:  */
      27:
      28: extern char hissig[];
      29: long    gettext (io, where, preface, editflag)
      30: struct io_f *io;
      31: struct daddr_f *where;                  /* where we left it */
      32: FILE * preface;                     /* text included in buffer */
      33: int     editflag;                   /* EDIT if want editor, else NOEDIT */
      34: {
      35:     FILE * scr, *fopen ();
      36:     register int    c;
      37:     long    count;
      38:     char    fn[20];                 /* scratch file name */
      39:     struct stat    sbuf;
      40:
      41:     sprintf (fn, "/tmp/nf%d", getpid ());
      42:     x ((scr = fopen (fn, "w")) == NULL, "gettext: create scratch");
      43:     x (chmod (fn, 0666) < 0, "gettext: chmod tmp");
      44:     if (preface != NULL)
      45:     {
      46:     while ((c = getc (preface)) != EOF)
      47:         putc (c, scr);              /* move included text */
      48:     }
      49:     fclose (scr);
      50:     fflush (stdout);                    /* clean it out */
      51:
      52:     if (editflag == EDIT)
      53:     {
      54: #ifndef FASTFORK
      55:     {
      56:         char    cmd[CMDLEN];            /* build editor call */
      57:         sprintf (cmd, "%s %s", hised, fn);
      58:         dounix (cmd, 1, 1);             /* get the text */
      59:     }
      60: #else
      61:     {
      62:         if (index (hised, ' ') != (char *) NULL)    /* use shell */
      63:         {
      64:         char    cmd[CMDLEN];
      65:         sprintf (cmd, "%s %s", hised, fn);
      66:         dounix (1, 1, DFLTSH, "-c", cmd, 0, 0);
      67:         }
      68:         else
      69:         {
      70:         dounix (1, 1, hised, fn, 0, 0, 0);  /* call his editor */
      71:         }
      72:     }
      73: #endif
      74:     }                           /* end of editflag test */
      75:
      76:     if ((scr = fopen (fn, "r")) == NULL)        /* no text to read */
      77:     {
      78:     unlink (fn);                    /* might just be protections */
      79:     return ((long) 0);
      80:     }
      81:
      82:     (void) fstat (fileno (scr), &sbuf);
      83:     if (sbuf.st_size > (off_t) 0 && hissig[0]
      84:      && io -> descr.d_stat & NETWRKD && !(io -> descr.d_stat & LOCAL))
      85:     {
      86:     c = askyn ("Add signature (y/n): ");
      87:     printf ("\r                      \r");
      88:     if (c == 'y')
      89:     {
      90:         FILE * siggy;
      91:
      92:         if ((siggy = fopen (hissig, "r")) == NULL)
      93:         printf ("Can't find %s", hissig);
      94:         else
      95:         {
      96:         /* Flop to append mode, append, flip back to read */
      97:         freopen (fn, "a", scr);
      98:         while ((c = getc (siggy)) != EOF)
      99:             putc (c, scr);
     100:         fclose (siggy);
     101:         freopen (fn, "r", scr);
     102:         }
     103:     }
     104:     }
     105:
     106:     count = pagein (io, scr, where);            /* move text in */
     107:     fclose (scr);                   /* close the scratch file and */
     108:     x (unlink (fn) < 0, "gettext: unlink");     /* unlink it */
     109:     return ((long) count);              /* chars moved */
     110: }

#### Defined functions

gettext defined in line 29; used 4 times

- in /usr/src/new/notes/src/adnote.c line 61
- in /usr/src/new/notes/src/adresp.c line 46
- in /usr/src/new/notes/src/dropt.c line 450
- in /usr/src/new/notes/src/structs.h line 420

#### Defined variables

rcsid defined in line 7; never used

Last modified: 1987-07-01 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 665 |