CmdUtils.h revision f6c387128427e121477c1b32ad35cdcaa5101ba3
1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16/* 17 * Access .dex (Dalvik Executable Format) files. The code here assumes that 18 * the DEX file has been rewritten (byte-swapped, word-aligned) and that 19 * the contents can be directly accessed as a collection of C arrays. Please 20 * see docs/dalvik/dex-format.html for a detailed description. 21 * 22 * The structure and field names were chosen to match those in the DEX spec. 23 * 24 * It's generally assumed that the DEX file will be stored in shared memory, 25 * obviating the need to copy code and constant pool entries into newly 26 * allocated storage. Maintaining local pointers to items in the shared area 27 * is valid and encouraged. 28 * 29 * All memory-mapped structures are 32-bit aligned unless otherwise noted. 30 */ 31#ifndef _LIBDEX_CMDUTILS 32#define _LIBDEX_CMDUTILS 33 34/* encode the result of unzipping to a file */ 35typedef enum UnzipToFileResult { 36 kUTFRSuccess = 0, 37 kUTFRBadArgs, 38 kUTFRNotZip, 39 kUTFRNoClassesDex, 40 kUTFROutputFileProblem, 41 kUTFRBadZip, 42} UnzipToFileResult; 43 44/* 45 * Map the specified DEX file, possibly after expanding it into a temp file 46 * from a Jar. Pass in a MemMapping struct to hold the info. 47 * 48 * This is intended for use by tools (e.g. dexdump) that need to get a 49 * read-only copy of a DEX file that could be in a number of different states. 50 * 51 * If "tempFileName" is NULL, a default value is used. The temp file is 52 * deleted after the map succeeds. 53 * 54 * Returns 0 on success. 55 */ 56UnzipToFileResult dexOpenAndMap(const char* fileName, const char* tempFileName, 57 MemMapping* pMap, bool quiet); 58 59/* 60 * Utility function to open a Zip archive, find "classes.dex", and extract 61 * it to a file. 62 */ 63UnzipToFileResult dexUnzipToFile(const char* zipFileName, 64 const char* outFileName, bool quiet); 65 66#endif /*_LIBDEX_CMDUTILS*/ 67