mirror of
https://github.com/devkitPro/buildscripts.git
synced 2026-03-30 05:44:50 -05:00
add d_type to dirent
This commit is contained in:
parent
ab52a4810c
commit
6486babb14
|
|
@ -4725,8 +4725,8 @@ diff -Nbaur newlib-1.19.0/libgloss/libsysbase/configure.in newlib-1.19.0-arm/lib
|
|||
+
|
||||
diff -Nbaur newlib-1.19.0/libgloss/libsysbase/dirent.c newlib-1.19.0-arm/libgloss/libsysbase/dirent.c
|
||||
--- newlib-1.19.0/libgloss/libsysbase/dirent.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ newlib-1.19.0-arm/libgloss/libsysbase/dirent.c 2011-01-19 22:13:21.000000000 +0000
|
||||
@@ -0,0 +1,246 @@
|
||||
+++ newlib-1.19.0-arm/libgloss/libsysbase/dirent.c 2011-01-21 21:53:22.000000000 +0000
|
||||
@@ -0,0 +1,247 @@
|
||||
+#include <sys/dirent.h>
|
||||
+#include <sys/iosupport.h>
|
||||
+#include <malloc.h>
|
||||
|
|
@ -4890,6 +4890,7 @@ diff -Nbaur newlib-1.19.0/libgloss/libsysbase/dirent.c newlib-1.19.0-arm/libglos
|
|||
+
|
||||
+ strncpy (dirp->fileData.d_name, filename, sizeof(dirp->fileData.d_name));
|
||||
+ dirp->fileData.d_ino = st.st_ino;
|
||||
+ dirp->fileData.d_type = S_ISDIR(st.st_mode)?DT_DIR:DT_REG;
|
||||
+
|
||||
+ return &(dirp->fileData);
|
||||
+}
|
||||
|
|
@ -6649,8 +6650,8 @@ diff -Nbaur newlib-1.19.0/newlib/libc/include/sys/_types.h newlib-1.19.0-arm/new
|
|||
|
||||
diff -Nbaur newlib-1.19.0/newlib/libc/include/sys/dirent.h newlib-1.19.0-arm/newlib/libc/include/sys/dirent.h
|
||||
--- newlib-1.19.0/newlib/libc/include/sys/dirent.h 2005-10-04 21:47:39.000000000 +0100
|
||||
+++ newlib-1.19.0-arm/newlib/libc/include/sys/dirent.h 2010-12-18 16:49:59.000000000 +0000
|
||||
@@ -4,10 +4,39 @@
|
||||
+++ newlib-1.19.0-arm/newlib/libc/include/sys/dirent.h 2011-01-21 21:52:14.000000000 +0000
|
||||
@@ -4,10 +4,49 @@
|
||||
not support <dirent.h>, we will get this file which uses #error to force
|
||||
an error. */
|
||||
|
||||
|
|
@ -6661,6 +6662,15 @@ diff -Nbaur newlib-1.19.0/newlib/libc/include/sys/dirent.h newlib-1.19.0-arm/new
|
|||
+#include <sys/types.h>
|
||||
+#include <sys/syslimits.h>
|
||||
+
|
||||
+#define DT_UNKNOWN 0
|
||||
+#define DT_FIFO 1
|
||||
+#define DT_CHR 2
|
||||
+#define DT_DIR 4
|
||||
+#define DT_BLK 6
|
||||
+#define DT_REG 8
|
||||
+#define DT_LNK 10
|
||||
+#define DT_SOCK 12
|
||||
+#define DT_WHT 14
|
||||
+
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
|
@ -6669,6 +6679,7 @@ diff -Nbaur newlib-1.19.0/newlib/libc/include/sys/dirent.h newlib-1.19.0-arm/new
|
|||
+
|
||||
+ struct dirent {
|
||||
+ ino_t d_ino;
|
||||
+ unsigned char d_type;
|
||||
+ char d_name[NAME_MAX+1];
|
||||
+ };
|
||||
+
|
||||
|
|
|
|||
|
|
@ -4713,8 +4713,8 @@ diff -Nbaur newlib-1.19.0/libgloss/libsysbase/configure.in newlib-1.19.0-ppc/lib
|
|||
+
|
||||
diff -Nbaur newlib-1.19.0/libgloss/libsysbase/dirent.c newlib-1.19.0-ppc/libgloss/libsysbase/dirent.c
|
||||
--- newlib-1.19.0/libgloss/libsysbase/dirent.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ newlib-1.19.0-ppc/libgloss/libsysbase/dirent.c 2011-01-19 22:14:23.000000000 +0000
|
||||
@@ -0,0 +1,246 @@
|
||||
+++ newlib-1.19.0-ppc/libgloss/libsysbase/dirent.c 2011-01-21 21:50:08.000000000 +0000
|
||||
@@ -0,0 +1,200 @@
|
||||
+#include <sys/dirent.h>
|
||||
+#include <sys/iosupport.h>
|
||||
+#include <malloc.h>
|
||||
|
|
@ -4808,9 +4808,6 @@ diff -Nbaur newlib-1.19.0/libgloss/libsysbase/dirent.c newlib-1.19.0-ppc/libglos
|
|||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+DIR* opendir (const char *dirname) {
|
||||
+ DIR* dirp = malloc (sizeof(DIR));
|
||||
+ if (!dirp) {
|
||||
|
|
@ -4831,7 +4828,6 @@ diff -Nbaur newlib-1.19.0/libgloss/libsysbase/dirent.c newlib-1.19.0-ppc/libglos
|
|||
+ return dirp;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+int closedir (DIR *dirp) {
|
||||
+ int res;
|
||||
+
|
||||
|
|
@ -4845,7 +4841,6 @@ diff -Nbaur newlib-1.19.0/libgloss/libsysbase/dirent.c newlib-1.19.0-ppc/libglos
|
|||
+ return res;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+struct dirent* readdir (DIR *dirp) {
|
||||
+ struct stat st;
|
||||
+ char filename[MAXPATHLEN];
|
||||
|
|
@ -4878,49 +4873,10 @@ diff -Nbaur newlib-1.19.0/libgloss/libsysbase/dirent.c newlib-1.19.0-ppc/libglos
|
|||
+
|
||||
+ strncpy (dirp->fileData.d_name, filename, sizeof(dirp->fileData.d_name));
|
||||
+ dirp->fileData.d_ino = st.st_ino;
|
||||
+
|
||||
+ dirp->fileData.d_type = S_ISDIR(st.st_mode)?DT_DIR:DT_REG;
|
||||
+ return &(dirp->fileData);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) {
|
||||
+ struct stat st;
|
||||
+ char filename[MAXPATHLEN];
|
||||
+ int res;
|
||||
+
|
||||
+ if (!dirp) {
|
||||
+ return EBADF;
|
||||
+ }
|
||||
+
|
||||
+ res = __dirnext (dirp->dirData, filename, &st);
|
||||
+
|
||||
+ if (res < 0) {
|
||||
+ res = errno;
|
||||
+ *result = NULL;
|
||||
+ if (errno == ENOENT) {
|
||||
+ // errno == ENONENT set by dirnext means it's end of directory
|
||||
+ // But readdir should not touch errno in case of dir end
|
||||
+ res = 0;
|
||||
+ }
|
||||
+ return res;
|
||||
+ }
|
||||
+
|
||||
+ // We've moved forward in the directory
|
||||
+ dirp->position += 1;
|
||||
+
|
||||
+ if (strnlen(filename, MAXPATHLEN) >= sizeof(entry->d_name)) {
|
||||
+ errno = EOVERFLOW;
|
||||
+ return EOVERFLOW;
|
||||
+ }
|
||||
+
|
||||
+ strncpy (entry->d_name, filename, sizeof(entry->d_name));
|
||||
+ entry->d_ino = st.st_ino;
|
||||
+
|
||||
+ *result = entry;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void rewinddir (DIR *dirp) {
|
||||
+ if (!dirp) {
|
||||
+ return;
|
||||
|
|
@ -4930,7 +4886,6 @@ diff -Nbaur newlib-1.19.0/libgloss/libsysbase/dirent.c newlib-1.19.0-ppc/libglos
|
|||
+ dirp->position = 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void seekdir(DIR *dirp, long int loc) {
|
||||
+ char filename[MAXPATHLEN];
|
||||
+
|
||||
|
|
@ -4953,7 +4908,6 @@ diff -Nbaur newlib-1.19.0/libgloss/libsysbase/dirent.c newlib-1.19.0-ppc/libglos
|
|||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+long int telldir(DIR *dirp) {
|
||||
+ if (!dirp) {
|
||||
+ return -1;
|
||||
|
|
@ -6311,6 +6265,18 @@ diff -Nbaur newlib-1.19.0/newlib/configure.host newlib-1.19.0-ppc/newlib/configu
|
|||
powerpc*-*-elf* | \
|
||||
powerpc*-*-linux* | \
|
||||
powerpc*-*-rtem* | \
|
||||
diff -Nbaur newlib-1.19.0/newlib/libc/include/dirent.h newlib-1.19.0-ppc/newlib/libc/include/dirent.h
|
||||
--- newlib-1.19.0/newlib/libc/include/dirent.h 2001-11-30 17:26:47.000000000 +0000
|
||||
+++ newlib-1.19.0-ppc/newlib/libc/include/dirent.h 2011-01-21 19:10:18.000000000 +0000
|
||||
@@ -6,7 +6,7 @@
|
||||
#include <sys/dirent.h>
|
||||
|
||||
#if !defined(MAXNAMLEN) && !defined(_POSIX_SOURCE)
|
||||
-#define MAXNAMLEN 1024
|
||||
+#define MAXNAMLEN 4096
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
diff -Nbaur newlib-1.19.0/newlib/libc/include/pthread.h newlib-1.19.0-ppc/newlib/libc/include/pthread.h
|
||||
--- newlib-1.19.0/newlib/libc/include/pthread.h 2010-12-08 14:44:06.000000000 +0000
|
||||
+++ newlib-1.19.0-ppc/newlib/libc/include/pthread.h 1970-01-01 01:00:00.000000000 +0100
|
||||
|
|
@ -6720,8 +6686,8 @@ diff -Nbaur newlib-1.19.0/newlib/libc/include/stdio.h newlib-1.19.0-ppc/newlib/l
|
|||
_off_t _EXFUN(_ftello_r,(struct _reent *, FILE *));
|
||||
diff -Nbaur newlib-1.19.0/newlib/libc/include/sys/dirent.h newlib-1.19.0-ppc/newlib/libc/include/sys/dirent.h
|
||||
--- newlib-1.19.0/newlib/libc/include/sys/dirent.h 2005-10-04 21:47:39.000000000 +0100
|
||||
+++ newlib-1.19.0-ppc/newlib/libc/include/sys/dirent.h 2011-01-13 14:15:14.000000000 +0000
|
||||
@@ -4,10 +4,39 @@
|
||||
+++ newlib-1.19.0-ppc/newlib/libc/include/sys/dirent.h 2011-01-23 12:38:06.000000000 +0000
|
||||
@@ -4,10 +4,51 @@
|
||||
not support <dirent.h>, we will get this file which uses #error to force
|
||||
an error. */
|
||||
|
||||
|
|
@ -6732,6 +6698,17 @@ diff -Nbaur newlib-1.19.0/newlib/libc/include/sys/dirent.h newlib-1.19.0-ppc/new
|
|||
+#include <sys/types.h>
|
||||
+#include <sys/syslimits.h>
|
||||
+
|
||||
+#define _DIRENT_HAVE_D_TYPE
|
||||
+
|
||||
+#define DT_UNKNOWN 0
|
||||
+#define DT_FIFO 1
|
||||
+#define DT_CHR 2
|
||||
+#define DT_DIR 4
|
||||
+#define DT_BLK 6
|
||||
+#define DT_REG 8
|
||||
+#define DT_LNK 10
|
||||
+#define DT_SOCK 12
|
||||
+#define DT_WHT 14
|
||||
+
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
|
@ -6740,6 +6717,7 @@ diff -Nbaur newlib-1.19.0/newlib/libc/include/sys/dirent.h newlib-1.19.0-ppc/new
|
|||
+
|
||||
+ struct dirent {
|
||||
+ ino_t d_ino;
|
||||
+ unsigned char d_type;
|
||||
+ char d_name[NAME_MAX+1];
|
||||
+ };
|
||||
+
|
||||
|
|
@ -6915,8 +6893,8 @@ diff -Nbaur newlib-1.19.0/newlib/libc/include/sys/statvfs.h newlib-1.19.0-ppc/ne
|
|||
\ No newline at end of file
|
||||
diff -Nbaur newlib-1.19.0/newlib/libc/include/sys/syslimits.h newlib-1.19.0-ppc/newlib/libc/include/sys/syslimits.h
|
||||
--- newlib-1.19.0/newlib/libc/include/sys/syslimits.h 2002-08-23 02:56:03.000000000 +0100
|
||||
+++ newlib-1.19.0-ppc/newlib/libc/include/sys/syslimits.h 2011-01-13 13:58:57.000000000 +0000
|
||||
@@ -44,7 +44,7 @@
|
||||
+++ newlib-1.19.0-ppc/newlib/libc/include/sys/syslimits.h 2011-01-20 16:30:43.000000000 +0000
|
||||
@@ -44,12 +44,12 @@
|
||||
#define LINK_MAX 32767 /* max file link count */
|
||||
#define MAX_CANON 255 /* max bytes in term canon input line */
|
||||
#define MAX_INPUT 255 /* max bytes in terminal input */
|
||||
|
|
@ -6925,6 +6903,12 @@ diff -Nbaur newlib-1.19.0/newlib/libc/include/sys/syslimits.h newlib-1.19.0-ppc/
|
|||
#define NGROUPS_MAX 16 /* max supplemental group id's */
|
||||
#ifndef OPEN_MAX
|
||||
#define OPEN_MAX 64 /* max open files per process */
|
||||
#endif
|
||||
-#define PATH_MAX 1024 /* max bytes in pathname */
|
||||
+#define PATH_MAX 4096 /* max bytes in pathname */
|
||||
#define PIPE_BUF 512 /* max bytes for atomic pipe writes */
|
||||
#define IOV_MAX 1024 /* max elements in i/o vector */
|
||||
|
||||
diff -Nbaur newlib-1.19.0/newlib/libc/include/sys/types.h newlib-1.19.0-ppc/newlib/libc/include/sys/types.h
|
||||
--- newlib-1.19.0/newlib/libc/include/sys/types.h 2010-12-08 14:44:06.000000000 +0000
|
||||
+++ newlib-1.19.0-ppc/newlib/libc/include/sys/types.h 2011-01-13 13:58:57.000000000 +0000
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user