Guest User

Untitled

a guest
Mar 19th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #include <ctype.h>
  2. #include <limits.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. enum arg_count
  7. {
  8. WIDTH_ONLY_ARGS = 2,
  9. WIDTH_HEIGHT_ARGS = 3
  10. };
  11.  
  12. enum arg_position
  13. {
  14. WIDTH_ARG = 1,
  15. HEIGHT_ARG = 2
  16. };
  17.  
  18. #define DECIMAL 10
  19.  
  20. typedef enum
  21. {
  22. FALSE,
  23. TRUE
  24. } BOOLEAN;
  25.  
  26. BOOLEAN strtoint(const char* str, int* result)
  27. {
  28. long lresult;
  29. char* end;
  30. lresult = strtol(str, &end, DECIMAL);
  31. if (*end)
  32. {
  33. fprintf(stderr, "Error: non-numeric data encountered.\n");
  34. return FALSE;
  35. }
  36. if (lresult < INT_MIN || lresult > INT_MAX)
  37. {
  38. fprintf(stderr,
  39. "Error: number outside the range of a valid int.\n");
  40. return FALSE;
  41. }
  42. *result = lresult;
  43. return TRUE;
  44. }
  45.  
  46. int main(int argc, char** argv)
  47. {
  48. int width, height;
  49. switch (argc)
  50. {
  51. case WIDTH_ONLY_ARGS:
  52. if (strtoint(argv[WIDTH_ARG], &width))
  53. {
  54. printf("\e[8;35;%dt", width);
  55. }
  56. else
  57. {
  58. return EXIT_FAILURE;
  59. }
  60. break;
  61. case WIDTH_HEIGHT_ARGS:
  62. if (strtoint(argv[WIDTH_ARG], &width) &&
  63. strtoint(argv[HEIGHT_ARG], &height))
  64. {
  65. printf("\e[8;%d;%dt", height, width);
  66. }
  67. else
  68. {
  69. return EXIT_FAILURE;
  70. }
  71. break;
  72. default:
  73. fprintf(stderr,
  74. "Error: invalid number of arguments.\n");
  75. return EXIT_FAILURE;
  76. }
  77. return EXIT_SUCCESS;
  78. }
Add Comment
Please, Sign In to add comment