Example #1
0
int main(int c, char **v)
{
    struct chmFile *h;
    struct extract_context ec;

    if (c < 3)
    {
        fprintf(stderr, "usage: %s <chmfile> <outdir>\n", v[0]);
        exit(1);
    }

    h = chm_open(v[1]);
    if (h == NULL)
    {
        fprintf(stderr, "failed to open %s\n", v[1]);
        exit(1);
    }

    printf("%s:\n", v[1]);
    ec.base_path = v[2];
    if (! chm_enumerate(h,
                        CHM_ENUMERATE_ALL,
                        _extract_callback,
                        (void *)&ec))
        printf("   *** ERROR ***\n");

    chm_close(h);

    return 0;
}
Example #2
0
long
extract_chm(const char *filename, const char *base_path)
{
        struct chmFile *handle;
        struct extract_context ec;

        handle = chm_open(filename);

        if (handle == NULL) {
                fprintf(stderr, "Cannot open chmfile: %s", filename);
                return -1;
        }

        ec.base_path = base_path;

        if (!chm_enumerate(handle,
                           CHM_ENUMERATE_NORMAL | CHM_ENUMERATE_SPECIAL,
                           _extract_callback,
                           (void *)&ec)) {
                fprintf(stderr, "Extract chmfile failed: %s", filename);
        }

        chm_close(handle);

        return 0;
}
Example #3
0
extern u32 fs_chm_to_menu(const char *chmfile, u32 icolor, u32 selicolor, u32 selrcolor, u32 selbcolor)
{
	int fid;
	struct chmFile *chm;
	t_fs_chm_enum cenum;

	if (menu_renew(&g_menu) == NULL) {
		return 0;
	}

	fid = freq_enter_hotzone();
	chm = chm_open(chmfile);

	if (chm == NULL) {
		freq_leave(fid);
		return 0;
	}

	add_parent_to_menu(g_menu, icolor, selicolor, selrcolor, selbcolor);

	cenum.icolor = icolor;
	cenum.selicolor = selicolor;
	cenum.selrcolor = selrcolor;
	cenum.selbcolor = selbcolor;
	chm_enumerate(chm, CHM_ENUMERATE_NORMAL | CHM_ENUMERATE_FILES, chmEnum, (void *) &cenum);
	chm_close(chm);
	freq_leave(fid);

	return g_menu->size;
}
Example #4
0
int
do_something_useful_with(struct chmFile *handle) {

    int rs;

    rs = chm_enumerate(handle, CHM_ENUMERATE_ALL, _print_uinfo, NULL);
    if (CHM_ENUMERATOR_FAILURE == rs) {
        fprintf(stderr, "Oops: something's very wrong...\n");
        exit(3);
    }

    fprintf(stderr, "Info: finished!\n");
    return 0;
}
Example #5
0
File: chm.c Project: db00/reader
char * chm_parse(char * chmdata,int chmdatalen,char * filename,int * outlen)
{
	struct chmFile *h = chm_mem(chmdata,chmdatalen);
	if (h == NULL)
	{
		fprintf(stderr, "failed to open %s\n", filename);
		exit(1);
	}
	struct chmfile getfile;
	memset(&getfile,0,sizeof(struct chmfile));
	getfile.filename = filename;
	if (! chm_enumerate(h,
				CHM_ENUMERATE_ALL,
				_print_ui,
				&getfile))
	{
		printf("   *** ERROR ***\n");
	}
	*outlen = getfile.len;
	chm_close(h);
	//printf("%s",getfile.data);
	return getfile.data;
}
Example #6
0
static gboolean
extract_chm(const gchar *filename, ChmFile *chmfile)
{
  struct chmFile *handle;
  struct extract_context ec;

  handle = chm_open(filename);

  if (handle == NULL) {
    g_message(_("cannot open chmfile: %s"), filename);
    return FALSE;
  }

  ec.base_path = (const char *)chmfile->dir;

  if (!chm_enumerate(handle, CHM_ENUMERATE_NORMAL, _extract_callback, (void *)&ec)) {
    g_message(_("Extract chmfile failed: %s"), filename);
    return FALSE;
  }

  chm_close(handle);

  return TRUE;
}
Example #7
0
int extractdir(struct chmFile *c, char *path, long extractwithoutpath)
{
    struct cb_data data = {extractwithoutpath,path,strlen(path)};
    chm_enumerate(c,CHM_ENUMERATE_ALL,_extract_callback_dir,(void *)&data);
    return 0;
}
Example #8
0
Vec<char *> *ChmDoc::GetAllPaths()
{
    Vec<char *> *paths = new Vec<char *>();
    chm_enumerate(chmHandle, CHM_ENUMERATE_FILES | CHM_ENUMERATE_NORMAL, ChmEnumerateEntry, paths);
    return paths;
}