No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

62 líneas
1.1KB

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <map>
  5. #include <string>
  6. #include "tui.hpp"
  7. #include "db.hpp"
  8. using namespace std;
  9. [[ noreturn ]]
  10. void version() {
  11. puts("Histui "
  12. #include "version.inc"
  13. );
  14. exit(0);
  15. }
  16. [[ noreturn ]]
  17. void usage(int exit_value = 0) {
  18. ;
  19. exit(exit_value);
  20. }
  21. void global_options(const int argc, const char * const * const argv) {
  22. for(int i = 0; i < argc; i++) {
  23. if (not strcmp(argv[i], "-v")
  24. || not strcmp(argv[i], "--version")) {
  25. version();
  26. }
  27. if (not strcmp(argv[i], "-h")
  28. || not strcmp(argv[i], "--help")) {
  29. usage();
  30. }
  31. }
  32. }
  33. typedef signed (*mainlike_t)(int argc, char * * argv);
  34. map<const char*, mainlike_t> verb_table = {
  35. {"tui", tui_main},
  36. {"import", import_main},
  37. {"export", export_main},
  38. };
  39. signed main(int argc, char * * argv) {
  40. if (argc < 2) {
  41. usage(2);
  42. }
  43. global_options(argc, argv);
  44. for (const auto &i : verb_table) {
  45. if (not strcmp(argv[1], i.first)) {
  46. return i.second(argc, argv);
  47. }
  48. }
  49. return 1;
  50. }