static int report_mount( FILE *fp, __uint32_t id, char *name, uint form, uint type, fs_path_t *mount, uint flags) { fs_disk_quota_t d; char *dev = mount->fs_name; char c[8], h[8], s[8]; uint qflags; int count; if (xfsquotactl(XFS_GETQUOTA, dev, type, id, (void *)&d) < 0) { if (errno != ENOENT && errno != ENOSYS) perror("XFS_GETQUOTA"); return 0; } if (flags & TERSE_FLAG) { count = 0; if ((form & XFS_BLOCK_QUOTA) && d.d_bcount) count++; if ((form & XFS_INODE_QUOTA) && d.d_icount) count++; if ((form & XFS_RTBLOCK_QUOTA) && d.d_rtbcount) count++; if (!count) return 0; } if (!(flags & NO_HEADER_FLAG)) report_header(fp, form, type, mount, flags); fprintf(fp, "%-10s", name); if (form & XFS_BLOCK_QUOTA) { qflags = (flags & HUMAN_FLAG); if (d.d_blk_hardlimit && d.d_bcount > d.d_blk_hardlimit) qflags |= LIMIT_FLAG; if (d.d_blk_softlimit && d.d_bcount > d.d_blk_softlimit) qflags |= QUOTA_FLAG; if (flags & HUMAN_FLAG) fprintf(fp, " %6s %6s %6s %02d %8s", bbs_to_string(d.d_bcount, c, sizeof(c)), bbs_to_string(d.d_blk_softlimit, s, sizeof(s)), bbs_to_string(d.d_blk_hardlimit, h, sizeof(h)), d.d_bwarns, time_to_string(d.d_btimer, qflags)); else fprintf(fp, " %10llu %10llu %10llu %02d %9s", (unsigned long long)d.d_bcount >> 1, (unsigned long long)d.d_blk_softlimit >> 1, (unsigned long long)d.d_blk_hardlimit >> 1, d.d_bwarns, time_to_string(d.d_btimer, qflags)); }
static int free_space( FILE *fp, uint form, fs_path_t *path, uint flags) { __uint64_t bcount, bused, bfree; __uint64_t icount, iused, ifree; __uint64_t rcount, rused, rfree; char a[8], s[8], u[8], p[8]; int count; count = (path->fs_flags & FS_PROJECT_PATH) ? projects_free_space_data(path, &bcount, &bused, &bfree, &icount, &iused, &ifree, &rcount, &rused, &rfree) : mount_free_space_data(path, &bcount, &bused, &bfree, &icount, &iused, &ifree, &rcount, &rused, &rfree); if (!count) return 0; if (!(flags & NO_HEADER_FLAG)) { fprintf(fp, (flags & HUMAN_FLAG) ? _("Filesystem ") : _("Filesystem ")); if (form & (XFS_BLOCK_QUOTA|XFS_RTBLOCK_QUOTA)) fprintf(fp, (flags & HUMAN_FLAG) ? _(" Size Used Avail Use%%") : _(" 1K-blocks Used Available Use%%")); else if (form & XFS_INODE_QUOTA) fprintf(fp, (flags & HUMAN_FLAG) ? _(" Inodes Used Free Use%%") : _(" Inodes IUsed IFree IUse%%")); fprintf(fp, _(" Pathname\n")); } if (flags & HUMAN_FLAG) { count = fprintf(fp, "%-12s", path->fs_name); if (count > 13) fprintf(fp, "\n%12s", " "); } else { count = fprintf(fp, "%-19s", path->fs_name); if (count > 20) fprintf(fp, "\n%19s", " "); } if (form & XFS_BLOCK_QUOTA) { if (flags & HUMAN_FLAG) fprintf(fp, " %6s %6s %6s %3s%%", bbs_to_string(bcount, s, sizeof(s)), bbs_to_string(bused, u, sizeof(u)), bbs_to_string(bfree, a, sizeof(a)), pct_to_string(bused, bcount, p, sizeof(p))); else fprintf(fp, " %10llu %10llu %10llu %3s%%", (unsigned long long)bcount >> 1, (unsigned long long)bused >> 1, (unsigned long long)bfree >> 1, pct_to_string(bused, bcount, p, sizeof(p))); } else if (form & XFS_INODE_QUOTA) {
static int quota_mount( FILE *fp, __uint32_t id, char *name, uint form, uint type, fs_path_t *mount, uint flags) { fs_disk_quota_t d; char *dev = mount->fs_name; char c[8], h[8], s[8]; uint qflags; int count; xfsquotactl(XFS_QSYNC, dev, type, 0, NULL); if (xfsquotactl(XFS_GETQUOTA, dev, type, id, (void *)&d) < 0) return 0; if (!(flags & VERBOSE_FLAG)) { count = 0; if ((form & XFS_BLOCK_QUOTA) && d.d_bcount) count++; if ((form & XFS_INODE_QUOTA) && d.d_icount) count++; if ((form & XFS_RTBLOCK_QUOTA) && d.d_rtbcount) count++; if (!count) return 0; } if (!(flags & NO_HEADER_FLAG)) { fprintf(fp, _("Disk quotas for %s %s (%u)\nFilesystem%s"), type_to_string(type), name, id, (flags & HUMAN_FLAG) ? " " : " "); if (form & XFS_BLOCK_QUOTA) fprintf(fp, (flags & HUMAN_FLAG) ? _(" Blocks Quota Limit Warn/Time ") : _(" Blocks Quota Limit Warn/Time ")); if (form & XFS_INODE_QUOTA) fprintf(fp, (flags & HUMAN_FLAG) ? _(" Files Quota Limit Warn/Time ") : _(" Files Quota Limit Warn/Time ")); if (form & XFS_RTBLOCK_QUOTA) fprintf(fp, (flags & HUMAN_FLAG) ? _("Realtime Quota Limit Warn/Time ") : _(" Realtime Quota Limit Warn/Time ")); fputs("Mounted on\n", fp); } if (flags & HUMAN_FLAG) { count = fprintf(fp, "%-12s", dev); if (count > 13) fprintf(fp, "\n%12s", " "); } else { count = fprintf(fp, "%-19s", dev); if (count > 20) fprintf(fp, "\n%19s", " "); } if (form & XFS_BLOCK_QUOTA) { qflags = (flags & HUMAN_FLAG); if (d.d_blk_hardlimit && d.d_bcount > d.d_blk_hardlimit) qflags |= LIMIT_FLAG; if (d.d_blk_softlimit && d.d_bcount > d.d_blk_softlimit) qflags |= QUOTA_FLAG; if (flags & HUMAN_FLAG) fprintf(fp, " %6s %6s %6s %02d %8s ", bbs_to_string(d.d_bcount, c, sizeof(c)), bbs_to_string(d.d_blk_softlimit, s, sizeof(s)), bbs_to_string(d.d_blk_hardlimit, h, sizeof(h)), d.d_bwarns, time_to_string(d.d_btimer, qflags)); else fprintf(fp, " %10llu %10llu %10llu %02d %9s ", (unsigned long long)d.d_bcount >> 1, (unsigned long long)d.d_blk_softlimit >> 1, (unsigned long long)d.d_blk_hardlimit >> 1, d.d_bwarns, time_to_string(d.d_btimer, qflags)); }