diff --git a/interactions.c b/interactions.c index 1fe5fbc..ab246ce 100644 --- a/interactions.c +++ b/interactions.c @@ -773,13 +773,13 @@ void yank_file(unsigned long passes, int index){ yank_files.count = 1; yank_files.list = (char**)malloc(yank_files.count * sizeof(char*)); *yank_files.list = malloc(strlen(mid_content[selected_file_current].file_name)+1); - memcpy(*yank_files.list, mid_content[selected_file_current].file_name, strlen(mid_content[selected_file_current].file_name)); + memcpy(*yank_files.list, mid_content[selected_file_current].file_name, strlen(mid_content[selected_file_current].file_name)+1); } else { yank_files.list = malloc(yank_files.count * sizeof(char*)); for (i = 0; i < mid_file_count; i++) { if (mid_content[i].status & FILE_STATUS_SELECTED) { *yank_files.list = malloc(strlen(mid_content[i].file_name)+1); - memcpy(*yank_files.list, mid_content[i].file_name, strlen(mid_content[i].file_name)); + memcpy(*yank_files.list, mid_content[i].file_name, strlen(mid_content[i].file_name)+1); yank_files.list += 1; } } @@ -800,7 +800,7 @@ void paste(){ /*TODO(2025-08-14T22:10:44) escape path*/ char *cmd; if (yank_files.status & YANK_COPY) { - cmd = concat("false | cp -riv ", yank_files.path); + cmd = concat("false | cp -ri ", yank_files.path); } else { cmd = concat("mv ", yank_files.path); } @@ -827,10 +827,13 @@ void paste(){ } else if ((strstr(line, "No such file or directory"))) { pclose(cmd_open); break; - } else if (pclose(cmd_open) == 0) { + } else if ((strstr(line, "into itself"))) { + pclose(cmd_open); + break; + } + if (pclose(cmd_open) == 0) { break; } - pclose(cmd_open); } free(cmd);