Over the years, I have gotten numerous mails from people having difficulty
compiling mg on other platforms. Most of these mails fall into one of two
categories: 

* struct dirent problems, 
* basename, dirname problems

This diff addresses the former. The essential problem is that many platforms 
don't have d_namlen in their struct dirent.

I really doubt this is a significant performance hit for too many people.
Still, I've been wrong (frequently) in the past. 

Comments?

Index: fileio.c
===================================================================
RCS file: /cvs/src/usr.bin/mg/fileio.c,v
retrieving revision 1.82
diff -u -r1.82 fileio.c
--- fileio.c    15 Sep 2008 16:11:35 -0000      1.82
+++ fileio.c    19 Jan 2011 03:53:25 -0000
@@ -529,10 +529,8 @@
 
        while ((dent = readdir(dirp)) != NULL) {
                int isdir;
-
-               if (dent->d_namlen < len || memcmp(cp, dent->d_name, len) != 0)
+               if (strncmp(cp, dent->d_name, len) != 0)
                        continue;
-
                isdir = 0;
                if (dent->d_type == DT_DIR) {
                        isdir = 1;

Reply via email to