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 #pragma ident "@(#) libf/pxf/pxfaintget.c 92.2 06/29/99 11:36:06"
00038
00039
00040
00041
00042
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
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115 #include <errno.h>
00116 #include <fortran.h>
00117 #include <liberrno.h>
00118 #include <malloc.h>
00119 #include <string.h>
00120 #include <sys/errno.h>
00121 #include <sys/types.h>
00122 #include <sys/termios.h>
00123 #include "pxfstruct.h"
00124 #include "table.h"
00125
00126
00127
00128
00129 #define GETIFMATCHE(_A_,_B_,_C_) if (strcmp(_A_,#_C_) == 0) {\
00130 if(cindex >= 0 && cindex < arrlen) {\
00131 *ivalue = ((struct _B_ *)(pxfhand.pxfstructptr))->_C_[cindex];\
00132 } else {\
00133 errsts = EINVAL;\
00134 }\
00135 }
00136
00137 #define SETIFMATCHE(_A_,_B_,_C_) if (strcmp(_A_,#_C_) == 0) {\
00138 if(cindex >= 0 && cindex < arrlen) {\
00139 ((struct _B_ *)(pxfhand.pxfstructptr))->_C_[cindex] = *ivalue;\
00140 } else {\
00141 errsts = EINVAL;\
00142 }\
00143 }
00144
00145
00146
00147
00148
00149
00150
00151
00152 #define GETIFMATCHA(_A_,_B_,_C_) if (strcmp(_A_,#_C_) == 0) {\
00153 if(elemnum < 0 ) {\
00154 errsts = EARRAYLEN;\
00155 } else {\
00156 if(elemnum > arrlen) {\
00157 errsts = EARRAYLEN;\
00158 elemnum = NCCS;\
00159 } else {\
00160 if(elemnum < arrlen) {\
00161 errsts = EARRAYLEN;\
00162 }\
00163 }\
00164 for(i=0; i <= elemnum; i++) {\
00165 iavalue[i] = ((struct _B_ *)(pxfhand.pxfstructptr))->_C_[i];\
00166 } \
00167 } \
00168 }
00169
00170 #define SETIFMATCHA(_A_,_B_,_C_) if (strcmp(_A_,#_C_) == 0) {\
00171 if(elemnum < 0 ) {\
00172 errsts = EARRAYLEN;\
00173 } else {\
00174 if(elemnum > arrlen) {\
00175 errsts = EARRAYLEN;\
00176 elemnum = NCCS;\
00177 } else {\
00178 if(elemnum < arrlen) {\
00179 errsts = EARRAYLEN;\
00180 }\
00181 }\
00182 for(i=0; i <= elemnum; i++) {\
00183 ((struct _B_ *)(pxfhand.pxfstructptr))->_C_[i] = iavalue[i]; \
00184 } \
00185 } \
00186 }
00187
00188 extern char *_fc_acopy(_fcd f);
00189
00190 #ifdef _UNICOS
00191 void
00192 PXFEINTGET(
00193 #else
00194 void
00195 _PXFEINTGET(
00196 #endif
00197 _f_int *jhandle,
00198 _fcd compnam,
00199 _f_int *ivalue,
00200 _f_int *index,
00201 _f_int *ierror)
00202 {
00203 char *component;
00204 _f_int cindex;
00205 int arrlen;
00206 int errsts;
00207 struct pxfhandle pxfhand;
00208 cindex = *index - 1;
00209 component = _fc_acopy(compnam);
00210 errsts = 0;
00211 *ivalue = 0;
00212
00213
00214 if (component == NULL) {
00215 *ierror = ENOMEM;
00216 return;
00217 }
00218
00219 pxfhand = _pxfhandle_table_lookup(&_pxfhandle_table, *jhandle);
00220
00221 if (pxfhand.pxfstructptr == NULL)
00222 errsts = EBADHANDLE;
00223 else {
00224 switch (pxfhand.pxftype) {
00225 case PXF_TERMIOS:
00226 arrlen = NCCS;
00227 GETIFMATCHE(component,termios,c_cc)
00228 else {
00229 errsts = ENONAME;
00230 }
00231 break;
00232 default:
00233 errsts = ENONAME;
00234 break;
00235 }
00236 }
00237 free(component);
00238 *ierror = errsts;
00239 return;
00240 }
00241
00242 #ifdef _UNICOS
00243 void
00244 PXFEINTSET(
00245 #else
00246 void
00247 _PXFEINTSET(
00248 #endif
00249 _f_int *jhandle,
00250 _fcd compnam,
00251 _f_int *ivalue,
00252 _f_int *index,
00253 _f_int *ierror)
00254 {
00255 char *component;
00256 _f_int cindex;
00257 int arrlen;
00258 int errsts;
00259 struct pxfhandle pxfhand;
00260 cindex = *index - 1;
00261 component = _fc_acopy(compnam);
00262 errsts = 0;
00263
00264
00265 if (component == NULL) {
00266 *ierror = ENOMEM;
00267 return;
00268 }
00269
00270 pxfhand = _pxfhandle_table_lookup(&_pxfhandle_table, *jhandle);
00271
00272 if (pxfhand.pxfstructptr == NULL)
00273 errsts = EBADHANDLE;
00274 else {
00275 switch (pxfhand.pxftype) {
00276 case PXF_TERMIOS:
00277 arrlen = NCCS;
00278 SETIFMATCHE(component,termios,c_cc)
00279 else {
00280 errsts = ENONAME;
00281 }
00282 break;
00283 default:
00284 errsts = ENONAME;
00285 break;
00286 }
00287 }
00288 free(component);
00289 *ierror = errsts;
00290 return;
00291 }
00292
00293 #ifdef _UNICOS
00294 void
00295 PXFAINTGET(
00296 #else
00297 void
00298 _PXFAINTGET(
00299 #endif
00300 _f_int *jhandle,
00301 _fcd compnam,
00302 _f_int *iavalue,
00303 _f_int *ialen,
00304 _f_int *ierror)
00305 {
00306 char *component;
00307 _f_int arrlen;
00308 _f_int elemnum;
00309 _f_int errsts;
00310 int i;
00311 struct pxfhandle pxfhand;
00312 component = _fc_acopy(compnam);
00313 elemnum = *ialen;
00314 errsts = 0;
00315
00316
00317 if (component == NULL) {
00318 *ierror = ENOMEM;
00319 return;
00320 }
00321
00322 pxfhand = _pxfhandle_table_lookup(&_pxfhandle_table, *jhandle);
00323
00324 if (pxfhand.pxfstructptr == NULL)
00325 errsts = EBADHANDLE;
00326 else {
00327 switch (pxfhand.pxftype) {
00328 case PXF_TERMIOS:
00329 arrlen = NCCS;
00330 GETIFMATCHA(component,termios,c_cc)
00331 else {
00332 errsts = ENONAME;
00333 }
00334 break;
00335 default:
00336 errsts = ENONAME;
00337 break;
00338 }
00339 }
00340 free(component);
00341 *ierror = errsts;
00342 return;
00343 }
00344
00345 #ifdef _UNICOS
00346 void
00347 PXFAINTSET(
00348 #else
00349 void
00350 _PXFAINTSET(
00351 #endif
00352 _f_int *jhandle,
00353 _fcd compnam,
00354 _f_int *iavalue,
00355 _f_int *ialen,
00356 _f_int *ierror)
00357 {
00358 char *component;
00359 _f_int arrlen;
00360 _f_int elemnum;
00361 _f_int errsts;
00362 int i;
00363 struct pxfhandle pxfhand;
00364 component = _fc_acopy(compnam);
00365 elemnum = *ialen;
00366 errsts = 0;
00367
00368
00369 if (component == NULL) {
00370 *ierror = ENOMEM;
00371 return;
00372 }
00373
00374 pxfhand = _pxfhandle_table_lookup(&_pxfhandle_table, *jhandle);
00375
00376 if (pxfhand.pxfstructptr == NULL)
00377 errsts = EBADHANDLE;
00378 else {
00379 switch (pxfhand.pxftype) {
00380 case PXF_TERMIOS:
00381 arrlen = NCCS;
00382 SETIFMATCHA(component,termios,c_cc)
00383 else {
00384 errsts = ENONAME;
00385 }
00386 break;
00387 default:
00388 errsts = ENONAME;
00389 break;
00390 }
00391 }
00392 free(component);
00393 *ierror = errsts;
00394 return;
00395 }
00396
00397 #ifndef _UNICOS
00398 void
00399 pxfeintget_(
00400 _f_int *jhandle,
00401 char *compnam,
00402 _f_int *ivalue,
00403 _f_int *index,
00404 _f_int *ierror,
00405 int lencompnam)
00406 {
00407 _PXFEINTGET(jhandle, _cptofcd(compnam, lencompnam),
00408 ivalue, index, ierror);
00409 }
00410
00411 void
00412 pxfeintset_(
00413 _f_int *jhandle,
00414 char *compnam,
00415 _f_int *ivalue,
00416 _f_int *index,
00417 _f_int *ierror,
00418 int lencompnam)
00419 {
00420 _PXFEINTGET(jhandle, _cptofcd(compnam, lencompnam),
00421 ivalue, index, ierror);
00422 }
00423
00424 void
00425 pxfaintget_(
00426 _f_int *jhandle,
00427 char *compnam,
00428 _f_int *iavalue,
00429 _f_int *ialen,
00430 _f_int *ierror,
00431 int lencompnam)
00432 {
00433 _PXFAINTGET(jhandle, _cptofcd(compnam, lencompnam),
00434 iavalue, ialen, ierror);
00435 }
00436
00437 void
00438 pxfaintset_(
00439 _f_int *jhandle,
00440 char *compnam,
00441 _f_int *iavalue,
00442 _f_int *ialen,
00443 _f_int *ierror,
00444 int lencompnam)
00445 {
00446 _PXFAINTGET(jhandle, _cptofcd(compnam, lencompnam),
00447 iavalue, ialen, ierror);
00448 }
00449
00450 #endif