My slstatus configuration
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 

62 rader
1.1 KiB

  1. /* See LICENSE file for copyright and license details. */
  2. #include <err.h>
  3. #include <stdio.h>
  4. #include <sys/statvfs.h>
  5. #include "../util.h"
  6. const char *
  7. disk_free(const char *mnt)
  8. {
  9. struct statvfs fs;
  10. if (statvfs(mnt, &fs) < 0) {
  11. warn("Failed to get filesystem info");
  12. return NULL;
  13. }
  14. return bprintf("%f", (float)fs.f_bsize * (float)fs.f_bfree / 1024 / 1024 / 1024);
  15. }
  16. const char *
  17. disk_perc(const char *mnt)
  18. {
  19. int perc;
  20. struct statvfs fs;
  21. if (statvfs(mnt, &fs) < 0) {
  22. warn("Failed to get filesystem info");
  23. return NULL;
  24. }
  25. perc = 100 * (1.0f - ((float)fs.f_bfree / (float)fs.f_blocks));
  26. return bprintf("%d", perc);
  27. }
  28. const char *
  29. disk_total(const char *mnt)
  30. {
  31. struct statvfs fs;
  32. if (statvfs(mnt, &fs) < 0) {
  33. warn("Failed to get filesystem info");
  34. return NULL;
  35. }
  36. return bprintf("%f", (float)fs.f_bsize * (float)fs.f_blocks / 1024 / 1024 / 1024);
  37. }
  38. const char *
  39. disk_used(const char *mnt)
  40. {
  41. struct statvfs fs;
  42. if (statvfs(mnt, &fs) < 0) {
  43. warn("Failed to get filesystem info");
  44. return NULL;
  45. }
  46. return bprintf("%f", (float)fs.f_bsize * ((float)fs.f_blocks - (float)fs.f_bfree) / 1024 / 1024 / 1024);
  47. }