Mercurial > jhg
comparison src/org/tmatesoft/hg/util/RegularFileStats.java @ 476:c02b5710d9ac
Defect: only first file in directory got flags initialized
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 12 Jul 2012 18:07:12 +0200 |
parents | 909306e412e2 |
children | 661e77dc88ba |
comparison
equal
deleted
inserted
replaced
475:0e34b8f3946a | 476:c02b5710d9ac |
---|---|
106 // perhaps, shall just collect stats for all files and set false to exec/link flags? | 106 // perhaps, shall just collect stats for all files and set false to exec/link flags? |
107 throw new IllegalArgumentException(); | 107 throw new IllegalArgumentException(); |
108 } | 108 } |
109 final String dirName = f.getParentFile().getAbsolutePath(); | 109 final String dirName = f.getParentFile().getAbsolutePath(); |
110 final String fileName = f.getName(); | 110 final String fileName = f.getName(); |
111 Map<String, String> links = dir2links.get(dirName); | 111 try { |
112 Set<String> execs = dir2execs.get(dirName); | 112 Map<String, String> links = dir2links.get(dirName); |
113 if (links == null || execs == null) { | 113 Set<String> execs = dir2execs.get(dirName); |
114 try { | 114 if (links == null || execs == null) { |
115 ArrayList<String> cmd = new ArrayList<String>(command); | 115 ArrayList<String> cmd = new ArrayList<String>(command); |
116 cmd.add(dirName); | 116 cmd.add(dirName); |
117 CharSequence result = execHelper.exec(cmd); | 117 CharSequence result = execHelper.exec(cmd); |
118 | 118 |
119 if (execMatcher.reset(result).find()) { | 119 if (execMatcher.reset(result).find()) { |
132 } else { | 132 } else { |
133 links = Collections.emptyMap(); | 133 links = Collections.emptyMap(); |
134 } | 134 } |
135 dir2links.put(dirName, links); | 135 dir2links.put(dirName, links); |
136 dir2execs.put(dirName, execs); | 136 dir2execs.put(dirName, execs); |
137 isExec = execs.contains(fileName); | |
138 isSymlink = links.containsKey(fileName); | |
139 if (isSymlink) { | |
140 symlinkValue = links.get(fileName); | |
141 } else { | |
142 symlinkValue = null; | |
143 } | |
144 } catch (InterruptedException ex) { | |
145 sessionContext.getLog().dump(getClass(), Warn, ex, String.format("Failed to detect flags for %s", f)); | |
146 // try again? ensure not too long? stop right away? | |
147 // IGNORE, keep isExec and isSymlink false | |
148 } catch (IOException ex) { | |
149 sessionContext.getLog().dump(getClass(), Warn, ex, String.format("Failed to detect flags for %s", f)); | |
150 // IGNORE, keep isExec and isSymlink false | |
151 } | 137 } |
138 isExec = execs.contains(fileName); | |
139 isSymlink = links.containsKey(fileName); | |
140 if (isSymlink) { | |
141 symlinkValue = links.get(fileName); | |
142 } else { | |
143 symlinkValue = null; | |
144 } | |
145 } catch (InterruptedException ex) { | |
146 sessionContext.getLog().dump(getClass(), Warn, ex, String.format("Failed to detect flags for %s", f)); | |
147 // try again? ensure not too long? stop right away? | |
148 // IGNORE, keep isExec and isSymlink false | |
149 } catch (IOException ex) { | |
150 sessionContext.getLog().dump(getClass(), Warn, ex, String.format("Failed to detect flags for %s", f)); | |
151 // IGNORE, keep isExec and isSymlink false | |
152 } | 152 } |
153 } | 153 } |
154 | 154 |
155 public boolean isExecutable() { | 155 public boolean isExecutable() { |
156 return isExec; | 156 return isExec; |
157 } | 157 } |
158 | 158 |