logo

utils

~/.local/bin tools and git-hooks git clone https://hacktivis.me/git/utils.git

errno.c (713B)


  1. // Collection of Unix tools, comparable to coreutils
  2. // SPDX-FileCopyrightText: 2017-2022 Haelwenn (lanodan) Monnier <contact+utils@hacktivis.me>
  3. // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
  4. #include <errno.h> // errno
  5. #include <stdio.h> // puts, perror
  6. #include <stdlib.h> // strtol
  7. #include <string.h> // strerror
  8. int
  9. main(int argc, char *argv[])
  10. {
  11. if(argc != 2)
  12. {
  13. puts("usage: errno <number>");
  14. return 1;
  15. }
  16. errno = 0;
  17. int err = (int)(strtol(argv[1], NULL, 10));
  18. if(errno != 0)
  19. {
  20. perror("errno: strtol");
  21. return 1;
  22. }
  23. errno = 0;
  24. char *msg = strerror(err);
  25. if(errno != 0)
  26. {
  27. perror("errno: strerror");
  28. return 1;
  29. }
  30. if(puts(msg) < 0)
  31. {
  32. return 1;
  33. }
  34. return 0;
  35. }