Partage
  • Partager sur Facebook
  • Partager sur Twitter

getopt_long

parsing de getopt_long

    28 avril 2019 à 11:41:05

    const struct option long_options[] = {
        {"debug", no_argument, 0, 'D'},
        {"help", no_argument, 0, 'h'},
        {"level", required_argument, 0, 'L'},
        {"without-next", no_argument, 0, 'w'},
        {"map-size", required_argument, 0, 'm'},
        {"key-left", required_argument, 0,'l'},
        {"key-right", required_argument, 0, 'r'},
        {"key-turn", required_argument, 0, 't'},
        {"key-drop", required_argument, 0, 'd'},
        {"key-quit", required_argument, 0, 'q'},
        {"key-pause", required_argument, 0, 'p'},
        {0, 0, 0, 0}
    };
    
    int check_arguments(int ac, char **av, form_t *form, game_mode_t *game)
    {
        int opt = 0;
        int long_index = 0;
        int flags_display = 0;
        int stop_game = 0;
    
        while ((opt = getopt_long(ac, av, "DhL:wm:l:r:t:d:q:p:", \
        long_options, &long_index)) != -1) {
            if ((flags_display = flags_info_check(opt, form, av)) == 1)
                return 1;
            stop_game = switch_flags(opt, game, form);
            if (stop_game == 84)
                return 84;
        }
        return 0;
    }
    

    Bonjour !

    Je suis actuellement entrain de faire un tetris qui prend potentiellement des flags afin de le paramétrer, mais je rencontre un petit soucis. J'aimerai pouvoir renvoyer un message d'erreur si jamais on rentre par exemple "-help" mais que help s'affiche si on écrit "--help". Le parsing de getopt_long parse par défaut les '-' et '--', et j'aimerai changer ca.   

    Avez vous des idées? :D

    -
    Edité par P. Astek 28 avril 2019 à 12:47:23

    • Partager sur Facebook
    • Partager sur Twitter
      5 mai 2019 à 21:24:06

      Salut,

      A part implémenter toi même un parseur d'options de ligne de commande, je ne vois pas trop de solution à première vue. En quoi c'est génant que getopt parse - et -- ?

      -
      Edité par potterman28wxcv 5 mai 2019 à 21:24:32

      • Partager sur Facebook
      • Partager sur Twitter
        11 mai 2019 à 16:19:17

        Au final, j'ai fais un parseur toute seule, je pense pas non plus qu'il y avait d'autres solutions possibles  :D 

        Le truc gênant c'est que je ne voulais pas afficher, par exemple la size si j'écrivais --s, mais bien l'afficher en mettant -s. Je trouve ça plus propre, et si jamais je voulais assigner une autre option pour --s par exemple ^^

        • Partager sur Facebook
        • Partager sur Twitter
          12 mai 2019 à 0:18:23

          Pastèque Esport a écrit:

          Au final, j'ai fais un parseur toute seule, je pense pas non plus qu'il y avait d'autres solutions possibles  :D 

          Le truc gênant c'est que je ne voulais pas afficher, par exemple la size si j'écrivais --s, mais bien l'afficher en mettant -s. Je trouve ça plus propre, et si jamais je voulais assigner une autre option pour --s par exemple ^^

          L'avantage c'est que tu peux réutiliser ton parser maison pour d'autres programmes :)

          • Partager sur Facebook
          • Partager sur Twitter

          getopt_long

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown