'makedefs' handling for DEFAULT_WINDOW_SYS (trunk only)
Change the windowing system section of generated file dat/options
to omit "with a default of <foo>" when it has listed just one enabled
windowing system.
This also adds checks to make sure DEFAULT_WINDOW_SYS is defined,
at least one xxx_GRAPHICS option is enabled, and that the default matches
[one of] the enabled xxx_GRAPHICS.
This commit is contained in:
+67
-19
@@ -174,6 +174,7 @@ static boolean FDECL(ranged_attk,(struct permonst*));
|
|||||||
static int FDECL(mstrength,(struct permonst *));
|
static int FDECL(mstrength,(struct permonst *));
|
||||||
static void NDECL(build_savebones_compat_string);
|
static void NDECL(build_savebones_compat_string);
|
||||||
static void FDECL(do_ext_makedefs,(int , char **));
|
static void FDECL(do_ext_makedefs,(int , char **));
|
||||||
|
static void NDECL(windowing_sanity);
|
||||||
|
|
||||||
static boolean FDECL(qt_comment, (char *));
|
static boolean FDECL(qt_comment, (char *));
|
||||||
static boolean FDECL(qt_control, (char *));
|
static boolean FDECL(qt_control, (char *));
|
||||||
@@ -1107,6 +1108,10 @@ do_date()
|
|||||||
char *c, cbuf[60], buf[BUFSZ];
|
char *c, cbuf[60], buf[BUFSZ];
|
||||||
const char *ul_sfx;
|
const char *ul_sfx;
|
||||||
|
|
||||||
|
/* before creating date.h, make sure that xxx_GRAPHICS and
|
||||||
|
DEFAULT_WINDOW_SYS have been set up in a viable fashion */
|
||||||
|
windowing_sanity();
|
||||||
|
|
||||||
filename[0]='\0';
|
filename[0]='\0';
|
||||||
#ifdef FILE_PREFIX
|
#ifdef FILE_PREFIX
|
||||||
Strcat(filename,file_prefix);
|
Strcat(filename,file_prefix);
|
||||||
@@ -1360,42 +1365,84 @@ static const char *build_opts[] = {
|
|||||||
"basic NetHack features"
|
"basic NetHack features"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *window_opts[] = {
|
struct win_info {
|
||||||
|
const char *id, /* DEFAULT_WINDOW_SYS string */
|
||||||
|
*name; /* description, often same as id */
|
||||||
|
};
|
||||||
|
static struct win_info window_opts[] = {
|
||||||
#ifdef TTY_GRAPHICS
|
#ifdef TTY_GRAPHICS
|
||||||
"traditional tty-based graphics",
|
{ "tty", "traditional tty-based graphics" },
|
||||||
#endif
|
#endif
|
||||||
#ifdef X11_GRAPHICS
|
#ifdef X11_GRAPHICS
|
||||||
"X11",
|
{ "X11", "X11" },
|
||||||
#endif
|
#endif
|
||||||
#ifdef QT_GRAPHICS
|
#ifdef QT_GRAPHICS
|
||||||
"Qt",
|
{ "Qt", "Qt" },
|
||||||
#endif
|
#endif
|
||||||
#ifdef GNOME_GRAPHICS
|
#ifdef GNOME_GRAPHICS
|
||||||
"Gnome",
|
{ "Gnome", "Gnome" },
|
||||||
#endif
|
#endif
|
||||||
#ifdef MAC
|
#ifdef MAC
|
||||||
"Mac",
|
{ "mac", "Mac" },
|
||||||
#endif
|
#endif
|
||||||
#ifdef AMIGA_INTUITION
|
#ifdef AMIGA_INTUITION
|
||||||
"Amiga Intuition",
|
{ "amii", "Amiga Intuition" },
|
||||||
#endif
|
#endif
|
||||||
#ifdef GEM_GRAPHICS
|
#ifdef GEM_GRAPHICS
|
||||||
"Gem",
|
{ "Gem", "Gem" },
|
||||||
#endif
|
#endif
|
||||||
#ifdef MSWIN_GRAPHICS
|
#ifdef MSWIN_GRAPHICS
|
||||||
"mswin",
|
{ "mswin", "mswin" },
|
||||||
#endif
|
#endif
|
||||||
#ifdef BEOS_GRAPHICS
|
#ifdef BEOS_GRAPHICS
|
||||||
"BeOS InterfaceKit",
|
{ "BeOS", "BeOS InterfaceKit" },
|
||||||
#endif
|
#endif
|
||||||
0
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
windowing_sanity()
|
||||||
|
{
|
||||||
|
#ifndef DEFAULT_WINDOW_SYS
|
||||||
|
Fprintf(stderr,
|
||||||
|
"Configuration error: DEFAULT_WINDOW_SYS is not defined.\n");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
/*NOTREACHED*/
|
||||||
|
#else /*DEFAULT_WINDOW_SYS*/
|
||||||
|
|
||||||
|
if (!window_opts[0].id) {
|
||||||
|
Fprintf(stderr,
|
||||||
|
"Configuration error: no windowing systems (TTY_GRAPHICS, &c) enabled.\n");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; window_opts[i].id; ++i)
|
||||||
|
if (!strcmp(window_opts[i].id, DEFAULT_WINDOW_SYS)) break;
|
||||||
|
if (!window_opts[i].id) { /* went through whole list without a match */
|
||||||
|
Fprintf(stderr,
|
||||||
|
"Configuration error: DEFAULT_WINDOW_SYS (%s)\n", DEFAULT_WINDOW_SYS);
|
||||||
|
Fprintf(stderr,
|
||||||
|
" does not match any enabled windowing system (%s%s).\n",
|
||||||
|
window_opts[0].id,
|
||||||
|
window_opts[1].id ? ", &c" : "");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /*DEFAULT_WINDOW_SYS*/
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
do_options()
|
do_options()
|
||||||
{
|
{
|
||||||
register int i, length;
|
boolean multiple_windowing_systems;
|
||||||
register const char *str, *indent = " ";
|
int i, length;
|
||||||
|
const char *str, *indent = " ";
|
||||||
|
|
||||||
|
windowing_sanity();
|
||||||
|
multiple_windowing_systems = (window_opts[1].id != 0);
|
||||||
|
|
||||||
filename[0]='\0';
|
filename[0]='\0';
|
||||||
#ifdef FILE_PREFIX
|
#ifdef FILE_PREFIX
|
||||||
@@ -1417,7 +1464,6 @@ do_options()
|
|||||||
VERSION_MAJOR, VERSION_MINOR, PATCHLEVEL);
|
VERSION_MAJOR, VERSION_MINOR, PATCHLEVEL);
|
||||||
|
|
||||||
Fprintf(ofp,"\nOptions compiled into this edition:\n");
|
Fprintf(ofp,"\nOptions compiled into this edition:\n");
|
||||||
|
|
||||||
length = COLNO + 1; /* force 1st item onto new line */
|
length = COLNO + 1; /* force 1st item onto new line */
|
||||||
for (i = 0; i < SIZE(build_opts); i++) {
|
for (i = 0; i < SIZE(build_opts); i++) {
|
||||||
str = build_opts[i];
|
str = build_opts[i];
|
||||||
@@ -1429,19 +1475,21 @@ do_options()
|
|||||||
Fprintf(ofp,(i < SIZE(build_opts) - 1) ? "," : "."), length++;
|
Fprintf(ofp,(i < SIZE(build_opts) - 1) ? "," : "."), length++;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fprintf(ofp,"\n\nSupported windowing systems:\n");
|
Fprintf(ofp, "\n\nSupported windowing system%s:\n",
|
||||||
|
multiple_windowing_systems ? "s" : "");
|
||||||
length = COLNO + 1; /* force 1st item onto new line */
|
length = COLNO + 1; /* force 1st item onto new line */
|
||||||
for (i = 0; i < SIZE(window_opts) - 1; i++) {
|
for (i = 0; i < SIZE(window_opts) - 1; i++) {
|
||||||
str = window_opts[i];
|
str = window_opts[i].name;
|
||||||
if (length + strlen(str) > COLNO - 5)
|
if (length + strlen(str) > COLNO - 5)
|
||||||
Fprintf(ofp,"\n%s", indent), length = strlen(indent);
|
Fprintf(ofp,"\n%s", indent), length = strlen(indent);
|
||||||
else
|
else
|
||||||
Fprintf(ofp," "), length++;
|
Fprintf(ofp," "), length++;
|
||||||
Fprintf(ofp,"%s", str), length += strlen(str);
|
Fprintf(ofp,"%s", str), length += strlen(str);
|
||||||
Fprintf(ofp, ","), length++;
|
Fprintf(ofp, multiple_windowing_systems ? "," : "."), length++;
|
||||||
}
|
}
|
||||||
Fprintf(ofp, "\n%swith a default of %s.", indent, DEFAULT_WINDOW_SYS);
|
if (multiple_windowing_systems)
|
||||||
|
Fprintf(ofp, "\n%swith a default of %s.",
|
||||||
|
indent, DEFAULT_WINDOW_SYS);
|
||||||
Fprintf(ofp,"\n\n");
|
Fprintf(ofp,"\n\n");
|
||||||
|
|
||||||
Fclose(ofp);
|
Fclose(ofp);
|
||||||
|
|||||||
Reference in New Issue
Block a user