akaros/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/openat.c
<<
>>
Prefs
   1/* Copyright (C) 2005-2014 Free Software Foundation, Inc.
   2   This file is part of the GNU C Library.
   3
   4   The GNU C Library is free software; you can redistribute it and/or
   5   modify it under the terms of the GNU Lesser General Public
   6   License as published by the Free Software Foundation; either
   7   version 2.1 of the License, or (at your option) any later version.
   8
   9   The GNU C Library is distributed in the hope that it will be useful,
  10   but WITHOUT ANY WARRANTY; without even the implied warranty of
  11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12   Lesser General Public License for more details.
  13
  14   You should have received a copy of the GNU Lesser General Public
  15   License along with the GNU C Library; if not, see
  16   <http://www.gnu.org/licenses/>.  */
  17
  18#include <errno.h>
  19#include <fcntl.h>
  20#include <stdarg.h>
  21#include <stddef.h>
  22#include <stdio.h>
  23#include <sys/stat.h>
  24#include <kernel-features.h>
  25
  26/* Some mostly-generic code (e.g. sysdeps/posix/getcwd.c) uses this variable
  27   if __ASSUME_ATFCTS is not defined.  */
  28#ifndef __ASSUME_ATFCTS
  29int __have_atfcts;
  30#endif
  31
  32/* Open FILE with access OFLAG.  Interpret relative paths relative to
  33   the directory associated with FD.  If OFLAG includes O_CREAT, a
  34   third argument is the file protection.  */
  35int
  36__openat (fd, file, oflag)
  37     int fd;
  38     const char *file;
  39     int oflag;
  40{
  41  int mode = 0;
  42
  43  if (file == NULL)
  44    {
  45      __set_errno (EINVAL);
  46      return -1;
  47    }
  48
  49  if (oflag & O_CREAT)
  50    {
  51      va_list arg;
  52      va_start (arg, oflag);
  53      mode = va_arg (arg, int);
  54      va_end (arg);
  55    }
  56
  57        return ros_syscall(SYS_openat, fd, file, strlen(file), oflag, mode, 0);
  58}
  59libc_hidden_def (__openat)
  60weak_alias (__openat, openat)
  61
  62/* openat64 is the same as openat for akaros */
  63weak_alias (__openat, __openat64)
  64libc_hidden_weak (__openat64)
  65weak_alias (__openat, openat64)
  66