Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: cheech and chong
Por razgriz
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Andre Luiz da Silva em 16/05/2004    [ 3312 hits ]

Login: andrack, 99000 pontos

Homepage: http://localhost   


Descrição

Um fonte que não foi escrito por mim, mas sim pelo Todd Miller (é esse mesmo, o criador do sudo) sobre o uso da função getopt_long para a manipulação dos argumentos passados para um programa via linha commando....

Espero que seja util para alguem, assim como foi util pra mim!

Falowz.....

[ Download: getopt_long_test.c ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

/*
* Copyright (c) 2002 Todd C. Miller <Todd.Miller@courtesan.com>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Sponsored in part by the Defense Advanced Research Projects
* Agency (DARPA) and Air Force Research Laboratory, Air Force
* Materiel Command, USAF, under agreement number F39502-99-1-0512.
*/

#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>

/*
* Simple getopt_long() and getopt_long_only() excerciser.
* ENVIRONMENT:
*   LONG_ONLY   : use getopt_long_only() (default is getopt_long())
*   POSIXLY_CORRECT   : don't permute args
*/

int
main(int argc, char **argv)
{
   int ch, idx, goggles;
   int (*gl)(int, char * const *, const char *, const struct option *, int *);
   struct option longopts[] = {
      { "force", no_argument, 0, 0 },
      { "fast", no_argument, 0, '1' },
      { "best", no_argument, 0, '9' },
      { "input", required_argument, 0, 'i' },
      { "illiterate", no_argument, 0, 0 },
      { "drinking", required_argument, &goggles, 42 },
      { "help", no_argument, 0, 'h' },
      { 0, 0, 0, 0 },
   };

   if (getenv("LONG_ONLY")) {
      gl = getopt_long_only;
      printf("getopt_long_only");
   } else {
      gl = getopt_long;
      printf("getopt_long");
   }
   if (getenv("POSIXLY_CORRECT"))
      printf(" (POSIXLY_CORRECT)");
   printf(": ");
   for (idx = 1; idx < argc; idx++)
      printf("%s ", argv[idx]);
   printf("\n");

   goggles = 0;
   for (;;) {
      idx = -1;
      ch = gl(argc, argv, "19bf:i:hW;-", longopts, &idx);
      if (ch == -1)
         break;
      switch (ch) {
      case 0:
      case '1':
      case '9':
      case 'h':
      case 'b':
      case '-':
         if (idx != -1) {
            if (goggles == 42)
               printf("option %s, arg %s\n",
                   longopts[idx].name, optarg);
            else
               printf("option %s\n",
                   longopts[idx].name);
         } else
            printf("option %c\n", ch);
         break;
      case 'f':
      case 'i':
         if (idx != -1)
            printf("option %s, arg %s\n",
                longopts[idx].name, optarg);
         else
            printf("option %c, arg %s\n", ch, optarg);
         break;

      case '?':
         break;

      default:
         printf("unexpected return value: %c\n", ch);
         break;
      }
   }
   argc -= optind;
   argv += optind;

   if (argc > 0) {
      printf("remaining ARGV: ");
      while (argc--)
         printf("%s ", *argv++);
      printf("\n");
   }
   printf("\n");

   exit (0);
}

Scripts recomendados
   Script Linux recomendado Tele Sena
   Script Linux recomendado Vários pacotes de ping disparados contra o host
   Script Linux recomendado Temperatura
   Script Linux recomendado Grafos
   Script Linux recomendado Método da bissecção

Comentários
Nenhum comentário foi encontrado.

Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.