// Short options are indented with two spaces. Long options are indented // with 12 spaces. if (def->short_name && def->long_name) { char *comma = def->has_val ? "," : ", ";
n = fprintf(fp, " -%s%s%s --%s%s", def->short_name, short_val, comma,
def->long_name, long_val);
} elseif (def->short_name)
n = fprintf(fp, " -%s%s", def->short_name, short_val); elseif (def->long_name)
n = fprintf(fp, " --%s%s", def->long_name, long_val);
// Descriptions are indented with 40 spaces. If an option is 40 characters // or longer, its description starts on the next line. if (n < 40) for (int i = 0; i < 40 - n; i++) fputc(' ', fp); else
fputs("\n ", fp);
fprintf(fp, "%s\n", def->desc);
if (def->enums) { conststruct arg_enum_list *listptr;
if (arg->val[0] != '\0' && endptr[0] == '/') { if (rawval >= INT_MIN && rawval <= INT_MAX)
rat.num = (int)rawval; else
die("Option %s: Value %ld out of range for signed int\n", arg->name,
rawval);
} else
die("Option %s: Expected / at '%c'\n", arg->name, *endptr);
if (arg->val[0] != '\0' && endptr[0] == '\0') { if (rawval >= INT_MIN && rawval <= INT_MAX)
rat.den = (int)rawval; else
die("Option %s: Value %ld out of range for signed int\n", arg->name,
rawval);
} else
die("Option %s: Invalid character '%c'\n", arg->name, *endptr);
/* First see if the value can be parsed as a raw value */
rawval = strtol(arg->val, &endptr, 10); if (arg->val[0] != '\0' && endptr[0] == '\0') { /* Got a raw value, make sure it's valid */ for (listptr = arg->def->enums; listptr->name; listptr++) if (listptr->val == rawval) return (int)rawval;
}
/* Next see if it can be parsed as a string */ for (listptr = arg->def->enums; listptr->name; listptr++) if (!strcmp(arg->val, listptr->name)) return listptr->val;
die("Option %s: Invalid value '%s'\n", arg->name, arg->val);
}
int arg_parse_enum_or_int(conststruct arg *arg) { if (arg->def->enums) return arg_parse_enum(arg); return arg_parse_int(arg);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.