ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] segfault with getopt_long
@ 2005-03-14  8:18 Alexey Morsov
  2005-03-14  9:05 ` Alexey I. Froloff
  0 siblings, 1 reply; 5+ messages in thread
From: Alexey Morsov @ 2005-03-14  8:18 UTC (permalink / raw)
  To: ALT Linux Community

Привет,

пишу проггу на Си. Для обработки опций запуска использую <getopt.h>
и функцию getopt_long...
Все работает, НО! если дать неверную опцию в коротком виде (-e) то как 
и положенно выдается invalid option
А если дать неверную опцию в длинном виде (--eeee) то вылетает segfault
Из-за чего может быть такое?

======== Лист ==========
static struct option long_options[] = {
    {"start", 0, 0, 0},
    {"stop", 0, 0, 0},
    {"config", 1, 0, 0},
    {"log", 1, 0, 0},
    {"help", 0, 0, 0}
};

int main(int argc, char **argv)
{
    FILE *flog, *fpid;
    pid_t pid;
    struct passwd *pwd;
    char ver[6];
    int c, option_index=0;

    sscanf(VERSION, "%*[$]%*s %[0-9.] %*[$]", ver);
    printf("trafficd %s (c) Morsov, 2005. Distributed under GPL 
license\n\n", ver);

    c = getopt_long(argc, argv, "dsc:l:h", long_options, &option_index);

    if (c == -1) {
       print_help();
       exit(0);
    }

    switch (c) {
       case 0:
          printf ("option %s", long_options[option_index].name);
          if (optarg)
             printf (" with arg %s", optarg);
          printf ("\n");
          exit(0);
       case 'd':
          printf("option d\n");
          exit(0);
       case 's':
          printf("option s\n");
          exit(0);
       case 'c':
          printf("option c with arg = '%s'\n", optarg);
          exit(0);
       case 'l':
          printf("optarg l with arg = '%s'\n", optarg);
          exit(0);
       case 'h':
          print_help();
          exit(0);
    }

    return(0);
}

========================


-- 
Всего наилучшего,
Системный Администратор ЗАО "ИК "РИКОМ-ТРАСТ"
Алексей Морсов
ICQ: 196766290
Jabber: Samurai@jabber.pibhe.com
http://www.ricom.ru
http://www.fondmarket.ru


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-03-14 11:59 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-14  8:18 [Comm] segfault with getopt_long Alexey Morsov
2005-03-14  9:05 ` Alexey I. Froloff
2005-03-14  9:30   ` Alexey Morsov
2005-03-14 11:52   ` Alexey Morsov
2005-03-14 11:59     ` Alexey I. Froloff

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git