[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Cvs-cvs] ccvs/windows-NT ChangeLog dirent.c dirent.h
From: |
Derek Robert Price |
Subject: |
[Cvs-cvs] ccvs/windows-NT ChangeLog dirent.c dirent.h |
Date: |
Tue, 11 Jul 2006 12:35:10 +0000 |
CVSROOT: /cvsroot/cvs
Module name: ccvs
Changes by: Derek Robert Price <dprice> 06/07/11 12:35:09
Modified files:
windows-NT : ChangeLog dirent.c dirent.h
Log message:
* dirent.h: Remove #include <config.h>.
(struct dirent): Remove unimplemented d_ino since POSIX declares it an
extension. Add d_namlen.
(struct direcontents): Add length field.
[_D_EXACT_NAMLEN]: Define.
[MAXNAMLEN]: Replace with...
[NAME_MAX]: ...this macro, for POSIX.
* dirent.c: #include <config.h>.
(opendir): Don't check return from xmalloc. Store length of dir name.
(readdir_r): Remove d_ino. Store d_namlen.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/ccvs/windows-NT/ChangeLog?cvsroot=cvs&r1=1.376&r2=1.377
http://cvs.savannah.gnu.org/viewcvs/ccvs/windows-NT/dirent.c?cvsroot=cvs&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/ccvs/windows-NT/dirent.h?cvsroot=cvs&r1=1.1&r2=1.2
Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/cvs/ccvs/windows-NT/ChangeLog,v
retrieving revision 1.376
retrieving revision 1.377
diff -u -b -r1.376 -r1.377
--- ChangeLog 10 Jul 2006 20:23:48 -0000 1.376
+++ ChangeLog 11 Jul 2006 12:35:08 -0000 1.377
@@ -1,3 +1,16 @@
+2006-07-11 Derek Price <address@hidden>
+
+ * dirent.h: Remove #include <config.h>.
+ (struct dirent): Remove unimplemented d_ino since POSIX declares it an
+ extension. Add d_namlen.
+ (struct direcontents): Add length field.
+ [_D_EXACT_NAMLEN]: Define.
+ [MAXNAMLEN]: Replace with...
+ [NAME_MAX]: ...this macro, for POSIX.
+ * dirent.c: #include <config.h>.
+ (opendir): Don't check return from xmalloc. Store length of dir name.
+ (readdir_r): Remove d_ino. Store d_namlen.
+
2006-07-10 Jim Hyslop <address@hidden>
Commit Derek Price's patch to eliminate obsolete ndir.h, with some
Index: dirent.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/windows-NT/dirent.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- dirent.c 10 Jul 2006 20:23:48 -0000 1.1
+++ dirent.c 11 Jul 2006 12:35:09 -0000 1.2
@@ -21,6 +21,9 @@
* appear to be <dirent.c> as opposed to its former incarnation as <ndir.c>.
*/
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
/* Validate API. */
#include <sys/types.h>
@@ -81,27 +84,15 @@
do
{
dp = xmalloc (sizeof (struct _dircontents));
- if (!dp)
- {
- free_dircontents (dirp->dd_contents);
- return NULL;
- }
-
- dp->_d_entry = xmalloc (strlen (find_buf.name) + 1);
- if (!dp->_d_entry)
- {
- free (dp);
- free_dircontents (dirp->dd_contents);
- return NULL;
- }
+ dp->_d_length = strlen (find_buf.name);
+ dp->_d_entry = xmalloc (dp->_d_length + 1);
+ memcpy (dp->_d_entry, find_buf.name, dp->_d_length + 1);
if (dirp->dd_contents)
dirp->dd_cp = dirp->dd_cp->_d_next = dp;
else
dirp->dd_contents = dirp->dd_cp = dp;
- strcpy (dp->_d_entry, find_buf.name);
-
dp->_d_next = NULL;
} while (!_findnext (hFile, &find_buf));
@@ -132,8 +123,9 @@
*result = NULL;
else
{
- strcpy (dp->d_name, dirp->dd_cp->_d_entry);
- dp->d_ino = 0;
+ dp->d_namlen = dirp->dd_cp->_d_length;
+ memcpy (dp->d_name, dirp->dd_cp->_d_entry, dp->d_namlen + 1);
+
dirp->dd_cp = dirp->dd_cp->_d_next;
dirp->dd_loc++;
*result = dp;
Index: dirent.h
===================================================================
RCS file: /cvsroot/cvs/ccvs/windows-NT/dirent.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- dirent.h 10 Jul 2006 20:23:48 -0000 1.1
+++ dirent.h 11 Jul 2006 12:35:09 -0000 1.2
@@ -18,31 +18,31 @@
August 1897 */
/* Minor adaptations made in 2006 by Derek R. Price <address@hidden> to
- * appear to be <dirent.h> as opposed to its former incarnation as <ndir.h>.
+ * comply with the POSIX.1 <dirent.h> specification, as opposed to its former
+ * incarnation as <ndir.h>.
*/
#ifndef WINDOWSNT_DIRENT_H_INCLUDED
#define WINDOWSNT_DIRENT_H_INCLUDED
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
#define rewinddir(dirp) seekdir (dirp, 0L)
/* 255 is said to be big enough for Windows NT. The more elegant
- solution would be declaring d_name as one byte long and allocating
- it to the actual size needed. */
-#define MAXNAMLEN 255
-
+ * solution would be declaring d_name as one byte long and allocating
+ * it to the actual size needed.
+ */
+#ifndef NAME_MAX
+# define NAME_MAX 255
+#endif
struct dirent
{
- ino_t d_ino; /* a bit of a farce */
- char d_name[MAXNAMLEN + 1]; /* garentee null termination */
+ size_t d_namlen; /* GNU extension. */
+ char d_name[NAME_MAX + 1]; /* guarantee null termination */
};
struct _dircontents
{
+ size_t _d_length;
char *_d_entry;
struct _dircontents *_d_next;
};
@@ -62,4 +62,6 @@
void seekdir (DIR *, long);
long telldir (DIR *);
+#define _D_EXACT_NAMLEN(dp) (dp)->d_namlen
+
#endif /* WINDOWSNT_DIRENT_H_INCLUDED */
\ No newline at end of file
- [Cvs-cvs] ccvs/windows-NT ChangeLog dirent.c dirent.h,
Derek Robert Price <=