mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-08-31 06:05:12 +00:00
Device names could contain characters not allowed for a dir name, fixed.
This commit is contained in:
@@ -15,4 +15,42 @@ public class FilesHelper {
|
|||||||
return mime;
|
return mime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Following code from http://activemq.apache.org/maven/5.7.0/kahadb/apidocs/src-html/org/apache/kahadb/util/IOHelper.html
|
||||||
|
/**
|
||||||
|
* Converts any string into a string that is safe to use as a file name.
|
||||||
|
* The result will only include ascii characters and numbers, and the "-","_", and "." characters.
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
* @param dirSeparators
|
||||||
|
* @param maxFileLength
|
||||||
|
* @return the resulting string
|
||||||
|
*/
|
||||||
|
public static String toFileSystemSafeName(String name, boolean dirSeparators, int maxFileLength) {
|
||||||
|
int size = name.length();
|
||||||
|
StringBuffer rc = new StringBuffer(size * 2);
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
char c = name.charAt(i);
|
||||||
|
boolean valid = c >= 'a' && c <= 'z';
|
||||||
|
valid = valid || (c >= 'A' && c <= 'Z');
|
||||||
|
valid = valid || (c >= '0' && c <= '9');
|
||||||
|
valid = valid || (c == '_') || (c == '-') || (c == '.');
|
||||||
|
valid = valid || (dirSeparators && ( (c == '/') || (c == '\\')));
|
||||||
|
|
||||||
|
if (valid) {
|
||||||
|
rc.append(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String result = rc.toString();
|
||||||
|
if (result.length() > maxFileLength) {
|
||||||
|
result = result.substring(result.length()-maxFileLength,result.length());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
public static String toFileSystemSafeName(String name, boolean dirSeparators) {
|
||||||
|
return toFileSystemSafeName(name, dirSeparators, 255);
|
||||||
|
}
|
||||||
|
public static String toFileSystemSafeName(String name) {
|
||||||
|
return toFileSystemSafeName(name, true, 255);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -86,10 +86,11 @@ public class SharePlugin extends Plugin {
|
|||||||
final int fileLength = np.getPayloadSize();
|
final int fileLength = np.getPayloadSize();
|
||||||
final String filename = np.getString("filename", new Long(System.currentTimeMillis()).toString());
|
final String filename = np.getString("filename", new Long(System.currentTimeMillis()).toString());
|
||||||
|
|
||||||
|
String deviceDir = FilesHelper.toFileSystemSafeName(device.getName());
|
||||||
//Get the external storage and append "/kdeconnect/DEVICE_NAME/"
|
//Get the external storage and append "/kdeconnect/DEVICE_NAME/"
|
||||||
String destinationDir = Environment.getExternalStorageDirectory().getPath();
|
String destinationDir = Environment.getExternalStorageDirectory().getPath();
|
||||||
destinationDir = new File(destinationDir, "kdeconnect").getPath();
|
destinationDir = new File(destinationDir, "kdeconnect").getPath();
|
||||||
destinationDir = new File(destinationDir, device.getName()).getPath();
|
destinationDir = new File(destinationDir, deviceDir).getPath();
|
||||||
|
|
||||||
//Create directories if needed
|
//Create directories if needed
|
||||||
new File(destinationDir).mkdirs();
|
new File(destinationDir).mkdirs();
|
||||||
|
Reference in New Issue
Block a user