diff options
author | RichardHitt <rbh00@netcom.com> | 2012-11-20 11:53:18 -0800 |
---|---|---|
committer | RichardHitt <rbh00@netcom.com> | 2012-11-20 11:53:18 -0800 |
commit | 9ada5c7974b39742e6a8a2a1042bf950b42f97be (patch) | |
tree | bbb3ef17e06059e7be6d0ad51e47f7537f7d7fc2 /plugins/checksum | |
parent | 53c6fe622fecec657526e33811820c2d9e22b3cc (diff) | |
parent | 7ac36d4d8d455b62a803e3de80134ec4ae7c1781 (diff) |
Merge pull request #285 from TingPing/checksum
Fix checksum plugin when completed dir is set
Diffstat (limited to 'plugins/checksum')
-rw-r--r-- | plugins/checksum/checksum.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/plugins/checksum/checksum.c b/plugins/checksum/checksum.c index e5da9dd5..cedabc21 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 = g_strdup(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; } |