installd.h revision 1f4df90bfab8ca42eabe95f19eadff3432eee7fd
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#define SDCARD_DIR_PREFIX getenv("ASEC_MOUNTPOINT") 65 66#define DALVIK_CACHE_PREFIX "/data/dalvik-cache/" 67#define DALVIK_CACHE_POSTFIX "/classes.dex" 68 69#define UPDATE_COMMANDS_DIR_PREFIX "/system/etc/updatecmds/" 70 71#define PKG_NAME_MAX 128 /* largest allowed package name */ 72#define PKG_PATH_MAX 256 /* max size of any path we use */ 73 74 75/* util.c */ 76 77int create_pkg_path(char path[PKG_PATH_MAX], 78 const char *prefix, 79 const char *pkgname, 80 const char *postfix); 81 82int create_cache_path(char path[PKG_PATH_MAX], const char *src); 83 84int delete_dir_contents(const char *pathname, 85 int also_delete_dir, 86 const char *ignore); 87 88int delete_dir_contents_fd(int dfd, const char *name); 89 90/* commands.c */ 91 92int install(const char *pkgname, uid_t uid, gid_t gid); 93int uninstall(const char *pkgname); 94int renamepkg(const char *oldpkgname, const char *newpkgname); 95int delete_user_data(const char *pkgname); 96int delete_cache(const char *pkgname); 97int move_dex(const char *src, const char *dst); 98int rm_dex(const char *path); 99int protect(char *pkgname, gid_t gid); 100int get_size(const char *pkgname, const char *apkpath, const char *fwdlock_apkpath, 101 int *codesize, int *datasize, int *cachesize); 102int free_cache(int free_size); 103int dexopt(const char *apk_path, uid_t uid, int is_public); 104int movefiles(); 105