OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [uClibc/] [libc/] [stdlib/] [grantpt.c] - Diff between revs 1325 and 1765

Only display areas with differences | Details | Blame | View Log

Rev 1325 Rev 1765
/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
   This file is part of the GNU C Library.
   This file is part of the GNU C Library.
 
 
   The GNU C Library is free software; you can redistribute it and/or
   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public License as
   modify it under the terms of the GNU Library General Public License as
   published by the Free Software Foundation; either version 2 of the
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.
   License, or (at your option) any later version.
 
 
   The GNU C Library is distributed in the hope that it will be useful,
   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.
   Library General Public License for more details.
 
 
   You should have received a copy of the GNU Library General Public
   You should have received a copy of the GNU Library General Public
   License along with the GNU C Library; see the file COPYING.LIB.  If not,
   License along with the GNU C Library; see the file COPYING.LIB.  If not,
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.  */
   Boston, MA 02111-1307, USA.  */
 
 
#include <limits.h>
#include <limits.h>
#include <stdlib.h>
#include <stdlib.h>
 
 
/* If __ASSUME_DEVPTS__ is defined, grantpt() reduces to a stub since we
/* If __ASSUME_DEVPTS__ is defined, grantpt() reduces to a stub since we
   assume that the devfs/devpts filesystem automatically manages the
   assume that the devfs/devpts filesystem automatically manages the
   permissions. */
   permissions. */
#if !defined __ASSUME_DEVPTS__
#if !defined __ASSUME_DEVPTS__
#include <sys/statfs.h>
#include <sys/statfs.h>
 
 
/* Constant that identifies the `devpts' filesystem.  */
/* Constant that identifies the `devpts' filesystem.  */
#define DEVPTS_SUPER_MAGIC      0x1cd1
#define DEVPTS_SUPER_MAGIC      0x1cd1
/* Constant that identifies the `devfs' filesystem.  */
/* Constant that identifies the `devfs' filesystem.  */
#define DEVFS_SUPER_MAGIC       0x1373
#define DEVFS_SUPER_MAGIC       0x1373
 
 
/* Prototype for function that changes ownership and access permission
/* Prototype for function that changes ownership and access permission
   for slave pseudo terminals that do not live on a `devpts'
   for slave pseudo terminals that do not live on a `devpts'
   filesystem.  */
   filesystem.  */
int __unix_grantpt (int fd);
int __unix_grantpt (int fd);
 
 
/* Prototype for private function that gets the name of the slave
/* Prototype for private function that gets the name of the slave
   pseudo terminal in a safe way.  */
   pseudo terminal in a safe way.  */
static int pts_name (int fd, char **pts, size_t buf_len);
static int pts_name (int fd, char **pts, size_t buf_len);
 
 
#endif
#endif
 
 
/* Change the ownership and access permission of the slave pseudo
/* Change the ownership and access permission of the slave pseudo
   terminal associated with the master pseudo terminal specified
   terminal associated with the master pseudo terminal specified
   by FD.  */
   by FD.  */
int
int
grantpt (int fd)
grantpt (int fd)
{
{
#if !defined __ASSUME_DEVPTS__
#if !defined __ASSUME_DEVPTS__
  struct statfs fsbuf;
  struct statfs fsbuf;
# ifdef PATH_MAX
# ifdef PATH_MAX
  char _buf[PATH_MAX];
  char _buf[PATH_MAX];
# else
# else
  char _buf[512];
  char _buf[512];
# endif
# endif
  char *buf = _buf;
  char *buf = _buf;
 
 
  if (pts_name (fd, &buf, sizeof (_buf)))
  if (pts_name (fd, &buf, sizeof (_buf)))
    return -1;
    return -1;
 
 
  if (statfs (buf, &fsbuf) < 0)
  if (statfs (buf, &fsbuf) < 0)
    return -1;
    return -1;
 
 
  /* If the slave pseudo terminal lives on a `devpts' filesystem, the
  /* If the slave pseudo terminal lives on a `devpts' filesystem, the
     ownership and access permission are already set.  */
     ownership and access permission are already set.  */
  if (fsbuf.f_type != DEVPTS_SUPER_MAGIC && fsbuf.f_type != DEVFS_SUPER_MAGIC)
  if (fsbuf.f_type != DEVPTS_SUPER_MAGIC && fsbuf.f_type != DEVFS_SUPER_MAGIC)
  return __unix_grantpt (fd);
  return __unix_grantpt (fd);
#endif
#endif
  return 0;
  return 0;
}
}
 
 
#if !defined __ASSUME_DEVPTS__
#if !defined __ASSUME_DEVPTS__
# define grantpt __unix_grantpt
# define grantpt __unix_grantpt
# include "unix_grantpt.c"
# include "unix_grantpt.c"
#endif
#endif
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.