text: /*
   * Copyright (c) 2005-2014 Rich Felker, et al.
   * Copyright (c) 2015-2016 HarveyOS et al.
   *
   * Use of this source code is governed by a MIT-style
   * license that can be found in the LICENSE.mit file.
   */
  
  #include "stdio_impl.h"
  #include <fcntl.h>
  #include <string.h>
  #include <errno.h>
  #include <unistd.h>
  
  FILE *fopen(const char *restrict filename, const char *restrict mode)
  {
  	FILE *f;
  	int fd;
  	int flags;
  
  	/* Check for valid initial mode character */
  	if (!strchr("rwa", *mode)) {
  		errno = EINVAL;
  		return 0;
  	}
  
  	/* Compute the flags to pass to open() */
  	flags = __fmodeflags(mode);
  
  	fd = open(filename, flags, 0666);
  	if (fd < 0) return 0;
  	if (flags & O_CLOEXEC)
  		fcntl(fd, F_SETFD, FD_CLOEXEC);
  
  	f = fdopen(fd, mode);
  	if (f) return f;
  
  	close(fd);
  	return 0;
  }
  