1: #include    <stdio.h>
   2: #include    <errno.h>
   3: 
   4: FILE *
   5: _endopen(file, mode, iop)
   6:     char *file, *mode;
   7:     register FILE *iop;
   8: {
   9:     extern int errno;
  10:     register int rw, f;
  11: 
  12:     if (iop == NULL)
  13:         return(NULL);
  14: 
  15:     rw = mode[1] == '+';
  16: 
  17:     switch (*mode) {
  18: 
  19:     case 'w':
  20:         f = create(file, rw);
  21:         break;
  22: 
  23:     case 'a':
  24:         if ((f = open(file, rw? 2: 1)) < 0) {
  25:             if (errno == ENOENT)
  26:                 f = create(file, rw);
  27:         }
  28:         lseek(f, 0L, 2);
  29:         break;
  30: 
  31:     case 'r':
  32:         f = open(file, rw? 2: 0);
  33:         break;
  34: 
  35:     default:
  36:         return(NULL);
  37:     }
  38: 
  39:     if (f < 0)
  40:         return(NULL);
  41: 
  42:     iop->_cnt = 0;
  43:     iop->_file = f;
  44: 
  45:     if (rw)
  46:         iop->_flag |= _IORW;
  47:     else if(*mode == 'r')
  48:         iop->_flag |= _IOREAD;
  49:     else
  50:         iop->_flag |= _IOWRT;
  51: 
  52:     return(iop);
  53: }
  54: 
  55: static int
  56: create(file, rw)
  57:     register char *file;
  58:     int rw;
  59: {
  60:     register int f;
  61: 
  62:     f = creat(file, 0666);
  63:     if (rw && f>=0) {
  64:         close(f);
  65:         f = open(file, 2);
  66:     }
  67:     return(f);
  68: }

Defined functions

_endopen defined in line 4; used 4 times
create defined in line 55; used 2 times
Last modified: 1979-05-05
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 440
Valid CSS Valid XHTML 1.0 Strict