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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [newlib-1.17.0/] [newlib/] [libc/] [sys/] [linux/] [mntent.c] - Diff between revs 148 and 158

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

Rev 148 Rev 158
/* Utilities for reading/writing fstab, mtab, etc.
/* Utilities for reading/writing fstab, mtab, etc.
   Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
   Copyright (C) 1995, 1996, 1997, 2000 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 Lesser General Public
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.
   version 2.1 of the 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
   Lesser General Public License for more details.
   Lesser General Public License for more details.
 
 
   You should have received a copy of the GNU Lesser General Public
   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */
   02111-1307 USA.  */
 
 
#include <features.h>
#include <features.h>
#include <mntent.h>
#include <mntent.h>
#include <stdlib.h>
#include <stdlib.h>
#include <libc-symbols.h>
#include <libc-symbols.h>
#define  _LIBC 1
#define  _LIBC 1
#define  NOT_IN_libc 1
#define  NOT_IN_libc 1
#include <bits/libc-lock.h>
#include <bits/libc-lock.h>
 
 
/* We don't want to allocate the static buffer all the time since it
/* We don't want to allocate the static buffer all the time since it
   is not always used (in fact, rather infrequently).  Accept the
   is not always used (in fact, rather infrequently).  Accept the
   extra cost of a `malloc'.  */
   extra cost of a `malloc'.  */
static char *getmntent_buffer;
static char *getmntent_buffer;
 
 
/* This is the size of the buffer.  This is really big.  */
/* This is the size of the buffer.  This is really big.  */
#define BUFFER_SIZE     4096
#define BUFFER_SIZE     4096
 
 
 
 
static void
static void
allocate (void)
allocate (void)
{
{
  getmntent_buffer = (char *) malloc (BUFFER_SIZE);
  getmntent_buffer = (char *) malloc (BUFFER_SIZE);
}
}
 
 
 
 
struct mntent *
struct mntent *
getmntent (FILE *stream)
getmntent (FILE *stream)
{
{
  static struct mntent m;
  static struct mntent m;
  static int once;
  static int once;
 
 
  do {
  do {
    if (__pthread_once != NULL)
    if (__pthread_once != NULL)
      __pthread_once (&once, allocate);
      __pthread_once (&once, allocate);
    else if (once == 0) {
    else if (once == 0) {
      allocate ();
      allocate ();
      once = !(0);
      once = !(0);
    }
    }
  } while (0);
  } while (0);
 
 
 
 
  if (getmntent_buffer == NULL)
  if (getmntent_buffer == NULL)
    /* If no core is available we don't have a chance to run the
    /* If no core is available we don't have a chance to run the
       program successfully and so returning NULL is an acceptable
       program successfully and so returning NULL is an acceptable
       result.  */
       result.  */
    return NULL;
    return NULL;
 
 
  return __getmntent_r (stream, &m, getmntent_buffer, BUFFER_SIZE);
  return __getmntent_r (stream, &m, getmntent_buffer, BUFFER_SIZE);
}
}
 
 
 
 
/* Make sure the memory is freed if the programs ends while in
/* Make sure the memory is freed if the programs ends while in
   memory-debugging mode and something actually was allocated.  */
   memory-debugging mode and something actually was allocated.  */
static void
static void
__attribute__ ((unused))
__attribute__ ((unused))
free_mem (void)
free_mem (void)
{
{
  free (getmntent_buffer);
  free (getmntent_buffer);
}
}
 
 
text_set_element (__libc_subfreeres, free_mem);
text_set_element (__libc_subfreeres, free_mem);
 
 

powered by: WebSVN 2.1.0

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