Treat empty directory properly in skimage.

Instead of treating an empty directory as a file that failed to
decode, treat it as an empty directory.

Add self tests to check for this.

Builds upon from https://codereview.chromium.org/16866010,
which was reverted.

R=epoger@google.com

Review URL: https://codereview.chromium.org/17101029

git-svn-id: http://skia.googlecode.com/svn/trunk@9730 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/skimage_main.cpp b/tools/skimage_main.cpp
index a6a2736..01dbc46 100644
--- a/tools/skimage_main.cpp
+++ b/tools/skimage_main.cpp
@@ -501,21 +501,20 @@
     }
 
     for (int i = 0; i < FLAGS_readPath.count(); i++) {
-        if (strlen(FLAGS_readPath[i]) < 1) {
+        const char* readPath = FLAGS_readPath[i];
+        if (strlen(readPath) < 1) {
             break;
         }
-        SkOSFile::Iter iter(FLAGS_readPath[i]);
-        SkString filename;
-        if (iter.next(&filename)) {
-            SkString directory(FLAGS_readPath[i]);
-            append_path_separator_if_necessary(&directory);
-            do {
-                SkString fullname(directory);
-                fullname.append(filename);
+        if (sk_isdir(readPath)) {
+            const char* dir = readPath;
+            SkOSFile::Iter iter(dir);
+            SkString filename;
+            while (iter.next(&filename)) {
+                SkString fullname = SkOSPath::SkPathJoin(dir, filename.c_str());
                 decodeFileAndWrite(fullname.c_str(), outDirPtr);
-            } while (iter.next(&filename));
-        } else {
-            decodeFileAndWrite(FLAGS_readPath[i], outDirPtr);
+            }
+        } else if (sk_exists(readPath)) {
+            decodeFileAndWrite(readPath, outDirPtr);
         }
     }