Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4973 right-hear 1
/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
2
#include 
3
#include 
4
#include 
5
#include 
6
#include 
7
#include 
8
 
9
int
10
fseek(FILE *f, long offset, int ptrname)
11
{
12
  long p = -1;			/* can't happen? */
13
  if(f && f->std_ops && STM_OP(f,seek))
14
   return STM_OP(f,seek)(f,offset,ptrname);
15
  f->_flag &= ~_IOEOF;
16
  if (f->_flag & _IOREAD)
17
  {
18
    if ((ptrname == SEEK_CUR) && f->_base && !(f->_flag & _IONBF))
19
    {
20
      offset += ftell(f);
21
      ptrname = SEEK_SET;
22
    }
23
 
24
    if (f->_flag & _IORW)
25
    {
26
      f->_ptr = f->_base;
27
      f->_flag &= ~_IOREAD;
28
    }
29
    p = lseek(fileno(f), offset, ptrname);
30
    f->_cnt = 0;
31
    f->_ptr = f->_base;
32
  }
33
  else if (f->_flag & (_IOWRT|_IORW))
34
  {
35
    p = fflush(f);
36
    return lseek(fileno(f), offset, ptrname) == -1 || p == EOF ?
37
      -1 : 0;
38
  }
39
  return p==-1 ? -1 : 0;
40
}