1 /* grecs - Gray's Extensible Configuration System 2 Copyright (C) 2007-2016 Sergey Poznyakoff 3 4 Grecs is free software; you can redistribute it and/or modify it 5 under the terms of the GNU General Public License as published by the 6 Free Software Foundation; either version 3 of the License, or (at your 7 option) any later version. 8 9 Grecs is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License along 15 with Grecs. If not, see <http://www.gnu.org/licenses/>. */ 16 17 #ifndef _GRECS_OPT_H 18 #define _GRECS_OPT_H 19 20 struct grecs_proginfo { 21 const char *progname; 22 char **subcmd; 23 const char *docstring; 24 const char *args_doc; 25 struct grecs_opthelp *opthelp; 26 size_t optcount; 27 void (*print_help_hook)(FILE *stream); 28 void (*print_version_hook)(FILE *stream); 29 const char *package; 30 const char *version; 31 const char *license; 32 const char *copyright_year; 33 const char *copyright_holder; 34 const char **authors; 35 const char *bug_address; 36 const char *url; 37 const char *epilogue; 38 }; 39 40 struct grecs_opthelp { 41 const char *opt; 42 const char *arg; 43 int is_optional; 44 const char *descr; 45 }; 46 47 #define DESCRCOLUMN 30 48 #define RMARGIN 79 49 #define GROUPCOLUMN 2 50 #define USAGECOLUMN 13 51 52 void grecs_print_help(struct grecs_proginfo *pinfo); 53 void grecs_print_usage(struct grecs_proginfo *pinfo); 54 void grecs_print_version_only(struct grecs_proginfo *pinfo, FILE *stream); 55 void grecs_print_version(struct grecs_proginfo *pinfo, FILE *stream); 56 57 #endif 58 59