X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fevents.c;h=f33b31169202c335e2bd30b789359515abe54262;hp=f8a888ade1161aafedc37b655bd711f8a5d9858b;hb=5f9b6d3b52c7f8dc10c01782d466a1e8f5ca5f26;hpb=7b6d70dfe3762a3ea666871df51c284a4377d5cf diff --git a/src/events.c b/src/events.c index f8a888ad..f33b3116 100644 --- a/src/events.c +++ b/src/events.c @@ -1529,6 +1529,25 @@ void HandleClientMessageEvent(ClientMessageEvent *event) static void HandleDropFileEventExt(char *filename) { Error(ERR_DEBUG, "DROP FILE EVENT: '%s'", filename); + + // check and extract dropped zip files into correct user data directory + if (strSuffixLower(filename, ".zip")) + { + int tree_type = GetZipFileTreeType(filename); + char *directory = TREE_USERDIR(tree_type); + + if (directory == NULL) + { + Error(ERR_WARN, "zip file '%s' has invalid content!", filename); + + return; + } + + char *top_dir = ExtractZipFileIntoDirectory(filename, directory, tree_type); + + if (top_dir != NULL) + AddUserTreeSetToTreeInfo(top_dir, tree_type); + } } static void HandleDropTextEventExt(char *text)