summary refs log tree commit diff stats
path: root/plugins/checksum
diff options
context:
space:
mode:
authorberkeviktor@aol.com <berkeviktor@aol.com>2011-01-12 08:01:21 +0100
committerberkeviktor@aol.com <berkeviktor@aol.com>2011-01-12 08:01:21 +0100
commitee4007a7d15fb149b755accd09a04c6dc16d1483 (patch)
tree079dc13d611ec2bed4d51a558db0683bff4b3f88 /plugins/checksum
parent7b69a9c00a4263d3a3118a8f620a38227d79999d (diff)
saner default size limit, human readable printing and some help
Diffstat (limited to 'plugins/checksum')
-rw-r--r--plugins/checksum/checksum.c37
1 files changed, 31 insertions, 6 deletions
diff --git a/plugins/checksum/checksum.c b/plugins/checksum/checksum.c
index 4ac26225..a4d9d622 100644
--- a/plugins/checksum/checksum.c
+++ b/plugins/checksum/checksum.c
@@ -37,7 +37,7 @@
 #include "xchat-plugin.h"
 
 #define BUFSIZE 32768
-#define DEFAULT_MAX_HASH_SIZE 4294967296					/* default size is 4 GB */
+#define DEFAULT_MAX_HASH_SIZE 536870912						/* default size is 4 GB */
 
 #ifndef snprintf
 #define snprintf _snprintf
@@ -132,7 +132,7 @@ init ()
 		} else
 		{
 			config_fail = 0;
-			fprintf (file_out, "%llu\n", DEFAULT_MAX_HASH_SIZE);
+			fprintf (file_out, "%llu\n", (unsigned long long) DEFAULT_MAX_HASH_SIZE);
 		}
 	}
 
@@ -149,7 +149,7 @@ get_max_hash_size ()
 
 	if (config_fail)
 	{
-		return DEFAULT_MAX_HASH_SIZE;
+		return (unsigned long long) DEFAULT_MAX_HASH_SIZE;
 	} else
 	{
 		snprintf (buffer, sizeof (buffer), "%s/checksum.conf", xchat_get_info (ph, "xchatdirfs"));
@@ -164,7 +164,29 @@ get_max_hash_size ()
 static void
 print_size ()
 {
-	xchat_printf (ph, "File size limit for checksums (in bytes): %llu\n", get_max_hash_size ());
+	unsigned long long size;
+	char suffix[3];
+	
+	size = get_max_hash_size ();
+	
+	if (size >= 1073741824)
+	{
+		size /= 1073741824;
+		snprintf (suffix, sizeof (suffix), "GB");
+	} else if (size >= 1048576)
+	{
+		size /= 1048576;
+		snprintf (suffix, sizeof (suffix), "MB");
+	} else if (size >= 1024)
+	{
+		size /= 1024;
+		snprintf (suffix, sizeof (suffix), "kB");
+	} else
+	{
+		snprintf (suffix, sizeof (suffix), "B");
+	}
+	xchat_printf (ph, "File size limit for checksums: %llu %s\n", size, suffix);
+	//xchat_printf (ph, "File size limit for checksums: %s", g_format_size_for_display (get_max_hash_size ()));
 }
 
 static void
@@ -189,7 +211,7 @@ increase_max_hash_size ()
 		file_out = fopen (buffer, "w");
 		fprintf (file_out, "%llu\n", size);
 		fclose (file_out);
-		xchat_printf (ph, "New file size limit for checksums (in bytes): %llu\n", size);
+		print_size ();
 	}
 }
 
@@ -215,7 +237,7 @@ decrease_max_hash_size ()
 		file_out = fopen (buffer, "w");
 		fprintf (file_out, "%llu\n", size);
 		fclose (file_out);
-		xchat_printf (ph, "New file size limit for checksums (in bytes): %llu\n", size);
+		print_size ();
 	}
 }
 
@@ -290,6 +312,9 @@ checksum (char *userdata[])
 	} else
 	{
 		xchat_printf (ph, "Usage: /CHECKSUM GET|INC|DEC\n");
+		xchat_printf (ph, "  GET - print the maximum file size to be hashed\n");
+		xchat_printf (ph, "  INC - double the maximum file size to be hashed\n");
+		xchat_printf (ph, "  DEC - halve the maximum file size to be hashed\n");
 	}
 }