[RFE][PATCH] Display free space on device in panels

Roland Illig roland.illig at gmx.de
Sat Dec 31 09:34:02 UTC 2005


Jindrich Novy wrote:
> --- mc-4.6.1a/src/screen.c.showfree	2005-12-28 16:49:52.000000000 +0100
> +++ mc-4.6.1a/src/screen.c	2005-12-28 17:14:45.000000000 +0100
> @@ -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;
> +

As these variables are not mentioned in any header file, they should be
"static".

>  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;

We have vfs_current_is_local() and vfs_file_is_local(), which should be
used instead of this hack.

> +    if (old_cwd == NULL || strcmp(old_cwd, panel->cwd)) {

Please always compare the result of strcmp() to an integer, in this case 0.

> +	init_my_statfs();
> +	if (old_cwd != NULL) g_free(old_cwd);

The if (...) is unnecessary.

> +	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 ?

Please compare myfs_stats.total to 0 instead of treating it like a
boolean variable.

Roland



More information about the mc-devel mailing list