Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #pragma ident "@(#) libf/fio/ftell.c 92.1 06/18/99 19:52:04"
00039
00040 #include <errno.h>
00041 #include <ffio.h>
00042 #include <liberrno.h>
00043 #include "fio.h"
00044 #include "fstats.h"
00045
00046 extern long long __ftell64_f90( _f_int *unump);
00047 extern _f_int8 ftellf90_8_4_( _f_int *unump);
00048 extern _f_int8 ftellf90_8_( _f_int8 *unump);
00049 extern _f_int ftell90_ (_f_int *u);
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084 long long
00085 __ftell64_f90( _f_int *unump)
00086 {
00087 return ftellf90_8_4_(unump);
00088 }
00089
00090 _f_int8
00091 ftellf90_8_4_( _f_int *unump)
00092 {
00093 _f_int8 pos;
00094 register unum_t unum;
00095 unit *cup;
00096 struct fiostate cfs;
00097
00098 unum = *unump;
00099
00100
00101 STMT_BEGIN(unum, 0, T_GETPOS, NULL, &cfs, cup);
00102
00103
00104
00105
00106 if (cup == NULL)
00107 cup = _imp_open(&cfs, SEQ, UNF, unum, 0, NULL);
00108
00109
00110 if (cup->useq == 0)
00111 _ferr(&cfs, FEBIONDA, "GETPOS");
00112
00113
00114
00115
00116
00117
00118
00119
00120 pos = 0;
00121 switch( cup->ufs ) {
00122
00123 case FS_TEXT:
00124 case STD:
00125 pos = ftell64(cup->ufp.std);
00126 break;
00127
00128 case FS_FDC:
00129 _ferr(&cfs, FDC_ERR_NOSUP);
00130 break;
00131
00132 case FS_AUX:
00133 _ferr(&cfs, FEMIXAUX);
00134 break;
00135 default:
00136 _ferr(&cfs, FEINTFST);
00137
00138 }
00139
00140 getpos_done:
00141 STMT_END(cup, T_GETPOS, NULL, &cfs);
00142 return(pos);
00143 }
00144
00145 _f_int8
00146 ftellf90_8_( _f_int8 *unump)
00147 {
00148 _f_int8 pos;
00149 register unum_t unum;
00150 unit *cup;
00151 struct fiostate cfs;
00152
00153 unum = *unump;
00154
00155
00156 STMT_BEGIN(unum, 0, T_GETPOS, NULL, &cfs, cup);
00157
00158
00159
00160
00161 if (cup == NULL)
00162 cup = _imp_open(&cfs, SEQ, UNF, unum, 0, NULL);
00163
00164
00165 if (cup->useq == 0)
00166 _ferr(&cfs, FEBIONDA, "GETPOS");
00167
00168
00169
00170
00171
00172
00173
00174
00175 pos = 0;
00176 switch( cup->ufs ) {
00177
00178 case FS_TEXT:
00179 case STD:
00180 pos = ftell64(cup->ufp.std);
00181 break;
00182
00183 case FS_FDC:
00184 _ferr(&cfs, FDC_ERR_NOSUP);
00185 break;
00186
00187 case FS_AUX:
00188 _ferr(&cfs, FEMIXAUX);
00189 break;
00190 default:
00191 _ferr(&cfs, FEINTFST);
00192
00193 }
00194
00195 getpos_done:
00196 STMT_END(cup, T_GETPOS, NULL, &cfs);
00197 return(pos);
00198 }
00199
00200 _f_int
00201 ftell90_(_f_int *u)
00202 {
00203 return( (_f_int) ftellf90_8_4_(u));
00204 }
00205
00206 #if 0
00207 extern int ftell_(_f_int *u);
00208 int
00209 ftell_(_f_int *u)
00210 {
00211 return( (int) ftellf90_8_4_(u));
00212 }
00213 #endif