Skip to content

Commit 1dff7c8

Browse files
committed
Fix some windows bugs with previews
1 parent 787d835 commit 1dff7c8

File tree

1 file changed

+40
-25
lines changed

1 file changed

+40
-25
lines changed

src/main/java/org/hvdw/jexiftoolgui/controllers/CommandRunner.java

Lines changed: 40 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public static String runCommand(List<String> cmdparams) throws InterruptedExcept
2828
List<String> imgList = new ArrayList<String>();
2929
List<String> postArgParams = new ArrayList<String>();
3030
byte[] myBytes = null;
31+
boolean bUTF8 = true;
3132
boolean versionCall = false;
3233
boolean winWhere = false;
3334
String[] supportedImages = MyConstants.SUPPORTED_IMAGES;
@@ -37,34 +38,48 @@ public static String runCommand(List<String> cmdparams) throws InterruptedExcept
3738
// try with apache commons
3839
String platformCharset = Charset.defaultCharset().displayName();
3940
logger.debug("platformCharset: {}", platformCharset);
41+
logger.debug("cmdparams on entering runCommand: {}", cmdparams.toString().replaceAll(",", " "));
4042
//Always read/write exif data as utf8
4143
if (Utils.isOsFromMicrosoft()) {
4244

45+
for (String subString : cmdparams) {
46+
if (subString.contains("preview")) {
47+
bUTF8 = false;
48+
}
49+
if (subString.contains("jExifToolGUI")) {
50+
bUTF8 = false;
51+
}
52+
if ((subString.toLowerCase()).contains("-ver")) {
53+
bUTF8 = false;
54+
}
55+
if ((subString.toLowerCase()).contains("where")) {
56+
bUTF8 = false;
57+
}
58+
}
4359
for (String subString : cmdparams) {
4460
// && !(subString.contains("exiftool.exe"))
45-
if ( (subString.toLowerCase().contains("exiftool")) && !(subString.contains("jExifToolGUI")) && !(subString.contains("-preview")) ) {
46-
newParams.add(subString);
47-
newParams.add("-charset");
48-
newParams.add("utf8");
49-
newParams.add("-charset");
50-
newParams.add("iptc=utf8");
51-
newParams.add("-charset");
52-
newParams.add("exif=utf8");
53-
//newParams.add("-@");
54-
//} else if ( (subString.toLowerCase().contains("jpg")) || (subString.toLowerCase().contains("tif")) || (subString.toLowerCase().contains("png")) )
55-
} else if ("-ver".equals(subString.toLowerCase())) {
56-
versionCall = true;
57-
} else if ("where".equals(subString.toLowerCase())) {
58-
winWhere = true;
59-
} else if ( (supImgList.stream().anyMatch(subString.toLowerCase()::contains)) && !(subString.toLowerCase().contains("-")) ) {
60-
// These are the images
61-
imgList.add("\"" + subString + "\"");
62-
logger.info("img subString {}", subString);
63-
} else if (subString.contains("=")) {
64-
//These are strings that set tag values
65-
argsString.append(subString + " \n");
66-
} else {
67-
postArgParams.add(subString);
61+
if (bUTF8) {
62+
if ((subString.toLowerCase().contains("exiftool"))) {
63+
//if ( (subString.toLowerCase().contains("exiftool")) && !(subString.contains("jExifToolGUI")) && !(subString.contains("preview")) ) {
64+
newParams.add(subString);
65+
newParams.add("-charset");
66+
newParams.add("utf8");
67+
newParams.add("-charset");
68+
newParams.add("iptc=utf8");
69+
newParams.add("-charset");
70+
newParams.add("exif=utf8");
71+
//newParams.add("-@");
72+
//} else if ( (subString.toLowerCase().contains("jpg")) || (subString.toLowerCase().contains("tif")) || (subString.toLowerCase().contains("png")) )
73+
} else if ((supImgList.stream().anyMatch(subString.toLowerCase()::contains)) && !(subString.toLowerCase().contains("-"))) {
74+
// These are the images
75+
imgList.add("\"" + subString + "\"");
76+
logger.info("img subString {}", subString);
77+
} else if (subString.contains("=") ) {
78+
//These are strings that set tag values
79+
argsString.append(subString + " \n");
80+
} else {
81+
postArgParams.add(subString);
82+
}
6883
}
6984
}
7085
// Now write our argsString as Args file to tmp folder
@@ -88,12 +103,12 @@ public static String runCommand(List<String> cmdparams) throws InterruptedExcept
88103
newParams.addAll(postArgParams);
89104
newParams.addAll(imgList);
90105
}
91-
logger.debug("total newParams {}", newParams.toString());
106+
logger.debug("total newParams {}\n", newParams.toString());
92107
// end try with apache commons
93108

94109
ProcessBuilder builder = null;
95110
if ((Utils.isOsFromMicrosoft())) {
96-
if ( (versionCall) || (winWhere) ) {
111+
if ( !(bUTF8) ) {
97112
builder = new ProcessBuilder(cmdparams);
98113
} else {
99114
builder = new ProcessBuilder(newParams);

0 commit comments

Comments
 (0)