4.104.115
Last change
on this file since 9ba0e55 was
9ba0e55,
checked in by Joel Sherrill <joel.sherrill@…>, on 01/18/10 at 23:39:31
|
2010-01-18 Joel Sherrill <joel.sherrill@…>
Coverity Id 19
Coverity Id 20
Coverity Id 21
- libfs/src/imfs/imfs_link.c, libfs/src/imfs/imfs_load_tar.c,
libfs/src/imfs/imfs_mknod.c: Add comment to explain allocation is
for life of file, not scope of method.
|
-
Property mode set to
100644
|
File size:
1.9 KB
|
Rev | Line | |
---|
[07a3253d] | 1 | /* |
---|
| 2 | * IMFS_mknod |
---|
| 3 | * |
---|
| 4 | * Routine to create a node in the IMFS file system. |
---|
| 5 | * |
---|
[9ba0e55] | 6 | * COPYRIGHT (c) 1989-2010. |
---|
[07a3253d] | 7 | * On-Line Applications Research Corporation (OAR). |
---|
| 8 | * |
---|
| 9 | * The license and distribution terms for this file may be |
---|
| 10 | * found in the file LICENSE in this distribution or at |
---|
[cf0539b1] | 11 | * http://www.rtems.com/license/LICENSE. |
---|
[07a3253d] | 12 | * |
---|
| 13 | * $Id$ |
---|
| 14 | */ |
---|
| 15 | |
---|
[d6b1d73] | 16 | #if HAVE_CONFIG_H |
---|
| 17 | #include "config.h" |
---|
| 18 | #endif |
---|
| 19 | |
---|
[07a3253d] | 20 | #include <sys/types.h> |
---|
| 21 | #include <sys/stat.h> |
---|
| 22 | #include <fcntl.h> |
---|
| 23 | #include <unistd.h> |
---|
| 24 | #include <errno.h> |
---|
| 25 | #include <stdlib.h> |
---|
| 26 | |
---|
| 27 | #include "imfs.h" |
---|
[c058578] | 28 | #include <rtems/libio_.h> |
---|
[b2709481] | 29 | #include <rtems/seterr.h> |
---|
[07a3253d] | 30 | |
---|
| 31 | int IMFS_mknod( |
---|
| 32 | const char *token, /* IN */ |
---|
[a5305f6b] | 33 | mode_t mode, /* IN */ |
---|
[07a3253d] | 34 | dev_t dev, /* IN */ |
---|
| 35 | rtems_filesystem_location_info_t *pathloc /* IN/OUT */ |
---|
| 36 | ) |
---|
| 37 | { |
---|
| 38 | IMFS_token_types type = 0; |
---|
| 39 | IMFS_jnode_t *new_node; |
---|
| 40 | int result; |
---|
[3cf8394] | 41 | char new_name[ IMFS_NAME_MAX + 1 ]; |
---|
[07a3253d] | 42 | IMFS_types_union info; |
---|
[a5305f6b] | 43 | |
---|
[7baa484] | 44 | IMFS_get_token( token, strlen( token ), new_name, &result ); |
---|
[07a3253d] | 45 | |
---|
| 46 | /* |
---|
| 47 | * Figure out what type of IMFS node this is. |
---|
| 48 | */ |
---|
| 49 | |
---|
| 50 | if ( S_ISDIR(mode) ) |
---|
| 51 | type = IMFS_DIRECTORY; |
---|
| 52 | else if ( S_ISREG(mode) ) |
---|
| 53 | type = IMFS_MEMORY_FILE; |
---|
| 54 | else if ( S_ISBLK(mode) || S_ISCHR(mode) ) { |
---|
| 55 | type = IMFS_DEVICE; |
---|
| 56 | rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor ); |
---|
[e2324c0] | 57 | } |
---|
| 58 | else if (S_ISFIFO(mode)) |
---|
| 59 | type = IMFS_FIFO; |
---|
| 60 | else { |
---|
[b2709481] | 61 | rtems_set_errno_and_return_minus_one( EINVAL ); |
---|
[07a3253d] | 62 | } |
---|
[a5305f6b] | 63 | |
---|
[07a3253d] | 64 | /* |
---|
| 65 | * Allocate and fill in an IMFS jnode |
---|
[9ba0e55] | 66 | * |
---|
| 67 | * NOTE: Coverity thinks this is a resource leak since a node |
---|
| 68 | * is created but never deleted. The scope of the allocation |
---|
| 69 | * is that of a file -- not this method. Coverity Id 21. |
---|
[07a3253d] | 70 | */ |
---|
| 71 | new_node = IMFS_create_node( |
---|
| 72 | pathloc, |
---|
| 73 | type, |
---|
[a5305f6b] | 74 | new_name, |
---|
[07a3253d] | 75 | mode, |
---|
| 76 | &info |
---|
| 77 | ); |
---|
| 78 | |
---|
| 79 | if ( !new_node ) |
---|
[b2709481] | 80 | rtems_set_errno_and_return_minus_one( ENOMEM ); |
---|
[07a3253d] | 81 | |
---|
| 82 | return 0; |
---|
| 83 | } |
---|
Note: See
TracBrowser
for help on using the repository browser.