/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef _OTAUTIL_ZIPUTIL_H #define _OTAUTIL_ZIPUTIL_H #include <utime.h> #include <string> #include <selinux/label.h> #include <ziparchive/zip_archive.h> /* * Inflate all files under zip_path to the directory specified by * dest_path, which must exist and be a writable directory. The zip_path * is allowed to be an empty string, in which case the whole package * will be extracted. * * Directory entries are not extracted. * * The immediate children of zip_path will become the immediate * children of dest_path; e.g., if the archive contains the entries * * a/b/c/one * a/b/c/two * a/b/c/d/three * * and ExtractPackageRecursive(a, "a/b/c", "/tmp", ...) is called, the resulting * files will be * * /tmp/one * /tmp/two * /tmp/d/three * * If timestamp is non-NULL, file timestamps will be set accordingly. * * Returns true on success, false on failure. */ bool ExtractPackageRecursive(ZipArchiveHandle zip, const std::string& zip_path, const std::string& dest_path, const struct utimbuf* timestamp, struct selabel_handle* sehnd); #endif // _OTAUTIL_ZIPUTIL_H