Exemplo n.º 1
0
int lmo_load_catalog(const char *lang, const char *dir)
{
	DIR *dh = NULL;
	char pattern[16];
	char path[PATH_MAX];
	struct dirent *de = NULL;

	lmo_archive_t *ar = NULL;
	lmo_catalog_t *cat = NULL;

	if (!lmo_change_catalog(lang))
		return 0;

	if (!dir || !(dh = opendir(dir)))
		goto err;

	if (!(cat = malloc(sizeof(*cat))))
		goto err;

	memset(cat, 0, sizeof(*cat));

	snprintf(cat->lang, sizeof(cat->lang), "%s", lang);
	snprintf(pattern, sizeof(pattern), "*.%s.lmo", lang);

	while ((de = readdir(dh)) != NULL)
	{
		if (!fnmatch(pattern, de->d_name, 0))
		{
			snprintf(path, sizeof(path), "%s/%s", dir, de->d_name);
			ar = lmo_open(path);

			if (ar)
			{
				ar->next = cat->archives;
				cat->archives = ar;
			}
		}
	}

	closedir(dh);

	cat->next = _lmo_catalogs;
	_lmo_catalogs = cat;

	if (!_lmo_active_catalog)
		_lmo_active_catalog = cat;

	return 0;

err:
	if (dh) closedir(dh);
	if (cat) free(cat);

	return -1;
}
Exemplo n.º 2
0
int main(int argc, char *argv[])
{
	char val[4096];
	lmo_archive_t *ar = NULL;

	if( argc != 3 )
		usage(argv[0]);

	if( (ar = (lmo_archive_t *) lmo_open(argv[1])) != NULL )
	{
		if( lmo_lookup(ar, argv[2], val, sizeof(val)) > -1 )
		{
			printf("%s\n", val);
		}

		lmo_close(ar);
	}
	else
	{
		die(lmo_error());
	}

	return 0;
}