217 lines
6.2 KiB
C
217 lines
6.2 KiB
C
#include <Eina.h>
|
|
#include <Eet.h>
|
|
#include <Ecore_File.h>
|
|
#include "e_macros.h"
|
|
#define E_TYPEDEFS
|
|
#include "e_config_data.h"
|
|
#include "e_intl_data.h"
|
|
#undef E_TYPEDEFS
|
|
#include "e_config_data.h"
|
|
#include "e_intl_data.h"
|
|
|
|
|
|
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;
|
|
|
|
char *file = NULL;
|
|
char *set_name = NULL;
|
|
char *set_exe = NULL;
|
|
char *set_setup = NULL;
|
|
char *set_gtk_im_module = NULL;
|
|
char *set_qt_im_module = NULL;
|
|
char *set_xmodifiers = NULL;
|
|
char *set_ecore_imf_module = 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-setup")) && (i < (argc - 1)))
|
|
{
|
|
i++;
|
|
set_setup = 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], "-set-ecore-imf-module")) && (i < (argc - 1)))
|
|
{
|
|
i++;
|
|
set_ecore_imf_module = argv[i];
|
|
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_data_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 (%i:%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)
|
|
{
|
|
write_imc = calloc(sizeof(E_Input_Method_Config), 1);
|
|
write_imc->version = E_INTL_INPUT_METHOD_CONFIG_VERSION;
|
|
if (read_imc)
|
|
{
|
|
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->ecore_imf_module = read_imc->ecore_imf_module;
|
|
write_imc->e_im_exec = read_imc->e_im_exec;
|
|
write_imc->e_im_setup_exec = read_imc->e_im_setup_exec;
|
|
}
|
|
|
|
if (set_name)
|
|
write_imc->e_im_name = set_name;
|
|
if (set_gtk_im_module)
|
|
write_imc->gtk_im_module = set_gtk_im_module;
|
|
if (set_qt_im_module)
|
|
write_imc->qt_im_module = set_qt_im_module;
|
|
if (set_xmodifiers)
|
|
write_imc->xmodifiers = set_xmodifiers;
|
|
if (set_ecore_imf_module)
|
|
write_imc->ecore_imf_module = set_ecore_imf_module;
|
|
if (set_exe)
|
|
write_imc->e_im_exec = set_exe;
|
|
if (set_setup)
|
|
write_imc->e_im_setup_exec = set_setup;
|
|
|
|
/* write imc to file */
|
|
e_intl_input_method_config_write(ef, write_imc);
|
|
}
|
|
|
|
if (list)
|
|
{
|
|
printf("Config File List:\n");
|
|
printf("Config Version: %i\n", read_imc->version);
|
|
printf("Config Name: %s\n", read_imc->e_im_name);
|
|
printf("Command Line: %s\n", read_imc->e_im_exec);
|
|
printf("Setup Line: %s\n", read_imc->e_im_setup_exec);
|
|
printf("gtk_im_module: %s\n", read_imc->gtk_im_module);
|
|
printf("qt_im_module: %s\n", read_imc->qt_im_module);
|
|
printf("xmodifiers: %s\n", read_imc->xmodifiers);
|
|
printf("ecore_imf_module: %s\n", read_imc->ecore_imf_module);
|
|
}
|
|
|
|
e_intl_input_method_config_free(read_imc);
|
|
free(write_imc);
|
|
eet_close(ef);
|
|
e_intl_data_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-setup EXE Set the setup 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-ecore-imf-module Set the ecore_imf_module env var\n"
|
|
" -set-xmodifiers Set the xmodifiers env var\n"
|
|
" -list List Contents of Input Method Config file\n"
|
|
);
|
|
}
|
|
|