summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--plugins/checksum/checksum.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/plugins/checksum/checksum.c b/plugins/checksum/checksum.c
index e5da9dd5..77359e3f 100644
--- a/plugins/checksum/checksum.c
+++ b/plugins/checksum/checksum.c
@@ -173,13 +173,22 @@ dccrecv_cb (char *word[], void *userdata)
 	int result;
 	struct stat64 buffer;									/* buffer for storing file info */
 	char sum[65];											/* buffer for checksum */
+	char *file;
+	if (hexchat_get_prefs (ph, "dcc_completed_dir", &file, NULL) == 1 && file[0] != 0)
+	{
+		file = g_strconcat (file, G_DIR_SEPARATOR_S, word[1], NULL);
+	}
+	else
+	{
+		file = word[2];
+	}
 
-	result = stat64 (word[2], &buffer);
+	result = stat64 (file, &buffer);
 	if (result == 0)										/* stat returns 0 on success */
 	{
 		if (buffer.st_size <= (unsigned long long) get_limit () * 1048576)
 		{
-			sha256_file (word[2], sum);						/* word[2] is the full filename */
+			sha256_file (file, sum);						/* file is the full filename even if completed dir set */
 			/* try to print the checksum in the privmsg tab of the sender */
 			hexchat_set_context (ph, hexchat_find_context (ph, NULL, word[3]));
 			hexchat_printf (ph, "SHA-256 checksum for %s (local):  %s\n", word[1], sum);
@@ -195,6 +204,7 @@ dccrecv_cb (char *word[], void *userdata)
 		hexchat_printf (ph, "File access error!\n");
 	}
 
+	g_free (file);
 	return HEXCHAT_EAT_NONE;
 }