server-1.12/devel/devel.c

91 lines
3.3 KiB
C

/*
CrossFire, A Multiplayer game for X-windows
Copyright (C) 2001 Mark Wedel & Crossfire Development Team
Copyright (C) 1992 Frank Tore Johansen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
The authors can be reached via e-mail to crossfire-devel@real-time.com
*/
/*
* Little program aimed at giving information to plugin about config of the crossfire server.
* Simply invoke with the config parameter to get. Only the most common parameters (those
* that could be needed by an independent configure script) are available. The rest is available
* in config.h andd should be included in any plugin needing it.
*/
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct {
const char *name;
const char *value;
} cf_parameter;
const cf_parameter cf_parameter_list[] = {
{ "CONFDIR", CONFDIR },
{ "DATADIR", DATADIR },
{ "LIBDIR", LIBDIR },
{ "LOCALDIR", LOCALDIR },
{ "PLUGIN_SUFFIX", PLUGIN_SUFFIX },
};
const int cf_parameter_list_size = sizeof(cf_parameter_list)/sizeof(cf_parameter);
int main(int argc, char **argv) {
int i;
if (argc == 2) {
if (!strcmp(argv[1], "--parameter-list")) {
printf("parameter maybe one of:\n");
printf("\tPLUGININSTALLDIR\n");
for (i = 0; i < cf_parameter_list_size; i++)
printf("\t%s\n", cf_parameter_list[i].name);
return 0;
}
/*Special case, handle plugin installation dir, which is most likeley why
user wants to use crossfire-config in a configure script*/
if (!strcmp(argv[1], "PLUGININSTALLDIR")) {
printf("%s/plugins/\n", LIBDIR);
return 0;
}
if (!strcmp(argv[1], "--Dflags")) {
for (i = 0; i < cf_parameter_list_size; i++)
printf("-D%s=\\\"%s\\\" ", cf_parameter_list[i].name, cf_parameter_list[i].value);
/*printf ("-DDATADIR=\\\"%s\\\" -DLIBDIR=\\\"%s\\\" -DLOCALDIR=\\\"%s\\\"\n",
cf_parameter_list[0].value, cf_parameter_list[1].value, cf_parameter_list[2].value);*/
printf("\n");
return 0;
}
for (i = 0; i < cf_parameter_list_size; i++) {
if (!strcmp(argv[1], cf_parameter_list[i].name)) {
printf("%s\n", cf_parameter_list[i].value);
return 0;
}
}
}
/* Bad arguments count or invalid ones */
printf("usage: crossfire-config --Dflags");
printf(" (gives complete Dflags line for compiler invocation)\n");
printf("usage: crossfire-config --parameter-list");
printf(" (show the list of available parameters)\n");
printf("usage: crossfire-config <parameter name>");
printf(" (extract a compilation parameter)\n");
return -1;
}