V10/libI77/d/open.c
6d5
< #include "fcntl.h"
8,11d6
< #ifndef O_WRONLY
< #define O_RDONLY 0
< #define O_WRONLY 1
< #endif
15d9
< extern FILE *fdopen();
28c22
< char *f__w_mode[2] = {"w", "w"};
---
> char *f__w_mode[4] = {"w", "w", "r+w", "r+w"};
31c25
< char *f__w_mode[2] = {"wb", "w"};
---
> char *f__w_mode[4] = {"wb", "w", "r+b", "r+"};
40c34
< #ifdef MSDOS
---
> #ifdef NON_UNIX_STDIO
79c73,74
< char buf[256];
---
> integer rv;
> char buf[256], *s;
81c76,78
< #ifndef MSDOS
---
> #ifdef NON_UNIX_STDIO
> FILE *tf;
> #else
94c91
< #ifdef MSDOS
---
> #ifdef NON_UNIX_STDIO
107c104,105
< if((n=f_clos(&x))!=0) return(n);
---
> if ((rv = f_clos(&x)) != 0)
> return rv;
109c107
< b->url=a->orl;
---
> b->url = (int)a->orl;
133c131
< #ifdef MSDOS
---
> #ifdef NON_UNIX_STDIO
149,150c147
< (void) close(creat(buf, 0666));
< break;
---
> goto replace;
153c150
< #ifdef MSDOS
---
> #ifdef NON_UNIX_STDIO
161a159,163
> replace:
> #ifdef NON_UNIX_STDIO
> if (tf = fopen(buf,f__w_mode[0]))
> fclose(tf);
> #else
163c165
< break;
---
> #endif
176,177c178,180
< if((b->ufd = fopen(buf, f__r_mode[b->ufmt])) == NULL) {
< if ((n = open(buf,O_WRONLY)) >= 0) {
---
> if(!(b->ufd = fopen(buf, f__r_mode[b->ufmt]))) {
> #ifdef NON_UNIX_STDIO
> if (b->ufd = fopen(buf, f__w_mode[b->ufmt+2]))
179c182,187
< }
---
> else if (b->ufd = fopen(buf, f__w_mode[b->ufmt]))
> b->uwrt = 1;
> else
> #else
> if ((n = open(buf,O_WRONLY)) >= 0)
> b->uwrt = 2;
185a194
> #endif
190c199
< #ifndef MSDOS
---
> #ifndef NON_UNIX_STDIO
194c203,208
< if(a->orl && b->useek) rewind(b->ufd);
---
> if(b->useek)
> if (a->orl)
> rewind(b->ufd);
> else if ((s = a->oacc) && (*s == 'a' || *s == 'A')
> && fseek(b->ufd, 0L, SEEK_END))
> err(a->oerr,129,"open");