[notmuch] [PATCH] GCC3.5 fix

2010-01-21 Thread Geo Carncross
I have reason to need GCC 3.5 which doesn't process the unused(x) macro
correctly. This is probably a bug in 3.5, nevertheless the patch is
simple and corrects the build.

GCC 3.5 also does not understand -Wextra but Makefile is bound to change
less frequently, so I did not include a patch for that.

-- next part --
A non-text attachment was scrubbed...
Name: notmuch_gcc_35.patch
Type: text/x-patch
Size: 951 bytes
Desc: not available
URL: 



[notmuch] [PATCH] d_type fix

2010-01-21 Thread Geo Carncross
A review of notmuch-new.c shows three uses of ->d_type:

Near line 153, in _entries_resemble_maildir() we can simply allow for
DT_UNKNOWN. This would fail if people have MH-style folders which have
three folders called "new" "cur" and "tmp", but that seems unlikely, in
which case the "tmp" folder would simply not be scanned.

Near line 273 in add_files_recursive() we have another check. If
DT_UNKNOWN, we fall through, then add_files_recursive() does a stat
almost immediately, returning with success if the path isn't a
directory.

Thus, the fallback is already written.

Finally, near line 343, in add_files_recursive() (a long function) we
have another check. Here we can simply treat DT_UNKNOWN as DT_LNK, since
the logic for the stat() results are the same.

Attached is a patch which was tested with reiserfs. It should also work
with xfs.


-- next part --
A non-text attachment was scrubbed...
Name: notmuch_new_d_type_fix.patch
Type: text/x-patch
Size: 1144 bytes
Desc: not available
URL: 



[notmuch] [PATCH] d_type fix

2010-01-21 Thread Geo Carncross
A review of notmuch-new.c shows three uses of -d_type:

Near line 153, in _entries_resemble_maildir() we can simply allow for
DT_UNKNOWN. This would fail if people have MH-style folders which have
three folders called new cur and tmp, but that seems unlikely, in
which case the tmp folder would simply not be scanned.

Near line 273 in add_files_recursive() we have another check. If
DT_UNKNOWN, we fall through, then add_files_recursive() does a stat
almost immediately, returning with success if the path isn't a
directory.

Thus, the fallback is already written.

Finally, near line 343, in add_files_recursive() (a long function) we
have another check. Here we can simply treat DT_UNKNOWN as DT_LNK, since
the logic for the stat() results are the same.

Attached is a patch which was tested with reiserfs. It should also work
with xfs.


diff --git a/notmuch-new.c b/notmuch-new.c
index b740ee2..3e6b96a 100644
--- a/notmuch-new.c
+++ b/notmuch-new.c
@@ -153,7 +153,7 @@ _entries_resemble_maildir (struct dirent **entries, int count)
 int i, found = 0;
 
 for (i = 0; i  count; i++) {
-	if (entries[i]-d_type != DT_DIR)
+	if (entries[i]-d_type != DT_DIR  entries[i]-d_type != DT_UNKNOWN)
 	continue;
 
 	if (strcmp(entries[i]-d_name, new) == 0 ||
@@ -273,7 +273,8 @@ add_files_recursive (notmuch_database_t *notmuch,
 
 	entry = fs_entries[i];
 
-	if (entry-d_type != DT_DIR  entry-d_type != DT_LNK)
+	if (entry-d_type != DT_DIR  entry-d_type != DT_LNK
+			 entry-d_type != DT_UNKNOWN)
 	continue;
 
 	/* Ignore special directories to avoid infinite recursion.
@@ -343,7 +344,7 @@ add_files_recursive (notmuch_database_t *notmuch,
 
 	/* If we're looking at a symlink, we only want to add it if it
 	 * links to a regular file, (and not to a directory, say). */
-	if (entry-d_type == DT_LNK) {
+	if (entry-d_type == DT_LNK || entry-d_type == DT_UNKNOWN) {
 	int err;
 
 	next = talloc_asprintf (notmuch, %s/%s, path, entry-d_name);
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[notmuch] [PATCH] GCC3.5 fix

2010-01-21 Thread Geo Carncross
I have reason to need GCC 3.5 which doesn't process the unused(x) macro
correctly. This is probably a bug in 3.5, nevertheless the patch is
simple and corrects the build.

GCC 3.5 also does not understand -Wextra but Makefile is bound to change
less frequently, so I did not include a patch for that.

diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h
index c7fb0ef..ad6dcd8 100644
--- a/lib/notmuch-private.h
+++ b/lib/notmuch-private.h
@@ -74,7 +74,7 @@ _internal_error (const char *format, ...) PRINTF_ATTRIBUTE (1, 2);
 _internal_error (format  (%s).\n,			\
 		 ##__VA_ARGS__, __location__)
 
-#define unused(x) x __attribute__ ((unused))
+#define unused(x) x __attribute__((unused))
 
 /* Thanks to Andrew Tridgell's (SAMBA's) talloc for this definition of
  * unlikely. The talloc source code comes to us via the GNU LGPL v. 3.
diff --git a/notmuch-client.h b/notmuch-client.h
index 77766de..87e599a 100644
--- a/notmuch-client.h
+++ b/notmuch-client.h
@@ -49,7 +49,7 @@
 
 #include talloc.h
 
-#define unused(x) x __attribute__ ((unused))
+#define unused(x) x __attribute__((unused))
 
 /* There's no point in continuing when we've detected that we've done
  * something wrong internally (as opposed to the user passing in a
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch