void df_all(void) { FILE *f; struct mntent *mnt; f = setmntent("/etc/mtab", "r"); if (f) { while (mnt = getmntent(f)) df_path(mnt->mnt_dir, mnt->mnt_fsname, mnt->mnt_dir); endmntent(f); } else { fprintf(stderr, "df: cannot open /etc/mtab: %s\n", strerror(errno)); } }
void df_all(void) { FILE *f; char tmp[MTAB_LINE]; char* dev; char* mntpt; f = fopen("/etc/mtab", "r"); if (f) { while (fgets(tmp, MTAB_LINE, f)) { dev = strtok(tmp, " "); mntpt = strtok(NULL, " "); if (mntpt) df_path(mntpt); } fclose(f); } else { fprintf(stderr, "df: cannot open /etc/mtab: %s\n", strerror(errno)); } }
int main(int argc, char *argv[]) { char *p; int i; for (i = 1; i < argc; ++i) { p = argv[i]; if (p[0] == '-') { for (++p; *p; ++p) { switch (*p) { case 'i': iflag = 1; break; case 'k': kflag = 1; break; case 'f': fflag = 1; break; default: printf("usage: %s [-ikf]\n", argv[0]); return 1; } } } else { break; } } printf("%-16s %6s %6s %6s %6s %s\n", "Filesystem", iflag ? "Inodes" : kflag ? "KBytes" : "Blocks", iflag ? "IUsed" : "Used", iflag ? "IFree" : "Free", iflag ? (fflag ? "%IFree" : "%IUsed") : (fflag ? "%Free" : "%Used"), "Mounted on"); if (i < argc) { for (; i < argc; ++i) { df_path(argv[i]); } } else { df_all(); } return 0; }