@IF@ int_arg or long_arg @THEN@ @structure@->@opt_var@arg = @cast@strtol (@optarg@, &stop_char, 0);@ELSEIF@ flag_arg @THEN@ args_info->@opt_var@flag = !(args_info->@opt_var@flag);@ELSEIF@ float_arg @THEN@ @structure@->@opt_var@arg = @cast@strtod (@optarg@, &stop_char);@ELSEIF@ longlong_arg @THEN@ #ifdef HAVE_LONG_LONG @structure@->@opt_var@arg = (long long int) strtol (@optarg@, &stop_char, 0); #else @structure@->@opt_var@arg = (long) strtol (@optarg@, &stop_char, 0); #endif@ELSEIF@ string_arg @THEN@ @IF@ not no_free @THEN@ if (@structure@->@opt_var@arg) free (@structure@->@opt_var@arg); /* free previous string */ @ENDIF@ @structure@->@opt_var@arg = gengetopt_strdup (@optarg@);@ENDIF@ @IF@ int_arg or long_arg or float_arg or longlong_arg @THEN@ if (!(stop_char && *stop_char == '\0')) { fprintf(stderr, "%s: invalid numeric value: %s\n", @package_var_name@, @optarg@); goto failure; }@ENDIF@ @IF@ has_arg @THEN@ @IF@ no_free @THEN@ @structure@->@opt_var@orig = @orig_optarg@;@ELSE@ if (@structure@->@opt_var@orig) free (@structure@->@opt_var@orig); /* free previous string */ @structure@->@opt_var@orig = gengetopt_strdup (@orig_optarg@);@ENDIF@ @ENDIF@