From: Enlightenment C. <no...@cv...> - 2006-08-15 23:33:27
|
Enlightenment CVS committal Author : chaos Project : e17 Module : apps/evfs Dir : e17/apps/evfs/src/bin Modified Files: evfs_server_handle.c Log Message: * Fix the mass copy function. No guarantees as to if this works completely - we need unit tests here =================================================================== RCS file: /cvs/e/e17/apps/evfs/src/bin/evfs_server_handle.c,v retrieving revision 1.67 retrieving revision 1.68 diff -u -3 -r1.67 -r1.68 --- evfs_server_handle.c 15 Aug 2006 12:04:32 -0000 1.67 +++ evfs_server_handle.c 15 Aug 2006 23:32:53 -0000 1.68 @@ -502,9 +502,31 @@ } else { Ecore_List *directory_list = NULL; + int newlen; + int origlen; + char* pos; + + evfs_filereference* newdir_rewrite; + + newdir_rewrite = evfs_filereference_clone(command->file_command.files[num_files-1]); + if (command == root_command && S_ISDIR(dest_stat.st_mode)) { + origlen = strlen(newdir_rewrite->path); + printf("Origlen is: %d (%s)\n", origlen, newdir_rewrite->path); + pos = strrchr(command->file_command.files[c_file]->path, '/'); + printf("String after pos: '%s'\n", pos+1); + newlen = strlen(newdir_rewrite->path)+1+strlen(pos+1)+1; + printf("Newlen is: %d\n", newlen); + newdir_rewrite->path = realloc(newdir_rewrite->path, newlen); + newdir_rewrite->path[origlen] = '/'; + strncat(&newdir_rewrite->path[origlen+1], pos+1, strlen(pos)-1); + } + + + printf("Done: '%s %s'\n", newdir_rewrite->plugin_uri, newdir_rewrite->path); + + - evfs_operation_mkdir_task_add(EVFS_OPERATION(op), - evfs_filereference_clone(command->file_command.files[num_files-1])); + evfs_operation_mkdir_task_add(EVFS_OPERATION(op), newdir_rewrite); /*First, we need a directory list... */ (*EVFS_PLUGIN_FILE(plugin)->functions->evfs_dir_list) (client, command, @@ -518,23 +540,23 @@ evfs_command *recursive_command = NEW(evfs_command); snprintf(destination_file, PATH_MAX, "%s%s", - command->file_command.files[num_files-1]->path, + newdir_rewrite->path, strrchr(file->path, '/')); source->path = strdup(file->path); source->plugin_uri = strdup(command->file_command.files[c_file]->plugin_uri); source->parent = NULL; /*TODO - handle nested uris */ + dest->path = strdup(destination_file); - dest->plugin_uri = - strdup(command->file_command.files[num_files-1]->plugin_uri); + dest->plugin_uri = strdup(newdir_rewrite->plugin_uri); dest->parent = NULL; /*TODO - handle nested uris */ recursive_command->file_command.files = malloc(sizeof(evfs_filereference *) * 2); recursive_command->type = EVFS_CMD_FILE_COPY; - recursive_command->file_command.files[c_file] = source; - recursive_command->file_command.files[num_files-1] = dest; + recursive_command->file_command.files[0] = source; + recursive_command->file_command.files[1] = dest; recursive_command->file_command.num_files = 2; //printf("Copy file '%s' to %s\n", file->path, destination_file); |