Blame sysdeps/posix/dirstream.h

Packit Service 82fcde
/* Copyright (C) 1993-2018 Free Software Foundation, Inc.
Packit Service 82fcde
   This file is part of the GNU C Library.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 82fcde
   modify it under the terms of the GNU Lesser General Public
Packit Service 82fcde
   License as published by the Free Software Foundation; either
Packit Service 82fcde
   version 2.1 of the License, or (at your option) any later version.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 82fcde
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 82fcde
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 82fcde
   Lesser General Public License for more details.
Packit Service 82fcde
Packit Service 82fcde
   You should have received a copy of the GNU Lesser General Public
Packit Service 82fcde
   License along with the GNU C Library; if not, see
Packit Service 82fcde
   <http://www.gnu.org/licenses/>.  */
Packit Service 82fcde
Packit Service 82fcde
#ifndef	_DIRSTREAM_H
Packit Service 82fcde
#define	_DIRSTREAM_H	1
Packit Service 82fcde
Packit Service 82fcde
#include <sys/types.h>
Packit Service 82fcde
Packit Service 82fcde
#include <libc-lock.h>
Packit Service 82fcde
Packit Service 82fcde
/* Directory stream type.
Packit Service 82fcde
Packit Service 82fcde
   The miscellaneous Unix `readdir' implementations read directory data
Packit Service 82fcde
   into a buffer and return `struct dirent *' pointers into it.  */
Packit Service 82fcde
Packit Service 82fcde
struct __dirstream
Packit Service 82fcde
  {
Packit Service 82fcde
    int fd;			/* File descriptor.  */
Packit Service 82fcde
Packit Service 82fcde
    __libc_lock_define (, lock) /* Mutex lock for this structure.  */
Packit Service 82fcde
Packit Service 82fcde
    size_t allocation;		/* Space allocated for the block.  */
Packit Service 82fcde
    size_t size;		/* Total valid data in the block.  */
Packit Service 82fcde
    size_t offset;		/* Current offset into the block.  */
Packit Service 82fcde
Packit Service 82fcde
    off_t filepos;		/* Position of next entry to read.  */
Packit Service 82fcde
Packit Service 82fcde
    int errcode;		/* Delayed error code.  */
Packit Service 82fcde
Packit Service 82fcde
    /* Directory block.  We must make sure that this block starts
Packit Service 82fcde
       at an address that is aligned adequately enough to store
Packit Service 82fcde
       dirent entries.  Using the alignment of "void *" is not
Packit Service 82fcde
       sufficient because dirents on 32-bit platforms can require
Packit Service 82fcde
       64-bit alignment.  We use "long double" here to be consistent
Packit Service 82fcde
       with what malloc uses.  */
Packit Service 82fcde
    char data[0] __attribute__ ((aligned (__alignof__ (long double))));
Packit Service 82fcde
  };
Packit Service 82fcde
Packit Service 82fcde
#define _DIR_dirfd(dirp)	((dirp)->fd)
Packit Service 82fcde
Packit Service 82fcde
#endif	/* dirstream.h */