1: /*
   2:  * Copyright (c) 1980 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  */
   6: 
   7: #if defined(LIBC_SCCS) && !defined(lint)
   8: static char sccsid[] = "@(#)freopen.c	5.2 (Berkeley) 3/9/86";
   9: #endif LIBC_SCCS and not lint
  10: 
  11: #include <sys/types.h>
  12: #include <sys/file.h>
  13: #include <stdio.h>
  14: 
  15: FILE *
  16: freopen(file, mode, iop)
  17:     char *file;
  18:     register char *mode;
  19:     register FILE *iop;
  20: {
  21:     register f, rw, oflags;
  22: 
  23:     rw = (mode[1] == '+');
  24: 
  25:     fclose(iop);
  26: 
  27:     switch (*mode) {
  28:     case 'a':
  29:         oflags = O_CREAT | (rw ? O_RDWR : O_WRONLY);
  30:         break;
  31:     case 'r':
  32:         oflags = rw ? O_RDWR : O_RDONLY;
  33:         break;
  34:     case 'w':
  35:         oflags = O_TRUNC | O_CREAT | (rw ? O_RDWR : O_WRONLY);
  36:         break;
  37:     default:
  38:         return (NULL);
  39:     }
  40: 
  41:     f = open(file, oflags, 0666);
  42:     if (f < 0)
  43:         return (NULL);
  44: 
  45:     if (*mode == 'a')
  46:         lseek(f, (off_t)0, L_XTND);
  47: 
  48:     iop->_cnt = 0;
  49:     iop->_file = f;
  50:     iop->_bufsiz = 0;
  51:     if (rw)
  52:         iop->_flag = _IORW;
  53:     else if (*mode == 'r')
  54:         iop->_flag = _IOREAD;
  55:     else
  56:         iop->_flag = _IOWRT;
  57:     iop->_base = iop->_ptr = NULL;
  58:     return (iop);
  59: }

Defined functions

freopen defined in line 15; used 133 times

Defined variables

sccsid defined in line 8; never used
Last modified: 1986-03-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1145
Valid CSS Valid XHTML 1.0 Strict