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 #pragma ident "@(#) libf/pxf/pxfconst.c 92.5 10/04/99 12:48:35"
00042 #include <fortran.h>
00043 #include <string.h>
00044 #include <sys/types.h>
00045 #include <fcntl.h>
00046 #include <sys/stat.h>
00047 #include <malloc.h>
00048 #include <errno.h>
00049 #include <liberrno.h>
00050 #include <stdio.h>
00051 #include <unistd.h>
00052 #include <sys/wait.h>
00053 #include <sys/signal.h>
00054 #include <sys/termios.h>
00055 #ifdef __mips
00056 #include <sys/ttydev.h>
00057 #endif
00058
00059
00060
00061 struct ctbl {
00062 char *str;
00063 _f_int val;
00064 };
00065
00066 static
00067 struct ctbl consttbl[] = {
00068
00069 {"F_GETLK",F_GETLK},
00070 {"F_SETLK",F_SETLK},
00071 {"F_SETLKW",F_SETLKW},
00072 {"F_RDLCK",F_RDLCK},
00073 {"F_WRLCK",F_WRLCK},
00074 {"F_UNLCK",F_UNLCK},
00075 {"F_DUPFD",F_DUPFD},
00076 {"F_GETFD",F_GETFD},
00077 {"F_SETFD",F_SETFD},
00078 {"F_GETFL",F_GETFL},
00079 {"F_SETFL",F_SETFL},
00080 #ifdef _UNICOS
00081 {"F_SETSB",F_SETSB},
00082 {"F_SETALF",F_SETALF},
00083 {"F_CLRALF",F_CLRALF},
00084 #endif
00085 {"O_RDONLY",O_RDONLY},
00086 {"O_WRONLY",O_RDONLY},
00087 {"O_RDWR",O_RDWR},
00088 {"O_ACCMODE",O_ACCMODE},
00089 {"O_NDELAY",O_NDELAY},
00090 {"O_APPEND",O_APPEND},
00091 {"O_SYNC",O_SYNC},
00092 {"O_NONBLOCK",O_NONBLOCK},
00093 #ifdef _UNICOS
00094 {"O_RAW",O_RAW},
00095 {"O_SSD",O_SSD},
00096 #endif
00097 {"O_CREAT",O_CREAT},
00098 {"O_TRUNC",O_TRUNC},
00099 {"O_EXCL",O_EXCL},
00100 {"O_NOCTTY",O_NOCTTY},
00101 #ifdef _UNICOS
00102 {"O_BIG",O_BIG},
00103 {"O_PLACE",O_PLACE},
00104 {"O_RESTART",O_RESTART},
00105 {"O_ASYNC",O_ASYNC},
00106 {"O_PTYIGN",O_PTYIGN},
00107 {"O_SFSXOP",O_SFSXOP},
00108 {"O_LDRAW",O_LDRAW},
00109 {"O_WELLFORMED",O_WELLFORMED},
00110 {"O_SFS_DEFER_TM",O_SFS_DEFER_TM},
00111
00112 {"S_ALF_NOGROW",S_ALF_NOGROW},
00113 {"S_ALF_PARTR",S_ALF_PARTR},
00114 #endif
00115
00116 {"S_ISUID",S_ISUID},
00117 {"S_ISGID",S_ISGID},
00118 {"S_IRWXU",S_IRWXU},
00119 {"S_IRUSR",S_IRUSR},
00120 {"S_IWUSR",S_IWUSR},
00121 {"S_IXUSR",S_IXUSR},
00122 {"S_IRWXG",S_IRWXG},
00123 {"S_IRGRP",S_IRGRP},
00124 {"S_IWGRP",S_IWGRP},
00125 {"S_IXGRP",S_IXGRP},
00126 {"S_IRWXO",S_IRWXO},
00127 {"S_IROTH",S_IROTH},
00128 {"S_IWOTH",S_IWOTH},
00129 {"S_IXOTH",S_IXOTH},
00130
00131 {"EPERM",EPERM},
00132 {"ENOENT",ENOENT},
00133 {"ESRCH",ESRCH},
00134 {"EINTR",EINTR},
00135 {"EIO",EIO},
00136 {"ENXIO",ENXIO},
00137 {"E2BIG",E2BIG},
00138 {"ENOEXEC",ENOEXEC},
00139 {"EBADF",EBADF},
00140 {"ECHILD",ECHILD},
00141 {"EAGAIN",EAGAIN},
00142 {"ENOMEM",ENOMEM},
00143 {"EACCES",EACCES},
00144 {"EFAULT",EFAULT},
00145 {"ENOTBLK",ENOTBLK},
00146 {"EBUSY",EBUSY},
00147 {"EEXIST",EEXIST},
00148 {"EXDEV",EXDEV},
00149 {"ENODEV",ENODEV},
00150 {"ENOTDIR",ENOTDIR},
00151 {"EISDIR",EISDIR},
00152 {"EINVAL",EINVAL},
00153 {"ENFILE",ENFILE},
00154 {"EMFILE",EMFILE},
00155 {"ENOTTY",ENOTTY},
00156 {"ETXTBSY",ETXTBSY},
00157 {"EFBIG",EFBIG},
00158 {"ENOSPC",ENOSPC},
00159 {"ESPIPE",ESPIPE},
00160 {"EROFS",EROFS},
00161 {"EMLINK",EMLINK},
00162 {"EPIPE",EPIPE},
00163 {"EDOM",EDOM},
00164 {"ERANGE",ERANGE},
00165 {"ENOMSG",ENOMSG},
00166 {"EIDRM",EIDRM},
00167 #if defined(BUILD_OS_DARWIN)
00168 #else
00169 {"ECHRNG",ECHRNG},
00170 {"EL2NSYNC",EL2NSYNC},
00171 {"EL3HLT",EL3HLT},
00172 {"EL3RST",EL3RST},
00173 {"ELNRNG",ELNRNG},
00174 {"EUNATCH",EUNATCH},
00175 {"ENOCSI",ENOCSI},
00176 {"EL2HLT",EL2HLT},
00177 #endif
00178 {"EDEADLK",EDEADLK},
00179 {"ENOLCK",ENOLCK},
00180 #ifdef _UNICOS
00181 {"EINVFS",EINVFS},
00182 {"EFILECH",EFILECH},
00183 {"EFILERM",EFILERM},
00184 {"ERFLOCK",ERFLOCK},
00185 {"ENOSDS",ENOSDS},
00186 {"EFILESH",EFILESH},
00187 {"EMALFORMED",EMALFORMED},
00188 {"EFOREIGNFS",EFOREIGNFS},
00189 {"EQUSR",EQUSR},
00190 {"EQGRP",EQGRP},
00191 {"EQACT",EQACT},
00192 #endif
00193 #ifdef __mips
00194 {"EBADE",EBADE},
00195 {"EBADR",EBADR},
00196 {"EXFULL",EXFULL},
00197 {"ENOANO",ENOANO},
00198 {"EBADRQC",EBADRQC},
00199 {"EBADSLT",EBADSLT},
00200 {"EDEADLOCK",EDEADLOCK},
00201 {"EBFONT",EBFONT},
00202 {"ENOSTR",ENOSTR},
00203 {"ENODATA",ENODATA},
00204 {"ETIME",ETIME},
00205 {"ENOSR",ENOSR},
00206 {"ENONET",ENONET},
00207 {"ENOPKG",ENOPKG},
00208 #endif
00209 {"EREMOTE",EREMOTE},
00210 #ifdef __mips
00211 {"ENOLINK",ENOLINK},
00212 {"EADV",EADV},
00213 {"ESRMNT",ESRMNT},
00214 {"ECOMM",ECOMM},
00215 {"EPROTO",EPROTO},
00216 #endif
00217 {"EMULTIHOP",EMULTIHOP},
00218 #ifdef _UNICOS
00219 {"EPROCLIM",EPROCLIM},
00220 {"EMEMLIM",EMEMLIM},
00221 {"EDISKLIM",EDISKLIM},
00222 {"ETOOMANYU",ETOOMANYU},
00223 #endif
00224 #ifdef __mips
00225 {"EBADMSG",EBADMSG},
00226 #endif
00227 {"ENAMETOOLONG",ENAMETOOLONG},
00228 #ifdef __mips
00229 {"EOVERFLOW",EOVERFLOW},
00230 {"ENOTUNIQ",ENOTUNIQ},
00231 {"EBADFD",EBADFD},
00232 {"EREMCHG",EREMCHG},
00233 {"ELIBACC",ELIBACC},
00234 {"ELIBBAD",ELIBBAD},
00235 {"ELIBSCN",ELIBSCN},
00236 {"ELIBMAX",ELIBMAX},
00237 {"ELIBEXEC",ELIBEXEC},
00238 {"EILSEQ",EILSEQ},
00239 #endif
00240 {"ENOSYS",ENOSYS},
00241 #ifdef __mips
00242 {"ERESTART",ERESTART},
00243 {"ESTRPIPE",ESTRPIPE},
00244 #endif
00245 {"ENOTEMPTY",ENOTEMPTY},
00246 #ifdef _UNICOS
00247 {"ERENAMESELF",ERENAMESELF},
00248 #endif
00249 {"ELOOP",ELOOP},
00250 #ifdef __mips
00251 {"EUSERS",EUSERS},
00252 {"ENOTSOCK",ENOTSOCK},
00253 {"EDESTADDRREQ",EDESTADDRREQ},
00254 {"EMSGSIZE",EMSGSIZE},
00255 {"EPROTOTYPE",EPROTOTYPE},
00256 {"ENOPROTOOPT",ENOPROTOOPT},
00257 #endif
00258
00259 {"ENONAME",ENONAME},
00260 {"ENOHANDLE",ENOHANDLE},
00261 {"ETRUNC",ETRUNC},
00262 {"EARRAYLEN",EARRAYLEN},
00263 {"EEND",EEND},
00264 {"EBADHANDLE",EBADHANDLE},
00265 {"EBADID",EBADID},
00266
00267 {"STDIN_FILENO",0},
00268 {"STDOUT_FILENO",1},
00269 {"STDERR_FILENO",2},
00270
00271 {"SEEK_SET",SEEK_SET},
00272 {"SEEK_CUR",SEEK_CUR},
00273 {"SEEK_END",SEEK_END},
00274
00275 {"R_OK",R_OK},
00276 {"W_OK",W_OK},
00277 {"X_OK",X_OK},
00278 {"F_OK",F_OK},
00279
00280 {"ARG_MAX",_SC_ARG_MAX},
00281 {"CHILD_MAX",_SC_CHILD_MAX},
00282 {"CLK_TCK",_SC_CLK_TCK},
00283 {"NGROUPS_MAX",_SC_NGROUPS_MAX},
00284 {"OPEN_MAX",_SC_OPEN_MAX},
00285 {"STREAM_MAX",_SC_STREAM_MAX},
00286 {"TZNAME_MAX",_SC_TZNAME_MAX},
00287 {"_POSIX_JOB_CONTROL",_SC_JOB_CONTROL},
00288 {"_POSIX_SAVED_IDS",_SC_SAVED_IDS},
00289 {"_POSIX_VERSION",_SC_VERSION},
00290
00291 {"WNOHANG",WNOHANG},
00292 {"WUNTRACED",WUNTRACED},
00293 #ifdef _UNICOS
00294 {"WMTWAIT",WMTWAIT},
00295 {"WLWPWAIT",WLWPWAIT},
00296 #endif
00297
00298 {"STDIN_UNIT",100},
00299 {"STDOUT_UNIT",101},
00300 {"STDERR_UNIT",102},
00301
00302 #ifdef __mips
00303 {"SIG_NOP",SIG_NOP},
00304 #endif
00305 {"SIG_BLOCK",SIG_BLOCK},
00306 {"SIG_UNBLOCK",SIG_UNBLOCK},
00307 {"SIG_SETMASK",SIG_SETMASK},
00308
00309 {"SIGHUP",SIGHUP},
00310 {"SIGINT",SIGINT},
00311 {"SIGQUIT",SIGQUIT},
00312 {"SIGILL",SIGILL},
00313 {"SIGTRAP",SIGTRAP},
00314 {"SIGABRT",SIGABRT},
00315 {"SIGIOT",SIGIOT},
00316 #ifdef _UNICOS
00317 {"SIGHWE",SIGHWE},
00318 {"SIGERR",SIGERR},
00319 #endif
00320 #ifndef _LITTLE_ENDIAN
00321 {"SIGEMT",SIGEMT},
00322 #endif
00323 {"SIGFPE",SIGFPE},
00324 {"SIGKILL",SIGKILL},
00325 {"SIGBUS",SIGBUS},
00326 #ifdef _UNICOS
00327 {"SIGPRE",SIGPRE},
00328 {"SIGORE",SIGORE},
00329 #endif
00330 {"SIGSEGV",SIGSEGV},
00331 #ifndef _LITTLE_ENDIAN
00332 {"SIGSYS",SIGSYS},
00333 #endif
00334 {"SIGPIPE",SIGPIPE},
00335 {"SIGALRM",SIGALRM},
00336 {"SIGTERM",SIGTERM},
00337 {"SIGIO",SIGIO},
00338 {"SIGURG",SIGURG},
00339 #if ! defined(BUILD_OS_DARWIN)
00340 {"SIGCLD",SIGCLD},
00341 #endif
00342 {"SIGCHLD",SIGCHLD},
00343 #if ! defined(BUILD_OS_DARWIN)
00344 {"SIGPWR",SIGPWR},
00345 #endif
00346 #ifdef _UNICOS
00347 {"SIGMT",SIGMT},
00348 {"SIGMTKILL",SIGMTKILL},
00349 {"SIGBUFIO",SIGBUFIO},
00350 {"SIGRECOVERY",SIGRECOVERY},
00351 {"SIGUME",SIGUME},
00352 {"SIGDLK",SIGDLK},
00353 {"SIGCPULIM",SIGCPULIM},
00354 {"SIGSHUTDN",SIGSHUTDN},
00355 #endif
00356 {"SIGSTOP",SIGSTOP},
00357 {"SIGTSTP",SIGTSTP},
00358 {"SIGCONT",SIGCONT},
00359 {"SIGTTIN",SIGTTIN},
00360 {"SIGTTOU",SIGTTOU},
00361 {"SIGWINCH",SIGWINCH},
00362 #ifdef _UNICOS
00363 {"SIGRPE",SIGRPE},
00364 {"SIGWRBKPT",SIGWRBKPT},
00365 {"SIGNOBDM",SIGNOBDM},
00366 {"SIGAMI",SIGAMI},
00367 {"SIGSMCE",SIGSMCE},
00368 {"SIGINFO",SIGINFO},
00369 #endif
00370 {"SIGUSR1",SIGUSR1},
00371 {"SIGUSR2",SIGUSR2},
00372 #if defined(__mips) || defined(_LITTLE_ENDIAN)
00373 #if ! defined(BUILD_OS_DARWIN)
00374 {"SIGPOLL",SIGPOLL},
00375 #endif
00376 {"SIGVTALRM",SIGVTALRM},
00377 {"SIGPROF",SIGPROF},
00378 {"SIGXCPU",SIGXCPU},
00379 {"SIGXFSZ",SIGXFSZ},
00380 #ifndef _LITTLE_ENDIAN
00381 {"SIGCKPT",SIGCKPT},
00382 {"SIGRTMIN",SIGRTMIN},
00383 {"SIGRTMAX",SIGRTMAX},
00384 #endif
00385 #endif
00386 {"SIG_DFL",(long) SIG_DFL},
00387 {"SIG_IGN",(long) SIG_IGN},
00388
00389 {"SA_NOCLDSTOP",SA_NOCLDSTOP},
00390 #ifndef _LITTLE_ENDIAN
00391 {"SA_RESETHAND",SA_RESETHAND},
00392 {"SA_NODEFER",SA_NODEFER},
00393 {"SA_NOCLDWAIT",SA_NOCLDWAIT},
00394 #endif
00395 #ifdef _UNICOS
00396 {"SA_CLEARPEND",SA_CLEARPEND},
00397 {"SA_CLEARMASK",SA_CLEARMASK},
00398 {"SA_WAKEUP",SA_WAKEUP},
00399 {"SA_REGMTASK",SA_REGMTASK},
00400 {"SA_REGLWP",SA_REGLWP},
00401 {"SA_SIGOFFHAND",SA_SIGOFFHAND},
00402 #elif !defined(_LITTLE_ENDIAN)
00403 {"SA_ONSTACK",SA_ONSTACK},
00404 {"SA_RESTART",SA_RESTART},
00405 {"SA_SIGINFO",SA_SIGINFO},
00406 #endif
00407
00408 {"IGNBRK",IGNBRK},
00409 {"BRKINT",BRKINT},
00410 {"IGNPAR",IGNPAR},
00411 {"PARMRK",PARMRK},
00412 {"INPCK",INPCK},
00413 {"ISTRIP",ISTRIP},
00414 {"INLCR",INLCR},
00415 {"IGNCR",IGNCR},
00416 {"ICRNL",ICRNL},
00417 #if ! defined(BUILD_OS_DARWIN)
00418 {"IUCLC",IUCLC},
00419 #endif
00420 {"IXON",IXON},
00421 {"IXANY",IXANY},
00422 {"IXOFF",IXOFF},
00423 #ifdef __mips
00424 {"IMAXBEL",IMAXBEL},
00425 {"IBLKMD",IBLKMD},
00426 #elif defined(_LITTLE_ENDIAN)
00427 {"IMAXBEL",IMAXBEL},
00428 #endif
00429
00430 {"OPOST",OPOST},
00431 #if ! defined(BUILD_OS_DARWIN)
00432 {"OLCUC",OLCUC},
00433 #endif
00434 {"ONLCR",ONLCR},
00435 {"OCRNL",OCRNL},
00436 {"ONOCR",ONOCR},
00437 {"ONLRET",ONLRET},
00438 {"OFILL",OFILL},
00439 {"OFDEL",OFDEL},
00440
00441 {"CSIZE",CSIZE},
00442 {"CS5",CS5},
00443 {"CS6",CS6},
00444 {"CS7",CS7},
00445 {"CS8",CS8},
00446 {"CSTOPB",CSTOPB},
00447 {"CREAD",CREAD},
00448 {"PARENB",PARENB},
00449 {"PARODD",PARODD},
00450 {"HUPCL",HUPCL},
00451 {"CLOCAL",CLOCAL},
00452
00453 {"ISIG",ISIG},
00454 {"ICANON",ICANON},
00455 {"ECHOE",ECHOE},
00456 {"ECHOK",ECHOK},
00457 {"ECHONL",ECHONL},
00458 {"NOFLSH",NOFLSH},
00459 {"TOSTOP",TOSTOP},
00460 {"IEXTEN",IEXTEN},
00461
00462 {"VINTR",VINTR},
00463 {"VQUIT",VQUIT},
00464 {"VERASE",VERASE},
00465 {"VKILL",VKILL},
00466 {"VEOF",VEOF},
00467 {"VEOL",VEOL},
00468 {"VEOL2",VEOL2},
00469 {"VMIN",VMIN},
00470 {"VTIME",VTIME},
00471 #if ! defined(BUILD_OS_DARWIN)
00472 #ifdef _LITTLE_ENDIAN
00473 {"VSWTC",VSWTC},
00474 #else
00475 {"VSWTCH",VSWTCH},
00476 #endif
00477 #endif
00478 {"VSUSP",VSUSP},
00479 {"VSTART",VSTART},
00480 {"VSTOP",VSTOP},
00481 #ifndef _LITTLE_ENDIAN
00482 {"VDSUSP",VDSUSP},
00483 #endif
00484 {"VREPRINT",VREPRINT},
00485 {"VDISCARD",VDISCARD},
00486 {"VWERASE",VWERASE},
00487 {"VLNEXT",VLNEXT},
00488 #ifdef __mips
00489 {"VRPRNT",VRPRNT},
00490 {"VFLUSHO",VFLUSHO},
00491 #endif
00492
00493
00494 {"B0",B0},
00495 {"B50",B50},
00496 {"B75",B75},
00497 {"B110",B110},
00498 {"B134",B134},
00499 {"B150",B150},
00500 {"B200",B200},
00501 {"B300",B300},
00502 {"B600",B600},
00503 {"B1200",B1200},
00504 {"B1800",B1800},
00505 {"B2400",B2400},
00506 {"B4800",B4800},
00507 {"B9600",B9600},
00508 {"B19200",B19200},
00509 {"B38400",B38400},
00510
00511 {"NCCS",NCCS},
00512
00513 {"TCSANOW",TCSANOW},
00514 {"TCSADRAIN",TCSADRAIN},
00515 {"TCSAFLUSH",TCSAFLUSH},
00516
00517 {"TCIFLUSH",TCIFLUSH},
00518 {"TCOFLUSH",TCOFLUSH},
00519 {"TCIOFLUSH",TCIOFLUSH},
00520
00521 {"TCOOFF",TCOOFF},
00522 {"TCOON",TCOON},
00523 {"TCIOFF",TCIOFF},
00524 {"TCION",TCION},
00525 };
00526
00527 #define NUMCONST sizeof(consttbl)/sizeof(struct ctbl)
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541 #ifdef _UNICOS
00542 void
00543 PXFCONST(
00544 #else
00545 void
00546 _PXFCONST(
00547 #endif
00548 _fcd constname,
00549 _f_int *ival,
00550 _f_int *ierr
00551 )
00552 {
00553 char *constnm;
00554 int i;
00555
00556
00557 constnm = _fc_acopy(constname);
00558 if (constnm == NULL) {
00559 *ierr = ENOMEM;
00560 return;
00561 }
00562 *ierr = 0;
00563 for (i = 0; i < NUMCONST; i++) {
00564 if (strcmp(constnm,consttbl[i].str) == 0) {
00565 *ival = consttbl[i].val;
00566 break;
00567 }
00568 }
00569 if (i == NUMCONST) {
00570 *ierr = ENONAME;
00571 }
00572 free(constnm);
00573 }
00574
00575 #ifndef _UNICOS
00576 void
00577 pxfconst_(
00578 char *constname,
00579 _f_int *ival,
00580 _f_int *ierr,
00581 _f_int constnamelen
00582 )
00583 {
00584 _PXFCONST(_cptofcd(constname, constnamelen), ival, ierr);
00585 }
00586 #endif
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599 #ifdef _UNICOS
00600 _f_int
00601 IPXFCONST(
00602 #else
00603 _f_int
00604 _IPXFCONST(
00605 #endif
00606 _fcd constname
00607 )
00608 {
00609 _f_int ival;
00610 _f_int ierr;
00611 #ifdef _UNICOS
00612 PXFCONST(constname, &ival, &ierr);
00613 #else
00614 _PXFCONST(constname, &ival, &ierr);
00615 #endif
00616 if (ierr != 0) {
00617 return(-1);
00618 }
00619 return(ival);
00620 }
00621
00622 #ifndef _UNICOS
00623 _f_int
00624 ipxfconst_(
00625 char *constname,
00626 _f_int constnamelen
00627 )
00628 {
00629 return _IPXFCONST(_cptofcd(constname, constnamelen));
00630 }
00631 #endif
00632
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644
00645
00646
00647 #ifdef _UNICOS
00648 _f_log
00649 PXFISCONST(
00650 #else
00651 _f_log
00652 _PXFISCONST(
00653 #endif
00654 _fcd constname
00655 )
00656 {
00657 _f_int ival;
00658 _f_int ierr;
00659 #ifdef _UNICOS
00660 PXFCONST(constname, &ival, &ierr);
00661 #else
00662 _PXFCONST(constname, &ival, &ierr);
00663 #endif
00664 if (ierr == 0) {
00665 return(_btol(1));
00666 }
00667 return(_btol(0));
00668 }
00669
00670
00671 #ifndef _UNICOS
00672 _f_log
00673 pxfisconst_(
00674 char *constname,
00675 _f_int constnamelen
00676 )
00677 {
00678 return _PXFISCONST( _cptofcd(constname, constnamelen));
00679 }
00680 #endif