Changes in uspace/app/df/df.c [c111da2:c24b0dcb] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/df/df.c

    rc111da2 rc24b0dcb  
    11/*
    2  * Copyright (c) 2025 Jiri Svoboda
    32 * Copyright (c) 2013 Manuele Conti
    43 * All rights reserved.
     
    5756static bool display_blocks;
    5857
     58static errno_t size_to_human_readable(uint64_t, size_t, char **);
    5959static void print_header(void);
    60 static void print_statfs(vfs_statfs_t *, char *, char *);
     60static errno_t print_statfs(vfs_statfs_t *, char *, char *);
    6161static void print_usage(void);
    6262
     
    6565        int optres, errflg = 0;
    6666        vfs_statfs_t st;
     67        errno_t rc;
    6768
    6869        display_blocks = false;
     
    108109        list_foreach(mtab_list, link, mtab_ent_t, mtab_ent) {
    109110                if (vfs_statfs_path(mtab_ent->mp, &st) == 0) {
    110                         print_statfs(&st, mtab_ent->fs_name, mtab_ent->mp);
     111                        rc = print_statfs(&st, mtab_ent->fs_name, mtab_ent->mp);
     112                        if (rc != EOK)
     113                                return 1;
    111114                } else {
    112115                        fprintf(stderr, "Cannot get information for '%s' (%s).\n",
     
    119122}
    120123
     124static errno_t size_to_human_readable(uint64_t nblocks, size_t block_size, char **rptr)
     125{
     126        capa_spec_t capa;
     127
     128        capa_from_blocks(nblocks, block_size, &capa);
     129        capa_simplify(&capa);
     130        return capa_format(&capa, rptr);
     131}
     132
    121133static void print_header(void)
    122134{
     
    129141}
    130142
    131 static void print_statfs(vfs_statfs_t *st, char *name, char *mountpoint)
     143static errno_t print_statfs(vfs_statfs_t *st, char *name, char *mountpoint)
    132144{
    133145        uint64_t const used_blocks = st->f_blocks - st->f_bfree;
    134146        unsigned const perc_used = PERCENTAGE(used_blocks, st->f_blocks);
    135         char str[CAPA_BLOCKS_BUFSIZE];
     147        char *str;
     148        errno_t rc;
    136149
    137150        printf("%10s", name);
     
    139152        if (!display_blocks) {
    140153                /* Print size */
    141                 capa_blocks_format_buf(st->f_blocks, st->f_bsize, str,
    142                     sizeof(str));
     154                rc = size_to_human_readable(st->f_blocks, st->f_bsize, &str);
     155                if (rc != EOK)
     156                        goto error;
    143157                printf(" %14s", str);
     158                free(str);
    144159
    145160                /* Number of used blocks */
    146                 capa_blocks_format_buf(used_blocks, st->f_bsize, str,
    147                     sizeof(str));
     161                rc = size_to_human_readable(used_blocks, st->f_bsize, &str);
     162                if (rc != EOK)
     163                        goto error;
    148164                printf(" %14s", str);
     165                free(str);
    149166
    150167                /* Number of available blocks */
    151                 capa_blocks_format_buf(st->f_bfree, st->f_bsize, str,
    152                     sizeof(str));
     168                rc = size_to_human_readable(st->f_bfree, st->f_bsize, &str);
     169                if (rc != EOK)
     170                        goto error;
    153171                printf(" %14s", str);
     172                free(str);
    154173
    155174                /* Percentage of used blocks */
     
    164183                    perc_used, mountpoint);
    165184        }
     185
     186        return EOK;
     187error:
     188        printf("\nError: Out of memory.\n");
     189        return ENOMEM;
    166190}
    167191
Note: See TracChangeset for help on using the changeset viewer.