diff --git a/clocks.c b/clocks.c
index 5eaed47..de2375a 100644
--- a/clocks.c
+++ b/clocks.c
@@ -29,22 +29,36 @@
 	if (path)
 		strcpy(clk_dir_path, path);
 	else {
-		create_selectedwindow();
-		sprintf(clock_lines[0], "Unable to locate debugfs mount point."
-			" Mount debugfs and try again..\n");
-		print_one_clock(0, clock_lines[0], 1, 0);
-		old_clock_line_no = 1;
-		return(1);
+		if (!dump) {
+			create_selectedwindow();
+			sprintf(clock_lines[0], "Unable to locate debugfs "
+						"mount point. Mount debugfs "
+						"and try again..\n");
+			print_one_clock(0, clock_lines[0], 1, 0);
+			old_clock_line_no = 1;
+			return(1);
+		} else {
+			fprintf(stderr, "powerdebug: Unable to locate debugfs "
+					"mount point. Mount debugfs and try "
+					"again..\n");
+			exit(1);
+		}
 	}
 	sprintf(clk_dir_path, "%s/clock", clk_dir_path);
 	//strcpy(clk_dir_path, "/debug/clock"); // Hardcoded for testing..
 	if (stat(clk_dir_path, &buf)) {
-		create_selectedwindow();
-		sprintf(clock_lines[0], "Unable to find clock tree"
-			" information at %s.\n", clk_dir_path);
-		print_one_clock(0, clock_lines[0], 1, 0);
-		old_clock_line_no = 1;
-		return(1);
+		if (!dump) {
+			create_selectedwindow();
+			sprintf(clock_lines[0], "Unable to find clock tree"
+				" information at %s.\n", clk_dir_path);
+			print_one_clock(0, clock_lines[0], 1, 0);
+			old_clock_line_no = 1;
+			return(1);
+		} else {
+			fprintf(stderr, "powerdebug: Unable to find clock tree"
+				" information at %s.\n", clk_dir_path);
+			exit(1);
+		}
 	}
 	strcpy(clk_name, "");
 	return(0);
diff --git a/clocks.h b/clocks.h
index d9df3da..f0bb7f9 100644
--- a/clocks.h
+++ b/clocks.h
@@ -21,6 +21,7 @@
 #include <linux/magic.h>
 
 extern int maxy;
+extern int dump;
 
 #define MAX_LINES 120
 
