setlocale (LC_ALL, "");
int main(int argc, char **argv){    int i, lop, what = 0;    struct option longopts[] =    {	AFTRANS_OPTS,	{"extend", 0, 0, 'e'},	{"verbose", 0, 0, 'v'},	{"version", 0, 0, 'V'},	{"numeric", 0, 0, 'n'},	{"symbolic", 0, 0, 'N'},	{"protocol", 1, 0, 'A'},	{"cache", 0, 0, 'C'},	{"fib", 0, 0, 'F'},	{"help", 0, 0, 'h'},	{NULL, 0, 0, 0}    };    char **tmp;    char *progname;    int options;#if I18N    bindtextdomain("net-tools", "/usr/share/locale");    textdomain("net-tools");#endif    getroute_init();		/* Set up AF routing support */    setroute_init();    afname[0] = '\0';    progname = argv[0];    /* getopts and -net wont work :-/ */    for (tmp = argv; *tmp; tmp++) {	if (!strcmp(*tmp, "-net"))	    strcpy(*tmp, "#net");	else if (!strcmp(*tmp, "-host"))	    strcpy(*tmp, "#host");    }    /* Fetch the command-line arguments. */    while ((i = getopt_long(argc, argv, "A:eCFhnNVv?", longopts, &lop)) != EOF)	switch (i) {	case -1:	    break;	case 'n':	    opt_n |= FLAG_NUM;	    break;	case 'N':	    opt_n |= FLAG_SYM;	    break;	case 'v':	    opt_v |= FLAG_VERBOSE;	    break;	case 'e':	    opt_e++;	    break;	case 1:	    if (lop < 0 || lop >= AFTRANS_CNT) {		EINTERN("route.c", "longopts 1 range");		break;	    }	    if ((i = aftrans_opt(longopts[lop].name)))		exit(i);	    break;	case 'C':	    opt_fc |= FLAG_CACHE;	    break;	case 'F':	    opt_fc |= FLAG_FIB;	    break;	case 'A':	    if ((i = aftrans_opt(optarg)))		exit(i);	    break;	case 'V':	    version();	case 'h':	case '?':	    opt_h++;	    break;	default:	    usage();	}    argv += optind;    argc -= optind;    if (opt_h) {	if (!afname[0])	    usage();	else	    what = RTACTION_HELP;    } else {	if (!afname[0])	    /* this will initialise afname[] */	    aftrans_def("route", progname, DFLT_AF);	/* Do we have to show the contents of the routing table? */	if (*argv == NULL) {	    what = RTACTION_SHOW;	} else {	    if (!strcmp(*argv, "add"))		what = RTACTION_ADD;	    else if (!strcmp(*argv, "del") || !strcmp(*argv, "delete"))		what = RTACTION_DEL;	    else if (!strcmp(*argv, "flush"))		what = RTACTION_FLUSH;	    else		usage();	}    }    options = (opt_e & FLAG_EXT) | opt_n | opt_fc | opt_v;    if (!opt_fc)	options |= FLAG_FIB;    if (what == RTACTION_SHOW)	i = route_info(afname, options);    else	i = route_edit(what, afname, options, ++argv);    if (i == E_OPTERR)	usage();    return (i);}