OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [lib/] [libc/] [mknod.c] - Blame information for rev 509

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 unneback
/*
2
 *  mknod()
3
 *
4
 *  This routine is not defined in the POSIX 1003.1b standard but is
5
 *  commonly supported on most UNIX and POSIX systems.  It is the
6
 *  foundation for creating file system objects.
7
 *
8
 *  COPYRIGHT (c) 1989-1999.
9
 *  On-Line Applications Research Corporation (OAR).
10
 *
11
 *  The license and distribution terms for this file may be
12
 *  found in the file LICENSE in this distribution or at
13
 *  http://www.OARcorp.com/rtems/license.html.
14
 *
15
 *  $Id: mknod.c,v 1.2 2001-09-27 12:01:15 chris Exp $
16
 */
17
 
18
#include <sys/types.h>
19
#include <sys/stat.h>
20
#include <fcntl.h>
21
#include <unistd.h>
22
#include <errno.h>
23
#include <stdlib.h>
24
 
25
#include "libio_.h"
26
 
27
int mknod(
28
  const char *pathname,
29
  mode_t      mode,
30
  dev_t       dev
31
)
32
{
33
  rtems_filesystem_location_info_t    temp_loc;
34
  int                                 i;
35
  const char                         *name_start;
36
  int                                 result;
37
 
38
  if ( !(mode & (S_IFREG|S_IFCHR|S_IFBLK|S_IFIFO) ) )
39
    set_errno_and_return_minus_one( EINVAL );
40
 
41
  if ( S_ISFIFO(mode) )
42
    set_errno_and_return_minus_one( ENOTSUP );
43
 
44
  rtems_filesystem_get_start_loc( pathname, &i, &temp_loc );
45
 
46
  result = (*temp_loc.ops->evalformake)(
47
    &pathname[i],
48
    &temp_loc,
49
    &name_start
50
  );
51
  if ( result != 0 )
52
    return -1;
53
 
54
  if ( !temp_loc.ops->mknod ) {
55
    rtems_filesystem_freenode( &temp_loc );
56
    set_errno_and_return_minus_one( ENOTSUP );
57
  }
58
 
59
  result =  (*temp_loc.ops->mknod)( name_start, mode, dev, &temp_loc );
60
 
61
  rtems_filesystem_freenode( &temp_loc );
62
 
63
  return result;
64
}

powered by: WebSVN 2.1.0

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