@@ -28,6 +28,7 @@ public static String runCommand(List<String> cmdparams) throws InterruptedExcept
28
28
List <String > imgList = new ArrayList <String >();
29
29
List <String > postArgParams = new ArrayList <String >();
30
30
byte [] myBytes = null ;
31
+ boolean bUTF8 = true ;
31
32
boolean versionCall = false ;
32
33
boolean winWhere = false ;
33
34
String [] supportedImages = MyConstants .SUPPORTED_IMAGES ;
@@ -37,34 +38,48 @@ public static String runCommand(List<String> cmdparams) throws InterruptedExcept
37
38
// try with apache commons
38
39
String platformCharset = Charset .defaultCharset ().displayName ();
39
40
logger .debug ("platformCharset: {}" , platformCharset );
41
+ logger .debug ("cmdparams on entering runCommand: {}" , cmdparams .toString ().replaceAll ("," , " " ));
40
42
//Always read/write exif data as utf8
41
43
if (Utils .isOsFromMicrosoft ()) {
42
44
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
+ }
43
59
for (String subString : cmdparams ) {
44
60
// && !(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
+ }
68
83
}
69
84
}
70
85
// Now write our argsString as Args file to tmp folder
@@ -88,12 +103,12 @@ public static String runCommand(List<String> cmdparams) throws InterruptedExcept
88
103
newParams .addAll (postArgParams );
89
104
newParams .addAll (imgList );
90
105
}
91
- logger .debug ("total newParams {}" , newParams .toString ());
106
+ logger .debug ("total newParams {}\n " , newParams .toString ());
92
107
// end try with apache commons
93
108
94
109
ProcessBuilder builder = null ;
95
110
if ((Utils .isOsFromMicrosoft ())) {
96
- if ( ( versionCall ) || ( winWhere ) ) {
111
+ if ( !( bUTF8 ) ) {
97
112
builder = new ProcessBuilder (cmdparams );
98
113
} else {
99
114
builder = new ProcessBuilder (newParams );
0 commit comments