xplor / xplor.go

Diff from to
 			fullpath = path.Join(dirpath, v)
 			fi, err = os.Stat(fullpath)
 			if err != nil {
-				return err
+				_, ok := err.(*os.PathError)
+				if !ok {
+					panic("Not a *os.PathError")
+				}
+				if !os.IsNotExist(err) {
+					return err
+				}
+				// Skip (most likely) broken symlinks
+				fmt.Fprintf(os.Stderr, "%v\n", err.Error())
+				continue
 			}
 			if fi.IsDir() {
 				line = dirflag + indents + v + "\n"
 			fmt.Fprintf(os.Stderr, err.Error()+addr)
 			return
 		}
-		printDirContents(fullpath, depth+1)
+		err = printDirContents(fullpath, depth+1)
+		if err != nil {
+			fmt.Fprint(os.Stderr, err.Error())
+		}
 	} else {
 		// fold, ie delete lines below dir until we hit a dir of the same depth
 		addr = "#" + charaddr + "+-"
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.