installd.h revision 54b6cfa9a9e5b861a9930af873580d6dc20f773c
1/* 2** 3** Copyright 2008, The Android Open Source Project 4** 5** Licensed under the Apache License, Version 2.0 (the "License"); 6** you may not use this file except in compliance with the License. 7** You may obtain a copy of the License at 8** 9** http://www.apache.org/licenses/LICENSE-2.0 10** 11** Unless required by applicable law or agreed to in writing, software 12** distributed under the License is distributed on an "AS IS" BASIS, 13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14** See the License for the specific language governing permissions and 15** limitations under the License. 16*/ 17 18#define LOG_TAG "installd" 19 20#include <stdio.h> 21#include <stdlib.h> 22#include <sys/stat.h> 23#include <dirent.h> 24#include <unistd.h> 25#include <ctype.h> 26#include <fcntl.h> 27#include <errno.h> 28#include <utime.h> 29#include <sys/socket.h> 30#include <sys/types.h> 31#include <sys/wait.h> 32 33#include <cutils/sockets.h> 34#include <cutils/log.h> 35#include <cutils/properties.h> 36 37#include <private/android_filesystem_config.h> 38 39#if INCLUDE_SYS_MOUNT_FOR_STATFS 40#include <sys/mount.h> 41#else 42#include <sys/statfs.h> 43#endif 44 45#define SOCKET_PATH "installd" 46 47 48/* elements combined with a valid package name to form paths */ 49 50#define PKG_DIR_PREFIX "/data/data/" 51#define PKG_DIR_POSTFIX "" 52 53#define PKG_LIB_PREFIX "/data/data/" 54#define PKG_LIB_POSTFIX "/lib" 55 56#define CACHE_DIR_PREFIX "/data/data/" 57#define CACHE_DIR_POSTFIX "/cache" 58 59#define APK_DIR_PREFIX "/data/app/" 60 61/* other handy constants */ 62 63#define PROTECTED_DIR_PREFIX "/data/app-private/" 64 65#define DALVIK_CACHE_PREFIX "/data/dalvik-cache/" 66#define DALVIK_CACHE_POSTFIX "/classes.dex" 67 68 69#define PKG_NAME_MAX 128 /* largest allowed package name */ 70#define PKG_PATH_MAX 256 /* max size of any path we use */ 71 72 73/* util.c */ 74 75int create_pkg_path(char path[PKG_PATH_MAX], 76 const char *prefix, 77 const char *pkgname, 78 const char *postfix); 79 80int create_cache_path(char path[PKG_PATH_MAX], const char *src); 81 82int delete_dir_contents(const char *pathname, 83 int also_delete_dir, 84 const char *ignore); 85 86int delete_dir_contents_fd(int dfd, const char *name); 87 88/* commands.c */ 89 90int install(const char *pkgname, uid_t uid, gid_t gid); 91int uninstall(const char *pkgname); 92int delete_user_data(const char *pkgname); 93int delete_cache(const char *pkgname); 94int move_dex(const char *src, const char *dst); 95int rm_dex(const char *path); 96int protect(char *pkgname, gid_t gid); 97int get_size(const char *pkgname, const char *apkpath, const char *fwdlock_apkpath, 98 int *codesize, int *datasize, int *cachesize); 99int free_cache(int free_size); 100int dexopt(const char *apk_path, uid_t uid, int is_public); 101