int lha_reader_extract(LHAReader *reader, char *filename, LHADecoderProgressCallback callback, void *callback_data) { switch (reader->curr_file_type) { case CURR_FILE_NORMAL: return extract_normal(reader, filename, callback, callback_data); case CURR_FILE_FAKE_DIR: if (filename == NULL) { filename = reader->curr_file->path; } set_directory_metadata(reader->curr_file, filename); return 1; case CURR_FILE_START: case CURR_FILE_EOF: break; } return 0; }
void extract_content(t_env *env, size_t pos, char *ptr) { while (pos < env->len && env->interprete[pos] != SPACING && env->interprete[pos] != DELIMITER) { if (env->interprete[pos] == INTERPRETED) extract_normal(env, &pos, &ptr); else if (env->interprete[pos] == SIMPLE_QUOTED) extract_simple_quote(env, &pos, &ptr); else if (env->interprete[pos] == DOUBLE_QUOTED) extract_double_quote(env, &pos, &ptr); else if (env->interprete[pos] == BACK_QUOTED) extract_back_quote(env, &pos, &ptr); else if (env->interprete[pos] == BACKSLASHED) extract_backslash(env, &pos, &ptr); else if (env->interprete[pos] == START_LOCAL_VARIABLE) extract_value(env, &pos, &ptr); } *ptr = '\0'; }