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
00039
00040
00041
00042 #pragma ident "@(#) libf/fio/fputc.c 92.2 08/20/99 13:51:31"
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073 #include "fio.h"
00074
00075 #ifdef KEY
00076 static _f_int fputcf90_(_f_int *u, char *c, int clen);
00077 extern _f_int8 fputcf90_8_(_f_int8 *u, char *c, int clen);
00078 extern _f_int8 fputcf90_8_4_(_f_int4 *u, char *c, int clen);
00079 extern _f_int4 fputcf90_4_8_(_f_int8 *u, char *c, int clen);
00080 static int putc_(char *c, int clen);
00081 static _f_int4 putcf90_(char *c, int clen);
00082 extern _f_int8 putcf90_8_(char *c, int clen);
00083 #else
00084 extern int __fputc_f90(int *u, char *c, int clen);
00085 extern _f_int fputcf90_(_f_int *u, char *c, int clen);
00086 extern _f_int8 fputcf90_8_(_f_int8 *u, char *c, int clen);
00087 extern _f_int8 fputcf90_8_4_(_f_int4 *u, char *c, int clen);
00088 extern _f_int4 fputcf90_4_8_(_f_int8 *u, char *c, int clen);
00089 extern int putc_(char *c, int clen);
00090 extern _f_int4 putcf90_(char *c, int clen);
00091 extern _f_int8 putcf90_8_(char *c, int clen);
00092 #endif
00093
00094 #ifdef KEY
00095 int
00096 __fputc_f90(int *u, char *c, int *status, int clen)
00097 {
00098 int junk;
00099 status = (status == 0) ? (&junk) : status;
00100 return *status = fputcf90_(u, c, clen);
00101 }
00102
00103 int
00104 pathf90_fput(char *c, int *status, int clen)
00105 {
00106 int junk;
00107 status = (status == 0) ? (&junk) : status;
00108 return *status = putc_(c, clen);
00109 }
00110
00111 #else
00112 int
00113 __fputc_f90(int *u, char *c, int clen)
00114 {
00115 return fputcf90_(u, c, clen);
00116 }
00117 #endif
00118
00119 #ifdef KEY
00120
00121 static
00122 #endif
00123 _f_int
00124 fputcf90_(_f_int *u, char *c, int clen)
00125 {
00126 _f_int res;
00127 struct fiostate cfs;
00128 unit *cup;
00129 unum_t unum;
00130 long inpbuf;
00131
00132 unum = *u;
00133 res = 0;
00134
00135
00136 STMT_BEGIN( unum, 0, T_WSF, NULL, &cfs, cup);
00137 #ifdef KEY
00138
00139 if (cup == NULL) {
00140 int stat;
00141 int errf = 0;
00142
00143 cup= _imp_open(&cfs, SEQ, FMT, unum, errf, &stat);
00144 if (0 == cup) {
00145 return errno = stat;
00146 }
00147 }
00148 #endif
00149
00150 if (unum < 0 || !cup)
00151 return((errno=FEIVUNIT));
00152
00153
00154 inpbuf = (long) *c;
00155 if (_fwch(cup, &inpbuf, 1, PARTIAL) == -1)
00156 res = errno;
00157
00158
00159 STMT_END( cup, TF_WRITE, NULL, &cfs);
00160
00161 return(res);
00162 }
00163
00164 _f_int8
00165 fputcf90_8_(_f_int8 *u, char *c, int clen)
00166 {
00167 _f_int8 res;
00168 struct fiostate cfs;
00169 unit *cup;
00170 unum_t unum;
00171
00172 unum = *u;
00173 res = 0;
00174
00175
00176 STMT_BEGIN( unum, 0, T_WSF, NULL, &cfs, cup);
00177
00178 if (unum < 0 || !cup)
00179 return((errno=FEIVUNIT));
00180
00181 if (_fwch(cup, (long *)c, 1, PARTIAL) == -1)
00182 res = errno;
00183
00184
00185 STMT_END( cup, TF_WRITE, NULL, &cfs);
00186
00187 return(res);
00188 }
00189
00190 _f_int8
00191 fputcf90_8_4_(_f_int *u, char *c, int clen)
00192 {
00193 return (_f_int8) fputcf90_(u, c, clen);
00194 }
00195
00196 _f_int4
00197 fputcf90_4_8_(_f_int8 *u, char *c, int clen)
00198 {
00199 _f_int8 uunit;
00200 uunit = *u;
00201 return (_f_int4) fputcf90_8_(&uunit, c, clen);
00202 }
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226 #ifdef KEY
00227
00228 static
00229 #endif
00230 int
00231 putc_(char *c, int clen)
00232 {
00233 int stdout_unit = 6;
00234 return fputcf90_(&stdout_unit, c, clen);
00235 }
00236
00237 #ifdef KEY
00238
00239 static
00240 #endif
00241 _f_int4
00242 putcf90_(char *c, int clen)
00243 {
00244 _f_int4 res;
00245 struct fiostate cfs;
00246 unit *cup;
00247 unum_t unum = 6;
00248
00249 res = 0;
00250
00251
00252 STMT_BEGIN( unum, 0, T_WSF, NULL, &cfs, cup);
00253
00254 if (!cup)
00255 return((errno=FEIVUNIT));
00256
00257 if (_fwch(cup, (long *)c, 1, PARTIAL) == -1)
00258 res = errno;
00259
00260
00261 STMT_END( cup, TF_WRITE, NULL, &cfs);
00262
00263 return(res);
00264 }
00265
00266 _f_int8
00267 putcf90_8_(char *c, int clen)
00268 {
00269 _f_int8 res;
00270 struct fiostate cfs;
00271 unit *cup;
00272 unum_t unum = 6;
00273
00274 res = 0;
00275
00276
00277 STMT_BEGIN( unum, 0, T_WSF, NULL, &cfs, cup);
00278
00279 if (!cup)
00280 return((errno=FEIVUNIT));
00281
00282 if (_fwch(cup, (long *)c, 1, PARTIAL) == -1)
00283 res = errno;
00284
00285
00286 STMT_END( cup, TF_WRITE, NULL, &cfs);
00287
00288 return(res);
00289 }