exfat: Update to 1.2.2

Change-Id: I160389afa074270c398aeb771845500f2445838a
diff --git a/exfat/fsck/main.c b/exfat/fsck/main.c
index 91f7545..ded76b2 100644
--- a/exfat/fsck/main.c
+++ b/exfat/fsck/main.c
@@ -3,7 +3,7 @@
 	exFAT file system checker.
 
 	Free exFAT implementation.
-	Copyright (C) 2011-2013  Andrew Nayenko
+	Copyright (C) 2011-2015  Andrew Nayenko
 
 	This program is free software; you can redistribute it and/or modify
 	it under the terms of the GNU General Public License as published by
@@ -20,10 +20,9 @@
 	51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
+#include <exfat.h>
 #include <stdio.h>
 #include <string.h>
-#include <exfat.h>
-#include <exfatfs.h>
 #include <inttypes.h>
 #include <unistd.h>
 
@@ -45,7 +44,7 @@
 			char name[UTF8_BYTES(EXFAT_NAME_MAX) + 1];
 
 			exfat_get_name(node, name, sizeof(name) - 1);
-			exfat_error("file `%s' has invalid cluster 0x%x", name, c);
+			exfat_error("file '%s' has invalid cluster 0x%x", name, c);
 			rc = 1;
 			break;
 		}
@@ -54,7 +53,7 @@
 			char name[UTF8_BYTES(EXFAT_NAME_MAX) + 1];
 
 			exfat_get_name(node, name, sizeof(name) - 1);
-			exfat_error("cluster 0x%x of file `%s' is not allocated", c, name);
+			exfat_error("cluster 0x%x of file '%s' is not allocated", c, name);
 			rc = 1;
 		}
 		c = exfat_next_cluster(ef, node, c);
@@ -72,16 +71,20 @@
 	char* entry_path;
 
 	if (exfat_lookup(ef, &parent, path) != 0)
-		exfat_bug("directory `%s' is not found", path);
+		exfat_bug("directory '%s' is not found", path);
 	if (!(parent->flags & EXFAT_ATTRIB_DIR))
-		exfat_bug("`%s' is not a directory (0x%x)", path, parent->flags);
+		exfat_bug("'%s' is not a directory (0x%x)", path, parent->flags);
 	if (nodeck(ef, parent) != 0)
+	{
+		exfat_put_node(ef, parent);
 		return;
+	}
 
 	path_length = strlen(path);
 	entry_path = malloc(path_length + 1 + UTF8_BYTES(EXFAT_NAME_MAX) + 1);
 	if (entry_path == NULL)
 	{
+		exfat_put_node(ef, parent);
 		exfat_error("out of memory");
 		return;
 	}
@@ -93,7 +96,6 @@
 	{
 		free(entry_path);
 		exfat_put_node(ef, parent);
-		exfat_error("failed to open directory `%s'", path);
 		return;
 	}
 	while ((node = exfat_readdir(ef, &it)))
@@ -138,15 +140,14 @@
 	const char* spec = NULL;
 	struct exfat ef;
 
-	printf("exfatfsck %u.%u.%u\n",
-			EXFAT_VERSION_MAJOR, EXFAT_VERSION_MINOR, EXFAT_VERSION_PATCH);
+	printf("exfatfsck %s\n", VERSION);
 
 	while ((opt = getopt(argc, argv, "V")) != -1)
 	{
 		switch (opt)
 		{
 		case 'V':
-			puts("Copyright (C) 2011-2013  Andrew Nayenko");
+			puts("Copyright (C) 2011-2015  Andrew Nayenko");
 			return 0;
 		default:
 			usage(argv[0]);