Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
uio.c
Go to the documentation of this file.00001 #include "f2c.h"
00002 #include "fio.h"
00003 uiolen f__reclen;
00004
00005 #ifdef KR_headers
00006 do_us(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
00007 #else
00008 do_us(ftnint *number, char *ptr, ftnlen len)
00009 #endif
00010 {
00011 if(f__reading)
00012 {
00013 f__recpos += (int)(*number * len);
00014 if(f__recpos>f__reclen)
00015 err(f__elist->cierr, 110, "do_us");
00016 if (fread(ptr,(int)len,(int)(*number),f__cf) != *number)
00017 err(f__elist->ciend, EOF, "do_us");
00018 return(0);
00019 }
00020 else
00021 {
00022 f__reclen += *number * len;
00023 (void) fwrite(ptr,(int)len,(int)(*number),f__cf);
00024 return(0);
00025 }
00026 }
00027 #ifdef KR_headers
00028 integer do_ud(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
00029 #else
00030 integer do_ud(ftnint *number, char *ptr, ftnlen len)
00031 #endif
00032 {
00033 f__recpos += (int)(*number * len);
00034 if(f__recpos > f__curunit->url && f__curunit->url!=1)
00035 err(f__elist->cierr,110,"do_ud");
00036 if(f__reading)
00037 {
00038 #ifdef Pad_UDread
00039 #ifdef KR_headers
00040 int i;
00041 #else
00042 size_t i;
00043 #endif
00044 if (!(i = fread(ptr,(int)len,(int)(*number),f__cf))
00045 && !(f__recpos - *number*len))
00046 err(f__elist->cierr,EOF,"do_ud")
00047 if (i < *number)
00048 memset(ptr + i*len, 0, (*number - i)*len);
00049 return 0;
00050 #else
00051 if(fread(ptr,(int)len,(int)(*number),f__cf) != *number)
00052 err(f__elist->cierr,EOF,"do_ud")
00053 else return(0);
00054 #endif
00055 }
00056 (void) fwrite(ptr,(int)len,(int)(*number),f__cf);
00057 return(0);
00058 }
00059 #ifdef KR_headers
00060 integer do_uio(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
00061 #else
00062 integer do_uio(ftnint *number, char *ptr, ftnlen len)
00063 #endif
00064 {
00065 if(f__sequential)
00066 return(do_us(number,ptr,len));
00067 else return(do_ud(number,ptr,len));
00068 }