~ubuntu-branches/ubuntu/karmic/scilab/karmic

« back to all changes in this revision

Viewing changes to routines/f2c/libf2c/uio.c

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2002-03-21 16:57:43 UTC
  • Revision ID: james.westby@ubuntu.com-20020321165743-e9mv12c1tb1plztg
Tags: upstream-2.6
ImportĀ upstreamĀ versionĀ 2.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "f2c.h"
 
2
#include "fio.h"
 
3
uiolen f__reclen;
 
4
 
 
5
#ifdef KR_headers
 
6
do_us(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
 
7
#else
 
8
do_us(ftnint *number, char *ptr, ftnlen len)
 
9
#endif
 
10
{
 
11
        if(f__reading)
 
12
        {
 
13
                f__recpos += (int)(*number * len);
 
14
                if(f__recpos>f__reclen)
 
15
                        err(f__elist->cierr, 110, "do_us");
 
16
                if (fread(ptr,(int)len,(int)(*number),f__cf) != *number)
 
17
                        err(f__elist->ciend, EOF, "do_us");
 
18
                return(0);
 
19
        }
 
20
        else
 
21
        {
 
22
                f__reclen += *number * len;
 
23
                (void) fwrite(ptr,(int)len,(int)(*number),f__cf);
 
24
                return(0);
 
25
        }
 
26
}
 
27
#ifdef KR_headers
 
28
integer do_ud(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
 
29
#else
 
30
integer do_ud(ftnint *number, char *ptr, ftnlen len)
 
31
#endif
 
32
{
 
33
        f__recpos += (int)(*number * len);
 
34
        if(f__recpos > f__curunit->url && f__curunit->url!=1)
 
35
                err(f__elist->cierr,110,"do_ud");
 
36
        if(f__reading)
 
37
        {
 
38
#ifdef Pad_UDread
 
39
#ifdef KR_headers
 
40
        int i;
 
41
#else
 
42
        size_t i;
 
43
#endif
 
44
                if (!(i = fread(ptr,(int)len,(int)(*number),f__cf))
 
45
                 && !(f__recpos - *number*len))
 
46
                        err(f__elist->cierr,EOF,"do_ud")
 
47
                if (i < *number)
 
48
                        memset(ptr + i*len, 0, (*number - i)*len);
 
49
                return 0;
 
50
#else
 
51
                if(fread(ptr,(int)len,(int)(*number),f__cf) != *number)
 
52
                        err(f__elist->cierr,EOF,"do_ud")
 
53
                else return(0);
 
54
#endif
 
55
        }
 
56
        (void) fwrite(ptr,(int)len,(int)(*number),f__cf);
 
57
        return(0);
 
58
}
 
59
#ifdef KR_headers
 
60
integer do_uio(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
 
61
#else
 
62
integer do_uio(ftnint *number, char *ptr, ftnlen len)
 
63
#endif
 
64
{
 
65
        if(f__sequential)
 
66
                return(do_us(number,ptr,len));
 
67
        else    return(do_ud(number,ptr,len));
 
68
}