Re: Fearure request

2005-12-28 Thread Jindrich Novy
Hello Sergei,

On Wed, 2005-11-16 at 01:06 +0200, Sergei Trofimovich wrote:
   It would be great to see in the bottom 
   of window free space of current directory. (df /path/to/dir)

the following patch adds support for displaying an amount of free
space figured by stat-ing the current directory. The free space is
displayed like this:

3509M (16%) of 21G

in the status separator line on each panel. I consider this feature
helpful as well.

Cheers,
Jindrich

-- 
Jindrich Novy [EMAIL PROTECTED], http://people.redhat.com/jnovy/
(o_   _o)
//\  The worst evil in the world is refusal to think. //\
V_/_ _\_V

--- mc-4.6.1a/src/screen.c.showfree	2005-12-27 10:45:05.0 +0100
+++ mc-4.6.1a/src/screen.c	2005-12-27 12:52:58.0 +0100
@@ -49,6 +49,7 @@
 #define WANT_WIDGETS
 #include main.h		/* the_menubar */
 #include unixcompat.h
+#include mountlist.h		/* my_statfs */
 
 #define ELEMENTS(arr) ( sizeof(arr) / sizeof((arr)[0]) )
 
@@ -851,6 +852,9 @@ paint_dir (WPanel *panel)
 standend ();
 }
 
+static int initialized;
+static struct my_statfs myfs_stats;
+
 static void
 mini_info_separator (WPanel *panel)
 {
@@ -866,6 +870,34 @@ mini_info_separator (WPanel *panel)
 hline ((slow_terminal ? '-' : ACS_HLINE) | NORMAL_COLOR,
 	   panel-widget.cols - 2);
 #endif/* !HAVE_SLANG */
+
+
+{
+	struct stat st;
+	
+	if (!initialized) {
+	initialized = 1;
+	init_my_statfs();
+	}
+	
+	my_statfs (myfs_stats, current_panel-cwd);
+	st = current_panel-dir.list [current_panel-selected].st;
+	
+if (myfs_stats.avail  0 || myfs_stats.total  0) {
+	char buffer1 [6], buffer2[6], *tmp;
+	size_trunc_len (buffer1, 5, myfs_stats.avail, 1);
+	size_trunc_len (buffer2, 5, myfs_stats.total, 1);
+	tmp = g_strdup_printf (_(%s (%d%%) of %s), buffer1, myfs_stats.total ?
+			(int)(100 * (double)myfs_stats.avail / myfs_stats.total) : 0,
+			buffer2);
+	widget_move (panel-widget, panel-widget.lines-3, panel-widget.cols-2-strlen(tmp));
+	if (panel-active)
+	attrset (REVERSE_COLOR);
+	addstr (tmp);
+	attrset (NORMAL_COLOR);
+	g_free (tmp);
+	}
+}
 }
 
 static void
@@ -929,6 +961,8 @@ show_dir (WPanel *panel)
 widget_move (panel-widget, 0, panel-widget.cols - 3);
 addstr (v);
 
+mini_info_separator (panel);
+
 if (panel-active)
 	standend ();
 }
___
Mc-devel mailing list
http://mail.gnome.org/mailman/listinfo/mc-devel


[RFE][PATCH] Display free space on device in panels (was: Fearure request)

2005-12-28 Thread Jindrich Novy
Hello Sergei, mc-devel,

On Wed, 2005-12-28 at 15:33 +0100, Jindrich Novy wrote:
 the following patch adds support for displaying an amount of free
 space figured by stat-ing the current directory. The free space is
 displayed like this:
 
 3509M (16%) of 21G
 
 in the status separator line on each panel. I consider this feature
 helpful as well.

The previous patch contained a mistake that it only displayed free space
calculated from incorrect panel and tried to stat even non-local
filesystems. The attached patch does the same, but better.

Jindrich

-- 
Jindrich Novy [EMAIL PROTECTED], http://people.redhat.com/jnovy/
(o_   _o)
//\  The worst evil in the world is refusal to think. //\
V_/_ _\_V

--- mc-4.6.1a/src/screen.c.showfree	2005-12-28 16:49:52.0 +0100
+++ mc-4.6.1a/src/screen.c	2005-12-28 17:14:45.0 +0100
@@ -49,6 +49,7 @@
 #define WANT_WIDGETS
 #include main.h		/* the_menubar */
 #include unixcompat.h
+#include mountlist.h		/* my_statfs */
 
 #define ELEMENTS(arr) ( sizeof(arr) / sizeof((arr)[0]) )
 
@@ -106,6 +107,12 @@ int filetype_mode = 1;
 /* The hook list for the select file function */
 Hook *select_file_hook = 0;
 
+/* Old current working directory for displaying free space */
+char *old_cwd = NULL;
+
+/* Used to figure out how many free space we have */
+struct my_statfs myfs_stats;
+
 static cb_ret_t panel_callback (Widget *, widget_msg_t msg, int parm);
 static int panel_event (Gpm_Event *event, void *);
 static void paint_frame (WPanel *panel);
@@ -851,6 +858,41 @@ paint_dir (WPanel *panel)
 standend ();
 }
 
+
+static void
+show_free_space(WPanel *panel)
+{
+struct stat st;
+
+/* Don't try to stat non-local fs */
+if (strlen(panel-cwd) = 2  panel-cwd[0] == '/'  panel-cwd[1] == '#')
+	return;
+
+if (old_cwd == NULL || strcmp(old_cwd, panel-cwd)) {
+	init_my_statfs();
+	if (old_cwd != NULL) g_free(old_cwd);
+	old_cwd = g_strdup(panel-cwd);
+}
+
+my_statfs (myfs_stats, panel-cwd);
+st = panel-dir.list [panel-selected].st;
+	
+if (myfs_stats.avail  0 || myfs_stats.total  0) {
+	char buffer1 [6], buffer2[6], *tmp;
+	size_trunc_len (buffer1, 5, myfs_stats.avail, 1);
+	size_trunc_len (buffer2, 5, myfs_stats.total, 1);
+	tmp = g_strdup_printf (_(%s (%d%%) of %s), buffer1, myfs_stats.total ?
+			   (int)(100 * (double)myfs_stats.avail / myfs_stats.total) : 0,
+			   buffer2);
+	widget_move (panel-widget, panel-widget.lines-3, panel-widget.cols-2-strlen(tmp));
+	if (panel-active)
+	attrset (REVERSE_COLOR);
+	addstr (tmp);
+	attrset (NORMAL_COLOR);
+	g_free (tmp);
+}
+}
+
 static void
 mini_info_separator (WPanel *panel)
 {
@@ -866,6 +908,7 @@ mini_info_separator (WPanel *panel)
 hline ((slow_terminal ? '-' : ACS_HLINE) | NORMAL_COLOR,
 	   panel-widget.cols - 2);
 #endif/* !HAVE_SLANG */
+show_free_space (panel);
 }
 
 static void
@@ -929,6 +972,8 @@ show_dir (WPanel *panel)
 widget_move (panel-widget, 0, panel-widget.cols - 3);
 addstr (v);
 
+mini_info_separator (panel);
+
 if (panel-active)
 	standend ();
 }
___
Mc-devel mailing list
http://mail.gnome.org/mailman/listinfo/mc-devel


Fearure request

2005-11-16 Thread Sergei Trofimovich
  It would be great to see in the bottom 
  of window free space of current directory. (df /path/to/dir)
   Thanks
  
___
Mc-devel mailing list
http://mail.gnome.org/mailman/listinfo/mc-devel