Some kind of general purpose C library. This is discontinued and only kept as a reference just in case I need something from it.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

176 lines
5.1 KiB

/*
* san_test.c: A small app to test the functionality of san, my
* Swiss Army Nife tool-lib and to show how to use it.
* Actually only focused on cmdla which parses commandline
* arguments.
*
* Copyright (C) 2006 Georg Steffers. All rights reserved.
*
* This software is licensed under the terms of the GNU Genral Public
* License (GPL). Please see gpl.txt for details or refer to
* http://www.gnu.org/licenses/gpl.html
*
* Author: Georg Steffers <georg@steffers.org>
*
* 01/14/2006: Georg Steffers - First implemented
* 01/15/2006: Georg Steffers - V0.1 ready. Modified much and many
* now long arguments are supported as
* well as arguments with am optional
* parameter.
* 01/23/2006: Georg Steffers - add support for gettext.
* 01/24/2006: Georg Steffers - renamed to san_test.c as it should reflect
* the whole lib as it grows.
*/
#include <stdio.h>
#include <scot/cmdla.h>
#include <scot_common.h>
//#include "../config.h"
int
switch_cb (void *arg)
{
int *sw = (int *) arg;
* sw = 1;
}
int
main (int argc, char *argv[])
{
char *cval = NULL;
char *string = NULL;
char *base = NULL;
char *home = NULL;
int ival = 0;
float fval = 0.0;
int sw1 = 0, sw2 = 0;
char *locale;
char domain[1024];
char about[] =
N_("CMDLA_TEST is used to demonstrate the usage of CMDLA.\n"
"CMDLA stands for CoMmanD Line Argument and it is some functions that,\n"
"as the name suggested, makes it convinient to parse command line\n"
"parameters.\n\n"
"To every parameter there has to be assigned a callback funktion.If\n"
"one only wants to map options into string, int or float variables,\n"
"then one can use the predefind get_cmdlap_cb callback.\n"
"There are two kinds of options that CMDLA processes: switches, which\n"
"Don't have an additional value, and parameters, which may or may not\n"
"have an additional value added.\n"
"Parameters can be set up, so that they need to have an addition value.\n"
"In addition to parameter parsing and calling appropriate callbacks,\n"
"CMDLA creates a help output by some hints given to it.\n"
"All one has to do is fill a structure for the switches you have and\n"
"one for the parameters, feed them to process_cmd_line and you're "
"ready.");
char copyright[] =
N_("Copyright (C) 2006 by Georg Steffers <georg@steffers.org>\n"
"This software is licensed under the terms of the GNU General Public\n"
"Licence (GPL). Please refer http://www.gnu.org/licenses/gpl.html\n"
"for details.");
char usage_add[] = N_("infile outfile");
/* an entry with the pointer to the cb-funktion as NULL is end sign */
struct cmdlap_cbt cmdlap_cbs[] = {
{
'c', N_("cval"), CMDLA_REQ_ARG,
get_cmdlap_cb, CMDLA_TYPE_STRING, &cval,
N_("takes a required string argument")
},
{
'i', N_("ival"), CMDLA_OPT_ARG,
get_cmdlap_cb, CMDLA_TYPE_INT, &ival,
N_("takes an optional integer argument")
},
{
'f', N_("fval"), CMDLA_REQ_ARG,
get_cmdlap_cb, CMDLA_TYPE_FLOAT, &fval,
N_("takes a required float argument")
},
{
0, N_("string"), CMDLA_REQ_ARG,
get_cmdlap_cb, CMDLA_TYPE_STRING, &string,
N_("another required string argument")
},
{
0, N_("base"), CMDLA_REQ_ARG,
get_cmdlap_cb, CMDLA_TYPE_STRING, &base,
N_("and again a req. string argument")
},
{
0, N_("home"), CMDLA_REQ_ARG,
get_cmdlap_cb, CMDLA_TYPE_STRING, &home,
N_("oh, a last required string argument")
},
CMDLAP_CBT_END
};
/* an entry with the pointer to the cb-funktion as NULL is end sign */
struct cmdlas_cbt cmdlas_cbs[] = {
{
's', N_("switch"),
switch_cb, &sw1,
N_("a switch takes nor argument")
},
{
'S', NULL,
switch_cb, &sw2,
N_("another switch")
},
CMDLAS_CBT_END
};
locale = setlocale (LC_ALL, "");
if (locale == NULL)
printf ("uable to set locale\n");
else
printf ("use current locale: %s\n", locale);
printf ("LOCALEDIR: %s\n", LOCALEDIR);
printf ("PACKAGE: %s\n", PACKAGE);
snprintf (domain, 1024, "%s_test", PACKAGE);
bindtextdomain (domain, LOCALEDIR);
textdomain ("scot_test");
process_cmd_line (
argc, argv, about, copyright, usage_add, cmdlap_cbs, cmdlas_cbs);
printf("CVAL: %s\n", cval);
printf("STRING: %s\n", string);
printf("BASE: %s\n", base);
printf("HOME: %s\n", home);
printf("IVAL: %d\n", ival);
printf("FVAL: %f\n", fval);
printf(
"SWITCH1 %scalled\n",
sw1 == 0 ?
"not " :
"");
printf(
"SWITCH2 %scalled\n",
sw2 == 0 ?
"not " :
"");
if (optind < argc)
{
printf ("non-option ARGV-elements: ");
while (optind < argc)
printf ("%s ", argv[optind++]);
printf ("\n");
}
return 0;
}