summaryrefslogtreecommitdiff
path: root/libs/raylib/src/external/dirent.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/raylib/src/external/dirent.h')
-rw-r--r--libs/raylib/src/external/dirent.h183
1 files changed, 0 insertions, 183 deletions
diff --git a/libs/raylib/src/external/dirent.h b/libs/raylib/src/external/dirent.h
deleted file mode 100644
index c611376..0000000
--- a/libs/raylib/src/external/dirent.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/****************************************************************************
-
- Declaration of POSIX directory browsing functions and types for Win32.
-
- Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com)
- History: Created March 1997. Updated June 2003.
- Reviewed by Ramon Santamaria for raylib on January 2020.
-
- Copyright Kevlin Henney, 1997, 2003. All rights reserved.
-
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose is hereby granted without fee, provided
- that this copyright and permissions notice appear in all copies and
- derivatives.
-
- This software is supplied "as is" without express or implied warranty.
-
- But that said, if there are any problems please get in touch.
-
-****************************************************************************/
-
-#ifndef DIRENT_H
-#define DIRENT_H
-
-// Allow custom memory allocators
-#ifndef DIRENT_MALLOC
- #define DIRENT_MALLOC(sz) malloc(sz)
-#endif
-#ifndef DIRENT_FREE
- #define DIRENT_FREE(p) free(p)
-#endif
-
-//----------------------------------------------------------------------------------
-// Types and Structures Definition
-//----------------------------------------------------------------------------------
-
-// Fordward declaration of DIR, implementation below
-typedef struct DIR DIR;
-
-struct dirent {
- char *d_name;
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-//------------------------------------------------------------------------------------
-// Functions Declaration
-//------------------------------------------------------------------------------------
-DIR *opendir(const char *name);
-int closedir(DIR *dir);
-struct dirent *readdir(DIR *dir);
-void rewinddir(DIR *dir);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // DIRENT_H
-
-/****************************************************************************
-
- Implementation of POSIX directory browsing functions and types for Win32.
-
- Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com)
- History: Created March 1997. Updated June 2003.
- Reviewed by Ramon Santamaria for raylib on January 2020.
-
- Copyright Kevlin Henney, 1997, 2003. All rights reserved.
-
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose is hereby granted without fee, provided
- that this copyright and permissions notice appear in all copies and
- derivatives.
-
- This software is supplied "as is" without express or implied warranty.
-
- But that said, if there are any problems please get in touch.
-
-****************************************************************************/
-
-#include <io.h> // _findfirst and _findnext set errno iff they return -1
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-//----------------------------------------------------------------------------------
-// Types and Structures Definition
-//----------------------------------------------------------------------------------
-typedef ptrdiff_t handle_type; // C99's intptr_t not sufficiently portable
-
-struct DIR {
- handle_type handle; // -1 for failed rewind
- struct _finddata_t info;
- struct dirent result; // d_name null iff first time
- char *name; // null-terminated char string
-};
-
-DIR *opendir(const char *name)
-{
- DIR *dir = 0;
-
- if (name && name[0])
- {
- size_t base_length = strlen(name);
-
- // Search pattern must end with suitable wildcard
- const char *all = strchr("/\\", name[base_length - 1]) ? "*" : "/*";
-
- if ((dir = (DIR *)DIRENT_MALLOC(sizeof *dir)) != 0 &&
- (dir->name = (char *)DIRENT_MALLOC(base_length + strlen(all) + 1)) != 0)
- {
- strcat(strcpy(dir->name, name), all);
-
- if ((dir->handle = (handle_type) _findfirst(dir->name, &dir->info)) != -1)
- {
- dir->result.d_name = 0;
- }
- else // rollback
- {
- DIRENT_FREE(dir->name);
- DIRENT_FREE(dir);
- dir = 0;
- }
- }
- else // rollback
- {
- DIRENT_FREE(dir);
- dir = 0;
- errno = ENOMEM;
- }
- }
- else errno = EINVAL;
-
- return dir;
-}
-
-int closedir(DIR *dir)
-{
- int result = -1;
-
- if (dir)
- {
- if (dir->handle != -1) result = _findclose(dir->handle);
-
- DIRENT_FREE(dir->name);
- DIRENT_FREE(dir);
- }
-
- // NOTE: All errors ampped to EBADF
- if (result == -1) errno = EBADF;
-
- return result;
-}
-
-struct dirent *readdir(DIR *dir)
-{
- struct dirent *result = 0;
-
- if (dir && dir->handle != -1)
- {
- if (!dir->result.d_name || _findnext(dir->handle, &dir->info) != -1)
- {
- result = &dir->result;
- result->d_name = dir->info.name;
- }
- }
- else errno = EBADF;
-
- return result;
-}
-
-void rewinddir(DIR *dir)
-{
- if (dir && dir->handle != -1)
- {
- _findclose(dir->handle);
- dir->handle = (handle_type) _findfirst(dir->name, &dir->info);
- dir->result.d_name = 0;
- }
- else errno = EBADF;
-}