enlightenment/src/bin/e_imc_main.c

217 lines
5.2 KiB
C

/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#include "e.h"
//extern int errno;
static void _e_help(void);
/* externally accessible functions */
int
main(int argc, char **argv)
{
int i = 0;
int valid_args = 0;
int write_ops = 0;
Eet_File *ef = NULL;
E_Input_Method_Config *write_imc = NULL;
E_Input_Method_Config *read_imc = NULL;
int del_name = 0;
int del_exe = 0;
char *file = NULL;
char *set_name = NULL;
char *set_exe = NULL;
char *set_gtk_im_module = NULL;
char *set_qt_im_module = NULL;
char *set_xmodifiers = NULL;
int list = 0;
/* handle some command-line parameters */
for (i = 1; i < argc; i++)
{
if ((!strcmp(argv[i], "-set-name")) && (i < (argc - 1)))
{
i++;
set_name = argv[i];
valid_args++;
write_ops++;
}
else if ((!strcmp(argv[i], "-set-exe")) && (i < (argc - 1)))
{
i++;
set_exe = argv[i];
valid_args++;
write_ops++;
}
else if ((!strcmp(argv[i], "-set-gtk-im-module")) && (i < (argc - 1)))
{
i++;
set_gtk_im_module = argv[i];
valid_args++;
write_ops++;
}
else if ((!strcmp(argv[i], "-set-qt-im-module")) && (i < (argc - 1)))
{
i++;
set_qt_im_module = argv[i];
valid_args++;
write_ops++;
}
else if ((!strcmp(argv[i], "-set-xmodifiers")) && (i < (argc - 1)))
{
i++;
set_xmodifiers = argv[i];
valid_args++;
write_ops++;
}
else if ((!strcmp(argv[i], "-del-all")))
{
del_name = 1;
del_exe = 1;
valid_args++;
write_ops++;
}
else if ((!strcmp(argv[i], "-del-name")))
{
del_name = 1;
valid_args++;
write_ops++;
}
else if ((!strcmp(argv[i], "-del-exe")))
{
del_exe = 1;
valid_args++;
write_ops++;
}
else if ((!strcmp(argv[i], "-h")) ||
(!strcmp(argv[i], "-help")) ||
(!strcmp(argv[i], "--h")) ||
(!strcmp(argv[i], "--help")))
{
_e_help();
exit(0);
}
else if ((!strcmp(argv[i], "-list")))
{
list = 1;
valid_args++;
}
else
file = argv[i];
}
if (!file)
{
printf("ERROR: no file specified!\n");
_e_help();
exit(0);
}
if (valid_args == 0) {
printf("ERROR: no valid arguments!\n");
_e_help();
exit(0);
}
eet_init();
e_intl_init();
if (write_ops != 0 && ecore_file_exists(file))
{
ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
}
else if (write_ops != 0)
{
ef = eet_open(file, EET_FILE_MODE_WRITE);
}
else
{
ef = eet_open(file, EET_FILE_MODE_READ);
}
if (!ef)
{
printf("ERROR: cannot open file %s for READ/WRITE (%d:%s)\n", file, errno, strerror(errno));
return -1;
}
/* If File Exists, Try to read imc */
read_imc = e_intl_input_method_config_read (ef);
/* else create new imc */
if (write_ops != 0)
{
int write_ok;
write_imc = malloc(sizeof(E_Input_Method_Config));
write_imc->version = E_INTL_INPUT_METHOD_CONFIG_VERSION;
if (read_imc == NULL)
{
write_imc->e_im_name = NULL;
write_imc->gtk_im_module = NULL;
write_imc->qt_im_module = NULL;
write_imc->xmodifiers = NULL;
write_imc->e_im_exec = NULL;
}
else
{
write_imc->e_im_name = read_imc->e_im_name;
write_imc->gtk_im_module = read_imc->gtk_im_module;
write_imc->qt_im_module = read_imc->qt_im_module;
write_imc->xmodifiers = read_imc->xmodifiers;
write_imc->e_im_exec = read_imc->e_im_exec;
}
if (set_name != NULL)
write_imc->e_im_name = set_name;
if (set_gtk_im_module != NULL)
write_imc->gtk_im_module = set_gtk_im_module;
if (set_qt_im_module != NULL)
write_imc->qt_im_module = set_qt_im_module;
if (set_xmodifiers != NULL)
write_imc->xmodifiers = set_xmodifiers;
if (set_exe != NULL)
write_imc->e_im_exec = set_exe;
/* write imc to file */
write_ok = e_intl_input_method_config_write (ef, write_imc);
}
if (list)
{
printf("Config File List:\n");
printf("Config Version:\t%d\n", read_imc->version);
printf("Config Name:\t%s\n", read_imc->e_im_name);
printf("Command Line:\t%s\n", read_imc->e_im_exec);
printf("gtk_im_module:\t%s\n", read_imc->gtk_im_module);
printf("qt_im_module:\t%s\n", read_imc->qt_im_module);
printf("xmodifiers:\t%s\n", read_imc->xmodifiers);
}
e_intl_input_method_config_free(read_imc);
E_FREE(write_imc);
eet_close(ef);
e_intl_shutdown();
eet_shutdown();
/* just return 0 to keep the compiler quiet */
return 0;
}
static void
_e_help(void)
{
printf("OPTIONS:\n"
" -set-name NAME Set the application name\n"
" -set-exe EXE Set the application execute line\n"
" -set-gtk-im-module Set the gtk_im_module env var\n"
" -set-qt-im-module Set the qt_im_module env var\n"
" -set-xmodifiers Set the xmodifiers env var\n"
" -del-name Delete the application name\n"
" -del-exe Delete the application execute line\n"
" -list List Contents of Input Method Config file\n"
);
}