-static void osfopen(void)
-{
-#ifdef __OS2__
- APIRET rc;
- ULONG action;
- ULONG newsize = 0;
- ULONG fileAttr = 0;
- ULONG openAction = 0;
- ULONG openMode = 0;
-
- if ((modeType == 1) || (modeType == 4) || (modeType == 7)
- || (modeType == 10))
- {
- openAction |= OPEN_ACTION_FAIL_IF_NEW;
- openAction |= OPEN_ACTION_OPEN_IF_EXISTS;
- }
- else if ((modeType == 2) || (modeType == 5) || (modeType == 8)
- || (modeType == 11))
- {
- openAction |= OPEN_ACTION_CREATE_IF_NEW;
- openAction |= OPEN_ACTION_REPLACE_IF_EXISTS;
- }
- else if ((modeType == 3) || (modeType == 6) || (modeType == 9)
- || (modeType == 12))
- {
- openAction |= OPEN_ACTION_CREATE_IF_NEW;
- openAction |= OPEN_ACTION_OPEN_IF_EXISTS;
- }
- openMode |= OPEN_SHARE_DENYWRITE;
- if ((modeType == 1) || (modeType == 4))
- {
- openMode |= OPEN_ACCESS_READONLY;
- }
- else if ((modeType == 2) || (modeType == 3) || (modeType == 5)
- || (modeType == 6))
- {
- openMode |= OPEN_ACCESS_WRITEONLY;
- }
- else
- {
- openMode |= OPEN_ACCESS_READWRITE;
- }
- if ((strlen(fnm) == 2)
- && (fnm[1] == ':')
- && (openMode == OPEN_ACCESS_READONLY))
- {
- openMode |= OPEN_FLAGS_DASD;
- }
- rc = DosOpen((PSZ)fnm,
- &myfile->hfile,
- &action,
- newsize,
- fileAttr,
- openAction,
- openMode,
- NULL);
- if (rc != 0)
- {
- err = 1;
- errno = rc;
- }
-#endif
-#ifdef __MSDOS__
- int mode;
- int errind;
-
- if ((modeType == 1) || (modeType == 4))
- {
- mode = 0;
- }
- else if ((modeType == 2) || (modeType == 5))
- {
- mode = 1;
- }
- else
- {
- mode = 2;
- }
- myfile->hfile = __open(fnm, mode, &errind);
- if (errind)
- {
- err = 1;
- errno = myfile->hfile;
- }
-#endif
-#ifdef __MVS__
- int mode;
- char *p;
- int len;
-
- if ((modeType == 1) || (modeType == 4))
- {
- mode = 0;
- }
- else if ((modeType == 2) || (modeType == 5))
- {
- mode = 1;
- }
- else
- {
- mode = 2;
- }
- p = strchr(fnm, ':');
- if ((p != NULL) && (strncmp(fnm, "dd", 2) == 0))
- {
- p++;
- }
- else
- {
- p = (char *)fnm;
- }
- strcpy(myfile->ddname, " ");
- len = strlen(p);
- if (len > 8)
- {
- len = 8;
- }
- memcpy(myfile->ddname, p, len);
- p = myfile->ddname;
- while (*p != '\0')
- {
- *p = toupper(*p);
- p++;
- }
- myfile->hfile =
- __aopen(myfile->ddname, mode, &myfile->recfm, &myfile->lrecl);
- if ((modeType == 4) || (modeType == 5))
- {
- myfile->style = 0; /* binary */
- }
- else
- {
- myfile->style = 2; /* text */
- }
- myfile->style += myfile->recfm;
- if (myfile->style == VARIABLE_TEXT)
- {
- myfile->quickText = 1;
- }
- if (myfile->style == FIXED_BINARY)
- {
- myfile->quickBin = 1;
- }
- else
- {
- myfile->quickBin = 0;
- }