source: rtems/c/src/lib/libc/imfs_rmnod.c @ 946178d

4.104.114.84.95
Last change on this file since 946178d was 08311cc3, checked in by Joel Sherrill <joel.sherrill@…>, on 11/17/99 at 17:51:34

Updated copyright notice.

  • Property mode set to 100644
File size: 1.5 KB
Line 
1/*
2 *  IMFS Node Removal Handler
3 *
4 *  This file contains the handler used to remove a node when a file type
5 *  does not require special actions.
6 *
7 *  COPYRIGHT (c) 1989-1999.
8 *  On-Line Applications Research Corporation (OAR).
9 *
10 *  The license and distribution terms for this file may be
11 *  found in the file LICENSE in this distribution or at
12 *  http://www.OARcorp.com/rtems/license.html.
13 *
14 *  $Id$
15 */
16
17#include <rtems.h>
18#include <rtems/libio.h>
19#include "libio_.h"
20
21#include "imfs.h"
22
23/*
24 *  IMFS_rmnod
25 */
26
27int IMFS_rmnod(
28  rtems_filesystem_location_info_t      *pathloc       /* IN */
29)
30{
31  IMFS_jnode_t *the_jnode; 
32
33  the_jnode = (IMFS_jnode_t *) pathloc->node_access;
34
35  /*
36   * Take the node out of the parent's chain that contains this node
37   */
38
39  if ( the_jnode->Parent != NULL ) {
40    Chain_Extract( (Chain_Node *) the_jnode );
41    the_jnode->Parent = NULL;
42  }
43
44  /*
45   * Decrement the link counter and see if we can free the space.
46   */
47
48  the_jnode->st_nlink--;
49  IMFS_update_ctime( the_jnode );
50
51  /*
52   * The file cannot be open and the link must be less than 1 to free.
53   */
54
55  if ( !rtems_libio_is_file_open( the_jnode ) && (the_jnode->st_nlink < 1) ) {
56
57    /*
58     * Is rtems_filesystem_current this node?
59     */
60
61    if ( rtems_filesystem_current.node_access == pathloc->node_access )
62       rtems_filesystem_current.node_access = NULL;
63
64    /*
65     * Free memory associated with a memory file.
66     */
67
68    free( the_jnode );
69  }
70
71  return 0;
72
73}
74
75
76
Note: See TracBrowser for help on using the repository browser.