-int unistd_gzopen(char* pathname, int flags, mode_t mode)
-{
- char* gz_mode;
-
- switch (flags & O_ACCMODE) {
- case O_WRONLY:
- gz_mode = "w";
- break;
-
- case O_RDONLY:
- gz_mode = "r";
- break;
-
- case O_RDWR:
- default:
- errno = EINVAL;
- return -1;
- }
-
- int fd;
- gzFile gz_file;
-
- if ((fd = open(pathname, flags, mode)) == -1)
- return -1;
-
- if ((flags & O_CREAT) && fchmod(fd, mode))
- return -1;
-
- if (!(gz_file = gzdopen(fd, gz_mode))) {
- errno = ENOMEM;
- return -1;
- }
-
- return (int)gz_file;
-}
-