|
|
|
@ -94,6 +94,7 @@ local gzFile gz_open(path, fd, mode) |
|
|
|
|
const char *mode; |
|
|
|
|
{ |
|
|
|
|
gz_statep state; |
|
|
|
|
int cloexec = 0, exclusive = 0; |
|
|
|
|
|
|
|
|
|
/* check input */ |
|
|
|
|
if (path == NULL) |
|
|
|
@ -133,6 +134,12 @@ local gzFile gz_open(path, fd, mode) |
|
|
|
|
return NULL; |
|
|
|
|
case 'b': /* ignore -- will request binary anyway */ |
|
|
|
|
break; |
|
|
|
|
case 'e': |
|
|
|
|
cloexec = 1; |
|
|
|
|
break; |
|
|
|
|
case 'x': |
|
|
|
|
exclusive = 1; |
|
|
|
|
break; |
|
|
|
|
case 'f': |
|
|
|
|
state->strategy = Z_FILTERED; |
|
|
|
|
break; |
|
|
|
@ -183,10 +190,13 @@ local gzFile gz_open(path, fd, mode) |
|
|
|
|
#endif |
|
|
|
|
#ifdef O_BINARY |
|
|
|
|
O_BINARY | |
|
|
|
|
#endif |
|
|
|
|
#ifdef O_CLOEXEC |
|
|
|
|
(cloexec ? O_CLOEXEC : 0) | |
|
|
|
|
#endif |
|
|
|
|
(state->mode == GZ_READ ? |
|
|
|
|
O_RDONLY : |
|
|
|
|
(O_WRONLY | O_CREAT | ( |
|
|
|
|
(O_WRONLY | O_CREAT | (exclusive ? O_EXCL : 0) | ( |
|
|
|
|
state->mode == GZ_WRITE ? |
|
|
|
|
O_TRUNC : |
|
|
|
|
O_APPEND))), |
|
|
|
|